Browse Source

Peter S. Mazinger writes:

Hello!

Would the attached patch be acceptable (maybe instead of
__libc_gettimeofday using __gettimeofday)

We have some issues, see

http://bugs.gentoo.org/show_bug.cgi?id=65892
Eric Andersen 19 years ago
parent
commit
7e2b221be1

+ 5 - 0
include/sys/time.h

@@ -72,6 +72,11 @@ typedef void *__restrict __timezone_ptr_t;
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 __timezone_ptr_t __tz) __THROW;
 
+#ifdef _LIBC
+extern int __libc_gettimeofday (struct timeval *__restrict __tv,
+			__timezone_ptr_t __tz) __THROW;
+#endif
+
 #ifdef __USE_BSD
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.  */

+ 2 - 2
libc/inet/rpc/auth_unix.c

@@ -130,7 +130,7 @@ no_memory:
   /*
    * fill in param struct from the given params
    */
-  (void) gettimeofday (&now, (struct timezone *) 0);
+  (void) __libc_gettimeofday (&now, (struct timezone *) 0);
   aup.aup_time = now.tv_sec;
   aup.aup_machname = machname;
   aup.aup_uid = uid;
@@ -265,7 +265,7 @@ authunix_refresh (AUTH *auth)
     goto done;
 
   /* update the time and serialize in place */
-  (void) gettimeofday (&now, (struct timezone *) 0);
+  (void) __libc_gettimeofday (&now, (struct timezone *) 0);
   aup.aup_time = now.tv_sec;
   xdrs.x_op = XDR_ENCODE;
   XDR_SETPOS (&xdrs, 0);

+ 1 - 1
libc/inet/rpc/create_xid.c

@@ -51,7 +51,7 @@ _create_xid (void)
     {
       struct timeval now;
 
-      gettimeofday (&now, (struct timezone *) 0);
+      __libc_gettimeofday (&now, (struct timezone *) 0);
       srand48_r (now.tv_sec ^ now.tv_usec, &__rpc_lrand48_data);
       is_initialized = 1;
     }

+ 1 - 1
libc/misc/time/clock_gettime.c

@@ -26,7 +26,7 @@ int clock_gettime (clockid_t clock, struct timespec* ts)
 	int retval = -1;
 	switch (clock) {
 		case CLOCK_REALTIME:
-			retval = gettimeofday (&tv, NULL);
+			retval = __libc_gettimeofday (&tv, NULL);
 			if (retval == 0) {
 				TIMEVAL_TO_TIMESPEC (&tv, ts);
 			}

+ 1 - 1
libc/misc/time/ftime.c

@@ -25,7 +25,7 @@ struct timeb *timebuf;
 	struct timeval tv;
 	struct timezone tz;
 
-	if (gettimeofday (&tv, &tz) < 0)
+	if (__libc_gettimeofday (&tv, &tz) < 0)
 		return -1;
 
 	timebuf->time = tv.tv_sec;

+ 1 - 1
libc/misc/time/time.c

@@ -1603,7 +1603,7 @@ time_t time(register time_t *tloc)
 	struct timeval tv;
 	register struct timeval *p = &tv;
 
-	gettimeofday(p, NULL);		/* This should never fail... */
+	__libc_gettimeofday(p, NULL);		/* This should never fail... */
 
 	if (tloc) {
 		*tloc = p->tv_sec;

+ 1 - 1
libc/misc/utmp/wtent.c

@@ -38,7 +38,7 @@ void logwtmp (const char *line, const char *name, const char *host)
     strncpy(lutmp.ut_line, line, sizeof(lutmp.ut_line)-1);
     strncpy(lutmp.ut_name, name, sizeof(lutmp.ut_name)-1);
     strncpy(lutmp.ut_host, host, sizeof(lutmp.ut_host)-1);
-    gettimeofday(&(lutmp.ut_tv), NULL);
+    __libc_gettimeofday(&(lutmp.ut_tv), NULL);
 
     updwtmp(_PATH_WTMP, &(lutmp));
 }

+ 6 - 1
libc/sysdeps/linux/common/gettimeofday.c

@@ -9,4 +9,9 @@
 
 #include "syscalls.h"
 #include <sys/time.h>
-_syscall2(int, gettimeofday, struct timeval *, tv, struct timezone *, tz);
+
+#ifdef __NR_gettimeofday
+#define __NR___libc_gettimeofday __NR_gettimeofday
+#endif
+_syscall2(int, __libc_gettimeofday, struct timeval *, tv, struct timezone *, tz);
+weak_alias(__libc_gettimeofday, gettimeofday);

+ 1 - 1
libc/sysdeps/linux/common/time.c

@@ -18,7 +18,7 @@ time_t time(time_t * t)
 	time_t result;
 	struct timeval tv;
 
-	if (gettimeofday(&tv, (struct timezone *) NULL)) {
+	if (__libc_gettimeofday(&tv, (struct timezone *) NULL)) {
 		result = (time_t) - 1;
 	} else {
 		result = (time_t) tv.tv_sec;

+ 1 - 1
libc/sysdeps/linux/common/utime.c

@@ -24,7 +24,7 @@ int utime(const char *file, const struct utimbuf *times)
 		timevals[0].tv_sec = (long int) times->actime;
 		timevals[1].tv_sec = (long int) times->modtime;
 	} else {
-		if (gettimeofday(&timevals[0], NULL) < 0) {
+		if (__libc_gettimeofday(&timevals[0], NULL) < 0) {
 			return -1;
 		}
 		timevals[1] = timevals[0];

+ 2 - 2
libpthread/linuxthreads/pthread.c

@@ -889,7 +889,7 @@ __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime)
 	struct timespec reltime;
 
 	/* Compute a time offset relative to now.  */
-	__gettimeofday (&now, NULL);
+	__libc_gettimeofday (&now, NULL);
 	reltime.tv_nsec = abstime->tv_nsec - now.tv_usec * 1000;
 	reltime.tv_sec = abstime->tv_sec - now.tv_sec;
 	if (reltime.tv_nsec < 0) {
@@ -974,7 +974,7 @@ int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstim
 	    struct timespec reltime;
 
 	    /* Compute a time offset relative to now.  */
-	    gettimeofday (&now, NULL);
+	    __libc_gettimeofday (&now, NULL);
 	    reltime.tv_nsec = abstime->tv_nsec - now.tv_usec * 1000;
 	    reltime.tv_sec = abstime->tv_sec - now.tv_sec;
 	    if (reltime.tv_nsec < 0) {

+ 1 - 1
libutil/logout.c

@@ -50,7 +50,7 @@ logout (const char *line)
       memset (ut->ut_host, 0, sizeof ut->ut_host);
 #endif
 #if _HAVE_UT_TV - 0
-      gettimeofday (&ut->ut_tv, NULL);
+      __libc_gettimeofday (&ut->ut_tv, NULL);
 #else
       time (&ut->ut_time);
 #endif

+ 1 - 1
libutil/logwtmp.c

@@ -36,7 +36,7 @@ void logwtmp (const char *line, const char *name, const char *host)
     strncpy(lutmp.ut_line, line, sizeof(lutmp.ut_line)-1);
     strncpy(lutmp.ut_name, name, sizeof(lutmp.ut_name)-1);
     strncpy(lutmp.ut_host, host, sizeof(lutmp.ut_host)-1);
-    gettimeofday(&(lutmp.ut_tv), NULL);
+    __libc_gettimeofday(&(lutmp.ut_tv), NULL);
 
     updwtmp(_PATH_WTMP, &(lutmp));
 }