Properly parse numbers in od(1)

Previously, it'd drop right through in the number case and return
crazy-long numbers (like 28 for L), resulting in unexpected behaviour.
This commit is contained in:
FRIGN 2015-10-26 12:52:14 +01:00 committed by sin
parent 1eff1e8214
commit ecb351f1d5
1 changed files with 3 additions and 4 deletions

7
od.c
View File

@ -224,11 +224,10 @@ main(int argc, char *argv[])
case 'x':
t->format = *s;
/* todo: allow multiple digits */
if (*(s+1) > '0' || *(s+1) <= '9') {
t->len = *(s+1) - '0';
s++;
if (*(s+1) > '0' && *(s+1) <= '9') {
t->len = *(++s) - '0';
} else {
switch (*(s + 1)) {
switch (*(++s)) {
case 'C':
t->len = sizeof(char);
break;