aboutsummaryrefslogtreecommitdiff
path: root/src/rc/supervise-daemon.c
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2017-10-27 19:22:09 -0500
committerWilliam Hubbs <w.d.hubbs@gmail.com>2017-10-27 19:22:09 -0500
commit913b2ca53771742385d5c69164aefcaab634f012 (patch)
treee1acfe1a080caf48a4af7f9b0fd17b4ca05497f9 /src/rc/supervise-daemon.c
parent3fe99c8b8264269dd935d52a1a52581cc0f14e8e (diff)
supervise-daemon: use RC_SVCNAME as the first argument to the daemon
This makes ps show which service the supervisor is monitoring.
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;