diff --git a/src/rt/rust_builtin.c b/src/rt/rust_builtin.c index 5dc07f859aed0..03cd3fd6b88ea 100644 --- a/src/rt/rust_builtin.c +++ b/src/rt/rust_builtin.c @@ -41,29 +41,6 @@ //include valgrind.h after stdint.h so that uintptr_t is defined for msys2 w64 #include "valgrind/valgrind.h" -#ifdef __ANDROID__ -time_t -timegm(struct tm *tm) -{ - time_t ret; - char *tz; - - tz = getenv("TZ"); - if (tz) - tz = strdup(tz); - setenv("TZ", "", 1); - tzset(); - ret = mktime(tm); - if (tz) { - setenv("TZ", tz, 1); - free(tz); - } else - unsetenv("TZ"); - tzset(); - return ret; -} -#endif - #ifdef __APPLE__ #if (TARGET_OS_IPHONE) extern char **environ; @@ -100,121 +77,6 @@ rust_list_dir_val(struct dirent* entry_ptr) { } #endif -typedef struct { - int32_t tm_sec; - int32_t tm_min; - int32_t tm_hour; - int32_t tm_mday; - int32_t tm_mon; - int32_t tm_year; - int32_t tm_wday; - int32_t tm_yday; - int32_t tm_isdst; - int32_t tm_gmtoff; - int32_t tm_nsec; -} rust_tm; - -void rust_tm_to_tm(rust_tm* in_tm, struct tm* out_tm) { - memset(out_tm, 0, sizeof(struct tm)); - out_tm->tm_sec = in_tm->tm_sec; - out_tm->tm_min = in_tm->tm_min; - out_tm->tm_hour = in_tm->tm_hour; - out_tm->tm_mday = in_tm->tm_mday; - out_tm->tm_mon = in_tm->tm_mon; - out_tm->tm_year = in_tm->tm_year; - out_tm->tm_wday = in_tm->tm_wday; - out_tm->tm_yday = in_tm->tm_yday; - out_tm->tm_isdst = in_tm->tm_isdst; -} - -void tm_to_rust_tm(struct tm* in_tm, - rust_tm* out_tm, - int32_t gmtoff, - int32_t nsec) { - out_tm->tm_sec = in_tm->tm_sec; - out_tm->tm_min = in_tm->tm_min; - out_tm->tm_hour = in_tm->tm_hour; - out_tm->tm_mday = in_tm->tm_mday; - out_tm->tm_mon = in_tm->tm_mon; - out_tm->tm_year = in_tm->tm_year; - out_tm->tm_wday = in_tm->tm_wday; - out_tm->tm_yday = in_tm->tm_yday; - out_tm->tm_isdst = in_tm->tm_isdst; - out_tm->tm_gmtoff = gmtoff; - out_tm->tm_nsec = nsec; -} - -#if defined(__WIN32__) -#define TZSET() _tzset() -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -#define GMTIME(clock, result) gmtime_s((result), (clock)) -#define LOCALTIME(clock, result) localtime_s((result), (clock)) -#define TIMEGM(result) _mkgmtime64(result) -#else -struct tm* GMTIME(const time_t *clock, struct tm *result) { - struct tm* t = gmtime(clock); - if (t == NULL || result == NULL) { return NULL; } - *result = *t; - return result; -} -struct tm* LOCALTIME(const time_t *clock, struct tm *result) { - struct tm* t = localtime(clock); - if (t == NULL || result == NULL) { return NULL; } - *result = *t; - return result; -} -#define TIMEGM(result) mktime((result)) - _timezone -#endif -#else -#define TZSET() tzset() -#define GMTIME(clock, result) gmtime_r((clock), (result)) -#define LOCALTIME(clock, result) localtime_r((clock), (result)) -#define TIMEGM(result) timegm(result) -#endif - -void -rust_tzset() { - TZSET(); -} - -void -rust_gmtime(int64_t sec, int32_t nsec, rust_tm *timeptr) { - struct tm tm; - time_t s = sec; - GMTIME(&s, &tm); - - tm_to_rust_tm(&tm, timeptr, 0, nsec); -} - -void -rust_localtime(int64_t sec, int32_t nsec, rust_tm *timeptr) { - struct tm tm; - time_t s = sec; - LOCALTIME(&s, &tm); - -#if defined(__WIN32__) - int32_t gmtoff = -timezone; -#else - int32_t gmtoff = tm.tm_gmtoff; -#endif - - tm_to_rust_tm(&tm, timeptr, gmtoff, nsec); -} - -int64_t -rust_timegm(rust_tm* timeptr) { - struct tm t; - rust_tm_to_tm(timeptr, &t); - return TIMEGM(&t); -} - -int64_t -rust_mktime(rust_tm* timeptr) { - struct tm t; - rust_tm_to_tm(timeptr, &t); - return mktime(&t); -} - #ifndef _WIN32 DIR*