other inits have moved to not requiring the -h flag when used with -H/-P. modify sysvinit to be the same since it really doesn't matter. https://bugs.gentoo.org/449354 patch by Doug Goldstein --- man/shutdown.8 | 8 +++----- src/shutdown.c | 12 ++++-------- 2 files changed, 7 insertions(+), 13 deletions(-) --- sysvinit-2.92/man/shutdown.8 +++ sysvinit-2.92/man/shutdown.8 @@ -66,17 +66,15 @@ .\"}}} .\"{{{ -h .IP \fB\-h\fP -Halt or power off after shutdown. +Equivalent to -P, unless -H is specified. .\"}}} .\"{{{ -P .IP \fB\-P\fP -Modifier to the -h flag. Halt action is to turn off the power. -Must be used with the -h flag. +Action is to turn off the power. .\"}}} .\"{{{ -H .IP \fB\-H\fP -Modifier to the -h flag. Halt action is to halt or drop into boot -monitor on systems that support it. Must be used with the -h flag. +Action is to halt or drop into boot monitor on systems that support it. .\"}}} .\"{{{ -f .IP \fB\-f\fP --- sysvinit-2.92/src/shutdown.c +++ sysvinit-2.92/src/shutdown.c @@ -135,9 +135,7 @@ "\t\t -r: reboot after shutdown.\n" "\t\t -h: halt after shutdown.\n" "\t\t -P: halt action is to turn off power.\n" - "\t\t can only be used along with -h flag.\n" "\t\t -H: halt action is to just halt.\n" - "\t\t can only be used along with -h flag.\n" "\t\t -f: do a 'fast' reboot (skip fsck).\n" "\t\t -F: Force fsck on reboot.\n" "\t\t -n: do not go through \"init\" but go down real fast.\n" @@ -546,9 +544,11 @@ switch(c) { case 'H': halttype = "HALT"; + down_level[0] = '0'; break; case 'P': halttype = "POWEROFF"; + down_level[0] = '0'; break; case 'a': /* Access control. */ useacl = 1; @@ -564,6 +564,8 @@ break; case 'h': /* Halt after shutdown */ down_level[0] = '0'; + if (!halttype) + halttype = "POWEROFF"; break; case 'f': /* Don't perform fsck after next boot */ fastboot = 1; @@ -603,12 +605,6 @@ } } - if (NULL != halttype && down_level[0] != '0') { - fprintf(stderr, "shutdown: -H and -P flags can only be used along with -h flag.\n"); - usage(); - exit(1); - } - /* Do we need to use the shutdown.allow file ? */ if (useacl && (fp = fopen(SDALLOW, "r")) != NULL) {