On Tue, 18 Dec 2018, Max wrote:

> So, if I don't have any typedef in the code and I just want to replace
> the name of the field of a struct?
>
> for example to modify this function:
>
> f() {
>
> struct my_struct *m;
>
> struct my_struct x;
>
> ...
>
> m->len = 10; // this should become m->length = 10;
>
> ...
>
> fill(x.buf); // this should become fill(x.addr);
>
> }
>
> I'm trying to use
>
> @@
> identifier a;
> @@
> struct my_struct a.
> - len
> + length
>
> Which gives syntax error. I need somehow to tell spatch that "identifier
> a" has type "struct my_struct" but "type struct osmo_gsn_address;" seems
> to be invalid syntax.

You give information about metavariables in betwen the first two @@.  Not
down in the code matching part.

Here you want struct my_struct a; in the metavariable list, and then the
same pattern as before after the second @@.

You can also do

@@
{new_address,struct my_struct} a;
@@

a.
- len
+ length

julia

>
> 18.12.18 17:54, Julia Lawall пишет:
> >
> > I don't understand what you are trying to do here.  typedef new_address;
> > is find for indicating that new_address is a typedef.  Ie you have
> > somewhere said:
> >
> > typedef ... new_address;
> >
> > new_address a; will then match a declaration where the type of the
> > declared variable is new_address.  But I don't understand - a.len;.
> > First, this is only going to match a statement that comes right after the
> > variable declaration.  Second, a.len; is a very strange statement, because
> > it doesn't do anything.
> >
> > Maybe you want:
> >
> > @@
> > typedef new_address;
> > new_address a;
> > @@
> > - a.len
> > + a.length
> >
> > That is, a should be a metavariable representing an expression of the
> > given type, and then you want to replace a len field by length.
> >
> > You could also write the change as:
> >
> > a.
> > -len
> > +length
> >
> > julia
>
> --
> - Max Suraev <[email protected]>       http://www.sysmocom.de/
> =======================================================================
> * sysmocom - systems for mobile communications GmbH
> * Alt-Moabit 93
> * 10559 Berlin, Germany
> * Sitz / Registered office: Berlin, HRB 134158 B
> * Geschaeftsfuehrer / Managing Directors: Harald Welte
>
> _______________________________________________
> Cocci mailing list
> [email protected]
> https://systeme.lip6.fr/mailman/listinfo/cocci
>
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to