Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

diff(1)

UNIFDEF(1)                           BSD                            UNIFDEF(1)



NAME
     unifdef - remove ifdef'ed lines

SYNOPSIS
     unifdef [ -t ] [ -l ] [-c ] [ -Dsym |  -Usym | -idsym | -iusym ]  ... [
     file ]

DESCRIPTION
     unifdef is useful for removing ifdef'ed lines from a file while otherwise
     leaving the file alone.  unifdef is like a stripped-down C preprocessor:
     it is smart enough to deal with the nested ifdefs, comments, single and
     double quotes of C syntax so that it can do its job, but it doesn't do
     any including or interpretation of macros.  Neither does it strip out
     comments, though it recognizes and ignores them.

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

OPTIONS
     -t        Refrain from attempting to recognize comments and single and
               double quotes.  Used for plain text files (not C code).

     -l        Replace removed lines with blank lines instead of deleting
               them.

     -c        Complement the operation of unifdef:  the lines that would have
               been removed or blanked are retained and vice versa.

     -Dsym     Specify that sym is defined.

     -Usym     Specify that sym is undefined.  The lines inside those ifdefs
               will be removed.  The ifdef, ifndef, else, and endif lines
               associated with sym will also be removed.  Ifdefs involving
               symbols you don't specify are untouched and copied out along
               with their associated ifdef, else, and endif lines.  If an
               ifdef X occurs nested inside another ifdef X, 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 significant.

     -idsym    Specify that sym is defined.  If you use ifdefs to delimit
               non-C lines, such as comments or code which is under
               construction, then you must use this option tell unifdef which
               symbols are used for that purpose so that it won't try to parse
               for quotes and comments in those ifdef'ed lines.  The lines
               inside are ignored but copied out.

     -iusym    Specify that sym is undefined.  This option complements -id.

DIAGNOSTICS
     Premature EOF, inappropriate else or endif.

     Exit status is 0 if output is exact copy of input, 1 if not, 2 if
     trouble.

BUGS
     Does not know how to deal with cpp consructs such as

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


SEE ALSO
     diff(1)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026