diff --git a/man/sd_event_source_set_enabled.xml b/man/sd_event_source_set_enabled.xml
index 87c38707e1..73f01848d5 100644
--- a/man/sd_event_source_set_enabled.xml
+++ b/man/sd_event_source_set_enabled.xml
@@ -74,8 +74,10 @@
sd_event_source_get_enabled() may be
used to query whether the event source object
source is currently enabled or not. It
- returns the enablement state in
- enabled.
+ returns the enablement state (one of SD_EVENT_ON,
+ SD_EVENT_OFF, SD_EVENT_ONESHOT)
+ in enabled, if it is not NULL.
+ It also returns true if the event source is not disabled.
Event source objects are enabled when they are first created
with calls such as
@@ -100,10 +102,10 @@
Return Value
- On success, sd_event_source_set_enabled() and
- sd_event_source_get_enabled() return a
- non-negative integer. On failure, they return a negative
- errno-style error code.
+ On success, sd_event_source_set_enabled() returns a non-negative
+ integer. sd_event_source_get_enabled() returns zero if the source is
+ disabled (SD_EVENT_OFF) and a positive integer otherwise. On failure, they
+ return a negative errno-style error code.
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
index 8762b7b89d..66824c6c78 100644
--- a/src/libsystemd/sd-event/sd-event.c
+++ b/src/libsystemd/sd-event/sd-event.c
@@ -2143,11 +2143,11 @@ fail:
_public_ int sd_event_source_get_enabled(sd_event_source *s, int *m) {
assert_return(s, -EINVAL);
- assert_return(m, -EINVAL);
assert_return(!event_pid_changed(s->event), -ECHILD);
- *m = s->enabled;
- return 0;
+ if (m)
+ *m = s->enabled;
+ return s->enabled != SD_EVENT_OFF;
}
_public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {