aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sh.NetBSD/ifwatchd-carrier.sh.in2
-rw-r--r--sh.NetBSD/ifwatchd-nocarrier.sh.in2
-rw-r--r--sh/runscript.sh.in3
-rw-r--r--src/rc/rc.c6
-rw-r--r--src/rc/start-stop-daemon.c3
5 files changed, 9 insertions, 7 deletions
diff --git a/sh.NetBSD/ifwatchd-carrier.sh.in b/sh.NetBSD/ifwatchd-carrier.sh.in
index 4537b370..ec9c5abd 100644
--- a/sh.NetBSD/ifwatchd-carrier.sh.in
+++ b/sh.NetBSD/ifwatchd-carrier.sh.in
@@ -2,4 +2,4 @@
# Wrapper for ifwatchd(8)
export IN_BACKGROUND=yes
-@PREFIX@@SYSCONFDIR@/init.d/net.$1 --quiet start
+${RC_SERVICE} --quiet start
diff --git a/sh.NetBSD/ifwatchd-nocarrier.sh.in b/sh.NetBSD/ifwatchd-nocarrier.sh.in
index d8168688..3ba111cb 100644
--- a/sh.NetBSD/ifwatchd-nocarrier.sh.in
+++ b/sh.NetBSD/ifwatchd-nocarrier.sh.in
@@ -2,4 +2,4 @@
# Wrapper for ifwatchd(8)
export IN_BACKGROUND=yes
-@PREFIX@@SYSCONFDIR@/init.d/net.$1 --quiet stop
+${RC_SERVICE} --quiet stop
diff --git a/sh/runscript.sh.in b/sh/runscript.sh.in
index 88e99bd7..be69bb9b 100644
--- a/sh/runscript.sh.in
+++ b/sh/runscript.sh.in
@@ -18,6 +18,9 @@ if [ -z "$1" -o -z "$2" ]; then
exit 1
fi
+# So daemons know where to recall us if needed
+export RC_SERVICE="$1"
+
# Descript the init script to the user
describe()
{
diff --git a/src/rc/rc.c b/src/rc/rc.c
index 9aa0a6c0..98b44cc8 100644
--- a/src/rc/rc.c
+++ b/src/rc/rc.c
@@ -560,7 +560,6 @@ static void run_script (const char *script)
eerrorx ("%s: failed to exec `%s'", applet, script);
}
-#ifndef PREFIX
static void do_coldplug (void)
{
size_t s;
@@ -661,7 +660,6 @@ static void do_coldplug (void)
printf (" %s", service);
printf ("%s\n", ecolor (ECOLOR_NORMAL));
}
-#endif
#include "_usage.h"
#define getoptstring "o:" getoptstring_COMMON
@@ -869,9 +867,9 @@ int main (int argc, char **argv)
}
#endif
-#ifndef PREFIX
+ /* Setup our coldplugged services now */
do_coldplug ();
-#endif
+
rc_plugin_run (RC_HOOK_RUNLEVEL_START_OUT, newlevel);
hook_out = 0;
diff --git a/src/rc/start-stop-daemon.c b/src/rc/start-stop-daemon.c
index d0e168af..9ffeba05 100644
--- a/src/rc/start-stop-daemon.c
+++ b/src/rc/start-stop-daemon.c
@@ -966,7 +966,8 @@ int start_stop_daemon (int argc, char **argv)
/* Clean the environment of any RC_ variables */
STRLIST_FOREACH (environ, env, i) {
- if (strncmp (env, "RC_", 3) == 0 ||
+ if ((strncmp (env, "RC_", 3) == 0 &&
+ strncmp (env, "RC_SERVICE=", strlen ("RC_SERVICE=")) != 0) ||
strncmp (env, "SSD_NICELEVEL=", strlen ("SSD_NICELEVEL=")) == 0)
continue;