Up: Output Formats
You can use diff to merge two files of C source code. The output of diff in this format contains all the lines of both files. Lines common to both files are output just once; the differing parts are separated by the C preprocessor directives #ifdef name or #ifndef name, #else, and #endif. When compiling the output, you select which version to use by either defining or leaving undefined the macro name.
To merge two files, use diff with the -D name or --ifdef=name option. The argument name is the C preprocessor identifier to use in the #ifdef and #ifndef directives.
For example, if you change an instance of wait (&s) to
waitpid (-1, &s, 0) and then merge the old and new files with
the --ifdef=HAVE_WAITPID option, then the affected part of your code
might look like this:
do {
#ifndef HAVE_WAITPID
if ((w = wait (&s)) < 0 && errno != EINTR)
#else /* HAVE_WAITPID */
if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR)
#endif /* HAVE_WAITPID */
return w;
} while (w != child);
You can specify formats for languages other than C by using line group formats and line formats, as described in the next sections.