X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Fsd-login.c;h=45e3bb8dcd07c03451f106d235bfe8ee96f64b45;hp=1978a05dc02809e887c7330d425bb06b1c5b4f6e;hb=7d5e9c0f60cddf01ec803012cbdc02d2f55b78c1;hpb=20747498c68575646fae88f4dd270fab219a25a6 diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 1978a05dc..45e3bb8dc 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 ? "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 ? "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) { @@ -641,11 +651,12 @@ _public_ int sd_get_uids(uid_t **users) { return -errno; for (;;) { - struct dirent buffer, *de; + struct dirent *de; + union dirent_storage buf; int k; uid_t uid; - k = readdir_r(d, &buffer, &de); + k = readdir_r(d, &buf.de, &de); if (k != 0) { r = -k; goto finish;