On 2020-02-16, Quentin Rameau <quinq@fifth.space> wrote: > I think something like that is better, what do you think?
Thanks, this looks good to me. Please resend with a commit message. > diff --git a/od.c b/od.c > index 0b1c5c6..9ff8ff2 100644 > --- a/od.c > +++ b/od.c > @@ -212,7 +212,7 @@ main(int argc, char *argv[]) > { > int fd; > struct type *t; > - int ret = 0, len; > + int ret = 0, len, defbytes; > char *s; > > big_endian = (*(uint16_t *)"\0\xff" == 0xff); > @@ -260,6 +260,7 @@ main(int argc, char *argv[]) > case 'o': > case 'u': > case 'x': > + defbytes = 0; > /* todo: allow multiple digits */ > if (*(s+1) > '0' && *(s+1) <= '9') { > len = *(s+1) - '0'; > @@ -271,17 +272,17 @@ main(int argc, char *argv[]) > case 'S': > len = sizeof(short); > break; > + default: > + defbytes = 1; > case 'I': > len = sizeof(int); > break; > case 'L': > len = sizeof(long); > break; > - default: > - len = sizeof(int); > } > } > - addtype(*s++, len); > + addtype(defbytes ? *s : *s++, len); I think the increment should be separate for clarity; defbytes isn't really controlling the parameter, just whether or not s is advanced. addtype(*s, len); if (!defbytes) s++; > break; > default: > usage(); > >