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 
> > */
> > 
> 

Reply via email to