Mercurial > emacs
comparison lib/time.h @ 112308:474d5026a5a2
Regenerate.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 08 Jan 2011 22:57:07 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
112307:161cf5d0fd8b | 112308:474d5026a5a2 |
---|---|
1 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */ | |
2 /* A more-standard <time.h>. | |
3 | |
4 Copyright (C) 2007-2011 Free Software Foundation, Inc. | |
5 | |
6 This program is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 3, or (at your option) | |
9 any later version. | |
10 | |
11 This program is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with this program; if not, write to the Free Software Foundation, | |
18 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | |
19 | |
20 #if __GNUC__ >= 3 | |
21 #pragma GCC system_header | |
22 #endif | |
23 | |
24 | |
25 /* Don't get in the way of glibc when it includes time.h merely to | |
26 declare a few standard symbols, rather than to declare all the | |
27 symbols. Also, Solaris 8 <time.h> eventually includes itself | |
28 recursively; if that is happening, just include the system <time.h> | |
29 without adding our own declarations. */ | |
30 #if (defined __need_time_t || defined __need_clock_t \ | |
31 || defined __need_timespec \ | |
32 || defined _GL_TIME_H) | |
33 | |
34 # include_next <time.h> | |
35 | |
36 #else | |
37 | |
38 # define _GL_TIME_H | |
39 | |
40 # include_next <time.h> | |
41 | |
42 /* NetBSD 5.0 mis-defines NULL. */ | |
43 # include <stddef.h> | |
44 | |
45 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ | |
46 #ifndef _GL_CXXDEFS_H | |
47 #define _GL_CXXDEFS_H | |
48 | |
49 /* The three most frequent use cases of these macros are: | |
50 | |
51 * For providing a substitute for a function that is missing on some | |
52 platforms, but is declared and works fine on the platforms on which | |
53 it exists: | |
54 | |
55 #if @GNULIB_FOO@ | |
56 # if !@HAVE_FOO@ | |
57 _GL_FUNCDECL_SYS (foo, ...); | |
58 # endif | |
59 _GL_CXXALIAS_SYS (foo, ...); | |
60 _GL_CXXALIASWARN (foo); | |
61 #elif defined GNULIB_POSIXCHECK | |
62 ... | |
63 #endif | |
64 | |
65 * For providing a replacement for a function that exists on all platforms, | |
66 but is broken/insufficient and needs to be replaced on some platforms: | |
67 | |
68 #if @GNULIB_FOO@ | |
69 # if @REPLACE_FOO@ | |
70 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
71 # undef foo | |
72 # define foo rpl_foo | |
73 # endif | |
74 _GL_FUNCDECL_RPL (foo, ...); | |
75 _GL_CXXALIAS_RPL (foo, ...); | |
76 # else | |
77 _GL_CXXALIAS_SYS (foo, ...); | |
78 # endif | |
79 _GL_CXXALIASWARN (foo); | |
80 #elif defined GNULIB_POSIXCHECK | |
81 ... | |
82 #endif | |
83 | |
84 * For providing a replacement for a function that exists on some platforms | |
85 but is broken/insufficient and needs to be replaced on some of them and | |
86 is additionally either missing or undeclared on some other platforms: | |
87 | |
88 #if @GNULIB_FOO@ | |
89 # if @REPLACE_FOO@ | |
90 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
91 # undef foo | |
92 # define foo rpl_foo | |
93 # endif | |
94 _GL_FUNCDECL_RPL (foo, ...); | |
95 _GL_CXXALIAS_RPL (foo, ...); | |
96 # else | |
97 # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ | |
98 _GL_FUNCDECL_SYS (foo, ...); | |
99 # endif | |
100 _GL_CXXALIAS_SYS (foo, ...); | |
101 # endif | |
102 _GL_CXXALIASWARN (foo); | |
103 #elif defined GNULIB_POSIXCHECK | |
104 ... | |
105 #endif | |
106 */ | |
107 | |
108 /* _GL_EXTERN_C declaration; | |
109 performs the declaration with C linkage. */ | |
110 #if defined __cplusplus | |
111 # define _GL_EXTERN_C extern "C" | |
112 #else | |
113 # define _GL_EXTERN_C extern | |
114 #endif | |
115 | |
116 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); | |
117 declares a replacement function, named rpl_func, with the given prototype, | |
118 consisting of return type, parameters, and attributes. | |
119 Example: | |
120 _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) | |
121 _GL_ARG_NONNULL ((1))); | |
122 */ | |
123 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ | |
124 _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) | |
125 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ | |
126 _GL_EXTERN_C rettype rpl_func parameters_and_attributes | |
127 | |
128 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); | |
129 declares the system function, named func, with the given prototype, | |
130 consisting of return type, parameters, and attributes. | |
131 Example: | |
132 _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) | |
133 _GL_ARG_NONNULL ((1))); | |
134 */ | |
135 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ | |
136 _GL_EXTERN_C rettype func parameters_and_attributes | |
137 | |
138 /* _GL_CXXALIAS_RPL (func, rettype, parameters); | |
139 declares a C++ alias called GNULIB_NAMESPACE::func | |
140 that redirects to rpl_func, if GNULIB_NAMESPACE is defined. | |
141 Example: | |
142 _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); | |
143 */ | |
144 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \ | |
145 _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) | |
146 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
147 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ | |
148 namespace GNULIB_NAMESPACE \ | |
149 { \ | |
150 rettype (*const func) parameters = ::rpl_func; \ | |
151 } \ | |
152 _GL_EXTERN_C int _gl_cxxalias_dummy | |
153 #else | |
154 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ | |
155 _GL_EXTERN_C int _gl_cxxalias_dummy | |
156 #endif | |
157 | |
158 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); | |
159 is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); | |
160 except that the C function rpl_func may have a slightly different | |
161 declaration. A cast is used to silence the "invalid conversion" error | |
162 that would otherwise occur. */ | |
163 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
164 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ | |
165 namespace GNULIB_NAMESPACE \ | |
166 { \ | |
167 rettype (*const func) parameters = \ | |
168 reinterpret_cast<rettype(*)parameters>(::rpl_func); \ | |
169 } \ | |
170 _GL_EXTERN_C int _gl_cxxalias_dummy | |
171 #else | |
172 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ | |
173 _GL_EXTERN_C int _gl_cxxalias_dummy | |
174 #endif | |
175 | |
176 /* _GL_CXXALIAS_SYS (func, rettype, parameters); | |
177 declares a C++ alias called GNULIB_NAMESPACE::func | |
178 that redirects to the system provided function func, if GNULIB_NAMESPACE | |
179 is defined. | |
180 Example: | |
181 _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); | |
182 */ | |
183 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
184 /* If we were to write | |
185 rettype (*const func) parameters = ::func; | |
186 like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls | |
187 better (remove an indirection through a 'static' pointer variable), | |
188 but then the _GL_CXXALIASWARN macro below would cause a warning not only | |
189 for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ | |
190 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ | |
191 namespace GNULIB_NAMESPACE \ | |
192 { \ | |
193 static rettype (*func) parameters = ::func; \ | |
194 } \ | |
195 _GL_EXTERN_C int _gl_cxxalias_dummy | |
196 #else | |
197 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ | |
198 _GL_EXTERN_C int _gl_cxxalias_dummy | |
199 #endif | |
200 | |
201 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); | |
202 is like _GL_CXXALIAS_SYS (func, rettype, parameters); | |
203 except that the C function func may have a slightly different declaration. | |
204 A cast is used to silence the "invalid conversion" error that would | |
205 otherwise occur. */ | |
206 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
207 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ | |
208 namespace GNULIB_NAMESPACE \ | |
209 { \ | |
210 static rettype (*func) parameters = \ | |
211 reinterpret_cast<rettype(*)parameters>(::func); \ | |
212 } \ | |
213 _GL_EXTERN_C int _gl_cxxalias_dummy | |
214 #else | |
215 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ | |
216 _GL_EXTERN_C int _gl_cxxalias_dummy | |
217 #endif | |
218 | |
219 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); | |
220 is like _GL_CXXALIAS_SYS (func, rettype, parameters); | |
221 except that the C function is picked among a set of overloaded functions, | |
222 namely the one with rettype2 and parameters2. Two consecutive casts | |
223 are used to silence the "cannot find a match" and "invalid conversion" | |
224 errors that would otherwise occur. */ | |
225 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
226 /* The outer cast must be a reinterpret_cast. | |
227 The inner cast: When the function is defined as a set of overloaded | |
228 functions, it works as a static_cast<>, choosing the designated variant. | |
229 When the function is defined as a single variant, it works as a | |
230 reinterpret_cast<>. The parenthesized cast syntax works both ways. */ | |
231 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ | |
232 namespace GNULIB_NAMESPACE \ | |
233 { \ | |
234 static rettype (*func) parameters = \ | |
235 reinterpret_cast<rettype(*)parameters>( \ | |
236 (rettype2(*)parameters2)(::func)); \ | |
237 } \ | |
238 _GL_EXTERN_C int _gl_cxxalias_dummy | |
239 #else | |
240 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ | |
241 _GL_EXTERN_C int _gl_cxxalias_dummy | |
242 #endif | |
243 | |
244 /* _GL_CXXALIASWARN (func); | |
245 causes a warning to be emitted when ::func is used but not when | |
246 GNULIB_NAMESPACE::func is used. func must be defined without overloaded | |
247 variants. */ | |
248 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
249 # define _GL_CXXALIASWARN(func) \ | |
250 _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) | |
251 # define _GL_CXXALIASWARN_1(func,namespace) \ | |
252 _GL_CXXALIASWARN_2 (func, namespace) | |
253 /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, | |
254 we enable the warning only when not optimizing. */ | |
255 # if !__OPTIMIZE__ | |
256 # define _GL_CXXALIASWARN_2(func,namespace) \ | |
257 _GL_WARN_ON_USE (func, \ | |
258 "The symbol ::" #func " refers to the system function. " \ | |
259 "Use " #namespace "::" #func " instead.") | |
260 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING | |
261 # define _GL_CXXALIASWARN_2(func,namespace) \ | |
262 extern __typeof__ (func) func | |
263 # else | |
264 # define _GL_CXXALIASWARN_2(func,namespace) \ | |
265 _GL_EXTERN_C int _gl_cxxalias_dummy | |
266 # endif | |
267 #else | |
268 # define _GL_CXXALIASWARN(func) \ | |
269 _GL_EXTERN_C int _gl_cxxalias_dummy | |
270 #endif | |
271 | |
272 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); | |
273 causes a warning to be emitted when the given overloaded variant of ::func | |
274 is used but not when GNULIB_NAMESPACE::func is used. */ | |
275 #if defined __cplusplus && defined GNULIB_NAMESPACE | |
276 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ | |
277 _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ | |
278 GNULIB_NAMESPACE) | |
279 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ | |
280 _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) | |
281 /* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, | |
282 we enable the warning only when not optimizing. */ | |
283 # if !__OPTIMIZE__ | |
284 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ | |
285 _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ | |
286 "The symbol ::" #func " refers to the system function. " \ | |
287 "Use " #namespace "::" #func " instead.") | |
288 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING | |
289 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ | |
290 extern __typeof__ (func) func | |
291 # else | |
292 # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ | |
293 _GL_EXTERN_C int _gl_cxxalias_dummy | |
294 # endif | |
295 #else | |
296 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ | |
297 _GL_EXTERN_C int _gl_cxxalias_dummy | |
298 #endif | |
299 | |
300 #endif /* _GL_CXXDEFS_H */ | |
301 | |
302 /* The definition of _GL_ARG_NONNULL is copied here. */ | |
303 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools | |
304 that the values passed as arguments n, ..., m must be non-NULL pointers. | |
305 n = 1 stands for the first argument, n = 2 for the second argument etc. */ | |
306 #ifndef _GL_ARG_NONNULL | |
307 # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 | |
308 # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) | |
309 # else | |
310 # define _GL_ARG_NONNULL(params) | |
311 # endif | |
312 #endif | |
313 | |
314 /* The definition of _GL_WARN_ON_USE is copied here. */ | |
315 #ifndef _GL_WARN_ON_USE | |
316 | |
317 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) | |
318 /* A compiler attribute is available in gcc versions 4.3.0 and later. */ | |
319 # define _GL_WARN_ON_USE(function, message) \ | |
320 extern __typeof__ (function) function __attribute__ ((__warning__ (message))) | |
321 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING | |
322 /* Verify the existence of the function. */ | |
323 # define _GL_WARN_ON_USE(function, message) \ | |
324 extern __typeof__ (function) function | |
325 # else /* Unsupported. */ | |
326 # define _GL_WARN_ON_USE(function, message) \ | |
327 _GL_WARN_EXTERN_C int _gl_warn_on_use | |
328 # endif | |
329 #endif | |
330 | |
331 /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") | |
332 is like _GL_WARN_ON_USE (function, "string"), except that the function is | |
333 declared with the given prototype, consisting of return type, parameters, | |
334 and attributes. | |
335 This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does | |
336 not work in this case. */ | |
337 #ifndef _GL_WARN_ON_USE_CXX | |
338 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) | |
339 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ | |
340 extern rettype function parameters_and_attributes \ | |
341 __attribute__ ((__warning__ (msg))) | |
342 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING | |
343 /* Verify the existence of the function. */ | |
344 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ | |
345 extern rettype function parameters_and_attributes | |
346 # else /* Unsupported. */ | |
347 # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ | |
348 _GL_WARN_EXTERN_C int _gl_warn_on_use | |
349 # endif | |
350 #endif | |
351 | |
352 /* _GL_WARN_EXTERN_C declaration; | |
353 performs the declaration with C linkage. */ | |
354 #ifndef _GL_WARN_EXTERN_C | |
355 # if defined __cplusplus | |
356 # define _GL_WARN_EXTERN_C extern "C" | |
357 # else | |
358 # define _GL_WARN_EXTERN_C extern | |
359 # endif | |
360 #endif | |
361 | |
362 /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). | |
363 Or they define it with the wrong member names or define it in <sys/time.h> | |
364 (e.g., FreeBSD circa 1997). Stock Mingw does not define it, but the | |
365 pthreads-win32 library defines it in <pthread.h>. */ | |
366 # if ! 1 | |
367 # if 0 | |
368 # include <sys/time.h> | |
369 # elif 0 | |
370 # include <pthread.h> | |
371 /* The pthreads-win32 <pthread.h> also defines a couple of broken macros. */ | |
372 # undef asctime_r | |
373 # undef ctime_r | |
374 # undef gmtime_r | |
375 # undef localtime_r | |
376 # undef rand_r | |
377 # undef strtok_r | |
378 # else | |
379 | |
380 # ifdef __cplusplus | |
381 extern "C" { | |
382 # endif | |
383 | |
384 # undef timespec | |
385 # define timespec rpl_timespec | |
386 struct timespec | |
387 { | |
388 time_t tv_sec; | |
389 long int tv_nsec; | |
390 }; | |
391 | |
392 # ifdef __cplusplus | |
393 } | |
394 # endif | |
395 | |
396 # endif | |
397 # endif | |
398 | |
399 /* Per http://austingroupbugs.net/view.php?id=327, POSIX requires | |
400 time_t to be an integer type, even though C99 permits floating | |
401 point. We don't know of any implementation that uses floating | |
402 point, and it is much easier to write code that doesn't have to | |
403 worry about that corner case, so we force the issue. */ | |
404 struct __time_t_must_be_integral { | |
405 unsigned int __floating_time_t_unsupported : (time_t) 1; | |
406 }; | |
407 | |
408 /* Sleep for at least RQTP seconds unless interrupted, If interrupted, | |
409 return -1 and store the remaining time into RMTP. See | |
410 <http://www.opengroup.org/susv3xsh/nanosleep.html>. */ | |
411 # if 0 | |
412 # if GNULIB_PORTCHECK | |
413 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
414 # define nanosleep rpl_nanosleep | |
415 # endif | |
416 _GL_FUNCDECL_RPL (nanosleep, int, | |
417 (struct timespec const *__rqtp, struct timespec *__rmtp) | |
418 _GL_ARG_NONNULL ((1))); | |
419 _GL_CXXALIAS_RPL (nanosleep, int, | |
420 (struct timespec const *__rqtp, struct timespec *__rmtp)); | |
421 # else | |
422 # if ! 1 | |
423 _GL_FUNCDECL_SYS (nanosleep, int, | |
424 (struct timespec const *__rqtp, struct timespec *__rmtp) | |
425 _GL_ARG_NONNULL ((1))); | |
426 # endif | |
427 _GL_CXXALIAS_SYS (nanosleep, int, | |
428 (struct timespec const *__rqtp, struct timespec *__rmtp)); | |
429 # endif | |
430 _GL_CXXALIASWARN (nanosleep); | |
431 # endif | |
432 | |
433 /* Return the 'time_t' representation of TP and normalize TP. */ | |
434 # if 1 | |
435 # if 0 | |
436 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
437 # define mktime rpl_mktime | |
438 # endif | |
439 _GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); | |
440 _GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); | |
441 # else | |
442 _GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); | |
443 # endif | |
444 _GL_CXXALIASWARN (mktime); | |
445 # endif | |
446 | |
447 /* Convert TIMER to RESULT, assuming local time and UTC respectively. See | |
448 <http://www.opengroup.org/susv3xsh/localtime_r.html> and | |
449 <http://www.opengroup.org/susv3xsh/gmtime_r.html>. */ | |
450 # if 1 | |
451 # if 0 | |
452 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
453 # undef localtime_r | |
454 # define localtime_r rpl_localtime_r | |
455 # endif | |
456 _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, | |
457 struct tm *restrict __result) | |
458 _GL_ARG_NONNULL ((1, 2))); | |
459 _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, | |
460 struct tm *restrict __result)); | |
461 # else | |
462 # if ! 0 | |
463 _GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, | |
464 struct tm *restrict __result) | |
465 _GL_ARG_NONNULL ((1, 2))); | |
466 # endif | |
467 _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, | |
468 struct tm *restrict __result)); | |
469 # endif | |
470 # if 0 | |
471 _GL_CXXALIASWARN (localtime_r); | |
472 # endif | |
473 # if 0 | |
474 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
475 # undef gmtime_r | |
476 # define gmtime_r rpl_gmtime_r | |
477 # endif | |
478 _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, | |
479 struct tm *restrict __result) | |
480 _GL_ARG_NONNULL ((1, 2))); | |
481 _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, | |
482 struct tm *restrict __result)); | |
483 # else | |
484 # if ! 0 | |
485 _GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, | |
486 struct tm *restrict __result) | |
487 _GL_ARG_NONNULL ((1, 2))); | |
488 # endif | |
489 _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, | |
490 struct tm *restrict __result)); | |
491 # endif | |
492 # if 0 | |
493 _GL_CXXALIASWARN (gmtime_r); | |
494 # endif | |
495 # endif | |
496 | |
497 /* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store | |
498 the resulting broken-down time into TM. See | |
499 <http://www.opengroup.org/susv3xsh/strptime.html>. */ | |
500 # if 0 | |
501 # if ! 1 | |
502 _GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, | |
503 char const *restrict __format, | |
504 struct tm *restrict __tm) | |
505 _GL_ARG_NONNULL ((1, 2, 3))); | |
506 # endif | |
507 _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, | |
508 char const *restrict __format, | |
509 struct tm *restrict __tm)); | |
510 _GL_CXXALIASWARN (strptime); | |
511 # endif | |
512 | |
513 /* Convert TM to a time_t value, assuming UTC. */ | |
514 # if 0 | |
515 # if GNULIB_PORTCHECK | |
516 # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | |
517 # undef timegm | |
518 # define timegm rpl_timegm | |
519 # endif | |
520 _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); | |
521 _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); | |
522 # else | |
523 # if ! 1 | |
524 _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); | |
525 # endif | |
526 _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); | |
527 # endif | |
528 _GL_CXXALIASWARN (timegm); | |
529 # endif | |
530 | |
531 /* Encourage applications to avoid unsafe functions that can overrun | |
532 buffers when given outlandish struct tm values. Portable | |
533 applications should use strftime (or even sprintf) instead. */ | |
534 # if defined GNULIB_POSIXCHECK | |
535 # undef asctime | |
536 _GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " | |
537 "better use strftime (or even sprintf) instead"); | |
538 # endif | |
539 # if defined GNULIB_POSIXCHECK | |
540 # undef asctime_r | |
541 _GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " | |
542 "better use strftime (or even sprintf) instead"); | |
543 # endif | |
544 # if defined GNULIB_POSIXCHECK | |
545 # undef ctime | |
546 _GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " | |
547 "better use strftime (or even sprintf) instead"); | |
548 # endif | |
549 # if defined GNULIB_POSIXCHECK | |
550 # undef ctime_r | |
551 _GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " | |
552 "better use strftime (or even sprintf) instead"); | |
553 # endif | |
554 | |
555 #endif |