summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-05-22 16:46:11 +0200
committerLennart Poettering <lennart@poettering.net>2012-05-22 16:46:11 +0200
commit9b958eff3fbcc345a72315a9167f6217dd841c40 (patch)
tree19c7fa935b16ddaedf793cf70eba09847d3400ee
parentb46178e5c2b95062b84257c0601c21c400089c09 (diff)
logind: fix write out of user state file
-rw-r--r--src/login/logind-user.c65
1 files changed, 42 insertions, 23 deletions
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 27f78adae..2b80ff844 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);