/*
* last
*/
+#include <err.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/file.h>
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
addarg(USER_TYPE, *argv);
}
wtmp();
- exit(0);
+
+ return EXIT_SUCCESS;
}
static char *utmp_ctime(struct utmp *u)
(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)
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;
}
/*
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))
(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;
}
/*
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 */
}