summaryrefslogtreecommitdiff
path: root/apps/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/misc.c')
-rw-r--r--apps/misc.c10
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