aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/shutdown.in26
1 files changed, 15 insertions, 11 deletions
diff --git a/scripts/shutdown.in b/scripts/shutdown.in
index 4a3d9fd1..69a4a12a 100644
--- a/scripts/shutdown.in
+++ b/scripts/shutdown.in
@@ -1,17 +1,21 @@
#!@SHELL@
-args=
-for x; do
- case "$x" in
- -h) args=" ${args} --halt" ;;
- *) args=" ${args} ${x} " ;;
+poweroff_arg=
+while getopts :HhPr opt; do
+ case "$opt" in
+ h|P) poweroff_arg=--poweroff ;;
+ H) poweroff_arg=--halt ;;
+ r) poweroff_arg=--reboot ;;
+ \?) printf "${0##*/}: invalid option ${optarg}\n" >&2
+ exit 1
+ ;;
esac
done
+shift $((OPTIND-1))
-case "$args" in
- *-h|--halt*) ;;
- *-s|--single*) ;;
- *) args=" --single ${args}" ;;
-esac
+if [ -z "${poweroff_arg}" ]; then
+ poweroff_arg=--single
+fi
-exec @SBINDIR@/openrc-shutdown "$args"
+echo @SBINDIR@/openrc-shutdown ${poweroff_arg} ${@}
+exec @SBINDIR@/openrc-shutdown ${poweroff_arg} ${@}