2002-10-23 Roland McGrath <roland@redhat.com>
authorroland <roland>
Wed, 23 Oct 2002 23:49:21 +0000 (23:49 +0000)
committerroland <roland>
Wed, 23 Oct 2002 23:49:21 +0000 (23:49 +0000)
* login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval,
use a temporary timeval on the stack for gettimeofday and copy it.
* login/logout.c (logout): Likewise.
Reported by Steven Munroe <sjmunroe@us.ibm.com>.

login/logout.c
login/logwtmp.c

index 41c864a..020ff61 100644 (file)
@@ -51,7 +51,15 @@ logout (const char *line)
       bzero (ut->ut_host, sizeof ut->ut_host);
 #endif
 #if _HAVE_UT_TV - 0
-      gettimeofday (&ut->ut_tv, NULL);
+  if (sizeof (ut->ut_tv) == sizeof (struct timeval))
+    __gettimeofday ((struct timeval *) &ut->ut_tv, NULL);
+  else
+    {
+      struct timeval tv;
+      __gettimeofday (&tv, NULL);
+      ut->ut_tv.tv_sec = tv.tv_sec;
+      ut->ut_tv.tv_usec = tv.tv_usec;
+    }
 #else
       ut->ut_time = time (NULL);
 #endif
index 68a8f8f..96ef05d 100644 (file)
@@ -44,7 +44,15 @@ logwtmp (const char *line, const char *name, const char *host)
 #endif
 
 #if _HAVE_UT_TV - 0
-  __gettimeofday (&ut.ut_tv, NULL);
+  if (sizeof (ut.ut_tv) == sizeof (struct timeval))
+    __gettimeofday ((struct timeval *) &ut.ut_tv, NULL);
+  else
+    {
+      struct timeval tv;
+      __gettimeofday (&tv, NULL);
+      ut.ut_tv.tv_sec = tv.tv_sec;
+      ut.ut_tv.tv_usec = tv.tv_usec;
+    }
 #else
   ut.ut_time = time (NULL);
 #endif