summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-daemon/sd-daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsystemd/sd-daemon/sd-daemon.c')
-rw-r--r--src/libsystemd/sd-daemon/sd-daemon.c48
1 files changed, 22 insertions, 26 deletions
diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c
index 46241f77ff..1f2a53393f 100644
--- a/src/libsystemd/sd-daemon/sd-daemon.c
+++ b/src/libsystemd/sd-daemon/sd-daemon.c
@@ -491,39 +491,35 @@ _public_ int sd_booted(void) {
}
_public_ int sd_watchdog_enabled(int unset_environment, uint64_t *usec) {
- const char *e;
+ const char *s, *p = ""; /* p is set to dummy value to do unsetting */
uint64_t u;
- pid_t pid;
- int r;
+ int r = 0;
- e = getenv("WATCHDOG_PID");
- if (!e) {
- r = 0;
+ s = getenv("WATCHDOG_USEC");
+ if (!s)
goto finish;
- }
- r = parse_pid(e, &pid);
+ r = safe_atou64(s, &u);
if (r < 0)
goto finish;
-
- /* Is this for us? */
- if (getpid() != pid) {
- r = 0;
- goto finish;
- }
-
- e = getenv("WATCHDOG_USEC");
- if (!e) {
+ if (u <= 0) {
r = -EINVAL;
goto finish;
}
- r = safe_atou64(e, &u);
- if (r < 0)
- goto finish;
- if (u <= 0) {
- r = -EINVAL;
- goto finish;
+ p = getenv("WATCHDOG_PID");
+ if (p) {
+ pid_t pid;
+
+ r = parse_pid(p, &pid);
+ if (r < 0)
+ goto finish;
+
+ /* Is this for us? */
+ if (getpid() != pid) {
+ r = 0;
+ goto finish;
+ }
}
if (usec)
@@ -532,10 +528,10 @@ _public_ int sd_watchdog_enabled(int unset_environment, uint64_t *usec) {
r = 1;
finish:
- if (unset_environment) {
- unsetenv("WATCHDOG_PID");
+ if (unset_environment && s)
unsetenv("WATCHDOG_USEC");
- }
+ if (unset_environment && p)
+ unsetenv("WATCHDOG_PID");
return r;
}