[SSSD] [PATCH v2] Debug macro refactoring

Nikolai Kondrashov Nikolai.Kondrashov at redhat.com
Wed Oct 16 14:43:41 UTC 2013


Hi everyone,

Please find attached my updated patches refactoring the DEBUG macro (mostly).

I've moved the level limiting condition to the macro as requested by Simo.
I've separated the macro definition update from the invocation update.

I've tried using coccinelle ("spatch") to do the invocation update, but
unfortunately, it either puts all DEBUG macro arguments on a single line with
a simple semantic patch (debug.spatch), or puts parts of the concatenated
string literals on a single line with an unrolled version
(debug_unrolled.spatch). I haven't managed to find another way.

So, for this simple case, Perl seems to be better (if not so reliable).
I've used the following command to update the invocations:

     grep -rwl --include '*.[hc]' DEBUG . |
         while read f; do
             mv $f{,.orig}
             perl -e 'use strict;
                      use File::Slurp;
                      my $text=read_file(\*STDIN);
                      $text=~s#(\bDEBUG\s*\([^(]+)\((.*?)\)\s*\)\s*;#$1$2);#gs;
                      print $text;
             ' < $f.orig > $f
         done

And then manually fixed two or three cases where it got confused and has
broken the compilation. After that, coccinelle couldn't find any more places
to update.

You can either use the included patch, try applying one of the semantic
patches, or not convert the macro to variadic and not update the invocations
at all.  You can still get the size reduction benefit and fix the flushing.
I will leave this up to you.

If you decide to try the semantic patches, they can be applied as such:

     spatch --sp-file debug_unrolled.spatch -dir . | git apply

You will need the "coccinelle" package to get the "spatch" tool.

Sincerely,
Nick
-------------- next part --------------
A non-text attachment was scrubbed...
Name: debug_macro_refactoring_v2.tar.gz
Type: application/x-gzip
Size: 338349 bytes
Desc: not available
URL: <https://lists.fedorahosted.org/pipermail/sssd-devel/attachments/20131016/20be1864/attachment.gz>


More information about the sssd-devel mailing list