unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Page:
Section:
Apropos / Subsearch:
optional field

UNIFDEF(1)                  General Commands Manual                 UNIFDEF(1)



NAME
       unifdef - resolve and remove ifdef'ed lines from cpp input

SYNOPSIS
       unifdef  [ -c l t ] [ -Dname ] [ -Uname ] [ -iDname ] [ -iUname ] ... [
       filename ]

DESCRIPTION
       unifdef removes ifdefed lines from a file while otherwise  leaving  the
       file  alone.   It  is smart enough to deal with the nested ifdefs, com-
       ments, single and double quotes of C syntax, but it  does  not  do  any
       including  or interpretation of macros.  Neither does it strip out com-
       ments, though it recognizes and ignores them.  You specify  which  sym-
       bols  you  want  defined  with -D options, and which you want undefined
       with -U options.  Lines within those ifdefs will be copied to the  out-
       put,  or  removed,  as appropriate.  Any ifdef, ifndef, else, and endif
       lines associated with filename will also be removed.

       ifdefs involving symbols you do not specify are  untouched  and  copied
       out along with their associated ifdef, else, and endif lines.

       If an ifdefX occurs nested inside another ifdefX, then the inside ifdef
       is treated as if it were an unrecognized symbol.  If  the  same  symbol
       appears in more than one argument, only the first occurrence is signif-
       icant.

       unifdef copies its output to the standard  output  and  will  take  its
       input from the standard input if no filename argument is given.

OPTIONS
       -c     Complement  the  normal  operation.   Lines that would have been
              removed or blanked are retained, and vice versa.

       -l     Replace "lines removed" lines with blank lines.

       -t     Plain text option.  unifdef refrains from attempting  to  recog-
              nize comments and single and double quotes.

       -iDname
              Ignore,  but print out, lines associated with the defined symbol
              filename.  If you use ifdefs to delimit  non-C  lines,  such  as
              comments or code which is under construction, then you must tell
              unifdef which symbols are used for that purpose so that it won't
              try to parse for quotes and comments within them.

       -iUname
              Ignore,  but print out, lines associated with the undefined sym-
              bol filename.

SEE ALSO
       cpp(1), diff(1)

DIAGNOSTICS
       Premature EOF
                 Inappropriate else or endif.

       Exit status is 0 if output is exact copy of input, 1 if not, 2 if trou-
       ble.

BUGS
       Does not know how to deal with cpp(1) constructs such as

              #if  defined(X) || defined(Y)



                               9 September 1987                     UNIFDEF(1)