diff options
Diffstat (limited to 'src/shutdown')
-rw-r--r-- | src/shutdown/meson.build | 7 | ||||
-rw-r--r-- | src/shutdown/shutdown.in | 46 |
2 files changed, 53 insertions, 0 deletions
diff --git a/src/shutdown/meson.build b/src/shutdown/meson.build new file mode 100644 index 00000000..2d6f726d --- /dev/null +++ b/src/shutdown/meson.build @@ -0,0 +1,7 @@ +if os == 'Linux' and get_option('sysvinit') + configure_file(input : 'shutdown.in', + output : '@BASENAME@', + configuration : script_conf_data, + install_dir: sbindir, + install_mode: 'rwxr-xr-x') +endif diff --git a/src/shutdown/shutdown.in b/src/shutdown/shutdown.in new file mode 100644 index 00000000..23e5e31d --- /dev/null +++ b/src/shutdown/shutdown.in @@ -0,0 +1,46 @@ +#!/bin/sh + +do_halt=false +while getopts :akrhPHfFnct: opt; do + case "$opt" in + a) ;; + k) ;; + 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) ;; + c) ;; + t) ;; + [?]) printf "%s\n" "${0##*/}: invalid command line option" >&2 + exit 1 + ;; + esac +done +shift $((OPTIND-1)) + +if [ -z "${shutdown_arg}" ]; then + shutdown_arg=--single +fi + +printf "%s %s\n" "@SBINDIR@/openrc-shutdown ${shutdown_arg}" "$@" +exec @SBINDIR@/openrc-shutdown ${shutdown_arg} "$@" |