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