--- gnome-libs-1.4.2/zvt/gnome-utmp.c.biarch-utmp 2000-06-20 15:49:14.000000000 -0400 +++ gnome-libs-1.4.2/zvt/gnome-utmp.c 2003-04-08 10:51:41.000000000 -0400 @@ -204,7 +204,7 @@ update_lastlog(char* login_name, UTMP *u lseek (fd, (off_t)pwd->pw_uid * sizeof (ll), SEEK_SET); - time (&ll.ll_time); + ll.ll_time = time (NULL); strncpy (ll.ll_line, ut->ut_line, sizeof (ll.ll_line)); @@ -235,9 +235,17 @@ write_logout_record (void *data, int utm strncpy (put.ut_line, ut->ut_line, sizeof (put.ut_line)); #if defined(HAVE_UT_UT_TV) - gettimeofday ((struct timeval*) &put.ut_tv, NULL); + if (sizeof (put.ut_tv) == sizeof (struct timeval)) + gettimeofday((struct timeval *) &put.ut_tv, NULL); + else + { + struct timeval tv; + gettimeofday(&tv, NULL); + put.ut_tv.tv_sec = tv.tv_sec; + put.ut_tv.tv_usec = tv.tv_usec; + } #elif defined(HAVE_UT_UT_TIME) - time (&put.ut_time); + put.ut_time = time (NULL); #endif if (utmp) @@ -316,9 +324,17 @@ write_login_record (char *login_name, ch #endif /* If structure has ut_tv it doesn't need ut_time */ #if defined(HAVE_UT_UT_TV) - gettimeofday ((struct timeval*) &(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; + } #elif defined(HAVE_UT_UT_TIME) - time (&ut->ut_time); + ut->ut_time = time (NULL); #endif /* ut_ host supposed to be null terminated or len should */ /* be specifid in additional field. We do both :) */