- endch = 'c';
- new->o_data = find_parsenum(new, "-size", arg, &endch);
- if (endch == 'c')
- divsize = 0;
+ new->o_data = find_parsenum(new, "-size", arg, &endp);
+ if (endp) {
+ if (strlen(endp) > 1)
+ errx(1, "invalid postfix '%s'", endp);
+
+ switch (*endp) {
+ case 'c':
+ divsize = 1;
+ break;
+ case 'k':
+ divsize = 1024;
+ break;
+ case 'm':
+ divsize = 1024 * 1024;
+ break;
+ case 'g':
+ divsize = 1024 * 1024 * UINT64_C(1024);
+ break;
+ case 't':
+ divsize = 1024 * 1024 * UINT64_C(1024) * 1024;
+ break;
+ case 'p':
+ divsize = 1024 * 1024 * UINT64_C(1024) * 1024 * 1024;
+ break;
+ default:
+ errx(1, "unknown postfix '%c'", *endp);
+ }
+ }
return (new);
}
I like the idea of this change. Just curious - did you choose to ignore
scan_scaled(3)?