Products
and Services Support
and Docs Training Partner Programs About Red
Hat
  download storecart
red hat logo
redhat.comredhat network

Red Hat Documentation

Merging Files with If-then-else Contents|Index|Previous|Next

Merging Files with If-then-else

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 the following.

   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 Line Group Formats, Line Formats, Detailed Description of If-then-else Format and An Example of If-then-else Format.

 

 


 
© 2001 Red Hat, Inc. All rights reserved.
About Red Hat  :  Legal statement  :  Privacy statement  :  Y2K statement  :  Contact Red Hat