commit ecb351f1d58f0be6bbaea73786b1c9a1b9d16151
parent 1eff1e8214568e68dcd97b71adcdb0626d77407d
Author: FRIGN <dev@frign.de>
Date: Mon, 26 Oct 2015 12:52:14 +0100
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.
Diffstat:
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/od.c b/od.c
@@ -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;