+is_ignored_file() {
+ case "$1" in
+ skeleton | README | *.dpkg-dist | *.dpkg-old | rc | rcS | single | reboot | bootclean.sh)
+ return 0
+ ;;
+ *rpmorig | *rpmnew | *rpmsave | *~ | *.orig)
+ return 0
+ ;;
+ esac
+ return 1
+}
+
+# check if SERVICE is present in systemd and ACTION is valid systemctl command
+# returns false if systemd is disabled or not active
+is_systemd_service() {
+ local SERVICE=$1 ACTION=$2
+
+ [ "$USE_SYSTEMD" = "no" ] && return 1
+
+ # if we are called from systemd itself, because some .service specified
+ # invocation via /sbin/service. this avoids loops
+ # detect this via CMDLINE var, which has leaked from geninitrd
+ if [ -n "$CMDLINE" ]; then
+ echo >&2 "Warning: CMDLINE env set, likely you are defining .service to use /sbin/service, please use /etc/rc.d/init.d/<SERVICE> instead"
+ return 1
+ fi
+
+ case "$ACTION" in
+ # list obtained as: man systemctl | grep N.*A.*M.*E
+ start | \
+ stop | \
+ reload | \
+ restart | \
+ try-restart | \
+ reload-or-restart | \
+ reload-or-try-restart | \
+ isolate | \
+ kill | \
+ is-active | \
+ status | \
+ show | \
+ reset-failed | \
+ enable | \
+ disable | \
+ is-enabled | \
+ reenable | \
+ preset | \
+ mask | \
+ unmask | \
+ link | \
+ load | \
+ snapshot | \
+ delete | \
+ set-environment | \
+ unset-environment )
+ ;;
+ *)
+ #echo "Not valid systemd command"
+ return 1
+ esac
+
+ [ -x /bin/systemd_booted ] || return 1
+ /bin/systemd_booted || return 1
+
+ /bin/systemctl show "$SERVICE".service | grep -q LoadError= && return 1 || return 0
+}
+
+status_all() {
+ local SERVICE TYPE has_systemd
+
+ if [ "$USE_SYSTEMD" != "no" ] && [ -x /bin/systemd_booted ] && /bin/systemd_booted; then
+ has_systemd=1
+ else
+ unset has_systemd
+ fi
+
+ cd ${SERVICEDIR}
+ for SERVICE in *; do
+ case "${SERVICE}" in
+ functions | halt | killall | single| linuxconf| kudzu)
+ ;;
+ *)
+ if ! is_ignored_file "${SERVICE}" \
+ && [ -x "${SERVICEDIR}/${SERVICE}" ]; then
+ if [ "$has_systemd" ] && [ -f /lib/systemd/system/${SERVICE}.service ]; then
+ # D for SystemD
+ TYPE='D'
+ else
+ # S for SysVinit
+ TYPE='S'
+ fi
+ if ! grep -qs "\Wstatus)" "$SERVICE"; then
+ printf " %s %-60s %s\n" "$TYPE:[?]" "$SERVICE:" "unknown"
+ continue
+ else
+ out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
+ if [ "$?" = "0" -a -n "$out" ]; then
+ printf " %s %-60s %s\n" "$TYPE:[+]" "$SERVICE:" "running"
+ continue
+ else
+ printf " %s %-60s %s %s\n" "$TYPE:[-]" "$SERVICE:" "NOT running"
+ continue
+ fi
+ fi
+ fi
+ ;;
+ esac
+ done
+}
+
+VERSION="$(basename $0) ver. 0.91-pld"