[Cocci] -o option fails when all files are skipped

Julia Lawall julia.lawall at lip6.fr
Sat Feb 8 18:30:31 CET 2014


On Sat, 8 Feb 2014, Christoph Burschka wrote:

> (Posted earlier at https://github.com/coccinelle/coccinelle/issues/16 )
> 
> -----
> Using the latest source (1.0.0-rc19), I'm trying to run this command:
> 
> spatch --no-includes --sp-file repr.cocci in.c -o out.c
> 
> This is the output I'm getting:
> 
> init_defs_builtins:
> /home/christoph/Software/install/share/coccinelle/standard.h
> warning: line 9: should self be a metavariable?
> warning: line 22: should self be a metavariable?
> (ONCE) Expected tokens self PyObject PyString_FromString PyString_FromFormat
> Skipping:in.c
> Fatal error: exception Failure("-o can not be applied because there are
> multiple modified files")
> -----
> 
> Apparently this is because the only input file is skipped.
> 
> I was assuming that spatch would simply copy the unchanged input file in
> that case, probably because I misinterpreted the following code block in
> main.ml:
> 
>     (match outfiles with
>     | [infile, Some outfile] when infile =$= x && null xs ->
>         Common.command2 ("cp " ^outfile^ " " ^ !output_file)
>     | [infile, None] when infile =$= x && null xs ->
>         Common.command2 ("cp " ^infile^ " " ^ !output_file)
>     | _ ->
>         failwith
> 
> (Instead, outfiles is an empty list. I guess it filters out the
> irrelevant files before reaching this point? Sorry, I've never looked at
> this source code before today.)
> 
> I'm trying to use this tool: https://fedorahosted.org/2to3c/
> 
> It applies a collection of semantic patches to a Python2 C extension to
> upgrade it to Python3... but apparently it fails when any of those
> patches are irrelevant. Is there a better way to do this?

Personally, I never use -o.  Normally, Coccinelle prints a patch to the 
standard output, and then you can apply the patch to your code.

I can make -o simply copy the file when there is nothing to do, if that is 
the desired behavior.

julia


More information about the Cocci mailing list