goto ret;
}
- nb = argconfig_parse_comma_sep_array(cfg.nlbs, (int *)nlbs, ARRAY_SIZE(nlbs));
+ nb = argconfig_parse_comma_sep_array_short(cfg.nlbs, nlbs, ARRAY_SIZE(nlbs));
ns = argconfig_parse_comma_sep_array_long(cfg.slbas, slbas, ARRAY_SIZE(slbas));
if (cfg.format == 0)
}
}
+int argconfig_parse_comma_sep_array_short(char *string, unsigned short *val,
+ unsigned max_length)
+{
+ int ret = 0;
+ unsigned long v;
+ char *tmp;
+ char *p;
+
+ if (!string || !strlen(string))
+ return 0;
+
+ tmp = strtok(string, ",");
+ if (!tmp)
+ return 0;
+
+ v = strtoul(tmp, &p, 0);
+ if (*p != 0)
+ return -1;
+ if (v > UINT16_MAX) {
+ fprintf(stderr, "%s out of range\n", tmp);
+ return -1;
+ }
+ val[ret] = v;
+ ret++;
+
+ while (1) {
+ tmp = strtok(NULL, ",");
+ if (tmp == NULL)
+ return ret;
+
+ if (ret >= max_length)
+ return -1;
+
+ v = strtoul(tmp, &p, 0);
+ if (*p != 0)
+ return -1;
+ if (v > UINT16_MAX) {
+ fprintf(stderr, "%s out of range\n", tmp);
+ return -1;
+ }
+ val[ret] = v;
+ ret++;
+ }
+}
+
int argconfig_parse_comma_sep_array_long(char *string,
unsigned long long *val,
unsigned max_length)
size_t max_options);
int argconfig_parse_comma_sep_array(char *string, int *ret,
unsigned max_length);
+int argconfig_parse_comma_sep_array_short(char *string, unsigned short *ret,
+ unsigned max_length);
int argconfig_parse_comma_sep_array_long(char *string,
unsigned long long *ret,
unsigned max_length);