diff options
Diffstat (limited to 'usr.bin/unifdef/unifdef.1')
-rw-r--r-- | usr.bin/unifdef/unifdef.1 | 347 |
1 files changed, 0 insertions, 347 deletions
diff --git a/usr.bin/unifdef/unifdef.1 b/usr.bin/unifdef/unifdef.1 deleted file mode 100644 index 7319245..0000000 --- a/usr.bin/unifdef/unifdef.1 +++ /dev/null @@ -1,347 +0,0 @@ -.\" $NetBSD: unifdef.1,v 1.13 2017/07/03 21:34:22 wiz Exp $ -.\" -.\" 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. 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. -.\" -.\" Portions of this code (support for #if and #elif) are Copyright (c) -.\" 2002, 2003 Tony Finch. -.\" -.\" 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 -.\" $dotat: things/unifdef.1,v 1.45 2003/01/20 14:37:08 fanf2 Exp $ -.\" $FreeBSD: src/usr.bin/unifdef/unifdef.1,v 1.19 2003/01/20 12:41:41 fanf Exp $ -.\" -.Dd June 5, 2009 -.Dt UNIFDEF 1 -.Os -.Sh NAME -.Nm unifdef , -.Nm unifdefall -.Nd remove preprocessor conditionals from code -.Sh SYNOPSIS -.Nm -.Op Fl ceklst -.Op Fl I Ns Ar path -.Op Fl D Ns Ar sym Ns Op = Ns Ar val -.Op Fl U Ns Ar sym -.Op Fl iD Ns Ar sym Ns Op = Ns Ar val -.Op Fl iU Ns Ar sym -.Ar ... -.Op Fl o Ar output -.Op Ar file -.Nm unifdefall -.Op Fl I Ns Ar path -.Ar ... -.Ar file -.Sh DESCRIPTION -The -.Nm -utility selectively processes conditional -.Xr cpp 1 -directives. -It removes from a file both the directives and any additional text -that they specify should be removed, while otherwise leaving the -file alone. -.Pp -The -.Nm -utility acts on -.Ic #if , #ifdef , #ifndef , #elif , #else , -and -.Ic #endif -lines, -and it understands only the commonly-used subset -of the expression syntax for -.Ic #if -and -.Ic #elif -lines. -It handles -integer values of symbols defined on the command line, -the -.Fn defined -operator applied to symbols defined or undefined on the command line, -the operators -.Ic \&! , < , > , <= , >= , == , != , && , || , -and parenthesized expressions. -Anything that it does not understand is passed through unharmed. -It only processes -.Ic #ifdef -and -.Ic #ifndef -directives if the symbol is specified on the command line, -otherwise they are also passed through unchanged. -By default, it ignores -.Ic #if -and -.Ic #elif -lines with constant expressions, -or they may be processed by specifying the -.Fl k -flag on the command line. -.Pp -The -.Nm -utility also understands just enough about C -to know when one of the directives is inactive -because it is inside -a comment, -or affected by a backslash-continued line. -It spots unusually-formatted preprocessor directives -and knows when the layout is too odd to handle. -.Pp -A script called -.Nm unifdefall -can be used to remove all conditional -.Xr cpp 1 -directives from a file. -It uses -.Nm Fl s -and -.Nm cpp Fl dM -to get lists of all the controlling symbols -and their definitions (or lack thereof), -then invokes -.Nm -with appropriate arguments to process the file. -.Pp -Available options: -.Bl -tag -width indent -compact -.It Fl D Ns Ar sym Ns Op = Ns Ar val -Specify that a symbol is defined, -and optionally specify what value to give it -for the purpose of handling -.Ic #if -and -.Ic #elif -directives. -.It Fl U Ns Ar sym -Specify that a symbol is undefined. -If the same symbol appears in more than one argument, -the last occurrence dominates. -.It Fl c -If the -.Fl c -flag is specified, -then the operation of -.Nm -is complemented, -i.e., the lines that would have been removed or blanked -are retained and vice versa. -.It Fl e -Because -.Nm -processes its input one line at a time, -it cannot remove preprocessor directives that span more than one line. -The most common example of this is a directive with a multi-line -comment hanging off its right hand end. -By default, -if -.Nm -has to process such a directive, -it will complain that the line is too obfuscated. -The -.Fl e -option changes the behaviour so that, -where possible, -such lines are left unprocessed instead of reporting an error. -.It Fl k -Process -.Ic #if -and -.Ic #elif -lines with constant expressions. -By default, sections controlled by such lines are passed through unchanged -because they typically start -.Dq Li "#if 0" -and are used as a kind of comment to sketch out future or past development. -It would be rude to strip them out, just as it would be for normal comments. -.It Fl l -Replace removed lines with blank lines -instead of deleting them. -.It Fl o Ar output -The argument given is the name of an -.Ar output -file to be used instead of the standard output. -This file can be the same as the input file. -.It Fl s -Instead of processing the input file as usual, -this option causes -.Nm -to produce a list of symbols that appear in expressions -that -.Nm -understands. -It is useful in conjunction with the -.Fl dM -option of -.Xr cpp 1 -for creating -.Nm -command lines. -.It Fl t -Disables parsing for C comments -and line continuations, -which is useful -for plain text. -.It Fl iD Ns Ar sym Ns Op = Ns Ar val -.It Fl iU Ns Ar sym -Ignore -.Ic #ifdef Ns s . -If your C code uses -.Ic #ifdef Ns s -to delimit non-C lines, -such as comments -or code which is under construction, -then you must tell -.Nm -which symbols are used for that purpose so that it will not try to parse -comments -and line continuations -inside those -.Ic #ifdef Ns s . -One specifies ignored symbols with -.Fl iD Ns Ar sym Ns Oo = Ns Ar val Oc -and -.Fl iU Ns Ar sym -similar to -.Fl D Ns Ar sym Ns Op = Ns Ar val -and -.Fl U Ns Ar sym -above. -.It Fl I Ns Ar path -Specifies to -.Nm unifdefall -an additional place to look for -.Ic #include -files. -This option is ignored by -.Nm -for compatibility with -.Xr cpp 1 -and to simplify the implementation of -.Nm unifdefall . -.El -.Pp -The -.Nm -utility copies its output to -.Em stdout -and will take its input from -.Em stdin -if no -.Ar file -argument is given. -.Pp -The -.Nm -utility works nicely with the -.Fl D Ns Ar sym -option of -.Xr diff 1 . -.Sh DIAGNOSTICS -.Bl -item -.It -Too many levels of nesting. -.It -Inappropriate -.Ic #elif , -.Ic #else -or -.Ic #endif . -.It -Obfuscated preprocessor control line. -.It -Premature -.Dv EOF -(with the line number of the most recent unterminated -.Ic #if ) . -.It -.Dv EOF -in comment. -.El -.Pp -The -.Nm -utility exits 0 if the output is an exact copy of the input, -1 if not, and 2 if in trouble. -.Sh SEE ALSO -.Xr cpp 1 , -.Xr diff 1 -.Sh HISTORY -The -.Nm -command appeared in -.Bx 4.3 . -.Tn ANSI\~C -support was added in -.Fx 4.7 . -.Sh BUGS -Expression evaluation is very limited. -.Pp -Preprocessor control lines split across more than one physical line -(because of comments or backslash-newline) -cannot be handled in every situation. -.Pp -Trigraphs are not recognized. -.Pp -There is no support for symbols with different definitions at -different points in the source file. -.Pp -The text-mode and ignore functionality does not correspond to modern -.Xr cpp 1 -behaviour. |