From 24b52437dd3c06bfdbead8f08114e4b6575dea69 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 28 Apr 2015 16:46:06 +0200 Subject: fsck: parse kernel cmdline booleans the same ways as the rest --- src/fsck/fsck.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/fsck/fsck.c') diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c index 6a0f67f6e9..297ea9efdc 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 -- cgit v1.2.3-54-g00ecf