X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-seat.c;h=99921951511cc3c9293c06d0be12fb3669cda899;hb=952f4b59592088f15615eb404c828aaac31bfe82;hp=3f5efdc8ea706f8195b463163f838a5d4d34fd75;hpb=61376f96a98291b5421bfd79a15ca4db50c2a3fe;p=elogind.git diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 3f5efdc8e..999219515 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -120,9 +120,9 @@ int seat_save(Seat *s) { fprintf(f, "ACTIVE=%s\n" - "ACTIVE_UID=%lu\n", + "ACTIVE_UID="UID_FMT"\n", s->active->id, - (unsigned long) s->active->user->uid); + s->active->user->uid); } if (s->sessions) { @@ -275,8 +275,13 @@ int seat_switch_to(Seat *s, unsigned int num) { if (!num) return -EINVAL; - if (num >= s->position_count || !s->positions[num]) + if (num >= s->position_count || !s->positions[num]) { + /* allow switching to unused VTs to trigger auto-activate */ + if (seat_has_vts(s) && num < 64) + return chvt(num); + return -EINVAL; + } return session_activate(s->positions[num]); } @@ -485,7 +490,7 @@ void seat_claim_position(Seat *s, Session *session, unsigned int pos) { if (seat_has_vts(s)) pos = session->vtnr; - if (!GREEDY_REALLOC0_T(s->positions, s->position_count, pos + 1)) + if (!GREEDY_REALLOC0(s->positions, s->position_count, pos + 1)) return; seat_evict_position(s, session);