chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
logind: save/restore session type
[elogind.git]
/
src
/
logind-session.c
diff --git
a/src/logind-session.c
b/src/logind-session.c
index 16d6c177d2b5fd298d00b0ebcf6878b0693193f3..e71ff4f14e9aaca2ca5965653e4912ca4d8cb2ad 100644
(file)
--- a/
src/logind-session.c
+++ b/
src/logind-session.c
@@
-136,6
+136,11
@@
int session_save(Session *s) {
s->remote,
s->kill_processes);
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",
if (s->cgroup_path)
fprintf(f,
"CGROUP=%s\n",
@@
-210,7
+215,8
@@
int session_load(Session *s) {
*seat = NULL,
*vtnr = NULL,
*leader = NULL,
*seat = NULL,
*vtnr = NULL,
*leader = NULL,
- *audit_id = NULL;
+ *audit_id = NULL,
+ *type = NULL;
int k, r;
int k, r;
@@
-228,6
+234,7
@@
int session_load(Session *s) {
"SERVICE", &s->service,
"VTNR", &vtnr,
"LEADER", &leader,
"SERVICE", &s->service,
"VTNR", &vtnr,
"LEADER", &leader,
+ "TYPE", &type,
NULL);
if (r < 0)
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);
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",
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);
};
DEFINE_STRING_TABLE_LOOKUP(session_type, SessionType);