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