Home | History | Annotate | Line # | Download | only in time
      1 /*	$NetBSD: compat_localtime.c,v 1.6 2026/07/13 18:44:44 christos Exp $	*/
      2 
      3 /*
      4  * Written by Jason R. Thorpe <thorpej (at) NetBSD.org>, October 21, 1997.
      5  * Public domain.
      6  */
      7 
      8 #include "namespace.h"
      9 #include <sys/cdefs.h>
     10 
     11 #define __LIBC12_SOURCE__
     12 #include <time.h>
     13 #include <sys/time.h>
     14 #include <sys/stat.h>
     15 #include <compat/include/time.h>
     16 #include <compat/sys/time.h>
     17 
     18 #ifdef __weak_alias
     19 __weak_alias(gmtime_r,_gmtime_r)
     20 __weak_alias(localtime_r,_localtime_r)
     21 __weak_alias(localtime_rz,_localtime_rz)
     22 __weak_alias(mktime_z,_mktime_z)
     23 __weak_alias(offtime,_offtime)
     24 __weak_alias(posix2time,_posix2time)
     25 __weak_alias(posix2time_z,_posix2time_z)
     26 __weak_alias(time2posix,_time2posix)
     27 __weak_alias(timegm,_timegm)
     28 __weak_alias(timelocal,_timelocal)
     29 __weak_alias(timeoff,_timeoff)
     30 __weak_alias(tzset,_tzset)
     31 __weak_alias(tzsetwall,_tzsetwall)
     32 #endif
     33 
     34 __warn_references(gmtime_r,
     35     "warning: reference to compatibility gmtime_r();"
     36     " include <time.h> for correct reference")
     37 __warn_references(localtime_r,
     38     "warning: reference to compatibility localtime_r();"
     39     " include <time.h> for correct reference")
     40 __warn_references(localtime_rz,
     41     "warning: reference to compatibility localtime_rz();"
     42     " include <time.h> for correct reference")
     43 __warn_references(mktime_z,
     44     "warning: reference to compatibility mktime_z();"
     45     " include <time.h> for correct reference")
     46 __warn_references(offtime,
     47     "warning: reference to compatibility offtime();"
     48     " include <time.h> for correct reference")
     49 __warn_references(posix2time,
     50     "warning: reference to compatibility posix2time();"
     51     " include <time.h> for correct reference")
     52 __warn_references(posix2time_z,
     53     "warning: reference to compatibility posix2time_z();"
     54     " include <time.h> for correct reference")
     55 __warn_references(time2posix,
     56     "warning: reference to compatibility time2posix();"
     57     " include <time.h> for correct reference")
     58 __warn_references(timegm,
     59     "warning: reference to compatibility timegm();"
     60     " include <time.h> for correct reference")
     61 __warn_references(timelocal,
     62     "warning: reference to compatibility timelocal();"
     63     " include <time.h> for correct reference")
     64 __warn_references(timeoff,
     65     "warning: reference to compatibility timeoff();"
     66     " include <time.h> for correct reference")
     67 __warn_references(tzset,
     68     "warning: reference to compatibility tzset();"
     69     " include <time.h> for correct reference")
     70 __warn_references(tzsetwall,
     71     "warning: reference to compatibility tzsetwall();"
     72     " include <time.h> for correct reference")
     73 
     74 #define timeval timeval50
     75 #define timespec timespec50
     76 #define	time_t	int32_t
     77 
     78 /*
     79  * Since we include <sys/stat.h> under __LIBC12_SOURCE__ (and we cannot
     80  * do otherwise, because if we include <sys/stat.h> without __LIBC12_SOURCE__
     81  * it will define time_t differently and it will break the compilation),
     82  * we need to expose the current stat declarations manually. This is less
     83  * evil than calling the compat stat functions from localtime.c which
     84  * would require patching localtime.c because #define stat __statXX does
     85  * not work because the "stat" name is used for both the method name and
     86  * the struct name (which are different).
     87  */
     88 int	stat(const char *, struct stat *) __RENAME(__stat50);
     89 int	fstat(int, struct stat *) __RENAME(__fstat50);
     90 int	fstatat(int, const char *, struct stat *, int);
     91 
     92 #include "time/localtime.c"
     93