From: Lennart Poettering Date: Wed, 12 Sep 2012 06:30:35 +0000 (+0200) Subject: login: reshuffle meaning of require_active parameter X-Git-Tag: v190~125 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=d18dff430bf60291a41b2c7dbe0ae5a5c4edf36c;ds=sidebyside login: reshuffle meaning of require_active parameter --- 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) {