On Apr 26, 2008, at 4:35 PM, Romain Tartière wrote:

Hello FreeBSD hackers!

I'm using avr-gcc from the ports and relying on the 0b prefix notation
for binary constants, that is:

        foo = 0b00101010;

Thanks to /usr/ports/devel/avr-gcc/files/patch-0b-constants this is
possible :-)

But I would like to use indent(1) to reformat contributed code
automatically. Unfortunately, the 0b notation is not supported by that
program, and the resulting code looks like this:

        foo = 0 b00101010;

... then compilation fails, bla bla bla...

A quick look at indent(1) source code leaded me to tweak
/usr/src/usr.bin/indent/lexi.c so that the 0b notation is supported
(patch attached).

I was so wondering how useful(less) it was to support this extension in
FreeBSD indent(1) program. The version of gcc provided with the base
system does not support this syntax, and AFAIK, only the avr-gcc port
support this kind of constructs...

So options are:
  - Add support for 0b notation to FreeBSD indent(1) (maybe requiring
    the use of an extra command line argument to support this feature);
  - Provide a patch for indent(1) that can be conditionally applied on
    the code when compiling the world;
- Create another port, say avr-indent(1), that is not more than a copy
    of indent(1) with support of 0b constructs;
  - Do nothing: tweaking indent(1) for supporting this is so trivial
    that the few individuals interested in this can have their local
    version of indent.

Can you please tell me your opinion about this?

Thank you in advance,
Romain

PS: I also took a look at GNU indent (gindent(1) from the ports), but it
does not support 0b notation too.

--
Romain Tartière <[EMAIL PROTECTED]> http://romain.blogreen.org/ pgp: 8DAB A124 0DA4 7024 F82A E748 D8E9 A33F FF56 FF43 (ID: 0xFF56FF43) (plain text =non-HTML= PGP/GPG encrypted/signed e-mail much appreciated)


Why not just have a base2.h file that is a list of defines such as:

#define b00000001 1
#define b00000010 2

Then you just use a b00 syntax, perfectly valid, and all's well everywhere. Considering that the 0b syntax isn't valid without a patch that's only available with one compiler that's probably not regularly used, it'd probably be much more maintainable and not require anyone compiling the program to install that specific port with that specific patch.

But of course, writing software that deals directly with bit fiddling is annoying without using binary representation.

The man page for indent does say "it has a 'forgiving' parser" so I don't see why it can't just treat any token starting with a zero as special, treat 0b01, 0x0A, 0f4 and 010 as a number regardless of the base, even if it doesn't know the base.
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to