From a91e4e5337a46db3f0a4f1415c1b60285e5c33a3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 24 Jun 2011 23:50:39 +0200 Subject: [PATCH] logind: save/restore session type --- src/logind-session.c | 19 +++++++++++++++++-- src/logind-session.h | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/logind-session.c b/src/logind-session.c index 16d6c177d2b..e71ff4f14e9 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); diff --git a/src/logind-session.h b/src/logind-session.h index 7a8001eca68..72f85caaaf3 100644 --- a/src/logind-session.h +++ b/src/logind-session.h @@ -31,9 +31,9 @@ typedef struct Session Session; #include "logind-user.h" typedef enum SessionType { + SESSION_UNSPECIFIED, SESSION_TTY, SESSION_X11, - SESSION_OTHER, _SESSION_TYPE_MAX, _SESSION_TYPE_INVALID = -1 } SessionType;