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} ${@}