aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Vershilov <alexander.vershilov@gmail.com>2014-10-19 19:41:36 -0500
committerWilliam Hubbs <w.d.hubbs@gmail.com>2014-10-20 15:44:19 -0500
commitf9acd65497c6e561fbf5420386a99d681fede859 (patch)
treed96a41bb114aee51db9f40c5bdf43a8f81347c87
parent8c7ea4e9e8da500877a514402bbe90aababda2d6 (diff)
librc:look for the pid file in a chroot if defined
X-Gentoo-Bug: 524388 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=524388
-rw-r--r--src/librc/librc-daemon.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/librc/librc-daemon.c b/src/librc/librc-daemon.c
index 8793075d..04f25b1c 100644
--- a/src/librc/librc-daemon.c
+++ b/src/librc/librc-daemon.c
@@ -553,16 +553,28 @@ rc_service_daemons_crashed(const char *service)
}
fclose(fp);
+ char *ch_root = rc_service_value_get(basename_c(service), "chroot");
+ char *spidfile = pidfile;
+ if (ch_root) {
+ spidfile = malloc(strlen(ch_root) + strlen(pidfile));
+ strcpy(spidfile, ch_root);
+ strcat(spidfile, pidfile);
+ }
+
pid = 0;
- if (pidfile) {
+ if (spidfile) {
retval = true;
- if ((fp = fopen(pidfile, "r"))) {
+ if ((fp = fopen(spidfile, "r"))) {
if (fscanf(fp, "%d", &pid) == 1)
retval = false;
fclose(fp);
}
- free(pidfile);
- pidfile = NULL;
+ free(spidfile);
+ spidfile = NULL;
+ if (ch_root) {
+ free(pidfile);
+ pidfile = NULL;
+ }
/* We have the pid, so no need to match
on exec or name */