mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-11 05:17:44 +03:00
sd-login: add new call sd_seat_can_multi_session()
This commit is contained in:
parent
64559e8b4e
commit
add30678a1
2
TODO
2
TODO
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user