17c478bd9Sstevel@tonic-gate #include "port_before.h" 2*9525b14bSRao Shoaib #include <stdio.h> 3*9525b14bSRao Shoaib #include <syslog.h> 4*9525b14bSRao Shoaib #include <sys/time.h> 57c478bd9Sstevel@tonic-gate #include "port_after.h" 67c478bd9Sstevel@tonic-gate 77c478bd9Sstevel@tonic-gate #if !defined(NEED_GETTIMEOFDAY) 8*9525b14bSRao Shoaib /*% 9*9525b14bSRao Shoaib * gettimeofday() occasionally returns invalid tv_usec on some platforms. 10*9525b14bSRao Shoaib */ 11*9525b14bSRao Shoaib #define MILLION 1000000 12*9525b14bSRao Shoaib #undef gettimeofday 13*9525b14bSRao Shoaib 14*9525b14bSRao Shoaib int isc__gettimeofday(struct timeval * tp,struct timezone * tzp)15*9525b14bSRao Shoaibisc__gettimeofday(struct timeval *tp, struct timezone *tzp) { 16*9525b14bSRao Shoaib int res; 17*9525b14bSRao Shoaib 18*9525b14bSRao Shoaib res = gettimeofday(tp, tzp); 19*9525b14bSRao Shoaib if (res < 0) 20*9525b14bSRao Shoaib return (res); 21*9525b14bSRao Shoaib if (tp == NULL) 22*9525b14bSRao Shoaib return (res); 23*9525b14bSRao Shoaib if (tp->tv_usec < 0) { 24*9525b14bSRao Shoaib do { 25*9525b14bSRao Shoaib tp->tv_usec += MILLION; 26*9525b14bSRao Shoaib tp->tv_sec--; 27*9525b14bSRao Shoaib } while (tp->tv_usec < 0); 28*9525b14bSRao Shoaib goto log; 29*9525b14bSRao Shoaib } else if (tp->tv_usec > MILLION) { 30*9525b14bSRao Shoaib do { 31*9525b14bSRao Shoaib tp->tv_usec -= MILLION; 32*9525b14bSRao Shoaib tp->tv_sec++; 33*9525b14bSRao Shoaib } while (tp->tv_usec > MILLION); 34*9525b14bSRao Shoaib goto log; 35*9525b14bSRao Shoaib } 36*9525b14bSRao Shoaib return (res); 37*9525b14bSRao Shoaib log: 38*9525b14bSRao Shoaib syslog(LOG_ERR, "gettimeofday: tv_usec out of range\n"); 39*9525b14bSRao Shoaib return (res); 40*9525b14bSRao Shoaib } 417c478bd9Sstevel@tonic-gate #else 427c478bd9Sstevel@tonic-gate int gettimeofday(struct timeval * tvp,struct _TIMEZONE * tzp)437c478bd9Sstevel@tonic-gategettimeofday(struct timeval *tvp, struct _TIMEZONE *tzp) { 447c478bd9Sstevel@tonic-gate time_t clock, time(time_t *); 457c478bd9Sstevel@tonic-gate 467c478bd9Sstevel@tonic-gate if (time(&clock) == (time_t) -1) 477c478bd9Sstevel@tonic-gate return (-1); 487c478bd9Sstevel@tonic-gate if (tvp) { 497c478bd9Sstevel@tonic-gate tvp->tv_sec = clock; 507c478bd9Sstevel@tonic-gate tvp->tv_usec = 0; 517c478bd9Sstevel@tonic-gate } 527c478bd9Sstevel@tonic-gate if (tzp) { 537c478bd9Sstevel@tonic-gate tzp->tz_minuteswest = 0; 547c478bd9Sstevel@tonic-gate tzp->tz_dsttime = 0; 557c478bd9Sstevel@tonic-gate } 567c478bd9Sstevel@tonic-gate return (0); 577c478bd9Sstevel@tonic-gate } 587c478bd9Sstevel@tonic-gate #endif /*NEED_GETTIMEOFDAY*/ 59