From: Jim Meyering Date: Sun, 20 Oct 1996 19:14:37 +0000 (+0000) Subject: (print_entry): Don't take address of UT_TIME_MEMBER directly. X-Git-Tag: TEXTUTILS-1_19o~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac22b4589d51db1982b2c29b3f754a4a0be7ba58;p=thirdparty%2Fcoreutils.git (print_entry): Don't take address of UT_TIME_MEMBER directly. From Ulrich Drepper. --- diff --git a/src/who-users.c b/src/who-users.c index 90ae36b8e5..feb13fe16c 100644 --- a/src/who-users.c +++ b/src/who-users.c @@ -302,6 +302,7 @@ print_entry (STRUCT_UTMP *this) #define DEV_DIR_LEN (sizeof (DEV_DIR_WITH_TRAILING_SLASH) - 1) char line[sizeof (this->ut_line) + DEV_DIR_LEN + 1]; + time_t tm; /* Copy ut_line into LINE, prepending `/dev/' if ut_line is not already an absolute pathname. Some system may put the full, @@ -333,7 +334,15 @@ print_entry (STRUCT_UTMP *this) if (include_mesg) printf (" %c ", mesg); printf (" %-8.*s", (int) sizeof (this->ut_line), this->ut_line); - printf (" %-12.12s", ctime (&UT_TIME_MEMBER (this)) + 4); + + /* Don't take the address of UT_TIME_MEMBER directly. + Ulrich Drepper wrote: + ``... GNU libc (and perhaps other libcs as well) have extended + utmp file formats which do not use a simple time_t ut_time field. + In glibc, ut_time is a macro which selects for backward compatibility + the tv_sec member of a struct timeval value.'' */ + tm = UT_TIME_MEMBER (this); + printf (" %-12.12s", ctime (&tm) + 4); if (include_idle) {