chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use "Out of memory." consistantly (or with "\n")
[elogind.git]
/
src
/
login
/
logind-user.c
diff --git
a/src/login/logind-user.c
b/src/login/logind-user.c
index 8bd773086e11a6653a03122ee328c6b28b25517e..fca68159a7c556e43f48c96fde23aeb1beae235c 100644
(file)
--- a/
src/login/logind-user.c
+++ b/
src/login/logind-user.c
@@
-259,10
+259,8
@@
static int user_mkdir_runtime_path(User *u) {
}
if (!u->runtime_path) {
}
if (!u->runtime_path) {
- p = strappend("/run/user/", u->name);
-
- if (!p) {
- log_error("Out of memory");
+ if (asprintf(&p, "/run/user/%lu", (unsigned long) u->uid) < 0) {
+ log_error("Out of memory.");
return -ENOMEM;
}
} else
return -ENOMEM;
}
} else
@@
-289,7
+287,7
@@
static int user_create_cgroup(User *u) {
if (!u->cgroup_path) {
if (asprintf(&p, "%s/%s", u->manager->cgroup_path, u->name) < 0) {
if (!u->cgroup_path) {
if (asprintf(&p, "%s/%s", u->manager->cgroup_path, u->name) < 0) {
- log_error("Out of memory");
+ log_error("Out of memory
.
");
return -ENOMEM;
}
} else
return -ENOMEM;
}
} else
@@
-523,9
+521,21
@@
int user_get_idle_hint(User *u, dual_timestamp *t) {
return idle_hint;
}
return idle_hint;
}
+static int user_check_linger_file(User *u) {
+ char *p;
+ int r;
+
+ if (asprintf(&p, "/var/lib/systemd/linger/%s", u->name) < 0)
+ return -ENOMEM;
+
+ r = access(p, F_OK) >= 0;
+ free(p);
+
+ return r;
+}
+
int user_check_gc(User *u, bool drop_not_started) {
int r;
int user_check_gc(User *u, bool drop_not_started) {
int r;
- char *p;
assert(u);
assert(u);
@@
-535,13
+545,7
@@
int user_check_gc(User *u, bool drop_not_started) {
if (u->sessions)
return 1;
if (u->sessions)
return 1;
- if (asprintf(&p, "/var/lib/systemd/linger/%s", u->name) < 0)
- return -ENOMEM;
-
- r = access(p, F_OK) >= 0;
- free(p);
-
- if (r > 0)
+ if (user_check_linger_file(u) > 0)
return 1;
if (u->cgroup_path) {
return 1;
if (u->cgroup_path) {
@@
-571,14
+575,17
@@
UserState user_get_state(User *u) {
assert(u);
assert(u);
- if (!u->sessions)
- return USER_LINGERING;
-
LIST_FOREACH(sessions_by_user, i, u->sessions)
if (session_is_active(i))
return USER_ACTIVE;
LIST_FOREACH(sessions_by_user, i, u->sessions)
if (session_is_active(i))
return USER_ACTIVE;
- return USER_ONLINE;
+ if (u->sessions)
+ return USER_ONLINE;
+
+ if (user_check_linger_file(u) > 0)
+ return USER_LINGERING;
+
+ return USER_CLOSING;
}
int user_kill(User *u, int signo) {
}
int user_kill(User *u, int signo) {
@@
-609,7
+616,8
@@
static const char* const user_state_table[_USER_STATE_MAX] = {
[USER_OFFLINE] = "offline",
[USER_LINGERING] = "lingering",
[USER_ONLINE] = "online",
[USER_OFFLINE] = "offline",
[USER_LINGERING] = "lingering",
[USER_ONLINE] = "online",
- [USER_ACTIVE] = "active"
+ [USER_ACTIVE] = "active",
+ [USER_CLOSING] = "closing"
};
DEFINE_STRING_TABLE_LOOKUP(user_state, UserState);
};
DEFINE_STRING_TABLE_LOOKUP(user_state, UserState);