aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/shutdown.in29
1 files changed, 23 insertions, 6 deletions
diff --git a/scripts/shutdown.in b/scripts/shutdown.in
index af3ea2b3..23e5e31d 100644
--- a/scripts/shutdown.in
+++ b/scripts/shutdown.in
@@ -1,14 +1,31 @@
#!/bin/sh
-shutdown_arg=
+do_halt=false
while getopts :akrhPHfFnct: opt; do
case "$opt" in
a) ;;
k) ;;
- r) shutdown_arg=--reboot ;;
- h) shutdown_arg=--halt ;;
- P) shutdown_arg=--poweroff ;;
- H) shutdown_arg=--halt ;;
+ r)
+ shutdown_arg=--reboot
+ ;;
+ h)
+ do_halt=true
+ shutdown_arg=--poweroff
+ ;;
+ P)
+ if ! ${do_halt}; then
+ printf "%s\n" "The -P flag requires the -h flag" >&2
+ exit 1
+ fi
+ shutdown_arg=--poweroff
+ ;;
+ H)
+ if ! ${do_halt}; then
+ printf "%s\n" "The -H flag requires the -h flag" >&2
+ exit 1
+ fi
+ shutdown_arg=--halt
+ ;;
f) ;;
F) ;;
n) ;;
@@ -25,5 +42,5 @@ if [ -z "${shutdown_arg}" ]; then
shutdown_arg=--single
fi
-echo @SBINDIR@/openrc-shutdown ${shutdown_arg} "$@"
+printf "%s %s\n" "@SBINDIR@/openrc-shutdown ${shutdown_arg}" "$@"
exec @SBINDIR@/openrc-shutdown ${shutdown_arg} "$@"