aboutsummaryrefslogtreecommitdiff
path: root/src/rc/supervise-daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rc/supervise-daemon.c')
-rw-r--r--src/rc/supervise-daemon.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/rc/supervise-daemon.c b/src/rc/supervise-daemon.c
index 1d0c3407..3989cbc7 100644
--- a/src/rc/supervise-daemon.c
+++ b/src/rc/supervise-daemon.c
@@ -561,8 +561,13 @@ int main(int argc, char **argv)
applet = basename_c(argv[0]);
atexit(cleanup);
svcname = getenv("RC_SVCNAME");
+ if (!svcname)
+ eerrorx("%s: The RC_SVCNAME environment variable is not set", applet);
openlog(applet, LOG_PID, LOG_DAEMON);
+ if (argc >= 1 && svcname && strcmp(argv[1], svcname))
+ eerrorx("%s: the first argument must be %s", applet, svcname);
+
if ((tmp = getenv("SSD_NICELEVEL")))
if (sscanf(tmp, "%d", &nicelevel) != 1)
eerror("%s: invalid nice level `%s' (SSD_NICELEVEL)",
@@ -583,6 +588,17 @@ int main(int argc, char **argv)
}
}
+ *cmdline = '\0';
+ c = argv;
+ while (c && *c) {
+ strcat(cmdline, *c);
+ strcat(cmdline, " ");
+ c++;
+ }
+ if (svcname) {
+ argc--;
+ argv++;
+ }
while ((opt = getopt_long(argc, argv, getoptstring, longopts,
(int *) 0)) != -1)
switch (opt) {
@@ -721,14 +737,6 @@ int main(int argc, char **argv)
if (!pidfile && !reexec)
eerrorx("%s: --pidfile must be specified", applet);
-
- *cmdline = '\0';
- c = argv;
- while (c && *c) {
- strcat(cmdline, *c);
- strcat(cmdline, " ");
- c++;
- }
endpwent();
argc -= optind;
argv += optind;