chiark / gitweb /
core: always create /dev/kdbus/ns (and make it private 0700) after setting up the...
[elogind.git] / src / sleep / sleep.c
index a56ab89e544133d36cbd03400e333f4c270dac0f..bf673549f1a835114fd4b9e096a7c330c5f93de2 100644 (file)
@@ -57,15 +57,14 @@ static int write_mode(char **modes) {
         return r;
 }
 
-static int write_state(FILE *f0, char **states) {
-        FILE _cleanup_fclose_ *f = f0;
+static int write_state(FILE **f, char **states) {
         char **state;
         int r = 0;
 
         STRV_FOREACH(state, states) {
                 int k;
 
-                k = write_string_to_file(f, *state);
+                k = write_string_to_file(*f, *state);
                 if (k == 0)
                         return 0;
                 log_debug("Failed to write '%s' to /sys/power/state: %s",
@@ -73,9 +72,9 @@ static int write_state(FILE *f0, char **states) {
                 if (r == 0)
                         r = k;
 
-                fclose(f);
-                f = fopen("/sys/power/state", "we");
-                if (!f) {
+                fclose(*f);
+                *f = fopen("/sys/power/state", "we");
+                if (!*f) {
                         log_error("Failed to open /sys/power/state: %m");
                         return -errno;
                 }
@@ -87,7 +86,7 @@ static int write_state(FILE *f0, char **states) {
 static int execute(char **modes, char **states) {
         char* arguments[4];
         int r;
-        FILE *f;
+        _cleanup_fclose_ FILE *f = NULL;
         const char* note = strappenda("SLEEP=", arg_verb);
 
         /* This file is opened first, so that if we hit an error,
@@ -115,7 +114,7 @@ static int execute(char **modes, char **states) {
                    note,
                    NULL);
 
-        r = write_state(f, states);
+        r = write_state(&f, states);
         if (r < 0)
                 return r;
 
@@ -154,7 +153,7 @@ static int parse_argv(int argc, char *argv[]) {
         static const struct option options[] = {
                 { "help",         no_argument,       NULL, 'h'           },
                 { "version",      no_argument,       NULL, ARG_VERSION   },
-                { NULL,           0,                 NULL, 0             }
+                {}
         };
 
         int c;
@@ -165,8 +164,7 @@ static int parse_argv(int argc, char *argv[]) {
         while ((c = getopt_long(argc, argv, "+h", options, NULL)) >= 0)
                 switch(c) {
                 case 'h':
-                        help();
-                        return 0 /* done */;
+                        return help();
 
                 case ARG_VERSION:
                         puts(PACKAGE_STRING);
@@ -177,8 +175,7 @@ static int parse_argv(int argc, char *argv[]) {
                         return -EINVAL;
 
                 default:
-                        log_error("Unknown option code %c", c);
-                        return -EINVAL;
+                        assert_not_reached("Unhandled option");
                 }
 
         if (argc - optind != 1) {