mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 18:27:04 +03:00
logind: save/restore session type
This commit is contained in:
parent
31b79c2b4a
commit
a91e4e5337
@ -136,6 +136,11 @@ int session_save(Session *s) {
|
|||||||
s->remote,
|
s->remote,
|
||||||
s->kill_processes);
|
s->kill_processes);
|
||||||
|
|
||||||
|
if (s->type >= 0)
|
||||||
|
fprintf(f,
|
||||||
|
"TYPE=%s\n",
|
||||||
|
session_type_to_string(s->type));
|
||||||
|
|
||||||
if (s->cgroup_path)
|
if (s->cgroup_path)
|
||||||
fprintf(f,
|
fprintf(f,
|
||||||
"CGROUP=%s\n",
|
"CGROUP=%s\n",
|
||||||
@ -210,7 +215,8 @@ int session_load(Session *s) {
|
|||||||
*seat = NULL,
|
*seat = NULL,
|
||||||
*vtnr = NULL,
|
*vtnr = NULL,
|
||||||
*leader = 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,
|
"SERVICE", &s->service,
|
||||||
"VTNR", &vtnr,
|
"VTNR", &vtnr,
|
||||||
"LEADER", &leader,
|
"LEADER", &leader,
|
||||||
|
"TYPE", &type,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (r < 0)
|
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:
|
finish:
|
||||||
free(remote);
|
free(remote);
|
||||||
free(kill_processes);
|
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] = {
|
static const char* const session_type_table[_SESSION_TYPE_MAX] = {
|
||||||
[SESSION_TTY] = "tty",
|
[SESSION_TTY] = "tty",
|
||||||
[SESSION_X11] = "x11",
|
[SESSION_X11] = "x11",
|
||||||
[SESSION_OTHER] = "other"
|
[SESSION_UNSPECIFIED] = "unspecified"
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_STRING_TABLE_LOOKUP(session_type, SessionType);
|
DEFINE_STRING_TABLE_LOOKUP(session_type, SessionType);
|
||||||
|
@ -31,9 +31,9 @@ typedef struct Session Session;
|
|||||||
#include "logind-user.h"
|
#include "logind-user.h"
|
||||||
|
|
||||||
typedef enum SessionType {
|
typedef enum SessionType {
|
||||||
|
SESSION_UNSPECIFIED,
|
||||||
SESSION_TTY,
|
SESSION_TTY,
|
||||||
SESSION_X11,
|
SESSION_X11,
|
||||||
SESSION_OTHER,
|
|
||||||
_SESSION_TYPE_MAX,
|
_SESSION_TYPE_MAX,
|
||||||
_SESSION_TYPE_INVALID = -1
|
_SESSION_TYPE_INVALID = -1
|
||||||
} SessionType;
|
} SessionType;
|
||||||
|
Loading…
Reference in New Issue
Block a user