#!/bin/sh if [ -z "${__included_alterator_service_functions:-}" ]; then __included_alterator_service_functions=1 CHKCONFIG=/sbin/chkconfig SERVICE=/sbin/service SD_BOOTED=/sbin/sd_booted SYSTEMCTL=/sbin/systemctl RUNLEVEL=/sbin/runlevel SD_SYSV_INST=/lib/systemd/systemd-sysv-install INITDIR="${INITDIR:-/etc/init.d}" INITTAB="${INITTAB:-/etc/inittab}" UNITDIR="${UNITDIR:-/lib/systemd/system}" # SysV native support flag _sysv_avail=0 if [ -x "$CHKCONFIG" -a -x "$SERVICE" ]; then _sysv_avail=1 fi # Systemd native support flag _sd_avail=0 if [ -x "$SYSTEMCTL" ]; then _sd_avail=1 fi # Systemd-to-SysV bridge flag _sd_sysv_avail=0 if [ -x "$SD_SYSV_INST" ]; then _sd_sysv_avail=1 fi ## # $ALTERATOR_DESTDIR - exported by the installer. # DESTDIR="/" CHROOT_EXE= if [ -d "${ALTERATOR_DESTDIR:-}" ]; then DESTDIR="$ALTERATOR_DESTDIR" CHROOT_EXE="chroot $DESTDIR" if [ -x "${DESTDIR%/}$CHKCONFIG" -a -x "${DESTDIR%/}$SERVICE" ]; then _sysv_avail=1 else _sysv_avail=0 fi CHKCONFIG="$CHROOT_EXE $CHKCONFIG" SERVICE="$CHROOT_EXE $SERVICE" RUNLEVEL="/bin/false" if [ -x "${DESTDIR%/}$SYSTEMCTL" ]; then _sd_avail=1 else _sd_avail=0 fi SYSTEMCTL="$CHROOT_EXE $SYSTEMCTL" if [ -x "${DESTDIR%/}$SD_SYSV_INST" ]; then _sd_sysv_avail=1 else _sd_sysv_avail=0 fi SD_SYSV_INST="$SD_SYSV_INST --root=$DESTDIR" fi # Checks if SysV is available natively sysv_avail() { case "$_sysv_avail" in 0) return 1 ;; *) return 0 ;; esac } # Checks if systemd is available natively sd_avail() { case "$_sd_avail" in 0) return 1 ;; *) return 0 ;; esac } # Checks if systemd-sysv-install is available sd_sysv_avail() { case "$_sd_sysv_avail" in 0) return 1 ;; *) return 0 ;; esac } # SysVinit functions sysv_service_script_exists() { [ -f "${DESTDIR%/}${INITDIR%/}/$1" ] } sysv_service_exists() { # The service existence is reported only if # it can be controlled. # # When SysV isn't available natively, the procedure still # relies on systemctl with regard to its systemd-sysv-install # script. if sysv_avail || sd_avail && sd_sysv_avail; then sysv_service_script_exists "$@" else return 1 fi } sysv_service_control() { local srv="$1"; shift local cmd="$1"; shift case "$cmd" in on|enable) if sd_sysv_avail; then $SD_SYSV_INST enable "$srv" else $CHKCONFIG --add "$srv" 2>/dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null /dev/null /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2 /dev/null 1>&2