diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-05-22 16:46:11 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-05-22 16:46:11 +0200 |
commit | 9b958eff3fbcc345a72315a9167f6217dd841c40 (patch) | |
tree | 19c7fa935b16ddaedf793cf70eba09847d3400ee | |
parent | b46178e5c2b95062b84257c0601c21c400089c09 (diff) |
logind: fix write out of user state file
-rw-r--r-- | src/login/logind-user.c | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/src/login/logind-user.c b/src/login/logind-user.c index 27f78adae1..2b80ff844c 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -137,40 +137,59 @@ int user_save(User *u) { if (u->sessions) { Session *i; + bool first; fputs("SESSIONS=", f); + first = true; LIST_FOREACH(sessions_by_user, i, u->sessions) { - fprintf(f, - "%s%c", - i->id, - i->sessions_by_user_next ? ' ' : '\n'); + if (first) + first = false; + else + fputc(' ', f); + + fputs(i->id, f); } - fputs("SEATS=", f); + fputs("\nSEATS=", f); + first = true; LIST_FOREACH(sessions_by_user, i, u->sessions) { - if (i->seat) - fprintf(f, - "%s%c", - i->seat->id, - i->sessions_by_user_next ? ' ' : '\n'); + if (!i->seat) + continue; + + if (first) + first = false; + else + fputc(' ', f); + + fputs(i->seat->id, f); } - 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_user_next ? ' ' : '\n'); + fputs("\nACTIVE_SESSIONS=", f); + first = true; + LIST_FOREACH(sessions_by_user, i, u->sessions) { + if (!session_is_active(i)) + continue; + + if (first) + first = false; + else + fputc(' ', f); + + fputs(i->id, f); + } - fputs("ACTIVE_SEATS=", f); + fputs("\nACTIVE_SEATS=", f); + first = true; 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_user_next ? ' ' : '\n'); + if (!session_is_active(i) || !i->seat) + continue; + + if (first) + first = false; + else + fputs(i->seat->id, f); } + fputc('\n', f); } fflush(f); |