X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-inhibit.c;h=a9f76d6c4ed29c963ac986c1936350f9e87e4e83;hb=21ecddbbb2c9e06d080b2526a870898a8b90f52a;hp=64a62ffeae6f51b0f3f86aed4e39aa6275621006;hpb=de0671ee7fe465e108f62dcbbbe9366f81dd9e9a;p=elogind.git diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index 64a62ffea..a9f76d6c4 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -26,9 +26,9 @@ #include "util.h" #include "mkdir.h" -#include "path-util.h" #include "logind-inhibit.h" #include "fileio.h" +#include "formats-util.h" Inhibitor* inhibitor_new(Manager *m, const char* id) { Inhibitor *i; @@ -109,20 +109,24 @@ int inhibitor_save(Inhibitor *i) { _cleanup_free_ char *cc = NULL; cc = cescape(i->who); - if (!cc) + if (!cc) { r = -ENOMEM; - else - fprintf(f, "WHO=%s\n", cc); + goto fail; + } + + fprintf(f, "WHO=%s\n", cc); } if (i->why) { _cleanup_free_ char *cc = NULL; cc = cescape(i->why); - if (!cc) + if (!cc) { r = -ENOMEM; - else - fprintf(f, "WHY=%s\n", cc); + goto fail; + } + + fprintf(f, "WHY=%s\n", cc); } if (i->fifo_path) @@ -138,7 +142,7 @@ int inhibitor_save(Inhibitor *i) { finish: if (r < 0) - log_error("Failed to save inhibit data %s: %s", i->state_file, strerror(-r)); + log_error_errno(r, "Failed to save inhibit data %s: %m", i->state_file); return r; } @@ -232,18 +236,18 @@ int inhibitor_load(Inhibitor *i) { } if (who) { - cc = cunescape(who); - if (!cc) - return -ENOMEM; + r = cunescape(who, 0, &cc); + if (r < 0) + return r; free(i->who); i->who = cc; } if (why) { - cc = cunescape(why); - if (!cc) - return -ENOMEM; + r = cunescape(why, 0, &cc); + if (r < 0) + return r; free(i->why); i->why = cc; @@ -371,7 +375,7 @@ bool manager_is_inhibited( Inhibitor *i; Iterator j; - struct dual_timestamp ts = { 0, 0 }; + struct dual_timestamp ts = DUAL_TIMESTAMP_NULL; bool inhibited = false; assert(m); @@ -439,23 +443,23 @@ const char *inhibit_what_to_string(InhibitWhat w) { InhibitWhat inhibit_what_from_string(const char *s) { InhibitWhat what = 0; - char *w, *state; + const char *word, *state; size_t l; - FOREACH_WORD_SEPARATOR(w, l, s, ":", state) { - if (l == 8 && strneq(w, "shutdown", l)) + FOREACH_WORD_SEPARATOR(word, l, s, ":", state) { + if (l == 8 && strneq(word, "shutdown", l)) what |= INHIBIT_SHUTDOWN; - else if (l == 5 && strneq(w, "sleep", l)) + else if (l == 5 && strneq(word, "sleep", l)) what |= INHIBIT_SLEEP; - else if (l == 4 && strneq(w, "idle", l)) + else if (l == 4 && strneq(word, "idle", l)) what |= INHIBIT_IDLE; - else if (l == 16 && strneq(w, "handle-power-key", l)) + else if (l == 16 && strneq(word, "handle-power-key", l)) what |= INHIBIT_HANDLE_POWER_KEY; - else if (l == 18 && strneq(w, "handle-suspend-key", l)) + else if (l == 18 && strneq(word, "handle-suspend-key", l)) what |= INHIBIT_HANDLE_SUSPEND_KEY; - else if (l == 20 && strneq(w, "handle-hibernate-key", l)) + else if (l == 20 && strneq(word, "handle-hibernate-key", l)) what |= INHIBIT_HANDLE_HIBERNATE_KEY; - else if (l == 17 && strneq(w, "handle-lid-switch", l)) + else if (l == 17 && strneq(word, "handle-lid-switch", l)) what |= INHIBIT_HANDLE_LID_SWITCH; else return _INHIBIT_WHAT_INVALID;