From 6841d8b90de92a06227b9b441f439be49cf82e3c Mon Sep 17 00:00:00 2001 From: Bill Fenner Date: Mon, 27 Jan 2003 18:16:32 +0000 Subject: [PATCH] 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" --- usr.bin/lastcomm/lastcomm.c | 15 ++++++++------- 1 file 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 #include "pathnames.h" +/*XXX*/#include + 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); }