On Fri, Jan 16, 2015 at 09:43:36PM +0000, Miod Vallat wrote:
> > Floating point constants default to double precision and can be made
> > single precision with a 'f' or 'F' suffix or long double precision
> > with 'l' or 'L'.
> >
> > It turns out indent only knows about 'u'/'U' and 'l'/'L' suffixes and
> > will add a space between floating point constants and the suffix if
> > 'f' or 'F' is used which results in code that won't compile.
>
> Your diff will allow for `fl' suffixes. What about doing
> seensfx |= 1 | 2;
> to make sure a forthcoming `l' suffix gets rejected?
Well it is out of the loop for u/l so it doesn't look like
that is possible?
Running the patched indent on "1.0fl" gives me "1.0f l"
>
> > Index: lexi.c
> > ===================================================================
> > RCS file: /cvs/src/usr.bin/indent/lexi.c,v
> > retrieving revision 1.17
> > diff -u -p -r1.17 lexi.c
> > --- lexi.c 11 Oct 2014 03:05:48 -0000 1.17
> > +++ lexi.c 16 Jan 2015 13:07:26 -0000
> > @@ -202,6 +202,12 @@ lexi(void)
> > }
> > break;
> > }
> > + if (!(seensfx & 1) &&
> > + (*buf_ptr == 'F' || *buf_ptr == 'f')) {
> > + CHECK_SIZE_TOKEN;
> > + *e_token++ = *buf_ptr++;
> > + seensfx |= 1;
> > + }
> > }
> > else
> > while (chartype[(int)*buf_ptr] == alphanum) { /* copy it over
> > */
> >
>