diff options
author | Bill Fenner <fenner@FreeBSD.org> | 2003-01-27 18:16:32 +0000 |
---|---|---|
committer | Bill Fenner <fenner@FreeBSD.org> | 2003-01-27 18:16:32 +0000 |
commit | 6841d8b90de92a06227b9b441f439be49cf82e3c (patch) | |
tree | 5781132d52c7bb17b50f3a39e59b3ea07cfc931d /usr.bin/lastcomm | |
parent | 58b8fa741262ecf579fcf33f9b1eae337cc84db9 (diff) | |
download | src-6841d8b90de92a06227b9b441f439be49cf82e3c.tar.gz src-6841d8b90de92a06227b9b441f439be49cf82e3c.zip |
Don't try to fseek before the beginning of the file; POSIX requires that
this return an error.
This re-enables display of the first entry in /var/account/acct instead
of the error "lastcomm: /var/account/acct: Invalid argument"
Notes
Notes:
svn path=/head/; revision=109943
Diffstat (limited to 'usr.bin/lastcomm')
-rw-r--r-- | usr.bin/lastcomm/lastcomm.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/usr.bin/lastcomm/lastcomm.c b/usr.bin/lastcomm/lastcomm.c index dc47eb1bfee6..ab67a2c0bc3f 100644 --- a/usr.bin/lastcomm/lastcomm.c +++ b/usr.bin/lastcomm/lastcomm.c @@ -60,6 +60,8 @@ __FBSDID("$FreeBSD$"); #include <utmp.h> #include "pathnames.h" +/*XXX*/#include <inttypes.h> + time_t expand(u_int); char *flagbits(int); const char *getdev(dev_t); @@ -156,13 +158,6 @@ main(int argc, char *argv[]) if (fread(&ab, sizeof(struct acct), 1, fp) != 1) err(1, "%s", acctfile); - if (fseek(fp, 2 * -(long)sizeof(struct acct), SEEK_CUR) == -1) - err(1, "%s", acctfile); - - if (size == 0) - break; - size -= sizeof(struct acct); - if (ab.ac_comm[0] == '\0') { ab.ac_comm[0] = '?'; ab.ac_comm[1] = '\0'; @@ -215,6 +210,12 @@ main(int argc, char *argv[]) (void)printf(" %.16s", ctime(&t)); } printf("\n"); + + if (size == 0) + break; + size -= sizeof(struct acct); + if (fseek(fp, 2 * -(long)sizeof(struct acct), SEEK_CUR) == -1) + err(1, "%s", acctfile); } exit(0); } |