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
b0555149de780f81ec6f741d36bdb41b4d1d8a94.
}
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);
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) {
if (u->sessions) {
bool first;
- fputs("SESSIONS=\"", f);
+ fputs("SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (first)
fputs(i->id, f);
}
- fputs("\"\n"
- "SEATS=\"", f);
+ fputs("\nSEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!i->seat)
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))
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)
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)
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)
fputs(i->seat->id, f);
}
- fputs("\"\n", f);
+ fputc('\n', f);
}
r = flink_tmpfile(f, temp_path, u->state_file, LINK_TMPFILE_REPLACE);