modernc.org/cc@v1.0.1/v2/headers/linux_386/usr/include/time.h (about)

     1  /* Copyright (C) 1991-2018 Free Software Foundation, Inc.
     2     This file is part of the GNU C Library.
     3  
     4     The GNU C Library is free software; you can redistribute it and/or
     5     modify it under the terms of the GNU Lesser General Public
     6     License as published by the Free Software Foundation; either
     7     version 2.1 of the License, or (at your option) any later version.
     8  
     9     The GNU C Library is distributed in the hope that it will be useful,
    10     but WITHOUT ANY WARRANTY; without even the implied warranty of
    11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    12     Lesser General Public License for more details.
    13  
    14     You should have received a copy of the GNU Lesser General Public
    15     License along with the GNU C Library; if not, see
    16     <http://www.gnu.org/licenses/>.  */
    17  
    18  /*
    19   *	ISO C99 Standard: 7.23 Date and time	<time.h>
    20   */
    21  
    22  #ifndef	_TIME_H
    23  #define _TIME_H	1
    24  
    25  #include <features.h>
    26  
    27  #define __need_size_t
    28  #define __need_NULL
    29  #include <stddef.h>
    30  
    31  /* This defines CLOCKS_PER_SEC, which is the number of processor clock
    32     ticks per second, and possibly a number of other constants.   */
    33  #include <bits/time.h>
    34  
    35  /* Many of the typedefs and structs whose official home is this header
    36     may also need to be defined by other headers.  */
    37  #include <bits/types/clock_t.h>
    38  #include <bits/types/time_t.h>
    39  #include <bits/types/struct_tm.h>
    40  
    41  #if defined __USE_POSIX199309 || defined __USE_ISOC11
    42  # include <bits/types/struct_timespec.h>
    43  #endif
    44  
    45  #ifdef __USE_POSIX199309
    46  # include <bits/types/clockid_t.h>
    47  # include <bits/types/timer_t.h>
    48  # include <bits/types/struct_itimerspec.h>
    49  struct sigevent;
    50  #endif
    51  
    52  #ifdef __USE_XOPEN2K
    53  # ifndef __pid_t_defined
    54  typedef __pid_t pid_t;
    55  #  define __pid_t_defined
    56  # endif
    57  #endif
    58  
    59  #ifdef __USE_XOPEN2K8
    60  # include <bits/types/locale_t.h>
    61  #endif
    62  
    63  #ifdef __USE_ISOC11
    64  /* Time base values for timespec_get.  */
    65  # define TIME_UTC 1
    66  #endif
    67  
    68  __BEGIN_DECLS
    69  /* Time used by the program so far (user time + system time).
    70     The result / CLOCKS_PER_SEC is program time in seconds.  */
    71  extern clock_t clock(void) __THROW;
    72  
    73  /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
    74  extern time_t time(time_t * __timer) __THROW;
    75  
    76  /* Return the difference between TIME1 and TIME0.  */
    77  extern double difftime(time_t __time1, time_t __time0)
    78  __THROW __attribute__ ((__const__));
    79  
    80  /* Return the `time_t' representation of TP and normalize TP.  */
    81  extern time_t mktime(struct tm *__tp) __THROW;
    82  
    83  /* Format TP into S according to FORMAT.
    84     Write no more than MAXSIZE characters and return the number
    85     of characters written, or 0 if it would exceed MAXSIZE.  */
    86  extern size_t strftime(char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp) __THROW;
    87  
    88  #ifdef __USE_XOPEN
    89  /* Parse S according to FORMAT and store binary time information in TP.
    90     The return value is a pointer to the first unparsed character in S.  */
    91  extern char *strptime(const char *__restrict __s, const char *__restrict __fmt, struct tm *__tp) __THROW;
    92  #endif
    93  
    94  #ifdef __USE_XOPEN2K8
    95  /* Similar to the two functions above but take the information from
    96     the provided locale and not the global locale.  */
    97  
    98  extern size_t strftime_l(char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp, locale_t __loc) __THROW;
    99  #endif
   100  
   101  #ifdef __USE_GNU
   102  extern char *strptime_l(const char *__restrict __s, const char *__restrict __fmt, struct tm *__tp, locale_t __loc) __THROW;
   103  #endif
   104  
   105  /* Return the `struct tm' representation of *TIMER
   106     in Universal Coordinated Time (aka Greenwich Mean Time).  */
   107  extern struct tm *gmtime(const time_t * __timer) __THROW;
   108  
   109  /* Return the `struct tm' representation
   110     of *TIMER in the local timezone.  */
   111  extern struct tm *localtime(const time_t * __timer) __THROW;
   112  
   113  #ifdef __USE_POSIX
   114  /* Return the `struct tm' representation of *TIMER in UTC,
   115     using *TP to store the result.  */
   116  extern struct tm *gmtime_r(const time_t * __restrict __timer, struct tm *__restrict __tp) __THROW;
   117  
   118  /* Return the `struct tm' representation of *TIMER in local time,
   119     using *TP to store the result.  */
   120  extern struct tm *localtime_r(const time_t * __restrict __timer, struct tm *__restrict __tp) __THROW;
   121  #endif				/* POSIX */
   122  
   123  /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
   124     that is the representation of TP in this format.  */
   125  extern char *asctime(const struct tm *__tp) __THROW;
   126  
   127  /* Equivalent to `asctime (localtime (timer))'.  */
   128  extern char *ctime(const time_t * __timer) __THROW;
   129  
   130  #ifdef __USE_POSIX
   131  /* Reentrant versions of the above functions.  */
   132  
   133  /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n"
   134     that is the representation of TP in this format.  */
   135  extern char *asctime_r(const struct tm *__restrict __tp, char *__restrict __buf) __THROW;
   136  
   137  /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
   138  extern char *ctime_r(const time_t * __restrict __timer, char *__restrict __buf) __THROW;
   139  #endif				/* POSIX */
   140  
   141  /* Defined in localtime.c.  */
   142  extern char *__tzname[2];	/* Current timezone names.  */
   143  extern int __daylight;		/* If daylight-saving time is ever in use.  */
   144  extern long int __timezone;	/* Seconds west of UTC.  */
   145  
   146  #ifdef	__USE_POSIX
   147  /* Same as above.  */
   148  extern char *tzname[2];
   149  
   150  /* Set time conversion information from the TZ environment variable.
   151     If TZ is not defined, a locale-dependent default is used.  */
   152  extern void tzset(void) __THROW;
   153  #endif
   154  
   155  #if defined __USE_MISC || defined __USE_XOPEN
   156  extern int daylight;
   157  extern long int timezone;
   158  #endif
   159  
   160  #ifdef __USE_MISC
   161  /* Set the system time to *WHEN.
   162     This call is restricted to the superuser.  */
   163  extern int stime(const time_t * __when) __THROW;
   164  #endif
   165  
   166  /* Nonzero if YEAR is a leap year (every 4 years,
   167     except every 100th isn't, and every 400th is).  */
   168  #define __isleap(year)	\
   169    ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
   170  
   171  #ifdef __USE_MISC
   172  /* Miscellaneous functions many Unices inherited from the public domain
   173     localtime package.  These are included only for compatibility.  */
   174  
   175  /* Like `mktime', but for TP represents Universal Time, not local time.  */
   176  extern time_t timegm(struct tm *__tp) __THROW;
   177  
   178  /* Another name for `mktime'.  */
   179  extern time_t timelocal(struct tm *__tp) __THROW;
   180  
   181  /* Return the number of days in YEAR.  */
   182  extern int dysize(int __year)
   183  __THROW __attribute__ ((__const__));
   184  #endif
   185  
   186  #ifdef __USE_POSIX199309
   187  /* Pause execution for a number of nanoseconds.
   188  
   189     This function is a cancellation point and therefore not marked with
   190     __THROW.  */
   191  extern int nanosleep(const struct timespec *__requested_time, struct timespec *__remaining);
   192  
   193  /* Get resolution of clock CLOCK_ID.  */
   194  extern int clock_getres(clockid_t __clock_id, struct timespec *__res) __THROW;
   195  
   196  /* Get current value of clock CLOCK_ID and store it in TP.  */
   197  extern int clock_gettime(clockid_t __clock_id, struct timespec *__tp) __THROW;
   198  
   199  /* Set clock CLOCK_ID to value TP.  */
   200  extern int clock_settime(clockid_t __clock_id, const struct timespec *__tp) __THROW;
   201  
   202  # ifdef __USE_XOPEN2K
   203  /* High-resolution sleep with the specified clock.
   204  
   205     This function is a cancellation point and therefore not marked with
   206     __THROW.  */
   207  extern int clock_nanosleep(clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem);
   208  
   209  /* Return clock ID for CPU-time clock.  */
   210  extern int clock_getcpuclockid(pid_t __pid, clockid_t * __clock_id) __THROW;
   211  # endif
   212  
   213  /* Create new per-process timer using CLOCK_ID.  */
   214  extern int timer_create(clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t * __restrict __timerid) __THROW;
   215  
   216  /* Delete timer TIMERID.  */
   217  extern int timer_delete(timer_t __timerid) __THROW;
   218  
   219  /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
   220  extern int timer_settime(timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) __THROW;
   221  
   222  /* Get current value of timer TIMERID and store it in VALUE.  */
   223  extern int timer_gettime(timer_t __timerid, struct itimerspec *__value) __THROW;
   224  
   225  /* Get expiration overrun for timer TIMERID.  */
   226  extern int timer_getoverrun(timer_t __timerid) __THROW;
   227  #endif
   228  
   229  #ifdef __USE_ISOC11
   230  /* Set TS to calendar time based in time base BASE.  */
   231  extern int timespec_get(struct timespec *__ts, int __base)
   232  __THROW __nonnull((1));
   233  #endif
   234  
   235  #ifdef __USE_XOPEN_EXTENDED
   236  /* Set to one of the following values to indicate an error.
   237       1  the DATEMSK environment variable is null or undefined,
   238       2  the template file cannot be opened for reading,
   239       3  failed to get file status information,
   240       4  the template file is not a regular file,
   241       5  an error is encountered while reading the template file,
   242       6  memory allication failed (not enough memory available),
   243       7  there is no line in the template that matches the input,
   244       8  invalid input specification Example: February 31 or a time is
   245  	specified that can not be represented in a time_t (representing
   246  	the time in seconds since 00:00:00 UTC, January 1, 1970) */
   247  extern int getdate_err;
   248  
   249  /* Parse the given string as a date specification and return a value
   250     representing the value.  The templates from the file identified by
   251     the environment variable DATEMSK are used.  In case of an error
   252     `getdate_err' is set.
   253  
   254     This function is a possible cancellation point and therefore not
   255     marked with __THROW.  */
   256  extern struct tm *getdate(const char *__string);
   257  #endif
   258  
   259  #ifdef __USE_GNU
   260  /* Since `getdate' is not reentrant because of the use of `getdate_err'
   261     and the static buffer to return the result in, we provide a thread-safe
   262     variant.  The functionality is the same.  The result is returned in
   263     the buffer pointed to by RESBUFP and in case of an error the return
   264     value is != 0 with the same values as given above for `getdate_err'.
   265  
   266     This function is not part of POSIX and therefore no official
   267     cancellation point.  But due to similarity with an POSIX interface
   268     or due to the implementation it is a cancellation point and
   269     therefore not marked with __THROW.  */
   270  extern int getdate_r(const char *__restrict __string, struct tm *__restrict __resbufp);
   271  #endif
   272  
   273  __END_DECLS
   274  #endif				/* time.h.  */