summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/sd_uid_get_state.xml17
-rw-r--r--src/login/sd-login.c14
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 (&gt; 0), where the user is currently
+ online but possibly inactive (= 0), or
+ logged in at all but possibly closing the session (&lt; 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) {