X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/4bb2f1fc77e0428c245d3b87828516c8bb95050a..87ebf1e3df9537a204b21f0405c6e60f2acdcc47:/time64.c diff --git a/time64.c b/time64.c index 72a5a97..f0e8d71 100644 --- a/time64.c +++ b/time64.c @@ -88,6 +88,7 @@ static const char dow_year_start[SOLAR_CYCLE_LENGTH] = { #define CHEAT_YEARS 108 #define IS_LEAP(n) ((!(((n) + 1900) % 400) || (!(((n) + 1900) % 4) && (((n) + 1900) % 100))) != 0) +#undef WRAP /* some define this */ #define WRAP(a,b,m) ((a) = ((a) < 0 ) ? ((b)--, (a) + (m)) : (a)) #ifdef USE_SYSTEM_LOCALTIME @@ -300,8 +301,8 @@ static void S_copy_little_tm_to_big_TM(const struct tm *src, struct TM *dest) { #ifndef HAS_LOCALTIME_R /* Simulate localtime_r() to the best of our ability */ static struct tm * S_localtime_r(const time_t *clock, struct tm *result) { -#ifdef VMS - dTHX; /* in case the following is defined as Perl_my_localtime(aTHX_ ...) */ +#ifdef __VMS + dTHX; /* the following is defined as Perl_my_localtime(aTHX_ ...) */ #endif const struct tm *static_result = localtime(clock); @@ -321,7 +322,9 @@ static struct tm * S_localtime_r(const time_t *clock, struct tm *result) { #ifndef HAS_GMTIME_R /* Simulate gmtime_r() to the best of our ability */ static struct tm * S_gmtime_r(const time_t *clock, struct tm *result) { - dTHX; /* in case the following is defined as Perl_my_gmtime(aTHX_ ...) */ +#ifdef __VMS + dTHX; /* the following is defined as Perl_my_localtime(aTHX_ ...) */ +#endif const struct tm *static_result = gmtime(clock); assert(result != NULL); @@ -370,19 +373,19 @@ static struct TM *S_gmtime64_r (const Time64_T *in_time, struct TM *p) p->tm_zone = (char *)"UTC"; #endif - v_tm_sec = (int)fmod(time, 60.0); - time = time >= 0 ? floor(time / 60.0) : ceil(time / 60.0); - v_tm_min = (int)fmod(time, 60.0); - time = time >= 0 ? floor(time / 60.0) : ceil(time / 60.0); - v_tm_hour = (int)fmod(time, 24.0); - time = time >= 0 ? floor(time / 24.0) : ceil(time / 24.0); + v_tm_sec = (int)Perl_fmod(time, 60.0); + time = time >= 0 ? Perl_floor(time / 60.0) : Perl_ceil(time / 60.0); + v_tm_min = (int)Perl_fmod(time, 60.0); + time = time >= 0 ? Perl_floor(time / 60.0) : Perl_ceil(time / 60.0); + v_tm_hour = (int)Perl_fmod(time, 24.0); + time = time >= 0 ? Perl_floor(time / 24.0) : Perl_ceil(time / 24.0); v_tm_tday = time; WRAP (v_tm_sec, v_tm_min, 60); WRAP (v_tm_min, v_tm_hour, 60); WRAP (v_tm_hour, v_tm_tday, 24); - v_tm_wday = (int)fmod((v_tm_tday + 4.0), 7.0); + v_tm_wday = (int)Perl_fmod((v_tm_tday + 4.0), 7.0); if (v_tm_wday < 0) v_tm_wday += 7; m = v_tm_tday; @@ -394,7 +397,7 @@ static struct TM *S_gmtime64_r (const Time64_T *in_time, struct TM *p) if (m >= 0) { /* Gregorian cycles, this is huge optimization for distant times */ - cycles = (int)floor(m / (Time64_T) days_in_gregorian_cycle); + cycles = (int)Perl_floor(m / (Time64_T) days_in_gregorian_cycle); if( cycles ) { m -= (cycles * (Time64_T) days_in_gregorian_cycle); year += (cycles * years_in_gregorian_cycle); @@ -418,7 +421,7 @@ static struct TM *S_gmtime64_r (const Time64_T *in_time, struct TM *p) year--; /* Gregorian cycles */ - cycles = (int)ceil((m / (Time64_T) days_in_gregorian_cycle) + 1); + cycles = (int)Perl_ceil((m / (Time64_T) days_in_gregorian_cycle) + 1); if( cycles ) { m -= (cycles * (Time64_T) days_in_gregorian_cycle); year += (cycles * years_in_gregorian_cycle);