diff options
Diffstat (limited to 'usr.bin/unifdef/unifdef.1')
-rw-r--r-- | usr.bin/unifdef/unifdef.1 | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/usr.bin/unifdef/unifdef.1 b/usr.bin/unifdef/unifdef.1 new file mode 100644 index 0000000..c27a9fd --- /dev/null +++ b/usr.bin/unifdef/unifdef.1 @@ -0,0 +1,165 @@ +.\" Copyright (c) 1985, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" Dave Yost. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)unifdef.1 8.2 (Berkeley) 4/1/94 +.\" +.Dd April 1, 1994 +.Dt UNIFDEF 1 +.Os BSD 4.3 +.Sh NAME +.Nm unifdef +.Nd remove ifdef'ed lines +.Sh SYNOPSIS +.Nm unifdef +.Op Fl clt +.Oo +.Fl D Ns Ar sym +.Fl U Ns Ar sym +.Fl iD Ns Ar sym +.Fl iD Ns Ar sym +.Oc +.Ar ... +.Op Ar file +.Sh DESCRIPTION +.Nm Unifdef +is useful for removing ifdef'ed lines +from a file while otherwise leaving the file alone. +.Nm Unifdef +acts on +#ifdef, #ifndef, #else, and #endif lines, +and it knows only enough about C +to know when one of these is inactive +because it is inside +a comment, +or a single or double quote. +Parsing for quotes is very simplistic: +when it finds an open quote, +it ignores everything (except escaped quotes) +until it finds a close quote, and +it will not complain if it gets +to the end of a line and finds no backslash for continuation. +.Pp +Available options: +.Bl -tag -width Ds -compact +.It Fl D Ns Ar sym +.It Fl U Ns Ar sym +Specify which symbols to define or undefine. +and the lines inside those ifdefs will be copied to the output or removed as +appropriate. +The ifdef, ifndef, else, and endif lines associated with +.Ar sym +will also be removed. +Ifdefs involving symbols you don't specify +and ``#if'' control lines +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, +the last occurrence dominates. +.Pp +.It Fl c +If the +.Fl c +flag is specified, +then the operation of +.Nm unifdef +is complemented, +i.e. the lines that would have been removed or blanked +are retained and vice versa. +.Pp +.It Fl l +Replace removed lines with blank lines +instead of deleting them. +.It Fl t +Disables parsing for C comments and quotes, which is useful +for plain text. +.Pp +.It Fl iD Ns Ar sym +.It Fl iU Ns Ar sym +Ignore ifdefs. +If your C code uses ifdefs to delimit non-C lines, +such as comments +or code which is under construction, +then you must tell +.Nm unifdef +which symbols are used for that purpose so that it won't try to parse +for quotes and comments +inside those ifdefs. +One specifies ignored ifdefs with +.Fl iD Ns Ar sym +and +.Fl iU Ns Ar sym +similar to +.Fl D Ns Ar sym +and +.Fl U Ns Ar sym +above. +.El +.Pp +.Nm Unifdef +copies its output to +.Em stdout +and will take its input from +.Em stdin +if no +.Ar file +argument is given. +.Pp +.Nm Unifdef +works nicely with the +.Fl D Ns Ar sym +option added to +.Xr diff 1 +as of the 4.1 Berkeley Software Distribution. +.Sh SEE ALSO +.Xr diff 1 +.Sh DIAGNOSTICS +Inappropriate else or endif. +.br +Premature +.Tn EOF +with line numbers of the unterminated #ifdefs. +.Pp +Exit status is 0 if output is exact copy of input, 1 if not, 2 if trouble. +.Sh BUGS +Should try to deal with ``#if'' lines. +.Pp +Doesn't work correctly if input contains null characters. +.Sh HISTORY +The +.Nm +command appeared in +.Bx 4.3 . |