diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-06-24 23:50:39 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-06-24 23:50:39 +0200 |
commit | a91e4e5337a46db3f0a4f1415c1b60285e5c33a3 (patch) | |
tree | d8df9c3fea7dd98dac7fb20b7c78ea33c949b9ce /src/logind-session.c | |
parent | 31b79c2b4a34961eefc3b3680704124d8490d105 (diff) |
logind: save/restore session type
Diffstat (limited to 'src/logind-session.c')
-rw-r--r-- | src/logind-session.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/logind-session.c b/src/logind-session.c index 16d6c177d2..e71ff4f14e 100644 --- a/src/logind-session.c +++ b/src/logind-session.c @@ -136,6 +136,11 @@ int session_save(Session *s) { s->remote, s->kill_processes); + if (s->type >= 0) + fprintf(f, + "TYPE=%s\n", + session_type_to_string(s->type)); + if (s->cgroup_path) fprintf(f, "CGROUP=%s\n", @@ -210,7 +215,8 @@ int session_load(Session *s) { *seat = NULL, *vtnr = NULL, *leader = NULL, - *audit_id = NULL; + *audit_id = NULL, + *type = NULL; int k, r; @@ -228,6 +234,7 @@ int session_load(Session *s) { "SERVICE", &s->service, "VTNR", &vtnr, "LEADER", &leader, + "TYPE", &type, NULL); if (r < 0) @@ -272,6 +279,14 @@ int session_load(Session *s) { } } + if (type) { + SessionType t; + + t = session_type_from_string(type); + if (t >= 0) + s->type = t; + } + finish: free(remote); free(kill_processes); @@ -809,7 +824,7 @@ void session_add_to_gc_queue(Session *s) { static const char* const session_type_table[_SESSION_TYPE_MAX] = { [SESSION_TTY] = "tty", [SESSION_X11] = "x11", - [SESSION_OTHER] = "other" + [SESSION_UNSPECIFIED] = "unspecified" }; DEFINE_STRING_TABLE_LOOKUP(session_type, SessionType); |