Backout revisions 1.16-1.14.
Backwards compatibility with the new acct(5) format will be implemented through the explicit versioning of acct records, not through an export/import procedure.
This commit is contained in:
parent
5b911044f8
commit
60eb6dce11
@ -32,7 +32,7 @@
|
||||
.\" From: @(#)lastcomm.1 8.1 (Berkeley) 6/6/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd April 18, 2007
|
||||
.Dd May 14, 2007
|
||||
.Dt LASTCOMM 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -40,11 +40,7 @@
|
||||
.Nd show last commands executed
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Oo
|
||||
.Op Fl EScesu
|
||||
|
|
||||
.Op Fl X
|
||||
.Oc
|
||||
.Op Fl f Ar file
|
||||
.Op Ar command ...\&
|
||||
.Op Ar user ...\&
|
||||
@ -72,17 +68,6 @@ Print the amount of elapsed time used by the process.
|
||||
Print the amount of system time used by the process.
|
||||
.It Fl u
|
||||
Print the amount of user time used by the process.
|
||||
.It Fl X
|
||||
Export the complete contents of each accounting record in a text format
|
||||
that can be parsed by programs.
|
||||
The elements are written in the order defined in
|
||||
.Xr acct 5 .
|
||||
Time intervals are printed in seconds using the C
|
||||
.Xr printf 3
|
||||
.Ql %g
|
||||
format specifier,
|
||||
the starting time is printed in seconds since the epoch,
|
||||
and the various identifiers are printed using their symbolic names.
|
||||
.It Fl f Ar file
|
||||
Read from
|
||||
.Ar file
|
||||
|
@ -54,7 +54,6 @@ __FBSDID("$FreeBSD$");
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -69,7 +68,6 @@ char *flagbits(int);
|
||||
const char *getdev(dev_t);
|
||||
int requested(char *[], struct acct *);
|
||||
static void usage(void);
|
||||
static void export_record(struct acct *acp);
|
||||
|
||||
#define AC_UTIME 1 /* user */
|
||||
#define AC_STIME 2 /* system */
|
||||
@ -93,20 +91,17 @@ main(int argc, char *argv[])
|
||||
int ch;
|
||||
const char *acctfile;
|
||||
int flags = 0;
|
||||
bool export_text = false;
|
||||
|
||||
acctfile = _PATH_ACCT;
|
||||
while ((ch = getopt(argc, argv, "f:usecSEX")) != -1)
|
||||
while ((ch = getopt(argc, argv, "f:usecSE")) != -1)
|
||||
switch((char)ch) {
|
||||
case 'f':
|
||||
acctfile = optarg;
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
flags |= AC_UTIME; /* user time */
|
||||
break;
|
||||
case 'X':
|
||||
export_text = true; /* export */
|
||||
break;
|
||||
case 's':
|
||||
flags |= AC_STIME; /* system time */
|
||||
break;
|
||||
@ -131,11 +126,9 @@ main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* default user + system time and starting time */
|
||||
if (!flags && !export_text)
|
||||
if (!flags) {
|
||||
flags = AC_CTIME | AC_BTIME;
|
||||
|
||||
if (flags && export_text)
|
||||
usage();
|
||||
}
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
@ -163,7 +156,7 @@ main(int argc, char *argv[])
|
||||
do {
|
||||
int rv;
|
||||
|
||||
if (fp != stdin && !export_text) {
|
||||
if (fp != stdin) {
|
||||
size -= sizeof(struct acct);
|
||||
if (fseeko(fp, size, SEEK_SET) == -1)
|
||||
err(1, "seek %s failed", acctfile);
|
||||
@ -187,11 +180,6 @@ main(int argc, char *argv[])
|
||||
if (*argv && !requested(argv, &ab))
|
||||
continue;
|
||||
|
||||
if (export_text) {
|
||||
export_record(&ab);
|
||||
continue;
|
||||
}
|
||||
|
||||
(void)printf("%-*.*s %-7s %-*s %-*s",
|
||||
AC_COMM_LEN, AC_COMM_LEN, ab.ac_comm,
|
||||
flagbits(ab.ac_flag),
|
||||
@ -235,7 +223,6 @@ main(int argc, char *argv[])
|
||||
printf("\n");
|
||||
|
||||
} while (size > 0);
|
||||
|
||||
if (fflush(stdout))
|
||||
err(1, "stdout");
|
||||
exit(0);
|
||||
@ -309,30 +296,6 @@ static void
|
||||
usage(void)
|
||||
{
|
||||
(void)fprintf(stderr,
|
||||
"usage: lastcomm [[-EScesu] | [-X]] [-f file] [command ...] [user ...] [terminal ...]\n");
|
||||
"usage: lastcomm [-EScesu] [-f file] [command ...] [user ...] [terminal ...]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void
|
||||
export_record(struct acct *acp)
|
||||
{
|
||||
(void)printf("%s %g %g %g",
|
||||
acp->ac_comm,
|
||||
expand(acp->ac_utime) / AC_HZ,
|
||||
expand(acp->ac_stime) / AC_HZ,
|
||||
expand(acp->ac_etime) / AC_HZ);
|
||||
|
||||
/* See if time_t is signed and use appropriate format. */
|
||||
if ((time_t)-1 < 0)
|
||||
(void)printf(" %ld", (long)(acp->ac_btime));
|
||||
else
|
||||
(void)printf(" %lu", (unsigned long)(acp->ac_btime));
|
||||
|
||||
(void)printf(" %s %s %d %g %s %s\n",
|
||||
user_from_uid(acp->ac_uid, 0),
|
||||
group_from_gid(acp->ac_gid, 0),
|
||||
acp->ac_mem,
|
||||
expand(acp->ac_io) / AC_HZ,
|
||||
getdev(acp->ac_tty),
|
||||
flagbits(acp->ac_flag));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user