chiark / gitweb /
bus: log message parsing errors everywhere with a generalized bus_log_parse_error()
[elogind.git] / src / login / inhibit.c
index 404881be6ef7aaa2d6b85552c2fd85838df948c7..e20af74ef0949d873b9f44b93ec6e4aa0021d61a 100644 (file)
@@ -62,7 +62,7 @@ static int inhibit(sd_bus *bus, sd_bus_error *error) {
 
         r = sd_bus_message_read_basic(reply, SD_BUS_TYPE_UNIX_FD, &fd);
         if (r < 0)
-                return -EIO;
+                return r;
 
         r = dup(fd);
         if (r < 0)
@@ -160,7 +160,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "why",          required_argument, NULL, ARG_WHY          },
                 { "mode",         required_argument, NULL, ARG_MODE         },
                 { "list",         no_argument,       NULL, ARG_LIST         },
-                { NULL,           0,                 NULL, 0                }
+                {}
         };
 
         int c;
@@ -173,8 +173,7 @@ static int parse_argv(int argc, char *argv[]) {
                 switch (c) {
 
                 case 'h':
-                        help();
-                        return 0;
+                        return help();
 
                 case ARG_VERSION:
                         puts(PACKAGE_STRING);
@@ -201,9 +200,11 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_action = ACTION_LIST;
                         break;
 
-                default:
-                        log_error("Unknown option code %c", c);
+                case '?':
                         return -EINVAL;
+
+                default:
+                        assert_not_reached("Unhandled option");
                 }
         }