const char *typehelp[] = {
"invalid",
"string (opt=bla)",
+ "string (opt=bla)",
"string with possible k/m/g postfix (opt=4k)",
"string with time postfix (opt=10s)",
"string (opt=bla)",
static unsigned long long get_mult_bytes(const char *str, int len, void *data)
{
- const char *p;
+ const char *p = str;
if (len < 2)
return __get_mult_bytes(str, data);
- /*
- * if the last char is 'b' or 'B', the user likely used
- * "1gb" instead of just "1g". If the second to last is also
- * a letter, adjust.
- */
- p = str + len - 1;
- while (isalpha(*(p - 1)))
- p--;
- if (!isalpha(*p))
+ /*
+ * Go forward until we hit a non-digit
+ */
+ while ((p - str) <= len) {
+ if (!isdigit((int) *p))
+ break;
+ p++;
+ }
+
+ if (!isalpha((int) *p))
p = NULL;
return __get_mult_bytes(p, data);
{
char *s = *p;
- while (isspace(*s))
+ while (isspace((int) *s))
s++;
*p = s;
p = s;
s = p + strlen(p);
- while ((isspace(*s) || iscntrl(*s)) && (s > start))
+ while ((isspace((int) *s) || iscntrl((int) *s)) && (s > start))
s--;
*(s + 1) = '\0';