ash,hush: optional support for $HISTFILESIZE.
[oweals/busybox.git] / miscutils / last_fancy.c
index 0dba9dca71ac6566281d169b1f01d5a3733c7b00..7e61b7691e38050e2869554786096e2cc1c63b6a 100644 (file)
@@ -4,11 +4,13 @@
  *
  * Copyright (C) 2008 by Patricia Muscalu <patricia.muscalu@axis.com>
  *
- * Licensed under the GPLv2 or later, see the file LICENSE in this tarball.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
 #include "libbb.h"
-#include <utmp.h>
+
+/* NB: ut_name and ut_user are the same field, use only one name (ut_user)
+ * to reduce confusion */
 
 #ifndef SHUTDOWN_TIME
 #  define SHUTDOWN_TIME 254
@@ -45,8 +47,12 @@ static void show_entry(struct utmp *ut, int state, time_t dur_secs)
        char logout_time[8];
        const char *logout_str;
        const char *duration_str;
+       time_t tmp;
 
-       safe_strncpy(login_time, ctime(&(ut->ut_tv.tv_sec)), 17);
+       /* manpages say ut_tv.tv_sec *is* time_t,
+        * but some systems have it wrong */
+       tmp = ut->ut_tv.tv_sec;
+       safe_strncpy(login_time, ctime(&tmp), 17);
        snprintf(logout_time, 8, "- %s", ctime(&dur_secs) + 11);
 
        dur_secs = MAX(dur_secs - (time_t)ut->ut_tv.tv_sec, (time_t)0);
@@ -145,7 +151,7 @@ static int is_runlevel_shutdown(struct utmp *ut)
 }
 
 int last_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int last_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int last_main(int argc UNUSED_PARAM, char **argv)
 {
        struct utmp ut;
        const char *filename = _PATH_WTMP;