[Swan] initial thoughts on uncrustifying libreswan

Philippe Vouters philippe.vouters at laposte.net
Thu May 23 14:06:45 EEST 2013


I agree the Linux kernel looks well written. However from an outside 
point of view as a code reader, the Linux kernel source reading has been 
of strictly no help for me to understand and correct the kernel oops my 
users and I faced and that I describe at 
http://vouters.dyndns.org/tima/Linux-drivers-Troubleshooting_a_oops.html. In 
this case and for me there has been lots of intuition deployed with 
absolutely no certainty.

I much prefer reading Libreswan code with its numerous DBG_logs rather 
than the Linux kernel code. Thery make follow the story far more easy.

Philippe Vouters (Fontainebleau/France)
URL: http://vouters.dyndns.org/
SIP: sip:Vouters at sip.linphone.org

On 05/23/2013 12:35 PM, David McCullough wrote:
> D. Hugh Redelmeier wrote the following:
>> 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.
> Using a tool to get started sounds like a good idea, followed by
> hand tweaking and rejection of poorly formated changes from there.
> I don't it needs to be run continuously.
>
>> == 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 ==
> Agree with almost everything said here.
>
> My preference is the Linux kernel style whenever possible.
>
>> - 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 don't like this personally.
>
>> - 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++;
>>
>> - 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.
>>
>> - I suspect we should prevent uncrustify removing braces, even if the
>>    transformation is correct.  They were probably placed there for a
>>    readability reason.
> Agree with these.
>
>> - I don't much like the way parameter declarations are indented but I
>>    don't think it matters much.
> Again,  my preference is the Linux kernel style whenever possible.
> Hopefully we can avoid another style ;-)
>
> Cheers,
> Davidm
>



More information about the Swan mailing list