SPATCH(1)

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=SHAREDIR/standard.iso)

-macro_file <file>
    (default=SHAREDIR/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

-in_place
    do the modification on the file directly

-out_place
    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 SHAREDIR/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
SHAREDIR/standard.iso
    This file contains the default set of isomorphisms.
SHAREDIR/standard.h
    This file contains the default set of macro hints.

ENVIRONMENT

COCCINELLE_HOME
    The path to coccinelle share directory. Defaut is SHAREDIR

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)