* [Cocci] Can I pass a variable from a Python script in one rule to another rule in the same .cocci file?
@ 2019-01-04 21:57 Timur Tabi
2019-01-05 6:25 ` Julia Lawall
0 siblings, 1 reply; 2+ messages in thread
From: Timur Tabi @ 2019-01-04 21:57 UTC (permalink / raw)
To: cocci
In one rule, I have some Python code that parses a string literal to
see what it looks like. If I detect a specific pattern, then I want
another rule (that has no Python code) to act differently.
More specifically, if a string literal passed as a parameter to
DBG_PRINTF() starts with "NVRM: ", then I want my script to replace
DBG_PRINTF with NV_PRINTF. This works today.
If the string does not begin with "NVRM:", however, then I want
DBG_PRINTF changed to NV_PRINTF_EX instead.
If this can't work, an alternative would be to create a second script
that handles DBG_PRINTF to NV_PRINTF_EX. However, it would need to
abort the change if the Python script detects that NVRM: doesn't
exist. So is there a way for Python to return a value that says,
"Woah, stop and undo everything you just did!"
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Cocci] Can I pass a variable from a Python script in one rule to another rule in the same .cocci file?
2019-01-04 21:57 [Cocci] Can I pass a variable from a Python script in one rule to another rule in the same .cocci file? Timur Tabi
@ 2019-01-05 6:25 ` Julia Lawall
0 siblings, 0 replies; 2+ messages in thread
From: Julia Lawall @ 2019-01-05 6:25 UTC (permalink / raw)
To: Timur Tabi; +Cc: cocci
On Fri, 4 Jan 2019, Timur Tabi wrote:
> In one rule, I have some Python code that parses a string literal to
> see what it looks like. If I detect a specific pattern, then I want
> another rule (that has no Python code) to act differently.
>
> More specifically, if a string literal passed as a parameter to
> DBG_PRINTF() starts with "NVRM: ", then I want my script to replace
> DBG_PRINTF with NV_PRINTF. This works today.
>
> If the string does not begin with "NVRM:", however, then I want
> DBG_PRINTF changed to NV_PRINTF_EX instead.
>
> If this can't work, an alternative would be to create a second script
> that handles DBG_PRINTF to NV_PRINTF_EX. However, it would need to
> abort the change if the Python script detects that NVRM: doesn't
> exist. So is there a way for Python to return a value that says,
> "Woah, stop and undo everything you just did!"
I think that you want to use cocci.include_match(False)
In your python script, make the checks that you want, and then if you are
not satisfied with the results, use cocci.include_match(False) to get the
curent match of the metavariables to disappear. You may need to rematch
something to get the information needed for the second change option.
julia
> _______________________________________________
> Cocci mailing list
> Cocci@systeme.lip6.fr
> https://systeme.lip6.fr/mailman/listinfo/cocci
>
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-01-05 6:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-04 21:57 [Cocci] Can I pass a variable from a Python script in one rule to another rule in the same .cocci file? Timur Tabi
2019-01-05 6:25 ` Julia Lawall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).