From d18dff430bf60291a41b2c7dbe0ae5a5c4edf36c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 12 Sep 2012 08:30:35 +0200 Subject: [PATCH] login: reshuffle meaning of require_active parameter --- man/sd_uid_get_state.xml | 17 +++++++++-------- 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 b9b713c64..183e8a600 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 require_active - 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 require_active - 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 sessions 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 + sessions which needs to be + freed by the caller with the libc free3 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 88dd51087..82fe2ce3e 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) { -- 2.30.2