Revert "logind: always enclose list fields (that may contain spaces) in quotes"

This breaks GNOME on Wayland, login no longer works:

gnome-shell[2250]: Running GNOME Shell (using mutter 48.2) as a Wayland display server
gnome-shell[2250]: Failed to setup: Failed to find any matching session
systemd[2054]: org.gnome.Shell@wayland.service: Failed with result 'protocol'.
systemd[2054]: Failed to start org.gnome.Shell@wayland.service - GNOME Shell on Wayland.

This reverts commit b0555149de.
This commit is contained in:
Luca Boccassi
2025-05-22 10:00:52 +01:00
parent bf7476233a
commit c3c79aeb52
3 changed files with 20 additions and 31 deletions
+8 -7
View File
@@ -131,19 +131,20 @@ int seat_save(Seat *s) {
}
if (s->sessions) {
fputs("SESSIONS=\"", f);
LIST_FOREACH(sessions_by_seat, i, s->sessions)
fputs("SESSIONS=", f);
LIST_FOREACH(sessions_by_seat, i, s->sessions) {
fprintf(f,
"%s%s",
"%s%c",
i->id,
i->sessions_by_seat_next ? " " : "\"\n");
i->sessions_by_seat_next ? ' ' : '\n');
}
fputs("UIDS=\"", f);
fputs("UIDS=", f);
LIST_FOREACH(sessions_by_seat, i, s->sessions)
fprintf(f,
UID_FMT"%s",
UID_FMT"%c",
i->user->user_record->uid,
i->sessions_by_seat_next ? " " : "\"\n");
i->sessions_by_seat_next ? ' ' : '\n');
}
r = flink_tmpfile(f, temp_path, s->state_file, LINK_TMPFILE_REPLACE);
+5 -12
View File
@@ -270,19 +270,12 @@ int session_set_leader_consume(Session *s, PidRef _leader) {
static void session_save_devices(Session *s, FILE *f) {
SessionDevice *sd;
if (hashmap_isempty(s->devices))
return;
bool need_space = false;
fputs("DEVICES=\"", f);
HASHMAP_FOREACH(sd, s->devices) {
if (need_space)
fputc(' ', f);
fprintf(f, DEVNUM_FORMAT_STR, DEVNUM_FORMAT_VAL(sd->dev));
need_space = true;
if (!hashmap_isempty(s->devices)) {
fprintf(f, "DEVICES=");
HASHMAP_FOREACH(sd, s->devices)
fprintf(f, DEVNUM_FORMAT_STR " ", DEVNUM_FORMAT_VAL(sd->dev));
fprintf(f, "\n");
}
fputs("\"\n", f);
}
int session_save(Session *s) {
+7 -12
View File
@@ -195,7 +195,7 @@ static int user_save_internal(User *u) {
if (u->sessions) {
bool first;
fputs("SESSIONS=\"", f);
fputs("SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (first)
@@ -206,8 +206,7 @@ static int user_save_internal(User *u) {
fputs(i->id, f);
}
fputs("\"\n"
"SEATS=\"", f);
fputs("\nSEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!i->seat)
@@ -221,8 +220,7 @@ static int user_save_internal(User *u) {
fputs(i->seat->id, f);
}
fputs("\"\n"
"ACTIVE_SESSIONS=\"", f);
fputs("\nACTIVE_SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!session_is_active(i))
@@ -236,8 +234,7 @@ static int user_save_internal(User *u) {
fputs(i->id, f);
}
fputs("\"\n"
"ONLINE_SESSIONS=\"", f);
fputs("\nONLINE_SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (session_get_state(i) == SESSION_CLOSING)
@@ -251,8 +248,7 @@ static int user_save_internal(User *u) {
fputs(i->id, f);
}
fputs("\"\n"
"ACTIVE_SEATS=\"", f);
fputs("\nACTIVE_SEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!session_is_active(i) || !i->seat)
@@ -266,8 +262,7 @@ static int user_save_internal(User *u) {
fputs(i->seat->id, f);
}
fputs("\"\n"
"ONLINE_SEATS=\"", f);
fputs("\nONLINE_SEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (session_get_state(i) == SESSION_CLOSING || !i->seat)
@@ -280,7 +275,7 @@ static int user_save_internal(User *u) {
fputs(i->seat->id, f);
}
fputs("\"\n", f);
fputc('\n', f);
}
r = flink_tmpfile(f, temp_path, u->state_file, LINK_TMPFILE_REPLACE);