unifdef-2.10/000755 031623 031623 00000000000 12263051407 013112 5ustar00fanf2fanf2000000 000000 unifdef-2.10/version.h000644 031623 031623 00000000116 12263051406 014745 0ustar00fanf2fanf2000000 000000 "@(#) $Version: unifdef-2.10 $\n" "@(#) $Date: 2014-01-07 19:16:02 +0000 $\n" unifdef-2.10/version.sh000644 031623 031623 00000000057 12263051406 015134 0ustar00fanf2fanf2000000 000000 V="unifdef-2.10" D="2014-01-07 19:16:02 +0000" unifdef-2.10/unifdef.txt000644 031623 031623 00000022706 12263051406 015301 0ustar00fanf2fanf2000000 000000 UNIFDEF(1) Programmer's Manual UNIFDEF(1) NAME unifdef, unifdefall -- remove preprocessor conditionals from code SYNOPSIS unifdef [-bBcdehKkmnsStV] [-Ipath] [-[i]Dsym[=val]] [-[i]Usym] ... [-f defile] [-x {012}] [-M backext] [-o outfile] [infile ...] unifdefall [-Ipath] ... file DESCRIPTION The unifdef utility selectively processes conditional 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. The unifdef utility acts on #if, #ifdef, #ifndef, #elif, #else, and #endif lines, using macros specified in -D and -U command line options or in -f definitions files. A directive is processed if the macro specifi- cations are sufficient to provide a definite value for its control expression. If the result is false, the directive and the following lines under its control are removed. If the result is true, only the directive is removed. An #ifdef or #ifndef directive is passed through unchanged if its controlling macro is not specified. Any #if or #elif control expression that has an unknown value or that unifdef cannot parse is passed through unchanged. By default, unifdef ignores #if and #elif lines with constant expressions; it can be told to process them by speci- fying the -k flag on the command line. It understands a commonly-used subset of the expression syntax for #if and #elif lines: integer constants, integer values of macros defined on the command line, the defined() operator, the operators !, <, >, <=, >=, ==, !=, &&, ||, and parenthesized expressions. A kind of ``short circuit'' evaluation is used for the && operator: if either operand is definitely false then the result is false, even if the value of the other operand is unknown. Similarly, if either operand of || is definitely true then the result is true. When evaluating an expression, unifdef does not expand macros first. The value of a macro must be a simple number, not an expression. A limited form of indirection is allowed, where one macro's value is the name of another. In most cases, unifdef does not distinguish between object-like macros (without arguments) and function-like macros (with arguments). A func- tion-like macro invocation can appear in #if and #elif control expres- sions. If the macro is not explicitly defined, or is defined with the -D flag on the command-line, or with #define in a -f definitions file, its arguments are ignored. If a macro is explicitly undefined on the command line with the -U flag, or with #undef in a -f definitions file, it may not have any arguments since this leads to a syntax error. The unifdef utility 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 for it to handle. A script called unifdefall can be used to remove all conditional cpp(1) directives from a file. It uses unifdef -s and cpp -dM to get lists of all the controlling macros and their definitions (or lack thereof), then invokes unifdef with appropriate arguments to process the file. OPTIONS -Dsym=val Specify that a macro is defined to a given value. -Dsym Specify that a macro is defined to the value 1. -Usym Specify that a macro is undefined. If the same macro appears in more than one argument, the last occurrence dominates. -iDsym[=val] -iUsym C strings, comments, and line continuations are ignored within #ifdef and #ifndef blocks controlled by macros specified with these options. -f defile The file defile contains #define and #undef preprocessor direc- tives, which have the same effect as the corresponding -D and -U command-line arguments. You can have multiple -f arguments and mix them with -D and -U arguments; later options override earlier ones. Each directive must be on a single line. Object-like macro defi- nitions (without arguments) are set to the given value. Func- tion-like macro definitions (with arguments) are treated as if they are set to 1. -b Replace removed lines with blank lines instead of deleting them. Mutually exclusive with the -B option. -B Compress blank lines around a deleted section. Mutually exclu- sive with the -b option. -c Complement, i.e., lines that would have been removed or blanked are retained and vice versa. -d Turn on printing of debugging messages. -e By default, unifdef will report an error if it needs to remove a preprocessor directive that spans more than one line, for exam- ple, if it has a multi-line comment hanging off its right hand end. The -e flag makes it ignore the line instead. -h Print help. -Ipath Specifies to unifdefall an additional place to look for #include files. This option is ignored by unifdef for compatibility with cpp(1) and to simplify the implementation of unifdefall. -K Always treat the result of && and || operators as unknown if either operand is unknown, instead of short-circuiting when unknown operands can't affect the result. This option is for compatibility with older versions of unifdef. -k Process #if and #elif lines with constant expressions. By default, sections controlled by such lines are passed through unchanged because they typically start ``#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. -m Modify one or more input files in place. -M backext Modify input files in place, and keep backups of the original files by appending the backext to the input filenames. -n Add #line directives to the output following any deleted lines, so that errors produced when compiling the output file correspond to line numbers in the input file. -o outfile Write output to the file outfile instead of the standard output when processing a single file. -s Instead of processing an input file as usual, this option causes unifdef to produce a list of macros that are used in preprocessor directive controlling expressions. -S Like the -s option, but the nesting depth of each macro is also printed. This is useful for working out the number of possible combinations of interdependent defined/undefined macros. -t Disables parsing for C strings, comments, and line continuations, which is useful for plain text. This is a blanket version of the -iD and -iU flags. -V Print version details. -x {012} Set exit status mode to zero, one, or two. See the EXIT STATUS section below for details. The unifdef utility takes its input from stdin if there are no file argu- ments. You must use the -m or -M options if there are multiple input files. You can specify inut from stdin or output to stdout with `-'. The unifdef utility works nicely with the -Dsym option of diff(1). EXIT STATUS In normal usage the unifdef utility's exit status depends on the mode set using the -x option. If the exit mode is zero (the default) then unifdef exits with status 0 if the output is an exact copy of the input, or with status 1 if the out- put differs. If the exit mode is one, unifdef exits with status 1 if the output is unmodified or 0 if it differs. If the exit mode is two, unifdef exits with status zero in both cases. In all exit modes, unifdef exits with status 2 if there is an error. The exit status is 0 if the -h or -V command line options are given. DIAGNOSTICS Too many levels of nesting. Inappropriate #elif, #else or #endif. Obfuscated preprocessor control line. Premature EOF (with the line number of the most recent unterminated #if). EOF in comment. SEE ALSO cpp(1), diff(1) The unifdef home page is http://dotat.at/prog/unifdef HISTORY The unifdef command appeared in 2.9BSD. ANSI C support was added in FreeBSD 4.7. AUTHORS The original implementation was written by Dave Yost . Tony Finch rewrote it to support ANSI C. BUGS Expression evaluation is very limited. Handling one line at a time means preprocessor directives split across more than one physical line (because of comments or backslash-newline) cannot be handled in every situation. Trigraphs are not recognized. There is no support for macros with different definitions at different points in the source file. The text-mode and ignore functionality does not correspond to modern cpp(1) behaviour. January 7, 2014 unifdef-2.10/Changelog000644 031623 031623 00000546730 12263051406 014742 0ustar00fanf2fanf2000000 000000 --------------------------------------------------- 2014-01-07 19:16:02 +0000 Tony Finch (HEAD, tag: unifdef-2.10, master) web: update for unifdef-2.10 release web/index.html | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) --------------------------------------------------- 2014-01-07 19:12:35 +0000 Tony Finch bump more copyright dates scripts/copycheck.sh | 4 +++- unifdef.1 | 2 +- unifdef.c | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) --------------------------------------------------- 2014-01-07 19:00:39 +0000 Tony Finch unifdef: do not mark the line as dirty when there is no dirt This caused problems for #undef directives in -f header files: the following line was ignored because the line state got incorrectly updated. Thanks to the uClibc project for reporting the bug and providing a sample test case and a proposed fix. Reported-by: Bernhard Reutner-Fischer tests/defundef-undefdef.experr | 0 tests/defundef-undefdef.expout | 1 + tests/defundef-undefdef.exprc | 1 + tests/defundef-undefdef.sh | 1 + tests/if6.h | 2 ++ unifdef.c | 5 ++--- 6 files changed, 7 insertions(+), 3 deletions(-) --------------------------------------------------- 2014-01-06 10:51:56 +0000 Tony Finch (github/master) scripts: make release more verbose scripts/release.sh | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2014-01-06 10:51:17 +0000 Tony Finch web: link to pre-release web/index.html | 8 ++++++++ 1 file changed, 8 insertions(+) --------------------------------------------------- 2014-01-06 10:42:01 +0000 Tony Finch Bump some copyright dates COPYING | 2 +- win32/unifdef.h | 2 +- win32/win32.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2014-01-06 10:38:00 +0000 Tony Finch win32: a more correct snprintf() portability shim Based on http://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010 win32/unifdef.h | 1 - win32/win32.c | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-06-12 15:50:39 +0100 Tony Finch INSTALL: use GitHub for Windows to run Unix shell scripts README: update FreshMeat -> FreeCode and note that GitHub zip file downloads are broken. Suggested-by: Lee M. Hamel INSTALL | 12 +++++++----- README | 6 +++++- 2 files changed, 12 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-06-11 22:10:31 +0100 Tony Finch unifdef: refactor keyword and symbol matching The generic strlcmp() is replaced by the more specific matchsym() and findsym() now includes the effect of skipsym(). This is to prepare for case-insensitive keyword matching, as part of foreign language support. unifdef.c | 155 ++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 84 insertions(+), 71 deletions(-) --------------------------------------------------- 2013-06-07 23:21:03 +0100 Tony Finch unifdef.1: bump date and add link to home page unifdef.1 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-06-07 23:10:14 +0100 Tony Finch copycheck: check date in manual scripts/copycheck.sh | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2013-06-07 12:09:20 +0100 Tony Finch web: update for unifdef-2.9 release web/index.html | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) --------------------------------------------------- 2013-06-07 11:53:51 +0100 Tony Finch (tag: unifdef-2.9) INSTALL: more portability notes. INSTALL | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) --------------------------------------------------- 2013-06-06 12:24:30 +0100 Tony Finch Makefile: correct dependencies and portability to GNU make. My aim was previously to rely on make's built-in rules to build unifdef, on the assumption that this would be the easiest way to do the right thing on unknown systems. The right way to specify the dependencies for unifdef is: unifdef: unifdef.c unifdef.h version.h However GNU make has an incorrect implicit rule: .c: $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@ This puts all of the prerequisites on the command line, which causes things to break. POSIX specifies the implicit rule as .c: $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< And POSIX says "In an inference rule, the $< macro shall evaluate to the filename whose existence allowed the inference rule to be chosen for the target". In our case $< expands to just unifdef.c which is what we want. Putting .POSIX in the Makefile does not cause GNU make to use the posixly-correct implicit rule definition. The previous version of the Makefile had incorrect dependencies which meant that GNU make (and probably other versions of make) would not rebuild unifdef if the header files were touched. So to fix that bug, and to work around the buggy implicit rule in GNU make, the Makefile now has an expanded version of the standard POSIX build rule for unifdef. Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2013-06-06 11:50:19 +0100 Tony Finch web: bump pre-release web/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-06-06 11:48:43 +0100 Tony Finch unifdef: Avoid ssize_t for portability unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2013-05-10 00:16:01 +0200 Ruediger Meier travis-ci: fix release traget by git cloning with infinite depth git describe needs at least the last tag available. This is never sure when using git clone --depth=50 which is done by travis per default. .travis.yml | 3 +++ 1 file changed, 3 insertions(+) --------------------------------------------------- 2013-05-09 21:42:31 +0200 Ruediger Meier scripts: avoid gzip option --keep for compatibility "-k|--keeps" is not available yet in officially released gzip. scripts/release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-05-15 13:22:56 +0100 Tony Finch scripts: fetch Github pull requests scripts/git.config | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2013-05-09 20:44:29 +0100 Tony Finch web: bump pre-release web/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-05-09 20:38:24 +0100 Tony Finch unifdef: avoid strndup() for non-standard C implementations unifdef.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-05-09 20:08:26 +0100 Tony Finch scripts: copycheck fixes ! must go at the start of a pipeline in portable sh Use a default author if git doesn't know who you are. scripts/copycheck.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) --------------------------------------------------- 2013-05-09 20:00:19 +0100 Tony Finch tests: avoid non-portable error message in multimissing tests/multi-generic-sh | 2 +- tests/multimissing.experr | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) --------------------------------------------------- 2013-05-09 19:55:37 +0100 Tony Finch web: bump pre-release web/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-05-09 19:54:28 +0100 Tony Finch tests: shell . command needs path in argument tests/multi.sh | 2 +- tests/multilnnum.sh | 2 +- tests/multimissing.sh | 2 +- tests/multinewline.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-05-09 19:47:56 +0100 Tony Finch web: bump pre-release web/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-05-09 19:44:58 +0100 Tony Finch tests: leave the source files alone in the multi-file tests tests/multi-generic-sh | 15 +++++++++++++++ tests/multi.expout | 8 ++++---- tests/multi.sh | 10 +++------- tests/multilnnum.expout | 20 ++++++++++---------- tests/multilnnum.sh | 10 +++------- tests/multimissing.experr | 7 +++++-- tests/multimissing.expout | 4 ++-- tests/multimissing.sh | 15 +++------------ tests/multinewline.expout | 8 ++++---- tests/multinewline.sh | 10 +++------- 10 files changed, 52 insertions(+), 55 deletions(-) --------------------------------------------------- 2013-05-09 14:41:53 +0100 Tony Finch Makefile: release fixes Must include version.h for non-unix builds. Re-jig the version dependencies to avoid running reversion.sh twice. Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-05-08 16:51:11 +0100 Tony Finch web: bump pre-release web/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-05-08 16:48:49 +0100 Tony Finch tests: clean away more xterm gubbins Makefile | 3 +- tests/xterm.experr | 2 +- tests/xterm.expout | 2671 ---------------------------------------------------- tests/xterm.sh | 7 +- 4 files changed, 6 insertions(+), 2677 deletions(-) --------------------------------------------------- 2013-05-08 16:30:35 +0100 Tony Finch tests: do not ship vast chunks of XTerm By default the xterm test does nothing; if required it will download and upack xterm in order to run the full test. It is likely to break when a new version of xterm is released since the download URL is not versioned. COPYING | 8 - tests/xterm-292-main.c | 5239 --------------------------------------- tests/xterm-defs.h | 6423 ------------------------------------------------ tests/xterm.sh | 38 +- 4 files changed, 33 insertions(+), 11675 deletions(-) --------------------------------------------------- 2013-05-08 16:08:49 +0100 Tony Finch scripts: fold long lines in the Changelog scripts/gitlog2changelog.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-05-08 15:58:15 +0100 Tony Finch scripts: compress releases with xz as well as gzip scripts/release.sh | 6 ++++-- web/index.html | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-05-08 15:02:06 +0100 Tony Finch web: bump pre-release web/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-05-08 15:01:17 +0100 Tony Finch COPYING: note part of XTerm is used in the tests COPYING | 8 ++++++++ 1 file changed, 8 insertions(+) --------------------------------------------------- 2013-05-08 14:56:23 +0100 Tony Finch tests: check recursive definitions, and unifdefall xterm The xterm test is my original motivation for unifdef. The OPT_PTY_HANDSHAKE definition relies on indirection and without that feature unifdefall cannot remove all preprocessor conditional directives. tests/recursive.experr | 102 + tests/recursive.expout | 26 + tests/recursive.exprc | 1 + tests/recursive.sh | 1 + tests/xterm-292-main.c | 5239 +++++++++++++++++++++++++++++++++++++++ tests/xterm-defs.h | 6423 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/xterm.experr | 3 + tests/xterm.expout | 2754 +++++++++++++++++++++ tests/xterm.exprc | 1 + tests/xterm.sh | 8 + 10 files changed, 14558 insertions(+) --------------------------------------------------- 2013-05-08 14:46:53 +0100 Tony Finch unifdef: further debugging improvements unifdef.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) --------------------------------------------------- 2013-05-08 13:47:07 +0100 Tony Finch unifdef: improve indirect macro definitions Note in the debug output when a macro value is updated. Do not change a macro from defined to undefined. Recursive definitions no longer cause a loop. unifdef.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) --------------------------------------------------- 2013-05-08 13:30:37 +0100 Tony Finch web: pre-release web/index.html | 6 ++++++ 1 file changed, 6 insertions(+) --------------------------------------------------- 2013-05-08 13:19:31 +0100 Tony Finch scripts: include release tags and renames in Changelog Makefile | 2 +- scripts/gitlog2changelog.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-05-08 13:10:11 +0100 Tony Finch web: improve example uses, and add UIT web/index.html | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) --------------------------------------------------- 2013-05-08 12:56:45 +0100 Tony Finch unifdef.1: document indirection, and refer to macros not symbols Trying to be more consistent with terminology from the C standard. unifdef.1 | 76 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) --------------------------------------------------- 2013-05-08 12:39:53 +0100 Tony Finch tests: test indirect macro definitions tests/indirect.experr | 0 tests/indirect.expout | 16 ++++++++++++++++ tests/indirect.exprc | 1 + tests/indirect.sh | 1 + 4 files changed, 18 insertions(+) --------------------------------------------------- 2013-05-08 12:39:03 +0100 Tony Finch scripts: add missing release script scripts/release.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --------------------------------------------------- 2013-05-08 12:31:39 +0100 Tony Finch unifdef: support for simple macro value indirection unifdef.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) --------------------------------------------------- 2013-05-08 11:45:53 +0100 Tony Finch Makefile: delete control characters from manual with col instead of sed Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-05-08 11:21:31 +0100 Tony Finch scripts: move support gubbins into a subdirectory Makefile | 26 +++++++------------------- authors.svn => scripts/authors.svn | 0 copycheck.sh => scripts/copycheck.sh | 0 fixtests.sh => scripts/fixtests.sh | 0 git.config => scripts/git.config | 3 --- scripts/gitlog2changelog.sh | 8 ++++++++ reversion.sh => scripts/reversion.sh | 0 runtests.sh => scripts/runtests.sh | 0 svnup => scripts/svnup.sh | 4 +--- upload => scripts/upload.sh | 0 10 files changed, 16 insertions(+), 25 deletions(-) --------------------------------------------------- 2013-05-08 11:03:38 +0100 Tony Finch Bump copyright dates. COPYING | 4 ++-- unifdef.h | 2 +- win32/unifdef.h | 2 +- win32/win32.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2013-05-08 10:49:28 +0100 Tony Finch copyckeck: ensure copyright dates are correct on release copycheck.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) --------------------------------------------------- 2013-05-06 18:08:08 +0100 Tony Finch web: update for 2.8 release; clearer links to COPYRIGHT and INSTALL web/index.html | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) --------------------------------------------------- 2013-05-06 18:07:21 +0100 Tony Finch (tag: unifdef-2.8) INSTALL: be clearer about dependencies up front INSTALL | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-05-06 17:47:58 +0100 Tony Finch unifdef: fix #undef parser Previously the parser state was incorrect following a #undef which caused the following line to be ignored. Found when testing unifdefall on xterm/main.c. unifdef.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-05-06 17:40:16 +0100 Tony Finch unifdef: remove spurious \n in debug output unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-05-06 17:36:34 +0100 Tony Finch unifdef: increase max number of symbols to 16K This is so that it can cope with the output of cc -E -dM xterm/main.c unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-05-06 17:35:08 +0100 Tony Finch unifdefall: use unifdef -f and delete lots of arcane shell hackery unifdefall.sh | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) --------------------------------------------------- 2013-04-29 21:10:55 +0100 Tony Finch web: bump pre-release version web/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-04-29 21:02:53 +0100 Tony Finch unifdef: support function-like macro definitions This is a fairly half-arsed implementation that treats function-like macros the same as object-like macros that have been set to 1. It is reasonably consistent with the existing half-arsed treatment of function-like macro invocations in #if and #elif control expressions. The manual now explains this half-arsedness more clearly. tests/broken1.h | 1 - tests/defundef-broken1.experr | 2 - tests/defundef-broken1.exprc | 1 - tests/defundef-broken1.sh | 1 - ...ndef-broken1.expout => defundef-funlike.experr} | 0 tests/defundef-funlike.expout | 13 ++++++ tests/defundef-funlike.exprc | 1 + tests/defundef-funlike.sh | 1 + tests/funlike.h | 1 + unifdef.1 | 51 +++++++++++++++------- unifdef.c | 14 +++--- 11 files changed, 58 insertions(+), 28 deletions(-) --------------------------------------------------- 2013-04-29 20:37:08 +0100 Tony Finch unifdef.1: typo: function-like arguments -> macros unifdef.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-27 17:28:18 +0100 Tony Finch web: advertise pre-release web/index.html | 7 +++++++ 1 file changed, 7 insertions(+) --------------------------------------------------- 2013-04-27 17:22:50 +0100 Tony Finch tests: broken #define/#undef files tests/broken1.h | 1 + tests/broken2.h | 1 + tests/broken3.h | 1 + tests/broken4.h | 2 ++ tests/defundef-broken1.experr | 2 ++ tests/defundef-broken1.expout | 0 tests/defundef-broken1.exprc | 1 + tests/defundef-broken1.sh | 1 + tests/defundef-broken2.experr | 2 ++ tests/defundef-broken2.expout | 0 tests/defundef-broken2.exprc | 1 + tests/defundef-broken2.sh | 1 + tests/defundef-broken3.experr | 2 ++ tests/defundef-broken3.expout | 0 tests/defundef-broken3.exprc | 1 + tests/defundef-broken3.sh | 1 + tests/defundef-broken4.experr | 2 ++ tests/defundef-broken4.expout | 0 tests/defundef-broken4.exprc | 1 + tests/defundef-broken4.sh | 1 + 20 files changed, 21 insertions(+) --------------------------------------------------- 2013-04-27 17:21:15 +0100 Tony Finch unifdef: correct check for multi-line #define/#undef directives unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-27 16:57:50 +0100 Tony Finch unifdef.1: explain #define restrictions unifdef.1 | 7 +++++++ 1 file changed, 7 insertions(+) --------------------------------------------------- 2013-04-27 16:52:26 +0100 Tony Finch unifdef: no need to edit keywords in defundef() unifdef.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) --------------------------------------------------- 2013-04-27 16:44:58 +0100 Tony Finch unifdef: rewrite the #define/#undef file parser unifdef.c | 158 +++++++++++++++++++++----------------------------------------- 1 file changed, 52 insertions(+), 106 deletions(-) --------------------------------------------------- 2013-04-27 16:41:31 +0100 Tony Finch unifdef: 64 bit evaluator, and quell type conversion warnings unifdef.c | 66 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 23 deletions(-) --------------------------------------------------- 2013-04-27 16:38:00 +0100 Tony Finch tests: display progress runtests.sh | 3 +++ 1 file changed, 3 insertions(+) --------------------------------------------------- 2013-04-26 17:48:14 +0100 Tony Finch unifdef: more refactoring in -f mode Moving towards sharing more of the parsing code between -f header files and normal source files. unifdef.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) --------------------------------------------------- 2013-04-26 17:43:54 +0100 Tony Finch unifdef: Fix the behaviour of #define without a value On the command line, `-DFOO` is a short-hand for `-DFOO=1` whereas `#define FOO` is like `-DFOO=`. tests/if1.h | 2 +- unifdef.c | 30 ++++++++++++------------------ 2 files changed, 13 insertions(+), 19 deletions(-) --------------------------------------------------- 2013-04-26 16:13:48 +0100 Tony Finch reversion: avoid spurious rebuilds in a dirty tree reversion.sh | 3 +++ 1 file changed, 3 insertions(+) --------------------------------------------------- 2013-04-26 16:13:22 +0100 Tony Finch Makefile: need a dependency on unifdef.h Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-26 15:51:56 +0100 Tony Finch unifdef: count lines correctly when processing multiple files tests/multilnnum.experr | 0 tests/multilnnum.expout | 42 ++++++++++++++++++++++++++++++++++++++++++ tests/multilnnum.exprc | 1 + tests/multilnnum.sh | 7 +++++++ unifdef.c | 1 + 5 files changed, 51 insertions(+) --------------------------------------------------- 2013-04-17 21:44:38 +0100 Tony Finch tests: check handling of weird whitespace tests/whitespace-1.experr | 2 ++ tests/whitespace-1.expout | 1 + tests/whitespace-1.exprc | 1 + tests/whitespace-1.sh | 1 + tests/whitespace-2.experr | 0 tests/whitespace-2.expout | 5 +++++ tests/whitespace-2.exprc | 1 + tests/whitespace-2.sh | 1 + tests/whitespace.c | 7 +++++++ 9 files changed, 19 insertions(+) --------------------------------------------------- 2013-04-17 21:44:02 +0100 Tony Finch tests: add missing if1.h tests/if1.h | 3 +++ 1 file changed, 3 insertions(+) --------------------------------------------------- 2013-04-17 21:39:15 +0100 Tony Finch unifdef: improve handling of weird whitespace This fixes the handling of lots of whitespace on a line, and restores proper handling of final lines without newlines. unifdef.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) --------------------------------------------------- 2013-04-17 20:51:25 +0100 Tony Finch unifdef: refactor parseline() Create functions for finding preprocessor directives and for skipping trailing junk and non-preprocessor text. This simplifies parseline() and it will also be useful in defundef(). unifdef.c | 182 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 98 insertions(+), 84 deletions(-) --------------------------------------------------- 2013-04-16 22:43:24 +0100 Tony Finch unifdef: trace -f activity only in debug mode tests/if1-f.experr | 3 --- unifdef.c | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) --------------------------------------------------- 2013-04-16 22:40:16 +0100 Tony Finch tests: check basics of -f tests/if1-f.experr | 3 +++ tests/if1-f.expout | 16 ++++++++++++++++ tests/if1-f.exprc | 1 + tests/if1-f.sh | 1 + 4 files changed, 21 insertions(+) --------------------------------------------------- 2013-04-16 22:34:11 +0100 Tony Finch unifdef: better error handling and style for defundef() unifdef.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) --------------------------------------------------- 2013-04-16 22:17:49 +0100 Tony Finch unifdef: correctly handle multiple input files with differing newline styles tests/multinewline.experr | 0 tests/multinewline.expout | 39 +++++++++++++++++++++++++++++++++++++++ tests/multinewline.exprc | 1 + tests/multinewline.sh | 7 +++++++ unifdef.c | 1 + 5 files changed, 48 insertions(+) --------------------------------------------------- 2013-04-16 22:09:16 +0100 Tony Finch unifdef: stylish undefile() unifdef.c | 133 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 67 insertions(+), 66 deletions(-) --------------------------------------------------- 2013-04-16 21:52:41 +0100 Tony Finch README: credit Steve Underwood README | 3 +++ 1 file changed, 3 insertions(+) --------------------------------------------------- 2013-04-16 21:50:45 +0100 Tony Finch unifdef: cleanup addsym() code duplication and name undefile() unifdef.c | 70 ++++++++++++++++++++++++++++----------------------------------- 1 file changed, 31 insertions(+), 39 deletions(-) --------------------------------------------------- 2013-04-16 21:28:53 +0100 Tony Finch unifdef: use -f option for definitions files, and add documentation unifdef.1 | 22 ++++++++++++++++++++++ unifdef.c | 14 +++++++------- 2 files changed, 29 insertions(+), 7 deletions(-) --------------------------------------------------- 2013-04-16 20:51:34 +0100 Tony Finch unifdef: read definitions an undefinitions from a file Submitted-by: Steve Underwood unifdef.c | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-04-07 11:07:46 +0100 Tony Finch win32: report intermediate errors in replace() win32/win32.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-04-07 11:04:10 +0100 Tony Finch unifdef: slightly cleaner backup filename handling unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-07 10:57:48 +0100 Tony Finch unifdef: close input when processing is complete This avoids leaking input file handles when processing multiple files, and it should help with the temporary file handling problems on Windows. unifdef.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) --------------------------------------------------- 2013-04-07 10:55:13 +0100 Tony Finch unifdef: add a comment to explain the newline handling unifdef.c | 9 +++++++++ 1 file changed, 9 insertions(+) --------------------------------------------------- 2013-04-06 13:51:10 +0100 Tony Finch win32: ReplaceFile() is not the right thing either. Sometimes unifdef calls replace() when the target filename does not exist, in which situation ReplaceFile() fails. So it is easier to call remove() and rename() and not worry about atomic replacement. win32/win32.c | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) --------------------------------------------------- 2013-04-04 12:46:09 +0200 Ruediger Meier travis-ci: import travis yaml controller .travis.yml is used for automatic builds on travis build farm (https://travis-ci.org/) if the travis service hook is enabled for the repo on github. This inital yaml controller will run 3 different compilers (gcc, clang, mingw). Mingw builds will use wine for running the test suite, which currently fails for some tests to be fixed (or skipped) later. Builds are enabled for two branches "master" and "tmp" where the tmp branch may be used to try something out whithout polluting the master history (specially when changing/testing .travis.yml itself). .travis.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) --------------------------------------------------- 2013-04-06 13:24:03 +0100 Tony Finch win32: use ReplaceFile() instead of rename() The Windows implementation of rename() fails if the new filename already exists. When processing the input file in place, unifdef uses ReplaceFile() instead. unifdef.c | 2 +- unifdef.h | 2 ++ win32/unifdef.h | 1 + win32/win32.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-04-04 13:28:31 +0200 Ruediger Meier Makefile: specify path to version.sh in release target. Some shells only source from $PATH not the current directory. Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-04 13:11:20 +0200 Ruediger Meier Tell git to ignore .exe target. .gitignore | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2013-04-04 12:45:05 +0200 Ruediger Meier INSTALL: fix typo INSTALL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-02 21:51:39 +0100 Tony Finch tests/multimissing: avoid platform-dependent error message Reported-by: Ruediger Meier tests/multimissing.experr | 3 +-- tests/multimissing.sh | 9 +++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-04-02 14:07:20 +0200 Ruediger Meier tests: locale-independent diffs in multi-file tests We want to sed away file mtimes from the diff output but date/time format may depend on platform and locale. (Noticed on OpenBSD 5.1) tests/multi.sh | 4 ++-- tests/multimissing.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-04-02 21:27:17 +0100 Tony Finch unifdefall: use cc -E -dM instead of cpp -dM This is a workaround for Mac OS X, in which ccp invokes gcc with the -traditional-cpp option which disables C99 variadic macros. Unfortunately stdio.h requires variadic macro support so real programs, as well as the tests, are likely to break. I am not sure if this is the right fix. It is marginally closer to POSIX, since it has c99 -E but not cpp. But POSIX also lacks cc and the -dM option. unifdefall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-04-02 21:25:14 +0100 Tony Finch tests: fix a typo in a type name, caught by clang tests/if5-a.expout | 2 +- tests/if5.c | 2 +- tests/if5.expout | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2013-03-31 16:00:36 +0100 Tony Finch reversion: deal with a git regression when the tree is clean Some time between git-1.7.3 and git-1.7.10 `git show --quiet` stopped working. Apparently the official way to suppress the diff output is now with the -s option. Neither of these options is documented in the `git show` man page; `git diff` documents the --quiet option for this purpose and `git log` documents the -s option. See also http://thread.gmane.org/gmane.comp.version-control.git/174665 Reported-by: Bruce Korb reversion.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-03-28 19:05:30 +0000 Tony Finch (tag: unifdef-2.7) bump copyright dates unifdef.1 | 2 +- unifdef.c | 2 +- unifdefall.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2013-03-28 19:04:50 +0000 Tony Finch web: freshmeat iis now freecode web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2013-03-28 18:50:12 +0000 Tony Finch Release unifdef-2.7 web/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-03-28 18:43:36 +0000 Tony Finch web: bump prerelease version again web/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2013-03-28 18:37:41 +0000 Tony Finch unifdef.1: Remove superfluous paragraph macro. Obtained-from: Joel Dahl unifdef.1 | 1 - 1 file changed, 1 deletion(-) --------------------------------------------------- 2013-03-28 18:35:10 +0000 Tony Finch unifdefall: No need to use `basename`. Obtained-from: David O'Brien unifdefall.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --------------------------------------------------- 2013-03-28 18:18:48 +0000 Tony Finch unifdef: fix type mismatch in debug() calls. Adapted from a similar fix by Jörg Sonnenberger unifdef.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) --------------------------------------------------- 2013-03-28 17:36:25 +0000 Tony Finch win32: Makefile for MinGW. Suggested by: Mateusz Czaplinski INSTALL | 8 +++++--- win32/Makefile.mingw | 7 +++++++ 2 files changed, 12 insertions(+), 3 deletions(-) --------------------------------------------------- 2013-03-28 17:24:37 +0000 Tony Finch unifdef.c: quell warnings unifdef.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --------------------------------------------------- 2013-03-28 16:47:06 +0000 Tony Finch web: bump prerelease version web/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2013-03-28 16:38:34 +0000 Tony Finch Include the input file name on #line directives. Suggested by: Bob Lewis tests/overlnnum.expout | 8 ++++---- unifdef.c | 26 +++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 7 deletions(-) --------------------------------------------------- 2013-03-28 16:08:00 +0000 Tony Finch Configurable exit mode, to be more friendly to make files. Suggested by: Bob Lewis tests/exitmode0a.experr | 0 tests/exitmode0a.expout | 16 ++++++++++++++++ tests/exitmode0a.exprc | 1 + tests/exitmode0a.sh | 1 + tests/exitmode0b.experr | 0 tests/exitmode0b.expout | 26 ++++++++++++++++++++++++++ tests/exitmode0b.exprc | 1 + tests/exitmode0b.sh | 1 + tests/exitmode1a.experr | 0 tests/exitmode1a.expout | 16 ++++++++++++++++ tests/exitmode1a.exprc | 1 + tests/exitmode1a.sh | 1 + tests/exitmode1b.experr | 0 tests/exitmode1b.expout | 26 ++++++++++++++++++++++++++ tests/exitmode1b.exprc | 1 + tests/exitmode1b.sh | 1 + tests/exitmode2a.experr | 0 tests/exitmode2a.expout | 16 ++++++++++++++++ tests/exitmode2a.exprc | 1 + tests/exitmode2a.sh | 1 + tests/exitmode2b.experr | 0 tests/exitmode2b.expout | 26 ++++++++++++++++++++++++++ tests/exitmode2b.exprc | 1 + tests/exitmode2b.sh | 1 + unifdef.1 | 40 ++++++++++++++++++++++++++++++++++++---- unifdef.c | 23 ++++++++++++++++------- 26 files changed, 190 insertions(+), 11 deletions(-) --------------------------------------------------- 2012-09-06 17:58:59 +0100 Tony Finch web: fix the anchor text too! web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2012-09-06 17:57:07 +0100 Tony Finch web: correct link to Windows .zip file Reported by: Mateusz Czaplinski web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2012-02-22 14:04:31 +0000 Tony Finch web: bump pre-release version web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2012-02-22 13:52:47 +0000 Tony Finch win32: build fixes Submitted by: 김이선 win32/unifdef.h | 2 ++ win32/unifdef.vcxproj | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) --------------------------------------------------- 2012-02-21 18:45:52 +0000 Tony Finch web: advertise pre-release with Windows support web/index.html | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2012-02-21 18:42:22 +0000 Tony Finch reversion: more verbose when updating. Changelog depends on version.h. Makefile | 2 +- reversion.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2012-02-21 18:08:23 +0000 Tony Finch release: build zip file as well as tarball. Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --------------------------------------------------- 2012-02-21 18:00:44 +0000 Tony Finch release: include the portability stuff in release tarballs. We now also include version.h so the Windows build doesn't need to run version.sh. INSTALL | 10 ++++++---- Makefile | 24 +++++++----------------- win32/unifdef.vcxproj | 1 + 3 files changed, 14 insertions(+), 21 deletions(-) --------------------------------------------------- 2012-02-21 17:21:29 +0000 Tony Finch win32: Visual Studio 2010 build files. Submitted by: 김이선 win32/unifdef.sln | 20 ++++++++++++ win32/unifdef.vcxproj | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) --------------------------------------------------- 2012-02-21 16:45:19 +0000 Tony Finch port: Windows support. I have already committed copies of the err.c and getopt.c library code from FreeBSD. Another trouble spot is the temporary file used when modifying in place. I have pulled this out into a support function with different implementations on Unix and Windows. Windows lacks mkstemp(), so there we just use mktemp() and for simplicity leave the permissions as the default set by fopen() rather than copying from another file. Unifdef does its own newline handling in order to work correctly with files that use CRLF or bare LF regardless of the system's native preference. It therefore opens streams in binary mode. On Windows we also need to put stdin and stdout into binary mode for consistency. More trivially, there is no stdbool support and a couple of library functions have gratuitous underscores appended to their names. This is based on submissions from the following people, to whom I am grateful since I lack Windows development experience. Submitted by: 김이선 Submitted by: Alexander Mohr COPYING | 18 ++++++++------- unifdef.c | 21 ++++-------------- unifdef.h | 48 +++++++++++++++++++++++++++++++++++++++ win32/unifdef.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ win32/win32.c | 40 +++++++++++++++++++++++++++++++++ 5 files changed, 171 insertions(+), 25 deletions(-) --------------------------------------------------- 2012-02-21 16:02:48 +0000 Tony Finch unifdef: Update copyright dates. COPYING | 4 ++-- unifdef.1 | 4 ++-- unifdef.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2012-02-21 15:41:46 +0000 Tony Finch port: clean up err.c and getopt.c Move headers out to shared unifdef.h Make getopt use prototypes and const correctly. Remove err_set_file and err_set_exit support. FreeBSD/err.c | 93 +++++++++++--------------------------------------------- FreeBSD/getopt.c | 27 +++------------- 2 files changed, 23 insertions(+), 97 deletions(-) --------------------------------------------------- 2012-02-21 13:27:28 +0000 Tony Finch unifdef.c: use memcpy() instead of the dodgy strncpy(). This makes it clearer that I do not want a '\0' terminator. Submitted by: Carsten Hey unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2012-02-21 12:34:35 +0000 Tony Finch unifdef.c: prefer remove() to unlink() for portability. Submitted by: Carsten Hey unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2012-02-21 12:27:55 +0000 Tony Finch unifdef.c: Fix memory leaks in temporary and backup file handling. unifdef.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --------------------------------------------------- 2012-02-20 18:58:01 +0000 Tony Finch port: Copy err.c and getopt.c from FreeBSD. FreeBSD/err.c | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ FreeBSD/getopt.c | 135 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 330 insertions(+) --------------------------------------------------- 2012-02-20 17:09:55 +0000 Tony Finch tests: multi-file, error handling, output permissions. Also: the fixtests script updates the test suite after it has been changed and passed a manual check. The runtests script now runs each test in a subshell so that tests have greater control over their exit status. fixtests.sh | 9 +++++++++ runtests.sh | 2 +- tests/multi.experr | 0 tests/multi.expout | 36 ++++++++++++++++++++++++++++++++++++ tests/multi.exprc | 1 + tests/multi.sh | 7 +++++++ tests/multimissing.experr | 3 +++ tests/multimissing.expout | 22 ++++++++++++++++++++++ tests/multimissing.exprc | 1 + tests/multimissing.sh | 7 +++++++ tests/outdir.exprc | 2 +- tests/outdir.sh | 2 ++ tests/outeperm.experr | 1 + tests/outeperm.expout | 0 tests/outeperm.exprc | 1 + tests/outeperm.sh | 6 ++++++ tests/outfile.exprc | 2 +- tests/outfile.sh | 2 ++ tests/outperms.experr | 1 + tests/outperms.expout | 16 ++++++++++++++++ tests/outperms.exprc | 1 + tests/outperms.sh | 7 +++++++ tests/overdir.exprc | 2 +- tests/overdir.sh | 2 ++ tests/overenoent.experr | 1 + tests/overenoent.expout | 0 tests/overenoent.exprc | 1 + tests/overenoent.sh | 5 +++++ tests/overin.exprc | 2 +- tests/overin.sh | 2 ++ tests/overlnnum.exprc | 2 +- tests/overlnnum.sh | 2 ++ tests/overperms.experr | 2 ++ tests/overperms.expout | 16 ++++++++++++++++ tests/overperms.exprc | 1 + tests/overperms.sh | 9 +++++++++ tests/overwrite.exprc | 2 +- tests/overwrite.sh | 2 ++ 38 files changed, 173 insertions(+), 7 deletions(-) --------------------------------------------------- 2012-02-20 15:54:17 +0000 Tony Finch unifdef.c: Sensible permissions on output files. This fixes a regression in the multiple files support. unifdef.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) --------------------------------------------------- 2012-02-19 19:42:11 +0000 Tony Finch unifdef.c: Some C89 and C++ compatibility. Suggested by: Carsten Hey unifdef.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) --------------------------------------------------- 2012-02-18 20:15:27 +0000 Tony Finch Add a -h (print help) option. unifdef.1 | 5 ++++- unifdef.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 53 insertions(+), 6 deletions(-) --------------------------------------------------- 2012-02-17 22:47:24 +0000 Tony Finch unifdef.c: trim unnecessary header includes We now avoid using errno.h, because on some glibc systems it is the only header that depends on the kernel headers. This makes it possible to install the Linux kernel headers from source to fix a broken system with incomplete headers. Suggested by: Mike Frysinger unifdef.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) --------------------------------------------------- 2012-02-17 22:31:19 +0000 Tony Finch Support for processing multiple files in place, with or without backups. Suggested by: Joergen Edelbo unifdef.1 | 46 +++++++------ unifdef.c | 219 ++++++++++++++++++++++++++++++++++++-------------------------- 2 files changed, 155 insertions(+), 110 deletions(-) --------------------------------------------------- 2012-02-17 18:18:26 +0000 Tony Finch unifdef.1: alphabetize options; better phrasing and concision. unifdef.1 | 98 +++++++++++++++++++++++++-------------------------------------- 1 file changed, 39 insertions(+), 59 deletions(-) --------------------------------------------------- 2011-11-07 17:14:54 +0000 Tony Finch unifdef.1: Split some macros with many arguments. Improves compatibility with non-GNU troff. Obtained from: Jason McIntyre unifdef.1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --------------------------------------------------- 2011-11-07 17:00:13 +0000 Tony Finch Make copyright string static to please static analysers. Obtained-from: Ed Schouten unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2011-05-23 10:53:20 +0100 Tony Finch reversion.sh: Less verbose in normal cases, more verbose on error. reversion.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --------------------------------------------------- 2011-05-23 10:45:47 +0100 Tony Finch test: Use the PATH to find unifdef. runtests.sh | 1 + tests/NetBSD-42628.sh | 2 +- tests/args1.sh | 2 +- tests/args2.sh | 2 +- tests/blank0d.sh | 2 +- tests/blank0u.sh | 2 +- tests/blank1d.sh | 2 +- tests/blank1u.sh | 2 +- tests/blank2d.sh | 2 +- tests/blank2u.sh | 2 +- tests/blank3d.sh | 2 +- tests/blank3u.sh | 2 +- tests/blank4d.sh | 2 +- tests/blank4u.sh | 2 +- tests/crlf-a.sh | 2 +- tests/crlf-b.sh | 2 +- tests/crlf-c.sh | 2 +- tests/crlf-d.sh | 2 +- tests/debian-603860.sh | 2 +- tests/empty.sh | 2 +- tests/if1-a.sh | 2 +- tests/if1-k.sh | 2 +- tests/if1-kDU.sh | 2 +- tests/if1.sh | 2 +- tests/if1a.sh | 2 +- tests/if2-a.sh | 2 +- tests/if2-k.sh | 2 +- tests/if2-kDU.sh | 2 +- tests/if2.sh | 2 +- tests/if3-a.sh | 2 +- tests/if3-k.sh | 2 +- tests/if3-kDU.sh | 2 +- tests/if3.sh | 2 +- tests/if4-a.sh | 2 +- tests/if4-k.sh | 2 +- tests/if4-kDU.sh | 2 +- tests/if4.sh | 2 +- tests/if5-a.sh | 2 +- tests/if5-k.sh | 2 +- tests/if5-kDU.sh | 2 +- tests/if5.sh | 2 +- tests/if6a.sh | 2 +- tests/if6b.sh | 2 +- tests/if6c.sh | 2 +- tests/if6d.sh | 2 +- tests/none.sh | 2 +- tests/outdir.sh | 2 +- tests/outfile.sh | 2 +- tests/overdir.sh | 2 +- tests/overin.sh | 2 +- tests/overlnnum.sh | 2 +- tests/overwrite.sh | 2 +- tests/small1.sh | 2 +- tests/small2.sh | 2 +- tests/spaces1.sh | 2 +- tests/spaces2.sh | 2 +- tests/spaces3.sh | 2 +- tests/spaces4.sh | 2 +- 58 files changed, 58 insertions(+), 57 deletions(-) --------------------------------------------------- 2011-05-23 10:18:59 +0100 Tony Finch tests: Add a test case from NetBSD PR 42628. This is adapted from the NetBSD automated testing framework, to which the test case was added by Jukka Ruohonen . Obtained-from: http://cvsweb.netbsd.org/bsdweb.cgi/src/tests/usr.bin/unifdef/ tests/NetBSD-42628.c | 25 +++++++++++++++++++++++++ tests/NetBSD-42628.experr | 0 tests/NetBSD-42628.expout | 6 ++++++ tests/NetBSD-42628.exprc | 1 + tests/NetBSD-42628.sh | 1 + 5 files changed, 33 insertions(+) --------------------------------------------------- 2011-04-20 12:14:46 +0100 Tony Finch .htaccess: remove gzip encoding This should discourage HTTP clients from auto-decompressing .tar.gz files and causing higher-level tools to get checksum mismatches. web/.htaccess | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2011-02-22 16:53:10 +0000 Tony Finch (tag: unifdef-2.6) Release unifdef-2.6 web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2011-02-21 17:20:13 +0000 Tony Finch unifdef: -s and -o are mutually exclusive unifdef.c | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2011-01-21 17:45:45 +0000 Tony Finch unifdef.c: detect output errors promptly This ensures that errno has a meaningful value when we come to print the error message. unifdef.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) --------------------------------------------------- 2011-01-21 17:27:39 +0000 Tony Finch unifdef.c: Use ferror() to detect IO errors better. unifdef.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) --------------------------------------------------- 2011-01-20 17:31:28 +0000 Tony Finch unifdef.c: Write line numbers to -o output file. I must have missed this because NetBSD doesn't have the -n feature. tests/overlnnum.experr | 0 tests/overlnnum.expout | 20 ++++++++++++++++++++ tests/overlnnum.exprc | 1 + tests/overlnnum.sh | 4 ++++ unifdef.c | 2 +- 5 files changed, 26 insertions(+), 1 deletion(-) --------------------------------------------------- 2011-01-20 17:20:57 +0000 Tony Finch unifdef.c: further error message improvements unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2011-01-20 16:27:06 +0000 Tony Finch unifdef.c: more output filename correctness. Submitted-by: Brian Ginsbach unifdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2011-01-18 19:51:40 +0000 Tony Finch Update copyright date. COPYING | 4 ++-- unifdef.1 | 4 ++-- unifdef.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2011-01-18 18:48:45 +0000 Tony Finch (tag: unifdef-2.5) Release unifdef-2.5 web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2011-01-18 18:39:52 +0000 Tony Finch admin: no need to keep old import script visible authors.cvs | 2 -- import-script | 76 ----------------------------------------------------------- 2 files changed, 78 deletions(-) --------------------------------------------------- 2011-01-18 18:11:24 +0000 Tony Finch authors.svn: add joel authors.svn | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2011-01-18 17:50:58 +0000 Tony Finch unifdef.c: correct output filename when overwriting stdin The bug occurs in cases like `unifdef -o file < file` tests/overin.experr | 0 tests/overin.expout | 16 ++++++++++++++++ tests/overin.exprc | 1 + tests/overin.sh | 4 ++++ unifdef.c | 4 ++-- 5 files changed, 23 insertions(+), 2 deletions(-) --------------------------------------------------- 2011-01-18 17:37:58 +0000 Tony Finch unifdef.c: neater overwrite check, inspired by ginsbach@NetBSD.org unifdef.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) --------------------------------------------------- 2011-01-17 11:16:21 +0000 Tony Finch unifdef.c: explain in comments that strncpy() is used correctly. unifdef.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-11-18 16:51:40 +0000 Tony Finch tests: add one taken from Debian bug #603860 tests/debian-603860.c | 8 ++++++++ tests/debian-603860.experr | 0 tests/debian-603860.expout | 2 ++ tests/debian-603860.exprc | 1 + tests/debian-603860.sh | 1 + 5 files changed, 12 insertions(+) --------------------------------------------------- 2010-11-09 11:28:11 +0000 Tony Finch web/index.html: Add a link to my homepage in the header. web/index.html | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-09-13 12:14:15 +0000 Tony Finch (tag: unifdef-2.4) Re-roll release of unifdef-2.4 --------------------------------------------------- 2010-09-13 12:00:04 +0000 Tony Finch Makefile: omit merge commits from the Changelog Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-09-13 12:03:10 +0000 Tony Finch svnup: switch to admin branch so git svn fetch can read authors file. svnup | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2010-09-13 11:52:48 +0000 Tony Finch Release unifdef-2.4 web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-09-13 11:13:43 +0000 Tony Finch reversion.sh: do not search $PATH for version.sh The "." keyword for sourcing files searches $PATH when its argument does not contain a slash. If you want to load a file from $PWD, you have to prefix the filename with "./". Signed-off-by: Mike Frysinger reversion.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-08-03 15:58:22 +0100 Tony Finch unifdef.1: fix typo (degugging -> debugging) Obtained from: Joel Dahl unifdef.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-05-01 20:49:47 +0000 Tony Finch upload: seems we need separate pushes for heads and tags. upload | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-05-01 20:47:08 +0000 Tony Finch upload tags to github upload | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-04-12 16:38:19 +0000 Tony Finch COPYING: explain the deleted advertising clause more clearly. COPYING | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-04-05 03:00:24 +0100 Tony Finch reversion.sh: put hyphen in unifdef-N.N reversion.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-04-04 21:22:05 +0000 Tony Finch upload: git gc --aggressively upload | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-31 13:57:08 +0000 Tony Finch web: Advertise repository using native git protocol web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-18 16:28:14 +0000 Tony Finch Makefile: reinstate realclean's double negative logic The positive logic causes make to bomb out when there is no .git directory. Reported-by: Colin Watson Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-16 10:14:31 +0000 Tony Finch web/.htaccess: fix the redirects for the old test URLs. This requires a disgusting double redirect hack because Apache-1.3 percent-encodes ? and ; in URLs generated by RedirectMatch, but not with plain Redirect. web/.htaccess | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-15 19:05:10 +0000 Tony Finch upload: Changelog file not needed for website upload | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-03-15 19:00:06 +0000 Tony Finch Makefile: remove double negative logic in realclean target Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-15 18:56:36 +0000 Tony Finch upload: Ensure all generated web site files are in the right place upload | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-03-15 18:54:03 +0000 Tony Finch Makefile: do not remove any ${DISTFILES} in the clean target. Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-15 14:53:30 +0000 Tony Finch Makefile: add missing blank line at end of Changelog Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 21:50:14 +0000 Tony Finch upload: Add a README.html for gitweb. upload | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 19:42:53 +0000 Tony Finch Save a copy of my main .git/config git.config | 12 ++++++++++++ 1 file changed, 12 insertions(+) --------------------------------------------------- 2010-03-12 19:37:19 +0000 Tony Finch upload: ensure unifdef.txt exists upload | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2010-03-12 19:36:26 +0000 Tony Finch Remove the upload script to the admin branch. Makefile | 9 --------- 1 file changed, 9 deletions(-) --------------------------------------------------- 2010-03-12 19:34:06 +0000 Tony Finch Move the upload script into the admin area. upload | 11 +++++++++++ 1 file changed, 11 insertions(+) --------------------------------------------------- 2010-03-12 19:06:39 +0000 Tony Finch README: include an introductory paragraph README | 5 +++++ 1 file changed, 5 insertions(+) --------------------------------------------------- 2010-03-12 18:57:52 +0000 Tony Finch Make import-script un-runnable but keep it for reference import-script | 3 +++ 1 file changed, 3 insertions(+) --------------------------------------------------- 2010-03-12 18:55:34 +0000 Tony Finch Add a little script for re-syncing with FreeBSD's svn repo. svnup | 12 ++++++++++++ 1 file changed, 12 insertions(+) --------------------------------------------------- 2010-03-12 18:50:35 +0000 Tony Finch git-svn turns out not to work very well with non-default names. import-script | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) --------------------------------------------------- 2010-03-12 17:34:56 +0000 Tony Finch reversion.sh: tidier version numbers for modified sources reversion.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-12 16:27:30 +0000 Tony Finch (tag: unifdef-2.3) Release unifdef-2.3 web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 16:23:35 +0000 Tony Finch Makefile: upload to github before chiark Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 16:21:27 +0000 Tony Finch Tweak the home page. Add the .htaccess file which keeps old URLs working. web/.htaccess | 11 +++++++++++ web/index.html | 11 ++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) --------------------------------------------------- 2010-03-12 15:43:19 +0000 Tony Finch Make the home page and gitweb titles consistent. Makefile | 2 +- web/index.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-03-12 15:29:12 +0000 Tony Finch Rename get-version.sh to reversion.sh for fun. Makefile | 4 ++-- get-version.sh => reversion.sh | 0 2 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-12 15:23:40 +0000 Tony Finch Makefile: do not try to build unifdef.txt by default. DISTFILES shouldn't be in non-release targets. Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 12:22:51 +0000 Tony Finch Add -V and -S flags to synopses unifdef.1 | 2 +- unifdef.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-12 11:07:35 +0000 Tony Finch web/index.html: link to github web/index.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-12 11:07:35 +0000 Tony Finch web/index.html: link to github web/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 11:03:03 +0000 Tony Finch README: add information about obtaining unifdef using git. README | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-03-12 11:01:15 +0000 Tony Finch Makefile: tweak upload target Remove unsafe `git prune`. Push a copy to github. Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 11:00:26 +0000 Tony Finch web/index.html: Fix git clone URL. web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 10:15:18 +0000 Tony Finch (tag: unifdef-2.2) Release unifdef-2.2 web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 10:08:04 +0000 Tony Finch unifdefall: print debugging output to stderr unifdefall.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-03-12 10:04:14 +0000 Tony Finch unifdefall: correct exit status if the clean-up rm fails Reported-by: Bob Proulx unifdefall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-12 09:52:46 +0000 Tony Finch get-version.sh: fix build in clean git working tree `git show` exited non-zero which aborted the build. get-version.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-12 09:34:18 +0000 Tony Finch Makefile: fix version.h -> unifdef.c -> unifdef dependencies. Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2010-03-12 09:28:02 +0000 Tony Finch get-version.sh fixes Test for the existence of version.sh (not version.h> before sourcing it. Cat the version files after re-writing them. Use printf(1) to create version.h for portability. get-version.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-03-11 21:41:45 +0000 Tony Finch Makefile: safer "realclean" target Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-11 21:17:58 +0000 Tony Finch (tag: unifdef-2.1) Release unifdef-2.1 web/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-11 21:12:03 +0000 Tony Finch Add a -V option to print the embedded version details. unifdef.1 | 5 ++++- unifdef.c | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-11 21:01:23 +0000 Tony Finch Makefile: remove release.sh from DISTFILES Makefile | 1 - 1 file changed, 1 deletion(-) --------------------------------------------------- 2010-03-11 20:59:11 +0000 Tony Finch Makefile: prune .git before uploading Makefile | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2010-03-11 20:56:29 +0000 Tony Finch index.html: mention the git glone command web/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-03-11 20:52:26 +0000 Tony Finch Re-do the website handling and add an upload target. Makefile | 15 +++++++++++---- index.html.in => web/index.html | 17 ++--------------- 2 files changed, 13 insertions(+), 19 deletions(-) --------------------------------------------------- 2010-03-11 20:28:13 +0000 Tony Finch Tell git to ignore release files. .gitignore | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2010-03-11 20:27:04 +0000 Tony Finch Move release script into Makefile. Makefile | 45 ++++++++++++++++++++++++++++++++++++--------- release.sh | 37 ------------------------------------- 2 files changed, 36 insertions(+), 46 deletions(-) --------------------------------------------------- 2010-03-11 20:08:03 +0000 Tony Finch Tell git to ignore output files. .gitignore | 5 +++++ 1 file changed, 5 insertions(+) --------------------------------------------------- 2010-03-11 20:04:35 +0000 Tony Finch Makefile: do not clean inside .git directory. Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-11 18:57:37 +0000 Tony Finch Embed version information from git into the unifdef binary. Makefile | 9 ++++++--- get-version.sh | 32 ++++++++++++++++++++++++++++++++ unifdef.c | 9 +++++---- 3 files changed, 43 insertions(+), 7 deletions(-) --------------------------------------------------- 2010-03-11 18:57:15 +0000 Tony Finch Makefile: clean trailing whitespace. Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-11 18:56:58 +0000 Tony Finch INSTALL: Note the CFLAGS and LDFLAGS make variables. INSTALL | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-03-11 18:56:34 +0000 Tony Finch Remove sccs, cvs, and svn revision tags. INSTALL | 2 +- Makefile | 2 +- README | 3 +-- index.html.in | 1 - release.sh | 2 -- runtests.sh | 2 -- unifdef.1 | 4 ---- unifdef.c | 5 ++--- unifdefall.sh | 2 -- 9 files changed, 5 insertions(+), 18 deletions(-) --------------------------------------------------- 2010-03-11 18:52:37 +0000 Tony Finch combine admin repo too import-script | 2 ++ 1 file changed, 2 insertions(+) --------------------------------------------------- 2010-03-11 18:43:15 +0000 Tony Finch A reminder of how this repository was created. authors.cvs | 2 ++ authors.svn | 14 ++++++++++++ import-script | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) --------------------------------------------------- 2010-03-10 17:42:54 +0000 Tony Finch (tag: unifdef-2.0, dotat-cvs) Improved debugging support. Add line numbers to unifdef's debugging output. Flush the output stream on each line when debugging to ensure stdout and stderr are properly interleaved. Add a debugging mode to unifdefall.sh which outputs its intermediate working files. unifdef.c | 12 ++++++++---- unifdefall.sh | 20 +++++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) --------------------------------------------------- 2010-03-07 18:11:07 +0000 Tony Finch Forced commit to note change to test suite. runtests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2010-03-07 17:56:06 +0000 Tony Finch Adjust tests for change in license header. The extra line at the beginning of if1.c caused the line numbers in 'diff' output to change. Rather than playing catch-up, simplify the relevant tests to keep working if if1.c changes in other ways in the future. Submitted by: Jonathan Nieder tests/outdir.expout | 30 ++++++++++++++++-------------- tests/outdir.sh | 2 +- tests/outfile.expout | 30 ++++++++++++++++-------------- tests/outfile.sh | 2 +- tests/overdir.expout | 30 ++++++++++++++++-------------- tests/overdir.sh | 2 +- tests/overwrite.expout | 30 ++++++++++++++++-------------- tests/overwrite.sh | 2 +- 8 files changed, 68 insertions(+), 60 deletions(-) --------------------------------------------------- 2010-03-06 14:40:15 +0000 Tony Finch Add the COPYING file to the release. release.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-03-06 14:38:50 +0000 Tony Finch Fix HTML markup snafu. index.html.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-06 14:37:14 +0000 Tony Finch Put the tests under the two-clause BSD copyright licence for consistency. tests/crlf-a.expout | 2 +- tests/crlf-b.expout | 2 +- tests/crlf-c.expout | 2 +- tests/crlf-d.expout | 2 +- tests/crlf.c | 2 +- tests/if1-a.expout | 3 ++- tests/if1-k.c | 3 ++- tests/if1-k.expout | 3 ++- tests/if1-kDU.c | 3 ++- tests/if1-kDU.expout | 3 ++- tests/if1.c | 3 ++- tests/if1.expout | 3 ++- tests/if1a.expout | 3 ++- tests/if2-a.expout | 3 ++- tests/if2-k.c | 3 ++- tests/if2-k.expout | 3 ++- tests/if2-kDU.c | 3 ++- tests/if2-kDU.expout | 3 ++- tests/if2.c | 3 ++- tests/if2.expout | 3 ++- tests/if3-a.expout | 3 ++- tests/if3-k.c | 3 ++- tests/if3-k.expout | 3 ++- tests/if3-kDU.c | 3 ++- tests/if3-kDU.expout | 3 ++- tests/if3.c | 3 ++- tests/if3.expout | 3 ++- tests/if4-a.expout | 3 ++- tests/if4-k.c | 3 ++- tests/if4-k.expout | 3 ++- tests/if4-kDU.c | 3 ++- tests/if4-kDU.expout | 3 ++- tests/if4.c | 3 ++- tests/if4.expout | 3 ++- tests/if5-a.expout | 3 ++- tests/if5-k.c | 3 ++- tests/if5-k.expout | 3 ++- tests/if5-kDU.c | 3 ++- tests/if5-kDU.expout | 3 ++- tests/if5.c | 3 ++- tests/if5.expout | 3 ++- tests/none.c | 3 ++- tests/none.expout | 3 ++- tests/small1.c | 3 ++- tests/small1.expout | 3 ++- tests/small2.c | 3 ++- tests/small2.expout | 3 ++- tests/spaces1.c | 3 ++- tests/spaces1.expout | 3 ++- tests/spaces2.c | 3 ++- tests/spaces2.expout | 3 ++- tests/spaces3.c | 3 ++- tests/spaces3.expout | 3 ++- tests/spaces4.c | 3 ++- tests/spaces4.expout | 3 ++- 55 files changed, 105 insertions(+), 55 deletions(-) --------------------------------------------------- 2010-03-06 14:30:26 +0000 Tony Finch Add a COPYING file to consolidate licence terms in one place. Remove the public domain declaration from runtests.sh so it is under the same licence as the other files. Improve the wording about the licensing of contributions. COPYING | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README | 8 +++--- index.html.in | 9 ++++--- runtests.sh | 6 +---- 4 files changed, 93 insertions(+), 13 deletions(-) --------------------------------------------------- 2010-03-05 13:05:38 +0000 Tony Finch Adjust man page document title for backwards compatibility. Reported by: Bob Proulx unifdef.1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-02-23 12:27:11 +0000 Tony Finch Actually, don't drop the 1. from the version number. Keeping it gives us more flexibility to change the numbering scheme while ensuring it continues to go up. release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-02-22 18:58:50 +0000 Tony Finch Drop 1. from the version number release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-02-22 18:58:30 +0000 Tony Finch Improve output of -S mode (list symbols with depths) Symbols tested in the same #if are listed on the same line. unifdef.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) --------------------------------------------------- 2010-02-21 16:55:04 +0000 Tony Finch We don't need to compile unifdef when preparing the release. release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-02-21 16:53:20 +0000 Tony Finch Fix the release build to ensure that junk files are not included. We were failing to properly clean the tests directory. Reported-by: Jonathan Nieder Makefile | 14 +++++++------- release.sh | 7 +++++-- 2 files changed, 12 insertions(+), 9 deletions(-) --------------------------------------------------- 2010-02-19 20:43:13 +0000 Tony Finch Use -mdoc macro package when invoking nroff. Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-02-19 20:25:50 +0000 Tony Finch Add a -S option for listing the nesting depth of symbols. Suggested by http://stackoverflow.com/questions/2012496 unifdef.1 | 23 +++++++++++++++-------- unifdef.c | 19 ++++++++++++------- 2 files changed, 27 insertions(+), 15 deletions(-) --------------------------------------------------- 2010-02-19 20:08:37 +0000 Tony Finch A small tidy-up in process() unifdef.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) --------------------------------------------------- 2010-02-19 19:46:41 +0000 Tony Finch Expand ACCESSPERMS rather than conditionally #defining it. unifdef.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) --------------------------------------------------- 2010-02-19 18:35:26 +0000 Tony Finch Define ACCESSPERMS on systems (like Cygwin) that lack it. Suggested by Mark Rushakoff. unifdef.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-02-19 17:30:50 +0000 Tony Finch Link to freshmeat.net for release announcements. README | 5 ++++- index.html.in | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) --------------------------------------------------- 2010-02-19 17:15:44 +0000 Tony Finch Improve portability to systems with native CRLF newlines. unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2010-02-19 17:11:39 +0000 Tony Finch Remove FreeBSD from manual page rubric, and update its date. unifdef.1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2010-02-19 16:44:02 +0000 Tony Finch List INSTALL file on homepage index.html.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-02-19 16:37:05 +0000 Tony Finch Fix a long-standing cpp compatibility bug. The -DFOO argument (without an explicit value) should define FOO to 1 not to the empty string. tests/crlf-a.sh | 2 +- tests/crlf-b.sh | 2 +- tests/crlf-c.sh | 2 +- tests/crlf-d.sh | 2 +- tests/if6a.sh | 2 +- tests/if6b.sh | 2 +- tests/if6c.sh | 2 +- tests/if6d.sh | 2 +- unifdef.1 | 14 ++++++++------ unifdef.c | 4 ++-- 10 files changed, 18 insertions(+), 16 deletions(-) --------------------------------------------------- 2010-02-19 16:31:08 +0000 Tony Finch Add support for CRLF newlines. As a side-effect, remove the dependency on strlcpy(). Based on a suggestion from Mark Rushakoff. INSTALL | 5 ++--- tests/crlf-a.experr | 0 tests/crlf-a.expout | 10 ++++++++++ tests/crlf-a.exprc | 1 + tests/crlf-a.sh | 1 + tests/crlf-b.experr | 0 tests/crlf-b.expout | 14 ++++++++++++++ tests/crlf-b.exprc | 1 + tests/crlf-b.sh | 1 + tests/crlf-c.experr | 0 tests/crlf-c.expout | 16 ++++++++++++++++ tests/crlf-c.exprc | 1 + tests/crlf-c.sh | 1 + tests/crlf-d.experr | 0 tests/crlf-d.expout | 18 ++++++++++++++++++ tests/crlf-d.exprc | 1 + tests/crlf-d.sh | 1 + tests/crlf.c | 20 ++++++++++++++++++++ unifdef.c | 54 ++++++++++++++++++++++++++++++++++++----------------- 19 files changed, 125 insertions(+), 20 deletions(-) --------------------------------------------------- 2010-02-19 16:29:59 +0000 Tony Finch Fix tests to not rely on an uncommitted change. tests/if6a.sh | 2 +- tests/if6b.sh | 2 +- tests/if6c.sh | 2 +- tests/if6d.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2010-02-19 16:03:44 +0000 Tony Finch More tests of keyword edits tests/if6.c | 11 +++++++++++ tests/if6a.experr | 0 tests/if6a.expout | 1 + tests/if6a.exprc | 1 + tests/if6a.sh | 1 + tests/if6b.experr | 0 tests/if6b.expout | 5 +++++ tests/if6b.exprc | 1 + tests/if6b.sh | 1 + tests/if6c.experr | 0 tests/if6c.expout | 7 +++++++ tests/if6c.exprc | 1 + tests/if6c.sh | 1 + tests/if6d.experr | 0 tests/if6d.expout | 9 +++++++++ tests/if6d.exprc | 1 + tests/if6d.sh | 1 + 17 files changed, 41 insertions(+) --------------------------------------------------- 2010-02-19 15:50:26 +0000 Tony Finch Test #elif -> #if edit tests/if1a.experr | 0 tests/if1a.expout | 23 +++++++++++++++++++++++ tests/if1a.exprc | 1 + tests/if1a.sh | 1 + 4 files changed, 25 insertions(+) --------------------------------------------------- 2010-01-20 00:48:26 +0000 Tony Finch unifdef.c: better diagnostics on write failure unifdef.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-01-19 20:33:00 +0000 Tony Finch unifdef.c: fix portability to 64 bit platforms. printf("%.*s",i,s) expects an int not a ptrdiff_t unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-01-19 18:22:53 +0000 Tony Finch Fix English usage in wishlist comment unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-01-19 18:03:02 +0000 Tony Finch unifdef.c: re-arrange the introductory comment, #include lines, and embedded copyright strings so that the FreeBSD version of the code is tidier. unifdef.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) --------------------------------------------------- 2010-01-19 17:33:53 +0000 Tony Finch Update manual date and copyright. unifdef.1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-01-19 16:23:35 +0000 Tony Finch Add -o outfile option, which can be used to specify an output file. The file can even be the same as the input file. Idea from IRIX unifdef(1). This version also fixes a bug in the NetBSD unifdef which refuses to write to a -o outfile which does not exist. Obtained from: Brian Ginsbach via NetBSD tests/outdir.experr | 0 tests/outdir.expout | 14 +++++++ tests/outdir.exprc | 1 + tests/outdir.sh | 4 ++ tests/outfile.experr | 0 tests/outfile.expout | 14 +++++++ tests/outfile.exprc | 1 + tests/outfile.sh | 3 ++ tests/overdir.experr | 0 tests/overdir.expout | 14 +++++++ tests/overdir.exprc | 1 + tests/overdir.sh | 5 +++ tests/overwrite.experr | 0 tests/overwrite.expout | 14 +++++++ tests/overwrite.exprc | 1 + tests/overwrite.sh | 4 ++ unifdef.1 | 17 +++++++- unifdef.c | 106 +++++++++++++++++++++++++++++++++++++++++++------ 18 files changed, 185 insertions(+), 14 deletions(-) --------------------------------------------------- 2010-01-19 16:09:50 +0000 Tony Finch unifdefall: tidy copyright notice to match unifdef.c unifdefall.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) --------------------------------------------------- 2010-01-19 13:37:00 +0000 Tony Finch release.sh: Add INSTALL to list of tarball contents. release.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2010-01-19 13:36:22 +0000 Tony Finch Add Jonathan Nieder to unifdefall's copyright declaration. unifdefall.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-01-15 18:37:39 +0000 Tony Finch Clean up the Makefile. Makefile | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) --------------------------------------------------- 2010-01-15 18:33:05 +0000 Tony Finch Automatic install support. Add an install target to the Makefile. Using separate ${prefix} and ${DESTDIR} variables opens the door to hardcoding the path to unifdef in unifdefall if we ever need to. Move the installation instructions from the README to a new INSTALL file to make it easier for packagers to omit irrelevant compilation instructions from the binary package's documentation. Submitted-by: Jonathan Nieder INSTALL | 18 ++++++++++++++++++ Makefile | 20 +++++++++++++++++++- README | 13 ++----------- 3 files changed, 39 insertions(+), 12 deletions(-) --------------------------------------------------- 2010-01-15 17:43:17 +0000 Tony Finch Makefile: do not remove Changelog on clean Regenerating the Changelog requires access to the unifdef CVS repository. Submitted-by: Jonathan Nieder Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-01-15 17:41:21 +0000 Tony Finch unifdefall: look for unifdef in $(dirname $0) For debugging and for the test suite it is convenient is unifdefall can be run in place without relying on unifdef being installed elsewhere. So change unifdefall to look for unifdef in the containing directory. For compatibility, if unifdef is not present in the directory containing unifdefall, fall back to searching the $PATH for it. Some one might have installed unifdef and unifdefall to different directories. With this change, 'make test' no longer fails in if1-a.sh when unifdef is not present on the $PATH. Also, the test suite will be a little better at catching new regressions if an old version of unifdef is installed, since the unifdefall tests will no longer be testing the installed unifdef. Submitted-by: Jonathan Nieder unifdefall.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-12-02 15:21:22 +0000 Tony Finch Fix ident string -- gcc optimised it away. unifdef.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) --------------------------------------------------- 2009-11-27 17:30:39 +0000 Tony Finch Include full CVS log in the Changelog. Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 17:24:25 +0000 Tony Finch release.sh: remove tests/CVS from tarball, and upload files faster. release.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 17:21:26 +0000 Tony Finch fix invalid array access when nesting limit exceeded If the number of nested #if blocks exceeds 64, nest() increments the nesting depth and then reports an error. The message includes the line number for the start of the current #if block, which is read from past the end of the relevant array. Avoid the out-of-bounds read by reporting the error and exiting before the nesting depth has a chance to increase. Submitted-by: Jonathan Nieder unifdef.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-27 17:14:32 +0000 Tony Finch runtests.sh: portability: . does not search current directory POSIX.1-2008 dot searches only the $PATH and not the current directory for pathnames with no / in them. Accordingly, since version 4.0-alpha, bash does not search the current directory when in posix (sh) mode. The fix is to specify ./ explicitly. Submitted-by: Jonathan Nieder runtests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 15:40:10 +0000 Tony Finch Include a link to the web page in a comment in unifdef.c This is mainly for the benefit of the Linux kernel's stand-alone version. unifdef.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 14:35:51 +0000 Tony Finch Consistent ordering of ${got} and ${exp} in the test script runtests.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-27 14:34:09 +0000 Tony Finch Include the tests in the web page index.html.in | 4 +++- release.sh | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-27 14:32:49 +0000 Tony Finch Improve phrasing on web page index.html.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 14:30:02 +0000 Tony Finch Run the tests in the correct directory Makefile | 4 ++-- runtests.sh | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-27 14:21:36 +0000 Tony Finch Add some unifdefall test cases. tests/if1-a.experr | 0 tests/if1-a.exprc | 1 + tests/if1-a.sh | 1 + tests/if2-a.experr | 0 tests/if2-a.exprc | 1 + tests/if2-a.sh | 1 + tests/if3-a.experr | 0 tests/if3-a.exprc | 1 + tests/if3-a.sh | 1 + tests/if4-a.experr | 0 tests/if4-a.exprc | 1 + tests/if4-a.sh | 1 + tests/if5-a.experr | 0 tests/if5-a.exprc | 1 + tests/if5-a.sh | 1 + 15 files changed, 10 insertions(+) --------------------------------------------------- 2009-11-27 14:20:59 +0000 Tony Finch Ensure we clean up after a successful test. runtests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2009-11-27 14:08:08 +0000 Tony Finch Simplify the test suite so that runtests.sh is not specific to unifdef. Makefile | 5 ++--- runtests.sh | 65 +++++++++++++++++++----------------------------------- tests/args1.sh | 1 + tests/args2.sh | 1 + tests/blank0d.args | 1 - tests/blank0d.sh | 1 + tests/blank0u.args | 1 - tests/blank0u.sh | 1 + tests/blank1d.args | 1 - tests/blank1d.sh | 1 + tests/blank1u.args | 1 - tests/blank1u.sh | 1 + tests/blank2d.args | 1 - tests/blank2d.sh | 1 + tests/blank2u.args | 1 - tests/blank2u.sh | 1 + tests/blank3d.args | 1 - tests/blank3d.sh | 1 + tests/blank3u.args | 1 - tests/blank3u.sh | 1 + tests/blank4d.args | 1 - tests/blank4d.sh | 1 + tests/blank4u.args | 1 - tests/blank4u.sh | 1 + tests/empty.sh | 1 + tests/if1-k.args | 1 - tests/if1-k.sh | 1 + tests/if1-kDU.args | 1 - tests/if1-kDU.sh | 1 + tests/if1.sh | 1 + tests/if2-k.args | 1 - tests/if2-k.sh | 1 + tests/if2-kDU.args | 1 - tests/if2-kDU.sh | 1 + tests/if2.sh | 1 + tests/if3-k.args | 1 - tests/if3-k.sh | 1 + tests/if3-kDU.args | 1 - tests/if3-kDU.sh | 1 + tests/if3.sh | 1 + tests/if4-k.args | 1 - tests/if4-k.sh | 1 + tests/if4-kDU.args | 1 - tests/if4-kDU.sh | 1 + tests/if4.sh | 1 + tests/if5-k.args | 1 - tests/if5-k.sh | 1 + tests/if5-kDU.args | 1 - tests/if5-kDU.sh | 1 + tests/if5.sh | 1 + tests/none.sh | 1 + tests/small1.sh | 1 + tests/small2.sh | 1 + tests/spaces1.sh | 1 + tests/spaces2.sh | 1 + tests/spaces3.sh | 1 + tests/spaces4.sh | 1 + 57 files changed, 60 insertions(+), 65 deletions(-) --------------------------------------------------- 2009-11-27 13:36:39 +0000 Tony Finch Test suite tweaks. Move the runtests script into the main source directory. Remove the redundant .c. from the expected output filenames. Run the tests in a separate working directory. Include the tests in the release. Makefile | 8 +++++--- release.sh | 7 ++++--- runtests.sh | 17 ++++++++-------- tests/args1.c.experr | 0 tests/args1.c.expout | 1 - tests/args1.c.exprc | 1 - tests/args2.c.experr | 0 tests/args2.c.expout | 3 --- tests/args2.c.exprc | 1 - tests/blank0d.c.experr | 0 tests/blank0d.c.expout | 23 --------------------- tests/blank0d.c.exprc | 1 - tests/blank0u.c.experr | 0 tests/blank0u.c.expout | 22 -------------------- tests/blank0u.c.exprc | 1 - tests/blank1d.c.experr | 0 tests/blank1d.c.expout | 23 --------------------- tests/blank1d.c.exprc | 1 - tests/blank1u.c.experr | 0 tests/blank1u.c.expout | 21 ------------------- tests/blank1u.c.exprc | 1 - tests/blank2d.c.experr | 0 tests/blank2d.c.expout | 23 --------------------- tests/blank2d.c.exprc | 1 - tests/blank2u.c.experr | 0 tests/blank2u.c.expout | 20 ------------------ tests/blank2u.c.exprc | 1 - tests/blank3d.c.experr | 0 tests/blank3d.c.expout | 23 --------------------- tests/blank3d.c.exprc | 1 - tests/blank3u.c.experr | 0 tests/blank3u.c.expout | 19 ----------------- tests/blank3u.c.exprc | 1 - tests/blank4d.c.experr | 0 tests/blank4d.c.expout | 23 --------------------- tests/blank4d.c.exprc | 1 - tests/blank4u.c.experr | 0 tests/blank4u.c.expout | 18 ----------------- tests/blank4u.c.exprc | 1 - tests/empty.c.experr | 0 tests/empty.c.expout | 0 tests/empty.c.exprc | 1 - tests/if1-a.c.expout | 15 -------------- tests/if1-k.c.experr | 0 tests/if1-k.c.expout | 29 -------------------------- tests/if1-k.c.exprc | 1 - tests/if1-kDU.c.experr | 0 tests/if1-kDU.c.expout | 19 ----------------- tests/if1-kDU.c.exprc | 1 - tests/if1.c.experr | 0 tests/if1.c.expout | 15 -------------- tests/if1.c.exprc | 1 - tests/if2-a.c.expout | 12 ----------- tests/if2-k.c.experr | 0 tests/if2-k.c.expout | 20 ------------------ tests/if2-k.c.exprc | 1 - tests/if2-kDU.c.experr | 0 tests/if2-kDU.c.expout | 16 --------------- tests/if2-kDU.c.exprc | 1 - tests/if2.c.experr | 0 tests/if2.c.expout | 12 ----------- tests/if2.c.exprc | 1 - tests/if3-a.c.expout | 12 ----------- tests/if3-k.c.experr | 0 tests/if3-k.c.expout | 20 ------------------ tests/if3-k.c.exprc | 1 - tests/if3-kDU.c.experr | 0 tests/if3-kDU.c.expout | 16 --------------- tests/if3-kDU.c.exprc | 1 - tests/if3.c.experr | 0 tests/if3.c.expout | 12 ----------- tests/if3.c.exprc | 1 - tests/if4-a.c.expout | 21 ------------------- tests/if4-k.c.experr | 0 tests/if4-k.c.expout | 41 ------------------------------------- tests/if4-k.c.exprc | 1 - tests/if4-kDU.c.experr | 0 tests/if4-kDU.c.expout | 25 ----------------------- tests/if4-kDU.c.exprc | 1 - tests/if4.c.experr | 0 tests/if4.c.expout | 21 ------------------- tests/if4.c.exprc | 1 - tests/if5-a.c.expout | 27 ------------------------- tests/if5-k.c.experr | 0 tests/if5-k.c.expout | 55 -------------------------------------------------- tests/if5-k.c.exprc | 1 - tests/if5-kDU.c.experr | 0 tests/if5-kDU.c.expout | 31 ---------------------------- tests/if5-kDU.c.exprc | 1 - tests/if5.c.experr | 0 tests/if5.c.expout | 27 ------------------------- tests/if5.c.exprc | 1 - tests/none.c.experr | 0 tests/none.c.expout | 4 ---- tests/none.c.exprc | 1 - tests/runtests | 51 ---------------------------------------------- tests/small1.c.experr | 0 tests/small1.c.expout | 12 ----------- tests/small1.c.exprc | 1 - tests/small2.c.experr | 0 tests/small2.c.expout | 12 ----------- tests/small2.c.exprc | 1 - tests/spaces1.c.experr | 0 tests/spaces1.c.expout | 12 ----------- tests/spaces1.c.exprc | 1 - tests/spaces2.c.experr | 0 tests/spaces2.c.expout | 12 ----------- tests/spaces2.c.exprc | 1 - tests/spaces3.c.experr | 0 tests/spaces3.c.expout | 12 ----------- tests/spaces3.c.exprc | 1 - tests/spaces4.c.experr | 0 tests/spaces4.c.expout | 12 ----------- tests/spaces4.c.exprc | 1 - 114 files changed, 18 insertions(+), 841 deletions(-) --------------------------------------------------- 2009-11-27 13:08:58 +0000 Tony Finch Additional tests from Bob Proulx Add his copyright notice to all the old tests. runtests.sh | 6 ++++- tests/if1-a.c.expout | 15 ++++++++++++ tests/if1-a.expout | 15 ++++++++++++ tests/if1-k.args | 1 + tests/if1-k.c | 37 +++++++++++++++++++++++++++++ tests/if1-k.c.experr | 0 tests/if1-k.c.expout | 29 +++++++++++++++++++++++ tests/if1-k.c.exprc | 1 + tests/if1-k.experr | 0 tests/if1-k.expout | 29 +++++++++++++++++++++++ tests/if1-k.exprc | 1 + tests/if1-kDU.args | 1 + tests/if1-kDU.c | 37 +++++++++++++++++++++++++++++ tests/if1-kDU.c.experr | 0 tests/if1-kDU.c.expout | 19 +++++++++++++++ tests/if1-kDU.c.exprc | 1 + tests/if1-kDU.experr | 0 tests/if1-kDU.expout | 19 +++++++++++++++ tests/if1-kDU.exprc | 1 + tests/if1.c | 3 +++ tests/if1.c.expout | 3 +++ tests/if1.expout | 3 +++ tests/if2-a.c.expout | 12 ++++++++++ tests/if2-a.expout | 12 ++++++++++ tests/if2-k.args | 1 + tests/if2-k.c | 28 ++++++++++++++++++++++ tests/if2-k.c.experr | 0 tests/if2-k.c.expout | 20 ++++++++++++++++ tests/if2-k.c.exprc | 1 + tests/if2-k.experr | 0 tests/if2-k.expout | 20 ++++++++++++++++ tests/if2-k.exprc | 1 + tests/if2-kDU.args | 1 + tests/if2-kDU.c | 28 ++++++++++++++++++++++ tests/if2-kDU.c.experr | 0 tests/if2-kDU.c.expout | 16 +++++++++++++ tests/if2-kDU.c.exprc | 1 + tests/if2-kDU.experr | 0 tests/if2-kDU.expout | 16 +++++++++++++ tests/if2-kDU.exprc | 1 + tests/if2.c | 3 +++ tests/if2.c.expout | 3 +++ tests/if2.expout | 3 +++ tests/if3-a.c.expout | 12 ++++++++++ tests/if3-a.expout | 12 ++++++++++ tests/if3-k.args | 1 + tests/if3-k.c | 28 ++++++++++++++++++++++ tests/if3-k.c.experr | 0 tests/if3-k.c.expout | 20 ++++++++++++++++ tests/if3-k.c.exprc | 1 + tests/if3-k.experr | 0 tests/if3-k.expout | 20 ++++++++++++++++ tests/if3-k.exprc | 1 + tests/if3-kDU.args | 1 + tests/if3-kDU.c | 28 ++++++++++++++++++++++ tests/if3-kDU.c.experr | 0 tests/if3-kDU.c.expout | 16 +++++++++++++ tests/if3-kDU.c.exprc | 1 + tests/if3-kDU.experr | 0 tests/if3-kDU.expout | 16 +++++++++++++ tests/if3-kDU.exprc | 1 + tests/if3.c | 3 +++ tests/if3.c.expout | 3 +++ tests/if3.expout | 3 +++ tests/if4-a.c.expout | 21 +++++++++++++++++ tests/if4-a.expout | 21 +++++++++++++++++ tests/if4-k.args | 1 + tests/if4-k.c | 49 +++++++++++++++++++++++++++++++++++++++ tests/if4-k.c.experr | 0 tests/if4-k.c.expout | 41 ++++++++++++++++++++++++++++++++ tests/if4-k.c.exprc | 1 + tests/if4-k.experr | 0 tests/if4-k.expout | 41 ++++++++++++++++++++++++++++++++ tests/if4-k.exprc | 1 + tests/if4-kDU.args | 1 + tests/if4-kDU.c | 49 +++++++++++++++++++++++++++++++++++++++ tests/if4-kDU.c.experr | 0 tests/if4-kDU.c.expout | 25 ++++++++++++++++++++ tests/if4-kDU.c.exprc | 1 + tests/if4-kDU.experr | 0 tests/if4-kDU.expout | 25 ++++++++++++++++++++ tests/if4-kDU.exprc | 1 + tests/if4.c | 3 +++ tests/if4.c.expout | 3 +++ tests/if4.expout | 3 +++ tests/if5-a.c.expout | 27 ++++++++++++++++++++++ tests/if5-a.expout | 27 ++++++++++++++++++++++ tests/if5-k.args | 1 + tests/if5-k.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/if5-k.c.experr | 0 tests/if5-k.c.expout | 55 +++++++++++++++++++++++++++++++++++++++++++ tests/if5-k.c.exprc | 1 + tests/if5-k.experr | 0 tests/if5-k.expout | 55 +++++++++++++++++++++++++++++++++++++++++++ tests/if5-k.exprc | 1 + tests/if5-kDU.args | 1 + tests/if5-kDU.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/if5-kDU.c.experr | 0 tests/if5-kDU.c.expout | 31 +++++++++++++++++++++++++ tests/if5-kDU.c.exprc | 1 + tests/if5-kDU.experr | 0 tests/if5-kDU.expout | 31 +++++++++++++++++++++++++ tests/if5-kDU.exprc | 1 + tests/if5.c | 3 +++ tests/if5.c.expout | 3 +++ tests/if5.expout | 3 +++ tests/none.c | 3 +++ tests/none.c.expout | 3 +++ tests/none.expout | 3 +++ tests/runtests | 6 ++++- tests/small1.c | 3 +++ tests/small1.c.expout | 3 +++ tests/small1.expout | 3 +++ tests/small2.c | 3 +++ tests/small2.c.expout | 3 +++ tests/small2.expout | 3 +++ tests/spaces1.c | 3 +++ tests/spaces1.c.expout | 3 +++ tests/spaces1.expout | 3 +++ tests/spaces2.c | 3 +++ tests/spaces2.c.expout | 3 +++ tests/spaces2.expout | 3 +++ tests/spaces3.c | 3 +++ tests/spaces3.c.expout | 3 +++ tests/spaces3.expout | 3 +++ tests/spaces4.c | 3 +++ tests/spaces4.c.expout | 3 +++ tests/spaces4.expout | 3 +++ 128 files changed, 1276 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 12:48:13 +0000 Tony Finch List significant contributions in the README README | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) --------------------------------------------------- 2009-11-27 12:36:54 +0000 Tony Finch Improve the blurb on the web page, based on the Debian package's description by Jonathan Nieder . index.html.in | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-11-26 14:12:30 +0000 Tony Finch Fix web page markup index.html.in | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) --------------------------------------------------- 2009-11-26 14:01:26 +0000 Tony Finch Makefile: clean index.html generated by release.sh Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-26 13:56:22 +0000 Tony Finch Do not edit index.html in place index.html.in | 4 ++-- release.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-11-26 13:54:10 +0000 Tony Finch Try again to prevent CVS keyword expansion in the wrong part of release.sh release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-26 13:52:09 +0000 Tony Finch Do not expand CVS keywords in the wrong part of release.sh release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-26 13:50:10 +0000 Tony Finch Improved release process. Calculate the version number from the sum of the CVS idents. Adjust the version number in the web page. release.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --------------------------------------------------- 2009-11-26 13:48:45 +0000 Tony Finch Add a web page. Use the same title in the README and index.html. README | 4 ++-- index.html.in | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-26 12:54:39 +0000 Tony Finch unifdefall: optimise the loop that builds the unifdef command. The old code used a shell loop to convert each controlling macro definition into a command-line argument, reading the macro definitions file each time. The new code converts the list of controlling macros into a sed script which can run through the list of macro definitions in one go. Add some explanatory comments, since the code is quite meta. Submitted-by: Jonathan Nieder unifdefall.sh | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) --------------------------------------------------- 2009-11-26 02:22:24 +0000 Tony Finch unifdefall: Use {} instead of () for redirecting a group of commands. Submitted-by: Jonathan Nieder unifdefall.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-26 02:14:47 +0000 Tony Finch unifdefall: remove debugging remnants. unifdefall.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-25 19:54:34 +0000 Tony Finch unifdefall: update copyright dates. unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-25 19:33:51 +0000 Tony Finch Makefile: really clean more. Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-25 19:32:40 +0000 Tony Finch unifdefall: portability: do not try to use EREs with sed BSD sed uses -E and GNU sed uses -r to specify that extended regular expressions should be used instead of BREs. Some of the sed scripts have been simplified by relying on 'cpp -dM' to produce lines of the form '#define MACRO value', with a single space as delimiting whitespace. While we're modifying the sed scripts, also change the shell quoting script to correctly capture more characters when they appear in the right-hand sides of macro definitions (e.g., $). Submitted-by: Jonathan Nieder unifdefall.sh | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) --------------------------------------------------- 2009-11-25 19:24:59 +0000 Tony Finch unifdefall: fix mktemp invocation Actually remove the -t that should have gone in rev. 1.14 unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-25 19:23:12 +0000 Tony Finch unifdefall: simplify redirections to the temporary script unifdefall.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) --------------------------------------------------- 2009-11-25 18:05:11 +0000 Tony Finch unifdefall: force the "C" locale to avoid braindamage Reported-by: Jonathan Nieder unifdefall.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2009-11-25 18:02:41 +0000 Tony Finch unifdefall: clean up temporary files on failure Submitted-by: Jonathan Nieder unifdefall.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-25 18:00:54 +0000 Tony Finch unifdefall: allow spaces in $TMPDIR Submitted-by: Jonathan Nieder unifdefall.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) --------------------------------------------------- 2009-11-25 17:56:10 +0000 Tony Finch unifdefall: portability: avoid mktemp -t GNU mktemp interprets the argument after -t as the entire template and errors out if it contains no XXXX substring. BSD systems, on the other hand, treat the argument as a prefix for the mktemp template and use it verbatim, resulting in long, ugly filenames like foo.XXXXX.e30GuhHVzU if the string contains embedded Xs. So avoid -t and use TMPDIR explicitly. Submitted-by: Jonathan Nieder unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-25 17:54:13 +0000 Tony Finch Use $() instead of `` in unifdefall. unifdefall.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-25 00:11:02 +0000 Tony Finch Improve the behaviour of the -B option. Submitted-by: Anders H Kaseorg tests/blank1d.c.expout | 1 + tests/blank1d.expout | 1 + tests/blank2d.c.expout | 2 ++ tests/blank2d.expout | 2 ++ tests/blank3d.c.expout | 3 +++ tests/blank3d.expout | 3 +++ tests/blank4d.c.expout | 4 ++++ tests/blank4d.expout | 4 ++++ unifdef.1 | 4 ++-- unifdef.c | 17 +++++++++++------ 10 files changed, 33 insertions(+), 8 deletions(-) --------------------------------------------------- 2009-11-25 00:03:44 +0000 Tony Finch Add some test cases for blank line squashing. tests/blank0d.args | 1 + tests/blank0d.c | 25 +++++++++++++++++++++++++ tests/blank0d.c.experr | 0 tests/blank0d.c.expout | 23 +++++++++++++++++++++++ tests/blank0d.c.exprc | 1 + tests/blank0d.experr | 0 tests/blank0d.expout | 23 +++++++++++++++++++++++ tests/blank0d.exprc | 1 + tests/blank0u.args | 1 + tests/blank0u.c | 25 +++++++++++++++++++++++++ tests/blank0u.c.experr | 0 tests/blank0u.c.expout | 22 ++++++++++++++++++++++ tests/blank0u.c.exprc | 1 + tests/blank0u.experr | 0 tests/blank0u.expout | 22 ++++++++++++++++++++++ tests/blank0u.exprc | 1 + tests/blank1d.args | 1 + tests/blank1d.c | 25 +++++++++++++++++++++++++ tests/blank1d.c.experr | 0 tests/blank1d.c.expout | 22 ++++++++++++++++++++++ tests/blank1d.c.exprc | 1 + tests/blank1d.experr | 0 tests/blank1d.expout | 22 ++++++++++++++++++++++ tests/blank1d.exprc | 1 + tests/blank1u.args | 1 + tests/blank1u.c | 25 +++++++++++++++++++++++++ tests/blank1u.c.experr | 0 tests/blank1u.c.expout | 21 +++++++++++++++++++++ tests/blank1u.c.exprc | 1 + tests/blank1u.experr | 0 tests/blank1u.expout | 21 +++++++++++++++++++++ tests/blank1u.exprc | 1 + tests/blank2d.args | 1 + tests/blank2d.c | 25 +++++++++++++++++++++++++ tests/blank2d.c.experr | 0 tests/blank2d.c.expout | 21 +++++++++++++++++++++ tests/blank2d.c.exprc | 1 + tests/blank2d.experr | 0 tests/blank2d.expout | 21 +++++++++++++++++++++ tests/blank2d.exprc | 1 + tests/blank2u.args | 1 + tests/blank2u.c | 25 +++++++++++++++++++++++++ tests/blank2u.c.experr | 0 tests/blank2u.c.expout | 20 ++++++++++++++++++++ tests/blank2u.c.exprc | 1 + tests/blank2u.experr | 0 tests/blank2u.expout | 20 ++++++++++++++++++++ tests/blank2u.exprc | 1 + tests/blank3d.args | 1 + tests/blank3d.c | 25 +++++++++++++++++++++++++ tests/blank3d.c.experr | 0 tests/blank3d.c.expout | 20 ++++++++++++++++++++ tests/blank3d.c.exprc | 1 + tests/blank3d.experr | 0 tests/blank3d.expout | 20 ++++++++++++++++++++ tests/blank3d.exprc | 1 + tests/blank3u.args | 1 + tests/blank3u.c | 25 +++++++++++++++++++++++++ tests/blank3u.c.experr | 0 tests/blank3u.c.expout | 19 +++++++++++++++++++ tests/blank3u.c.exprc | 1 + tests/blank3u.experr | 0 tests/blank3u.expout | 19 +++++++++++++++++++ tests/blank3u.exprc | 1 + tests/blank4d.args | 1 + tests/blank4d.c | 25 +++++++++++++++++++++++++ tests/blank4d.c.experr | 0 tests/blank4d.c.expout | 19 +++++++++++++++++++ tests/blank4d.c.exprc | 1 + tests/blank4d.experr | 0 tests/blank4d.expout | 19 +++++++++++++++++++ tests/blank4d.exprc | 1 + tests/blank4u.args | 1 + tests/blank4u.c | 25 +++++++++++++++++++++++++ tests/blank4u.c.experr | 0 tests/blank4u.c.expout | 18 ++++++++++++++++++ tests/blank4u.c.exprc | 1 + tests/blank4u.experr | 0 tests/blank4u.expout | 18 ++++++++++++++++++ tests/blank4u.exprc | 1 + 80 files changed, 690 insertions(+) --------------------------------------------------- 2009-11-24 23:46:36 +0000 Tony Finch Further test script clean-ups. runtests.sh | 27 ++++++++++++--------------- tests/runtests | 27 ++++++++++++--------------- 2 files changed, 24 insertions(+), 30 deletions(-) --------------------------------------------------- 2009-11-24 22:40:01 +0000 Tony Finch Add a couple of tests for macro argument handling tests/args1.c | 3 +++ tests/args1.c.experr | 0 tests/args1.c.expout | 1 + tests/args1.c.exprc | 1 + tests/args1.experr | 0 tests/args1.expout | 1 + tests/args1.exprc | 1 + tests/args2.c | 3 +++ tests/args2.c.experr | 0 tests/args2.c.expout | 3 +++ tests/args2.c.exprc | 1 + tests/args2.experr | 0 tests/args2.expout | 3 +++ tests/args2.exprc | 1 + 14 files changed, 18 insertions(+) --------------------------------------------------- 2009-11-24 22:39:36 +0000 Tony Finch Automatically run newly-added tests. runtests.sh | 7 +++---- tests/runtests | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) --------------------------------------------------- 2009-11-24 22:32:35 +0000 Tony Finch Fix detection of missing test output files. runtests.sh | 3 +-- tests/runtests | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-11-24 22:25:55 +0000 Tony Finch Move tests/Makefile into the main Makefile. Makefile | 6 +++++- tests/Makefile | 5 ----- 2 files changed, 5 insertions(+), 6 deletions(-) --------------------------------------------------- 2009-11-24 22:20:26 +0000 Tony Finch Support non-standard test command arguments. runtests.sh | 7 ++++++- tests/runtests | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-24 22:13:15 +0000 Tony Finch Remove redundancy from the test scripts. runtests.sh | 47 ++++++++++++++++++++++++++++++++++++++++ tests/Makefile | 11 ++-------- tests/empty.c.exprc | 1 + tests/empty.exprc | 1 + tests/if1.c.exprc | 1 + tests/if1.exprc | 1 + tests/if2.c.exprc | 1 + tests/if2.exprc | 1 + tests/if3.c.exprc | 1 + tests/if3.exprc | 1 + tests/if4.c.exprc | 1 + tests/if4.exprc | 1 + tests/if5.c.exprc | 1 + tests/if5.exprc | 1 + tests/none.c.exprc | 1 + tests/none.exprc | 1 + tests/runtests | 47 ++++++++++++++++++++++++++++++++++++++++ tests/simple1 | 58 ------------------------------------------------- tests/simple2 | 60 --------------------------------------------------- tests/small1.c.exprc | 1 + tests/small1.exprc | 1 + tests/small2.c.exprc | 1 + tests/small2.exprc | 1 + tests/spaces1.c.exprc | 1 + tests/spaces1.exprc | 1 + tests/spaces2.c.exprc | 1 + tests/spaces2.exprc | 1 + tests/spaces3.c.exprc | 1 + tests/spaces3.exprc | 1 + tests/spaces4.c.exprc | 1 + tests/spaces4.exprc | 1 + 31 files changed, 122 insertions(+), 127 deletions(-) --------------------------------------------------- 2009-11-24 21:32:53 +0000 Tony Finch Make the simple3 test script redundant. tests/Makefile | 2 +- tests/simple2 | 6 ++++-- tests/simple3 | 58 ---------------------------------------------------------- 3 files changed, 5 insertions(+), 61 deletions(-) --------------------------------------------------- 2009-11-24 21:27:29 +0000 Tony Finch Reduce repetition of the test command in the scripts. tests/simple1 | 14 ++++++++------ tests/simple2 | 14 ++++++++------ tests/simple3 | 14 ++++++++------ 3 files changed, 24 insertions(+), 18 deletions(-) --------------------------------------------------- 2009-11-24 21:23:30 +0000 Tony Finch Fix relative path from tests to unifdef executable. tests/simple1 | 2 +- tests/simple2 | 2 +- tests/simple3 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-24 21:21:47 +0000 Tony Finch Import Bob Proulx's test suite from the Debian package. tests/Makefile | 12 +++++++++++ tests/empty.c | 0 tests/empty.c.experr | 0 tests/empty.c.expout | 0 tests/empty.experr | 0 tests/empty.expout | 0 tests/if1.c | 22 ++++++++++++++++++++ tests/if1.c.experr | 0 tests/if1.c.expout | 12 +++++++++++ tests/if1.experr | 0 tests/if1.expout | 12 +++++++++++ tests/if2.c | 13 ++++++++++++ tests/if2.c.experr | 0 tests/if2.c.expout | 9 ++++++++ tests/if2.experr | 0 tests/if2.expout | 9 ++++++++ tests/if3.c | 13 ++++++++++++ tests/if3.c.experr | 0 tests/if3.c.expout | 9 ++++++++ tests/if3.experr | 0 tests/if3.expout | 9 ++++++++ tests/if4.c | 34 ++++++++++++++++++++++++++++++ tests/if4.c.experr | 0 tests/if4.c.expout | 18 ++++++++++++++++ tests/if4.experr | 0 tests/if4.expout | 18 ++++++++++++++++ tests/if5.c | 48 +++++++++++++++++++++++++++++++++++++++++++ tests/if5.c.experr | 0 tests/if5.c.expout | 24 ++++++++++++++++++++++ tests/if5.experr | 0 tests/if5.expout | 24 ++++++++++++++++++++++ tests/none.c | 1 + tests/none.c.experr | 0 tests/none.c.expout | 1 + tests/none.experr | 0 tests/none.expout | 1 + tests/simple1 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/simple2 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/simple3 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/small1.c | 13 ++++++++++++ tests/small1.c.experr | 0 tests/small1.c.expout | 9 ++++++++ tests/small1.experr | 0 tests/small1.expout | 9 ++++++++ tests/small2.c | 13 ++++++++++++ tests/small2.c.experr | 0 tests/small2.c.expout | 9 ++++++++ tests/small2.experr | 0 tests/small2.expout | 9 ++++++++ tests/spaces1.c | 13 ++++++++++++ tests/spaces1.c.experr | 0 tests/spaces1.c.expout | 9 ++++++++ tests/spaces1.experr | 0 tests/spaces1.expout | 9 ++++++++ tests/spaces2.c | 13 ++++++++++++ tests/spaces2.c.experr | 0 tests/spaces2.c.expout | 9 ++++++++ tests/spaces2.experr | 0 tests/spaces2.expout | 9 ++++++++ tests/spaces3.c | 13 ++++++++++++ tests/spaces3.c.experr | 0 tests/spaces3.c.expout | 9 ++++++++ tests/spaces3.experr | 0 tests/spaces3.expout | 9 ++++++++ tests/spaces4.c | 13 ++++++++++++ tests/spaces4.c.experr | 0 tests/spaces4.c.expout | 9 ++++++++ tests/spaces4.experr | 0 tests/spaces4.expout | 9 ++++++++ 69 files changed, 643 insertions(+) --------------------------------------------------- 2009-11-24 17:50:35 +0000 Tony Finch Less stilted English in the man page. unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-24 17:49:13 +0000 Tony Finch Handle macros with arguments. Submitted-by: Anders H Kaseorg unifdef.1 | 13 ++++++++++++- unifdef.c | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-24 16:51:38 +0000 Tony Finch Use isalnum() instead of isalpha() + isdigit(). unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-24 12:14:37 +0000 Tony Finch Run the release script verbosely. release.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-24 12:12:31 +0000 Tony Finch Add a non-portability note to the README. README | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --------------------------------------------------- 2009-11-24 11:58:41 +0000 Tony Finch Rename getline() to parseline() to avoid clashing with a glibc function. unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-11-23 19:15:42 +0000 Tony Finch Add a realclean target Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --------------------------------------------------- 2009-11-23 19:14:02 +0000 Tony Finch Add a README file Makefile | 4 ++-- README | 21 +++++++++++++++++++++ release.sh | 3 ++- 3 files changed, 25 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-23 19:07:17 +0000 Tony Finch Further improvements to the release scripts. Make the generated filenames more standard. Makefile | 16 ++++++++-------- release.sh | 16 +++++++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) --------------------------------------------------- 2009-11-23 18:54:52 +0000 Tony Finch Include the Release script in the release. release.sh | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2009-11-23 18:53:35 +0000 Tony Finch Revamp Makefile and add a separate Release script. Makefile | 20 +++++++------------- release.sh | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 13 deletions(-) --------------------------------------------------- 2009-11-23 18:37:17 +0000 Tony Finch Document -d flag and update copyright notices. unifdef.1 | 11 +++++++---- unifdef.c | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) --------------------------------------------------- 2009-11-23 18:24:55 +0000 Tony Finch Fix regression in ! operator. Since revision 1.180, unifdef is ignoring negations in the outermost expression of an #if conditional. Fix the regression, and add a debug statement to help if any similar problems ever need to be tracked down. Submitted by: Jonathan Nieder unifdef.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-23 17:59:33 +0000 Tony Finch Correct the HISTORY section and add an AUTHORS section. Obtained from FreeBSD. unifdef.1 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-23 17:58:27 +0000 Tony Finch Add a "release" target Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) --------------------------------------------------- 2008-03-10 16:15:52 +0000 Tony Finch update synopsis unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2008-03-10 16:08:47 +0000 Tony Finch backwards compatibility option unifdef.1 | 12 +++++++++++- unifdef.c | 14 +++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) --------------------------------------------------- 2008-03-10 15:56:15 +0000 Tony Finch Fix the state transition table. unifdef.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) --------------------------------------------------- 2008-03-10 15:24:29 +0000 Tony Finch Lenient evaluation of && and || based on an idea from Ben Hutchings at Solarflare Communications. unifdef.1 | 74 +++++++++++++++++++++++----------- unifdef.c | 136 ++++++++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 139 insertions(+), 71 deletions(-) --------------------------------------------------- 2008-03-10 13:01:40 +0000 Tony Finch Compress blank lines, based on an idea from Ben Hutchings at Solarflare Communications. unifdef.1 | 28 ++++++++++++++++++---------- unifdef.c | 37 ++++++++++++++++++++++++++----------- 2 files changed, 44 insertions(+), 21 deletions(-) --------------------------------------------------- 2008-03-02 22:23:32 +0000 Tony Finch Typo in comment spotted by Hasso Tepper at DragonFlyBSD. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2008-02-29 13:17:37 +0000 Tony Finch Ah, I have worked out another way of triggering the abort. I think this fix covers all the cases. unifdef.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) --------------------------------------------------- 2008-02-29 12:44:25 +0000 Tony Finch Remove a bit of copyright crap. unifdef.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) --------------------------------------------------- 2008-02-29 12:30:36 +0000 Tony Finch Sync usage with synopsis in man page unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2008-02-29 12:29:34 +0000 Tony Finch Ensure man page is ASCII. Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2008-02-29 12:26:04 +0000 Tony Finch Fix an abort caused by files that have #endif and no newline on the last line (reported by Joe Karthauser). Also fix a benign uninitialized variable bug. unifdef.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) --------------------------------------------------- 2007-04-30 07:37:17 +0000 Tony Finch Fix explanation of copyright history. unifdef.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) --------------------------------------------------- 2005-08-12 10:59:21 +0000 Tony Finch Allow #if defined SYM as well as #if defined(SYM) unifdef.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) --------------------------------------------------- 2005-03-08 12:39:01 +0000 Tony Finch sync with upstream unifdef.1 | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) --------------------------------------------------- 2005-03-08 12:38:48 +0000 Tony Finch copyright dates unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2005-03-08 12:07:27 +0000 Tony Finch Update the copyright notice to the FreeBSD standard. Do not recognize comment markers inside string and character literals. unifdef.c | 59 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 15 deletions(-) --------------------------------------------------- 2003-08-12 20:51:30 +0000 Tony Finch simpler declaration of copyright[] unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-08-12 20:33:59 +0000 Tony Finch Make the embedded copyright and version information more portable. Remove NetBSD cvs id because it is no longer relevant. Remove FreeBSD cvs id because it isn't relevant upstream. Keep Berkeley runes because they go with the original licence. unifdef.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) --------------------------------------------------- 2003-08-12 20:32:39 +0000 Tony Finch FreeBSD cvs id isn't relevant in this file in the upstream version. unifdefall.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --------------------------------------------------- 2003-08-12 20:32:12 +0000 Tony Finch Current FreeBSD cvs id unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-08-12 20:12:24 +0000 Tony Finch optionally add #line directives to the output unifdef.1 | 11 +++++++++-- unifdef.c | 20 ++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) --------------------------------------------------- 2003-08-12 19:39:53 +0000 Tony Finch Add a little sanity checking to the state transition table code. unifdef.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-08-12 19:35:31 +0000 Tony Finch a minor style improvement unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2003-08-12 19:23:12 +0000 Tony Finch Allow the user to run unifdef without defining any symbols. This is useful in conjunction with the -k flag. Fix a bug in the -s handling code that would have caused out-of-bounds array accesses. unifdef.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) --------------------------------------------------- 2003-08-07 16:01:10 +0000 Tony Finch Sync with FreeBSD unifdef.1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2003-07-31 08:21:00 +0000 Tony Finch All rights reserved unifdef.1 | 4 ++-- unifdef.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2003-07-31 08:20:47 +0000 Tony Finch add FreeBSD-style copyright & licence unifdefall.sh | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-07-31 08:10:39 +0000 Tony Finch Sync copyright and licence with the code. I've put my copyright line below Berkeley's since a lot of the old man page still remains. unifdef.1 | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) --------------------------------------------------- 2003-07-31 07:59:15 +0000 Tony Finch Remove clause three of the licence, as permitted by Berkeley. OpenBSD have done this globally, but Net- and Free- haven't. I've had two questions about this recently, and since I don't distribute Berkeley's licence change statement this is a good way to be clear. unifdef.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) --------------------------------------------------- 2003-07-01 15:32:48 +0000 Tony Finch FreeBSD ident string unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-07-01 15:21:25 +0000 Tony Finch style tweak unifdef.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-07-01 15:13:49 +0000 Tony Finch Make the handling of EOF a little more elegant. unifdef.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) --------------------------------------------------- 2003-07-01 14:53:50 +0000 Tony Finch clean Makefile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-07-01 08:34:43 +0000 Tony Finch a comment about line continuations unifdef.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2003-07-01 08:19:58 +0000 Tony Finch Improve the expression evaluator's debugging output. unifdef.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-06-30 14:30:54 +0000 Tony Finch More improvements to comments regarding global variables. unifdef.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --------------------------------------------------- 2003-06-30 14:26:48 +0000 Tony Finch Make a note in a comment about the relationship between getline() and skipcomment() w.r.t. the linestate. unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-06-30 14:22:40 +0000 Tony Finch When in text mode, or when ignoring a symbol, skipcomment needs to adjust the linestate when it hits a newline. unifdef.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-06-30 14:03:56 +0000 Tony Finch Sync with FreeBSD. unifdef.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --------------------------------------------------- 2003-01-20 14:43:55 +0000 Tony Finch makefile for unifdef Makefile | 11 +++++++++++ 1 file changed, 11 insertions(+) --------------------------------------------------- 2003-01-20 14:37:08 +0000 Tony Finch Slightly more correct SYNOPSIS unifdef.1 | 14 ++++++-------- unifdef.c | 4 ++-- 2 files changed, 8 insertions(+), 10 deletions(-) --------------------------------------------------- 2003-01-20 14:01:47 +0000 Tony Finch add a note about probalems caused by division unifdef.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 13:48:06 +0000 Tony Finch typo unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 12:46:08 +0000 Tony Finch Sync $FreeBSD$ after downstream commit unifdef.1 | 4 ++-- unifdef.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2003-01-20 12:05:41 +0000 Tony Finch clean up some -o remnants unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-01-20 12:03:48 +0000 Tony Finch terminological consistency: s/modify/edit/ unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 12:03:10 +0000 Tony Finch Compactify the Mfoo functions. unifdef.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) --------------------------------------------------- 2003-01-20 11:46:53 +0000 Tony Finch more idiomatic strlcpy usage unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 11:45:32 +0000 Tony Finch Correct dodgy handling -- line continuations in keywords are always an error. unifdef.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) --------------------------------------------------- 2003-01-20 11:36:12 +0000 Tony Finch Rename -o to -e, i.e. "less errors" instead of "allow obfuscation". unifdef.1 | 40 ++++++++++++++++++++-------------------- unifdef.c | 12 ++++++------ 2 files changed, 26 insertions(+), 26 deletions(-) --------------------------------------------------- 2003-01-20 11:22:44 +0000 Tony Finch remove another spurious space unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 02:58:11 +0000 Tony Finch Improve the handling of multiline preprocessor directives. Don't complain when they don't affect the output. Add a switch that causes us to fudge it instead of complaining when it is possible to do so. Prompted by an error report from Poul-Henning Kamp unifdef.1 | 24 +++++++++-- unifdef.c | 142 ++++++++++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 123 insertions(+), 43 deletions(-) --------------------------------------------------- 2003-01-20 02:53:27 +0000 Tony Finch replace accidentally zapped #endif unifdef.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2003-01-20 02:50:36 +0000 Tony Finch Sync $FreeBSD$ unifdef.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-01-20 01:51:11 +0000 Tony Finch Deconfuse ingnore[] (which is a per-symbol flag) and ignoring[] (which is the stack of ignore states). unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2003-01-20 01:32:23 +0000 Tony Finch Whitespace fixes from OpenBSD. unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2003-01-20 00:59:36 +0000 Tony Finch Be more explicit about the failure mode. Reported by: Poul-Henning Kamp unifdef.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-01-20 00:50:06 +0000 Tony Finch typo: maintin -> maintain unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 00:01:49 +0000 Tony Finch Purge strcpy() to appease OpenBSD. Consistently use the term "edit" when talking about changing preprocessor keywords in the output. Suggested by: Ted Unangst unifdef.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) --------------------------------------------------- 2003-01-17 19:19:13 +0000 Tony Finch mdoc pedantry from FreeBSD unifdef.1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2003-01-17 19:04:36 +0000 Tony Finch Style fix: brackets around the argument to return. From OpenBSD. unifdef.c | 68 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) --------------------------------------------------- 2003-01-17 19:03:02 +0000 Tony Finch Add a necessary cast to an argument of printf. From OpenBSD. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-17 19:01:59 +0000 Tony Finch Whitespace fixes from OpenBSD. unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-13 15:26:41 +0000 Tony Finch Damnit, it makes sense for flushline() to be near the #if machine, and the diff is doomed to be vast anyway. unifdef.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) --------------------------------------------------- 2002-12-13 15:20:05 +0000 Tony Finch make warns-clean in an evil manner unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-13 13:58:00 +0000 Tony Finch factor out an error message unifdef.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-13 11:44:25 +0000 Tony Finch remove an XXX that has been addressed unifdef.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) --------------------------------------------------- 2002-12-13 11:42:37 +0000 Tony Finch sort getopt cases unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-12-13 11:40:08 +0000 Tony Finch Use ISO/IEC 9899:1999 minimum translation limits unifdef.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-12-13 11:33:34 +0000 Tony Finch expand on unifdef's understanding of C unifdef.1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-13 11:24:26 +0000 Tony Finch note the appearance of ANSI support unifdef.1 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-13 11:24:08 +0000 Tony Finch describe the limitation on preprocessor lines better unifdef.1 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-13 11:15:20 +0000 Tony Finch spot backslash-newline in a preprocessor keyword unifdef.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-13 11:13:02 +0000 Tony Finch fix an error message unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-13 11:11:11 +0000 Tony Finch less obfuscated ifdef/ifndef handling unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-12-13 11:04:43 +0000 Tony Finch comment the state enums unifdef.c | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) --------------------------------------------------- 2002-12-12 19:53:53 +0000 Tony Finch move the forward declaration of struct ops to a better place unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-12 19:52:26 +0000 Tony Finch move flushline() back where it used to be unifdef.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) --------------------------------------------------- 2002-12-12 19:50:15 +0000 Tony Finch more commentary on strlcmp() unifdef.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-12 19:46:44 +0000 Tony Finch comment all globals unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-12-12 19:45:29 +0000 Tony Finch terminological consistency for pass states unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 19:43:04 +0000 Tony Finch fix some comments unifdef.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 19:42:23 +0000 Tony Finch re-order enums to reduce diffs with FreeBSD unifdef.c | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) --------------------------------------------------- 2002-12-12 19:38:45 +0000 Tony Finch remove some c&p garbage unifdef.c | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) --------------------------------------------------- 2002-12-12 19:36:23 +0000 Tony Finch move flushline closer to its usage point unifdef.c | 60 +++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 19 deletions(-) --------------------------------------------------- 2002-12-12 19:35:17 +0000 Tony Finch rename a variable in process() to reduce diffs with FreeBSD unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-12-12 19:29:02 +0000 Tony Finch move the tables closer to their interpreters unifdef.c | 317 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 160 insertions(+), 157 deletions(-) --------------------------------------------------- 2002-12-12 19:15:24 +0000 Tony Finch reduce the space used by the state transition functions unifdef.c | 146 ++++++++++++++++++++++++-------------------------------------- 1 file changed, 57 insertions(+), 89 deletions(-) --------------------------------------------------- 2002-12-12 19:04:56 +0000 Tony Finch note another diagnostic unifdef.1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-12 19:04:56 +0000 Tony Finch make everything static, and improve the order of declarations unifdef.c | 328 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 175 insertions(+), 153 deletions(-) --------------------------------------------------- 2002-12-12 17:59:51 +0000 Tony Finch Improve the state table commentary. unifdef.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-12 17:41:39 +0000 Tony Finch reduce state transition table line lengths below 80 unifdef.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-12-12 17:30:55 +0000 Tony Finch reduce state function line lengths below 80 unifdef.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-12-12 17:24:26 +0000 Tony Finch Exit 1 if the output differs from the input. unifdef.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-12 17:21:22 +0000 Tony Finch Exit 2 on error. unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-12 17:21:04 +0000 Tony Finch Bring the DIAGNOSTICS in line with reality. unifdef.1 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-12-12 17:17:52 +0000 Tony Finch restore the complaint about EOF in comments unifdef.1 | 5 ++++- unifdef.c | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-12 17:12:57 +0000 Tony Finch skipsym doesn't need a separate test for '\0' unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 17:11:28 +0000 Tony Finch rename constexpr back to keepthis to reduce diffs unifdef.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-12 17:06:15 +0000 Tony Finch stcomline isn't used any more unifdef.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 17:05:00 +0000 Tony Finch Note that NO_COMMMENT is false, as before. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 17:03:37 +0000 Tony Finch Move the error function back to the end unifdef.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-12-12 17:02:08 +0000 Tony Finch Better error messages outside #if groups unifdef.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-12 17:01:50 +0000 Tony Finch Note a new diagnostic for preprocessor lines we can't handle. unifdef.1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-12 17:00:04 +0000 Tony Finch Instead of quietly ballsing up the output, bitch if we encounter a preprocessor line we can't handle. unifdef.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) --------------------------------------------------- 2002-12-12 16:04:04 +0000 Tony Finch Rename checkline() to getline() and move the fgets() inside it. unifdef.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-11 20:46:06 +0000 Tony Finch Add a missing unignore() unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-11 20:42:47 +0000 Tony Finch Handle #ifs nested inside a false block correctly. unifdef.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-11 20:15:57 +0000 Tony Finch remove nul character comment unifdef.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) --------------------------------------------------- 2002-12-11 20:05:52 +0000 Tony Finch Overhaul the #if state machine. It's now table-driven rather than hand- coded, and it doesn't have the old version's bugs. The debugging messages have also been improved. unifdef.c | 452 ++++++++++++++++++++++++++++---------------------------------- 1 file changed, 205 insertions(+), 247 deletions(-) --------------------------------------------------- 2002-12-11 20:04:40 +0000 Tony Finch some more bugs unifdef.1 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-11 02:28:22 +0000 Tony Finch Rename keepthis to constexpr which is easier to think about. Re-comment and re-arrange some globals. unifdef.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) --------------------------------------------------- 2002-12-11 02:22:44 +0000 Tony Finch Add a note about trigraphs. unifdef.1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-11 02:13:04 +0000 Tony Finch Use fgets instead of getline() because the latter gets EOF wrong. unifdef.c | 77 ++------------------------------------------------------------- 1 file changed, 2 insertions(+), 75 deletions(-) --------------------------------------------------- 2002-12-11 02:07:02 +0000 Tony Finch Overhaul the comment and preprocessor line parsers. unifdef.1 | 4 +- unifdef.c | 232 ++++++++++++++++++++++++++++++++++++-------------------------- 2 files changed, 137 insertions(+), 99 deletions(-) --------------------------------------------------- 2002-12-11 01:44:04 +0000 Tony Finch Add an asymmetric variant of strncmp() called strlcmp(). unifdef.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-11 00:00:47 +0000 Tony Finch handle end-of-string in skipsym() unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-10 23:20:14 +0000 Tony Finch A neater way of handling #elif unifdef.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-12-10 23:02:11 +0000 Tony Finch Fix findsym()'s comment. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-10 23:01:04 +0000 Tony Finch Improve findsym(). unifdef.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-12-10 21:11:58 +0000 Tony Finch Remove quote handling. unifdef.c | 70 ++++++++------------------------------------------------------- 1 file changed, 9 insertions(+), 61 deletions(-) --------------------------------------------------- 2002-12-10 21:11:19 +0000 Tony Finch Update the spec to relate better to ANSI C. Strings no longer affect the preprocessor, but line continuations do. unifdef.1 | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-12-10 17:28:09 +0000 Tony Finch Note that string parsing needs to be fixed. Actually it just needs to be ripped out and replaced with backslash line continuation handling since strings can't contain newlines any more. unifdef.1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-12-10 17:23:54 +0000 Tony Finch Sync with FreeBSD unifdef.1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-12-10 17:12:58 +0000 Tony Finch Handle inquote more elegantly unifdef.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-12-10 17:00:39 +0000 Tony Finch Make the symbol table zero-based, and remove an incorrect comment. unifdef.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) --------------------------------------------------- 2002-12-10 16:22:12 +0000 Tony Finch Terminological consistency: only use the word "ignore" to mean non-C parsing. unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-10 16:10:51 +0000 Tony Finch Ensure that cursym is always set by checkline(). unifdef.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-09-24 19:52:11 +0000 Tony Finch update FreeBSD IDs unifdef.1 | 4 ++-- unifdef.c | 4 ++-- unifdefall.sh | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2002-09-24 19:44:12 +0000 Tony Finch improve language unifdef.1 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-09-24 19:43:57 +0000 Tony Finch conform to the spec -- the -k option to unifdef is now needed unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-09-24 19:16:29 +0000 Tony Finch Pass through constant #ifs unless invoked with -k. unifdef.1 | 26 +++++++++++++++++++++++--- unifdef.c | 24 +++++++++++++++++------- 2 files changed, 40 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-05-30 11:50:13 +0000 Tony Finch add freebsd version string unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-30 11:47:26 +0000 Tony Finch Sync with FreeBSD's mdoc markup fixes. unifdef.1 | 84 +++++++++++++++++++++++++++++---------------------------------- 1 file changed, 39 insertions(+), 45 deletions(-) --------------------------------------------------- 2002-05-21 17:33:41 +0000 Tony Finch style(9) whitespace unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-05-15 19:37:50 +0000 Tony Finch consistent spacing in the function declarations unifdef.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) --------------------------------------------------- 2002-05-15 19:36:10 +0000 Tony Finch cast away qualifiers less evilly unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-15 19:34:40 +0000 Tony Finch Replace h0h0opt with getopt. unifdef.c | 135 ++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 78 insertions(+), 57 deletions(-) --------------------------------------------------- 2002-05-15 18:55:14 +0000 Tony Finch Don't run off the end of command-line options inside findsym(). unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-05-15 15:43:14 +0000 Tony Finch a typo and a formatting fix from dwmalone unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-05-15 10:31:20 +0000 Tony Finch FreeBSD CVS ID correctness unifdefall.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-05-14 22:15:03 +0000 Tony Finch be more optimistic about the level of expression support unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-14 22:13:21 +0000 Tony Finch the #ifdef and #if on the .Nd line should be .Li but this doesn't seem to be possible, so write "preprocessor conditionals" instead. unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-14 21:14:30 +0000 Tony Finch Correct the ordering and indentation of the CVS IDs according to FreeBSD style. unifdef.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2002-05-14 21:11:50 +0000 Tony Finch add a missing comma to the SEE ALSO list unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-14 21:11:14 +0000 Tony Finch Document unifdefall and the -I option. unifdef.1 | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-05-02 12:38:29 +0000 Tony Finch Better function names -- doif() -> process() and doif_1() -> doif() unifdef.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) --------------------------------------------------- 2002-05-02 12:36:22 +0000 Tony Finch consistent commenting unifdef.c | 69 ++++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 21 deletions(-) --------------------------------------------------- 2002-05-02 12:17:31 +0000 Tony Finch Consistent spacing in declaration of local variables, and simplified flushline(). unifdef.c | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) --------------------------------------------------- 2002-05-02 00:03:41 +0000 Tony Finch note #line wish unifdef.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-29 16:41:08 +0000 Tony Finch Handle symbols that are defined without a value correctly, again. unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 16:17:39 +0000 Tony Finch output of cpp needs to be sorted unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 03:08:10 +0000 Tony Finch clean up tmp dir unifdefall.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-29 03:07:20 +0000 Tony Finch tidy up unifdefall.sh | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) --------------------------------------------------- 2002-04-29 03:00:58 +0000 Tony Finch Don't get confused by symbols that are the prefix of other symbols. unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 02:55:15 +0000 Tony Finch mention support for the comparison operators unifdef.1 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-29 02:53:58 +0000 Tony Finch Overhaul the expression evaluator. The integer value of an expression is now calculated, rather than just the boolen value, and the evaluation of binary operators is now table-driven. These two things combine to make it easier to add support for new operators, such as comparisions. unifdef.c | 215 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 123 insertions(+), 92 deletions(-) --------------------------------------------------- 2002-04-29 00:20:42 +0000 Tony Finch Handle symbols that are defined without a value correctly. unifdefall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 00:18:06 +0000 Tony Finch -d -> --debug unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-29 00:17:11 +0000 Tony Finch Fix handling of bracketed expressions -- we didn't pass over the ) unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-28 23:42:36 +0000 Tony Finch A script for stripping out as many #if's from a file as possible. unifdefall.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) --------------------------------------------------- 2002-04-28 22:32:30 +0000 Tony Finch Ignore -Ifoo options so that the same options can be used with cpp -dM unifdef.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-28 22:15:26 +0000 Tony Finch allow a - on the command line to mean "input from stdin" unifdef.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-28 22:14:07 +0000 Tony Finch say explicitly that at least one -D or -U is needed unifdef.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-27 17:27:14 +0000 Tony Finch allow longer lines in the input unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-27 17:26:53 +0000 Tony Finch avoid a potential buffer overflow unifdef.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-27 17:23:47 +0000 Tony Finch spell getlin() with an e unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-26 20:44:33 +0000 Tony Finch remove redundant function unifdef.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-04-26 20:32:23 +0000 Tony Finch Multiple __RCSID()s is not portable, so use __IDSTRING() instead. unifdef.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-26 20:23:09 +0000 Tony Finch move a #define to a better place unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 20:18:07 +0000 Tony Finch add a couple of missing [=val] phrases unifdef.1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 20:17:35 +0000 Tony Finch use .Li for #if directives unifdef.1 | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-04-26 20:09:37 +0000 Tony Finch change the #if bug into an expression handling bug unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 20:08:45 +0000 Tony Finch mention the elif diagnostic unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 20:07:49 +0000 Tony Finch see also cpp(1) unifdef.1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-26 20:07:29 +0000 Tony Finch remove spurious historical note unifdef.1 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-26 20:05:12 +0000 Tony Finch explain the -s option unifdef.1 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-26 20:01:06 +0000 Tony Finch Improve the explanation of the -D and -U options. unifdef.1 | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) --------------------------------------------------- 2002-04-26 19:54:54 +0000 Tony Finch better introductory paragraph unifdef.1 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-26 19:51:20 +0000 Tony Finch remove -compact from the flag list unifdef.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 19:50:54 +0000 Tony Finch expand the introduction to explain the new functionality unifdef.1 | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-26 19:26:10 +0000 Tony Finch add a paragraph gap between -l and -t unifdef.1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-26 19:24:47 +0000 Tony Finch Add the optional symbol value to the various places -Dsym is mentioned, and add the -s flag to the synopsis. unifdef.1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --------------------------------------------------- 2002-04-26 19:20:34 +0000 Tony Finch update document date and one-line description unifdef.1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 19:15:55 +0000 Tony Finch add $dotat$ unifdef.1 | 1 + 1 file changed, 1 insertion(+) --------------------------------------------------- 2002-04-26 19:15:14 +0000 Tony Finch add my name to the copyright section unifdef.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --------------------------------------------------- 2002-04-26 19:14:35 +0000 Tony Finch add unifdef manual page from FreeBSD unifdef.1 | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) --------------------------------------------------- 2002-04-26 19:12:22 +0000 Tony Finch Add a new option for printing a list of the symbols found in #if expressions. unifdef.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 19:03:48 +0000 Tony Finch option variables in alphabetical order unifdef.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 19:02:45 +0000 Tony Finch parse options in alphabetical order unifdef.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-26 18:56:55 +0000 Tony Finch fix some h0h0 formatting unifdef.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) --------------------------------------------------- 2002-04-26 18:51:19 +0000 Tony Finch Fix the handling of #elif. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 18:13:43 +0000 Tony Finch put my name in the copyright section unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 17:42:31 +0000 Tony Finch Move all the global stuff to the start of the program in the order types, variables, function declarations, and ensure that all functions are declared. The program now compiles cleanly with $FANFCFLAGS. unifdef.c | 141 ++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 72 insertions(+), 69 deletions(-) --------------------------------------------------- 2002-04-26 17:33:47 +0000 Tony Finch use enums where appropriate unifdef.c | 64 +++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 28 deletions(-) --------------------------------------------------- 2002-04-26 17:25:50 +0000 Tony Finch blank lines after functions unifdef.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-26 17:23:57 +0000 Tony Finch const correctness unifdef.c | 110 ++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 53 insertions(+), 57 deletions(-) --------------------------------------------------- 2002-04-26 17:05:23 +0000 Tony Finch more bool correctness unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 17:02:17 +0000 Tony Finch Since MAXSYMS is bigger than CHAR_MAX, nsyms has to be an int. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 17:01:38 +0000 Tony Finch ANSI function definitions unifdef.c | 62 +++++++++++++++++++------------------------------------------- 1 file changed, 19 insertions(+), 43 deletions(-) --------------------------------------------------- 2002-04-26 16:56:34 +0000 Tony Finch Replace the homegrown Bool/YES/NO with stdbool.h things, and ensure that boolean variables are declared consistently. unifdef.c | 110 ++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 53 insertions(+), 57 deletions(-) --------------------------------------------------- 2002-04-26 16:49:11 +0000 Tony Finch Add __FBSDID and conditionalize the __RCSIDs unifdef.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --------------------------------------------------- 2002-04-26 16:47:53 +0000 Tony Finch add some debugging code unifdef.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 15:47:04 +0000 Tony Finch fix the line number reporting in the last change unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 15:38:59 +0000 Tony Finch Improve error reporting -- include the start line of the current #if. unifdef.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 15:34:44 +0000 Tony Finch Remove some slight punning between comment types and booleans. unifdef.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-26 15:06:30 +0000 Tony Finch Avoid reparsing the line that causes doif() to return to doif_1(). unifdef.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) --------------------------------------------------- 2002-04-26 13:54:16 +0000 Tony Finch put the newline on the #endif that replaces #elif lines unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 13:51:41 +0000 Tony Finch Finish implementation of #elif and nesting. This version passes some initial tests. unifdef.c | 133 ++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 94 insertions(+), 39 deletions(-) --------------------------------------------------- 2002-04-25 23:46:55 +0000 Tony Finch partial implementation of #elif and properly nesting #ifs. unifdef.c | 216 +++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 130 insertions(+), 86 deletions(-) --------------------------------------------------- 2002-04-25 23:27:40 +0000 Tony Finch remove redundant stline variable unifdef.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) --------------------------------------------------- 2002-04-25 23:25:31 +0000 Tony Finch simplify error line number handling unifdef.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) --------------------------------------------------- 2002-04-25 23:02:51 +0000 Tony Finch simplify error handling unifdef.c | 59 +++++++++++++++++++++-------------------------------------- 1 file changed, 21 insertions(+), 38 deletions(-) --------------------------------------------------- 2002-04-25 21:44:51 +0000 Tony Finch fix a comment to reflect the previous change unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 21:43:07 +0000 Tony Finch Change the "unknown symbol" return value from findsym() from -1 to 0. unifdef.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-04-25 21:19:55 +0000 Tony Finch remove an unnecessary variable inside doif() unifdef.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) --------------------------------------------------- 2002-04-25 20:24:16 +0000 Tony Finch Remove the inif argument to doif() entirely, since inif == (depth != 0). unifdef.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-04-25 20:20:05 +0000 Tony Finch Move the gall to getlin() up to doif() so that it will be able to examine the same line more than once. unifdef.c | 48 +++++++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 27 deletions(-) --------------------------------------------------- 2002-04-25 19:59:46 +0000 Tony Finch Simplify doif()'s inif argument to just a boolean, since the IN_ELSE value isn't very different from IN_IF, and the idea doesn't work well with #elif. unifdef.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-04-25 18:45:54 +0000 Tony Finch purge LT_OTHER since it's a synonym for LT_IF unifdef.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-25 18:17:09 +0000 Tony Finch Restore the requirement that at least one -D or -U must be present on the command line, which was broken when #if handling was added. unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 18:15:23 +0000 Tony Finch use __RCSID for the sccs id and remove redundant #ifndef lint lines unifdef.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-04-25 18:10:00 +0000 Tony Finch Initial version of #if handling. Symbol 0 is used for tracking the state of #if/#else activity. TODO: #elif, nested #if unifdef.c | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 145 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-04-25 16:16:26 +0000 Tony Finch allow whitespace before # unifdef.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:12:23 +0000 Tony Finch fix location of a { unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:11:54 +0000 Tony Finch add a function that will evaluate if expressions unifdef.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:05:30 +0000 Tony Finch remove spurious fflush() unifdef.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:04:55 +0000 Tony Finch style: #include ordering; variable alignment unifdef.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) --------------------------------------------------- 2002-04-25 16:03:16 +0000 Tony Finch use err() unifdef.c | 83 ++++++++++++++++++++++++++------------------------------------- 1 file changed, 34 insertions(+), 49 deletions(-) --------------------------------------------------- 2002-04-25 15:51:42 +0000 Tony Finch another formatting improvement unifdef.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-04-25 15:37:25 +0000 Tony Finch sensible else if formatting unifdef.c | 150 ++++++++++++++++++++++++++++---------------------------------- 1 file changed, 67 insertions(+), 83 deletions(-) --------------------------------------------------- 2002-04-25 15:31:28 +0000 Tony Finch deal with -Dsym=value unifdef.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) --------------------------------------------------- 2002-04-25 15:02:48 +0000 Tony Finch move #endif comments to a better place unifdef.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) --------------------------------------------------- 2002-04-25 14:59:59 +0000 Tony Finch allow a reasonable number of symbols unifdef.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 14:57:56 +0000 Tony Finch remove BSS cruft unifdef.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) --------------------------------------------------- 2002-04-25 14:55:27 +0000 Tony Finch remove __P unifdef.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-04-25 14:52:54 +0000 Tony Finch revert to the CSRG copyright/sccs rubric and add $dotat$ unifdef.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) --------------------------------------------------- 2002-04-25 14:50:23 +0000 Tony Finch import from NetBSD unifdef.c | 684 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 684 insertions(+) --------------------------------------------------- unifdef-2.10/.gitignore000644 031623 031623 00000000111 12263051406 015072 0ustar00fanf2fanf2000000 000000 Changelog unifdef unifdef.exe unifdef.txt unifdef-* version.h version.sh unifdef-2.10/.travis.yml000644 031623 031623 00000001220 12263051406 015215 0ustar00fanf2fanf2000000 000000 language: c compiler: - gcc - clang git: depth: 0 matrix: include: - compiler: i586-mingw32msvc-gcc env: BUILD_MINGW="yes" before_install: - sudo apt-get -qq update install: - if test "${BUILD_MINGW}" = "yes"; then sudo apt-get -qq install wine; fi script: - if test "${BUILD_MINGW}" != "yes"; then make && make test && make release; else export CC=i586-mingw32msvc-gcc; echo -e '#!/bin/bash\nexec wine $0.exe "$@"' > unifdef; chmod ugo+x unifdef; make version.h && make -f win32/Makefile.mingw && make test; fi ## whitelist branches: only: - master - tmp unifdef-2.10/COPYING000644 031623 031623 00000010266 12263051406 014151 0ustar00fanf2fanf2000000 000000 unifdef copyright licence ------------------------- All files in this package are distributed under the two-clause BSD copyright licence, except for the manual page unifdef.1 and the portability support code in the FreeBSD subdirectory, which all have a three-clause BSD copyright licence. Unifdef was derived from software contributed to Berkeley by Dave Yost. It was rewritten to support ANSI C by Tony Finch. The original version of unifdef.c carried the four-clause BSD copyright licence. None of its code remains in this version (though some of the names remain) so it now carries the more liberal two-clause licence. Unless otherwise stated, the files in this package are: Copyright (c) 2002 - 2014 Tony Finch unifdefall.sh is: Copyright (c) 2002 - 2013 Tony Finch Copyright (c) 2009 - 2010 Jonathan Nieder Some files in the tests directory are: Copyright 2004, 2008 Bob Proulx The two-clause BSD copyright licence applying to all the above files is: 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. THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. The three-clause BSD copyright licence for the manual page unifdef.1 and the portability support code from FreeBSD is below. The fourth advertising clause that used to appear between clauses 2 and 3 was rescinded by the University of California Berkeley in 1999. ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change Copyright (c) 1985 - 1994 The Regents of the University of California. All rights reserved. Copyright (c) 2002 - 2012 Tony Finch . All rights reserved. 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. - end - unifdef-2.10/FreeBSD/000755 031623 031623 00000000000 12263051406 014323 5ustar00fanf2fanf2000000 000000 unifdef-2.10/INSTALL000644 031623 031623 00000002651 12263051406 014146 0ustar00fanf2fanf2000000 000000 unifdef installation instructions --------------------------------- Dependencies: * unifdef is mostly ANSI C, with a few unixisms * unifdefall is a Unix shell script * the manual uses the nroff mdoc macros * the support and test scripts are Unix shell scripts To build on Unix, type `make`. You can adjust the compilation options using the POSIX standard CFLAGS and LDFLAGS make variables. To install in your home directory, type `make install` or to install in /usr type `make prefix=/usr install`. See the start of the Makefile for the install location variables. The win32 subdirectory contains build files for MinGW and Visual Studio 2010 which make use of the FreeBSD code plus some other portability wrappers. To build with MinGW, type `mingw32-make -f win32/Makefile.mingw`. Unlike the Unix Makefile, the Windows builds do not automatically create or update version.h. The release tar and zip files include a pre-generated version.h but the git repository does not. To build from a git clone you need a Unix shell environment, which you can get as part of GitHub for Windows - http://windows.github.com/ To update version.h, right-click on the fanf2/unifdef repository and select "open a shell here", then type `sh scripts\reversion.sh`. We assume Unix provides the BSD err.h functions and C99 stdbool.h. The FreeBSD subdirectory has copies of err.c and getopt.c for systems such as Windows that don't have them built in. - end - unifdef-2.10/Makefile000644 031623 031623 00000002437 12263051406 014557 0ustar00fanf2fanf2000000 000000 # Makefile for unifdef prefix = ${HOME} bindir = ${prefix}/bin mandir = ${prefix}/share/man man1dir= ${mandir}/man1 bindest= ${DESTDIR}${bindir} man1dest= ${DESTDIR}${man1dir} all: unifdef unifdef: unifdef.c unifdef.h version.h ${CC} ${CFLAGS} ${LDFLAGS} -o unifdef unifdef.c version.h: version.sh version.sh:: scripts/reversion.sh test: unifdef scripts/runtests.sh tests install: unifdef unifdefall.sh unifdef.1 : commands install -m 755 -d ${bindest} install -m 755 unifdef ${bindest}/ install -m 755 unifdefall.sh ${bindest}/unifdefall : manual install -m 755 -d ${man1dest} install -m 644 unifdef.1 ${man1dest}/ ln -s unifdef.1 ${man1dest}/unifdefall.1 clean: rm -f unifdef version.h rm -f tests/*.out tests/*.err tests/*.rc realclean: clean rm -f unifdef.txt [ ! -d .git ] || rm -f Changelog version.sh find . -name .git -prune -o \( \ -name '*~' -o -name '.#*' -o \ -name '*.orig' -o -name '*.core' -o \ -name 'xterm-*' -o -name 'xterm.tar.gz' \ \) -delete DISTEXTRA= version.h version.sh unifdef.txt Changelog release: ${DISTEXTRA} scripts/copycheck.sh scripts/release.sh ${DISTEXTRA} unifdef.txt: unifdef.1 nroff -Tascii -mdoc unifdef.1 | col -bx >unifdef.txt Changelog: version.sh scripts/gitlog2changelog.sh scripts/gitlog2changelog.sh >Changelog # eof unifdef-2.10/README000644 031623 031623 00000002743 12263051406 013777 0ustar00fanf2fanf2000000 000000 unifdef - selectively remove C preprocessor conditionals Written by Tony Finch - http://dotat.at/prog/unifdef/ The unifdef utility selectively processes conditional C preprocessor #if and #ifdef directives. It removes from a file both the directives and the additional text that they delimit, while otherwise leaving the file alone. Please see the INSTALL file for installation instructions. Pre-formatted documentation can be found in unifdef.txt You can subscribe to release announcements at: http://freecode.com/projects/unifdef You can download the latest release tar and zip files from: http://dotat.at/prog/unifdef You can clone the development repository using: git clone http://dotat.at/git/unifdef.git I also maintain a copy at http://github.com/fanf2/unifdef (Warning: GitHub's zip download is incomplete and unusable.) Please send bug reports and patches to me. Unless you state otherwise, I will assume that any contributions are under the two-clause BSD licence. See the COPYING file for details. Thanks to the following people for their contributions: Bob Proulx - test suite Jonathan Nieder - bug fixes, improved unifdefall Anders H Kaseorg - bug fixes and other improvements Ben Hutchings at Solarflare Communications - lenient evaluation of && and || Steve Underwood - read #define and #undef directives from a file Other contributions are listed in the Changelog. - end - unifdef-2.10/scripts/000755 031623 031623 00000000000 12263051406 014600 5ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/000755 031623 031623 00000000000 12263051407 014254 5ustar00fanf2fanf2000000 000000 unifdef-2.10/unifdef.1000644 031623 031623 00000025422 12263051407 014621 0ustar00fanf2fanf2000000 000000 .\" Copyright (c) 1985, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" Copyright (c) 2002 - 2013 Tony Finch . All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Dave Yost. It was rewritten to support ANSI C by 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. 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. .\" .Dd January 7, 2014 .Dt UNIFDEF 1 PRM .Os " " .Sh NAME .Nm unifdef , unifdefall .Nd remove preprocessor conditionals from code .Sh SYNOPSIS .Nm .Op Fl bBcdehKkmnsStV .Op Fl I Ns Ar path .Op Fl [i]D Ns Ar sym Ns Op = Ns Ar val .Op Fl [i]U Ns Ar sym .Ar ... .Op Fl f Ar defile .Op Fl x Bro Ar 012 Brc .Op Fl M Ar backext .Op Fl o Ar outfile .Op Ar infile ... .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 , .Ic #elif , #else , and .Ic #endif lines, using macros specified in .Fl D and .Fl U command line options or in .Fl f definitions files. A directive is processed if the macro specifications are sufficient to provide a definite value for its control expression. If the result is false, the directive and the following lines under its control are removed. If the result is true, only the directive is removed. An .Ic #ifdef or .Ic #ifndef directive is passed through unchanged if its controlling macro is not specified. Any .Ic #if or .Ic #elif control expression that has an unknown value or that .Nm cannot parse is passed through unchanged. By default, .Nm ignores .Ic #if and .Ic #elif lines with constant expressions; it can be told to process them by specifying the .Fl k flag on the command line. .Pp It understands a commonly-used subset of the expression syntax for .Ic #if and .Ic #elif lines: integer constants, integer values of macros defined on the command line, the .Fn defined operator, the operators .Ic \&! , < , > , .Ic <= , >= , == , != , .Ic && , || , and parenthesized expressions. A kind of .Dq "short circuit" evaluation is used for the .Ic && operator: if either operand is definitely false then the result is false, even if the value of the other operand is unknown. Similarly, if either operand of .Ic || is definitely true then the result is true. .Pp When evaluating an expression, .Nm does not expand macros first. The value of a macro must be a simple number, not an expression. A limited form of indirection is allowed, where one macro's value is the name of another. .Pp In most cases, .Nm does not distinguish between object-like macros (without arguments) and function-like macros (with arguments). A function-like macro invocation can appear in .Ic #if and .Ic #elif control expressions. If the macro is not explicitly defined, or is defined with the .Fl D flag on the command-line, or with .Ic #define in a .Fl f definitions file, its arguments are ignored. If a macro is explicitly undefined on the command line with the .Fl U flag, or with .Ic #undef in a .Fl f definitions file, it may not have any arguments since this leads to a syntax error. .Pp The .Nm utility 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 for it 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 macros and their definitions (or lack thereof), then invokes .Nm with appropriate arguments to process the file. .Sh OPTIONS .Bl -tag -width indent -compact .It Fl D Ns Ar sym Ns = Ns Ar val Specify that a macro is defined to a given value. .Pp .It Fl D Ns Ar sym Specify that a macro is defined to the value 1. .Pp .It Fl U Ns Ar sym Specify that a macro is undefined. .Pp If the same macro appears in more than one argument, the last occurrence dominates. .Pp .It Fl iD Ns Ar sym Ns Op = Ns Ar val .It Fl iU Ns Ar sym C strings, comments, and line continuations are ignored within .Ic #ifdef and .Ic #ifndef blocks controlled by macros specified with these options. .Pp .It Fl f Ar defile The file .Ar defile contains .Ic #define and .Ic #undef preprocessor directives, which have the same effect as the corresponding .Fl D and .Fl U command-line arguments. You can have multiple .Fl f arguments and mix them with .Fl D and .Fl U arguments; later options override earlier ones. .Pp Each directive must be on a single line. Object-like macro definitions (without arguments) are set to the given value. Function-like macro definitions (with arguments) are treated as if they are set to 1. .Pp .It Fl b Replace removed lines with blank lines instead of deleting them. Mutually exclusive with the .Fl B option. .Pp .It Fl B Compress blank lines around a deleted section. Mutually exclusive with the .Fl b option. .Pp .It Fl c Complement, i.e., lines that would have been removed or blanked are retained and vice versa. .Pp .It Fl d Turn on printing of debugging messages. .Pp .It Fl e By default, .Nm will report an error if it needs to remove a preprocessor directive that spans more than one line, for example, if it has a multi-line comment hanging off its right hand end. The .Fl e flag makes it ignore the line instead. .Pp .It Fl h Print help. .Pp .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 . .Pp .It Fl K Always treat the result of .Ic && and .Ic || operators as unknown if either operand is unknown, instead of short-circuiting when unknown operands can't affect the result. This option is for compatibility with older versions of .Nm . .Pp .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. .Pp .It Fl m Modify one or more input files in place. .Pp .It Fl M Ar backext Modify input files in place, and keep backups of the original files by appending the .Ar backext to the input filenames. .Pp .It Fl n Add .Li #line directives to the output following any deleted lines, so that errors produced when compiling the output file correspond to line numbers in the input file. .Pp .It Fl o Ar outfile Write output to the file .Ar outfile instead of the standard output when processing a single file. .Pp .It Fl s Instead of processing an input file as usual, this option causes .Nm to produce a list of macros that are used in preprocessor directive controlling expressions. .Pp .It Fl S Like the .Fl s option, but the nesting depth of each macro is also printed. This is useful for working out the number of possible combinations of interdependent defined/undefined macros. .Pp .It Fl t Disables parsing for C strings, comments, and line continuations, which is useful for plain text. This is a blanket version of the .Fl iD and .Fl iU flags. .Pp .It Fl V Print version details. .Pp .It Fl x Bro Ar 012 Brc Set exit status mode to zero, one, or two. See the .Sx EXIT STATUS section below for details. .El .Pp The .Nm utility takes its input from .Em stdin if there are no .Ar file arguments. You must use the .Fl m or .Fl M options if there are multiple input files. You can specify inut from stdin or output to stdout with .Ql - . .Pp The .Nm utility works nicely with the .Fl D Ns Ar sym option of .Xr diff 1 . .Sh EXIT STATUS In normal usage the .Nm utility's exit status depends on the mode set using the .Fl x option. .Pp If the exit mode is zero (the default) then .Nm exits with status 0 if the output is an exact copy of the input, or with status 1 if the output differs. .Pp If the exit mode is one, .Nm exits with status 1 if the output is unmodified or 0 if it differs. .Pp If the exit mode is two, .Nm exits with status zero in both cases. .Pp In all exit modes, .Nm exits with status 2 if there is an error. .Pp The exit status is 0 if the .Fl h or .Fl V command line options are given. .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 .Tn EOF (with the line number of the most recent unterminated .Ic #if ) . .It .Tn EOF in comment. .El .Sh SEE ALSO .Xr cpp 1 , .Xr diff 1 .Pp The unifdef home page is .Pa http://dotat.at/prog/unifdef .Sh HISTORY The .Nm command appeared in .Bx 2.9 . .Tn ANSI\~C support was added in .Fx 4.7 . .Sh AUTHORS The original implementation was written by .An Dave Yost Aq Dave@Yost.com . .An Tony Finch Aq dot@dotat.at rewrote it to support .Tn ANSI\~C . .Sh BUGS Expression evaluation is very limited. .Pp Handling one line at a time means preprocessor directives 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 macros 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. unifdef-2.10/unifdef.c000644 031623 031623 00000125321 12263051407 014702 0ustar00fanf2fanf2000000 000000 /* * Copyright (c) 2002 - 2014 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. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 - remove ifdef'ed lines * * This code was derived from software contributed to Berkeley by Dave Yost. * It was rewritten to support ANSI C by Tony Finch. The original version * of unifdef carried the 4-clause BSD copyright licence. None of its code * remains in this version (though some of the names remain) so it now * carries a more liberal licence. * * Wishlist: * provide an option which will append the name of the * appropriate symbol after #else's and #endif's * provide an option which will check symbols after * #else's and #endif's to see that they match their * corresponding #ifdef or #ifndef * * These require better buffer handling, which would also make * it possible to handle all "dodgy" directives correctly. */ #include "unifdef.h" static const char copyright[] = #include "version.h" "@(#) $Author: Tony Finch (dot@dotat.at) $\n" "@(#) $URL: http://dotat.at/prog/unifdef $\n" ; /* types of input lines: */ typedef enum { LT_TRUEI, /* a true #if with ignore flag */ LT_FALSEI, /* a false #if with ignore flag */ LT_IF, /* an unknown #if */ LT_TRUE, /* a true #if */ LT_FALSE, /* a false #if */ LT_ELIF, /* an unknown #elif */ LT_ELTRUE, /* a true #elif */ LT_ELFALSE, /* a false #elif */ LT_ELSE, /* #else */ LT_ENDIF, /* #endif */ LT_DODGY, /* flag: directive is not on one line */ LT_DODGY_LAST = LT_DODGY + LT_ENDIF, LT_PLAIN, /* ordinary line */ LT_EOF, /* end of file */ LT_ERROR, /* unevaluable #if */ LT_COUNT } Linetype; static char const * const linetype_name[] = { "TRUEI", "FALSEI", "IF", "TRUE", "FALSE", "ELIF", "ELTRUE", "ELFALSE", "ELSE", "ENDIF", "DODGY TRUEI", "DODGY FALSEI", "DODGY IF", "DODGY TRUE", "DODGY FALSE", "DODGY ELIF", "DODGY ELTRUE", "DODGY ELFALSE", "DODGY ELSE", "DODGY ENDIF", "PLAIN", "EOF", "ERROR" }; #define linetype_if2elif(lt) ((Linetype)(lt - LT_IF + LT_ELIF)) #define linetype_2dodgy(lt) ((Linetype)(lt + LT_DODGY)) /* state of #if processing */ typedef enum { IS_OUTSIDE, IS_FALSE_PREFIX, /* false #if followed by false #elifs */ IS_TRUE_PREFIX, /* first non-false #(el)if is true */ IS_PASS_MIDDLE, /* first non-false #(el)if is unknown */ IS_FALSE_MIDDLE, /* a false #elif after a pass state */ IS_TRUE_MIDDLE, /* a true #elif after a pass state */ IS_PASS_ELSE, /* an else after a pass state */ IS_FALSE_ELSE, /* an else after a true state */ IS_TRUE_ELSE, /* an else after only false states */ IS_FALSE_TRAILER, /* #elifs after a true are false */ IS_COUNT } Ifstate; static char const * const ifstate_name[] = { "OUTSIDE", "FALSE_PREFIX", "TRUE_PREFIX", "PASS_MIDDLE", "FALSE_MIDDLE", "TRUE_MIDDLE", "PASS_ELSE", "FALSE_ELSE", "TRUE_ELSE", "FALSE_TRAILER" }; /* state of comment parser */ typedef enum { NO_COMMENT = false, /* outside a comment */ C_COMMENT, /* in a comment like this one */ CXX_COMMENT, /* between // and end of line */ STARTING_COMMENT, /* just after slash-backslash-newline */ FINISHING_COMMENT, /* star-backslash-newline in a C comment */ CHAR_LITERAL, /* inside '' */ STRING_LITERAL /* inside "" */ } Comment_state; static char const * const comment_name[] = { "NO", "C", "CXX", "STARTING", "FINISHING", "CHAR", "STRING" }; /* state of preprocessor line parser */ typedef enum { LS_START, /* only space and comments on this line */ LS_HASH, /* only space, comments, and a hash */ LS_DIRTY /* this line can't be a preprocessor line */ } Line_state; static char const * const linestate_name[] = { "START", "HASH", "DIRTY" }; /* * Minimum translation limits from ISO/IEC 9899:1999 5.2.4.1 */ #define MAXDEPTH 64 /* maximum #if nesting */ #define MAXLINE 4096 /* maximum length of line */ #define MAXSYMS 16384 /* maximum number of symbols */ /* * Sometimes when editing a keyword the replacement text is longer, so * we leave some space at the end of the tline buffer to accommodate this. */ #define EDITSLOP 10 /* * Globals. */ static bool compblank; /* -B: compress blank lines */ static bool lnblank; /* -b: blank deleted lines */ static bool complement; /* -c: do the complement */ static bool debugging; /* -d: debugging reports */ static bool inplace; /* -m: modify in place */ static bool iocccok; /* -e: fewer IOCCC errors */ static bool strictlogic; /* -K: keep ambiguous #ifs */ static bool killconsts; /* -k: eval constant #ifs */ static bool lnnum; /* -n: add #line directives */ static bool symlist; /* -s: output symbol list */ static bool symdepth; /* -S: output symbol depth */ static bool text; /* -t: this is a text file */ static const char *symname[MAXSYMS]; /* symbol name */ static const char *value[MAXSYMS]; /* -Dsym=value */ static bool ignore[MAXSYMS]; /* -iDsym or -iUsym */ static int nsyms; /* number of symbols */ static FILE *input; /* input file pointer */ static const char *filename; /* input file name */ static int linenum; /* current line number */ static const char *linefile; /* file name for #line */ static FILE *output; /* output file pointer */ static const char *ofilename; /* output file name */ static const char *backext; /* backup extension */ static char *tempname; /* avoid splatting input */ static char tline[MAXLINE+EDITSLOP];/* input buffer plus space */ static char *keyword; /* used for editing #elif's */ /* * When processing a file, the output's newline style will match the * input's, and unifdef correctly handles CRLF or LF endings whatever * the platform's native style. The stdio streams are opened in binary * mode to accommodate platforms whose native newline style is CRLF. * When the output isn't a processed input file (when it is error / * debug / diagnostic messages) then unifdef uses native line endings. */ static const char *newline; /* input file format */ static const char newline_unix[] = "\n"; static const char newline_crlf[] = "\r\n"; static Comment_state incomment; /* comment parser state */ static Line_state linestate; /* #if line parser state */ static Ifstate ifstate[MAXDEPTH]; /* #if processor state */ static bool ignoring[MAXDEPTH]; /* ignore comments state */ static int stifline[MAXDEPTH]; /* start of current #if */ static int depth; /* current #if nesting */ static int delcount; /* count of deleted lines */ static unsigned blankcount; /* count of blank lines */ static unsigned blankmax; /* maximum recent blankcount */ static bool constexpr; /* constant #if expression */ static bool zerosyms; /* to format symdepth output */ static bool firstsym; /* ditto */ static int exitmode; /* exit status mode */ static int exitstat; /* program exit status */ static void addsym1(bool, bool, char *); static void addsym2(bool, const char *, const char *); static char *astrcat(const char *, const char *); static void cleantemp(void); static void closeio(void); static void debug(const char *, ...); static void debugsym(const char *, int); static bool defundef(void); static void defundefile(const char *); static void done(void); static void error(const char *); static int findsym(const char **); static void flushline(bool); static void hashline(void); static void help(void); static Linetype ifeval(const char **); static void ignoreoff(void); static void ignoreon(void); static void indirectsym(void); static void keywordedit(const char *); static const char *matchsym(const char *, const char *); static void nest(void); static Linetype parseline(void); static void process(void); static void processinout(const char *, const char *); static const char *skipargs(const char *); static const char *skipcomment(const char *); static const char *skiphash(void); static const char *skipline(const char *); static const char *skipsym(const char *); static void state(Ifstate); static void unnest(void); static void usage(void); static void version(void); static const char *xstrdup(const char *, const char *); #define endsym(c) (!isalnum((unsigned char)c) && c != '_') /* * The main program. */ int main(int argc, char *argv[]) { int opt; while ((opt = getopt(argc, argv, "i:D:U:f:I:M:o:x:bBcdehKklmnsStV")) != -1) switch (opt) { case 'i': /* treat stuff controlled by these symbols as text */ /* * For strict backwards-compatibility the U or D * should be immediately after the -i but it doesn't * matter much if we relax that requirement. */ opt = *optarg++; if (opt == 'D') addsym1(true, true, optarg); else if (opt == 'U') addsym1(true, false, optarg); else usage(); break; case 'D': /* define a symbol */ addsym1(false, true, optarg); break; case 'U': /* undef a symbol */ addsym1(false, false, optarg); break; case 'I': /* no-op for compatibility with cpp */ break; case 'b': /* blank deleted lines instead of omitting them */ case 'l': /* backwards compatibility */ lnblank = true; break; case 'B': /* compress blank lines around removed section */ compblank = true; break; case 'c': /* treat -D as -U and vice versa */ complement = true; break; case 'd': debugging = true; break; case 'e': /* fewer errors from dodgy lines */ iocccok = true; break; case 'f': /* definitions file */ defundefile(optarg); break; case 'h': help(); break; case 'K': /* keep ambiguous #ifs */ strictlogic = true; break; case 'k': /* process constant #ifs */ killconsts = true; break; case 'm': /* modify in place */ inplace = true; break; case 'M': /* modify in place and keep backup */ inplace = true; backext = optarg; break; case 'n': /* add #line directive after deleted lines */ lnnum = true; break; case 'o': /* output to a file */ ofilename = optarg; break; case 's': /* only output list of symbols that control #ifs */ symlist = true; break; case 'S': /* list symbols with their nesting depth */ symlist = symdepth = true; break; case 't': /* don't parse C comments */ text = true; break; case 'V': version(); break; case 'x': exitmode = atoi(optarg); if(exitmode < 0 || exitmode > 2) usage(); break; default: usage(); } argc -= optind; argv += optind; if (compblank && lnblank) errx(2, "-B and -b are mutually exclusive"); if (symlist && (ofilename != NULL || inplace || argc > 1)) errx(2, "-s only works with one input file"); if (argc > 1 && ofilename != NULL) errx(2, "-o cannot be used with multiple input files"); if (argc > 1 && !inplace) errx(2, "multiple input files require -m or -M"); if (argc == 0) argc = 1; if (argc == 1 && !inplace && ofilename == NULL) ofilename = "-"; indirectsym(); atexit(cleantemp); if (ofilename != NULL) processinout(*argv, ofilename); else while (argc-- > 0) { processinout(*argv, *argv); argv++; } switch(exitmode) { case(0): exit(exitstat); case(1): exit(!exitstat); case(2): exit(0); default: abort(); /* bug */ } } /* * File logistics. */ static void processinout(const char *ifn, const char *ofn) { struct stat st; if (ifn == NULL || strcmp(ifn, "-") == 0) { filename = "[stdin]"; linefile = NULL; input = fbinmode(stdin); } else { filename = ifn; linefile = ifn; input = fopen(ifn, "rb"); if (input == NULL) err(2, "can't open %s", ifn); } if (strcmp(ofn, "-") == 0) { output = fbinmode(stdout); process(); return; } if (stat(ofn, &st) < 0) { output = fopen(ofn, "wb"); if (output == NULL) err(2, "can't create %s", ofn); process(); return; } tempname = astrcat(ofn, ".XXXXXX"); output = mktempmode(tempname, st.st_mode); if (output == NULL) err(2, "can't create %s", tempname); process(); if (backext != NULL) { char *backname = astrcat(ofn, backext); if (rename(ofn, backname) < 0) err(2, "can't rename \"%s\" to \"%s\"", ofn, backname); free(backname); } if (replace(tempname, ofn) < 0) err(2, "can't rename \"%s\" to \"%s\"", tempname, ofn); free(tempname); tempname = NULL; } /* * For cleaning up if there is an error. */ static void cleantemp(void) { if (tempname != NULL) remove(tempname); } /* * Self-identification functions. */ static void version(void) { const char *c = copyright; for (;;) { while (*++c != '$') if (*c == '\0') exit(0); while (*++c != '$') putc(*c, stderr); putc('\n', stderr); } } static void synopsis(FILE *fp) { fprintf(fp, "usage: unifdef [-bBcdehKkmnsStV] [-x{012}] [-Mext] [-opath] \\\n" " [-[i]Dsym[=val]] [-[i]Usym] [-fpath] ... [file] ...\n"); } static void usage(void) { synopsis(stderr); exit(2); } static void help(void) { synopsis(stdout); printf( " -Dsym=val define preprocessor symbol with given value\n" " -Dsym define preprocessor symbol with value 1\n" " -Usym preprocessor symbol is undefined\n" " -iDsym=val \\ ignore C strings and comments\n" " -iDsym ) in sections controlled by these\n" " -iUsym / preprocessor symbols\n" " -fpath file containing #define and #undef directives\n" " -b blank lines instead of deleting them\n" " -B compress blank lines around deleted section\n" " -c complement (invert) keep vs. delete\n" " -d debugging mode\n" " -e ignore multiline preprocessor directives\n" " -h print help\n" " -Ipath extra include file path (ignored)\n" " -K disable && and || short-circuiting\n" " -k process constant #if expressions\n" " -Mext modify in place and keep backups\n" " -m modify input files in place\n" " -n add #line directives to output\n" " -opath output file name\n" " -S list #if control symbols with nesting\n" " -s list #if control symbols\n" " -t ignore C strings and comments\n" " -V print version\n" " -x{012} exit status mode\n" ); exit(0); } /* * A state transition function alters the global #if processing state * in a particular way. The table below is indexed by the current * processing state and the type of the current line. * * Nesting is handled by keeping a stack of states; some transition * functions increase or decrease the depth. They also maintain the * ignore state on a stack. In some complicated cases they have to * alter the preprocessor directive, as follows. * * When we have processed a group that starts off with a known-false * #if/#elif sequence (which has therefore been deleted) followed by a * #elif that we don't understand and therefore must keep, we edit the * latter into a #if to keep the nesting correct. We use memcpy() to * overwrite the 4 byte token "elif" with "if " without a '\0' byte. * * When we find a true #elif in a group, the following block will * always be kept and the rest of the sequence after the next #elif or * #else will be discarded. We edit the #elif into a #else and the * following directive to #endif since this has the desired behaviour. * * "Dodgy" directives are split across multiple lines, the most common * example being a multi-line comment hanging off the right of the * directive. We can handle them correctly only if there is no change * from printing to dropping (or vice versa) caused by that directive. * If the directive is the first of a group we have a choice between * failing with an error, or passing it through unchanged instead of * evaluating it. The latter is not the default to avoid questions from * users about unifdef unexpectedly leaving behind preprocessor directives. */ typedef void state_fn(void); /* report an error */ static void Eelif (void) { error("Inappropriate #elif"); } static void Eelse (void) { error("Inappropriate #else"); } static void Eendif(void) { error("Inappropriate #endif"); } static void Eeof (void) { error("Premature EOF"); } static void Eioccc(void) { error("Obfuscated preprocessor control line"); } /* plain line handling */ static void print (void) { flushline(true); } static void drop (void) { flushline(false); } /* output lacks group's start line */ static void Strue (void) { drop(); ignoreoff(); state(IS_TRUE_PREFIX); } static void Sfalse(void) { drop(); ignoreoff(); state(IS_FALSE_PREFIX); } static void Selse (void) { drop(); state(IS_TRUE_ELSE); } /* print/pass this block */ static void Pelif (void) { print(); ignoreoff(); state(IS_PASS_MIDDLE); } static void Pelse (void) { print(); state(IS_PASS_ELSE); } static void Pendif(void) { print(); unnest(); } /* discard this block */ static void Dfalse(void) { drop(); ignoreoff(); state(IS_FALSE_TRAILER); } static void Delif (void) { drop(); ignoreoff(); state(IS_FALSE_MIDDLE); } static void Delse (void) { drop(); state(IS_FALSE_ELSE); } static void Dendif(void) { drop(); unnest(); } /* first line of group */ static void Fdrop (void) { nest(); Dfalse(); } static void Fpass (void) { nest(); Pelif(); } static void Ftrue (void) { nest(); Strue(); } static void Ffalse(void) { nest(); Sfalse(); } /* variable pedantry for obfuscated lines */ static void Oiffy (void) { if (!iocccok) Eioccc(); Fpass(); ignoreon(); } static void Oif (void) { if (!iocccok) Eioccc(); Fpass(); } static void Oelif (void) { if (!iocccok) Eioccc(); Pelif(); } /* ignore comments in this block */ static void Idrop (void) { Fdrop(); ignoreon(); } static void Itrue (void) { Ftrue(); ignoreon(); } static void Ifalse(void) { Ffalse(); ignoreon(); } /* modify this line */ static void Mpass (void) { memcpy(keyword, "if ", 4); Pelif(); } static void Mtrue (void) { keywordedit("else"); state(IS_TRUE_MIDDLE); } static void Melif (void) { keywordedit("endif"); state(IS_FALSE_TRAILER); } static void Melse (void) { keywordedit("endif"); state(IS_FALSE_ELSE); } static state_fn * const trans_table[IS_COUNT][LT_COUNT] = { /* IS_OUTSIDE */ { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Eendif, Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eendif, print, done, abort }, /* IS_FALSE_PREFIX */ { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Strue, Sfalse,Selse, Dendif, Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Eioccc,Eioccc,Eioccc,Eioccc, drop, Eeof, abort }, /* IS_TRUE_PREFIX */ { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Dfalse,Dfalse,Dfalse,Delse, Dendif, Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc, print, Eeof, abort }, /* IS_PASS_MIDDLE */ { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Pelif, Mtrue, Delif, Pelse, Pendif, Oiffy, Oiffy, Fpass, Oif, Oif, Pelif, Oelif, Oelif, Pelse, Pendif, print, Eeof, abort }, /* IS_FALSE_MIDDLE */ { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Pelif, Mtrue, Delif, Pelse, Pendif, Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc, drop, Eeof, abort }, /* IS_TRUE_MIDDLE */ { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Melif, Melif, Melif, Melse, Pendif, Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Pendif, print, Eeof, abort }, /* IS_PASS_ELSE */ { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Pendif, Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Pendif, print, Eeof, abort }, /* IS_FALSE_ELSE */ { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Dendif, Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Eioccc, drop, Eeof, abort }, /* IS_TRUE_ELSE */ { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Dendif, Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eioccc, print, Eeof, abort }, /* IS_FALSE_TRAILER */ { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Dendif, Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Eioccc, drop, Eeof, abort } /*TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF (DODGY) PLAIN EOF ERROR */ }; /* * State machine utility functions */ static void ignoreoff(void) { if (depth == 0) abort(); /* bug */ ignoring[depth] = ignoring[depth-1]; } static void ignoreon(void) { ignoring[depth] = true; } static void keywordedit(const char *replacement) { snprintf(keyword, tline + sizeof(tline) - keyword, "%s%s", replacement, newline); print(); } static void nest(void) { if (depth > MAXDEPTH-1) abort(); /* bug */ if (depth == MAXDEPTH-1) error("Too many levels of nesting"); depth += 1; stifline[depth] = linenum; } static void unnest(void) { if (depth == 0) abort(); /* bug */ depth -= 1; } static void state(Ifstate is) { ifstate[depth] = is; } /* * The last state transition function. When this is called, * lineval == LT_EOF, so the process() loop will terminate. */ static void done(void) { if (incomment) error("EOF in comment"); closeio(); } /* * Write a line to the output or not, according to command line options. * If writing fails, closeio() will print the error and exit. */ static void flushline(bool keep) { if (symlist) return; if (keep ^ complement) { bool blankline = tline[strspn(tline, " \t\r\n")] == '\0'; if (blankline && compblank && blankcount != blankmax) { delcount += 1; blankcount += 1; } else { if (lnnum && delcount > 0) hashline(); if (fputs(tline, output) == EOF) closeio(); delcount = 0; blankmax = blankcount = blankline ? blankcount + 1 : 0; } } else { if (lnblank && fputs(newline, output) == EOF) closeio(); exitstat = 1; delcount += 1; blankcount = 0; } if (debugging && fflush(output) == EOF) closeio(); } /* * Format of #line directives depends on whether we know the input filename. */ static void hashline(void) { int e; if (linefile == NULL) e = fprintf(output, "#line %d%s", linenum, newline); else e = fprintf(output, "#line %d \"%s\"%s", linenum, linefile, newline); if (e < 0) closeio(); } /* * Flush the output and handle errors. */ static void closeio(void) { /* Tidy up after findsym(). */ if (symdepth && !zerosyms) printf("\n"); if (output != NULL && (ferror(output) || fclose(output) == EOF)) err(2, "%s: can't write to output", filename); fclose(input); } /* * The driver for the state machine. */ static void process(void) { Linetype lineval = LT_PLAIN; /* When compressing blank lines, act as if the file is preceded by a large number of blank lines. */ blankmax = blankcount = 1000; zerosyms = true; newline = NULL; linenum = 0; while (lineval != LT_EOF) { lineval = parseline(); trans_table[ifstate[depth]][lineval](); debug("process line %d %s -> %s depth %d", linenum, linetype_name[lineval], ifstate_name[ifstate[depth]], depth); } } /* * Parse a line and determine its type. We keep the preprocessor line * parser state between calls in the global variable linestate, with * help from skipcomment(). */ static Linetype parseline(void) { const char *cp; int cursym; Linetype retval; Comment_state wascomment; wascomment = incomment; cp = skiphash(); if (cp == NULL) return (LT_EOF); if (newline == NULL) { if (strrchr(tline, '\n') == strrchr(tline, '\r') + 1) newline = newline_crlf; else newline = newline_unix; } if (*cp == '\0') { retval = LT_PLAIN; goto done; } keyword = tline + (cp - tline); if ((cp = matchsym("ifdef", keyword)) != NULL || (cp = matchsym("ifndef", keyword)) != NULL) { cp = skipcomment(cp); if ((cursym = findsym(&cp)) < 0) retval = LT_IF; else { retval = (keyword[2] == 'n') ? LT_FALSE : LT_TRUE; if (value[cursym] == NULL) retval = (retval == LT_TRUE) ? LT_FALSE : LT_TRUE; if (ignore[cursym]) retval = (retval == LT_TRUE) ? LT_TRUEI : LT_FALSEI; } } else if ((cp = matchsym("if", keyword)) != NULL) retval = ifeval(&cp); else if ((cp = matchsym("elif", keyword)) != NULL) retval = linetype_if2elif(ifeval(&cp)); else if ((cp = matchsym("else", keyword)) != NULL) retval = LT_ELSE; else if ((cp = matchsym("endif", keyword)) != NULL) retval = LT_ENDIF; else { cp = skipsym(keyword); /* no way can we deal with a continuation inside a keyword */ if (strncmp(cp, "\\\r\n", 3) == 0 || strncmp(cp, "\\\n", 2) == 0) Eioccc(); cp = skipline(cp); retval = LT_PLAIN; goto done; } cp = skipcomment(cp); if (*cp != '\0') { cp = skipline(cp); if (retval == LT_TRUE || retval == LT_FALSE || retval == LT_TRUEI || retval == LT_FALSEI) retval = LT_IF; if (retval == LT_ELTRUE || retval == LT_ELFALSE) retval = LT_ELIF; } /* the following can happen if the last line of the file lacks a newline or if there is too much whitespace in a directive */ if (linestate == LS_HASH) { long len = cp - tline; if (fgets(tline + len, MAXLINE - len, input) == NULL) { if (ferror(input)) err(2, "can't read %s", filename); /* append the missing newline at eof */ strcpy(tline + len, newline); cp += strlen(newline); linestate = LS_START; } else { linestate = LS_DIRTY; } } if (retval != LT_PLAIN && (wascomment || linestate != LS_START)) { retval = linetype_2dodgy(retval); linestate = LS_DIRTY; } done: debug("parser line %d state %s comment %s line", linenum, comment_name[incomment], linestate_name[linestate]); return (retval); } /* * These are the binary operators that are supported by the expression * evaluator. */ static Linetype op_strict(long *p, long v, Linetype at, Linetype bt) { if(at == LT_IF || bt == LT_IF) return (LT_IF); return (*p = v, v ? LT_TRUE : LT_FALSE); } static Linetype op_lt(long *p, Linetype at, long a, Linetype bt, long b) { return op_strict(p, a < b, at, bt); } static Linetype op_gt(long *p, Linetype at, long a, Linetype bt, long b) { return op_strict(p, a > b, at, bt); } static Linetype op_le(long *p, Linetype at, long a, Linetype bt, long b) { return op_strict(p, a <= b, at, bt); } static Linetype op_ge(long *p, Linetype at, long a, Linetype bt, long b) { return op_strict(p, a >= b, at, bt); } static Linetype op_eq(long *p, Linetype at, long a, Linetype bt, long b) { return op_strict(p, a == b, at, bt); } static Linetype op_ne(long *p, Linetype at, long a, Linetype bt, long b) { return op_strict(p, a != b, at, bt); } static Linetype op_or(long *p, Linetype at, long a, Linetype bt, long b) { if (!strictlogic && (at == LT_TRUE || bt == LT_TRUE)) return (*p = 1, LT_TRUE); return op_strict(p, a || b, at, bt); } static Linetype op_and(long *p, Linetype at, long a, Linetype bt, long b) { if (!strictlogic && (at == LT_FALSE || bt == LT_FALSE)) return (*p = 0, LT_FALSE); return op_strict(p, a && b, at, bt); } /* * An evaluation function takes three arguments, as follows: (1) a pointer to * an element of the precedence table which lists the operators at the current * level of precedence; (2) a pointer to an integer which will receive the * value of the expression; and (3) a pointer to a char* that points to the * expression to be evaluated and that is updated to the end of the expression * when evaluation is complete. The function returns LT_FALSE if the value of * the expression is zero, LT_TRUE if it is non-zero, LT_IF if the expression * depends on an unknown symbol, or LT_ERROR if there is a parse failure. */ struct ops; typedef Linetype eval_fn(const struct ops *, long *, const char **); static eval_fn eval_table, eval_unary; /* * The precedence table. Expressions involving binary operators are evaluated * in a table-driven way by eval_table. When it evaluates a subexpression it * calls the inner function with its first argument pointing to the next * element of the table. Innermost expressions have special non-table-driven * handling. */ struct op { const char *str; Linetype (*fn)(long *, Linetype, long, Linetype, long); }; struct ops { eval_fn *inner; struct op op[5]; }; static const struct ops eval_ops[] = { { eval_table, { { "||", op_or } } }, { eval_table, { { "&&", op_and } } }, { eval_table, { { "==", op_eq }, { "!=", op_ne } } }, { eval_unary, { { "<=", op_le }, { ">=", op_ge }, { "<", op_lt }, { ">", op_gt } } } }; /* Current operator precedence level */ static long prec(const struct ops *ops) { return (ops - eval_ops); } /* * Function for evaluating the innermost parts of expressions, * viz. !expr (expr) number defined(symbol) symbol * We reset the constexpr flag in the last two cases. */ static Linetype eval_unary(const struct ops *ops, long *valp, const char **cpp) { const char *cp; char *ep; int sym; bool defparen; Linetype lt; cp = skipcomment(*cpp); if (*cp == '!') { debug("eval%d !", prec(ops)); cp++; lt = eval_unary(ops, valp, &cp); if (lt == LT_ERROR) return (LT_ERROR); if (lt != LT_IF) { *valp = !*valp; lt = *valp ? LT_TRUE : LT_FALSE; } } else if (*cp == '(') { cp++; debug("eval%d (", prec(ops)); lt = eval_table(eval_ops, valp, &cp); if (lt == LT_ERROR) return (LT_ERROR); cp = skipcomment(cp); if (*cp++ != ')') return (LT_ERROR); } else if (isdigit((unsigned char)*cp)) { debug("eval%d number", prec(ops)); *valp = strtol(cp, &ep, 0); if (ep == cp) return (LT_ERROR); lt = *valp ? LT_TRUE : LT_FALSE; cp = ep; } else if (matchsym("defined", cp) != NULL) { cp = skipcomment(cp+7); if (*cp == '(') { cp = skipcomment(cp+1); defparen = true; } else { defparen = false; } sym = findsym(&cp); cp = skipcomment(cp); if (defparen && *cp++ != ')') { debug("eval%d defined missing ')'", prec(ops)); return (LT_ERROR); } if (sym < 0) { debug("eval%d defined unknown", prec(ops)); lt = LT_IF; } else { debug("eval%d defined %s", prec(ops), symname[sym]); *valp = (value[sym] != NULL); lt = *valp ? LT_TRUE : LT_FALSE; } constexpr = false; } else if (!endsym(*cp)) { debug("eval%d symbol", prec(ops)); sym = findsym(&cp); if (sym < 0) { lt = LT_IF; cp = skipargs(cp); } else if (value[sym] == NULL) { *valp = 0; lt = LT_FALSE; } else { *valp = strtol(value[sym], &ep, 0); if (*ep != '\0' || ep == value[sym]) return (LT_ERROR); lt = *valp ? LT_TRUE : LT_FALSE; cp = skipargs(cp); } constexpr = false; } else { debug("eval%d bad expr", prec(ops)); return (LT_ERROR); } *cpp = cp; debug("eval%d = %d", prec(ops), *valp); return (lt); } /* * Table-driven evaluation of binary operators. */ static Linetype eval_table(const struct ops *ops, long *valp, const char **cpp) { const struct op *op; const char *cp; long val; Linetype lt, rt; debug("eval%d", prec(ops)); cp = *cpp; lt = ops->inner(ops+1, valp, &cp); if (lt == LT_ERROR) return (LT_ERROR); for (;;) { cp = skipcomment(cp); for (op = ops->op; op->str != NULL; op++) if (strncmp(cp, op->str, strlen(op->str)) == 0) break; if (op->str == NULL) break; cp += strlen(op->str); debug("eval%d %s", prec(ops), op->str); rt = ops->inner(ops+1, &val, &cp); if (rt == LT_ERROR) return (LT_ERROR); lt = op->fn(valp, lt, *valp, rt, val); } *cpp = cp; debug("eval%d = %d", prec(ops), *valp); debug("eval%d lt = %s", prec(ops), linetype_name[lt]); return (lt); } /* * Evaluate the expression on a #if or #elif line. If we can work out * the result we return LT_TRUE or LT_FALSE accordingly, otherwise we * return just a generic LT_IF. */ static Linetype ifeval(const char **cpp) { Linetype ret; long val = 0; debug("eval %s", *cpp); constexpr = killconsts ? false : true; ret = eval_table(eval_ops, &val, cpp); debug("eval = %d", val); return (constexpr ? LT_IF : ret == LT_ERROR ? LT_IF : ret); } /* * Read a line and examine its initial part to determine if it is a * preprocessor directive. Returns NULL on EOF, or a pointer to a * preprocessor directive name, or a pointer to the zero byte at the * end of the line. */ static const char * skiphash(void) { const char *cp; linenum++; if (fgets(tline, MAXLINE, input) == NULL) { if (ferror(input)) err(2, "can't read %s", filename); else return (NULL); } cp = skipcomment(tline); if (linestate == LS_START && *cp == '#') { linestate = LS_HASH; return (skipcomment(cp + 1)); } else if (*cp == '\0') { return (cp); } else { return (skipline(cp)); } } /* * Mark a line dirty and consume the rest of it, keeping track of the * lexical state. */ static const char * skipline(const char *cp) { if (*cp != '\0') linestate = LS_DIRTY; while (*cp != '\0') cp = skipcomment(cp + 1); return (cp); } /* * Skip over comments, strings, and character literals and stop at the * next character position that is not whitespace. Between calls we keep * the comment state in the global variable incomment, and we also adjust * the global variable linestate when we see a newline. * XXX: doesn't cope with the buffer splitting inside a state transition. */ static const char * skipcomment(const char *cp) { if (text || ignoring[depth]) { for (; isspace((unsigned char)*cp); cp++) if (*cp == '\n') linestate = LS_START; return (cp); } while (*cp != '\0') /* don't reset to LS_START after a line continuation */ if (strncmp(cp, "\\\r\n", 3) == 0) cp += 3; else if (strncmp(cp, "\\\n", 2) == 0) cp += 2; else switch (incomment) { case NO_COMMENT: if (strncmp(cp, "/\\\r\n", 4) == 0) { incomment = STARTING_COMMENT; cp += 4; } else if (strncmp(cp, "/\\\n", 3) == 0) { incomment = STARTING_COMMENT; cp += 3; } else if (strncmp(cp, "/*", 2) == 0) { incomment = C_COMMENT; cp += 2; } else if (strncmp(cp, "//", 2) == 0) { incomment = CXX_COMMENT; cp += 2; } else if (strncmp(cp, "\'", 1) == 0) { incomment = CHAR_LITERAL; linestate = LS_DIRTY; cp += 1; } else if (strncmp(cp, "\"", 1) == 0) { incomment = STRING_LITERAL; linestate = LS_DIRTY; cp += 1; } else if (strncmp(cp, "\n", 1) == 0) { linestate = LS_START; cp += 1; } else if (strchr(" \r\t", *cp) != NULL) { cp += 1; } else return (cp); continue; case CXX_COMMENT: if (strncmp(cp, "\n", 1) == 0) { incomment = NO_COMMENT; linestate = LS_START; } cp += 1; continue; case CHAR_LITERAL: case STRING_LITERAL: if ((incomment == CHAR_LITERAL && cp[0] == '\'') || (incomment == STRING_LITERAL && cp[0] == '\"')) { incomment = NO_COMMENT; cp += 1; } else if (cp[0] == '\\') { if (cp[1] == '\0') cp += 1; else cp += 2; } else if (strncmp(cp, "\n", 1) == 0) { if (incomment == CHAR_LITERAL) error("unterminated char literal"); else error("unterminated string literal"); } else cp += 1; continue; case C_COMMENT: if (strncmp(cp, "*\\\r\n", 4) == 0) { incomment = FINISHING_COMMENT; cp += 4; } else if (strncmp(cp, "*\\\n", 3) == 0) { incomment = FINISHING_COMMENT; cp += 3; } else if (strncmp(cp, "*/", 2) == 0) { incomment = NO_COMMENT; cp += 2; } else cp += 1; continue; case STARTING_COMMENT: if (*cp == '*') { incomment = C_COMMENT; cp += 1; } else if (*cp == '/') { incomment = CXX_COMMENT; cp += 1; } else { incomment = NO_COMMENT; linestate = LS_DIRTY; } continue; case FINISHING_COMMENT: if (*cp == '/') { incomment = NO_COMMENT; cp += 1; } else incomment = C_COMMENT; continue; default: abort(); /* bug */ } return (cp); } /* * Skip macro arguments. */ static const char * skipargs(const char *cp) { const char *ocp = cp; int level = 0; cp = skipcomment(cp); if (*cp != '(') return (cp); do { if (*cp == '(') level++; if (*cp == ')') level--; cp = skipcomment(cp+1); } while (level != 0 && *cp != '\0'); if (level == 0) return (cp); else /* Rewind and re-detect the syntax error later. */ return (ocp); } /* * Skip over an identifier. */ static const char * skipsym(const char *cp) { while (!endsym(*cp)) ++cp; return (cp); } /* * Skip whitespace and take a copy of any following identifier. */ static const char * getsym(const char **cpp) { const char *cp = *cpp, *sym; cp = skipcomment(cp); cp = skipsym(sym = cp); if (cp == sym) return NULL; *cpp = cp; return (xstrdup(sym, cp)); } /* * Check that s (a symbol) matches the start of t, and that the * following character in t is not a symbol character. Returns a * pointer to the following character in t if there is a match, * otherwise NULL. */ static const char * matchsym(const char *s, const char *t) { while (*s != '\0' && *t != '\0') if (*s != *t) return (NULL); else ++s, ++t; if (*s == '\0' && endsym(*t)) return(t); else return(NULL); } /* * Look for the symbol in the symbol table. If it is found, we return * the symbol table index, else we return -1. */ static int findsym(const char **strp) { const char *str; int symind; str = *strp; *strp = skipsym(str); if (symlist) { if (*strp == str) return (-1); if (symdepth && firstsym) printf("%s%3d", zerosyms ? "" : "\n", depth); firstsym = zerosyms = false; printf("%s%.*s%s", symdepth ? " " : "", (int)(*strp-str), str, symdepth ? "" : "\n"); /* we don't care about the value of the symbol */ return (0); } for (symind = 0; symind < nsyms; ++symind) { if (matchsym(symname[symind], str) != NULL) { debugsym("findsym", symind); return (symind); } } return (-1); } /* * Resolve indirect symbol values to their final definitions. */ static void indirectsym(void) { const char *cp; int changed, sym, ind; do { changed = 0; for (sym = 0; sym < nsyms; ++sym) { if (value[sym] == NULL) continue; cp = value[sym]; ind = findsym(&cp); if (ind == -1 || ind == sym || *cp != '\0' || value[ind] == NULL || value[ind] == value[sym]) continue; debugsym("indir...", sym); value[sym] = value[ind]; debugsym("...ectsym", sym); changed++; } } while (changed); } /* * Add a symbol to the symbol table, specified with the format sym=val */ static void addsym1(bool ignorethis, bool definethis, char *symval) { const char *sym, *val; sym = symval; val = skipsym(sym); if (definethis && *val == '=') { symval[val - sym] = '\0'; val = val + 1; } else if (*val == '\0') { val = definethis ? "1" : NULL; } else { usage(); } addsym2(ignorethis, sym, val); } /* * Add a symbol to the symbol table. */ static void addsym2(bool ignorethis, const char *sym, const char *val) { const char *cp = sym; int symind; symind = findsym(&cp); if (symind < 0) { if (nsyms >= MAXSYMS) errx(2, "too many symbols"); symind = nsyms++; } ignore[symind] = ignorethis; symname[symind] = sym; value[symind] = val; debugsym("addsym", symind); } static void debugsym(const char *why, int symind) { debug("%s %s%c%s", why, symname[symind], value[symind] ? '=' : ' ', value[symind] ? value[symind] : "undef"); } /* * Add symbols to the symbol table from a file containing * #define and #undef preprocessor directives. */ static void defundefile(const char *fn) { filename = fn; input = fopen(fn, "rb"); if (input == NULL) err(2, "can't open %s", fn); linenum = 0; while (defundef()) ; if (ferror(input)) err(2, "can't read %s", filename); else fclose(input); if (incomment) error("EOF in comment"); } /* * Read and process one #define or #undef directive */ static bool defundef(void) { const char *cp, *kw, *sym, *val, *end; cp = skiphash(); if (cp == NULL) return (false); if (*cp == '\0') goto done; /* strip trailing whitespace, and do a fairly rough check to avoid unsupported multi-line preprocessor directives */ end = cp + strlen(cp); while (end > tline && strchr(" \t\n\r", end[-1]) != NULL) --end; if (end > tline && end[-1] == '\\') Eioccc(); kw = cp; if ((cp = matchsym("define", kw)) != NULL) { sym = getsym(&cp); if (sym == NULL) error("missing macro name in #define"); if (*cp == '(') { val = "1"; } else { cp = skipcomment(cp); val = (cp < end) ? xstrdup(cp, end) : ""; } debug("#define"); addsym2(false, sym, val); } else if ((cp = matchsym("undef", kw)) != NULL) { sym = getsym(&cp); if (sym == NULL) error("missing macro name in #undef"); cp = skipcomment(cp); debug("#undef"); addsym2(false, sym, NULL); } else { error("unrecognized preprocessor directive"); } skipline(cp); done: debug("parser line %d state %s comment %s line", linenum, comment_name[incomment], linestate_name[linestate]); return (true); } /* * Concatenate two strings into new memory, checking for failure. */ static char * astrcat(const char *s1, const char *s2) { char *s; int len; size_t size; len = snprintf(NULL, 0, "%s%s", s1, s2); if (len < 0) err(2, "snprintf"); size = (size_t)len + 1; s = (char *)malloc(size); if (s == NULL) err(2, "malloc"); snprintf(s, size, "%s%s", s1, s2); return (s); } /* * Duplicate a segment of a string, checking for failure. */ static const char * xstrdup(const char *start, const char *end) { size_t n; char *s; if (end < start) abort(); /* bug */ n = (size_t)(end - start) + 1; s = malloc(n); if (s == NULL) err(2, "malloc"); snprintf(s, n, "%s", start); return (s); } /* * Diagnostics. */ static void debug(const char *msg, ...) { va_list ap; if (debugging) { va_start(ap, msg); vwarnx(msg, ap); va_end(ap); } } static void error(const char *msg) { if (depth == 0) warnx("%s: %d: %s", filename, linenum, msg); else warnx("%s: %d: %s (#if line %d depth %d)", filename, linenum, msg, stifline[depth], depth); closeio(); errx(2, "output may be truncated"); } unifdef-2.10/unifdef.h000644 031623 031623 00000003410 12263051407 014701 0ustar00fanf2fanf2000000 000000 /* * Copyright (c) 2012 - 2013 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. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */ #include #include #include #include #include #include #include #include #include /* portabiity stubs */ #define fbinmode(fp) (fp) #define replace(old,new) rename(old,new) static FILE * mktempmode(char *tmp, int mode) { int fd = mkstemp(tmp); if (fd < 0) return (NULL); fchmod(fd, mode & (S_IRWXU|S_IRWXG|S_IRWXO)); return (fdopen(fd, "wb")); } unifdef-2.10/unifdefall.sh000755 031623 031623 00000004060 12263051407 015562 0ustar00fanf2fanf2000000 000000 #!/bin/sh # # unifdefall: remove all the #if's from a source file # # Copyright (c) 2002 - 2013 Tony Finch # Copyright (c) 2009 - 2010 Jonathan Nieder # # 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. # # THIS SOFTWARE IS PROVIDED BY AUTHOR 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 AUTHOR 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. set -e unifdef="$(dirname "$0")/unifdef" if [ ! -e "$unifdef" ] then unifdef=unifdef fi case "$@" in "-d "*) echo DEBUGGING 1>&2 debug=-d shift esac tmp=$(mktemp -d "${TMPDIR:-/tmp}/${0##*/}.XXXXXXXXXX") || exit 2 trap 'rm -r "$tmp" || exit 2' EXIT export LC_ALL=C # list of all controlling macros; assume these are undefined "$unifdef" $debug -s "$@" | sort -u | sed 's/^/#undef /' >"$tmp/undefs" # list of all macro definitions cc -E -dM "$@" | sort >"$tmp/defs" case $debug in -d) cat "$tmp/undefs" "$tmp/defs" 1>&2 esac # order of -f arguments means definitions override undefs "$unifdef" $debug -k -f "$tmp/undefs" -f "$tmp/defs" "$@" unifdef-2.10/win32/000755 031623 031623 00000000000 12263051407 014054 5ustar00fanf2fanf2000000 000000 unifdef-2.10/win32/Makefile.mingw000644 031623 031623 00000000271 12263051407 016634 0ustar00fanf2fanf2000000 000000 # To build, run: # mingw32-make -f win32/Makefile.mingw all: unifdef.exe unifdef.exe: unifdef.c win32/win32.c FreeBSD/getopt.c FreeBSD/err.c $(CC) $(CFLAGS) -Iwin32 -I. -I- -o $@ $^ unifdef-2.10/win32/unifdef.h000644 031623 031623 00000004615 12263051407 015653 0ustar00fanf2fanf2000000 000000 /* * Copyright (c) 2012 - 2014 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. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */ #include #include #include #include #include #include /* Windows POSIX-flavoured headers */ #include #include #include #define stat _stat /* fake stdbool.h */ #define true 1 #define false 0 #define bool int /* used by err.c and getopt.c */ #define _getprogname() "unifdef" /* win32.c */ int replace(const char *old, const char *new); FILE *mktempmode(char *tmp, int mode); FILE *fbinmode(FILE *fp); /* err.c */ void err(int, const char *, ...); void verr(int, const char *, va_list); void errc(int, int, const char *, ...); void verrc(int, int, const char *, va_list); void errx(int, const char *, ...); void verrx(int, const char *, va_list); void warn(const char *, ...); void vwarn(const char *, va_list); void warnc(int, const char *, ...); void vwarnc(int, const char *, va_list); void warnx(const char *, ...); void vwarnx(const char *, va_list); /* getopt.c */ int getopt(int nargc, char *nargv[], const char *ostr); extern int opterr, optind, optopt, optreset; extern char *optarg; unifdef-2.10/win32/unifdef.sln000644 031623 031623 00000001560 12263051407 016214 0ustar00fanf2fanf2000000 000000  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unifdef", "unifdef.vcxproj", "{52450E07-855E-4522-BD4C-7B1E84D8D592}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {52450E07-855E-4522-BD4C-7B1E84D8D592}.Debug|Win32.ActiveCfg = Debug|Win32 {52450E07-855E-4522-BD4C-7B1E84D8D592}.Debug|Win32.Build.0 = Debug|Win32 {52450E07-855E-4522-BD4C-7B1E84D8D592}.Release|Win32.ActiveCfg = Release|Win32 {52450E07-855E-4522-BD4C-7B1E84D8D592}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal unifdef-2.10/win32/unifdef.vcxproj000644 031623 031623 00000011351 12263051407 017112 0ustar00fanf2fanf2000000 000000  Debug Win32 Release Win32 {52450E07-855E-4522-BD4C-7B1E84D8D592} Win32Proj unifdef Application true MultiByte Application false true MultiByte true false Use Level3 Disabled WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDebug .\ unifdef.h Console true Level3 Use MaxSpeed true true WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded .\ unifdef.h Console true true true Create Create unifdef-2.10/win32/win32.c000644 031623 031623 00000004361 12263051407 015166 0ustar00fanf2fanf2000000 000000 /* * Copyright (c) 2012 - 2014 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. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */ #include "unifdef.h" /* * The Windows implementation of rename() fails if the new filename * already exists. Atomic replacement is not really needed, so just * remove anything that might be in the way before renaming. */ int replace(const char *old, const char *new) { if (remove(new) < 0) warn("can't remove \"%s\"", new); return (rename(old, new)); } FILE * mktempmode(char *tmp, int mode) { mode = mode; return (fopen(_mktemp(tmp), "wb")); } FILE * fbinmode(FILE *fp) { _setmode(_fileno(fp), _O_BINARY); return (fp); } /* * While Windows has _snprintf() it does not work like real snprintf(). */ int snprintf(char *buf, size_t size, const char *format, ...) { va_list ap; int count = -1; if (size > 0) { va_start(ap, format); count = _vsnprintf_s(str, size, _TRUNCATE, format, ap); va_end(ap); } if (count < 0) { va_start(ap, format); count = _vscprintf(format, ap); va_end(ap); } return count; } unifdef-2.10/tests/NetBSD-42628.c000644 031623 031623 00000000615 12263051406 016163 0ustar00fanf2fanf2000000 000000 #if defined(__FreeBSD__) #include #else #include #endif #if defined(__FreeBSD__) #include #include #include #include #include #include #else #include #endif #if defined(__FreeBSD__) #endif #ifdef __FreeBSD__ #include #else #include #endif unifdef-2.10/tests/NetBSD-42628.experr000644 031623 031623 00000000000 12263051406 017232 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/NetBSD-42628.expout000644 031623 031623 00000000106 12263051406 017260 0ustar00fanf2fanf2000000 000000 #include #include #include unifdef-2.10/tests/NetBSD-42628.exprc000644 031623 031623 00000000002 12263051406 017050 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/NetBSD-42628.sh000644 031623 031623 00000000045 12263051406 016350 0ustar00fanf2fanf2000000 000000 unifdef -U__FreeBSD__ NetBSD-42628.c unifdef-2.10/tests/args1.c000644 031623 031623 00000000054 12263051406 015433 0ustar00fanf2fanf2000000 000000 #if defined(DUMMY) || FOO(arg) hello #endif unifdef-2.10/tests/args1.experr000644 031623 031623 00000000000 12263051406 016505 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/args1.expout000644 031623 031623 00000000006 12263051406 016532 0ustar00fanf2fanf2000000 000000 hello unifdef-2.10/tests/args1.exprc000644 031623 031623 00000000002 12263051406 016323 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/args1.sh000644 031623 031623 00000000050 12263051406 015617 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR args1.c unifdef-2.10/tests/args2.c000644 031623 031623 00000000052 12263051406 015432 0ustar00fanf2fanf2000000 000000 #if defined(FOO) || BAR(arg) hello #endif unifdef-2.10/tests/args2.experr000644 031623 031623 00000000000 12263051406 016506 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/args2.expout000644 031623 031623 00000000052 12263051406 016534 0ustar00fanf2fanf2000000 000000 #if defined(FOO) || BAR(arg) hello #endif unifdef-2.10/tests/args2.exprc000644 031623 031623 00000000002 12263051406 016324 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/args2.sh000644 031623 031623 00000000050 12263051406 015620 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR args2.c unifdef-2.10/tests/blank0d.c000644 031623 031623 00000000201 12263051406 015723 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank0d.experr000644 031623 031623 00000000000 12263051406 017003 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank0d.expout000644 031623 031623 00000000156 12263051406 017036 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif zero unifdef-2.10/tests/blank0d.exprc000644 031623 031623 00000000002 12263051406 016621 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank0d.sh000644 031623 031623 00000000034 12263051406 016117 0ustar00fanf2fanf2000000 000000 unifdef -B -DFOO0 blank0d.c unifdef-2.10/tests/blank0u.c000644 031623 031623 00000000201 12263051406 015744 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/crlf.c000644 031623 031623 00000000332 12263051406 015343 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #elif F3 int f3() { return 0; } #elif F4 int f4() { return 0; } #else int f() { return 0; } #endif \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.10/tests/blank0u.experr000644 031623 031623 00000000000 12263051406 017024 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank0u.expout000644 031623 031623 00000000151 12263051406 017052 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif unifdef-2.10/tests/blank0u.exprc000644 031623 031623 00000000002 12263051406 016642 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank0u.sh000644 031623 031623 00000000034 12263051406 016140 0ustar00fanf2fanf2000000 000000 unifdef -B -UFOO0 blank0u.c unifdef-2.10/tests/blank1d.c000644 031623 031623 00000000201 12263051406 015724 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank1d.experr000644 031623 031623 00000000000 12263051406 017004 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank1d.expout000644 031623 031623 00000000156 12263051406 017037 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif one #ifdef FOO0 zero #endif unifdef-2.10/tests/blank1d.exprc000644 031623 031623 00000000002 12263051406 016622 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank1d.sh000644 031623 031623 00000000034 12263051406 016120 0ustar00fanf2fanf2000000 000000 unifdef -B -DFOO1 blank1d.c unifdef-2.10/tests/blank1u.c000644 031623 031623 00000000201 12263051406 015745 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank1u.experr000644 031623 031623 00000000000 12263051406 017025 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank1u.expout000644 031623 031623 00000000151 12263051406 017053 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank1u.exprc000644 031623 031623 00000000002 12263051406 016643 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank1u.sh000644 031623 031623 00000000034 12263051406 016141 0ustar00fanf2fanf2000000 000000 unifdef -B -UFOO1 blank1u.c unifdef-2.10/tests/blank2d.c000644 031623 031623 00000000201 12263051406 015725 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank2d.experr000644 031623 031623 00000000000 12263051406 017005 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank2d.expout000644 031623 031623 00000000156 12263051406 017040 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif two #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank2d.exprc000644 031623 031623 00000000002 12263051406 016623 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank2d.sh000644 031623 031623 00000000034 12263051406 016121 0ustar00fanf2fanf2000000 000000 unifdef -B -DFOO2 blank2d.c unifdef-2.10/tests/blank2u.c000644 031623 031623 00000000201 12263051406 015746 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank2u.experr000644 031623 031623 00000000000 12263051406 017026 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank2u.expout000644 031623 031623 00000000150 12263051406 017053 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/empty.c000644 031623 031623 00000000000 12263051406 015543 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank2u.exprc000644 031623 031623 00000000002 12263051406 016644 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank2u.sh000644 031623 031623 00000000034 12263051406 016142 0ustar00fanf2fanf2000000 000000 unifdef -B -UFOO2 blank2u.c unifdef-2.10/tests/blank3d.c000644 031623 031623 00000000201 12263051406 015726 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank3d.experr000644 031623 031623 00000000000 12263051406 017006 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank3d.expout000644 031623 031623 00000000156 12263051406 017041 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif three #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank3d.exprc000644 031623 031623 00000000002 12263051406 016624 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank3d.sh000644 031623 031623 00000000034 12263051406 016122 0ustar00fanf2fanf2000000 000000 unifdef -B -DFOO3 blank3d.c unifdef-2.10/tests/blank3u.c000644 031623 031623 00000000201 12263051406 015747 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank3u.experr000644 031623 031623 00000000000 12263051406 017027 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank3u.expout000644 031623 031623 00000000145 12263051406 017060 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank3u.exprc000644 031623 031623 00000000002 12263051406 016645 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank3u.sh000644 031623 031623 00000000034 12263051406 016143 0ustar00fanf2fanf2000000 000000 unifdef -B -UFOO3 blank3u.c unifdef-2.10/tests/blank4d.c000644 031623 031623 00000000201 12263051406 015727 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank4d.experr000644 031623 031623 00000000000 12263051406 017007 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank4d.expout000644 031623 031623 00000000156 12263051406 017042 0ustar00fanf2fanf2000000 000000 four #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank4d.exprc000644 031623 031623 00000000002 12263051406 016625 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank4d.sh000644 031623 031623 00000000034 12263051406 016123 0ustar00fanf2fanf2000000 000000 unifdef -B -DFOO4 blank4d.c unifdef-2.10/tests/blank4u.c000644 031623 031623 00000000201 12263051406 015750 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank4u.experr000644 031623 031623 00000000000 12263051406 017030 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/blank4u.expout000644 031623 031623 00000000145 12263051406 017061 0ustar00fanf2fanf2000000 000000 #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.10/tests/blank4u.exprc000644 031623 031623 00000000002 12263051406 016646 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/blank4u.sh000644 031623 031623 00000000034 12263051406 016144 0ustar00fanf2fanf2000000 000000 unifdef -B -UFOO4 blank4u.c unifdef-2.10/tests/broken2.h000644 031623 031623 00000000031 12263051406 015760 0ustar00fanf2fanf2000000 000000 #define /* nothing */ unifdef-2.10/tests/broken3.h000644 031623 031623 00000000024 12263051406 015763 0ustar00fanf2fanf2000000 000000 #undef &%^$&%$##@^$ unifdef-2.10/tests/broken4.h000644 031623 031623 00000000032 12263051406 015763 0ustar00fanf2fanf2000000 000000 #define FOO \ bar unifdef-2.10/tests/crlf-a.experr000644 031623 031623 00000000000 12263051406 016634 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/crlf-a.expout000644 031623 031623 00000000106 12263051406 016662 0ustar00fanf2fanf2000000 000000 int f1() { return 0; } \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.10/tests/crlf-a.exprc000644 031623 031623 00000000002 12263051406 016452 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/crlf-a.sh000644 031623 031623 00000000024 12263051406 015747 0ustar00fanf2fanf2000000 000000 unifdef -DF1 crlf.c unifdef-2.10/tests/crlf-b.experr000644 031623 031623 00000000000 12263051406 016635 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/crlf-b.expout000644 031623 031623 00000000165 12263051406 016670 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #else int f2() { return 0; } #endif \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.10/tests/crlf-b.exprc000644 031623 031623 00000000002 12263051406 016453 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/crlf-b.sh000644 031623 031623 00000000024 12263051406 015750 0ustar00fanf2fanf2000000 000000 unifdef -DF2 crlf.c unifdef-2.10/tests/crlf-c.experr000644 031623 031623 00000000000 12263051406 016636 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/crlf-c.expout000644 031623 031623 00000000227 12263051406 016670 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #else int f3() { return 0; } #endif \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.10/tests/crlf-c.exprc000644 031623 031623 00000000002 12263051406 016454 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/crlf-c.sh000644 031623 031623 00000000024 12263051406 015751 0ustar00fanf2fanf2000000 000000 unifdef -DF3 crlf.c unifdef-2.10/tests/crlf-d.experr000644 031623 031623 00000000000 12263051406 016637 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/crlf-d.expout000644 031623 031623 00000000271 12263051406 016670 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #elif F3 int f3() { return 0; } #else int f4() { return 0; } #endif \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.10/tests/crlf-d.exprc000644 031623 031623 00000000002 12263051406 016455 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/crlf-d.sh000644 031623 031623 00000000024 12263051406 015752 0ustar00fanf2fanf2000000 000000 unifdef -DF4 crlf.c unifdef-2.10/tests/debian-603860.c000644 031623 031623 00000000126 12263051406 016404 0ustar00fanf2fanf2000000 000000 #ifdef FOO int a; #endif char foo[] = "rm -rf /*"; #ifdef FOO int b; #endif /* baz */ unifdef-2.10/tests/debian-603860.experr000644 031623 031623 00000000000 12263051406 017456 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/debian-603860.expout000644 031623 031623 00000000044 12263051406 017505 0ustar00fanf2fanf2000000 000000 char foo[] = "rm -rf /*"; /* baz */ unifdef-2.10/tests/if1-k.c000644 031623 031623 00000001143 12263051406 015325 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is commented out. "#if 1 else" */ #endif #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/debian-603860.exprc000644 031623 031623 00000000002 12263051406 017274 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/debian-603860.sh000644 031623 031623 00000000036 12263051406 016574 0ustar00fanf2fanf2000000 000000 unifdef -UFOO debian-603860.c unifdef-2.10/tests/defundef-broken2.experr000644 031623 031623 00000000126 12263051406 020621 0ustar00fanf2fanf2000000 000000 unifdef: broken2.h: 1: missing macro name in #define unifdef: output may be truncated unifdef-2.10/tests/defundef-broken2.expout000644 031623 031623 00000000000 12263051406 020627 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/defundef-broken2.exprc000644 031623 031623 00000000002 12263051406 020426 0ustar00fanf2fanf2000000 000000 2 unifdef-2.10/tests/defundef-broken2.sh000644 031623 031623 00000000033 12263051406 017723 0ustar00fanf2fanf2000000 000000 unifdef -f broken2.h if1.c unifdef-2.10/tests/defundef-broken3.experr000644 031623 031623 00000000125 12263051406 020621 0ustar00fanf2fanf2000000 000000 unifdef: broken3.h: 1: missing macro name in #undef unifdef: output may be truncated unifdef-2.10/tests/defundef-broken3.expout000644 031623 031623 00000000000 12263051406 020630 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/defundef-broken3.exprc000644 031623 031623 00000000002 12263051406 020427 0ustar00fanf2fanf2000000 000000 2 unifdef-2.10/tests/defundef-broken3.sh000644 031623 031623 00000000033 12263051406 017724 0ustar00fanf2fanf2000000 000000 unifdef -f broken3.h if1.c unifdef-2.10/tests/defundef-broken4.experr000644 031623 031623 00000000135 12263051406 020623 0ustar00fanf2fanf2000000 000000 unifdef: broken4.h: 1: Obfuscated preprocessor control line unifdef: output may be truncated unifdef-2.10/tests/defundef-broken4.expout000644 031623 031623 00000000000 12263051406 020631 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/defundef-broken4.exprc000644 031623 031623 00000000002 12263051406 020430 0ustar00fanf2fanf2000000 000000 2 unifdef-2.10/tests/defundef-broken4.sh000644 031623 031623 00000000033 12263051406 017725 0ustar00fanf2fanf2000000 000000 unifdef -f broken4.h if1.c unifdef-2.10/tests/defundef-funlike.experr000644 031623 031623 00000000000 12263051406 020703 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/defundef-funlike.expout000644 031623 031623 00000000333 12263051406 020733 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/empty.exprc000644 031623 031623 00000000002 12263051406 016444 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/defundef-funlike.exprc000644 031623 031623 00000000002 12263051406 020521 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/defundef-funlike.sh000644 031623 031623 00000000036 12263051406 020021 0ustar00fanf2fanf2000000 000000 unifdef -f funlike.h small1.c unifdef-2.10/tests/defundef-undefdef.experr000644 031623 031623 00000000000 12263051406 021026 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/defundef-undefdef.expout000644 031623 031623 00000000027 12263051406 021056 0ustar00fanf2fanf2000000 000000 int f1() { return 0; } unifdef-2.10/tests/defundef-undefdef.exprc000644 031623 031623 00000000002 12263051406 020644 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/defundef-undefdef.sh000644 031623 031623 00000000027 12263051406 020144 0ustar00fanf2fanf2000000 000000 unifdef -f if6.h if6.c unifdef-2.10/tests/empty.experr000644 031623 031623 00000000000 12263051406 016626 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/empty.expout000644 031623 031623 00000000000 12263051406 016645 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/empty.sh000644 031623 031623 00000000050 12263051406 015740 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR empty.c unifdef-2.10/tests/exitmode0a.experr000644 031623 031623 00000000000 12263051406 017527 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/exitmode0a.expout000644 031623 031623 00000000375 12263051406 017565 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/exitmode0a.exprc000644 031623 031623 00000000002 12263051406 017345 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/exitmode0a.sh000644 031623 031623 00000000052 12263051406 016643 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR -x0 if1.c unifdef-2.10/tests/exitmode0b.experr000644 031623 031623 00000000000 12263051406 017530 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/exitmode0b.expout000644 031623 031623 00000000567 12263051406 017571 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/exitmode0b.exprc000644 031623 031623 00000000002 12263051406 017346 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/exitmode0b.sh000644 031623 031623 00000000022 12263051406 016641 0ustar00fanf2fanf2000000 000000 unifdef -x0 if1.c unifdef-2.10/tests/exitmode1a.experr000644 031623 031623 00000000000 12263051406 017530 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/exitmode1a.expout000644 031623 031623 00000000375 12263051406 017566 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/exitmode1a.exprc000644 031623 031623 00000000002 12263051406 017346 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/exitmode1a.sh000644 031623 031623 00000000052 12263051406 016644 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR -x1 if1.c unifdef-2.10/tests/exitmode1b.experr000644 031623 031623 00000000000 12263051406 017531 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/exitmode1b.expout000644 031623 031623 00000000567 12263051406 017572 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/exitmode1b.exprc000644 031623 031623 00000000002 12263051406 017347 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/exitmode1b.sh000644 031623 031623 00000000022 12263051406 016642 0ustar00fanf2fanf2000000 000000 unifdef -x1 if1.c unifdef-2.10/tests/exitmode2a.experr000644 031623 031623 00000000000 12263051406 017531 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/exitmode2a.expout000644 031623 031623 00000000375 12263051406 017567 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/exitmode2a.exprc000644 031623 031623 00000000002 12263051406 017347 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/exitmode2a.sh000644 031623 031623 00000000052 12263051406 016645 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR -x2 if1.c unifdef-2.10/tests/exitmode2b.experr000644 031623 031623 00000000000 12263051406 017532 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/exitmode2b.expout000644 031623 031623 00000000567 12263051406 017573 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/exitmode2b.exprc000644 031623 031623 00000000002 12263051406 017350 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/exitmode2b.sh000644 031623 031623 00000000022 12263051406 016643 0ustar00fanf2fanf2000000 000000 unifdef -x2 if1.c unifdef-2.10/tests/funlike.h000644 031623 031623 00000000031 12263051406 016053 0ustar00fanf2fanf2000000 000000 #define FOO(a,b,c) a+b+c unifdef-2.10/tests/if1-a.experr000644 031623 031623 00000000000 12263051406 016365 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if1-a.expout000644 031623 031623 00000000375 12263051406 016423 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/if1-a.exprc000644 031623 031623 00000000002 12263051406 016203 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if1-a.sh000644 031623 031623 00000000054 12263051406 015503 0ustar00fanf2fanf2000000 000000 unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if1.c unifdef-2.10/tests/if1-f.experr000644 031623 031623 00000000000 12263051406 016372 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if1-f.expout000644 031623 031623 00000000375 12263051406 016430 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/if1-f.exprc000644 031623 031623 00000000002 12263051406 016210 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if1-f.sh000644 031623 031623 00000000027 12263051406 015510 0ustar00fanf2fanf2000000 000000 unifdef -f if1.h if1.c unifdef-2.10/tests/if1-k.experr000644 031623 031623 00000000000 12263051406 016377 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if1-k.expout000644 031623 031623 00000000737 12263051406 016437 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/if1-k.exprc000644 031623 031623 00000000002 12263051406 016215 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if1-k.sh000644 031623 031623 00000000023 12263051406 015511 0ustar00fanf2fanf2000000 000000 unifdef -k if1-k.c unifdef-2.10/tests/if1-kDU.c000644 031623 031623 00000001143 12263051406 015556 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is commented out. "#if 1 else" */ #endif #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/if1-kDU.experr000644 031623 031623 00000000000 12263051406 016630 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if1-kDU.expout000644 031623 031623 00000000545 12263051406 016665 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/if1-kDU.exprc000644 031623 031623 00000000002 12263051406 016446 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if1-kDU.sh000644 031623 031623 00000000055 12263051406 015747 0ustar00fanf2fanf2000000 000000 unifdef -k -DFOO=1 -DFOOB=42 -UBAR if1-kDU.c unifdef-2.10/tests/if1.c000644 031623 031623 00000000567 12263051406 015106 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/if1.experr000644 031623 031623 00000000000 12263051406 016147 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if1.expout000644 031623 031623 00000000375 12263051406 016205 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/if1.exprc000644 031623 031623 00000000002 12263051406 015765 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if1.h000644 031623 031623 00000000051 12263051406 015077 0ustar00fanf2fanf2000000 000000 #define FOO 1 #define FOOB 42 #undef BAR unifdef-2.10/tests/if1.sh000644 031623 031623 00000000046 12263051406 015266 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR if1.c unifdef-2.10/tests/if1a.experr000644 031623 031623 00000000000 12263051406 016310 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if1a.expout000644 031623 031623 00000000527 12263051406 016345 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/if1a.exprc000644 031623 031623 00000000002 12263051406 016126 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if1a.sh000644 031623 031623 00000000024 12263051406 015423 0ustar00fanf2fanf2000000 000000 unifdef -UBAR if1.c unifdef-2.10/tests/if2-a.experr000644 031623 031623 00000000000 12263051406 016366 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if2-k.c000644 031623 031623 00000000775 12263051406 015340 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if defined(FOO) int foo() { return 0; } #else #error FOO not defined #endif int main() { foo(); } unifdef-2.10/tests/if2-a.expout000644 031623 031623 00000000333 12263051406 016416 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/if2-a.exprc000644 031623 031623 00000000002 12263051406 016204 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if2-a.sh000644 031623 031623 00000000054 12263051406 015504 0ustar00fanf2fanf2000000 000000 unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if2.c unifdef-2.10/tests/if2-k.experr000644 031623 031623 00000000000 12263051406 016400 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if2-k.expout000644 031623 031623 00000000570 12263051406 016433 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ #if defined(FOO) int foo() { return 0; } #else #error FOO not defined #endif int main() { foo(); } unifdef-2.10/tests/if2-k.exprc000644 031623 031623 00000000002 12263051406 016216 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if2-k.sh000644 031623 031623 00000000023 12263051406 015512 0ustar00fanf2fanf2000000 000000 unifdef -k if2-k.c unifdef-2.10/tests/if2-kDU.c000644 031623 031623 00000000775 12263051406 015571 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if defined(FOO) int foo() { return 0; } #else #error FOO not defined #endif int main() { foo(); } unifdef-2.10/tests/if2-kDU.experr000644 031623 031623 00000000000 12263051406 016631 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if2-kDU.expout000644 031623 031623 00000000503 12263051406 016660 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/if2-kDU.exprc000644 031623 031623 00000000002 12263051406 016447 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if2-kDU.sh000644 031623 031623 00000000055 12263051406 015750 0ustar00fanf2fanf2000000 000000 unifdef -k -DFOO=1 -DFOOB=42 -UBAR if2-kDU.c unifdef-2.10/tests/if2.c000644 031623 031623 00000000420 12263051406 015073 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if defined(FOO) int foo() { return 0; } #else #error FOO not defined #endif int main() { foo(); } unifdef-2.10/tests/if2.experr000644 031623 031623 00000000000 12263051406 016150 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if2.expout000644 031623 031623 00000000333 12263051406 016200 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/if2.exprc000644 031623 031623 00000000002 12263051406 015766 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if2.sh000644 031623 031623 00000000046 12263051406 015267 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR if2.c unifdef-2.10/tests/if3-a.experr000644 031623 031623 00000000000 12263051406 016367 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if3-a.expout000644 031623 031623 00000000333 12263051406 016417 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/if3-a.exprc000644 031623 031623 00000000002 12263051406 016205 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if3-a.sh000644 031623 031623 00000000054 12263051406 015505 0ustar00fanf2fanf2000000 000000 unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if3.c unifdef-2.10/tests/if3-k.c000644 031623 031623 00000000773 12263051406 015337 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if ! defined(BAR) int foo() { return 0; } #else #error BAR defined #endif int main() { foo(); } unifdef-2.10/tests/if3-k.experr000644 031623 031623 00000000000 12263051406 016401 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if3-k.expout000644 031623 031623 00000000566 12263051406 016441 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ #if ! defined(BAR) int foo() { return 0; } #else #error BAR defined #endif int main() { foo(); } unifdef-2.10/tests/if3-k.exprc000644 031623 031623 00000000002 12263051406 016217 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if3-k.sh000644 031623 031623 00000000023 12263051406 015513 0ustar00fanf2fanf2000000 000000 unifdef -k if3-k.c unifdef-2.10/tests/if3-kDU.c000644 031623 031623 00000000773 12263051406 015570 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if ! defined(BAR) int foo() { return 0; } #else #error BAR defined #endif int main() { foo(); } unifdef-2.10/tests/if3-kDU.experr000644 031623 031623 00000000000 12263051406 016632 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if3-kDU.expout000644 031623 031623 00000000503 12263051406 016661 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/if3-kDU.exprc000644 031623 031623 00000000002 12263051406 016450 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if3-kDU.sh000644 031623 031623 00000000055 12263051406 015751 0ustar00fanf2fanf2000000 000000 unifdef -k -DFOO=1 -DFOOB=42 -UBAR if3-kDU.c unifdef-2.10/tests/if3.c000644 031623 031623 00000000416 12263051406 015101 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if ! defined(BAR) int foo() { return 0; } #else #error BAR defined #endif int main() { foo(); } unifdef-2.10/tests/if3.experr000644 031623 031623 00000000000 12263051406 016151 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if3.expout000644 031623 031623 00000000333 12263051406 016201 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/if3.exprc000644 031623 031623 00000000002 12263051406 015767 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if3.sh000644 031623 031623 00000000046 12263051406 015270 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR if3.c unifdef-2.10/tests/if4-a.experr000644 031623 031623 00000000000 12263051406 016370 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if4-a.expout000644 031623 031623 00000000511 12263051406 016416 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo1() { return 0; } int foo2() { return 0; } int foo3() { return 0; } int foo4() { return 0; } int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4-a.exprc000644 031623 031623 00000000002 12263051406 016206 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if4-a.sh000644 031623 031623 00000000054 12263051406 015506 0ustar00fanf2fanf2000000 000000 unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if4.c unifdef-2.10/tests/if4-k.c000644 031623 031623 00000001560 12263051406 015333 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if defined(FOO) || defined(FOOB) int foo1() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOOB) || defined(FOO) int foo2() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOO) && defined(FOOB) int foo3() { return 0; } #else #error FOO and FOOB not defined #endif #if defined(FOOB) && defined(FOO) int foo4() { return 0; } #else #error FOO and FOOB not defined #endif int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4-k.experr000644 031623 031623 00000000000 12263051406 016402 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if4-k.expout000644 031623 031623 00000001353 12263051406 016435 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ #if defined(FOO) || defined(FOOB) int foo1() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOOB) || defined(FOO) int foo2() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOO) && defined(FOOB) int foo3() { return 0; } #else #error FOO and FOOB not defined #endif #if defined(FOOB) && defined(FOO) int foo4() { return 0; } #else #error FOO and FOOB not defined #endif int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4-k.exprc000644 031623 031623 00000000002 12263051406 016220 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if4-k.sh000644 031623 031623 00000000023 12263051406 015514 0ustar00fanf2fanf2000000 000000 unifdef -k if4-k.c unifdef-2.10/tests/if4-kDU.c000644 031623 031623 00000001560 12263051406 015564 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if defined(FOO) || defined(FOOB) int foo1() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOOB) || defined(FOO) int foo2() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOO) && defined(FOOB) int foo3() { return 0; } #else #error FOO and FOOB not defined #endif #if defined(FOOB) && defined(FOO) int foo4() { return 0; } #else #error FOO and FOOB not defined #endif int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4-kDU.experr000644 031623 031623 00000000000 12263051406 016633 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if4-kDU.expout000644 031623 031623 00000000661 12263051406 016667 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ int foo1() { return 0; } int foo2() { return 0; } int foo3() { return 0; } int foo4() { return 0; } int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4-kDU.exprc000644 031623 031623 00000000002 12263051406 016451 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if4-kDU.sh000644 031623 031623 00000000055 12263051406 015752 0ustar00fanf2fanf2000000 000000 unifdef -k -DFOO=1 -DFOOB=42 -UBAR if4-kDU.c unifdef-2.10/tests/if4.c000644 031623 031623 00000001203 12263051406 015075 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if defined(FOO) || defined(FOOB) int foo1() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOOB) || defined(FOO) int foo2() { return 0; } #else #error FOO or FOOB not defined #endif #if defined(FOO) && defined(FOOB) int foo3() { return 0; } #else #error FOO and FOOB not defined #endif #if defined(FOOB) && defined(FOO) int foo4() { return 0; } #else #error FOO and FOOB not defined #endif int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4.experr000644 031623 031623 00000000000 12263051406 016152 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if4.expout000644 031623 031623 00000000511 12263051406 016200 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo1() { return 0; } int foo2() { return 0; } int foo3() { return 0; } int foo4() { return 0; } int main() { foo1(); foo2(); foo3(); foo4(); } unifdef-2.10/tests/if4.exprc000644 031623 031623 00000000002 12263051406 015770 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if4.sh000644 031623 031623 00000000046 12263051406 015271 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR if4.c unifdef-2.10/tests/if5-a.experr000644 031623 031623 00000000000 12263051406 016371 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if5-a.expout000644 031623 031623 00000000621 12263051406 016421 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo1() { return 0; } int foo2() { return 0; } int foo3() { return 0; } int foo4() { return 0; } int foo5() { return 0; } int foo6() { return 0; } int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5-a.exprc000644 031623 031623 00000000002 12263051406 016207 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if5-a.sh000644 031623 031623 00000000054 12263051406 015507 0ustar00fanf2fanf2000000 000000 unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if5.c unifdef-2.10/tests/if5-k.c000644 031623 031623 00000001771 12263051406 015340 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if FOOB == 42 int foo1() { return 0; } #else #error FOOB not 42 #endif #if FOOB != 42 #error FOO is 2 #else int foo2() { return 0; } #endif #if FOOB == 42 || FOO == 1 intx foo3() { return 0; } #else #error FOO not 1 or BAR not 1 #endif #if FOOB != 42 && FOO != 1 #error FOOB not 42 and FOO not 1 #else int foo4() { return 0; } #endif #if FOOB == 42 || FOO != 1 int foo5() { return 0; } #else #error FOOB is 42 or FOO is not 1 #endif #if FOO != 1 || FOOB != 42 #error FOO is 1 or FOOB is 42 #else int foo6() { return 0; } #endif int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5-k.experr000644 031623 031623 00000000000 12263051406 016403 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if5-k.expout000644 031623 031623 00000001564 12263051406 016442 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ #if FOOB == 42 int foo1() { return 0; } #else #error FOOB not 42 #endif #if FOOB != 42 #error FOO is 2 #else int foo2() { return 0; } #endif #if FOOB == 42 || FOO == 1 intx foo3() { return 0; } #else #error FOO not 1 or BAR not 1 #endif #if FOOB != 42 && FOO != 1 #error FOOB not 42 and FOO not 1 #else int foo4() { return 0; } #endif #if FOOB == 42 || FOO != 1 int foo5() { return 0; } #else #error FOOB is 42 or FOO is not 1 #endif #if FOO != 1 || FOOB != 42 #error FOO is 1 or FOOB is 42 #else int foo6() { return 0; } #endif int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5-k.exprc000644 031623 031623 00000000002 12263051406 016221 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if5-k.sh000644 031623 031623 00000000023 12263051406 015515 0ustar00fanf2fanf2000000 000000 unifdef -k if5-k.c unifdef-2.10/tests/if5-kDU.c000644 031623 031623 00000001771 12263051406 015571 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if 0 /* This code is commented out. "#if 0 then" */ #else /* This code is passed through. "#if 0 else" */ #endif #if 1 /* This code is passed through. "#if 1 then" */ #else /* This code is passed through. "#if 1 else" */ #endif #if FOOB == 42 int foo1() { return 0; } #else #error FOOB not 42 #endif #if FOOB != 42 #error FOO is 2 #else int foo2() { return 0; } #endif #if FOOB == 42 || FOO == 1 intx foo3() { return 0; } #else #error FOO not 1 or BAR not 1 #endif #if FOOB != 42 && FOO != 1 #error FOOB not 42 and FOO not 1 #else int foo4() { return 0; } #endif #if FOOB == 42 || FOO != 1 int foo5() { return 0; } #else #error FOOB is 42 or FOO is not 1 #endif #if FOO != 1 || FOOB != 42 #error FOO is 1 or FOOB is 42 #else int foo6() { return 0; } #endif int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5-kDU.experr000644 031623 031623 00000000000 12263051406 016634 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if5-kDU.expout000644 031623 031623 00000000772 12263051406 016673 0ustar00fanf2fanf2000000 000000 /* Copyright 2004, 2008 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include /* This code is passed through. "#if 0 else" */ /* This code is passed through. "#if 1 then" */ int foo1() { return 0; } int foo2() { return 0; } intx foo3() { return 0; } int foo4() { return 0; } int foo5() { return 0; } int foo6() { return 0; } int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5-kDU.exprc000644 031623 031623 00000000002 12263051406 016452 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if5-kDU.sh000644 031623 031623 00000000055 12263051406 015753 0ustar00fanf2fanf2000000 000000 unifdef -k -DFOO=1 -DFOOB=42 -UBAR if5-kDU.c unifdef-2.10/tests/if5.c000644 031623 031623 00000001413 12263051406 015101 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOOB == 42 int foo1() { return 0; } #else #error FOOB not 42 #endif #if FOOB != 42 #error FOO is 2 #else int foo2() { return 0; } #endif #if FOOB == 42 || FOO == 1 int foo3() { return 0; } #else #error FOO not 1 or BAR not 1 #endif #if FOOB != 42 && FOO != 1 #error FOOB not 42 and FOO not 1 #else int foo4() { return 0; } #endif #if FOOB == 42 || FOO != 1 int foo5() { return 0; } #else #error FOOB is 42 or FOO is not 1 #endif #if FOO != 1 || FOOB != 42 #error FOO is 1 or FOOB is 42 #else int foo6() { return 0; } #endif int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5.experr000644 031623 031623 00000000000 12263051406 016153 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if5.expout000644 031623 031623 00000000621 12263051406 016203 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo1() { return 0; } int foo2() { return 0; } int foo3() { return 0; } int foo4() { return 0; } int foo5() { return 0; } int foo6() { return 0; } int main() { foo1(); foo2(); foo3(); foo4(); foo5(); foo6(); } unifdef-2.10/tests/if5.sh000644 031623 031623 00000000046 12263051406 015272 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR if5.c unifdef-2.10/tests/if5.exprc000644 031623 031623 00000000002 12263051406 015771 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if6.c000644 031623 031623 00000000241 12263051406 015100 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #elif F3 int f3() { return 0; } #elif F4 int f4() { return 0; } #else int f() { return 0; } #endif unifdef-2.10/tests/if6.h000644 031623 031623 00000000041 12263051406 015103 0ustar00fanf2fanf2000000 000000 #undef gruntfuttock #define F1 1 unifdef-2.10/tests/if6a.experr000644 031623 031623 00000000000 12263051406 016315 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if6a.expout000644 031623 031623 00000000027 12263051406 016345 0ustar00fanf2fanf2000000 000000 int f1() { return 0; } unifdef-2.10/tests/if6a.exprc000644 031623 031623 00000000002 12263051406 016133 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if6a.sh000644 031623 031623 00000000023 12263051406 015427 0ustar00fanf2fanf2000000 000000 unifdef -DF1 if6.c unifdef-2.10/tests/if6b.experr000644 031623 031623 00000000000 12263051406 016316 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if6b.expout000644 031623 031623 00000000102 12263051406 016340 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #else int f2() { return 0; } #endif unifdef-2.10/tests/if6b.exprc000644 031623 031623 00000000002 12263051406 016134 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if6b.sh000644 031623 031623 00000000023 12263051406 015430 0ustar00fanf2fanf2000000 000000 unifdef -DF2 if6.c unifdef-2.10/tests/if6c.experr000644 031623 031623 00000000000 12263051406 016317 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if6c.expout000644 031623 031623 00000000142 12263051406 016345 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #else int f3() { return 0; } #endif unifdef-2.10/tests/if6c.exprc000644 031623 031623 00000000002 12263051406 016135 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if6c.sh000644 031623 031623 00000000023 12263051406 015431 0ustar00fanf2fanf2000000 000000 unifdef -DF3 if6.c unifdef-2.10/tests/if6d.experr000644 031623 031623 00000000000 12263051406 016320 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/if6d.expout000644 031623 031623 00000000202 12263051406 016343 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #elif F3 int f3() { return 0; } #else int f4() { return 0; } #endif unifdef-2.10/tests/if6d.exprc000644 031623 031623 00000000002 12263051406 016136 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/if6d.sh000644 031623 031623 00000000023 12263051406 015432 0ustar00fanf2fanf2000000 000000 unifdef -DF4 if6.c unifdef-2.10/tests/indirect.experr000644 031623 031623 00000000000 12263051406 017271 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/indirect.expout000644 031623 031623 00000000375 12263051406 017327 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/indirect.exprc000644 031623 031623 00000000002 12263051406 017107 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/indirect.sh000644 031623 031623 00000000056 12263051406 016411 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=ZIG -DZIG -DFOOB=42 -UBAR if1.c unifdef-2.10/tests/multi-generic-sh000644 031623 031623 00000000326 12263051406 017353 0ustar00fanf2fanf2000000 000000 mfiles="" for f in $files do rm -f m$f [ -f $f ] && cp $f m$f mfiles="$mfiles m$f" done unifdef -M~ $opts $mfiles e=$? for f in $mfiles do diff -u $f~ $f | sed '/^[+-]\{3\} /s/ .*//' rm -f $f~ $f done exit $e unifdef-2.10/tests/multi.experr000644 031623 031623 00000000000 12263051406 016622 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/multi.expout000644 031623 031623 00000000722 12263051406 016654 0ustar00fanf2fanf2000000 000000 --- mif1.c~ +++ mif1.c @@ -5,19 +5,9 @@ #include #include -#if FOO int foo() { return 0; } -#else -#error FOO not defined -#endif -#if BAR -int foo() { return 0; } -#elif FOO int bar() { return 0; } -#else -#error FOO not defined -#endif int main() { --- mif2.c~ +++ mif2.c @@ -5,11 +5,7 @@ #include #include -#if defined(FOO) int foo() { return 0; } -#else -#error FOO not defined -#endif int main() { unifdef-2.10/tests/multi.exprc000644 031623 031623 00000000002 12263051406 016440 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/multi.sh000644 031623 031623 00000000110 12263051406 015731 0ustar00fanf2fanf2000000 000000 opts="-DFOO=1 -DFOOB=42 -UBAR" files="if1.c if2.c" . ./multi-generic-sh unifdef-2.10/tests/multilnnum.experr000644 031623 031623 00000000000 12263051406 017674 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/multilnnum.expout000644 031623 031623 00000001103 12263051406 017720 0ustar00fanf2fanf2000000 000000 --- mif1.c~ +++ mif1.c @@ -5,19 +5,13 @@ #include #include -#if FOO +#line 9 "mif1.c" int foo() { return 0; } -#else -#error FOO not defined -#endif +#line 13 "mif1.c" -#if BAR -int foo() { return 0; } -#elif FOO +#line 17 "mif1.c" int bar() { return 0; } -#else -#error FOO not defined -#endif +#line 21 "mif1.c" int main() { --- mif2.c~ +++ mif2.c @@ -5,11 +5,9 @@ #include #include -#if defined(FOO) +#line 9 "mif2.c" int foo() { return 0; } -#else -#error FOO not defined -#endif +#line 13 "mif2.c" int main() { unifdef-2.10/tests/multilnnum.exprc000644 031623 031623 00000000002 12263051406 017512 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/multilnnum.sh000644 031623 031623 00000000113 12263051406 017006 0ustar00fanf2fanf2000000 000000 opts="-DFOO=1 -DFOOB=42 -UBAR -n" files="if1.c if2.c" . ./multi-generic-sh unifdef-2.10/tests/multimissing.experr000644 031623 031623 00000000302 12263051406 020221 0ustar00fanf2fanf2000000 000000 unifdef: can't open mifmissing.c: No such file or directory diff: mifmissing.c~: No such file or directory diff: mifmissing.c: No such file or directory diff: mif2.c~: No such file or directory unifdef-2.10/tests/multimissing.expout000644 031623 031623 00000000434 12263051406 020246 0ustar00fanf2fanf2000000 000000 --- mif1.c~ +++ mif1.c @@ -5,19 +5,9 @@ #include #include -#if FOO int foo() { return 0; } -#else -#error FOO not defined -#endif -#if BAR -int foo() { return 0; } -#elif FOO int bar() { return 0; } -#else -#error FOO not defined -#endif int main() { unifdef-2.10/tests/multimissing.exprc000644 031623 031623 00000000002 12263051406 020032 0ustar00fanf2fanf2000000 000000 2 unifdef-2.10/tests/multimissing.sh000644 031623 031623 00000000124 12263051406 017330 0ustar00fanf2fanf2000000 000000 opts="-DFOO=1 -DFOOB=42 -UBAR" files="if1.c ifmissing.c if2.c" . ./multi-generic-sh unifdef-2.10/tests/multinewline.experr000644 031623 031623 00000000000 12263051406 020204 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/multinewline.expout000644 031623 031623 00000001050 12263051406 020231 0ustar00fanf2fanf2000000 000000 --- mcrlf.c~ +++ mcrlf.c @@ -1,14 +1,4 @@ -#if F1 int f1() { return 0; } -#elif F2 -int f2() { return 0; } -#elif F3 -int f3() { return 0; } -#elif F4 -int f4() { return 0; } -#else -int f() { return 0; } -#endif \/ /\ comment --- mif1.c~ +++ mif1.c @@ -5,18 +5,12 @@ #include #include -#if FOO int foo() { return 0; } -#else -#error FOO not defined -#endif #if BAR int foo() { return 0; } -#elif FOO -int bar() { return 0; } #else -#error FOO not defined +int bar() { return 0; } #endif int main() unifdef-2.10/tests/multinewline.exprc000644 031623 031623 00000000002 12263051406 020022 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/multinewline.sh000644 031623 031623 00000000074 12263051406 017324 0ustar00fanf2fanf2000000 000000 opts="-DFOO -DF1" files="crlf.c if1.c" . ./multi-generic-sh unifdef-2.10/tests/none.c000644 031623 031623 00000000232 12263051406 015353 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ int foo() { return 0; } unifdef-2.10/tests/none.experr000644 031623 031623 00000000000 12263051406 016427 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/none.expout000644 031623 031623 00000000232 12263051406 016455 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ int foo() { return 0; } unifdef-2.10/tests/none.exprc000644 031623 031623 00000000002 12263051406 016245 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/none.sh000644 031623 031623 00000000047 12263051406 015547 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR none.c unifdef-2.10/tests/outdir.experr000644 031623 031623 00000000000 12263051406 016776 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/outdir.expout000644 031623 031623 00000000375 12263051406 017034 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/outdir.exprc000644 031623 031623 00000000002 12263051406 016614 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/outdir.sh000644 031623 031623 00000000170 12263051406 016113 0ustar00fanf2fanf2000000 000000 mkdir -p outdir unifdef -DFOO=1 -DFOOB=42 -UBAR -ooutdir/outfile.c if1.c e=$? cat outdir/outfile.c rm -r outdir exit $e unifdef-2.10/tests/outeperm.experr000644 031623 031623 00000000072 12263051406 017341 0ustar00fanf2fanf2000000 000000 unifdef: can't create outdir/outfile.c: Permission denied unifdef-2.10/tests/outeperm.expout000644 031623 031623 00000000000 12263051406 017347 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/outeperm.exprc000644 031623 031623 00000000002 12263051406 017146 0ustar00fanf2fanf2000000 000000 2 unifdef-2.10/tests/outeperm.sh000644 031623 031623 00000000164 12263051406 016450 0ustar00fanf2fanf2000000 000000 mkdir -p outdir chmod 555 outdir unifdef -DFOO=1 -DFOOB=42 -UBAR -ooutdir/outfile.c if1.c e=$? rmdir outdir exit $e unifdef-2.10/tests/outfile.experr000644 031623 031623 00000000000 12263051406 017137 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/outfile.expout000644 031623 031623 00000000375 12263051406 017175 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/outfile.exprc000644 031623 031623 00000000002 12263051406 016755 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/outfile.sh000644 031623 031623 00000000132 12263051406 016252 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR -ooutfile.c if1.c e=$? cat outfile.c rm outfile.c exit $e unifdef-2.10/tests/outperms.experr000644 031623 031623 00000000013 12263051406 017352 0ustar00fanf2fanf2000000 000000 -rw-r----- unifdef-2.10/tests/outperms.expout000644 031623 031623 00000000375 12263051406 017404 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/outperms.exprc000644 031623 031623 00000000002 12263051406 017164 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/outperms.sh000644 031623 031623 00000000211 12263051406 016457 0ustar00fanf2fanf2000000 000000 umask 027 unifdef -DFOO=1 -DFOOB=42 -UBAR -ooutfile.c if1.c e=$? ls -l outfile.c | cut -d' ' -f1 1>&2 cat outfile.c rm outfile.c exit $e unifdef-2.10/tests/overdir.experr000644 031623 031623 00000000000 12263051406 017142 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/overdir.expout000644 031623 031623 00000000375 12263051406 017200 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/overdir.exprc000644 031623 031623 00000000002 12263051406 016760 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/overdir.sh000644 031623 031623 00000000253 12263051406 016261 0ustar00fanf2fanf2000000 000000 mkdir -p overdir cp if1.c overdir/overwrite.c unifdef -DFOO=1 -DFOOB=42 -UBAR -ooverdir/overwrite.c overdir/overwrite.c e=$? cat overdir/overwrite.c rm -r overdir exit $e unifdef-2.10/tests/overenoent.experr000644 031623 031623 00000000073 12263051406 017666 0ustar00fanf2fanf2000000 000000 unifdef: can't create outfile.c: No such file or directory unifdef-2.10/tests/overenoent.expout000644 031623 031623 00000000000 12263051406 017673 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/overin.sh000644 031623 031623 00000000155 12263051406 016112 0ustar00fanf2fanf2000000 000000 cp if1.c overin.c unifdef -DFOO=1 -DFOOB=42 -UBAR -ooverin.c Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/overin.exprc000644 031623 031623 00000000002 12263051406 016610 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/overlnnum.experr000644 031623 031623 00000000000 12263051406 017515 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/overlnnum.expout000644 031623 031623 00000000530 12263051406 017544 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #line 9 "overwrite.c" int foo() { return 0; } #line 13 "overwrite.c" #line 17 "overwrite.c" int bar() { return 0; } #line 21 "overwrite.c" int main() { foo(); bar(); } unifdef-2.10/tests/overlnnum.exprc000644 031623 031623 00000000002 12263051406 017333 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/overlnnum.sh000644 031623 031623 00000000176 12263051406 016640 0ustar00fanf2fanf2000000 000000 cp if1.c overwrite.c unifdef -DFOO=1 -DFOOB=42 -UBAR -n -ooverwrite.c overwrite.c e=$? cat overwrite.c rm overwrite.c exit $e unifdef-2.10/tests/overperms.experr000644 031623 031623 00000000026 12263051406 017522 0ustar00fanf2fanf2000000 000000 -rw-r----- -rw-r----- unifdef-2.10/tests/overperms.expout000644 031623 031623 00000000375 12263051406 017550 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/overperms.exprc000644 031623 031623 00000000002 12263051406 017330 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/overperms.sh000644 031623 031623 00000000306 12263051406 016630 0ustar00fanf2fanf2000000 000000 cp if1.c outfile.c chmod 640 outfile.c ls -l outfile.c | cut -d' ' -f1 1>&2 unifdef -DFOO=1 -DFOOB=42 -UBAR -m outfile.c e=$? ls -l outfile.c | cut -d' ' -f1 1>&2 cat outfile.c rm outfile.c exit $e unifdef-2.10/tests/overwrite.experr000644 031623 031623 00000000000 12263051406 017516 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/overwrite.expout000644 031623 031623 00000000375 12263051406 017554 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int bar() { return 0; } int main() { foo(); bar(); } unifdef-2.10/tests/overwrite.exprc000644 031623 031623 00000000002 12263051406 017334 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/overwrite.sh000644 031623 031623 00000000173 12263051406 016636 0ustar00fanf2fanf2000000 000000 cp if1.c overwrite.c unifdef -DFOO=1 -DFOOB=42 -UBAR -ooverwrite.c overwrite.c e=$? cat overwrite.c rm overwrite.c exit $e unifdef-2.10/tests/recursive.experr000644 031623 031623 00000007155 12263051406 017521 0ustar00fanf2fanf2000000 000000 unifdef: addsym FOO=BAR unifdef: addsym BAR=ZIG unifdef: addsym ZIG=BAR unifdef: addsym QUX=QUX unifdef: findsym BAR=ZIG unifdef: indir... FOO=BAR unifdef: ...ectsym FOO=ZIG unifdef: findsym ZIG=BAR unifdef: indir... BAR=ZIG unifdef: ...ectsym BAR=BAR unifdef: findsym BAR=BAR unifdef: findsym QUX=QUX unifdef: findsym ZIG=BAR unifdef: indir... FOO=ZIG unifdef: ...ectsym FOO=BAR unifdef: findsym BAR=BAR unifdef: findsym BAR=BAR unifdef: findsym QUX=QUX unifdef: findsym BAR=BAR unifdef: findsym BAR=BAR unifdef: findsym BAR=BAR unifdef: findsym QUX=QUX unifdef: parser line 1 state C comment START line unifdef: process line 1 PLAIN -> OUTSIDE depth 0 unifdef: parser line 2 state C comment START line unifdef: process line 2 PLAIN -> OUTSIDE depth 0 unifdef: parser line 3 state NO comment START line unifdef: process line 3 PLAIN -> OUTSIDE depth 0 unifdef: parser line 4 state NO comment START line unifdef: process line 4 PLAIN -> OUTSIDE depth 0 unifdef: parser line 5 state NO comment START line unifdef: process line 5 PLAIN -> OUTSIDE depth 0 unifdef: parser line 6 state NO comment START line unifdef: process line 6 PLAIN -> OUTSIDE depth 0 unifdef: parser line 7 state NO comment START line unifdef: process line 7 PLAIN -> OUTSIDE depth 0 unifdef: eval FOO unifdef: eval0 unifdef: eval1 unifdef: eval2 unifdef: eval3 unifdef: eval4 symbol unifdef: findsym FOO=BAR unifdef: eval = 0 unifdef: parser line 8 state NO comment START line unifdef: process line 8 IF -> PASS_MIDDLE depth 1 unifdef: parser line 9 state NO comment START line unifdef: process line 9 PLAIN -> PASS_MIDDLE depth 1 unifdef: parser line 10 state NO comment START line unifdef: process line 10 ELSE -> PASS_ELSE depth 1 unifdef: parser line 11 state NO comment START line unifdef: process line 11 PLAIN -> PASS_ELSE depth 1 unifdef: parser line 12 state NO comment START line unifdef: process line 12 ENDIF -> OUTSIDE depth 0 unifdef: parser line 13 state NO comment START line unifdef: process line 13 PLAIN -> OUTSIDE depth 0 unifdef: eval BAR unifdef: eval0 unifdef: eval1 unifdef: eval2 unifdef: eval3 unifdef: eval4 symbol unifdef: findsym BAR=BAR unifdef: eval = 0 unifdef: parser line 14 state NO comment START line unifdef: process line 14 IF -> PASS_MIDDLE depth 1 unifdef: parser line 15 state NO comment START line unifdef: process line 15 PLAIN -> PASS_MIDDLE depth 1 unifdef: eval FOO unifdef: eval0 unifdef: eval1 unifdef: eval2 unifdef: eval3 unifdef: eval4 symbol unifdef: findsym FOO=BAR unifdef: eval = 0 unifdef: parser line 16 state NO comment START line unifdef: process line 16 ELIF -> PASS_MIDDLE depth 1 unifdef: parser line 17 state NO comment START line unifdef: process line 17 PLAIN -> PASS_MIDDLE depth 1 unifdef: parser line 18 state NO comment START line unifdef: process line 18 ELSE -> PASS_ELSE depth 1 unifdef: parser line 19 state NO comment START line unifdef: process line 19 PLAIN -> PASS_ELSE depth 1 unifdef: parser line 20 state NO comment START line unifdef: process line 20 ENDIF -> OUTSIDE depth 0 unifdef: parser line 21 state NO comment START line unifdef: process line 21 PLAIN -> OUTSIDE depth 0 unifdef: parser line 22 state NO comment START line unifdef: process line 22 PLAIN -> OUTSIDE depth 0 unifdef: parser line 23 state NO comment START line unifdef: process line 23 PLAIN -> OUTSIDE depth 0 unifdef: parser line 24 state NO comment START line unifdef: process line 24 PLAIN -> OUTSIDE depth 0 unifdef: parser line 25 state NO comment START line unifdef: process line 25 PLAIN -> OUTSIDE depth 0 unifdef: parser line 26 state NO comment START line unifdef: process line 26 PLAIN -> OUTSIDE depth 0 unifdef: process line 27 EOF -> OUTSIDE depth 0 unifdef-2.10/tests/recursive.expout000644 031623 031623 00000000567 12263051406 017540 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #if FOO int foo() { return 0; } #else #error FOO not defined #endif #if BAR int foo() { return 0; } #elif FOO int bar() { return 0; } #else #error FOO not defined #endif int main() { foo(); bar(); } unifdef-2.10/tests/small1.c000644 031623 031623 00000000412 12263051406 015605 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #ifdef FOO int foo() { return 0; } #else #error FOO not defined #endif int main() { foo(); } unifdef-2.10/tests/recursive.exprc000644 031623 031623 00000000002 12263051406 017315 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/recursive.sh000644 031623 031623 00000000071 12263051406 016614 0ustar00fanf2fanf2000000 000000 unifdef -d -DFOO=BAR -DBAR=ZIG -DZIG=BAR -DQUX=QUX if1.c unifdef-2.10/tests/small1.experr000644 031623 031623 00000000000 12263051406 016661 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/small1.expout000644 031623 031623 00000000333 12263051406 016711 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/small1.exprc000644 031623 031623 00000000002 12263051406 016477 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/small1.sh000644 031623 031623 00000000051 12263051406 015774 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR small1.c unifdef-2.10/tests/small2.c000644 031623 031623 00000000413 12263051406 015607 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include #ifndef BAR int bar() { return 0; } #else #error BAR not defined #endif int main() { bar(); } unifdef-2.10/tests/small2.experr000644 031623 031623 00000000000 12263051406 016662 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/small2.expout000644 031623 031623 00000000333 12263051406 016712 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ #include #include int bar() { return 0; } int main() { bar(); } unifdef-2.10/tests/small2.exprc000644 031623 031623 00000000002 12263051406 016500 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/small2.sh000644 031623 031623 00000000051 12263051406 015775 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR small2.c unifdef-2.10/tests/spaces1.c000644 031623 031623 00000000421 12263051406 015753 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include # ifdef FOO int foo() { return 0; } # else # error FOO not defined # endif int main() { foo(); } unifdef-2.10/tests/spaces1.experr000644 031623 031623 00000000000 12263051406 017027 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/spaces1.expout000644 031623 031623 00000000335 12263051406 017061 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/spaces1.exprc000644 031623 031623 00000000002 12263051406 016645 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/spaces1.sh000644 031623 031623 00000000052 12263051406 016143 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR spaces1.c unifdef-2.10/tests/spaces2.c000644 031623 031623 00000000416 12263051406 015760 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include # ifndef BAR int bar() { return 0; } # else # error BAR defined # endif int main() { bar(); } unifdef-2.10/tests/spaces2.experr000644 031623 031623 00000000000 12263051406 017030 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/spaces2.expout000644 031623 031623 00000000335 12263051406 017062 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include int bar() { return 0; } int main() { bar(); } unifdef-2.10/tests/spaces2.exprc000644 031623 031623 00000000002 12263051406 016646 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/spaces2.sh000644 031623 031623 00000000052 12263051406 016144 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR spaces2.c unifdef-2.10/tests/spaces3.c000644 031623 031623 00000000424 12263051406 015760 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include # ifndef BAR int bar() { return 0; } # else # error BAR defined # endif int main() { bar(); } unifdef-2.10/tests/spaces3.experr000644 031623 031623 00000000000 12263051406 017031 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/spaces3.expout000644 031623 031623 00000000336 12263051406 017064 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include int bar() { return 0; } int main() { bar(); } unifdef-2.10/tests/spaces3.exprc000644 031623 031623 00000000002 12263051406 016647 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/spaces3.sh000644 031623 031623 00000000052 12263051406 016145 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR spaces3.c unifdef-2.10/tests/spaces4.c000644 031623 031623 00000000423 12263051406 015760 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include # ifdef FOO int foo() { return 0; } # else # error FOO defined # endif int main() { foo(); } unifdef-2.10/tests/spaces4.experr000644 031623 031623 00000000000 12263051407 017033 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/spaces4.expout000644 031623 031623 00000000336 12263051407 017066 0ustar00fanf2fanf2000000 000000 /* Copyright 2004 Bob Proulx Distributed under the two-clause BSD licence; see the COPYING file for details. */ # include # include int foo() { return 0; } int main() { foo(); } unifdef-2.10/tests/spaces4.exprc000644 031623 031623 00000000002 12263051407 016651 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/spaces4.sh000644 031623 031623 00000000052 12263051407 016147 0ustar00fanf2fanf2000000 000000 unifdef -DFOO=1 -DFOOB=42 -UBAR spaces4.c unifdef-2.10/tests/whitespace-1.experr000644 031623 031623 00000000165 12263051407 017777 0ustar00fanf2fanf2000000 000000 unifdef: whitespace.c: 3: Obfuscated preprocessor control line (#if line 1 depth 1) unifdef: output may be truncated unifdef-2.10/tests/whitespace-1.expout000644 031623 031623 00000000004 12263051407 020006 0ustar00fanf2fanf2000000 000000 foo unifdef-2.10/tests/whitespace-1.exprc000644 031623 031623 00000000002 12263051407 017601 0ustar00fanf2fanf2000000 000000 2 unifdef-2.10/tests/whitespace-1.sh000644 031623 031623 00000000033 12263051407 017076 0ustar00fanf2fanf2000000 000000 unifdef -DFOO whitespace.c unifdef-2.10/tests/whitespace-2.experr000644 031623 031623 00000000000 12263051407 017764 0ustar00fanf2fanf2000000 000000 unifdef-2.10/tests/whitespace-2.expout000644 031623 031623 00000011652 12263051407 020022 0ustar00fanf2fanf2000000 000000 #ifdef FOO foo #endif //spong bar unifdef-2.10/tests/whitespace-2.exprc000644 031623 031623 00000000002 12263051407 017602 0ustar00fanf2fanf2000000 000000 1 unifdef-2.10/tests/whitespace-2.sh000644 031623 031623 00000000033 12263051407 017077 0ustar00fanf2fanf2000000 000000 unifdef -DBAR whitespace.c unifdef-2.10/tests/whitespace.c000644 031623 031623 00000011673 12263051407 016564 0ustar00fanf2fanf2000000 000000 #ifdef FOO foo #endif //spong #ifdef BAR bar #endifunifdef-2.10/tests/xterm.experr000644 031623 031623 00000000006 12263051407 016636 0ustar00fanf2fanf2000000 000000 0 1 0 unifdef-2.10/tests/xterm.expout000644 031623 031623 00000005255 12263051407 016670 0ustar00fanf2fanf2000000 000000 #define RES_OFFSET(field) XtOffsetOf(XTERM_RESOURCE, field) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define HAS_BSD_GROUPS #include /* for NOFILE */ #define WTMP #include #define UTMP_STR utmp #include /* openpty() */ #include #include #define TERMCAP_ERASE "kb" #define VAL_INITIAL_ERASE A2E(8) #define VAL_LINE_SPEED B38400 #define TERMIO_STRUCT struct termios #define ttySetAttr(fd, datap) tcsetattr(fd, TCSANOW, datap) #define ttyGetAttr(fd, datap) tcgetattr(fd, datap) #define ttyFlush(fd) tcflush(fd, TCOFLUSH) #define TTYMODE(name) { name, sizeof(name)-1, 0, 0 } #define XTTYMODE_intr 0 #define XTTYMODE_quit 1 #define XTTYMODE_erase 2 #define XTTYMODE_kill 3 #define XTTYMODE_eof 4 #define XTTYMODE_eol 5 #define XTTYMODE_swtch 6 #define XTTYMODE_start 7 #define XTTYMODE_stop 8 #define XTTYMODE_brk 9 #define XTTYMODE_susp 10 #define XTTYMODE_dsusp 11 #define XTTYMODE_rprnt 12 #define XTTYMODE_flush 13 #define XTTYMODE_weras 14 #define XTTYMODE_lnext 15 #define XTTYMODE_status 16 #define XTTYMODE_erase2 17 #define XTTYMODE_eol2 18 #define validTtyChar(data, n) \ #define TMODE(ind,var) if (ttymodelist[ind].set) var = (cc_t) ttymodelist[ind].value #include /* XmuGetHostname */ #define MIT_CONSOLE_LEN 12 #define MIT_CONSOLE "MIT_CONSOLE_" #define SetUtmpHost(dst, screen) \ {"#", ".iconGeometry",XrmoptionStickyArg, (XPointer) NULL}, { "#geom", "icon window geometry" }, TRACE(("...decode_keyvalue %#x\n", value)); #define isOption(string) (Boolean)((string)[0] == '-' || (string)[0] == '+') #define DATA(option,kind) { option, NULL, kind, (XtPointer) NULL } #undef DATA #define ITEM(n) ((Cardinal)(n) < XtNumber(optionDescList) \ #undef ITEM #define disableSetUid() /* nothing */ #define disableSetGid() /* nothing */ #define DATA(name) { #name, es##name } #undef DATA #define USE_OPENPTY 1 #define NO_FDS {-1, -1} #define TRACE_HANDSHAKE(tag, data) /* nothing */ TRACE(("set_owner(%s, uid=%d, gid=%d, mode=%#o\n", TRACE(("...stat uid=%d, gid=%d, mode=%#o\n", #define close_fd(fd) close(fd), fd = -1 #define USE_NO_DEV_TTY 1 if ((ptr1 = x_strindex(oldtc, "co#")) == NULL) { strcat(oldtc, "co#80:"); ptr1 = x_strindex(oldtc, "co#"); if ((ptr2 = x_strindex(oldtc, "li#")) == NULL) { strcat(oldtc, "li#24:"); ptr2 = x_strindex(oldtc, "li#"); TRACE(("...parsed #%d: %s=%#x\n", count, mp->name, c)); unifdef-2.10/tests/xterm.exprc000644 031623 031623 00000000002 12263051407 016446 0ustar00fanf2fanf2000000 000000 0 unifdef-2.10/tests/xterm.sh000644 031623 031623 00000001406 12263051407 015750 0ustar00fanf2fanf2000000 000000 # hacks so we don't have to distribute huge chunks of XTerm if [ ! -f xterm-really ] then cat xterm.expout cat xterm.experr 1>&2 exit $(cat xterm.exprc) fi if [ -f xterm-clean ] then rm xterm.tar.gz xterm-defs.h xterm-main.c fi if [ ! -f xterm.tar.gz ] then wget -q http://invisible-island.net/datafiles/release/xterm.tar.gz fi if [ ! -f xterm-main.c ] then tar xf xterm.tar.gz cd xterm-[0-9][0-9][0-9] gcc -I/usr/X11R6/include -I. -E -dM \ main.c > ../xterm-defs.h cat main.c > ../xterm-main.c cd .. rm -r xterm-[0-9][0-9][0-9] fi unifdef -s xterm-main.c | sed 's/^/#undef /' >xterm-undefs.h echo $? 1>&2 unifdef -f xterm-undefs.h -f xterm-defs.h xterm-main.c >xterm-out.c echo $? 1>&2 grep '#' xterm-out.c echo $? 1>&2 rm -f xterm-undefs.h xterm-out.c unifdef-2.10/scripts/authors.svn000644 031623 031623 00000001227 12263051406 017017 0ustar00fanf2fanf2000000 000000 charnier = Philippe Charnier dd = Dima Dorfman ed = Ed Schouten fanf = Tony Finch hrs = Hiroki Sato imp = Warner Losh jmallett = Juli Mallett joel = Joel Dahl markm = Mark Murray nik = Nik Clayton obrien = David E. O'Brien peter = Peter Wemm rgrimes = Rodney W. Grimes ru = Ruslan Ermilov schweikh = Jens Schweikhardt unifdef-2.10/scripts/copycheck.sh000755 031623 031623 00000000621 12263051406 017106 0ustar00fanf2fanf2000000 000000 #!/bin/sh me=$(git config user.name || echo WHO-AM-I) now=$(date +%Y) ! git grep -l "Copyright .* $me" | grep -v 'tests/.*[.]exp[a-z]*' | ( while read f do git log --format="%ci $f" -1 -- $f done; git log --format="%ci COPYING" -1 ) | grep ^$now | while read d t z f do grep -H -m 1 "Copyright .* $me" $f done | grep -v $now grep ^[.]Dd unifdef.1 | grep -v "$(date +'%B [0-9]*, %Y')" exit 0 unifdef-2.10/scripts/fixtests.sh000755 031623 031623 00000000145 12263051406 017010 0ustar00fanf2fanf2000000 000000 #!/bin/sh for ext in err out rc do for f in tests/*.$ext do mv $f ${f%.$ext}.exp$ext done done unifdef-2.10/scripts/git.config000644 031623 031623 00000000607 12263051406 016555 0ustar00fanf2fanf2000000 000000 [core] repositoryformatversion = 0 [svn-remote "svn"] rewriteRoot = svn://svn.FreeBSD.org/base/head/usr.bin/unifdef url = svn+ssh://fanf@svn.FreeBSD.org/base/head/usr.bin/unifdef fetch = :refs/remotes/git-svn [remote "github"] url = git@github.com:fanf2/unifdef.git fetch = +refs/heads/*:refs/remotes/github/* fetch = +refs/pull/*/head:refs/remotes/github/pull/* unifdef-2.10/scripts/gitlog2changelog.sh000755 031623 031623 00000000306 12263051406 020355 0ustar00fanf2fanf2000000 000000 #!/bin/sh line="---------------------------------------------------" git log --no-merges --decorate -M --stat --pretty=format:"$line%n%ai %an <%ae>%d%n%n%s%n%n%b" | uniq | fold -s echo echo $line unifdef-2.10/scripts/release.sh000755 031623 031623 00000000350 12263051406 016555 0ustar00fanf2fanf2000000 000000 #!/bin/sh . ./version.sh for f in $@ $(git ls-files | egrep -v '^web/|^[.]git$') do mkdir -p web/$V/$(dirname $f) cp $f web/$V/$f done cd web zip -qr $V.zip $V tar cf $V.tar $V xz -k9 $V.tar gzip -9 $V.tar rm -R $V ls -l $V.* unifdef-2.10/scripts/reversion.sh000755 031623 031623 00000001444 12263051406 017156 0ustar00fanf2fanf2000000 000000 #!/bin/sh if [ ! -f version.sh ] && [ ! -d .git ] then echo Your copy of unifdef is incomplete 1>&2 exit 1 fi [ -f version.sh ] && . ./version.sh if [ -d .git ] then GV=$(git describe | sed 's|-g*|.|g;s|[.]|-|') git update-index -q --refresh if git diff-index --quiet HEAD then GD="$(git show --pretty=format:%ai -s HEAD)" else GD="$(date +'%Y-%m-%d %H:%M:%S %z')" GV=$GV.XX fi [ unifdef -nt unifdef.c ] && [ unifdef -nt unifdef.h ] && GD="$D" if [ "$GV $GD" != "$V $D" ] then echo "version $V $D" 1>&2 echo " -> $GV $GD" 1>&2 V="$GV" D="$GD" echo "V=\"$V\"" >version.sh echo "D=\"$D\"" >>version.sh rm -f version.h fi fi if [ ! -f version.h ] then printf '"@(#) $Version: %s $\\n"\n' "$V" >version.h printf '"@(#) $Date: %s $\\n"\n' "$D" >>version.h fi unifdef-2.10/scripts/runtests.sh000755 031623 031623 00000000665 12263051406 017035 0ustar00fanf2fanf2000000 000000 #!/bin/sh export PATH="$(pwd):${PATH}" ${1:+cd} ${1:-:} for cmd in *.sh do printf . t=${cmd%.sh} sh ./${cmd} >${t}.out 2>${t}.err echo $? >${t}.rc ok=true for e in out err rc do exp=${t}.exp${e} got=${t}.${e} if ! cmp -s ${exp} ${got} then echo echo FAILED: ${got}: $(cat ${cmd}) diff -u ${exp} ${got} ok=false fi done if ${ok} then rm -f ${t}.out ${t}.err ${t}.rc else rc=1 fi done echo exit ${rc} unifdef-2.10/scripts/svnup.sh000755 031623 031623 00000000276 12263051406 016317 0ustar00fanf2fanf2000000 000000 #!/bin/sh -e git svn fetch -A scripts/authors.svn git checkout FreeBSD case "$(git merge --no-commit git-svn)" in "Already up-to-date.") exit 0 esac git commit -m 'Merge back from svn' unifdef-2.10/scripts/upload.sh000755 031623 031623 00000001005 12263051406 016417 0ustar00fanf2fanf2000000 000000 #!/bin/sh -e make unifdef.txt cp unifdef.txt web git gc --aggressive git update-server-info git push --all github git push --tags github # for gitweb echo "selectively remove C preprocessor conditionals" >.git/description echo "Homepage: http://dotat.at/prog/unifdef" >.git/README.html touch .git/git-daemon-export-ok rsync --recursive --links --delete .git/ chiark:public-git/unifdef.git/ rsync --recursive --links web/ chiark:public-html/prog/unifdef/ exit unifdef-2.10/FreeBSD/err.c000644 031623 031623 00000006273 12263051406 015267 0ustar00fanf2fanf2000000 000000 /*- * Copyright (c) 1993 * The Regents of the University of California. All rights reserved. * * 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. * 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. */ #include "unifdef.h" void err(int eval, const char *fmt, ...) { va_list ap; va_start(ap, fmt); verrc(eval, errno, fmt, ap); va_end(ap); } void verr(int eval, const char *fmt, va_list ap) { verrc(eval, errno, fmt, ap); } void errc(int eval, int code, const char *fmt, ...) { va_list ap; va_start(ap, fmt); verrc(eval, code, fmt, ap); va_end(ap); } void verrc(int eval, int code, const char *fmt, va_list ap) { fprintf(stderr, "%s: ", _getprogname()); if (fmt != NULL) { vfprintf(stderr, fmt, ap); fprintf(stderr, ": "); } fprintf(stderr, "%s\n", strerror(code)); exit(eval); } void errx(int eval, const char *fmt, ...) { va_list ap; va_start(ap, fmt); verrx(eval, fmt, ap); va_end(ap); } void verrx(int eval, const char *fmt, va_list ap) { fprintf(stderr, "%s: ", _getprogname()); if (fmt != NULL) vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); exit(eval); } void warn(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vwarnc(errno, fmt, ap); va_end(ap); } void vwarn(const char *fmt, va_list ap) { vwarnc(errno, fmt, ap); } void warnc(int code, const char *fmt, ...) { va_list ap; va_start(ap, fmt); vwarnc(code, fmt, ap); va_end(ap); } void vwarnc(int code, const char *fmt, va_list ap) { fprintf(stderr, "%s: ", _getprogname()); if (fmt != NULL) { vfprintf(stderr, fmt, ap); fprintf(stderr, ": "); } fprintf(stderr, "%s\n", strerror(code)); } void warnx(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vwarnx(fmt, ap); va_end(ap); } void vwarnx(const char *fmt, va_list ap) { fprintf(stderr, "%s: ", _getprogname()); if (fmt != NULL) vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); } unifdef-2.10/FreeBSD/getopt.c000644 031623 031623 00000007220 12263051406 015772 0ustar00fanf2fanf2000000 000000 /* * Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * 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. * 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. */ #include "unifdef.h" int opterr = 1, /* if error message should be printed */ optind = 1, /* index into parent argv vector */ optopt, /* character checked for validity */ optreset; /* reset getopt */ char *optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' static char EMSG[] = ""; /* * getopt -- * Parse argc/argv argument vector. */ int getopt(int nargc, char *nargv[], const char *ostr) { static char *place = EMSG; /* option letter processing */ const char *oli; /* option letter list index */ if (optreset || *place == 0) { /* update scanning pointer */ optreset = 0; place = nargv[optind]; if (optind >= nargc || *place++ != '-') { /* Argument is absent or is not an option */ place = EMSG; return (-1); } optopt = *place++; if (optopt == '-' && *place == 0) { /* "--" => end of options */ ++optind; place = EMSG; return (-1); } if (optopt == 0) { /* Solitary '-', treat as a '-' option if the program (eg su) is looking for it. */ place = EMSG; if (strchr(ostr, '-') == NULL) return (-1); optopt = '-'; } } else optopt = *place++; /* See if option letter is one the caller wanted... */ if (optopt == ':' || (oli = strchr(ostr, optopt)) == NULL) { if (*place == 0) ++optind; if (opterr && *ostr != ':') (void)fprintf(stderr, "%s: illegal option -- %c\n", _getprogname(), optopt); return (BADCH); } /* Does this option need an argument? */ if (oli[1] != ':') { /* don't need argument */ optarg = NULL; if (*place == 0) ++optind; } else { /* Option-argument is either the rest of this argument or the entire next argument. */ if (*place) optarg = place; else if (nargc > ++optind) optarg = nargv[optind]; else { /* option-argument absent */ place = EMSG; if (*ostr == ':') return (BADARG); if (opterr) (void)fprintf(stderr, "%s: option requires an argument -- %c\n", _getprogname(), optopt); return (BADCH); } place = EMSG; ++optind; } return (optopt); /* return option letter */ }