diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librc/librc-daemon.c | 20 | 
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 */ | 
