[Swan] initial thoughts on uncrustifying libreswan

Lennart Sorensen lsorense at csclub.uwaterloo.ca
Thu May 23 17:28:22 EEST 2013


On Thu, May 23, 2013 at 03:43:54AM -0400, D. Hugh Redelmeier wrote:
> Something like this is a really good idea.  The current source is a ragged 
> mess.
> 
> A radical suggestion is that all code checked into libreswan should be 
> uncrustified first.  This would ensure that the formatting was always 
> consistent.  I strongly support this.
> 
> == idempotence ==
> 
> Unfortunately, uncrustify doesn't seem to be idempotent:
> 	uncrustify(libreswan) != uncrustify(uncrustify(libreswan))
> 
> This concerns me.  It puts in doubt the idea of always uncrustifying.
> 
> I wonder if uncrustify reaches a fixed point, or if the source changes 
> with each application.  Is the format getting better each time?  I doubt 
> it.
> 
> 
> == mangling macro arguments containing IF ==
> 
> Kim found that certain calls of the DBG macro, ones where the argument 
> contains an if statement, confuse uncrustify.  To work around this, he
> patched the source to eliminate these statements, uncrustified, and
> then put them back.  This is only good as a manual process -- the
> temporary patches are fragile.
> 
> I'm testing a source code change that avoids the problem and doesn't
> make the source code too much uglier.
> 
> 
> == Stylistic changes I'd prefer ==
> 
> - when an expression is broken by an newline, normally at a binary
>   operator, put the operator at the start of the new line.
> 
>   This makes the structure of the program evident by scanning
>   only indentation and the leftmost token on a line.
> 
>   In the case of control expressions for IF, WHILE, etc.
>   the new line should be indented the same as the start of the
>   statement.
> 
> 	if (blah blah blah
> 	&& yack yack yack)
> 	{
> 		/* open brace is on its own line in this case */
> 	}
> 
> - I prefer a blank line after "break" or "return" not immediately
>   followed by closing brace.  This highlights the control-flow
>   exception.
> 
>   	if (ugh != NULL)
> 		return ugh;
> 
> 	/* all seems well */
> 
> - if an IF, WHILE, etc body is long enough to be broken, it should
>   probably be braced.
> 
>   Comment lines too mean braces should be used:
> 
> 	if (silly)
> 		/* should be braced */
> 		silly++;

I think it should always be braced.

Reason is:

When debuging, often you might do:

if (silly)
	silly++;

And turn it into:

if (silly)
	fprintf(stderr,"Silly was set to %d\n", silly);
	silly++;

And oops, the code is now broken because I forgot to add braces, which
is really annoying and hard to spot visually.

> - if one side of an IF-ELSE has a brace, probably they both should.
>   A funny worst-case example is programs/pluto/connections.c line 904.

Simple to solve if everything always has braces.

> - I suspect we should prevent uncrustify removing braces, even if the
>   transformation is correct.  They were probably placed there for a
>   readability reason.
> 
> - I don't much like the way parameter declarations are indented but I
>   don't think it matters much.
> 
> More to come.

I also hate opening braces being on their own line.  Waste of screen
space. :)

-- 
Len Sorensen


More information about the Swan mailing list