logind: implement suspend/hibernate calls with inhibition logic

This commit is contained in:
Lennart Poettering
2012-05-08 19:02:25 +02:00
parent 6edd7d0a09
commit d889a2069a
11 changed files with 477 additions and 190 deletions
+25
View File
@@ -5590,3 +5590,28 @@ int getenv_for_pid(pid_t pid, const char *field, char **_value) {
return r;
}
int can_sleep(const char *type) {
char *p, *w, *state;
size_t l, k;
bool found = false;
int r;
assert(type);
r = read_one_line_file("/sys/power/state", &p);
if (r < 0)
return r == -ENOENT ? 0 : r;
k = strlen(type);
FOREACH_WORD_SEPARATOR(w, l, p, WHITESPACE, state) {
if (l == k && strncmp(w, type, l) == 0) {
found = true;
break;
}
}
free(p);
return found;
}
+2
View File
@@ -505,4 +505,6 @@ int setrlimit_closest(int resource, const struct rlimit *rlim);
int getenv_for_pid(pid_t pid, const char *field, char **_value);
int can_sleep(const char *type);
#endif