On Thu, 2010-09-09 at 09:46 +0200, Julia Lawall wrote:
> The following works:
> @@
> expression E;
> @@
> 
> * struct pci_driver I = { .name = E, };

Doesn't I need to be specified?

@@
identifier I;
expression E;
@@

* struct pci_driver I = { .name = E, };

> > How would it find a non-c90 initializer like bar?
> 
> In principle, you would have to find the type definition, find the offset 
> of the desired field in that type definition, and then find the value at 
> that offset in the initializer.  Finding the type definition is only 
> possible if it is directly included by the C file.  At the moment, there 
> is unfortunately nothing to support either finding the offset of a field 
> in a structure definition or finding the offset of a value in a 
> declaration of the form { a, b, c }.  However, I am currently working on 
> improving the support for initializers of the form { a, b, c }, and I 
> think it would be easy to add that at the same time.  With that in place, 
> you could find the offset of the field you are interested in in pci_driver 
> byhand, and specify that offset explicitly in the semantic patch.

Perhaps you could also add when given the structure definition,
spatch could do that offset->name translation instead of requiring
the user to do it.

Thanks, Joe

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

Reply via email to