|
|
1.1 root 1: .\" Copyright (c) 1985 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)unifdef.1 6.1 (Berkeley) 4/29/85
6: .\"
7: .TH UNIFDEF 1 "April 29, 1985"
8: .UC 6
9: .SH NAME
10: unifdef \- remove ifdef'ed lines
11: .SH SYNOPSIS
12: .B unifdef
13: [
14: .B \-t
15: .B \-l
16: .B \-c
17: .BI \-D sym
18: .BI \-U sym
19: .BI \-id sym
20: .BI \-iu sym
21: ] ... [ file ]
22: .SH DESCRIPTION
23: .I Unifdef
24: is useful for removing ifdef'ed lines from a file while otherwise leaving the
25: file alone.
26: .I Unifdef
27: is like a stripped-down C preprocessor:
28: it is smart enough to deal with the nested ifdefs, comments,
29: single and double
30: quotes of C syntax so that it can do its job, but it doesn't do any including
31: or interpretation of macros.
32: Neither does it strip out comments, though it recognizes and ignores them.
33: You specify which symbols you want defined
34: .BI \-D sym
35: or undefined
36: .BI \-U sym
37: and the lines inside those ifdefs will be copied to the output or removed as
38: appropriate.
39: The ifdef, ifndef, else, and endif lines associated with
40: .I sym
41: will also be removed.
42: Ifdefs involving symbols you don't specify are untouched and copied out
43: along with their associated
44: ifdef, else, and endif lines.
45: If an ifdef X occurs nested inside another ifdef X, then the
46: inside ifdef is treated as if it were an unrecognized symbol.
47: If the same symbol appears in more than one argument, only the first
48: occurrence is significant.
49: .PP
50: The
51: .B \-l
52: option causes
53: .I unifdef
54: to replace removed lines with blank lines
55: instead of deleting them.
56: .PP
57: If you use ifdefs to delimit non-C lines, such as comments
58: or code which is under construction,
59: then you must tell
60: .I unifdef
61: which symbols are used for that purpose so that it won't try to parse
62: for quotes and comments
63: in those ifdef'ed lines.
64: You specify that you want the lines inside certain ifdefs to be ignored
65: but copied out with
66: .BI \-id sym
67: and
68: .BI \-iu sym
69: similar to
70: .BI \-D sym
71: and
72: .BI \-U sym
73: above.
74: .PP
75: If you want to use
76: .I unifdef
77: for plain text (not C code), use the
78: .B \-t
79: option.
80: This makes
81: .I unifdef
82: refrain from attempting to recognize comments and single and double quotes.
83: .PP
84: .I Unifdef
85: copies its output to
86: .I stdout
87: and will take its input from
88: .I stdin
89: if no
90: .I file
91: argument is given.
92: If the
93: .B \-c
94: argument is specified, then the operation of
95: .I unifdef
96: is complemented,
97: i.e. the lines that would have been removed or blanked
98: are retained and vice versa.
99: .SH "SEE ALSO"
100: diff(1)
101: .SH DIAGNOSTICS
102: Premature EOF, inappropriate else or endif.
103: .PP
104: Exit status is 0 if output is exact copy of input, 1 if not, 2 if trouble.
105: .SH BUGS
106: Does not know how to deal with \fIcpp\fP consructs such as
107: .br
108: .sp
109: .nf
110: #if defined(X) || defined(Y)
111: .sp
112: .fi
113: .SH AUTHOR
114: Dave Yost
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.