NAME
spatch - apply a semantic patch file to a set of C files
SYNOPSIS
spatch -sp_file <SP> <files> [-o <outfile> ] [-iso_file <iso> ] [
options ]
DESCRIPTION
spatch is a program matching and transformation tool for C. The
programmer describes the code to match and the transformation to
perform as a semantic patch, which looks like a standard patch, but can
transform multiple files at any number of code sites.
Further information about spatch is available at
http://coccinelle.lip6.fr/.
OPTIONS
Here is a summary of the most commonly used options:
-sp_file <file>
the semantic patch file
-dir <dir>
process all files in directory recursively
-iso_file <file>
(default=/usr/share/coccinelle/standard.iso)
-macro_file <file>
(default=/usr/share/coccinelle/standard.h)
-debug print some information to help debug the matching process
-all_includes
causes all available include files to be used
-no_includes
causes not even local include files to be used
-I <dir>
the directory containing the include files
-include_headers
process header files independently
-use_glimpse
works with -dir, use information generated by glimpseindex
-o <file>
the output file. If none is specified, a patch is generated on
the standard output
-inplace
do the modification on the file directly
-outplace
store modifications in a .cocci_res file
-version
show the version of spatch
-date show the date on which spatch was compiled
-shorthelp
see short list of options
-longhelp
see all the available options in different categories
-help, --help
show summary of options.
EXAMPLES
./spatch -sp_file foo.cocci foo.c
Apply the semantic patch foo.cocci to the C file foo.c. The semantic
patch is applied modulo a set of isomorphisms contained in standard.iso
(standard.iso is by default located in
/usr/share/coccinelle/standard.iso). A patch showing the effect of the
application, if any, will be generated on the standard output.
./spatch -sp_file foo.cocci foo.c -o /tmp/newfoo.c
The same as the above, except that a modified version of foo.c is
stored in /tmp/newfoo.c.
It is also possible to apply spatch to all of the C files in a
directory:
./spatch -cocci_file foo.cocci -dir foodir .
If the semantic patch is not working as expected, the option -debug
shows selection of information about the application of a semantic
patch to a file or directory.
FILES
/usr/share/coccinelle/standard.iso
This file contains the default set of isomorphisms.
/usr/share/coccinelle/standard.h
This file contains the default set of macro hints.
ENVIRONMENT
COCCINELLE_HOME
The path to coccinelle share directory. Defaut is
/usr/share/coccinelle
REFERENCES
Y. Padioleau, J.L. Lawall, R.R Hansen, G. Muller "Documenting and
Automating Collateral Evolutions in Linux Device Driver" EuroSys 2008,
Glasgow, Scotland (April 2008) pp. 247-260.
AUTHOR
spatch was written by Julia Lawall <julia@diku.dk>, Yoann Padioleau
<yoann.padioleau@gmail.com>, Rene Rydhof Hansen <rrhansen@diku.dk> and
Henrik Stuart <henrik@hstuart.dk>.
This manual page was written by Yoann Padioleau
<yoann.padioleau@gmail.com> and Julia Lawall <julia@diku.dk>.
REPORTING BUGS
Send a mail to <cocci@diku.dk>
COPYRIGHT
Copyright 2010, University of Copenhagen DIKU and INRIA. Copyright
2005-2009, Ecole des Mines de Nantes, University of Copenhagen. spatch
is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free
Software Foundation, according to version 2 of the License.
SEE ALSO
patch(1), diff(1)
January 28, 2010