X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogind-user.c;h=3c245c09272ec57563b53b0246d540aad37c9e0f;hp=1655a9a46b76b7b9d4a372dd8a7fd3f58433c854;hb=034a2a52ac0ec83e0229941d635d310b23eb04df;hpb=de07ab16c6b919cead26c9a5209a362127ff6142 diff --git a/src/logind-user.c b/src/logind-user.c index 1655a9a46..3c245c092 100644 --- a/src/logind-user.c +++ b/src/logind-user.c @@ -134,6 +134,44 @@ int user_save(User *u) { "DISPLAY=%s\n", u->display->id); + if (u->sessions) { + Session *i; + + fputs("SESSIONS=", f); + LIST_FOREACH(sessions_by_user, i, u->sessions) { + fprintf(f, + "%s%c", + i->id, + i->sessions_by_seat_next ? ' ' : '\n'); + } + + fputs("SEATS=", f); + LIST_FOREACH(sessions_by_user, i, u->sessions) { + if (i->seat) + fprintf(f, + "%s%c", + i->seat->id, + i->sessions_by_seat_next ? ' ' : '\n'); + } + + fputs("ACTIVE_SESSIONS=", f); + LIST_FOREACH(sessions_by_user, i, u->sessions) + if (session_is_active(i)) + fprintf(f, + "%lu%c", + (unsigned long) i->user->uid, + i->sessions_by_seat_next ? ' ' : '\n'); + + fputs("ACTIVE_SEATS=", f); + LIST_FOREACH(sessions_by_user, i, u->sessions) { + if (session_is_active(i) && i->seat) + fprintf(f, + "%s%c", + i->seat->id, + i->sessions_by_seat_next ? ' ' : '\n'); + } + } + fflush(f); if (ferror(f) || rename(temp_path, u->state_file) < 0) { @@ -533,7 +571,6 @@ int user_kill(User *u, int signo) { if (q != -EAGAIN && q != -ESRCH && q != -ENOENT) r = q; -finish: if (pid_set) set_free(pid_set);