diff options
Diffstat (limited to 'apps/misc.c')
-rw-r--r-- | apps/misc.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/misc.c b/apps/misc.c index 747abe076b..d0300f0a4f 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -967,6 +967,7 @@ const char* parse_list(const char *fmt, uint32_t *set_vals, | |||
967 | const char** s; | 967 | const char** s; |
968 | int* d; | 968 | int* d; |
969 | bool set, is_negative; | 969 | bool set, is_negative; |
970 | bool is_last_var; | ||
970 | int i=0; | 971 | int i=0; |
971 | 972 | ||
972 | va_start(ap, str); | 973 | va_start(ap, str); |
@@ -981,6 +982,7 @@ const char* parse_list(const char *fmt, uint32_t *set_vals, | |||
981 | goto err; | 982 | goto err; |
982 | p++; | 983 | p++; |
983 | } | 984 | } |
985 | is_last_var = fmt[1] == '\0'; | ||
984 | set = false; | 986 | set = false; |
985 | switch (*fmt++) | 987 | switch (*fmt++) |
986 | { | 988 | { |
@@ -988,9 +990,9 @@ const char* parse_list(const char *fmt, uint32_t *set_vals, | |||
988 | s = va_arg(ap, const char **); | 990 | s = va_arg(ap, const char **); |
989 | 991 | ||
990 | *s = p; | 992 | *s = p; |
991 | while (*p && *p != sep) | 993 | while (*p && *p != sep && *p != ')') |
992 | p++; | 994 | p++; |
993 | set = (s[0][0]!='-') && (s[0][1]!=sep) ; | 995 | set = (s[0][0]!='-') && (s[0][1]!=sep && s[0][1]!=')') ; |
994 | break; | 996 | break; |
995 | 997 | ||
996 | case 'd': /* int */ | 998 | case 'd': /* int */ |
@@ -1028,7 +1030,7 @@ const char* parse_list(const char *fmt, uint32_t *set_vals, | |||
1028 | { | 1030 | { |
1029 | if (!set_vals || *p != '-') | 1031 | if (!set_vals || *p != '-') |
1030 | goto err; | 1032 | goto err; |
1031 | while (*p && *p != sep) | 1033 | while (*p && *p != sep && (!is_last_var || (is_last_var && *p!=')'))) |
1032 | p++; | 1034 | p++; |
1033 | } | 1035 | } |
1034 | else | 1036 | else |
@@ -1053,7 +1055,7 @@ const char* parse_list(const char *fmt, uint32_t *set_vals, | |||
1053 | goto err; | 1055 | goto err; |
1054 | else | 1056 | else |
1055 | { | 1057 | { |
1056 | while (*p && *p != sep) | 1058 | while (*p && *p != sep && (!is_last_var || (is_last_var && *p!=')'))) |
1057 | p++; | 1059 | p++; |
1058 | } | 1060 | } |
1059 | 1061 | ||