commit ecb351f1d58f0be6bbaea73786b1c9a1b9d16151
Author: FRIGN <[email protected]>
AuthorDate: Mon Oct 26 12:52:14 2015 +0100
Commit: sin <[email protected]>
CommitDate: Mon Oct 26 11:55:41 2015 +0000
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.
diff --git a/od.c b/od.c
index 0c361e2..4b3023b 100644
--- 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;