First of all, Thank you for your quick response.
But, I'm still in trouble, because your cocci file also doesn't work
with this error.
Fatal error: exception Failure("xxx.c: 112: More than one variable in the
declaration, and so it cannot be transformed. Check that there is no transformation on
the type or the ;")
Moreover, in many case of my real code, the second variable is treated
with different way.
struct type_b *foo(void);
struct type_b *foo2(void);
int some_function(...)
{
-struct type_a *v1, *v2;
+struct type_b *v1, *v2;
...
v1 = foo();
v2 = foo2();
...
}
Does NOT coccinelle support this case?
If not, I'd be better to find out other way or do it manually.
Thank you & regards,
Junghak
On 07/07/2015 05:49 PM, Julia Lawall wrote:
On Tue, 7 Jul 2015, Junghak Sung wrote:
Hi~
I'm a newbie for coccinelle.
I would like to make a cocci file to patch like :
struct type_b *foo(void);
int some_function(...)
{
-struct type_a *v1, *v2;
+struct type_b *v1, *v2;
...
v1 = foo();
v2 = foo();
...
}
Return value of foo() was changed from struct type_a to struct type_b.
So, I want to find out the locations where a function use it in and modify the
type of local variables.
If the number of local variable is just one, this cocci could make the patch
well.
@@
identifier i;
@@
{
...
-struct type_a *i;
+struct type_b *i;
...
i = foo();
...
}
But, assuming that the number of local variables is two or more, I have failed
again and again.
How can I make cocci file?
Thank you in advance for your consideration.
Could you try the following?
Coccinelle only allows specifying transformations on variable declarations
one at a time. But if all declarations are treated in the same way, this
may be OK. On the other hand, if there is a mixture of pointers and
nonpointers, this will fail. Such cases are not supported.
@@
type T1;
identifier i,i1;
@@
struct
- type_a // only change the type name
+ type_b
*i;
<... when exists // there may not be an i =... on every control flow path
T1 i1; // allow other type_a declarations
...>
i = foo();
julia
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci