On Oct 10 2016, Nikolaus Rath <nikol...@rath.org> wrote:
> On Oct 10 2016, Julia Lawall <julia.law...@lip6.fr> wrote:
>> On Sun, 9 Oct 2016, Nikolaus Rath wrote:
>>
>>> On Oct 08 2016, Julia Lawall <julia.law...@lip6.fr> wrote:
>>> >> > Write separate rules for that.  You would need one case for a local
>>> >> > variable and one case fora parameter.  You can actually probably just 
>>> >> > drop
>>> >> > the rule you have currently.  I would imagine something like the
>>> >> > following:
>>> >> >
>>> >> > @@
>>> >> > symbol f, se; // avoid unneeded warnings from Coccinelle
>>> >> > @@
>>> >> >
>>> >> > struct fuse_session *
>>> >> > -f
>>> >> > +se
>>> >> >  ;
>>> >> > <...
>>> >> > -f
>>> >> > +se
>>> >> > ...>
>>> >> > @@
>>> >> > identifier fn;
>>> >> > @@
>>> >> >
>>> >> > fn(...,struct fuse_session *f,...) { <...
>>
>> Oops, the first line should be:
>>
>> fn(...,struct fuse_session *
>> -f
>> +se
>>   ,...) { <...
>>
>> The rule works fine even when f is the first argument.
>
> Ouch, I guess I could have caught that too. Works like a charm now!

I claimed success too early. There are still the following cases left:


static void do_destroy(fuse_req_t req, fuse_ino_t nodeid, const void *inarg)
{
        struct fuse_session *f = req->se;
[....]

I tried to adapt the rules myself as follows:

@@
symbol f, se;
@@
struct fuse_session *
-f
+se
;
<...
-f
+se
...>

@@
symbol f, se;
expression expr;
@@
struct fuse_session *
-f
+se
= expr;
<...
-f
+se
...>


@@
identifier fn;
@@
fn(...,struct fuse_session *
-f
+se
,...) { <...
-f
+se
...> }


But this gives an error:


Fatal error: exception Failure("meta: parse error: 
 = File "se-rename.cocci", line 14, column 7,  charpos = 79
    around = 'f', whole content = symbol f, se;
")


What am I doing wrong?

Thanks!
-Nikolaus

-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to