about summary refs log tree commit diff
path: root/sysdeps/generic/getutmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/generic/getutmp.c')
-rw-r--r--sysdeps/generic/getutmp.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/sysdeps/generic/getutmp.c b/sysdeps/generic/getutmp.c
index 317a886752..0d3bf05bd8 100644
--- a/sysdeps/generic/getutmp.c
+++ b/sysdeps/generic/getutmp.c
@@ -16,25 +16,31 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#include <string.h>
 #include <utmp.h>
 #include <utmpx.h>
 
+/* Copy the information in UTMPX to UTMP. */
 void
 getutmp (const struct utmpx *utmpx, struct utmp *utmp)
 {
+#if _HAVE_UT_TYPE - 0
   utmp->ut_type = utmpx->ut_type;
+#endif
+#if _HAVE_UT_PID - 0
   utmp->ut_pid = utmpx->ut_pid;
+#endif
   memcpy (utmp->ut_line, utmpx->ut_line, sizeof (utmp->ut_line));
-  memcpy (utmp->ut_id, utmpx->ut_id, sizeof (utmp->ut_id));
   memcpy (utmp->ut_user, utmpx->ut_user, sizeof (utmp->ut_user));
+#if _HAVE_UT_ID - 0
+  memcpy (utmp->ut_id, utmpx->ut_id, sizeof (utmp->ut_id));
+#endif
+#if _HAVE_UT_HOST - 0
   memcpy (utmp->ut_host, utmpx->ut_host, sizeof (utmp->ut_host));
-#ifdef _GNU_SOURCE
-  utmp->ut_exit.e_termination = utmpx->ut_exit.e_termination;
-  utmp->ut_exit.e_exit = utmpx->ut_exit.e_exit;
-#else
-  utmp->ut_exit.__e_termination = utmpx->ut_exit.e_termination;
-  utmp->ut_exit.__e_exit = utmpx->ut_exit.e_exit;
 #endif
-  utmp->ut_session = utmpx->ut_session;
+#if _HAVE_UT_TV - 0
   utmp->ut_tv = utmpx->ut_tv;
+#else
+  utmp->ut_time = utmpx->ut_time;
+#endif
 }