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.
This commit is contained in:
John Baldwin 2017-06-10 01:20:08 +00:00
parent dd0c462cf5
commit 30b94d0cf4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=319765

View file

@ -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