summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarmelo Amoroso <carmelo.amoroso@st.com>2010-11-28 20:44:21 +0100
committerCarmelo Amoroso <carmelo.amoroso@st.com>2010-11-28 20:50:38 +0100
commit5dea871ac73ef4608022c058b50adc946917f9b9 (patch)
treef93f49010cc7de4f626b1b4d5e2110b74acd92e3
parenta11fcabb4a6a1a384363329ebdb3569a1df246f8 (diff)
libc_utmp: Fix getutmp and getutmpx for x86_64
On x86_64, when WORDSIZE_COMPAT32 is enabled, the ut_tv field of 'struct utmp' and 'struct utmpx' are defined as two nested structs instead of being defined as 'struct timeval', so it is not possible to directly assign the two ut_tv values. This patch split the assignment by setting each fields (tv_sec, tv_usec) of the ut_tv filed separately It is als compatible with 'struct timeval' usage. Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
-rw-r--r--libc/misc/utmp/utxent.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libc/misc/utmp/utxent.c b/libc/misc/utmp/utxent.c
index 3c59f1c48..a0e80a662 100644
--- a/libc/misc/utmp/utxent.c
+++ b/libc/misc/utmp/utxent.c
@@ -71,7 +71,8 @@ void getutmp (const struct utmpx *utmpx, struct utmp *utmp)
memcpy (utmp->ut_host, utmpx->ut_host, sizeof (utmp->ut_host));
#endif
#if _HAVE_UT_TV - 0
- utmp->ut_tv = utmpx->ut_tv;
+ utmp->ut_tv.tv_sec = utmpx->ut_tv.tv_sec;
+ utmp->ut_tv.tv_usec = utmpx->ut_tv.tv_usec;
#else
utmp->ut_time = utmpx->ut_time;
#endif
@@ -97,7 +98,8 @@ void getutmpx (const struct utmp *utmp, struct utmpx *utmpx)
memcpy (utmpx->ut_host, utmp->ut_host, sizeof (utmp->ut_host));
#endif
#if _HAVE_UT_TV - 0
- utmpx->ut_tv = utmp->ut_tv;
+ utmpx->ut_tv.tv_sec = utmp->ut_tv.tv_sec;
+ utmpx->ut_tv.tv_usec = utmp->ut_tv.tv_usec;
#else
utmpx->ut_time = utmp->ut_time;
#endif