summaryrefslogtreecommitdiff
path: root/login-utils
diff options
context:
space:
mode:
authorMarek Polacek <mmpolacek@gmail.com>2010-12-01 17:18:11 +0100
committerKarel Zak <kzak@redhat.com>2010-12-10 13:18:12 +0100
commitdb797f24f19196d29809ad457d252379b3705fb3 (patch)
treeaf6a9afc7c5e7a5bd9f6c1766b31a5ab718271d6 /login-utils
parent3851ebe8f8ab5434c2f745cc462ce1477dd9f556 (diff)
downloadutil-linux-old-db797f24f19196d29809ad457d252379b3705fb3.tar.gz
last: Use EXIT_* and err()
Signed-off-by: Marek Polacek <mmpolacek@gmail.com>
Diffstat (limited to 'login-utils')
-rw-r--r--login-utils/last.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/login-utils/last.c b/login-utils/last.c
index 293a0fd6..de733cd5 100644
--- a/login-utils/last.c
+++ b/login-utils/last.c
@@ -29,6 +29,7 @@
/*
* last
*/
+#include <err.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/file.h>
@@ -147,7 +148,7 @@ main(int argc, char **argv) {
case '?':
default:
fputs(_("usage: last [-#] [-f file] [-t tty] [-h hostname] [user ...]\n"), stderr);
- exit(1);
+ exit(EXIT_FAILURE);
}
for (argv += optind; *argv; ++argv) {
#define COMPATIBILITY
@@ -158,7 +159,8 @@ main(int argc, char **argv) {
addarg(USER_TYPE, *argv);
}
wtmp();
- exit(0);
+
+ return EXIT_SUCCESS;
}
static char *utmp_ctime(struct utmp *u)
@@ -235,13 +237,15 @@ wtmp(void) {
(void)signal(SIGQUIT, onintr);
if ((fd = open(file,O_RDONLY)) < 0)
- exit(1);
+ err(EXIT_FAILURE, _("%s: open failed"), file);
+
fstat(fd, &st);
utl_len = st.st_size;
utl = mmap(NULL, utl_len, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FILE, fd, 0);
if (utl == NULL)
- exit(1);
+ err(EXIT_FAILURE, _("%s: mmap failed"), file);
+
listnr = utl_len/sizeof(struct utmp);
if(listnr)
@@ -345,28 +349,28 @@ want(struct utmp *bp, int check) {
bp->ut_line[4] = '\0';
}
if (!arglist)
- return(YES);
+ return YES;
for (step = arglist; step; step = step->next)
switch(step->type) {
case HOST_TYPE:
if (!strncmp(step->name, bp->ut_host, HMAX))
- return(YES);
+ return YES;
break;
case TTY_TYPE:
if (!strncmp(step->name, bp->ut_line, LMAX))
- return(YES);
+ return YES;
break;
case USER_TYPE:
if (!strncmp(step->name, bp->ut_name, NMAX))
- return(YES);
+ return YES;
break;
case INET_TYPE:
if (bp->ut_addr == inet_addr(step->name))
- return(YES);
+ return YES;
break;
}
- return(NO);
+ return NO;
}
/*
@@ -416,10 +420,9 @@ hostconv(char *arg) {
return;
if (first) {
first = 0;
- if (gethostname(name, sizeof(name))) {
- perror(_("last: gethostname"));
- exit(1);
- }
+ if (gethostname(name, sizeof(name)))
+ err(EXIT_FAILURE, _("gethostname failed"));
+
hostdot = strchr(name, '.');
}
if (hostdot && !strcmp(hostdot, argdot))
@@ -447,11 +450,12 @@ ttyconv(char *arg) {
(void)strcpy(mval, "tty");
(void)strcpy(mval + 3, arg);
}
- return(mval);
+ return mval;
}
if (!strncmp(arg, "/dev/", sizeof("/dev/") - 1))
- return(arg + 5);
- return(arg);
+ return arg + 5;
+
+ return arg;
}
/*
@@ -465,6 +469,6 @@ onintr(int signo) {
ct = utmp_ctime(&utmpbuf);
printf(_("\ninterrupted %10.10s %5.5s \n"), ct, ct + 11);
if (signo == SIGINT)
- _exit(1);
- (void)fflush(stdout); /* fix required for rsh */
+ _exit(EXIT_FAILURE);
+ fflush(stdout); /* fix required for rsh */
}