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
This commit is contained in:
Alexander Vershilov 2014-10-19 19:41:36 -05:00 committed by William Hubbs
parent 8c7ea4e9e8
commit f9acd65497

View File

@ -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 */