Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Jun 2017 01:20:08 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r319765 - head/lib/libsysdecode
Message-ID:  <201706100120.v5A1K8A7085081@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Sat Jun 10 01:20:08 2017
New Revision: 319765
URL: https://svnweb.freebsd.org/changeset/base/319765

Log:
  Improve decoding of RB_AUTOBOOT in the 'howto' argument to reboot().
  
  The reboot() system call accepts a mode (RB_AUTOBOOT, RB_HALT, RB_POWEROFF,
  or RB_REROOT) as well as zero or more optional flags in 'howto'.
  However, RB_AUTOBOOT was only displayed if 'howto' was exactly 0.
  Combinations like 'RB_AUTOBOOT | RB_DUMP' were decoded as 'RB_DUMP'.
  Instead, imply that RB_AUTOBOOT was specified if none of the other "mode"
  flags were specified.

Modified:
  head/lib/libsysdecode/flags.c

Modified: head/lib/libsysdecode/flags.c
==============================================================================
--- head/lib/libsysdecode/flags.c	Sat Jun 10 00:53:00 2017	(r319764)
+++ head/lib/libsysdecode/flags.c	Sat Jun 10 01:20:08 2017	(r319765)
@@ -634,8 +634,19 @@ sysdecode_quotactl_cmd(FILE *fp, int cmd)
 bool
 sysdecode_reboot_howto(FILE *fp, int howto, int *rem)
 {
+	bool printed;
 
-	return (print_mask_int(fp, rebootopt, howto, rem));
+	/*
+	 * RB_AUTOBOOT is special in that its value is zero, but it is
+	 * also an implied argument if a different operation is not
+	 * requested via RB_HALT, RB_POWEROFF, or RB_REROOT.
+	 */
+	if (howto != 0 && (howto & (RB_HALT | RB_POWEROFF | RB_REROOT)) == 0) {
+		fputs("RB_AUTOBOOT|", fp);
+		printed = true;
+	} else
+		printed = false;
+	return (print_mask_int(fp, rebootopt, howto, rem) || printed);
 }
 
 bool



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706100120.v5A1K8A7085081>