cmd: log: Split off log level parsing
authorSean Anderson <seanga2@gmail.com>
Tue, 27 Oct 2020 23:55:33 +0000 (19:55 -0400)
committerTom Rini <trini@konsulko.com>
Fri, 30 Oct 2020 14:55:27 +0000 (10:55 -0400)
Move parsing of log level into its own function so it can be re-used. This
also adds support for using log level names instead of just the integer
equivalent.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
cmd/log.c

index 82e3a7b..651e503 100644 (file)
--- a/cmd/log.c
+++ b/cmd/log.c
 
 static char log_fmt_chars[LOGF_COUNT] = "clFLfm";
 
+static enum log_level_t parse_log_level(char *const arg)
+{
+       enum log_level_t ret;
+       ulong level;
+
+       if (!strict_strtoul(arg, 10, &level)) {
+               if (level > _LOG_MAX_LEVEL) {
+                       printf("Only log levels <= %d are supported\n",
+                              _LOG_MAX_LEVEL);
+                       return LOGL_NONE;
+               }
+               return level;
+       }
+
+       ret = log_get_level_by_name(arg);
+       if (ret == LOGL_NONE)
+               printf("Unknown log level \"%s\"\n", arg);
+       return ret;
+}
+
 static int do_log_level(struct cmd_tbl *cmdtp, int flag, int argc,
                        char *const argv[])
 {
        if (argc > 1) {
-               long log_level = simple_strtol(argv[1], NULL, 10);
+               enum log_level_t log_level = parse_log_level(argv[1]);
 
-               if (log_level < 0 || log_level > _LOG_MAX_LEVEL) {
-                       printf("Only log levels <= %d are supported\n",
-                              _LOG_MAX_LEVEL);
+               if (log_level == LOGL_NONE)
                        return CMD_RET_FAILURE;
-               }
                gd->default_log_level = log_level;
        } else {
                printf("Default log level: %d\n", gd->default_log_level);
        }
 
-       return 0;
+       return CMD_RET_SUCCESS;
 }
 
 static int do_log_format(struct cmd_tbl *cmdtp, int flag, int argc,