Bruce Korb wrote: > So, I've now had another gander now, too. > A small doc tweak and coding aesthetics issue:
This should probably be applied. I don't have "push" privs on the repository. What should I do? Thanks. - Bruce > $ diff -up gnulib/ChangeLog gnulib-clone/ChangeLog > --- gnulib/ChangeLog 2008-12-21 08:47:26.000000000 -0800 > +++ gnulib-clone/ChangeLog 2008-12-21 11:50:18.000000000 -0800 > @@ -1,3 +1,8 @@ > +2008-11-17 Bruce Korb <bk...@gnu.org> > + > + * lib/parse-duration.h: non-iso form accepts years, months weeks, too > + * lib/parse-duration.c: use a switch instead of cascading if's. > + > 2008-12-21 Bruno Haible <br...@clisp.org> > > Work around a btowc() bug on IRIX 6.5. > $ diff -up gnulib/lib/parse-duration.c gnulib-clone/lib/parse-duration.c > --- gnulib/lib/parse-duration.c 2008-12-21 08:47:26.000000000 -0800 > +++ gnulib-clone/lib/parse-duration.c 2008-12-21 11:37:45.000000000 -0800 > @@ -566,38 +566,24 @@ parse_non_iso8601(cch_t * pz) > time_t > parse_duration (char const * pz) > { > - time_t res = 0; > - > while (isspace ((unsigned char)*pz)) > pz++; > > - do { > - if (*pz == 'P') > - { > - res = parse_period (pz + 1); > - if (res == BAD_TIME) > - break; > - return res; > - } > - > - if (*pz == 'T') > - { > - res = parse_time (pz + 1); > - if (res == BAD_TIME) > - break; > - return res; > - } > - > - if (! isdigit ((unsigned char)*pz)) > - break; > - > - res = parse_non_iso8601 (pz); > - if (res != BAD_TIME) > - return res; > - > - } while (0); > - > - return BAD_TIME; > + switch (*pz) > + { > + case 'P': > + return parse_period (pz + 1); > + > + case 'T': > + return parse_time (pz + 1); > + > + default: > + if (isdigit ((unsigned char)*pz)) > + return parse_non_iso8601 (pz); > + > + errno = EINVAL; > + return BAD_TIME; > + } > } > > /* > $ diff -up gnulib/lib/parse-duration.h gnulib-clone/lib/parse-duration.h > --- gnulib/lib/parse-duration.h 2008-12-21 08:47:26.000000000 -0800 > +++ gnulib-clone/lib/parse-duration.h 2008-12-21 11:41:19.000000000 -0800 > @@ -28,10 +28,12 @@ > > ==== if it is a digit > > - the string may contain: NNN d NNN h NNN m NNN s > - This represents NNN days, NNN hours, NNN minutes and NNN seconds. > + the string may contain: NNN Y NNN M NNN W NNN d NNN h NNN m NNN s > + This represents NNN years, NNN months, NNN weeks, NNN days, NNN hours, > + NNN minutes and NNN seconds. > The embeded white space is optional. > These terms must appear in this order. > + Case is significant: 'M' is months and 'm' is minutes. > The final "s" is optional. > All of the terms ("NNN" plus designator) are optional. > Minutes and seconds may optionally be represented as NNN:NNN. >