chiark / gitweb /
systemctl: conform to LSB with the "status" return code
authorHarald Hoyer <harald@redhat.com>
Tue, 25 Jun 2013 14:25:38 +0000 (16:25 +0200)
committerHarald Hoyer <harald@redhat.com>
Tue, 25 Jun 2013 14:28:00 +0000 (16:28 +0200)
check for pid file existance before returning 1

src/systemctl/systemctl.c

index 71bf17d475ba1937a384d3474386594e14b135d6..24543ee06db3d6e0dcd1112d14a582e0a28b6917 100644 (file)
@@ -3550,7 +3550,7 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo
 
         if (!streq_ptr(info.active_state, "active") &&
             !streq_ptr(info.active_state, "reloading") &&
-            streq(verb, "status"))
+            streq(verb, "status")) {
                 /* According to LSB: "program not running" */
                 /* 0: program is running or service is OK
                  * 1: program is dead and /var/run pid file exists
@@ -3558,10 +3558,11 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo
                  * 3: program is not running
                  * 4: program or service status is unknown
                  */
-                if (info.pid_file)
+                if (info.pid_file && access(info.pid_file, F_OK) == 0)
                         r = 1;
                 else
                         r = 3;
+       }
 
         while ((p = info.exec)) {
                 LIST_REMOVE(ExecStatusInfo, exec, info.exec, p);