aboutsummaryrefslogtreecommitdiff
path: root/src/shutdown
diff options
context:
space:
mode:
Diffstat (limited to 'src/shutdown')
-rw-r--r--src/shutdown/meson.build7
-rw-r--r--src/shutdown/shutdown.in46
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} "$@"