if (s->scope)
fprintf(f, "SCOPE=%s\n", s->scope);
-
if (s->scope_job)
fprintf(f, "SCOPE_JOB=%s\n", s->scope_job);
if (s->display)
fprintf(f, "DISPLAY=%s\n", s->display);
- if (s->remote_host)
- fprintf(f, "REMOTE_HOST=%s\n", s->remote_host);
+ if (s->remote_host) {
+ _cleanup_free_ char *escaped;
+
+ escaped = cescape(s->remote_host);
+ if (!escaped) {
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ fprintf(f, "REMOTE_HOST=%s\n", escaped);
+ }
+
+ if (s->remote_user) {
+ _cleanup_free_ char *escaped;
+
+ escaped = cescape(s->remote_user);
+ if (!escaped) {
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ fprintf(f, "REMOTE_USER=%s\n", escaped);
+ }
+
+ if (s->service) {
+ _cleanup_free_ char *escaped;
+
+ escaped = cescape(s->service);
+ if (!escaped) {
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ fprintf(f, "SERVICE=%s\n", escaped);
+ }
+
+ if (s->desktop) {
+ _cleanup_free_ char *escaped;
- if (s->remote_user)
- fprintf(f, "REMOTE_USER=%s\n", s->remote_user);
- if (s->service)
- fprintf(f, "SERVICE=%s\n", s->service);
+ escaped = cescape(s->desktop);
+ if (!escaped) {
+ r = -ENOMEM;
+ goto finish;
+ }
- if (s->desktop)
- fprintf(f, "DESKTOP=%s\n", s->desktop);
+ fprintf(f, "DESKTOP=%s\n", escaped);
+ }
if (s->seat && seat_has_vts(s->seat))
fprintf(f, "VTNR=%u\n", s->vtnr);
s->started = true;
+ user_elect_display(s->user);
+
/* Save data */
session_save(s);
user_save(s->user);
/* Send signals */
session_send_signal(s, true);
- user_send_changed(s->user, "Sessions", NULL);
+ user_send_changed(s->user, "Sessions", "Display", NULL);
if (s->seat) {
if (s->seat->active == s)
seat_send_changed(s->seat, "Sessions", "ActiveSession", NULL);
s->stopping = true;
+ user_elect_display(s->user);
+
session_save(s);
user_save(s->user);
}
user_save(s->user);
- user_send_changed(s->user, "Sessions", NULL);
+ user_send_changed(s->user, "Sessions", "Display", NULL);
return r;
}