unifdef-2.6/000755 031623 031623 00000000000 11530765646 013054 5ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/000755 031623 031623 00000000000 11530765646 014216 5ustar00fanf2fanf2000000 000000 unifdef-2.6/unifdefall.sh000755 031623 031623 00000005455 11530765646 015535 0ustar00fanf2fanf2000000 000000 #!/bin/sh # # unifdefall: remove all the #if's from a source file # # Copyright (c) 2002 - 2010 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 basename=$(basename "$0") tmp=$(mktemp -d "${TMPDIR:-/tmp}/$basename.XXXXXXXXXX") || exit 2 trap 'rm -r "$tmp" || exit 2' EXIT export LC_ALL=C # list of all controlling macros "$unifdef" $debug -s "$@" | sort | uniq >"$tmp/ctrl" # list of all macro definitions cpp -dM "$@" | sort | sed 's/^#define //' >"$tmp/hashdefs" # list of defined macro names sed 's/[^A-Za-z0-9_].*$//' <"$tmp/hashdefs" >"$tmp/alldef" # list of undefined and defined controlling macros comm -23 "$tmp/ctrl" "$tmp/alldef" >"$tmp/undef" comm -12 "$tmp/ctrl" "$tmp/alldef" >"$tmp/def" # create a sed script that extracts the controlling macro definitions # and converts them to unifdef command-line arguments sed 's|.*|s/^&\\(([^)]*)\\)\\{0,1\\} /-D&=/p|' <"$tmp/def" >"$tmp/script" # create the final unifdef command { echo "$unifdef" $debug -k '\' # convert the controlling undefined macros to -U arguments sed 's/.*/-U& \\/' <"$tmp/undef" # convert the controlling defined macros to quoted -D arguments sed -nf "$tmp/script" <"$tmp/hashdefs" | sed "s/'/'\\\\''/g;s/.*/'&' \\\\/" echo '"$@"' } >"$tmp/cmd" case $debug in -d) for i in ctrl hashdefs alldef undef def script cmd do echo ==== $i cat "$tmp/$i" done 1>&2 esac # run the command we just created sh "$tmp/cmd" "$@" unifdef-2.6/unifdef.txt000644 031623 031623 00000020312 11530765646 015233 0ustar00fanf2fanf2000000 000000 UNIFDEF(1) Programmer's Manual UNIFDEF(1) NAME unifdef, unifdefall -- remove preprocessor conditionals from code SYNOPSIS unifdef [-bBcdeKknsStV] [-Ipath] [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [-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. A directive is only processed if the symbols specified on the command line are sufficient to allow unifdef to get 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 symbol is not specified on the command line. 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 expres- sions; it can be told to process them by specifying 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 symbols 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. In most cases, the unifdef utility does not distinguish between object- like macros (without arguments) and function-like arguments (with argu- ments). If a macro is not explicitly defined, or is defined with the -D flag on the command-line, its arguments are ignored. If a macro is explicitly undefined on the command line with the -U flag, 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 symbols and their definitions (or lack thereof), then invokes unifdef with appropriate arguments to process the file. OPTIONS -Dsym=val Specify that a symbol is defined to a given value which is used when evaluating #if and #elif control expressions. -Dsym Specify that a symbol is defined to the value 1. -Usym Specify that a symbol is undefined. If the same symbol appears in more than one argument, the last occurrence dominates. -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 If the -c flag is specified, then the operation of unifdef is complemented, i.e., the lines that would have been removed or blanked are retained and vice versa. -d Turn on printing of debugging messages. -e Because unifdef processes its input one line at a time, it cannot remove preprocessor directives that span more than one line. The most common example of this is a directive with a multi-line com- ment hanging off its right hand end. By default, if unifdef has to process such a directive, it will complain that the line is too obfuscated. The -e option changes the behaviour so that, where possible, such lines are left unprocessed instead of reporting an error. -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. -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. If outfile is the same as the input file, the output is written to a temporary file which is renamed into place when unifdef com- pletes successfully. -s Instead of processing the input file as usual, this option causes unifdef to produce a list of symbols that appear in expressions that unifdef understands. It is useful in conjunction with the -dM option of cpp(1) for creating unifdef command lines. -S Like the -s option, but the nesting depth of each symbol is also printed. This is useful for working out the number of possible combinations of interdependent defined/undefined symbols. -t Disables parsing for C comments and line continuations, which is useful for plain text. -iDsym[=val] -iUsym Ignore #ifdefs. If your C code uses #ifdefs to delimit non-C lines, such as comments or code which is under construction, then you must tell unifdef which symbols are used for that purpose so that it will not try to parse comments and line continuations inside those #ifdefs. You can specify ignored symbols with -iDsym[=val] and -iUsym similar to -Dsym[=val] and -Usym above. -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. -V Print version details. The unifdef utility copies its output to stdout and will take its input from stdin if no file argument is given. The unifdef utility works nicely with the -Dsym option of diff(1). EXIT STATUS The unifdef utility exits 0 if the output is an exact copy of the input, 1 if not, and 2 if in trouble. 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) 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. Preprocessor control lines 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 symbols 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 18, 2011 unifdef-2.6/unifdef.1000644 031623 031623 00000023161 11530765646 014561 0ustar00fanf2fanf2000000 000000 .\" Copyright (c) 1985, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" Copyright (c) 2002 - 2011 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 18, 2011 .Dt UNIFDEF 1 PRM .Os " " .Sh NAME .Nm unifdef , unifdefall .Nd remove preprocessor conditionals from code .Sh SYNOPSIS .Nm .Op Fl bBcdeKknsStV .Op Fl I Ns Ar path .Op Fl D Ns Ar sym Ns Op = Ns Ar val .Op Fl U Ns Ar sym .Op Fl iD Ns Ar sym Ns Op = Ns Ar val .Op Fl iU Ns Ar sym .Ar ... .Op Fl o Ar 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 , #elif , #else , and .Ic #endif lines. A directive is only processed if the symbols specified on the command line are sufficient to allow .Nm to get 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 symbol is not specified on the command line. 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 symbols defined on the command line, the .Fn defined operator, the operators .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 In most cases, the .Nm utility does not distinguish between object-like macros (without arguments) and function-like arguments (with arguments). If a macro is not explicitly defined, or is defined with the .Fl D flag on the command-line, its arguments are ignored. If a macro is explicitly undefined on the command line with the .Fl U flag, 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 symbols and their definitions (or lack thereof), then invokes .Nm with appropriate arguments to process the file. .Sh OPTIONS .Pp .Bl -tag -width indent -compact .It Fl D Ns Ar sym Ns = Ns Ar val Specify that a symbol is defined to a given value which is used when evaluating .Ic #if and .Ic #elif control expressions. .Pp .It Fl D Ns Ar sym Specify that a symbol is defined to the value 1. .Pp .It Fl U Ns Ar sym Specify that a symbol is undefined. If the same symbol appears in more than one argument, the last occurrence dominates. .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 If the .Fl c flag is specified, then the operation of .Nm is complemented, i.e., the lines that would have been removed or blanked are retained and vice versa. .Pp .It Fl d Turn on printing of debugging messages. .Pp .It Fl e Because .Nm processes its input one line at a time, it cannot remove preprocessor directives that span more than one line. The most common example of this is a directive with a multi-line comment hanging off its right hand end. By default, if .Nm has to process such a directive, it will complain that the line is too obfuscated. The .Fl e option changes the behaviour so that, where possible, such lines are left unprocessed instead of reporting an error. .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 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. If .Ar outfile is the same as the input file, the output is written to a temporary file which is renamed into place when .Nm completes successfully. .Pp .It Fl s Instead of processing the input file as usual, this option causes .Nm to produce a list of symbols that appear in expressions that .Nm understands. It is useful in conjunction with the .Fl dM option of .Xr cpp 1 for creating .Nm command lines. .Pp .It Fl S Like the .Fl s option, but the nesting depth of each symbol is also printed. This is useful for working out the number of possible combinations of interdependent defined/undefined symbols. .Pp .It Fl t Disables parsing for C comments and line continuations, which is useful for plain text. .Pp .It Fl iD Ns Ar sym Ns Op = Ns Ar val .It Fl iU Ns Ar sym Ignore .Ic #ifdef Ns s . If your C code uses .Ic #ifdef Ns s to delimit non-C lines, such as comments or code which is under construction, then you must tell .Nm which symbols are used for that purpose so that it will not try to parse comments and line continuations inside those .Ic #ifdef Ns s . You can specify ignored symbols with .Fl iD Ns Ar sym Ns Oo = Ns Ar val Oc and .Fl iU Ns Ar sym similar to .Fl D Ns Ar sym Ns Op = Ns Ar val and .Fl U Ns Ar sym above. .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 V Print version details. .El .Pp The .Nm utility copies its output to .Em stdout and will take its input from .Em stdin if no .Ar file argument is given. .Pp The .Nm utility works nicely with the .Fl D Ns Ar sym option of .Xr diff 1 . .Sh EXIT STATUS The .Nm utility exits 0 if the output is an exact copy of the input, 1 if not, and 2 if in trouble. .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 .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 Preprocessor control lines split across more than one physical line (because of comments or backslash-newline) cannot be handled in every situation. .Pp Trigraphs are not recognized. .Pp There is no support for symbols with different definitions at different points in the source file. .Pp The text-mode and ignore functionality does not correspond to modern .Xr cpp 1 behaviour. unifdef-2.6/unifdef.c000644 031623 031623 00000106322 11530765646 014644 0ustar00fanf2fanf2000000 000000 /* * Copyright (c) 2002 - 2011 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 #include #include #include #include #include #include #include #include #include #include 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" }; /* 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 4096 /* 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 /* * For temporary filenames */ #define TEMPLATE "unifdef.XXXXXX" /* * 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 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 FILE *output; /* output file pointer */ static const char *ofilename; /* output file name */ static bool overwriting; /* output overwrites input */ static char tempname[FILENAME_MAX]; /* used when overwriting */ static char tline[MAXLINE+EDITSLOP];/* input buffer plus space */ static char *keyword; /* used for editing #elif's */ 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 = true; /* to format symdepth output */ static bool firstsym; /* ditto */ static int exitstat; /* program exit status */ static void addsym(bool, bool, char *); static void closeout(void); static void debug(const char *, ...); static void done(void); static void error(const char *); static int findsym(const char *); static void flushline(bool); static Linetype parseline(void); static Linetype ifeval(const char **); static void ignoreoff(void); static void ignoreon(void); static void keywordedit(const char *); static void nest(void); static void process(void); static const char *skipargs(const char *); static const char *skipcomment(const char *); static const char *skipsym(const char *); static void state(Ifstate); static int strlcmp(const char *, const char *, size_t); static void unnest(void); static void usage(void); static void version(void); #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:I:o:bBcdeKklnsStV")) != -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') addsym(true, true, optarg); else if (opt == 'U') addsym(true, false, optarg); else usage(); break; case 'D': /* define a symbol */ addsym(false, true, optarg); break; case 'U': /* undef a symbol */ addsym(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 'K': /* keep ambiguous #ifs */ strictlogic = true; break; case 'k': /* process constant #ifs */ killconsts = true; 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': /* print version */ version(); default: usage(); } argc -= optind; argv += optind; if (compblank && lnblank) errx(2, "-B and -b are mutually exclusive"); if (symlist && ofilename != NULL) errx(2, "-s and -o are mutually exclusive"); if (argc > 1) { errx(2, "can only do one file"); } else if (argc == 1 && strcmp(*argv, "-") != 0) { filename = *argv; input = fopen(filename, "rb"); if (input == NULL) err(2, "can't open %s", filename); } else { filename = "[stdin]"; input = stdin; } if (ofilename == NULL) { ofilename = "[stdout]"; output = stdout; } else { struct stat ist, ost; if (stat(ofilename, &ost) == 0 && fstat(fileno(input), &ist) == 0) overwriting = (ist.st_dev == ost.st_dev && ist.st_ino == ost.st_ino); if (overwriting) { const char *dirsep; int ofd; dirsep = strrchr(ofilename, '/'); if (dirsep != NULL) snprintf(tempname, sizeof(tempname), "%.*s/" TEMPLATE, (int)(dirsep - ofilename), ofilename); else snprintf(tempname, sizeof(tempname), TEMPLATE); ofd = mkstemp(tempname); if (ofd != -1) output = fdopen(ofd, "wb+"); if (output == NULL) err(2, "can't create temporary file"); fchmod(ofd, ist.st_mode & (S_IRWXU|S_IRWXG|S_IRWXO)); } else { output = fopen(ofilename, "wb"); if (output == NULL) err(2, "can't open %s", ofilename); } } process(); abort(); /* bug */ } 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 usage(void) { fprintf(stderr, "usage: unifdef [-bBcdeKknsStV] [-Ipath]" " [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [file]\n"); exit(2); } /* * 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 strncpy() 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) { strncpy(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; } /* * Write a line to the output or not, according to command line options. * If writing fails, closeout() 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 && fprintf(output, "#line %d%s", linenum, newline) < 0) closeout(); if (fputs(tline, output) == EOF) closeout(); delcount = 0; blankmax = blankcount = blankline ? blankcount + 1 : 0; } } else { if (lnblank && fputs(newline, output) == EOF) closeout(); exitstat = 1; delcount += 1; blankcount = 0; } if (debugging && fflush(output) == EOF) closeout(); } /* * The driver for the state machine. */ static void process(void) { /* When compressing blank lines, act as if the file is preceded by a large number of blank lines. */ blankmax = blankcount = 1000; for (;;) { Linetype lineval = parseline(); trans_table[ifstate[depth]][lineval](); debug("process line %d %s -> %s depth %d", linenum, linetype_name[lineval], ifstate_name[ifstate[depth]], depth); } } /* * Flush the output and handle errors. */ static void closeout(void) { if (symdepth && !zerosyms) printf("\n"); if (ferror(output) || fclose(output) == EOF) { if (overwriting) { warn("couldn't write to temporary file"); unlink(tempname); errx(2, "%s unchanged", ofilename); } else { err(2, "couldn't write to %s", ofilename); } } } /* * Clean up and exit. */ static void done(void) { if (incomment) error("EOF in comment"); closeout(); if (overwriting && rename(tempname, ofilename) == -1) { warn("couldn't rename temporary file"); unlink(tempname); errx(2, "%s unchanged", ofilename); } exit(exitstat); } /* * 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; int kwlen; Linetype retval; Comment_state wascomment; linenum++; if (fgets(tline, MAXLINE, input) == NULL) { if (ferror(input)) error(strerror(errno)); else return (LT_EOF); } if (newline == NULL) { if (strrchr(tline, '\n') == strrchr(tline, '\r') + 1) newline = newline_crlf; else newline = newline_unix; } retval = LT_PLAIN; wascomment = incomment; cp = skipcomment(tline); if (linestate == LS_START) { if (*cp == '#') { linestate = LS_HASH; firstsym = true; cp = skipcomment(cp + 1); } else if (*cp != '\0') linestate = LS_DIRTY; } if (!incomment && linestate == LS_HASH) { keyword = tline + (cp - tline); cp = skipsym(cp); kwlen = cp - 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(); if (strlcmp("ifdef", keyword, kwlen) == 0 || strlcmp("ifndef", keyword, kwlen) == 0) { 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; } cp = skipsym(cp); } else if (strlcmp("if", keyword, kwlen) == 0) retval = ifeval(&cp); else if (strlcmp("elif", keyword, kwlen) == 0) retval = ifeval(&cp) - LT_IF + LT_ELIF; else if (strlcmp("else", keyword, kwlen) == 0) retval = LT_ELSE; else if (strlcmp("endif", keyword, kwlen) == 0) retval = LT_ENDIF; else { linestate = LS_DIRTY; retval = LT_PLAIN; } cp = skipcomment(cp); if (*cp != '\0') { linestate = LS_DIRTY; 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; } if (retval != LT_PLAIN && (wascomment || incomment)) { retval += LT_DODGY; if (incomment) linestate = LS_DIRTY; } /* skipcomment normally changes the state, except if the last line of the file lacks a newline, or if there is too much whitespace in a directive */ if (linestate == LS_HASH) { size_t len = cp - tline; if (fgets(tline + len, MAXLINE - len, input) == NULL) { if (ferror(input)) error(strerror(errno)); /* append the missing newline at eof */ strcpy(tline + len, newline); cp += strlen(newline); linestate = LS_START; } else { linestate = LS_DIRTY; } } } if (linestate == LS_DIRTY) { while (*cp != '\0') cp = skipcomment(cp + 1); } 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(int *p, int 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(int *p, Linetype at, int a, Linetype bt, int b) { return op_strict(p, a < b, at, bt); } static Linetype op_gt(int *p, Linetype at, int a, Linetype bt, int b) { return op_strict(p, a > b, at, bt); } static Linetype op_le(int *p, Linetype at, int a, Linetype bt, int b) { return op_strict(p, a <= b, at, bt); } static Linetype op_ge(int *p, Linetype at, int a, Linetype bt, int b) { return op_strict(p, a >= b, at, bt); } static Linetype op_eq(int *p, Linetype at, int a, Linetype bt, int b) { return op_strict(p, a == b, at, bt); } static Linetype op_ne(int *p, Linetype at, int a, Linetype bt, int b) { return op_strict(p, a != b, at, bt); } static Linetype op_or(int *p, Linetype at, int a, Linetype bt, int 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(int *p, Linetype at, int a, Linetype bt, int 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 *, int *, 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. */ static const struct ops { eval_fn *inner; struct op { const char *str; Linetype (*fn)(int *, Linetype, int, Linetype, int); } op[5]; } 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 } } } }; /* * 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, int *valp, const char **cpp) { const char *cp; char *ep; int sym; bool defparen; Linetype lt; cp = skipcomment(*cpp); if (*cp == '!') { debug("eval%d !", ops - eval_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 (", ops - eval_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", ops - eval_ops); *valp = strtol(cp, &ep, 0); if (ep == cp) return (LT_ERROR); lt = *valp ? LT_TRUE : LT_FALSE; cp = skipsym(cp); } else if (strncmp(cp, "defined", 7) == 0 && endsym(cp[7])) { cp = skipcomment(cp+7); debug("eval%d defined", ops - eval_ops); if (*cp == '(') { cp = skipcomment(cp+1); defparen = true; } else { defparen = false; } sym = findsym(cp); if (sym < 0) { lt = LT_IF; } else { *valp = (value[sym] != NULL); lt = *valp ? LT_TRUE : LT_FALSE; } cp = skipsym(cp); cp = skipcomment(cp); if (defparen && *cp++ != ')') return (LT_ERROR); constexpr = false; } else if (!endsym(*cp)) { debug("eval%d symbol", ops - eval_ops); sym = findsym(cp); cp = skipsym(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", ops - eval_ops); return (LT_ERROR); } *cpp = cp; debug("eval%d = %d", ops - eval_ops, *valp); return (lt); } /* * Table-driven evaluation of binary operators. */ static Linetype eval_table(const struct ops *ops, int *valp, const char **cpp) { const struct op *op; const char *cp; int val; Linetype lt, rt; debug("eval%d", ops - eval_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", ops - eval_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", ops - eval_ops, *valp); debug("eval%d lt = %s", ops - eval_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) { int ret; int 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); } /* * 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); } /* * 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 *str) { const char *cp; int symind; cp = skipsym(str); if (cp == str) return (-1); if (symlist) { if (symdepth && firstsym) printf("%s%3d", zerosyms ? "" : "\n", depth); firstsym = zerosyms = false; printf("%s%.*s%s", symdepth ? " " : "", (int)(cp-str), str, symdepth ? "" : "\n"); /* we don't care about the value of the symbol */ return (0); } for (symind = 0; symind < nsyms; ++symind) { if (strlcmp(symname[symind], str, cp-str) == 0) { debug("findsym %s %s", symname[symind], value[symind] ? value[symind] : ""); return (symind); } } return (-1); } /* * Add a symbol to the symbol table. */ static void addsym(bool ignorethis, bool definethis, char *sym) { int symind; char *val; symind = findsym(sym); if (symind < 0) { if (nsyms >= MAXSYMS) errx(2, "too many symbols"); symind = nsyms++; } symname[symind] = sym; ignore[symind] = ignorethis; val = sym + (skipsym(sym) - sym); if (definethis) { if (*val == '=') { value[symind] = val+1; *val = '\0'; } else if (*val == '\0') value[symind] = "1"; else usage(); } else { if (*val != '\0') usage(); value[symind] = NULL; } debug("addsym %s=%s", symname[symind], value[symind] ? value[symind] : "undef"); } /* * Compare s with n characters of t. * The same as strncmp() except that it checks that s[n] == '\0'. */ static int strlcmp(const char *s, const char *t, size_t n) { while (n-- && *t != '\0') if (*s != *t) return ((unsigned char)*s - (unsigned char)*t); else ++s, ++t; return ((unsigned char)*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); closeout(); errx(2, "output may be truncated"); } unifdef-2.6/runtests.sh000755 031623 031623 00000000600 11530765646 015276 0ustar00fanf2fanf2000000 000000 #!/bin/sh ${1:+cd} ${1:-:} for cmd in *.sh do t=${cmd%.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 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 exit ${rc} unifdef-2.6/reversion.sh000755 031623 031623 00000001220 11530765646 015422 0ustar00fanf2fanf2000000 000000 #!/bin/sh [ ! -f version.sh ] && [ ! -d .git ] && exit 1 [ -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 --quiet HEAD)" else GD="$(date +'%Y-%m-%d %H:%M:%S %z')" GV=$GV.XX fi if [ "$GV $GD" != "$V $D" ] then V="$GV" D="$GD" echo "V=\"$V\"" >version.sh echo "D=\"$D\"" >>version.sh cat 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 cat version.h fi unifdef-2.6/README000644 031623 031623 00000002364 11530765646 013741 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://freshmeat.net/projects/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 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 || Other contributions are listed in the Changelog. - end - unifdef-2.6/Makefile000644 031623 031623 00000003224 11530765646 014515 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.c: version.h version.h version.sh:: ./reversion.sh test: unifdef ./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' \ \) -delete DISTFILES= \ Changelog \ COPYING \ INSTALL \ Makefile \ README \ reversion.sh \ runtests.sh \ tests \ unifdef.c \ unifdef.1 \ unifdef.txt \ unifdefall.sh \ version.sh release: version.sh unifdef.txt Changelog . version.sh; \ mkdir web/$$V; cp -R ${DISTFILES} web/$$V; \ cd web; tar cfz $$V.tar.gz $$V; rm -R $$V unifdef.txt: unifdef.1 nroff -Tascii -mdoc unifdef.1 | sed -e 's/.//g' >unifdef.txt Changelog: line="---------------------------------------------------"; \ git log --no-merges --stat --pretty=format:"$$line%n%ai %an <%ae>%n%n%s%n%n%b" |\ awk '/^$$/ { n++ } \ /./ && !n { print } \ /./ && n { print ""; print; n=0 } \ END { print ""; print "'$$line'" }' >Changelog # eof unifdef-2.6/INSTALL000644 031623 031623 00000000671 11530765646 014111 0ustar00fanf2fanf2000000 000000 unifdef installation instructions To build, 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. Non-portable dependencies: This program requires the BSD err.h functions, and C99 stdbool.h. - end - unifdef-2.6/COPYING000644 031623 031623 00000010112 11530765646 014102 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 which has 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 - 2011 Tony Finch unifdefall.sh is Copyright (c) 2002 - 2010 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 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, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 2002 - 2011 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.6/version.sh000644 031623 031623 00000000056 11530765646 015076 0ustar00fanf2fanf2000000 000000 V="unifdef-2.6" D="2011-02-22 16:53:10 +0000" unifdef-2.6/Changelog000644 031623 031623 00000364325 11530765646 014703 0ustar00fanf2fanf2000000 000000 --------------------------------------------------- 2011-01-18 18:48:45 +0000 Tony Finch Release unifdef-2.5 web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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.expout | 16 ++++++++++++++++ tests/overin.exprc | 1 + tests/overin.sh | 4 ++++ unifdef.c | 4 ++-- 4 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 files 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 files 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.expout | 2 ++ tests/debian-603860.exprc | 1 + tests/debian-603860.sh | 1 + 4 files changed, 12 insertions(+), 0 deletions(-) --------------------------------------------------- 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 files changed, 11 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-09-13 12:14:15 +0000 Tony Finch 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-09-13 11:52:48 +0000 Tony Finch Release unifdef-2.4 web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-08-03 15:58:22 +0100 Tony Finch unifdef.1: fix typo (degugging -> debugging) Obtained from: Joel Dahl unifdef.1 | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-04-12 16:38:19 +0000 Tony Finch COPYING: explain the deleted advertising clause more clearly. COPYING | 6 +++--- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-31 13:57:08 +0000 Tony Finch web: Advertise repository using native git protocol web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-15 19:00:06 +0000 Tony Finch Makefile: remove double negative logic in realclean target Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-15 18:54:03 +0000 Tony Finch Makefile: do not remove any ${DISTFILES} in the clean target. Makefile | 4 ++-- 1 files 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-12 19:36:26 +0000 Tony Finch Remove the upload script to the admin branch. Makefile | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) --------------------------------------------------- 2010-03-12 19:06:39 +0000 Tony Finch README: include an introductory paragraph README | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) --------------------------------------------------- 2010-03-12 17:34:56 +0000 Tony Finch reversion.sh: tidier version numbers for modified sources reversion.sh | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-03-12 16:27:30 +0000 Tony Finch Release unifdef-2.3 web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-12 16:23:35 +0000 Tony Finch Makefile: upload to github before chiark Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 | 34 ---------------------------------- reversion.sh | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 36 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-12 11:03:03 +0000 Tony Finch README: add information about obtaining unifdef using git. README | 9 ++++++--- 1 files 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-12 11:00:26 +0000 Tony Finch web/index.html: Fix git clone URL. web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-12 10:15:18 +0000 Tony Finch Release unifdef-2.2 web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-12 10:08:04 +0000 Tony Finch unifdefall: print debugging output to stderr unifdefall.sh | 6 +++--- 1 files 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files 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 files changed, 5 insertions(+), 3 deletions(-) --------------------------------------------------- 2010-03-11 21:41:45 +0000 Tony Finch Makefile: safer "realclean" target Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-11 21:17:58 +0000 Tony Finch Release unifdef-2.1 web/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 0 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-11 20:59:11 +0000 Tony Finch Makefile: prune .git before uploading Makefile | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) --------------------------------------------------- 2010-03-11 20:56:29 +0000 Tony Finch index.html: mention the git glone command web/index.html | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-11 20:52:26 +0000 Tony Finch Re-do the website handling and add an upload target. Makefile | 15 ++++++++++--- index.html.in | 62 -------------------------------------------------------- web/index.html | 49 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 66 deletions(-) --------------------------------------------------- 2010-03-11 20:28:13 +0000 Tony Finch Tell git to ignore release files. .gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) --------------------------------------------------- 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 files changed, 5 insertions(+), 0 deletions(-) --------------------------------------------------- 2010-03-11 20:04:35 +0000 Tony Finch Makefile: do not clean inside .git directory. Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-11 18:56:58 +0000 Tony Finch INSTALL: Note the CFLAGS and LDFLAGS make variables. INSTALL | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 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-10 17:42:54 +0000 Tony Finch 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-03-06 14:38:50 +0000 Tony Finch Fix HTML markup snafu. index.html.in | 4 ++-- 1 files 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 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-02-22 18:58:50 +0000 Tony Finch Drop 1. from the version number release.sh | 4 ++-- 1 files 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 files 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 files 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 files 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 files 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 files 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 files changed, 5 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2010-02-19 16:44:02 +0000 Tony Finch List INSTALL file on homepage index.html.in | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 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.expout | 10 +++++++++ tests/crlf-a.exprc | 1 + tests/crlf-a.sh | 1 + tests/crlf-b.expout | 14 +++++++++++++ tests/crlf-b.exprc | 1 + tests/crlf-b.sh | 1 + tests/crlf-c.expout | 16 +++++++++++++++ tests/crlf-c.exprc | 1 + tests/crlf-c.sh | 1 + tests/crlf-d.expout | 18 +++++++++++++++++ tests/crlf-d.exprc | 1 + tests/crlf-d.sh | 1 + tests/crlf.c | 20 ++++++++++++++++++ unifdef.c | 54 ++++++++++++++++++++++++++++++++++---------------- 15 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.expout | 1 + tests/if6a.exprc | 1 + tests/if6a.sh | 1 + tests/if6b.expout | 5 +++++ tests/if6b.exprc | 1 + tests/if6b.sh | 1 + tests/if6c.expout | 7 +++++++ tests/if6c.exprc | 1 + tests/if6c.sh | 1 + tests/if6d.expout | 9 +++++++++ tests/if6d.exprc | 1 + tests/if6d.sh | 1 + 13 files changed, 41 insertions(+), 0 deletions(-) --------------------------------------------------- 2010-02-19 15:50:26 +0000 Tony Finch Test #elif -> #if edit tests/if1a.expout | 23 +++++++++++++++++++++++ tests/if1a.exprc | 1 + tests/if1a.sh | 1 + 3 files changed, 25 insertions(+), 0 deletions(-) --------------------------------------------------- 2010-01-20 00:48:26 +0000 Tony Finch unifdef.c: better diagnostics on write failure unifdef.c | 5 +++-- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-01-19 18:22:53 +0000 Tony Finch Fix English usage in wishlist comment unifdef.c | 6 +++--- 1 files 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 files changed, 8 insertions(+), 10 deletions(-) --------------------------------------------------- 2010-01-19 17:33:53 +0000 Tony Finch Update manual date and copyright. unifdef.1 | 6 +++--- 1 files 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.expout | 14 ++++++ tests/outdir.exprc | 1 + tests/outdir.sh | 4 ++ tests/outfile.expout | 14 ++++++ tests/outfile.exprc | 1 + tests/outfile.sh | 3 + tests/overdir.expout | 14 ++++++ tests/overdir.exprc | 1 + tests/overdir.sh | 5 ++ tests/overwrite.expout | 14 ++++++ tests/overwrite.exprc | 1 + tests/overwrite.sh | 4 ++ unifdef.1 | 17 +++++++- unifdef.c | 106 ++++++++++++++++++++++++++++++++++++++++++----- 14 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 files 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 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2010-01-19 13:36:22 +0000 Tony Finch Add Jonathan Nieder to unifdefall's copyright declaration. unifdefall.sh | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2010-01-15 18:37:39 +0000 Tony Finch Clean up the Makefile. Makefile | 27 ++++++++++++++------------- 1 files 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 files 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 files 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 files changed, 4 insertions(+), 5 deletions(-) --------------------------------------------------- 2009-11-27 17:30:39 +0000 Tony Finch Include full CVS log in the Changelog. Makefile | 4 ++-- 1 files 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 files 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 files 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 files 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 files 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 files 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 files 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.exprc | 1 + tests/if1-a.sh | 1 + tests/if2-a.exprc | 1 + tests/if2-a.sh | 1 + tests/if3-a.exprc | 1 + tests/if3-a.sh | 1 + tests/if4-a.exprc | 1 + tests/if4-a.sh | 1 + tests/if5-a.exprc | 1 + tests/if5-a.sh | 1 + 10 files changed, 10 insertions(+), 0 deletions(-) --------------------------------------------------- 2009-11-27 14:20:59 +0000 Tony Finch Ensure we clean up after a successful test. runtests.sh | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 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.expout | 1 - tests/args1.c.exprc | 1 - tests/args2.c.expout | 3 -- tests/args2.c.exprc | 1 - tests/blank0d.c.expout | 23 -------------------- tests/blank0d.c.exprc | 1 - tests/blank0u.c.expout | 22 ------------------- tests/blank0u.c.exprc | 1 - tests/blank1d.c.expout | 23 -------------------- tests/blank1d.c.exprc | 1 - tests/blank1u.c.expout | 21 ------------------ tests/blank1u.c.exprc | 1 - tests/blank2d.c.expout | 23 -------------------- tests/blank2d.c.exprc | 1 - tests/blank2u.c.expout | 20 ----------------- tests/blank2u.c.exprc | 1 - tests/blank3d.c.expout | 23 -------------------- tests/blank3d.c.exprc | 1 - tests/blank3u.c.expout | 19 ---------------- tests/blank3u.c.exprc | 1 - tests/blank4d.c.expout | 23 -------------------- tests/blank4d.c.exprc | 1 - tests/blank4u.c.expout | 18 --------------- tests/blank4u.c.exprc | 1 - tests/empty.c.exprc | 1 - tests/if1-a.c.expout | 15 ------------- tests/if1-k.c.expout | 29 ------------------------- tests/if1-k.c.exprc | 1 - tests/if1-kDU.c.expout | 19 ---------------- tests/if1-kDU.c.exprc | 1 - tests/if1.c.expout | 15 ------------- tests/if1.c.exprc | 1 - tests/if2-a.c.expout | 12 ---------- tests/if2-k.c.expout | 20 ----------------- tests/if2-k.c.exprc | 1 - tests/if2-kDU.c.expout | 16 -------------- tests/if2-kDU.c.exprc | 1 - tests/if2.c.expout | 12 ---------- tests/if2.c.exprc | 1 - tests/if3-a.c.expout | 12 ---------- tests/if3-k.c.expout | 20 ----------------- tests/if3-k.c.exprc | 1 - tests/if3-kDU.c.expout | 16 -------------- tests/if3-kDU.c.exprc | 1 - tests/if3.c.expout | 12 ---------- tests/if3.c.exprc | 1 - tests/if4-a.c.expout | 21 ------------------ tests/if4-k.c.expout | 41 ----------------------------------- tests/if4-k.c.exprc | 1 - tests/if4-kDU.c.expout | 25 --------------------- tests/if4-kDU.c.exprc | 1 - tests/if4.c.expout | 21 ------------------ tests/if4.c.exprc | 1 - tests/if5-a.c.expout | 27 ----------------------- tests/if5-k.c.expout | 55 ------------------------------------------------ tests/if5-k.c.exprc | 1 - tests/if5-kDU.c.expout | 31 --------------------------- tests/if5-kDU.c.exprc | 1 - tests/if5.c.expout | 27 ----------------------- tests/if5.c.exprc | 1 - tests/none.c.expout | 4 --- tests/none.c.exprc | 1 - tests/runtests | 51 -------------------------------------------- tests/small1.c.expout | 12 ---------- tests/small1.c.exprc | 1 - tests/small2.c.expout | 12 ---------- tests/small2.c.exprc | 1 - tests/spaces1.c.expout | 12 ---------- tests/spaces1.c.exprc | 1 - tests/spaces2.c.expout | 12 ---------- tests/spaces2.c.exprc | 1 - tests/spaces3.c.expout | 12 ---------- tests/spaces3.c.exprc | 1 - tests/spaces4.c.expout | 12 ---------- tests/spaces4.c.exprc | 1 - 78 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.expout | 29 ++++++++++++++++++++++ tests/if1-k.c.exprc | 1 + tests/if1-k.expout | 29 ++++++++++++++++++++++ tests/if1-k.exprc | 1 + tests/if1-kDU.args | 1 + tests/if1-kDU.c | 37 ++++++++++++++++++++++++++++ tests/if1-kDU.c.expout | 19 ++++++++++++++ tests/if1-kDU.c.exprc | 1 + 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.expout | 20 +++++++++++++++ tests/if2-k.c.exprc | 1 + tests/if2-k.expout | 20 +++++++++++++++ tests/if2-k.exprc | 1 + tests/if2-kDU.args | 1 + tests/if2-kDU.c | 28 +++++++++++++++++++++ tests/if2-kDU.c.expout | 16 ++++++++++++ tests/if2-kDU.c.exprc | 1 + 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.expout | 20 +++++++++++++++ tests/if3-k.c.exprc | 1 + tests/if3-k.expout | 20 +++++++++++++++ tests/if3-k.exprc | 1 + tests/if3-kDU.args | 1 + tests/if3-kDU.c | 28 +++++++++++++++++++++ tests/if3-kDU.c.expout | 16 ++++++++++++ tests/if3-kDU.c.exprc | 1 + 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.expout | 41 +++++++++++++++++++++++++++++++ tests/if4-k.c.exprc | 1 + tests/if4-k.expout | 41 +++++++++++++++++++++++++++++++ tests/if4-k.exprc | 1 + tests/if4-kDU.args | 1 + tests/if4-kDU.c | 49 +++++++++++++++++++++++++++++++++++++ tests/if4-kDU.c.expout | 25 +++++++++++++++++++ tests/if4-kDU.c.exprc | 1 + 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.expout | 55 +++++++++++++++++++++++++++++++++++++++++ tests/if5-k.c.exprc | 1 + tests/if5-k.expout | 55 +++++++++++++++++++++++++++++++++++++++++ tests/if5-k.exprc | 1 + tests/if5-kDU.args | 1 + tests/if5-kDU.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/if5-kDU.c.expout | 31 +++++++++++++++++++++++ tests/if5-kDU.c.exprc | 1 + 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 ++ 108 files changed, 1276 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-27 12:48:13 +0000 Tony Finch List significant contributions in the README README | 28 +++++++++++++++++++++------- 1 files 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 files changed, 12 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-11-26 14:12:30 +0000 Tony Finch Fix web page markup index.html.in | 14 ++++++++------ 1 files 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 files 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 files 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 files 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 files 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 files 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 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-26 02:14:47 +0000 Tony Finch unifdefall: remove debugging remnants. unifdefall.sh | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2009-11-25 19:54:34 +0000 Tony Finch unifdefall: update copyright dates. unifdefall.sh | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-25 19:33:51 +0000 Tony Finch Makefile: really clean more. Makefile | 4 ++-- 1 files 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 files 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 files 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 files 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 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2009-11-25 18:02:41 +0000 Tony Finch unifdefall: clean up temporary files on failure Submitted-by: Jonathan Nieder unifdefall.sh | 5 ++--- 1 files 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 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-25 17:54:13 +0000 Tony Finch Use $() instead of `` in unifdefall. unifdefall.sh | 6 +++--- 1 files 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.expout | 23 +++++++++++++++++++++++ tests/blank0d.c.exprc | 1 + tests/blank0d.expout | 23 +++++++++++++++++++++++ tests/blank0d.exprc | 1 + tests/blank0u.args | 1 + tests/blank0u.c | 25 +++++++++++++++++++++++++ tests/blank0u.c.expout | 22 ++++++++++++++++++++++ tests/blank0u.c.exprc | 1 + tests/blank0u.expout | 22 ++++++++++++++++++++++ tests/blank0u.exprc | 1 + tests/blank1d.args | 1 + tests/blank1d.c | 25 +++++++++++++++++++++++++ tests/blank1d.c.expout | 22 ++++++++++++++++++++++ tests/blank1d.c.exprc | 1 + tests/blank1d.expout | 22 ++++++++++++++++++++++ tests/blank1d.exprc | 1 + tests/blank1u.args | 1 + tests/blank1u.c | 25 +++++++++++++++++++++++++ tests/blank1u.c.expout | 21 +++++++++++++++++++++ tests/blank1u.c.exprc | 1 + tests/blank1u.expout | 21 +++++++++++++++++++++ tests/blank1u.exprc | 1 + tests/blank2d.args | 1 + tests/blank2d.c | 25 +++++++++++++++++++++++++ tests/blank2d.c.expout | 21 +++++++++++++++++++++ tests/blank2d.c.exprc | 1 + tests/blank2d.expout | 21 +++++++++++++++++++++ tests/blank2d.exprc | 1 + tests/blank2u.args | 1 + tests/blank2u.c | 25 +++++++++++++++++++++++++ tests/blank2u.c.expout | 20 ++++++++++++++++++++ tests/blank2u.c.exprc | 1 + tests/blank2u.expout | 20 ++++++++++++++++++++ tests/blank2u.exprc | 1 + tests/blank3d.args | 1 + tests/blank3d.c | 25 +++++++++++++++++++++++++ tests/blank3d.c.expout | 20 ++++++++++++++++++++ tests/blank3d.c.exprc | 1 + tests/blank3d.expout | 20 ++++++++++++++++++++ tests/blank3d.exprc | 1 + tests/blank3u.args | 1 + tests/blank3u.c | 25 +++++++++++++++++++++++++ tests/blank3u.c.expout | 19 +++++++++++++++++++ tests/blank3u.c.exprc | 1 + tests/blank3u.expout | 19 +++++++++++++++++++ tests/blank3u.exprc | 1 + tests/blank4d.args | 1 + tests/blank4d.c | 25 +++++++++++++++++++++++++ tests/blank4d.c.expout | 19 +++++++++++++++++++ tests/blank4d.c.exprc | 1 + tests/blank4d.expout | 19 +++++++++++++++++++ tests/blank4d.exprc | 1 + tests/blank4u.args | 1 + tests/blank4u.c | 25 +++++++++++++++++++++++++ tests/blank4u.c.expout | 18 ++++++++++++++++++ tests/blank4u.c.exprc | 1 + tests/blank4u.expout | 18 ++++++++++++++++++ tests/blank4u.exprc | 1 + 60 files changed, 690 insertions(+), 0 deletions(-) --------------------------------------------------- 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.expout | 1 + tests/args1.c.exprc | 1 + tests/args1.expout | 1 + tests/args1.exprc | 1 + tests/args2.c | 3 +++ tests/args2.c.expout | 3 +++ tests/args2.c.exprc | 1 + tests/args2.expout | 3 +++ tests/args2.exprc | 1 + 10 files changed, 18 insertions(+), 0 deletions(-) --------------------------------------------------- 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/if1.c | 22 ++++++++++++++++++ tests/if1.c.expout | 12 ++++++++++ tests/if1.expout | 12 ++++++++++ tests/if2.c | 13 +++++++++++ tests/if2.c.expout | 9 +++++++ tests/if2.expout | 9 +++++++ tests/if3.c | 13 +++++++++++ tests/if3.c.expout | 9 +++++++ tests/if3.expout | 9 +++++++ tests/if4.c | 34 +++++++++++++++++++++++++++++ tests/if4.c.expout | 18 +++++++++++++++ tests/if4.expout | 18 +++++++++++++++ tests/if5.c | 48 +++++++++++++++++++++++++++++++++++++++++ tests/if5.c.expout | 24 ++++++++++++++++++++ tests/if5.expout | 24 ++++++++++++++++++++ tests/none.c | 1 + tests/none.c.expout | 1 + tests/none.expout | 1 + tests/simple1 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/simple2 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/simple3 | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/small1.c | 13 +++++++++++ tests/small1.c.expout | 9 +++++++ tests/small1.expout | 9 +++++++ tests/small2.c | 13 +++++++++++ tests/small2.c.expout | 9 +++++++ tests/small2.expout | 9 +++++++ tests/spaces1.c | 13 +++++++++++ tests/spaces1.c.expout | 9 +++++++ tests/spaces1.expout | 9 +++++++ tests/spaces2.c | 13 +++++++++++ tests/spaces2.c.expout | 9 +++++++ tests/spaces2.expout | 9 +++++++ tests/spaces3.c | 13 +++++++++++ tests/spaces3.c.expout | 9 +++++++ tests/spaces3.expout | 9 +++++++ tests/spaces4.c | 13 +++++++++++ tests/spaces4.c.expout | 9 +++++++ tests/spaces4.expout | 9 +++++++ 40 files changed, 643 insertions(+), 0 deletions(-) --------------------------------------------------- 2009-11-24 17:50:35 +0000 Tony Finch Less stilted English in the man page. unifdef.1 | 4 ++-- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-24 12:14:37 +0000 Tony Finch Run the release script verbosely. release.sh | 4 ++-- 1 files 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 files changed, 7 insertions(+), 1 deletions(-) --------------------------------------------------- 2009-11-24 11:58:41 +0000 Tony Finch Rename getline() to parseline() to avoid clashing with a glibc function. unifdef.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2009-11-23 19:15:42 +0000 Tony Finch Add a realclean target Makefile | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 1 insertions(+), 0 deletions(-) --------------------------------------------------- 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 files 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 files changed, 8 insertions(+), 2 deletions(-) --------------------------------------------------- 2009-11-23 17:58:27 +0000 Tony Finch Add a "release" target Makefile | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) --------------------------------------------------- 2008-03-10 16:15:52 +0000 Tony Finch update synopsis unifdef.1 | 4 ++-- 1 files 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 files 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 files 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 files changed, 12 insertions(+), 9 deletions(-) --------------------------------------------------- 2008-02-29 12:44:25 +0000 Tony Finch Remove a bit of copyright crap. unifdef.c | 10 +++------- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2008-02-29 12:29:34 +0000 Tony Finch Ensure man page is ASCII. Makefile | 4 ++-- 1 files 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 files changed, 14 insertions(+), 5 deletions(-) --------------------------------------------------- 2007-04-30 07:37:17 +0000 Tony Finch Fix explanation of copyright history. unifdef.c | 20 +++++++++++--------- 1 files 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 files changed, 9 insertions(+), 5 deletions(-) --------------------------------------------------- 2005-03-08 12:39:01 +0000 Tony Finch sync with upstream unifdef.1 | 32 ++++++++++++++++---------------- 1 files changed, 16 insertions(+), 16 deletions(-) --------------------------------------------------- 2005-03-08 12:38:48 +0000 Tony Finch copyright dates unifdef.c | 4 ++-- 1 files 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 files changed, 44 insertions(+), 15 deletions(-) --------------------------------------------------- 2003-08-12 20:51:30 +0000 Tony Finch simpler declaration of copyright[] unifdef.c | 6 +++--- 1 files 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 files 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 files changed, 1 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-08-12 20:32:12 +0000 Tony Finch Current FreeBSD cvs id unifdef.1 | 4 ++-- 1 files 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 files changed, 13 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-08-12 19:35:31 +0000 Tony Finch a minor style improvement unifdef.c | 8 ++++---- 1 files 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 files changed, 7 insertions(+), 8 deletions(-) --------------------------------------------------- 2003-08-07 16:01:10 +0000 Tony Finch Sync with FreeBSD unifdef.1 | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files 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 files changed, 2 insertions(+), 6 deletions(-) --------------------------------------------------- 2003-07-01 15:32:48 +0000 Tony Finch FreeBSD ident string unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-07-01 15:21:25 +0000 Tony Finch style tweak unifdef.c | 7 ++++--- 1 files 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 files changed, 16 insertions(+), 20 deletions(-) --------------------------------------------------- 2003-07-01 14:53:50 +0000 Tony Finch clean Makefile | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-07-01 08:34:43 +0000 Tony Finch a comment about line continuations unifdef.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2003-07-01 08:19:58 +0000 Tony Finch Improve the expression evaluator's debugging output. unifdef.c | 7 +++++-- 1 files 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 files 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 files 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 files changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-06-30 14:03:56 +0000 Tony Finch Sync with FreeBSD. unifdef.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) --------------------------------------------------- 2003-01-20 14:43:55 +0000 Tony Finch makefile for unifdef Makefile | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) --------------------------------------------------- 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 files changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 13:48:06 +0000 Tony Finch typo unifdef.c | 4 ++-- 1 files 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 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-01-20 12:03:48 +0000 Tony Finch terminological consistency: s/modify/edit/ unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-20 12:03:10 +0000 Tony Finch Compactify the Mfoo functions. unifdef.c | 15 ++++++--------- 1 files changed, 6 insertions(+), 9 deletions(-) --------------------------------------------------- 2003-01-20 11:46:53 +0000 Tony Finch more idiomatic strlcpy usage unifdef.c | 4 ++-- 1 files 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 files 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 files 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 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2003-01-20 02:50:36 +0000 Tony Finch Sync $FreeBSD$ unifdef.c | 5 ++--- 1 files 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 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2003-01-20 01:32:23 +0000 Tony Finch Whitespace fixes from OpenBSD. unifdef.c | 8 ++++---- 1 files 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 files changed, 4 insertions(+), 3 deletions(-) --------------------------------------------------- 2003-01-20 00:50:06 +0000 Tony Finch typo: maintin -> maintain unifdef.c | 4 ++-- 1 files 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 files changed, 19 insertions(+), 7 deletions(-) --------------------------------------------------- 2003-01-17 19:19:13 +0000 Tony Finch mdoc pedantry from FreeBSD unifdef.1 | 8 ++++---- 1 files 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 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2003-01-17 19:01:59 +0000 Tony Finch Whitespace fixes from OpenBSD. unifdef.c | 6 +++--- 1 files 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 files 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 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-13 13:58:00 +0000 Tony Finch factor out an error message unifdef.c | 7 ++++--- 1 files 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 files changed, 1 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-13 11:42:37 +0000 Tony Finch sort getopt cases unifdef.c | 8 ++++---- 1 files 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 files 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 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-13 11:24:26 +0000 Tony Finch note the appearance of ANSI support unifdef.1 | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-13 11:24:08 +0000 Tony Finch describe the limitation on preprocessor lines better unifdef.1 | 6 ++++-- 1 files 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 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-13 11:13:02 +0000 Tony Finch fix an error message unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-13 11:11:11 +0000 Tony Finch less obfuscated ifdef/ifndef handling unifdef.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-12-13 11:04:43 +0000 Tony Finch comment the state enums unifdef.c | 50 +++++++++++++++++++++++++------------------------- 1 files 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 files 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 files changed, 19 insertions(+), 19 deletions(-) --------------------------------------------------- 2002-12-12 19:50:15 +0000 Tony Finch more commentary on strlcmp() unifdef.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-12 19:46:44 +0000 Tony Finch comment all globals unifdef.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-12-12 19:45:29 +0000 Tony Finch terminological consistency for pass states unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 19:43:04 +0000 Tony Finch fix some comments unifdef.c | 8 ++++++-- 1 files 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 files changed, 25 insertions(+), 25 deletions(-) --------------------------------------------------- 2002-12-12 19:38:45 +0000 Tony Finch remove some c&p garbage unifdef.c | 24 +----------------------- 1 files changed, 1 insertions(+), 23 deletions(-) --------------------------------------------------- 2002-12-12 19:36:23 +0000 Tony Finch move flushline closer to its usage point unifdef.c | 60 +++++++++++++++++++++++++++++++++++++++++------------------- 1 files 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 files 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 files 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 files changed, 57 insertions(+), 89 deletions(-) --------------------------------------------------- 2002-12-12 19:04:56 +0000 Tony Finch note another diagnostic unifdef.1 | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-12 19:04:56 +0000 Tony Finch make everything static, and improve the order of declarations unifdef.c | 328 ++++++++++++++++++++++++++++++++---------------------------- 1 files changed, 175 insertions(+), 153 deletions(-) --------------------------------------------------- 2002-12-12 17:59:51 +0000 Tony Finch Improve the state table commentary. unifdef.c | 14 +++++++------- 1 files 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 files 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 files 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 files changed, 6 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-12 17:21:22 +0000 Tony Finch Exit 2 on error. unifdef.c | 6 +++--- 1 files 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 files 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 files 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 files changed, 7 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-12 17:06:15 +0000 Tony Finch stcomline isn't used any more unifdef.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-12 17:05:00 +0000 Tony Finch Note that NO_COMMMENT is false, as before. unifdef.c | 4 ++-- 1 files 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 files changed, 11 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-12-12 17:02:08 +0000 Tony Finch Better error messages outside #if groups unifdef.c | 9 ++++++--- 1 files 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 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files changed, 6 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-11 20:46:06 +0000 Tony Finch Add a missing unignore() unifdef.c | 4 ++-- 1 files 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 files changed, 9 insertions(+), 7 deletions(-) --------------------------------------------------- 2002-12-11 20:15:57 +0000 Tony Finch remove nul character comment unifdef.c | 4 +--- 1 files changed, 1 insertions(+), 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 files changed, 205 insertions(+), 247 deletions(-) --------------------------------------------------- 2002-12-11 20:04:40 +0000 Tony Finch some more bugs unifdef.1 | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files changed, 11 insertions(+), 13 deletions(-) --------------------------------------------------- 2002-12-11 02:22:44 +0000 Tony Finch Add a note about trigraphs. unifdef.1 | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-11 02:13:04 +0000 Tony Finch Use fgets instead of getline() because the latter gets EOF wrong. unifdef.c | 77 +----------------------------------------------------------- 1 files 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 files changed, 17 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-12-11 00:00:47 +0000 Tony Finch handle end-of-string in skipsym() unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-10 23:20:14 +0000 Tony Finch A neater way of handling #elif unifdef.c | 14 ++++---------- 1 files changed, 4 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-12-10 23:02:11 +0000 Tony Finch Fix findsym()'s comment. unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-12-10 23:01:04 +0000 Tony Finch Improve findsym(). unifdef.c | 19 +++++++------------ 1 files changed, 7 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-12-10 21:11:58 +0000 Tony Finch Remove quote handling. unifdef.c | 70 +++++++----------------------------------------------------- 1 files 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 files 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 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-12-10 17:23:54 +0000 Tony Finch Sync with FreeBSD unifdef.1 | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-12-10 17:12:58 +0000 Tony Finch Handle inquote more elegantly unifdef.c | 14 ++++---------- 1 files 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 files 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 files 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 files 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 files 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 files 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 files 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 files changed, 39 insertions(+), 45 deletions(-) --------------------------------------------------- 2002-05-21 17:33:41 +0000 Tony Finch style(9) whitespace unifdef.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-05-15 19:37:50 +0000 Tony Finch consistent spacing in the function declarations unifdef.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) --------------------------------------------------- 2002-05-15 19:36:10 +0000 Tony Finch cast away qualifiers less evilly unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-15 19:34:40 +0000 Tony Finch Replace h0h0opt with getopt. unifdef.c | 135 +++++++++++++++++++++++++++++++++++-------------------------- 1 files 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 files 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 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-05-15 10:31:20 +0000 Tony Finch FreeBSD CVS ID correctness unifdefall.sh | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-05-14 22:15:03 +0000 Tony Finch be more optimistic about the level of expression support unifdef.1 | 4 ++-- 1 files 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 files 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 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-05-14 21:11:50 +0000 Tony Finch add a missing comma to the SEE ALSO list unifdef.1 | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-05-14 21:11:14 +0000 Tony Finch Document unifdefall and the -I option. unifdef.1 | 40 +++++++++++++++++++++++++++++++++++++--- 1 files 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 files changed, 11 insertions(+), 11 deletions(-) --------------------------------------------------- 2002-05-02 12:36:22 +0000 Tony Finch consistent commenting unifdef.c | 69 ++++++++++++++++++++++++++++++++++++++++++------------------ 1 files 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 files changed, 18 insertions(+), 23 deletions(-) --------------------------------------------------- 2002-05-02 00:03:41 +0000 Tony Finch note #line wish unifdef.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-29 16:41:08 +0000 Tony Finch Handle symbols that are defined without a value correctly, again. unifdefall.sh | 4 ++-- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 03:08:10 +0000 Tony Finch clean up tmp dir unifdefall.sh | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-29 03:07:20 +0000 Tony Finch tidy up unifdefall.sh | 32 ++++++++------------------------ 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 02:55:15 +0000 Tony Finch mention support for the comparison operators unifdef.1 | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-29 00:18:06 +0000 Tony Finch -d -> --debug unifdef.c | 6 +++--- 1 files 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 files 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 files changed, 42 insertions(+), 0 deletions(-) --------------------------------------------------- 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 files 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 files 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 files changed, 4 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-27 17:27:14 +0000 Tony Finch allow longer lines in the input unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-27 17:26:53 +0000 Tony Finch avoid a potential buffer overflow unifdef.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-27 17:23:47 +0000 Tony Finch spell getlin() with an e unifdef.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-26 20:44:33 +0000 Tony Finch remove redundant function unifdef.c | 15 +++------------ 1 files 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 files 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 files 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 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 20:17:35 +0000 Tony Finch use .Li for #if directives unifdef.1 | 33 ++++++++++++++++++++++++++------- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 20:08:45 +0000 Tony Finch mention the elif diagnostic unifdef.1 | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 20:07:49 +0000 Tony Finch see also cpp(1) unifdef.1 | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-26 20:07:29 +0000 Tony Finch remove spurious historical note unifdef.1 | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-26 20:05:12 +0000 Tony Finch explain the -s option unifdef.1 | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-26 20:01:06 +0000 Tony Finch Improve the explanation of the -D and -U options. unifdef.1 | 28 +++++++++++++--------------- 1 files changed, 13 insertions(+), 15 deletions(-) --------------------------------------------------- 2002-04-26 19:54:54 +0000 Tony Finch better introductory paragraph unifdef.1 | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) --------------------------------------------------- 2002-04-26 19:51:20 +0000 Tony Finch remove -compact from the flag list unifdef.1 | 4 ++-- 1 files 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 files 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 files changed, 2 insertions(+), 1 deletions(-) --------------------------------------------------- 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 files 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 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 19:15:55 +0000 Tony Finch add $dotat$ unifdef.1 | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) --------------------------------------------------- 2002-04-26 19:15:14 +0000 Tony Finch add my name to the copyright section unifdef.1 | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-26 19:14:35 +0000 Tony Finch add unifdef manual page from FreeBSD unifdef.1 | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 173 insertions(+), 0 deletions(-) --------------------------------------------------- 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 files changed, 13 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 19:03:48 +0000 Tony Finch option variables in alphabetical order unifdef.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-26 19:02:45 +0000 Tony Finch parse options in alphabetical order unifdef.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) --------------------------------------------------- 2002-04-26 18:56:55 +0000 Tony Finch fix some h0h0 formatting unifdef.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) --------------------------------------------------- 2002-04-26 18:51:19 +0000 Tony Finch Fix the handling of #elif. unifdef.c | 4 ++-- 1 files 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 files 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 files changed, 72 insertions(+), 69 deletions(-) --------------------------------------------------- 2002-04-26 17:33:47 +0000 Tony Finch use enums where appropriate unifdef.c | 64 ++++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 36 insertions(+), 28 deletions(-) --------------------------------------------------- 2002-04-26 17:25:50 +0000 Tony Finch blank lines after functions unifdef.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-26 17:23:57 +0000 Tony Finch const correctness unifdef.c | 110 +++++++++++++++++++++++++++++------------------------------- 1 files changed, 53 insertions(+), 57 deletions(-) --------------------------------------------------- 2002-04-26 17:05:23 +0000 Tony Finch more bool correctness unifdef.c | 4 ++-- 1 files 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 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-26 17:01:38 +0000 Tony Finch ANSI function definitions unifdef.c | 62 ++++++++++++++++++------------------------------------------ 1 files 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 files changed, 53 insertions(+), 57 deletions(-) --------------------------------------------------- 2002-04-26 16:49:11 +0000 Tony Finch Add __FBSDID and conditionalize the __RCSIDs unifdef.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) --------------------------------------------------- 2002-04-26 16:47:53 +0000 Tony Finch add some debugging code unifdef.c | 35 +++++++++++++++++++++++++++++++++-- 1 files 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 files 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 files 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 files 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 files 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 files 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 files 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 files changed, 130 insertions(+), 86 deletions(-) --------------------------------------------------- 2002-04-25 23:27:40 +0000 Tony Finch remove redundant stline variable unifdef.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) --------------------------------------------------- 2002-04-25 23:25:31 +0000 Tony Finch simplify error line number handling unifdef.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-) --------------------------------------------------- 2002-04-25 23:02:51 +0000 Tony Finch simplify error handling unifdef.c | 59 +++++++++++++++++++++-------------------------------------- 1 files 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 files 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 files changed, 9 insertions(+), 12 deletions(-) --------------------------------------------------- 2002-04-25 21:19:55 +0000 Tony Finch remove an unnecessary variable inside doif() unifdef.c | 11 +++++------ 1 files 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 files 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 files 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 files 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 files 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 files 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 files 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 files changed, 145 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-04-25 16:16:26 +0000 Tony Finch allow whitespace before # unifdef.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:12:23 +0000 Tony Finch fix location of a { unifdef.c | 4 ++-- 1 files 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 files changed, 11 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:05:30 +0000 Tony Finch remove spurious fflush() unifdef.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 16:04:55 +0000 Tony Finch style: #include ordering; variable alignment unifdef.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) --------------------------------------------------- 2002-04-25 16:03:16 +0000 Tony Finch use err() unifdef.c | 83 +++++++++++++++++++++++++------------------------------------ 1 files changed, 34 insertions(+), 49 deletions(-) --------------------------------------------------- 2002-04-25 15:51:42 +0000 Tony Finch another formatting improvement unifdef.c | 17 +++++++---------- 1 files changed, 7 insertions(+), 10 deletions(-) --------------------------------------------------- 2002-04-25 15:37:25 +0000 Tony Finch sensible else if formatting unifdef.c | 150 +++++++++++++++++++++++++++---------------------------------- 1 files changed, 67 insertions(+), 83 deletions(-) --------------------------------------------------- 2002-04-25 15:31:28 +0000 Tony Finch deal with -Dsym=value unifdef.c | 30 +++++++++++++++++++++--------- 1 files 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 files changed, 8 insertions(+), 8 deletions(-) --------------------------------------------------- 2002-04-25 14:59:59 +0000 Tony Finch allow a reasonable number of symbols unifdef.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) --------------------------------------------------- 2002-04-25 14:57:56 +0000 Tony Finch remove BSS cruft unifdef.c | 39 +++++++++++++++++++-------------------- 1 files changed, 19 insertions(+), 20 deletions(-) --------------------------------------------------- 2002-04-25 14:55:27 +0000 Tony Finch remove __P unifdef.c | 24 ++++++++++++------------ 1 files 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 files changed, 13 insertions(+), 8 deletions(-) --------------------------------------------------- 2002-04-25 14:50:23 +0000 Tony Finch import from NetBSD unifdef.c | 684 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 684 insertions(+), 0 deletions(-) --------------------------------------------------- unifdef-2.6/tests/spaces4.sh000644 031623 031623 00000000055 11530765646 016114 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR spaces4.c unifdef-2.6/tests/args1.experr000644 031623 031623 00000000000 11530765646 016450 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/args1.expout000644 031623 031623 00000000006 11530765646 016475 0ustar00fanf2fanf2000000 000000 hello unifdef-2.6/tests/args1.exprc000644 031623 031623 00000000002 11530765646 016266 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/args1.sh000644 031623 031623 00000000053 11530765646 015565 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR args1.c unifdef-2.6/tests/args2.c000644 031623 031623 00000000052 11530765646 015375 0ustar00fanf2fanf2000000 000000 #if defined(FOO) || BAR(arg) hello #endif unifdef-2.6/tests/args2.experr000644 031623 031623 00000000000 11530765646 016451 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/args2.expout000644 031623 031623 00000000052 11530765646 016477 0ustar00fanf2fanf2000000 000000 #if defined(FOO) || BAR(arg) hello #endif unifdef-2.6/tests/args2.exprc000644 031623 031623 00000000002 11530765646 016267 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/args2.sh000644 031623 031623 00000000053 11530765646 015566 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR args2.c unifdef-2.6/tests/blank0d.c000644 031623 031623 00000000201 11530765646 015666 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank0d.experr000644 031623 031623 00000000000 11530765646 016746 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank0d.expout000644 031623 031623 00000000156 11530765646 017001 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif zero unifdef-2.6/tests/blank0d.exprc000644 031623 031623 00000000002 11530765646 016564 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank0d.sh000644 031623 031623 00000000037 11530765646 016065 0ustar00fanf2fanf2000000 000000 ../unifdef -B -DFOO0 blank0d.c unifdef-2.6/tests/blank0u.c000644 031623 031623 00000000201 11530765646 015707 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank0u.experr000644 031623 031623 00000000000 11530765646 016767 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank0u.expout000644 031623 031623 00000000151 11530765646 017015 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif unifdef-2.6/tests/blank0u.exprc000644 031623 031623 00000000002 11530765646 016605 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank0u.sh000644 031623 031623 00000000037 11530765646 016106 0ustar00fanf2fanf2000000 000000 ../unifdef -B -UFOO0 blank0u.c unifdef-2.6/tests/blank1d.c000644 031623 031623 00000000201 11530765646 015667 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank1d.experr000644 031623 031623 00000000000 11530765646 016747 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank1d.expout000644 031623 031623 00000000156 11530765646 017002 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif one #ifdef FOO0 zero #endif unifdef-2.6/tests/blank1d.exprc000644 031623 031623 00000000002 11530765646 016565 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank1d.sh000644 031623 031623 00000000037 11530765646 016066 0ustar00fanf2fanf2000000 000000 ../unifdef -B -DFOO1 blank1d.c unifdef-2.6/tests/blank1u.c000644 031623 031623 00000000201 11530765646 015710 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank1u.experr000644 031623 031623 00000000000 11530765646 016770 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank1u.expout000644 031623 031623 00000000151 11530765646 017016 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank1u.exprc000644 031623 031623 00000000002 11530765646 016606 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank1u.sh000644 031623 031623 00000000037 11530765646 016107 0ustar00fanf2fanf2000000 000000 ../unifdef -B -UFOO1 blank1u.c unifdef-2.6/tests/blank2d.c000644 031623 031623 00000000201 11530765646 015670 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank2d.experr000644 031623 031623 00000000000 11530765646 016750 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank2d.expout000644 031623 031623 00000000156 11530765646 017003 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif two #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank2d.exprc000644 031623 031623 00000000002 11530765646 016566 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank2d.sh000644 031623 031623 00000000037 11530765646 016067 0ustar00fanf2fanf2000000 000000 ../unifdef -B -DFOO2 blank2d.c unifdef-2.6/tests/blank2u.c000644 031623 031623 00000000201 11530765646 015711 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank2u.experr000644 031623 031623 00000000000 11530765646 016771 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank2u.expout000644 031623 031623 00000000150 11530765646 017016 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank2u.exprc000644 031623 031623 00000000002 11530765646 016607 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank2u.sh000644 031623 031623 00000000037 11530765646 016110 0ustar00fanf2fanf2000000 000000 ../unifdef -B -UFOO2 blank2u.c unifdef-2.6/tests/blank3d.c000644 031623 031623 00000000201 11530765646 015671 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank3d.experr000644 031623 031623 00000000000 11530765646 016751 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank3d.expout000644 031623 031623 00000000156 11530765646 017004 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif three #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank3d.exprc000644 031623 031623 00000000002 11530765646 016567 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/crlf.c000644 031623 031623 00000000332 11530765646 015306 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.6/tests/blank3d.sh000644 031623 031623 00000000037 11530765646 016070 0ustar00fanf2fanf2000000 000000 ../unifdef -B -DFOO3 blank3d.c unifdef-2.6/tests/blank3u.c000644 031623 031623 00000000201 11530765646 015712 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank3u.experr000644 031623 031623 00000000000 11530765646 016772 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank3u.expout000644 031623 031623 00000000145 11530765646 017023 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank3u.exprc000644 031623 031623 00000000002 11530765646 016610 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank3u.sh000644 031623 031623 00000000037 11530765646 016111 0ustar00fanf2fanf2000000 000000 ../unifdef -B -UFOO3 blank3u.c unifdef-2.6/tests/blank4d.c000644 031623 031623 00000000201 11530765646 015672 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank4d.experr000644 031623 031623 00000000000 11530765646 016752 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank4d.expout000644 031623 031623 00000000156 11530765646 017005 0ustar00fanf2fanf2000000 000000 four #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank4d.exprc000644 031623 031623 00000000002 11530765646 016570 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank4d.sh000644 031623 031623 00000000037 11530765646 016071 0ustar00fanf2fanf2000000 000000 ../unifdef -B -DFOO4 blank4d.c unifdef-2.6/tests/blank4u.c000644 031623 031623 00000000201 11530765646 015713 0ustar00fanf2fanf2000000 000000 #ifdef FOO4 four #endif #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank4u.experr000644 031623 031623 00000000000 11530765646 016773 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/blank4u.expout000644 031623 031623 00000000145 11530765646 017024 0ustar00fanf2fanf2000000 000000 #ifdef FOO3 three #endif #ifdef FOO2 two #endif #ifdef FOO1 one #endif #ifdef FOO0 zero #endif unifdef-2.6/tests/blank4u.exprc000644 031623 031623 00000000002 11530765646 016611 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/blank4u.sh000644 031623 031623 00000000037 11530765646 016112 0ustar00fanf2fanf2000000 000000 ../unifdef -B -UFOO4 blank4u.c unifdef-2.6/tests/crlf-a.experr000644 031623 031623 00000000000 11530765646 016577 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/crlf-a.expout000644 031623 031623 00000000106 11530765646 016625 0ustar00fanf2fanf2000000 000000 int f1() { return 0; } \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.6/tests/crlf-a.exprc000644 031623 031623 00000000002 11530765646 016415 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/crlf-a.sh000644 031623 031623 00000000027 11530765646 015715 0ustar00fanf2fanf2000000 000000 ../unifdef -DF1 crlf.c unifdef-2.6/tests/crlf-b.experr000644 031623 031623 00000000000 11530765646 016600 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/crlf-b.expout000644 031623 031623 00000000165 11530765646 016633 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #else int f2() { return 0; } #endif \/ /\ comment /\ *\ comment *\ /\ eof unifdef-2.6/tests/empty.c000644 031623 031623 00000000000 11530765646 015506 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/crlf-b.exprc000644 031623 031623 00000000002 11530765646 016416 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/crlf-b.sh000644 031623 031623 00000000027 11530765646 015716 0ustar00fanf2fanf2000000 000000 ../unifdef -DF2 crlf.c unifdef-2.6/tests/crlf-c.experr000644 031623 031623 00000000000 11530765646 016601 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/crlf-c.expout000644 031623 031623 00000000227 11530765646 016633 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.6/tests/crlf-c.exprc000644 031623 031623 00000000002 11530765646 016417 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/crlf-c.sh000644 031623 031623 00000000027 11530765646 015717 0ustar00fanf2fanf2000000 000000 ../unifdef -DF3 crlf.c unifdef-2.6/tests/crlf-d.experr000644 031623 031623 00000000000 11530765646 016602 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/crlf-d.expout000644 031623 031623 00000000271 11530765646 016633 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.6/tests/crlf-d.exprc000644 031623 031623 00000000002 11530765646 016420 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/crlf-d.sh000644 031623 031623 00000000027 11530765646 015720 0ustar00fanf2fanf2000000 000000 ../unifdef -DF4 crlf.c unifdef-2.6/tests/debian-603860.c000644 031623 031623 00000000126 11530765646 016347 0ustar00fanf2fanf2000000 000000 #ifdef FOO int a; #endif char foo[] = "rm -rf /*"; #ifdef FOO int b; #endif /* baz */ unifdef-2.6/tests/debian-603860.experr000644 031623 031623 00000000000 11530765646 017421 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/debian-603860.expout000644 031623 031623 00000000044 11530765646 017450 0ustar00fanf2fanf2000000 000000 char foo[] = "rm -rf /*"; /* baz */ unifdef-2.6/tests/debian-603860.exprc000644 031623 031623 00000000002 11530765646 017237 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/debian-603860.sh000644 031623 031623 00000000041 11530765646 016533 0ustar00fanf2fanf2000000 000000 ../unifdef -UFOO debian-603860.c unifdef-2.6/tests/empty.experr000644 031623 031623 00000000000 11530765646 016571 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/empty.expout000644 031623 031623 00000000000 11530765646 016610 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/empty.exprc000644 031623 031623 00000000002 11530765646 016407 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/empty.sh000644 031623 031623 00000000053 11530765646 015706 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR empty.c unifdef-2.6/tests/if1-a.experr000644 031623 031623 00000000000 11530765646 016330 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if1-a.expout000644 031623 031623 00000000375 11530765646 016366 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.6/tests/if1-a.exprc000644 031623 031623 00000000002 11530765646 016146 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if1-a.sh000644 031623 031623 00000000057 11530765646 015451 0ustar00fanf2fanf2000000 000000 ../unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if1.c unifdef-2.6/tests/if1-k.c000644 031623 031623 00000001143 11530765646 015270 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.6/tests/if1-k.experr000644 031623 031623 00000000000 11530765646 016342 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if1-k.expout000644 031623 031623 00000000737 11530765646 016402 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.6/tests/if1-k.exprc000644 031623 031623 00000000002 11530765646 016160 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if1-k.sh000644 031623 031623 00000000026 11530765646 015457 0ustar00fanf2fanf2000000 000000 ../unifdef -k if1-k.c unifdef-2.6/tests/if1-kDU.c000644 031623 031623 00000001143 11530765646 015521 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.6/tests/if1-kDU.experr000644 031623 031623 00000000000 11530765646 016573 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if1-kDU.expout000644 031623 031623 00000000545 11530765646 016630 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.6/tests/if1-kDU.exprc000644 031623 031623 00000000002 11530765646 016411 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if1-kDU.sh000644 031623 031623 00000000060 11530765646 015706 0ustar00fanf2fanf2000000 000000 ../unifdef -k -DFOO=1 -DFOOB=42 -UBAR if1-kDU.c unifdef-2.6/tests/if1.c000644 031623 031623 00000000567 11530765646 015051 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.6/tests/if1.experr000644 031623 031623 00000000000 11530765646 016112 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if1.expout000644 031623 031623 00000000375 11530765646 016150 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.6/tests/if1.exprc000644 031623 031623 00000000002 11530765646 015730 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if1.sh000644 031623 031623 00000000051 11530765646 015225 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR if1.c unifdef-2.6/tests/if1a.experr000644 031623 031623 00000000000 11530765646 016253 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if1a.expout000644 031623 031623 00000000527 11530765646 016310 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.6/tests/if1a.exprc000644 031623 031623 00000000002 11530765646 016071 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if1a.sh000644 031623 031623 00000000027 11530765646 015371 0ustar00fanf2fanf2000000 000000 ../unifdef -UBAR if1.c unifdef-2.6/tests/if2-a.experr000644 031623 031623 00000000000 11530765646 016331 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if2-a.expout000644 031623 031623 00000000333 11530765646 016361 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.6/tests/if2-a.exprc000644 031623 031623 00000000002 11530765646 016147 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if2-a.sh000644 031623 031623 00000000057 11530765646 015452 0ustar00fanf2fanf2000000 000000 ../unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if2.c unifdef-2.6/tests/if2-k.c000644 031623 031623 00000000775 11530765646 015303 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.6/tests/if2-k.experr000644 031623 031623 00000000000 11530765646 016343 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if2-k.expout000644 031623 031623 00000000570 11530765646 016376 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.6/tests/if2-k.exprc000644 031623 031623 00000000002 11530765646 016161 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if2-k.sh000644 031623 031623 00000000026 11530765646 015460 0ustar00fanf2fanf2000000 000000 ../unifdef -k if2-k.c unifdef-2.6/tests/if2-kDU.c000644 031623 031623 00000000775 11530765646 015534 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.6/tests/if2-kDU.experr000644 031623 031623 00000000000 11530765646 016574 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if2-kDU.expout000644 031623 031623 00000000503 11530765646 016623 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.6/tests/if2-kDU.exprc000644 031623 031623 00000000002 11530765646 016412 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if2-kDU.sh000644 031623 031623 00000000060 11530765646 015707 0ustar00fanf2fanf2000000 000000 ../unifdef -k -DFOO=1 -DFOOB=42 -UBAR if2-kDU.c unifdef-2.6/tests/if2.c000644 031623 031623 00000000420 11530765646 015036 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.6/tests/if2.experr000644 031623 031623 00000000000 11530765646 016113 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if2.expout000644 031623 031623 00000000333 11530765646 016143 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.6/tests/if2.exprc000644 031623 031623 00000000002 11530765646 015731 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if2.sh000644 031623 031623 00000000051 11530765646 015226 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR if2.c unifdef-2.6/tests/if3-a.experr000644 031623 031623 00000000000 11530765646 016332 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if3-a.expout000644 031623 031623 00000000333 11530765646 016362 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.6/tests/if3-a.exprc000644 031623 031623 00000000002 11530765646 016150 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if3-a.sh000644 031623 031623 00000000057 11530765646 015453 0ustar00fanf2fanf2000000 000000 ../unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if3.c unifdef-2.6/tests/if3-k.c000644 031623 031623 00000000773 11530765646 015302 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.6/tests/if3-k.experr000644 031623 031623 00000000000 11530765646 016344 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if3-k.expout000644 031623 031623 00000000566 11530765646 016404 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.6/tests/if3-k.exprc000644 031623 031623 00000000002 11530765646 016162 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if3-k.sh000644 031623 031623 00000000026 11530765646 015461 0ustar00fanf2fanf2000000 000000 ../unifdef -k if3-k.c unifdef-2.6/tests/if3-kDU.c000644 031623 031623 00000000773 11530765646 015533 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.6/tests/if3-kDU.experr000644 031623 031623 00000000000 11530765646 016575 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if3-kDU.expout000644 031623 031623 00000000503 11530765646 016624 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.6/tests/if3-kDU.exprc000644 031623 031623 00000000002 11530765646 016413 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if3-kDU.sh000644 031623 031623 00000000060 11530765646 015710 0ustar00fanf2fanf2000000 000000 ../unifdef -k -DFOO=1 -DFOOB=42 -UBAR if3-kDU.c unifdef-2.6/tests/if3.c000644 031623 031623 00000000416 11530765646 015044 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.6/tests/if3.experr000644 031623 031623 00000000000 11530765646 016114 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if3.expout000644 031623 031623 00000000333 11530765646 016144 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.6/tests/if3.exprc000644 031623 031623 00000000002 11530765646 015732 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if3.sh000644 031623 031623 00000000051 11530765646 015227 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR if3.c unifdef-2.6/tests/if4-a.experr000644 031623 031623 00000000000 11530765646 016333 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if4-a.expout000644 031623 031623 00000000511 11530765646 016361 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.6/tests/if4-a.exprc000644 031623 031623 00000000002 11530765646 016151 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if4-a.sh000644 031623 031623 00000000057 11530765646 015454 0ustar00fanf2fanf2000000 000000 ../unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if4.c unifdef-2.6/tests/if4-k.c000644 031623 031623 00000001560 11530765646 015276 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.6/tests/if4-k.experr000644 031623 031623 00000000000 11530765646 016345 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if4-k.expout000644 031623 031623 00000001353 11530765646 016400 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.6/tests/if4-k.exprc000644 031623 031623 00000000002 11530765646 016163 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if4-k.sh000644 031623 031623 00000000026 11530765646 015462 0ustar00fanf2fanf2000000 000000 ../unifdef -k if4-k.c unifdef-2.6/tests/if4-kDU.c000644 031623 031623 00000001560 11530765646 015527 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.6/tests/if4-kDU.experr000644 031623 031623 00000000000 11530765646 016576 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if4-kDU.expout000644 031623 031623 00000000661 11530765646 016632 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.6/tests/if4-kDU.exprc000644 031623 031623 00000000002 11530765646 016414 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if4-kDU.sh000644 031623 031623 00000000060 11530765646 015711 0ustar00fanf2fanf2000000 000000 ../unifdef -k -DFOO=1 -DFOOB=42 -UBAR if4-kDU.c unifdef-2.6/tests/if4.c000644 031623 031623 00000001203 11530765646 015040 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.6/tests/if4.experr000644 031623 031623 00000000000 11530765646 016115 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if4.expout000644 031623 031623 00000000511 11530765646 016143 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.6/tests/if4.exprc000644 031623 031623 00000000002 11530765646 015733 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if4.sh000644 031623 031623 00000000051 11530765646 015230 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR if4.c unifdef-2.6/tests/if5-a.experr000644 031623 031623 00000000000 11530765646 016334 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if5-a.expout000644 031623 031623 00000000622 11530765646 016365 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; } 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.6/tests/if5-a.exprc000644 031623 031623 00000000002 11530765646 016152 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if5-a.sh000644 031623 031623 00000000057 11530765646 015455 0ustar00fanf2fanf2000000 000000 ../unifdefall.sh -DFOO=1 -DFOOB=42 -UBAR if5.c unifdef-2.6/tests/if5-k.c000644 031623 031623 00000001771 11530765646 015303 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.6/tests/if5-k.experr000644 031623 031623 00000000000 11530765646 016346 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if5-k.expout000644 031623 031623 00000001564 11530765646 016405 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.6/tests/if5-k.exprc000644 031623 031623 00000000002 11530765646 016164 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if5-k.sh000644 031623 031623 00000000026 11530765646 015463 0ustar00fanf2fanf2000000 000000 ../unifdef -k if5-k.c unifdef-2.6/tests/if5-kDU.c000644 031623 031623 00000001771 11530765646 015534 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.6/tests/if5-kDU.experr000644 031623 031623 00000000000 11530765646 016577 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if5-kDU.expout000644 031623 031623 00000000772 11530765646 016636 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.6/tests/if5-kDU.exprc000644 031623 031623 00000000002 11530765646 016415 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if5-kDU.sh000644 031623 031623 00000000060 11530765646 015712 0ustar00fanf2fanf2000000 000000 ../unifdef -k -DFOO=1 -DFOOB=42 -UBAR if5-kDU.c unifdef-2.6/tests/if5.c000644 031623 031623 00000001414 11530765646 015045 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 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.6/tests/if5.experr000644 031623 031623 00000000000 11530765646 016116 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if5.expout000644 031623 031623 00000000622 11530765646 016147 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; } 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.6/tests/if5.exprc000644 031623 031623 00000000002 11530765646 015734 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if5.sh000644 031623 031623 00000000051 11530765646 015231 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR if5.c unifdef-2.6/tests/if6.c000644 031623 031623 00000000241 11530765646 015043 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.6/tests/if6a.experr000644 031623 031623 00000000000 11530765646 016260 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if6a.expout000644 031623 031623 00000000027 11530765646 016310 0ustar00fanf2fanf2000000 000000 int f1() { return 0; } unifdef-2.6/tests/if6a.exprc000644 031623 031623 00000000002 11530765646 016076 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if6a.sh000644 031623 031623 00000000026 11530765646 015375 0ustar00fanf2fanf2000000 000000 ../unifdef -DF1 if6.c unifdef-2.6/tests/if6b.experr000644 031623 031623 00000000000 11530765646 016261 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if6b.expout000644 031623 031623 00000000102 11530765646 016303 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #else int f2() { return 0; } #endif unifdef-2.6/tests/if6b.exprc000644 031623 031623 00000000002 11530765646 016077 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if6b.sh000644 031623 031623 00000000026 11530765646 015376 0ustar00fanf2fanf2000000 000000 ../unifdef -DF2 if6.c unifdef-2.6/tests/if6c.experr000644 031623 031623 00000000000 11530765646 016262 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if6c.expout000644 031623 031623 00000000142 11530765646 016310 0ustar00fanf2fanf2000000 000000 #if F1 int f1() { return 0; } #elif F2 int f2() { return 0; } #else int f3() { return 0; } #endif unifdef-2.6/tests/if6c.exprc000644 031623 031623 00000000002 11530765646 016100 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if6c.sh000644 031623 031623 00000000026 11530765646 015377 0ustar00fanf2fanf2000000 000000 ../unifdef -DF3 if6.c unifdef-2.6/tests/if6d.experr000644 031623 031623 00000000000 11530765646 016263 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/if6d.expout000644 031623 031623 00000000202 11530765646 016306 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.6/tests/if6d.exprc000644 031623 031623 00000000002 11530765646 016101 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/if6d.sh000644 031623 031623 00000000026 11530765646 015400 0ustar00fanf2fanf2000000 000000 ../unifdef -DF4 if6.c unifdef-2.6/tests/none.c000644 031623 031623 00000000232 11530765646 015316 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.6/tests/none.experr000644 031623 031623 00000000000 11530765646 016372 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/none.expout000644 031623 031623 00000000232 11530765646 016420 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.6/tests/none.exprc000644 031623 031623 00000000002 11530765646 016210 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/none.sh000644 031623 031623 00000000052 11530765646 015506 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR none.c unifdef-2.6/tests/outdir.experr000644 031623 031623 00000000000 11530765646 016741 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/outdir.expout000644 031623 031623 00000000375 11530765646 016777 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.6/tests/outdir.exprc000644 031623 031623 00000000002 11530765646 016557 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/outdir.sh000644 031623 031623 00000000156 11530765646 016062 0ustar00fanf2fanf2000000 000000 mkdir -p outdir ../unifdef -DFOO=1 -DFOOB=42 -UBAR -ooutdir/outfile.c if1.c cat outdir/outfile.c rm -r outdir unifdef-2.6/tests/outfile.experr000644 031623 031623 00000000000 11530765646 017102 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/outfile.expout000644 031623 031623 00000000375 11530765646 017140 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.6/tests/outfile.exprc000644 031623 031623 00000000002 11530765646 016720 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/outfile.sh000644 031623 031623 00000000120 11530765646 016212 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR -ooutfile.c if1.c cat outfile.c rm outfile.c unifdef-2.6/tests/overdir.experr000644 031623 031623 00000000000 11530765646 017105 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/overdir.expout000644 031623 031623 00000000375 11530765646 017143 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.6/tests/overdir.exprc000644 031623 031623 00000000002 11530765646 016723 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/overdir.sh000644 031623 031623 00000000241 11530765646 016221 0ustar00fanf2fanf2000000 000000 mkdir -p overdir cp if1.c overdir/overwrite.c ../unifdef -DFOO=1 -DFOOB=42 -UBAR -ooverdir/overwrite.c overdir/overwrite.c cat overdir/overwrite.c rm -r overdir unifdef-2.6/tests/overin.experr000644 031623 031623 00000000000 11530765646 016735 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/overin.expout000644 031623 031623 00000000375 11530765646 016773 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.6/tests/overin.exprc000644 031623 031623 00000000002 11530765646 016553 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/overin.sh000644 031623 031623 00000000143 11530765646 016052 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 #line 9 int foo() { return 0; } #line 13 #line 17 int bar() { return 0; } #line 21 int main() { foo(); bar(); } unifdef-2.6/tests/overlnnum.exprc000644 031623 031623 00000000002 11530765646 017276 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/overlnnum.sh000644 031623 031623 00000000164 11530765646 016600 0ustar00fanf2fanf2000000 000000 cp if1.c overwrite.c ../unifdef -DFOO=1 -DFOOB=42 -UBAR -n -ooverwrite.c overwrite.c cat overwrite.c rm overwrite.c unifdef-2.6/tests/overwrite.experr000644 031623 031623 00000000000 11530765646 017461 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/overwrite.expout000644 031623 031623 00000000375 11530765646 017517 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.6/tests/overwrite.exprc000644 031623 031623 00000000002 11530765646 017277 0ustar00fanf2fanf2000000 000000 0 unifdef-2.6/tests/overwrite.sh000644 031623 031623 00000000161 11530765646 016576 0ustar00fanf2fanf2000000 000000 cp if1.c overwrite.c ../unifdef -DFOO=1 -DFOOB=42 -UBAR -ooverwrite.c overwrite.c cat overwrite.c rm overwrite.c unifdef-2.6/tests/small1.c000644 031623 031623 00000000412 11530765646 015550 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.6/tests/small1.experr000644 031623 031623 00000000000 11530765646 016624 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/small1.expout000644 031623 031623 00000000333 11530765646 016654 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.6/tests/small1.exprc000644 031623 031623 00000000002 11530765646 016442 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/small1.sh000644 031623 031623 00000000054 11530765646 015742 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR small1.c unifdef-2.6/tests/small2.c000644 031623 031623 00000000413 11530765646 015552 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.6/tests/small2.experr000644 031623 031623 00000000000 11530765646 016625 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/small2.expout000644 031623 031623 00000000333 11530765646 016655 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.6/tests/small2.exprc000644 031623 031623 00000000002 11530765646 016443 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/small2.sh000644 031623 031623 00000000054 11530765646 015743 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR small2.c unifdef-2.6/tests/spaces1.c000644 031623 031623 00000000421 11530765646 015716 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.6/tests/spaces1.experr000644 031623 031623 00000000000 11530765646 016772 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/spaces1.expout000644 031623 031623 00000000335 11530765646 017024 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.6/tests/spaces1.exprc000644 031623 031623 00000000002 11530765646 016610 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/spaces1.sh000644 031623 031623 00000000055 11530765646 016111 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR spaces1.c unifdef-2.6/tests/spaces2.c000644 031623 031623 00000000416 11530765646 015723 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.6/tests/spaces2.experr000644 031623 031623 00000000000 11530765646 016773 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/spaces2.expout000644 031623 031623 00000000335 11530765646 017025 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.6/tests/spaces2.exprc000644 031623 031623 00000000002 11530765646 016611 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/spaces2.sh000644 031623 031623 00000000055 11530765646 016112 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR spaces2.c unifdef-2.6/tests/spaces3.c000644 031623 031623 00000000424 11530765646 015723 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.6/tests/spaces3.experr000644 031623 031623 00000000000 11530765646 016774 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/spaces3.expout000644 031623 031623 00000000336 11530765646 017027 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.6/tests/spaces3.exprc000644 031623 031623 00000000002 11530765646 016612 0ustar00fanf2fanf2000000 000000 1 unifdef-2.6/tests/args1.c000644 031623 031623 00000000054 11530765646 015376 0ustar00fanf2fanf2000000 000000 #if defined(DUMMY) || FOO(arg) hello #endif unifdef-2.6/tests/spaces3.sh000644 031623 031623 00000000055 11530765646 016113 0ustar00fanf2fanf2000000 000000 ../unifdef -DFOO=1 -DFOOB=42 -UBAR spaces3.c unifdef-2.6/tests/spaces4.c000644 031623 031623 00000000423 11530765646 015723 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.6/tests/spaces4.experr000644 031623 031623 00000000000 11530765646 016775 0ustar00fanf2fanf2000000 000000 unifdef-2.6/tests/spaces4.expout000644 031623 031623 00000000336 11530765646 017030 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.6/tests/spaces4.exprc000644 031623 031623 00000000002 11530765646 016613 0ustar00fanf2fanf2000000 000000 1