From: Lennart Poettering Date: Tue, 28 Apr 2015 14:46:06 +0000 (+0200) Subject: fsck: parse kernel cmdline booleans the same ways as the rest X-Git-Tag: v220~264 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=24b52437dd3c06bfdbead8f08114e4b6575dea69;p=thirdparty%2Fsystemd.git fsck: parse kernel cmdline booleans the same ways as the rest --- diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c index 6a0f67f6e9e..297ea9efdc5 100644 --- a/src/fsck/fsck.c +++ b/src/fsck/fsck.c @@ -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