On Oct 05 2016, Julia Lawall <julia.law...@lip6.fr> wrote:
>>
>> 2. ..and how would I go about if instead of the type, I want to replace
>>    a variable name? (my_type *ptr --> my_type *pointer).
>
> I'm not completely sure what the issue is here.  Do you specifically want
> to convert ptr to pointer?  Is the type important?  To make exactly what
> you have written, you could put:
>
> @@
> typedef my_type;
> idexpression mytype * p1;
> @@
>
> - ptr@p1
> + pointer
>
> This checks for the word ptr, and also checks that it is an identifier of
> the right type.  I haven't tested it, so let me know if there is any
> problem.

It workes somewhat... but not completely.

Here's what I wanted to do: I merged two structures (struct fuse_session
and struct fuse_ll) into one (struct fuse_session). I've first replaced
all the type names, and then manually fixed the cases where this
resulted in bogus/redundant code (typically in functions that used to
work with both structs).

Now my project compiles and runs fine, but I the variable naming is
inconsistent: in some cases the struct fuse_session pointer is called
*se (these were the variables that were always of type struct
fuse_session), and in other cases the pointer is called *f (these were
the variables that were previously of type struct fuse_ll).

I'd like to fix this too, and always refer call fuse_session pointers
"se" (except where this name is already used for something else, but
I'll just fix this up by hand afterwards). I tried the following patch:

$ cat se-name.cocci 
@@
idexpression struct fuse_session *p1;
@@
- f@p1
+ se

but it resulted in these changes:

        struct fuse_session *f = req->se;
-       struct cuse_data *cd = f->cuse_data;
-       size_t bufsize = f->bufsize;
+       struct cuse_data *cd = se->cuse_data;
+       size_t bufsize = se->bufsize;

So it seems to replace the variable where its used, but not where it's
defined.

Is there a way to catch the definitions too?


Best,
-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