login: reshuffle meaning of require_active parameter

This commit is contained in:
Lennart Poettering 2012-09-12 08:30:35 +02:00
parent 78ab361c8f
commit d18dff430b
2 changed files with 21 additions and 10 deletions

View File

@ -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

View File

@ -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) {