1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-11 09:18:07 +03:00

sd-login: add new call sd_seat_can_multi_session()

This commit is contained in:
Lennart Poettering 2011-07-26 23:09:09 +02:00
parent 64559e8b4e
commit add30678a1
5 changed files with 38 additions and 2 deletions

2
TODO
View File

@ -225,8 +225,6 @@ Features:
* readahead: btrfs/LVM SSD detection
* add separate man page for [Install] settings
* allow runtime changing of log level and target
* drop cap bounding set in readahead and other services

View File

@ -20,6 +20,7 @@ global:
sd_login_monitor_unref;
sd_pid_get_owner_uid;
sd_pid_get_session;
sd_seat_can_multi_session;
sd_seat_get_active;
sd_seat_get_sessions;
sd_session_get_seat;

View File

@ -522,6 +522,36 @@ _public_ int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **ui
return 0;
}
_public_ int sd_seat_can_multi_session(const char *seat) {
char *p, *s = NULL;
int r;
if (!seat)
return -EINVAL;
p = strappend("/run/systemd/seats/", seat);
if (!p)
return -ENOMEM;
r = parse_env_file(p, NEWLINE,
"IS_VTCONSOLE", &s,
NULL);
free(p);
if (r < 0) {
free(s);
return r;
}
if (s) {
r = parse_boolean(s);
free(s);
} else
r = 0;
return r;
}
_public_ int sd_get_seats(char ***seats) {
if (!seats)

View File

@ -82,6 +82,9 @@ int sd_seat_get_active(const char *seat, char **session, uid_t *uid);
/* Return sessions and users on seat */
int sd_seat_get_sessions(const char *seat, char ***sessions, uid_t **uid, unsigned *n_uids);
/* Return whether the seat is multi-session capable */
int sd_seat_can_multi_session(const char *seat);
/* Get all seats */
int sd_get_seats(char ***seats);

View File

@ -71,6 +71,10 @@ int main(int argc, char* argv[]) {
assert_se(sd_session_get_seat(session, &seat) >= 0);
printf("seat = %s\n", seat);
r = sd_seat_can_multi_session(seat);
assert_se(r >= 0);
printf("can do multi session = %s\n", yes_no(r));
assert_se(sd_uid_get_state(u, &state) >= 0);
printf("state = %s\n", state);