Unbreak "last reboot".

According to the last(1) man page, the "reboot" pseudo-user should print
all system reboot entries. This got broken by the utmpx import, as
records are typed.

Re-add support for "last reboot" by specifically matching against
SHUTDOWN_TIME and BOOT_TIME records.

PR:		168844
Submitted by:	matthew@
MFC after:	1 month
This commit is contained in:
ed 2015-07-21 10:52:05 +00:00
parent 4ece29fe27
commit b875818639

View File

@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$");
typedef struct arg {
char *name; /* argument */
#define REBOOT_TYPE -1
#define HOST_TYPE -2
#define TTY_TYPE -3
#define USER_TYPE -4
@ -180,6 +181,8 @@ main(int argc, char *argv[])
if (argc) {
setlinebuf(stdout);
for (argv += optind; *argv; ++argv) {
if (strcmp(*argv, "reboot") == 0)
addarg(REBOOT_TYPE, *argv);
#define COMPATIBILITY
#ifdef COMPATIBILITY
/* code to allow "last p5" to work */
@ -389,6 +392,11 @@ want(struct utmpx *bp)
for (step = arglist; step; step = step->next)
switch(step->type) {
case REBOOT_TYPE:
if (bp->ut_type == BOOT_TIME ||
bp->ut_type == SHUTDOWN_TIME)
return (YES);
break;
case HOST_TYPE:
if (!strcasecmp(step->name, bp->ut_host))
return (YES);