altos: Support negative decimal values on command line
[fw/altos] / src / kernel / ao_cmd.c
index 9bc19038d6c6c82e65c4251d8ddf44ca8499cc06..4ae63781fcb0900e39acdfc02ad8f737819d4b03 100644 (file)
@@ -205,8 +205,13 @@ ao_cmd_decimal(void)
 {
        uint32_t result = 0;
        uint8_t r = ao_cmd_lex_error;
+       bool negative = false;
 
        ao_cmd_white();
+       if (ao_cmd_lex_c == '-') {
+               negative = true;
+               ao_cmd_lex();
+       }
        for(;;) {
                if ('0' <= ao_cmd_lex_c && ao_cmd_lex_c <= '9')
                        result = result * 10 + (ao_cmd_lex_c - '0');
@@ -217,6 +222,8 @@ ao_cmd_decimal(void)
        }
        if (r != ao_cmd_success)
                ao_cmd_status = r;
+       if (negative)
+               result = -result;
        return result;
 }