diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-10-02 21:03:48 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-10-02 21:03:48 +0000 |
commit | 4c98451b0e9ec94943c4908d83d76a6d1d6a90ac (patch) | |
tree | 139718efddbb199cfb7b929e78200a8b910abb96 /login | |
parent | 8e917ed8213804cf92e3b259a73b6c05c6f614ed (diff) | |
download | glibc-4c98451b0e9ec94943c4908d83d76a6d1d6a90ac.tar.gz |
Update.
2002-10-02 Steven Munroe <sjmunroe@us.ibm.com>
Jakub Jelinek <jakub@redhat.com>
* login/programs/utmpdump.c (print_entry): Copy up->ut_tv fields
to struct timeval temp_tv before printing to be 32-/64-bit agnostic.
* sysdeps/powerpc/bits/wordsize.h: Move to...
* sysdeps/powerpc/powerpc32/bits/wordsize.h: ...here.
(__WORDSIZE_COMPAT32): Define.
* sysdeps/powerpc/powerpc64/bits/wordsize.h: Likewise.
* sysdeps/sparc/sparc32/bits/wordsize.h (__WORDSIZE_COMPAT32):
Define.
* sysdeps/sparc/sparc64/bits/wordsize.h (__WORDSIZE_COMPAT32):
Define.
* sysdeps/s390/bits/wordsize.h: Move to...
* sysdeps/s390/s390-32/bits/wordsize.h: ...here.
* sysdeps/s390/s390-64/bits/wordsize.h: Likewise.
* sysdeps/x86_64/bits/wordsize.h (__WORDSIZE_COMPAT32): Define.
* sysdeps/unix/sysv/linux/powerpc/bits/utmp.h: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/utmpx.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/utmp.h: New file.
* sysdeps/unix/sysv/linux/sparc/bits/utmpx.h: New file.
* sysdeps/unix/sysv/linux/x86_64/bits/utmp.h: New file.
* sysdeps/unix/sysv/linux/x86_64/bits/utmpx.h: New file.
Diffstat (limited to 'login')
-rw-r--r-- | login/programs/utmpdump.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/login/programs/utmpdump.c b/login/programs/utmpdump.c index d1b5da235c..225b67a265 100644 --- a/login/programs/utmpdump.c +++ b/login/programs/utmpdump.c @@ -27,6 +27,17 @@ static void print_entry (struct utmp *up) { + /* Mixed 32-/64-bit systems may have timeval structs of different sixe + but need struct utmp to be the same size. So in 64-bit up->ut_tv may + not be a timeval but a struct of __int32_t's. This would cause a compile + time warning and a formating error when 32-bit int is passed where + a 64-bit long is expected. So copy up->up_tv to a temporary timeval. + This is 32-/64-bit agnostic and expands the timeval fields to the + expected size as needed. */ + struct timeval temp_tv; + temp_tv.tv_sec = up->ut_tv.tv_sec; + temp_tv.tv_usec = up->ut_tv.tv_usec; + (printf) ( /* The format string. */ #if _HAVE_UT_TYPE @@ -62,8 +73,8 @@ print_entry (struct utmp *up) , up->ut_host #endif #if _HAVE_UT_TV - , 4 + ctime (&up->ut_tv.tv_sec) - , up->ut_tv.tv_usec + , 4 + ctime (&temp_tv.tv_sec) + , temp_tv.tv_usec #else , 4 + ctime (&up->ut_time) #endif |