procd: move service command to procd
authorFlorian Eckert <fe@dev.tdt.de>
Tue, 30 Nov 2021 15:01:14 +0000 (16:01 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 19 Mar 2022 15:13:58 +0000 (16:13 +0100)
The service command belongs to the procd and does not belong in the
shinit. In the course of the move, the script was also checked with
shellcheck and cleaned up.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
package/base-files/files/etc/shinit
package/system/procd/Makefile
package/system/procd/files/service [new file with mode: 0644]

index 6b682d8769dfa78200bdc980fa746fe5f5bd204d..8df9771e6564b8581867430e7d56225f6c9ab20c 100644 (file)
@@ -8,26 +8,5 @@ alias ll='ls -alF --color=auto'
 [ -x /usr/bin/arp -o -x /sbin/arp ] || arp() { cat /proc/net/arp; }
 [ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
 
-service() {
-       if [ -f "/etc/init.d/$1" ]; then
-               /etc/init.d/$@
-       else
-               echo "Usage: service <service> [command]"
-               if [ -n "$1" ]; then
-                       echo "Service "'"'"$1"'"'" not found, the following services are available:"
-               else
-                       echo "The following services are available:"
-               fi
-               for F in /etc/init.d/* ; do
-                       printf "%-30s\t%10s\t%10s\n"  "$F" \
-                       $( $($F enabled) && echo "enabled" || echo "disabled" ) \
-                       $( [ "$(ubus call service list "{ 'verbose': true, 'name': '$(basename $F)' }" \
-                       | jsonfilter -q -e "@['$(basename $F)'].instances[*].running" | uniq)" = "true" ] \
-                       && echo "running" || echo "stopped" )
-               done;
-               return 1
-       fi
-}
-
 [ -n "$KSH_VERSION" -o \! -s "$HOME/.shinit" ] || . "$HOME/.shinit"
 [ -z "$KSH_VERSION" -o \! -s "$HOME/.mkshrc" ] || . "$HOME/.mkshrc"
index 958a4808cbd13aa02f6adba9d999599b3dc97de9..1d279205398c13be8812032aad71e7b4fb6a7a68 100644 (file)
@@ -121,6 +121,7 @@ define Package/procd/install
        $(INSTALL_BIN) ./files/reload_config $(1)/sbin/
        $(INSTALL_CONF) ./files/hotplug*.json $(1)/etc/
        $(INSTALL_DATA) ./files/procd.sh $(1)/lib/functions/
+       $(INSTALL_BIN) ./files/service $(1)/sbin/service
 endef
 
 Package/procd-selinux/install = $(Package/procd/install)
diff --git a/package/system/procd/files/service b/package/system/procd/files/service
new file mode 100644 (file)
index 0000000..1ceacfe
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+main() {
+       local service="$1"
+       local cmd="$2"
+
+       local boot status
+
+       if [ -f "/etc/init.d/${service}" ]; then
+               /etc/init.d/"${service}" "${cmd}"
+               exit "$?"
+       fi
+
+       if [ -n "$service" ]; then
+               echo "Service \"$1\" not found:"
+               exit 1
+       fi
+
+       echo "Usage: $(basename "$0") <service> [command]"
+       for service in /etc/init.d/* ; do
+               boot="$($service enabled && echo "enabled" || echo "disabled" )"
+               status="$( [ "$(ubus call service list "{ 'verbose': true, 'name': '$(basename "$service")' }" \
+                       | jsonfilter -q -e "@['$(basename "$service")'].instances[*].running" | uniq)" = "true" ] \
+                       && echo "running" || echo "stopped" )"
+
+               printf "%-30s\\t%10s\\t%10s\\n"  "$service" "$boot" "$status"
+       done
+}
+
+main "$@"