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: write rules files atomically
[elogind.git]
/
src
/
logind-session.c
diff --git
a/src/logind-session.c
b/src/logind-session.c
index bc1b9b77ca31858b1e1d13404c30a33dc91d7da5..ab4de66ca4d8c4bc90eb521a72029476296a0a82 100644
(file)
--- a/
src/logind-session.c
+++ b/
src/logind-session.c
@@
-380,13
+380,15
@@
static int session_link_x11_socket(Session *s) {
return -ENOENT;
}
return -ENOENT;
}
- t = strappend(s->user->runtime_path, "/display");
+ t = strappend(s->user->runtime_path, "/
X11/
display");
if (!t) {
log_error("Out of memory");
free(f);
return -ENOMEM;
}
if (!t) {
log_error("Out of memory");
free(f);
return -ENOMEM;
}
+ mkdir_parents(t, 0755);
+
if (link(f, t) < 0) {
if (errno == EEXIST) {
unlink(t);
if (link(f, t) < 0) {
if (errno == EEXIST) {
unlink(t);
@@
-638,7
+640,7
@@
static int session_unlink_x11_socket(Session *s) {
s->user->display = NULL;
s->user->display = NULL;
- t = strappend(s->user->runtime_path, "/display");
+ t = strappend(s->user->runtime_path, "/
X11/
display");
if (!t) {
log_error("Out of memory");
return -ENOMEM;
if (!t) {
log_error("Out of memory");
return -ENOMEM;
@@
-787,6
+789,10
@@
int session_create_fifo(Session *s) {
/* Create FIFO */
if (!s->fifo_path) {
/* Create FIFO */
if (!s->fifo_path) {
+ r = safe_mkdir("/run/systemd/sessions", 0755, 0, 0);
+ if (r < 0)
+ return r;
+
if (asprintf(&s->fifo_path, "/run/systemd/sessions/%s.ref", s->id) < 0)
return -ENOMEM;
if (asprintf(&s->fifo_path, "/run/systemd/sessions/%s.ref", s->id) < 0)
return -ENOMEM;