From owner-freebsd-audit Fri Jan 11 17:50: 5 2002 Delivered-To: freebsd-audit@freebsd.org Received: from mailsrv.otenet.gr (mailsrv.otenet.gr [195.170.0.5]) by hub.freebsd.org (Postfix) with ESMTP id 3050937B400 for ; Fri, 11 Jan 2002 17:49:54 -0800 (PST) Received: from hades.hell.gr (patr530-a152.otenet.gr [212.205.215.152]) by mailsrv.otenet.gr (8.11.5/8.11.5) with ESMTP id g0C1npO10597 for ; Sat, 12 Jan 2002 03:49:51 +0200 (EET) Received: (from charon@localhost) by hades.hell.gr (8.11.6/8.11.6) id g0BNQWc66732 for audit@freebsd.org; Sat, 12 Jan 2002 01:26:32 +0200 (EET) (envelope-from keramida@ceid.upatras.gr) Date: Sat, 12 Jan 2002 01:26:31 +0200 From: Giorgos Keramidas To: audit@FreeBSD.org Subject: last with -y option Message-ID: <20020111232631.GA66629@hades.hell.gr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="8GpibOaaTibBMecb" Content-Disposition: inline User-Agent: Mutt/1.3.25i Sender: owner-freebsd-audit@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --8GpibOaaTibBMecb Content-Type: text/plain; charset=us-ascii Content-Disposition: inline The patch that was sent in PR bin/12982 does not apply to the usr.bin/last (probably because our last was modified for WARNS=2 after the patch was submitted), but I liked the idea that it describes. The attached patch adds a -y option to last that will print the year too when listing wtmp records. It also removes a few EOL whitespaces that I found while reading the last.c source. If this does not break any standards, and you don't think that it breaks last(1) in some way, I'll have to find myself an src/ committer to take care of this PR :-) Cheers, -- Giorgos Keramidas . . . . . . . . . keramida@{ceid.upatras.gr,freebsd.org} FreeBSD Documentation Project . . . http://www.freebsd.org/docproj/ FreeBSD: The power to serve . . . . http://www.freebsd.org/ --8GpibOaaTibBMecb Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="28.last-y.diff" Content-Transfer-Encoding: quoted-printable Index: last.1 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /home/ncvs/src/usr.bin/last/last.1,v retrieving revision 1.11 diff -u -2 -r1.11 last.1 --- last.1 10 Jul 2001 14:16:03 -0000 1.11 +++ last.1 9 Dec 2001 01:52:36 -0000 @@ -56,4 +56,5 @@ .Op Fl t Ar tty .Op Fl w +.Op Fl y .Op Ar user ... .Sh DESCRIPTION @@ -162,4 +163,6 @@ Widen the duration field to show seconds, as well as the default days, hours and minutes. +.It Fl w +Report years too in the login session duration. .El .Pp Index: last.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /home/ncvs/src/usr.bin/last/last.c,v retrieving revision 1.21 diff -u -2 -r1.21 last.c --- last.c 29 Oct 2001 00:34:20 -0000 1.21 +++ last.c 11 Jan 2002 23:15:48 -0000 @@ -90,4 +90,5 @@ static int sflag =3D 0; /* show delta in seconds */ static int width =3D 5; /* show seconds in delta */ +static int yflag =3D 0; /* show years in delta */ static int d_first; static time_t snaptime; /* if !=3D 0, we will only @@ -110,5 +111,5 @@ (void)fprintf(stderr, "usage: last [-#] [-d [[CC]YY][MMDD]hhmm[.SS]] [-f file] [-h hostname]\n" -"\t[-t tty] [-s|w] [user ...]\n"); +"\t[-t tty] [-s|w] [-y] [user ...]\n"); exit(1); } @@ -127,5 +128,5 @@ maxrec =3D -1; snaptime =3D 0; - while ((ch =3D getopt(argc, argv, "0123456789d:f:h:st:w")) !=3D -1) + while ((ch =3D getopt(argc, argv, "0123456789d:f:h:st:wy")) !=3D -1) switch (ch) { case '0': case '1': case '2': case '3': case '4': @@ -164,4 +165,7 @@ width =3D 8; break; + case 'y': + yflag =3D 1; + break; case '?': default: @@ -246,13 +250,22 @@ /* * don't print shutdown/reboot entries - * unless flagged for=20 - */=20 + * unless flagged for + */ if (!snaptime && want(bp)) { t =3D int_to_time(bp->ut_time); tm =3D localtime(&t); - (void) strftime(ct, sizeof(ct), - d_first ? "%a %e %b %R" : - "%a %b %e %R", - tm); + if (yflag) { + (void) strftime(ct, sizeof(ct), + d_first + ? "%a %e %b %Y %R" + : "%a %b %e %Y %R", + tm); + } else { + (void) strftime(ct, sizeof(ct), + d_first + ? "%a %e %b %Y %R" + : "%a %b %e %Y %R", + tm); + } printf("%-*.*s %-*.*s %-*.*s %s\n", UT_NAMESIZE, UT_NAMESIZE, @@ -275,8 +288,17 @@ t =3D int_to_time(bp->ut_time); tm =3D localtime(&t); - (void) strftime(ct, sizeof(ct), - d_first ? "%a %e %b %R" : - "%a %b %e %R", - tm); + if (yflag) { + (void) strftime(ct, sizeof(ct), + d_first + ? "%a %e %b %Y %R" + : "%a %b %e %Y %R", + tm); + } else { + (void) strftime(ct, sizeof(ct), + d_first + ? "%a %e %b %R" + : "%a %b %e %R", + tm); + } printf("%-*.*s %-*.*s %-*.*s %s\n", UT_NAMESIZE, UT_NAMESIZE, bp->ut_name, @@ -293,5 +315,5 @@ if (!strncmp(tt->tty, bp->ut_line, UT_LINESIZE)) break; - =09 + if (tt =3D=3D NULL) { /* add new one */ @@ -303,5 +325,5 @@ LIST_INSERT_HEAD(&ttylist, tt, list); } - =09 + /* * print record if not in snapshot mode and wanted @@ -323,8 +345,15 @@ t =3D int_to_time(bp->ut_time); tm =3D localtime(&t); - (void) strftime(ct, sizeof(ct), - d_first ? "%a %e %b %R" : - "%a %b %e %R", - tm); + if (yflag) { + (void) strftime(ct, sizeof(ct), + d_first ? "%a %e %b %Y %R" : + "%a %b %e %Y %R", + tm); + } else { + (void) strftime(ct, sizeof(ct), + d_first ? "%a %e %b %R" : + "%a %b %e %R", + tm); + } printf("%-*.*s %-*.*s %-*.*s %s ", UT_NAMESIZE, UT_NAMESIZE, bp->ut_name, @@ -346,5 +375,5 @@ delta =3D tt->logout - bp->ut_time; if ( sflag ) { - printf(" (%8ld)\n",=20 + printf(" (%8ld)\n", (long)delta); } else { --8GpibOaaTibBMecb-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-audit" in the body of the message