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
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to