svn commit: r285742 - head/usr.bin/last

Ed Schouten ed at FreeBSD.org
Tue Jul 21 10:52:07 UTC 2015


Author: ed
Date: Tue Jul 21 10:52:05 2015
New Revision: 285742
URL: https://svnweb.freebsd.org/changeset/base/285742

Log:
  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

Modified:
  head/usr.bin/last/last.c

Modified: head/usr.bin/last/last.c
==============================================================================
--- head/usr.bin/last/last.c	Tue Jul 21 09:57:13 2015	(r285741)
+++ head/usr.bin/last/last.c	Tue Jul 21 10:52:05 2015	(r285742)
@@ -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);


More information about the svn-src-all mailing list