when the -t flag is used without a number of bytes, od exits with
usage(). 'od -tx foo' should behave like 'od -tx4 foo'.

---
 od.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/od.c b/od.c
index 0b1c5c6..1780710 100644
--- a/od.c
+++ b/od.c
@@ -250,6 +250,7 @@ main(int argc, char *argv[])
                break;
        case 't':
                s = EARGF(usage());
+               int done = 0;
                for (; *s; s++) {
                        switch (*s) {
                        case 'a':
@@ -277,11 +278,15 @@ main(int argc, char *argv[])
                                        case 'L':
                                                len = sizeof(long);
                                                break;
-                                       default:
+                                       case '\0':
                                                len = sizeof(int);
+                                               done = 1;
+                                               break;
+                                       default:
+                                               usage();
                                        }
                                }
-                               addtype(*s++, len);
+                               addtype(*(done ? s : s++), len);
                                break;
                        default:
                                usage();
-- 
2.20.1


Reply via email to