log: debug level is between silent and debug output levels
authorØyvind Harboe <oyvind.harboe@zylin.com>
Thu, 24 Feb 2011 14:37:03 +0000 (15:37 +0100)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Fri, 25 Feb 2011 15:36:42 +0000 (16:36 +0100)
It wasn't previously possible to silence the output.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
src/helper/log.c

index b6fab016962e0941b0e451557379f89c1849ae5a..8a8f08a709041201cedd354d52765bb865eadeff 100644 (file)
@@ -224,19 +224,18 @@ void log_printf_lf(enum log_levels level, const char *file, unsigned line, const
        va_end(ap);
 }
 
-/* change the current debug level on the fly
- * 0: only ERRORS
- * 1: + WARNINGS
- * 2: + INFORMATIONAL MSGS
- * 3: + DEBUG MSGS
- */
 COMMAND_HANDLER(handle_debug_level_command)
 {
        if (CMD_ARGC == 1)
        {
-               unsigned new_level;
-               COMMAND_PARSE_NUMBER(uint, CMD_ARGV[0], new_level);
-               debug_level = MIN(new_level, LOG_LVL_DEBUG);
+               int new_level;
+               COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], new_level);
+               if ((debug_level > LOG_LVL_DEBUG) || (new_level < LOG_LVL_SILENT))
+               {
+                       LOG_ERROR("level must be between %d and %d", LOG_LVL_SILENT, LOG_LVL_DEBUG);
+                       return ERROR_COMMAND_SYNTAX_ERROR;
+               }
+               debug_level = new_level;
        }
        else if (CMD_ARGC > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;