On Mon, 17 Sep 2012, Wei Yongjun wrote:

On 09/17/2012 05:44 PM, Lars-Peter Clausen wrote:
On 09/17/2012 11:32 AM, Wei Yongjun wrote:
Hi all,

I have the following cocci file,

@@
expression pos, head, len, rem;
identifier nla_ok, nla_next;
iterator name nla_for_each_attr;
statement S;
@@
- for (pos = head, rem = len; nla_ok(pos, rem); pos = nla_next(pos, &rem))
+ nla_for_each_attr(pos, head, len, rem)
S

But the error is output when using spatch,

Fatal error: exception Failure("minus: parse error:
 = File "nla_for_each_attr.cocci", line 7, column 17,  charpos = 130
    around = ',', whole content = - for (pos = head, rem = len; nla_ok(pos, rem); 
pos = nla_next(pos, &rem))
")


It seems that spatch does not handle 'pos = head, rem = len' in the
for expression.

So, does spatch support this? or my cocci file is wrong?

Are you using the latest coccinelle version? You cocci file works fine here:

 void foo(void)
 {
        int rem, pos, head, len;
-       for (pos = head, rem = len; nla_ok(pos, rem); pos = nla_next(pos, &rem))
+       nla_for_each_attr(pos, head, len, rem)
                bar();
 }

I download the latest git tree, the cocci file is works,
but the output of 'nla_for_each_attr(a,attr,len,rem)' is
missing space after ',', like this:

-       for (a = attr, rem = len; rem > 0;
-            a = nla_next(a, &rem)) {
+       nla_for_each_attr(a,attr,len,rem) {
                int err = 0;


Not sure what cause the different with your outout.

I think Lars submitted a patch recently (in the last week or so) for fixing this. Maybe you can find his message in the gmane mailing list archives? Just google for gmane coccinelle. I'll make a new release including the patch soon, but I have a small stack of other things to fix at the moment.

julia
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to