diff options
-rw-r--r-- | man/sd_uid_get_state.xml | 17 | ||||
-rw-r--r-- | src/login/sd-login.c | 14 |
2 files changed, 21 insertions, 10 deletions
diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml index b9b713c64e..183e8a600a 100644 --- a/man/sd_uid_get_state.xml +++ b/man/sd_uid_get_state.xml @@ -111,7 +111,7 @@ or active on a specific seat. Accepts a Unix user identifier and a seat identifier string as parameters. The <parameter>require_active</parameter> - parameter is a boolean. If non-zero (true) this + parameter is a boolean value. If non-zero (true) this function will test if the user is active (i.e. has a session that is in the foreground and accepting user input) on the specified seat, otherwise (false) only @@ -122,13 +122,14 @@ be used to determine the current sessions of the specified user. Acceptes a Unix user identifier as parameter. The <parameter>require_active</parameter> - boolean parameter controls whether the returned list - shall consist of only those sessions where the user is - currently active (true) or where the user is currently - logged in at all, possibly inactive (false). The call - returns a NULL terminated string array of session - identifiers in <parameter>sessions</parameter> which - needs to be freed by the caller with the libc + parameter controls whether the returned list shall + consist of only those sessions where the user is + currently active (> 0), where the user is currently + online but possibly inactive (= 0), or + logged in at all but possibly closing the session (< 0). The call returns a + NULL terminated string array of session identifiers in + <parameter>sessions</parameter> which needs to be + freed by the caller with the libc <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry> call after use, including all the strings referenced. If the string array parameter is passed as diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 88dd510870..82fe2ce3e3 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -259,11 +259,21 @@ static int uid_get_array(uid_t uid, const char *variable, char ***array) { } _public_ int sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions) { - return uid_get_array(uid, require_active == 2 ? "ONLINE_SESSIONS" : (require_active ? "ACTIVE_SESSIONS" : "SESSIONS"), sessions); + return uid_get_array( + uid, + require_active == 0 ? "ONLINE_SESSIONS" : + require_active > 0 ? "ACTIVE_SESSIONS" : + "SESSIONS", + sessions); } _public_ int sd_uid_get_seats(uid_t uid, int require_active, char ***seats) { - return uid_get_array(uid, require_active == 2 ? "ONLINE_SEATS" : (require_active ? "ACTIVE_SEATS" : "SEATS"), seats); + return uid_get_array( + uid, + require_active == 0 ? "ONLINE_SEATS" : + require_active > 0 ? "ACTIVE_SEATS" : + "SEATS", + seats); } static int file_of_session(const char *session, char **_p) { |