aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2012-06-14 16:54:50 +0200
committerBill Nottingham <notting@redhat.com>2012-07-06 09:16:17 -0400
commit1b76f244eeea0d261696e04e68f5184a70523d8e (patch)
tree0d5ce6220e99745d21f28cad545320e9717a1e1c
parente97413042bcce86bd1645fd7a605404f431d801b (diff)
downloadinitscripts-1b76f244eeea0d261696e04e68f5184a70523d8e.tar
initscripts-1b76f244eeea0d261696e04e68f5184a70523d8e.tar.gz
initscripts-1b76f244eeea0d261696e04e68f5184a70523d8e.tar.bz2
initscripts-1b76f244eeea0d261696e04e68f5184a70523d8e.tar.xz
initscripts-1b76f244eeea0d261696e04e68f5184a70523d8e.zip
service: add support for legacy custom actions
This adds support for legacy initscript actions such as service iptables save Packages wishing to provide legacy actions should install programs (probably scripts, but could be binaries) named /usr/libexec/initscripts/legacy-actions/<service>/<action> It should be emphasized that this feature is meant to be used only in packages where compatibility of custom actions with previous releases is desired. Adding of entirely new actions is discouraged. Useful tools should be shipped by upstreams as programs in /usr/bin, not in distro-specific hacks. [ Modifications from original : change from /usr/lib to /usr/libexec - notting ] https://bugzilla.redhat.com/show_bug.cgi?id=796663
-rw-r--r--Makefile1
-rw-r--r--initscripts.spec1
-rwxr-xr-xservice14
3 files changed, 12 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 00e81b0c..d5b999da 100644
--- a/Makefile
+++ b/Makefile
@@ -142,6 +142,7 @@ install:
ln -s rc.d/$$i $(ROOT)/etc/$$i; \
done
+ mkdir -p -m 755 $(ROOT)/usr/libexec/initscripts/legacy-actions
syntax-check:
diff --git a/initscripts.spec b/initscripts.spec
index e4194d85..8bb90e3a 100644
--- a/initscripts.spec
+++ b/initscripts.spec
@@ -292,6 +292,7 @@ rm -rf $RPM_BUILD_ROOT
%ghost %verify(not md5 size mtime) %config(noreplace,missingok) /etc/crypttab
%dir /etc/tmpfiles.d
/etc/tmpfiles.d/initscripts.conf
+%dir /usr/libexec/initscripts/legacy-actions
%files legacy
%defattr(-,root,root)
diff --git a/service b/service
index 6aabd6fc..86b6f29f 100755
--- a/service
+++ b/service
@@ -5,8 +5,10 @@
VERSION="$(basename $0) ver. 0.91"
USAGE="Usage: $(basename $0) < option > | --status-all | \
[ service_name [ command | --full-restart ] ]"
-SERVICE=
SERVICEDIR="/etc/init.d"
+ACTIONDIR="/usr/libexec/initscripts/legacy-actions"
+SERVICE=
+ACTION=
OPTIONS=
if [ $# -eq 0 ]; then
@@ -58,6 +60,8 @@ while [ $# -gt 0 ]; do
fi
elif [ -z "${SERVICE}" ]; then
SERVICE="${1}"
+ elif [ -z "${ACTION}" ]; then
+ ACTION="${1}"
else
OPTIONS="${OPTIONS} ${1}"
fi
@@ -67,8 +71,10 @@ while [ $# -gt 0 ]; do
done
if [ -f "${SERVICEDIR}/${SERVICE}" ]; then
- env -i PATH="$PATH" TERM="$TERM" SYSTEMCTL_IGNORE_DEPENDENCIES=${SYSTEMCTL_IGNORE_DEPENDENCIES} SYSTEMCTL_SKIP_REDIRECT=${SYSTEMCTL_SKIP_REDIRECT} "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
+ env -i PATH="$PATH" TERM="$TERM" SYSTEMCTL_IGNORE_DEPENDENCIES=${SYSTEMCTL_IGNORE_DEPENDENCIES} SYSTEMCTL_SKIP_REDIRECT=${SYSTEMCTL_SKIP_REDIRECT} "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS}
+elif [ -x "${ACTIONDIR}/${SERVICE}/${ACTION}" ]; then
+ env -i PATH="$PATH" TERM="$TERM" SYSTEMCTL_IGNORE_DEPENDENCIES=${SYSTEMCTL_IGNORE_DEPENDENCIES} SYSTEMCTL_SKIP_REDIRECT=${SYSTEMCTL_SKIP_REDIRECT} "${ACTIONDIR}/${SERVICE}/${ACTION}" ${OPTIONS}
else
- echo $"Redirecting to /bin/systemctl ${OPTIONS} ${SERVICE}.service" >&2
- exec /bin/systemctl ${OPTIONS} ${SERVICE}.service
+ echo $"Redirecting to /bin/systemctl ${ACTION} ${OPTIONS} ${SERVICE}.service" >&2
+ exec /bin/systemctl ${ACTION} ${OPTIONS} ${SERVICE}.service
fi