]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fsck: parse kernel cmdline booleans the same ways as the rest
authorLennart Poettering <lennart@poettering.net>
Tue, 28 Apr 2015 14:46:06 +0000 (16:46 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 28 Apr 2015 15:30:00 +0000 (17:30 +0200)
src/fsck/fsck.c

index 6a0f67f6e9e0a8773d22d75a14ad8af83c9cd8cb..297ea9efdc5034bb6b84cb96234229a6d52e2af7 100644 (file)
@@ -73,10 +73,13 @@ static void start_target(const char *target) {
 
         /* Don't print a warning if we aren't called during startup */
         if (r < 0 && !sd_bus_error_has_name(&error, BUS_ERROR_NO_SUCH_JOB))
-                log_error("Failed to start unit: %s", bus_error_message(&error, -r));
+                log_error("Failed to start unit: %s", bus_error_message(&error, r));
 }
 
 static int parse_proc_cmdline_item(const char *key, const char *value) {
+        int r;
+
+        assert(key);
 
         if (streq(key, "fsck.mode") && value) {
 
@@ -93,12 +96,15 @@ static int parse_proc_cmdline_item(const char *key, const char *value) {
 
                 if (streq(value, "preen"))
                         arg_repair = "-a";
-                else if (streq(value, "yes"))
-                        arg_repair = "-y";
-                else if (streq(value, "no"))
-                        arg_repair = "-n";
-                else
-                        log_warning("Invalid fsck.repair= parameter '%s'. Ignoring.", value);
+                else {
+                        r = parse_boolean(value);
+                        if (r > 0)
+                                arg_repair = "-y";
+                        else if (r == 0)
+                                arg_repair = "-n";
+                        else
+                                log_warning("Invalid fsck.repair= parameter '%s'. Ignoring.", value);
+                }
         }
 
 #ifdef HAVE_SYSV_COMPAT