commit:     1e837d596e483ceb5cec177a6c7faff24a42384b
Author:     William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Mon Jun 12 22:58:18 2017 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Mon Jun 12 22:58:18 2017 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=1e837d59

fix argument parsing for the sysvinit shutdown wrapper

This fixes #140.

 scripts/shutdown.in | 26 +++++++++++++++-----------
 1 file 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} ${@}

Reply via email to