If we don't have permission to inspect the pidfile, don't report crashed. Gentoo #218028.

This commit is contained in:
Roy Marples 2008-04-21 10:56:28 +00:00
parent dc5d63aa97
commit 54d7aa39dd
3 changed files with 10 additions and 5 deletions

View File

@ -561,14 +561,13 @@ bool rc_service_daemons_crashed(const char *service)
if ((fp = fopen(pidfile, "r"))) { if ((fp = fopen(pidfile, "r"))) {
if (fscanf(fp, "%d", &pid) == 1) if (fscanf(fp, "%d", &pid) == 1)
retval = false; retval = false;
fclose (fp); fclose (fp);
} }
free(pidfile); free(pidfile);
pidfile = NULL; pidfile = NULL;
/* We have the pid, so no need to match on name */ /* We have the pid, so no need to match on name */
free (name); free(name);
name = NULL; name = NULL;
} else { } else {
if (exec) { if (exec) {

View File

@ -103,9 +103,13 @@ static void print_service(const char *service)
snprintf(status, sizeof(status), "inactive "); snprintf(status, sizeof(status), "inactive ");
color = ECOLOR_WARN; color = ECOLOR_WARN;
} else if (state & RC_SERVICE_STARTED) { } else if (state & RC_SERVICE_STARTED) {
if (test_crashed && rc_service_daemons_crashed(service)) errno = 0;
if (test_crashed &&
rc_service_daemons_crashed(service) &&
errno != EACCES)
{
snprintf(status, sizeof(status), " crashed "); snprintf(status, sizeof(status), " crashed ");
else { } else {
snprintf(status, sizeof(status), " started "); snprintf(status, sizeof(status), " started ");
color = ECOLOR_GOOD; color = ECOLOR_GOOD;
} }

View File

@ -559,8 +559,10 @@ static RC_SERVICE svc_status(void)
snprintf(status, sizeof(status), "inactive"); snprintf(status, sizeof(status), "inactive");
e = &ewarn; e = &ewarn;
} else if (state & RC_SERVICE_STARTED) { } else if (state & RC_SERVICE_STARTED) {
errno = 0;
if (_rc_can_find_pids() && if (_rc_can_find_pids() &&
rc_service_daemons_crashed(service)) rc_service_daemons_crashed(service) &&
errno != EACCES)
{ {
snprintf(status, sizeof(status), "crashed"); snprintf(status, sizeof(status), "crashed");
e = &eerror; e = &eerror;