svn commit: r235887 - stable/9/usr.bin/lastcomm
Konstantin Belousov
kib at FreeBSD.org
Thu May 24 08:43:11 UTC 2012
Author: kib
Date: Thu May 24 08:43:10 2012
New Revision: 235887
URL: http://svn.freebsd.org/changeset/base/235887
Log:
MFC r235541:
Allow to specify strftime(3) format for process start end exit times.
Modified:
stable/9/usr.bin/lastcomm/lastcomm.1
stable/9/usr.bin/lastcomm/lastcomm.c
Directory Properties:
stable/9/usr.bin/lastcomm/ (props changed)
Modified: stable/9/usr.bin/lastcomm/lastcomm.1
==============================================================================
--- stable/9/usr.bin/lastcomm/lastcomm.1 Thu May 24 08:00:26 2012 (r235886)
+++ stable/9/usr.bin/lastcomm/lastcomm.1 Thu May 24 08:43:10 2012 (r235887)
@@ -28,7 +28,7 @@
.\" From: @(#)lastcomm.1 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd May 14, 2007
+.Dd May 17, 2012
.Dt LASTCOMM 1
.Os
.Sh NAME
@@ -38,6 +38,7 @@
.Nm
.Op Fl EScesu
.Op Fl f Ar file
+.Op Cm + Ns Ar format
.Op Ar command ...\&
.Op Ar user ...\&
.Op Ar terminal ...\&
@@ -77,6 +78,15 @@ is a single dash
reads accounting entries from the standard input.
.El
.Pp
+An operand with a leading plus sign
+.Pq Sq +
+is followed a user-defined format string which specifies the format
+in which to display the process's start or exit date and time.
+The format string may contain any of the conversion specifications
+described in the
+.Xr strftime 3
+manual page, as well as arbitrary text.
+.Pp
If no options are specified,
.Fl cS
is assumed.
@@ -165,6 +175,7 @@ will print details of each terminating c
.Sh SEE ALSO
.Xr last 1 ,
.Xr sigaction 2 ,
+.Xr strftime 3 ,
.Xr acct 5 ,
.Xr core 5
.Sh HISTORY
Modified: stable/9/usr.bin/lastcomm/lastcomm.c
==============================================================================
--- stable/9/usr.bin/lastcomm/lastcomm.c Thu May 24 08:00:26 2012 (r235886)
+++ stable/9/usr.bin/lastcomm/lastcomm.c Thu May 24 08:43:10 2012 (r235887)
@@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include "pathnames.h"
@@ -82,10 +83,12 @@ main(int argc, char *argv[])
int (*readrec)(FILE *f, struct acctv2 *av2);
time_t t;
int ch, rv;
- const char *acctfile;
+ const char *acctfile, *format;
+ char buf[1024];
int flags = 0;
acctfile = _PATH_ACCT;
+ format = NULL;
while ((ch = getopt(argc, argv, "f:usecSE")) != -1)
switch((char)ch) {
case 'f':
@@ -126,6 +129,12 @@ main(int argc, char *argv[])
argc -= optind;
argv += optind;
+ if (argc > 0 && **argv == '+') {
+ format = *argv + 1; /* skip + */
+ argc--;
+ argv++;
+ }
+
if (strcmp(acctfile, "-") == 0) {
fp = stdin;
readrec = readrec_forward;
@@ -177,14 +186,24 @@ main(int argc, char *argv[])
/* starting time */
if (flags & AC_BTIME) {
- (void)printf(" %.16s", ctime(&ab.ac_btime));
+ if (format != NULL) {
+ (void)strftime(buf, sizeof(buf), format,
+ localtime(&ab.ac_btime));
+ (void)printf(" %s", buf);
+ } else
+ (void)printf(" %.16s", ctime(&ab.ac_btime));
}
/* exit time (starting time + elapsed time )*/
if (flags & AC_FTIME) {
t = ab.ac_btime;
t += (time_t)(ab.ac_etime / 1000000);
- (void)printf(" %.16s", ctime(&t));
+ if (format != NULL) {
+ (void)strftime(buf, sizeof(buf), format,
+ localtime(&t));
+ (void)printf(" %s", buf);
+ } else
+ (void)printf(" %.16s", ctime(&t));
}
printf("\n");
}
@@ -250,6 +269,7 @@ static void
usage(void)
{
(void)fprintf(stderr,
-"usage: lastcomm [-EScesu] [-f file] [command ...] [user ...] [terminal ...]\n");
+ "usage: lastcomm [-EScesu] [-f file] [+format] [command ...] "
+ "[user ...] [terminal ...]\n");
exit(1);
}
More information about the svn-src-stable-9
mailing list