]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
last: use --time-format instruction when printing wtmp creation time
authorSami Kerola <kerolasa@iki.fi>
Mon, 16 Jan 2017 22:31:36 +0000 (22:31 +0000)
committerSami Kerola <kerolasa@iki.fi>
Mon, 16 Jan 2017 22:31:36 +0000 (22:31 +0000)
This makes --time-format=iso timestamp to look the same as login/logout
times.  When --time-format=noformat is used the file creation time not
printed.  There is no change to default format.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
login-utils/last.c
tests/expected/utmp/last-nodns

index 7c243f1473e2a1e5afc13ea04f0fd16afa15c408..5ebd5e2ba9d062a1df72c0bd38f666031c030185 100644 (file)
@@ -345,7 +345,8 @@ static int time_formatter(int fmt, char *dst, size_t dlen, time_t *when)
                break;
        }
        case LAST_TIMEFTM_CTIME:
-               ret = snprintf(dst, dlen, "%s", ctime(when));
+               snprintf(dst, dlen, "%s", ctime(when));
+               ret = rtrim_whitespace((unsigned char *) dst);
                break;
        case LAST_TIMEFTM_ISO8601:
                ret = strtime_iso(when, ISO_8601_DATE|ISO_8601_TIME|ISO_8601_TIMEZONE, dst, dlen);
@@ -874,11 +875,19 @@ static void process_wtmp_file(const struct last_control *ctl,
                }
        }
 
-       {
-               char* tmp = xstrdup(filename);
-               printf(_("\n%s begins %s"), basename(tmp), ctime(&begintime));
+       if (ctl->time_fmt != LAST_TIMEFTM_NONE) {
+               struct last_timefmt *fmt;
+               char timestr[LAST_TIMESTAMP_LEN];
+               char *tmp = xstrdup(filename);
+
+               fmt = &timefmts[ctl->time_fmt];
+               if (time_formatter(fmt->in_fmt, timestr,
+                                  sizeof(timestr), &begintime) < 0)
+                       errx(EXIT_FAILURE, _("preallocation size exceeded"));
+               printf(_("\n%s begins %s\n"), basename(tmp), timestr);
                free(tmp);
        }
+
        fclose(fp);
 
        for (p = ulist; p; p = next) {
index cb7cfde09b73c6f65178e0cb2b412c31e27d01c2..e92366266f5a6ac21e5efb13b9329adb6b906695 100644 (file)
@@ -91,8 +91,6 @@ init     foo          five                (01:00)
 login    foo          six                 (01:00)
 user_pro foo          seven               (01:00)
 accounti foo          nine                (01:00)
-
-wtmp-a begins Wed Aug 28 03:00:00 2013
 ~~~ iso-8601 time ~~~
 rick     long         never-gonna-logout 1970-01-01T00:00:00+0000 - 2038-01-19T03:14:07+0000 (24855+03:14)
 torvalds linux        hobby            1991-08-26T00:57:08+0000   gone - no logout
@@ -109,7 +107,7 @@ login    foo          six              2013-08-28T06:00:00+0000 - 2013-08-28T07:
 user_process foo          seven            2013-08-28T05:00:00+0000 - 2013-08-28T06:00:00+0000  (01:00)
 accounting foo          nine             2013-08-28T03:00:00+0000 - 2013-08-28T04:00:00+0000  (01:00)
 
-wtmp-a begins Wed Aug 28 03:00:00 2013
+wtmp-a begins 2013-08-28T03:00:00+0000
 ~~~ since and until ~~~
 oldtime  foo          four             Wed Aug 28 08:00    gone - no logout
 init     foo          five             Wed Aug 28 07:00 - 08:00  (01:00)