# regression tests for the iffe command TEST 01 'command line basics' EXEC -r -v - hdr stdio OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes' EXEC -r -v -s bsh - hdr stdio EXEC -r -v - hdr stdio,limits OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define _hdr_limits 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is limits.h a header ... yes' EXEC -r -v -s bsh - hdr stdio,limits EXEC -r -v - hdr,lib no_foo_bar,no_bar_foo stdio.h OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is no_foo_bar.h a header ... no iffe: test: is no_bar_foo.h a header ... no iffe: test: is no_foo_bar a library function ... no iffe: test: is no_bar_foo a library function ... no' EXEC -r -v -s bsh - hdr,lib no_foo_bar,no_bar_foo stdio.h EXEC -r -v - hdr no_foo_bar,no_bar_foo stdio.h : lib no_foo_bar,no_bar_foo stdio.h EXEC -r -v -s bsh - hdr no_foo_bar,no_bar_foo stdio.h : lib no_foo_bar,no_bar_foo stdio.h TEST 02 'file input basics' EXEC -r -v - t1.iffe INPUT t1.iffe $'hdr stdio' OUTPUT - $'/* : : generated from t1.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes' EXEC -r -v -s bsh - t1.iffe EXEC -r -v - t2.iffe INPUT t2.iffe $'hdr stdio,limits' OUTPUT - $'/* : : generated from t2.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define _hdr_limits 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is limits.h a header ... yes' EXEC -r -v -s bsh - t2.iffe EXEC -r -v - t3.iffe INPUT t3.iffe $'hdr,lib no_foo_bar,no_bar_foo stdio.h' OUTPUT - $'/* : : generated from t3.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is no_foo_bar.h a header ... no iffe: test: is no_bar_foo.h a header ... no iffe: test: is no_foo_bar a library function ... no iffe: test: is no_bar_foo a library function ... no' EXEC -r -v -s bsh - t3.iffe EXEC -r -v - t3.iffe INPUT t3.iffe $'hdr no_foo_bar,no_bar_foo stdio.h lib no_foo_bar,no_bar_foo stdio.h' EXEC -r -v -s bsh - t3.iffe TEST 03 'nested if' EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if hdr stdio if lib open { HIT 1 } elif lib close { HIT 2 } else { HIT 3 } endif elif hdr limits { HIT 4 } else { HIT 5 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define _lib_open 1 /* open() in default lib(s) */ HIT 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is open a library function ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if hdr _XXX_stdio if lib open { HIT 1 } elif lib close { HIT 2 } else { HIT 3 } endif elif hdr limits { HIT 4 } else { HIT 5 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _hdr_limits 1 /* #include ok */ HIT 4 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is _XXX_stdio.h a header ... no iffe: test: is limits.h a header ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if hdr _XXX_stdio if lib open { HIT 1 } elif lib close { HIT 2 } else { HIT 3 } endif elif hdr _XXX_limits { HIT 4 } else { HIT 5 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ HIT 5 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is _XXX_stdio.h a header ... no iffe: test: is _XXX_limits.h a header ... no' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if hdr stdio if lib _XXX_open { HIT 1 } elif lib close { HIT 2 } else { HIT 3 } endif elif hdr limits { HIT 4 } else { HIT 5 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define _lib_close 1 /* close() in default lib(s) */ HIT 2 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is _XXX_open a library function ... no iffe: test: is close a library function ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if hdr stdio if lib _XXX_open { HIT 1 } elif lib _XXX_close { HIT 2 } else { HIT 3 } endif elif hdr limits { HIT 4 } else { HIT 5 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ HIT 3 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is _XXX_open a library function ... no iffe: test: is _XXX_close a library function ... no' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if mem stat.st_atime sys/types.h sys/stat.h { #define ATIME 1 } elif mem stat.st_ctime sys/types.h sys/stat.h { #define CTIME 1 } elif mem stat.st_mtime sys/types.h sys/stat.h { #define MTIME 1 } else pass{ no_stat_time=1 }end { #define NOTIME 1 } endif if ( !no_stat_time ) { #define YESTIME 1 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _sys_stat 1 /* #include ok */ #define _mem_st_atime_stat 1 /* st_atime is a member of struct stat */ #define ATIME 1 #define YESTIME 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is sys/stat.h a header ... yes iffe: test: is stat a type or typedef ... no iffe: test: is st_atime a member of struct stat ... yes iffe: test: is ( !no_stat_time ) true ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if mem foo_stat.st_atime sys/types.h sys/stat.h { #define ATIME 1 } elif mem stat.st_ctime sys/types.h sys/stat.h { #define CTIME 1 } elif mem stat.st_mtime sys/types.h sys/stat.h { #define MTIME 1 } else pass{ no_stat_time=1 }end { #define NOTIME 1 } endif if ( !no_stat_time ) { #define YESTIME 1 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _sys_stat 1 /* #include ok */ #define _mem_st_ctime_stat 1 /* st_ctime is a member of struct stat */ #define CTIME 1 #define YESTIME 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is sys/stat.h a header ... yes iffe: test: is foo_stat a type or typedef ... no iffe: test: is st_atime a member of struct foo_stat ... no iffe: test: is stat a type or typedef ... no iffe: test: is st_ctime a member of struct stat ... yes iffe: test: is ( !no_stat_time ) true ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if mem foo_stat.st_atime sys/types.h sys/stat.h { #define ATIME 1 } elif mem foo_stat.st_ctime sys/types.h sys/stat.h { #define CTIME 1 } elif mem stat.st_mtime sys/types.h sys/stat.h { #define MTIME 1 } else pass{ no_stat_time=1 }end { #define NOTIME 1 } endif if ( !no_stat_time ) { #define YESTIME 1 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _sys_stat 1 /* #include ok */ #define _mem_st_mtime_stat 1 /* st_mtime is a member of struct stat */ #define MTIME 1 #define YESTIME 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is sys/stat.h a header ... yes iffe: test: is foo_stat a type or typedef ... no iffe: test: is st_atime a member of struct foo_stat ... no iffe: test: is st_ctime a member of struct foo_stat ... no iffe: test: is stat a type or typedef ... no iffe: test: is st_mtime a member of struct stat ... yes iffe: test: is ( !no_stat_time ) true ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff ifelse if mem foo_stat.st_atime sys/types.h sys/stat.h { #define ATIME 1 } elif mem foo_stat.st_ctime sys/types.h sys/stat.h { #define CTIME 1 } elif mem foo_stat.st_mtime sys/types.h sys/stat.h { #define MTIME 1 } else pass{ no_stat_time=1 }end { #define NOTIME 1 } endif if ( !no_stat_time ) { #define YESTIME 1 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _ifelse_H #define _ifelse_H 1 #define _sys_types 1 /* #include ok */ #define _sys_stat 1 /* #include ok */ #define NOTIME 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is sys/stat.h a header ... yes iffe: test: is foo_stat a type or typedef ... no iffe: test: is st_atime a member of struct foo_stat ... no iffe: test: is st_ctime a member of struct foo_stat ... no iffe: test: is st_mtime a member of struct foo_stat ... no iffe: test: is ( !no_stat_time ) true ... no' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'set explicit iff previous hdr stdio if hdr stdio { OK } else { OK } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _previous_H #define _previous_H 1 #define _hdr_stdio 1 /* #include ok */ OK #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes' EXEC -r -v -s bsh - t.iffe TEST 04 'test variable/macro override' EXEC -r -v - t.iffe INPUT t.iffe $'iff macro HAVE_STDIO = hdr stdio' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #define HAVE_STDIO 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if hdr - stdio { #define HIT 1 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #define HIT 1 #endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if - hdr stdio { #define HIT 1 } endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if ? hdr stdio { #define HIT 1 } endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if hdr - stdio { #define HIT 1 } endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if HAVE_STDIO = hdr stdio { #define HIT 1 } endif if ( HAVE_STDIO ) { #define TOO ALSO } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #define HAVE_STDIO 1 /* #include ok */ #define HIT 1 #define TOO ALSO #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is ( HAVE_STDIO ) true ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if HAVE_STDIO = hdr stdio { #define HIT 1 } endif exp ALSO HAVE_STDIO' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #define HAVE_STDIO 1 /* #include ok */ #define HIT 1 #define ALSO 1 /* HAVE_STDIO is true */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is HAVE_STDIO true ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if HAVE_STDIO = hdr stdio { #define HIT 1 } endif ALSO = ( HAVE_STDIO )' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #define HAVE_STDIO 1 /* #include ok */ #define HIT 1 #define ALSO 1 /* ( HAVE_STDIO ) is true */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is ( HAVE_STDIO ) true ... yes' EXEC -r -v -s bsh - t.iffe TEST 05 'test code option sequence' EXEC -r -v - t.iffe INPUT t.iffe $'iff macro tst seq - -DA=1 - -DB=1 note{ long int type }end compile{ #if A == 1 && B == 0 #define t long #else #define t error #endif t n = 0; }end' OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #define _seq 1 /* long int type */ #endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro tst seq -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{ #if G == 1 && N == 1 #define t long #else #define t error #endif t n = 0; }end' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro tst seq - -DA=1 - -DB=1 note{ long int type }end compile{ #if A == 0 && B == 1 #define t long #else #define t error #endif t n = 0; }end' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro tst seq -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{ #if G == 1 && N == 2 #define t long #else #define t error #endif t n = 0; }end' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro tst seq - -DA=1 - -DB=1 note{ long int type }end compile{ #if A == 0 && B == 0 #define t long #else #define t error #endif t n = 0; }end' OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... no' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro tst seq -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{ #if G == 1 && N == 0 #define t long #else #define t error #endif t n = 0; }end' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DA=1 - -DB=1 note{ long int type }end compile{ #if A == 1 && B == 0 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ /* long int type */ #define seq 1 #endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{ #if G == 1 && N == 1 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DA=1 - -DB=1 note{ long int type }end compile{ #if A == 0 && B == 1 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{ #if G == 1 && N == 2 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DA=1 - -DB=1 note{ long int type }end compile{ #if A == 0 && B == 0 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... no' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst -DG=1 - -DN=1 - -DN=2 note{ long int type }end compile{ #if G == 1 && N == 0 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{ #if N == 1 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ /* long int type */ #define seq 1 #endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{ #if N == 2 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{ #if N == 3 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... iffe: test: long int type ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v - t.iffe INPUT t.iffe $'iff macro if tst - -DN=1 - -DN=2 - -DN=3 note{ long int type }end compile{ #if N == 0 #define t long #else #define t error #endif t n = 0; }end { #define seq 1 } endif' OUTPUT - '/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _macro_H #define _macro_H 1 #define _sys_types 1 /* #include ok */ #endif' ERROR - 'iffe: test: is sys/types.h a header ... yes iffe: test: long int type ... iffe: test: long int type ... iffe: test: long int type ... no' EXEC -r -v -s bsh - t.iffe TEST 06 'block side effects' EXEC -r - t.iffe INPUT t.iffe $'iff - tst output{ int main() { printf("HIT\\n"); return 0; } }end' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #define _sys_types 1 /* #include ok */ HIT' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'iff tst - output{ int main() { printf("HIT\\n"); return 0; } }end' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'iff tst - output{ int main() { printf("HIT\\n"); return 1; } }end' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #define _sys_types 1 /* #include ok */' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'iff tst - nooutput{ int main() { printf("HIT\\n"); return 1; } }end' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #define _sys_types 1 /* #include ok */ HIT' EXEC -r -s bsh - t.iffe TEST 07 'diagnostics' EXEC -r - t.iffe INPUT t.iffe $'tst foo' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #endif' ERROR - $'iffe: t.iffe:1: tst: unknown feature test' EXIT 1 EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'if (1)' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */' ERROR - $'iffe: t.iffe:1: missing endif' EXIT 1 EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'if' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */' ERROR - $'iffe: t.iffe:1: missing endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'endif' ERROR - $'iffe: t.iffe:1: endif: no matching if' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'if { }end' ERROR - $'iffe: t.iffe:2: missing }' EXEC -r -s bsh - t.iffe TEST 08 'negation consternation' EXEC -r - t.iffe INPUT t.iffe $'npt fopen,fooon stdio.h' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdlib 1 /* #include ok */ #define _hdr_unistd 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define _npt_fooon 1 /* fooon() needs a prototype */ #endif' EXEC -r -u - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdlib 1 /* #include ok */ #define _hdr_unistd 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #undef _npt_fopen /* fopen() does not need a prototype */ #define _npt_fooon 1 /* fooon() needs a prototype */ #endif' EXEC -r -a - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdlib 1 /* #include ok */ #define _hdr_unistd 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define _npt_fopen 0 /* fopen() does not need a prototype */ #define _npt_fooon 1 /* fooon() needs a prototype */ #endif' EXEC -r -C - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define HAVE_SYS_TYPES_H 1 /* #include ok */ #define HAVE_STDLIB_H 1 /* #include ok */ #define HAVE_UNISTD_H 1 /* #include ok */ #define HAVE_STDIO_H 1 /* #include ok */ #define HAVE_FOPEN_DECL 1 /* fopen() does not need a prototype */ #undef HAVE_FOOON_DECL /* fooon() needs a prototype */ #endif' EXEC -r - t.iffe INPUT t.iffe $'NEED_FOPEN = npt fopen stdio.h HAVE_FOPEN = ! npt fopen stdio.h NEED_FOOON = npt fooon stdio.h HAVE_FOOON = ! npt fooon stdio.h' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdlib 1 /* #include ok */ #define _hdr_unistd 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #define HAVE_FOPEN 1 /* fopen() does not need a prototype */ #define NEED_FOOON 1 /* fooon() needs a prototype */ #endif' EXEC -r -u - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_stdlib 1 /* #include ok */ #define _hdr_unistd 1 /* #include ok */ #define _hdr_stdio 1 /* #include ok */ #undef NEED_FOPEN /* fopen() does not need a prototype */ #define HAVE_FOPEN 1 /* fopen() does not need a prototype */ #define NEED_FOOON 1 /* fooon() needs a prototype */ #undef HAVE_FOOON /* fooon() needs a prototype */ #endif' EXEC -r -C - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define HAVE_SYS_TYPES_H 1 /* #include ok */ #define HAVE_STDLIB_H 1 /* #include ok */ #define HAVE_UNISTD_H 1 /* #include ok */ #define HAVE_STDIO_H 1 /* #include ok */ #undef NEED_FOPEN /* fopen() does not need a prototype */ #define HAVE_FOPEN 1 /* fopen() does not need a prototype */ #define NEED_FOOON 1 /* fooon() needs a prototype */ #undef HAVE_FOOON /* fooon() needs a prototype */ #endif' TEST 09 'exp vs. if' EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_false { ONE } exp _tst_hit !_tst_hit&_tst_true pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #define _tst_hit 1 /* !_tst_false is true */ /* !_tst_false */ ONE #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_true { ONE } exp _tst_hit !_tst_hit&_tst_true pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #define _tst_hit 1 /* !_tst_hit&_tst_true is true */ TWO 0 1 #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_true { ONE } exp _tst_hit !_tst_hit&_tst_false pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #define _tst_hit 1 /* !_tst_hit&_tst_true is true */ /* !_tst_hit&_tst_true */ THREE #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_true { ONE } exp _tst_hit !_tst_hit&_tst_false pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_false { ONE } exp _tst_hit !_tst_hit&&_tst_true pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #define _tst_hit 1 /* !_tst_false is true */ /* !_tst_false */ ONE #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_true { ONE } exp _tst_hit !_tst_hit&&_tst_true pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #define _tst_hit 1 /* !_tst_hit&&_tst_true is true */ TWO 0 1 #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_true { ONE } exp _tst_hit !_tst_hit&&_tst_false pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #define _tst_hit 1 /* !_tst_hit&&_tst_true is true */ /* !_tst_hit&&_tst_true */ THREE #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) exp _tst_hit !_tst_true { ONE } exp _tst_hit !_tst_hit&&_tst_false pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) if ( ! _tst_false ) { ONE } elif ( _tst_true ) pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ ONE #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) if ( ! _tst_true ) { ONE } elif ( _tst_true ) pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ TWO #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) if ( ! _tst_true ) { ONE } elif ( _tst_false ) pass{ cat < ok */ #define _tst_true 1 /* ( 1 ) is true */ THREE #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) if ( ! _tst_true ) yes{ typedef struct { int dd_fd; /* file descriptor */ } DIR; }end endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _tst_true 1 /* ( 1 ) is true */ #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) if ( ! _tst_true ) { typedef struct { int dd_fd; /* file descriptor */ } DIR; } else { OK } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _tst_true 1 /* ( 1 ) is true */ OK #endif' EXEC -r -s bsh - t.iffe EXEC -r - t.iffe INPUT t.iffe $'_tst_false = ( 0 ) _tst_true = ( 1 ) if ( ! _tst_true ) { typedef struct { int dd_fd; /* file descriptor */ }; } else { OK } endif' EXEC -r -s bsh - t.iffe TEST 10 'exp details' EXEC -r -v - t.iffe INPUT t.iffe $'_str = "string" _hdr =
_aaa = ( 0 ) _zzz = ( 1 ) ( _str ) ( ! _str ) ( _hdr ) ( ! _hdr ) ( _aaa ) ( ! _aaa ) ( _zzz ) ( ! _zzz )' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _str "string" #define _hdr
#define _zzz 1 /* ( 1 ) is true */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is ( 0 ) true ... no iffe: test: is ( 1 ) true ... yes iffe: test: is ( _str ) true ... yes iffe: test: is ( ! _str ) true ... no iffe: test: is ( _hdr ) true ... yes iffe: test: is ( ! _hdr ) true ... no iffe: test: is ( _aaa ) true ... no iffe: test: is ( ! _aaa ) true ... yes iffe: test: is ( _zzz ) true ... yes iffe: test: is ( ! _zzz ) true ... no' EXEC -r -v -s bsh - t.iffe TEST 11 'set [no]define' EXEC -r -v - t.iffe INPUT t.iffe $'set nodefine mem stat.st_mtime sys/types.h sys/stat.h set define mem stat.st_mode sys/types.h sys/stat.h if ( _mem_st_mtime_stat ) { 1 } endif if ( _mem_st_mode_stat ) { 2 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _mem_st_mode_stat 1 /* st_mode is a member of struct stat */ 1 2 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is sys/stat.h a header ... yes iffe: test: is stat a type or typedef ... no iffe: test: is st_mtime a member of struct stat ... yes iffe: test: is st_mode a member of struct stat ... yes iffe: test: is ( _mem_st_mtime_stat ) true ... yes iffe: test: is ( _mem_st_mode_stat ) true ... yes' EXEC -r -v -s bsh - t.iffe TEST 12 'non-opaque mem' EXEC -r -v - mem OPAQUE -I. t.h INPUT t.h $'typedef struct opaque OPAQUE;' OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_t 1 /* #include ok */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is t.h a header ... yes iffe: test: is OPAQUE a type or typedef ... no iffe: test: is struct OPAQUE a non-opaque struct ... no' EXEC -r -v - mem NONOPAQUE -I. t.h INPUT t.h $'struct nonopaque { int pad; }; typedef struct nonopaque NONOPAQUE;' OUTPUT - $'/* : : generated by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _hdr_t 1 /* #include ok */ #define _mem_NONOPAQUE 1 /* NONOPAQUE is a non-opaque struct */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is t.h a header ... yes iffe: test: is NONOPAQUE a type or typedef ... yes iffe: test: is NONOPAQUE a non-opaque struct ... yes' TEST 13 'key states' EXEC -r -v - t.iffe INPUT t.iffe $'key int key const = key foo key bar = key aha = huh = int key chr = char = int' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _key_int 1 /* int is a reserved keyword */ #define _key_const 1 /* const is a reserved keyword */ #define bar /* default for reserved keyword bar */ #define aha int /* default for reserved keyword aha */ #define _key_char 1 /* char is a reserved keyword */ #define chr char /* alternate for reserved keyword chr */ #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is int a reserved keyword ... yes iffe: test: is const a reserved keyword ... yes iffe: test: is foo a reserved keyword ... no iffe: test: is bar a reserved keyword ... no iffe: test: is aha a reserved keyword ... no iffe: test: is huh a reserved keyword ... no iffe: test: is chr a reserved keyword ... no iffe: test: is char a reserved keyword ... yes' EXEC -r -v -s bsh - t.iffe EXEC -u -r -v - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _key_int 1 /* int is a reserved keyword */ #define _key_const 1 /* const is a reserved keyword */ #undef _key_foo /* foo is not a reserved keyword */ #undef _key_bar /* bar is not a reserved keyword */ #define bar /* default for reserved keyword bar */ #undef _key_huh /* huh is not a reserved keyword */ #define aha int /* default for reserved keyword aha */ #define _key_char 1 /* char is a reserved keyword */ #define chr char /* alternate for reserved keyword chr */ #endif' EXEC -u -r -v -s bsh - t.iffe EXEC -a -r -v - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define _key_int 1 /* int is a reserved keyword */ #define _key_const 1 /* const is a reserved keyword */ #define _key_foo 0 /* foo is not a reserved keyword */ #define _key_bar 0 /* bar is not a reserved keyword */ #define bar /* default for reserved keyword bar */ #define _key_huh 0 /* huh is not a reserved keyword */ #define aha int /* default for reserved keyword aha */ #define _key_char 1 /* char is a reserved keyword */ #define chr char /* alternate for reserved keyword chr */ #endif' EXEC -a -r -v -s bsh - t.iffe EXEC -C -r -v - t.iffe OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define HAVE_SYS_TYPES_H 1 /* #include ok */ #define HAVE_INT_RESERVED 1 /* int is a reserved keyword */ #define HAVE_CONST_RESERVED 1 /* const is a reserved keyword */ #undef HAVE_FOO_RESERVED /* foo is not a reserved keyword */ #undef HAVE_BAR_RESERVED /* bar is not a reserved keyword */ #define bar /* default for reserved keyword bar */ #undef HAVE_HUH_RESERVED /* huh is not a reserved keyword */ #define aha int /* default for reserved keyword aha */ #define HAVE_CHAR_RESERVED 1 /* char is a reserved keyword */ #define chr char /* alternate for reserved keyword chr */ #endif' EXEC -C -r -v -s bsh - t.iffe TEST 14 'inc file' EXEC -r -v - t.iffe INPUT t.iffe $'inc t_lib.h if ( bar_foo ) { #define all 1 } elif ( _foo_bar ) { #define some 1 } endif' INPUT t_lib.h '#define bar_foo ALL #define _foo_bar SOME' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define some 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is ( bar_foo ) true ... no iffe: test: is ( _foo_bar ) true ... yes' EXEC -r -v - t.iffe INPUT t.iffe $'inc t_lib.h . if ( bar_foo ) { #define all 1 } elif ( _foo_bar ) { #define ok 1 } endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define all 1 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is ( bar_foo ) true ... yes' EXEC -r -v - t.iffe INPUT t.iffe $'inc t_lib.h . ? if ( bar_foo ) { #define all 1 } elif ( _foo_bar ) { #define ok 1 } endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: t.iffe:1: warning: ?: operands ignored iffe: test: is ( bar_foo ) true ... yes' EXEC -r -v - t.iffe INPUT t.iffe $'inc foo_lib.h' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: t.iffe:1: foo_lib.h: file not found' EXIT 1 EXEC -r -v - t.iffe INPUT t.iffe $'inc' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: t.iffe:1: path expected' TEST 15 'KnR compatibility' EXEC -r -v - t.iffe INPUT t.iffe $' if ( 1 ) { #define all 1 } endif if ( 2 ) { #define some 1 } endif cat{ #define a 1 #define b 2 #define c 3 #define d 4 }end' #define _foo_bar SOME' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define some 1 #endif' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #define all 1 #define some 1 #define a 1 #define b 2 #define c 3 #define d 4 #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is ( 1 ) true ... yes iffe: test: is ( 2 ) true ... yes iffe: test: cat{ ... }end ... yes' EXEC -r -v -s bsh - t.iffe EXEC -r -v -s osh - t.iffe TEST 16 '{ define extern include print }' EXEC -r -v - t.iffe INPUT t.iffe $' print /* test header */ header stdio.h define EOF -1 define FoobaR (a,b) ((a)+(b)) define FoomaC -1 extern fopen FILE* (char*, char*) extern BarfoO struct barfoo* (int) extern Tab_lE struct barfoo* [10]' OUTPUT - $'/* test header */ /* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _REGRESS #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #include #define FoobaR(a,b) ((a)+(b)) #define FoomaC -1 extern struct barfoo* BarfoO(int); extern struct barfoo* Tab_lE[10]; #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes iffe: test: is EOF a macro ... yes iffe: test: is FoobaR a macro ... no iffe: test: is FoomaC a macro ... no iffe: test: is fopen a symbol that needs a prototype ... no iffe: test: is BarfoO a symbol that needs a prototype ... yes iffe: test: is Tab_lE a symbol that needs a prototype ... yes' TEST 17 'features/* => FEATURE/*' EXEC -r -v run features/stdio INPUT features/stdio $'set prototyped header stdio.h' OUTPUT FEATURE/stdio $' /* : : generated by proto : : */ /* : : generated from features/stdio by iffe version 1995-03-19 : : */ #ifndef _REGRESS #if !defined(__PROTO__) # if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus) # if defined(__cplusplus) # define __LINKAGE__ "C" # else # define __LINKAGE__ # endif # define __STDARG__ # define __PROTO__(x) x # define __OTORP__(x) # define __PARAM__(n,o) n # if !defined(__STDC__) && !defined(__cplusplus) # if !defined(c_plusplus) # define const # endif # define signed # define void int # define volatile # define __V_ char # else # define __V_ void # endif # else # define __PROTO__(x) () # define __OTORP__(x) x # define __PARAM__(n,o) o # define __LINKAGE__ # define __V_ char # define const # define signed # define void int # define volatile # endif # define __MANGLE__ __LINKAGE__ # if defined(__cplusplus) || defined(c_plusplus) # define __VARARG__ ... # else # define __VARARG__ # endif # if defined(__STDARG__) # define __VA_START__(p,a) va_start(p,a) # else # define __VA_START__(p,a) va_start(p) # endif # if !defined(__INLINE__) # if defined(__cplusplus) # define __INLINE__ extern __MANGLE__ inline # else # if defined(_WIN32) && !defined(__GNUC__) # define __INLINE__ __inline # endif # endif # endif #endif #if !defined(__LINKAGE__) #define __LINKAGE__ /* 2004-08-11 transition */ #endif #define _REGRESS 1 #define _sys_types 1 /* #include ok */ #include #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes iffe: test: is stdio.h a header ... yes' TEST 18 'api + ver' EXEC -r -v - t.iffe INPUT t.iffe $'iff api ver foo 20100606 ver bar 19840919 api foo 19991231 dis dat tother api foo 20100601 dat api foo 20100606 dis api bar 19991231 moe larry shemp api bar 20020202 curly api bar 20030303 shemp api bar 20040404 joe_b api bar 20050505 joe_d ' OUTPUT - $'/* : : generated from t.iffe by iffe version 1995-03-19 : : */ #ifndef _api_H #define _api_H 1 #define _sys_types 1 /* #include ok */ #define FOO_VERSION 20100606 #define BAR_VERSION 19840919 #define FOOAPI(rel) ( _BLD_foo || !_API_foo || _API_foo >= rel ) #if !defined(_API_foo) && defined(_API_DEFAULT) #define _API_foo _API_DEFAULT #endif #if FOOAPI(20100601) #undef dat #define dat dat_20100601 #elif _API_foo >= 19991231 #undef dat #define dat dat_19991231 #endif #if FOOAPI(20100606) #undef dis #define dis dis_20100606 #elif _API_foo >= 19991231 #undef dis #define dis dis_19991231 #endif #if FOOAPI(19991231) #undef tother #define tother tother_19991231 #endif #define _API_foo_MAP "dat_20100601 dat_19991231 dis_20100606 dis_19991231 tother_19991231" #define BARAPI(rel) ( _BLD_bar || !_API_bar || _API_bar >= rel ) #if !defined(_API_bar) && defined(_API_DEFAULT) #define _API_bar _API_DEFAULT #endif #if BARAPI(20020202) #undef curly #define curly curly_20020202 #endif #if BARAPI(20040404) #undef joe_b #define joe_b joe_b_20040404 #endif #if BARAPI(20050505) #undef joe_d #define joe_d joe_d_20050505 #endif #if BARAPI(19991231) #undef larry #define larry larry_19991231 #endif #if BARAPI(19991231) #undef moe #define moe moe_19991231 #endif #if BARAPI(20030303) #undef shemp #define shemp shemp_20030303 #elif _API_bar >= 19991231 #undef shemp #define shemp shemp_19991231 #endif #define _API_bar_MAP "curly_20020202 joe_b_20040404 joe_d_20050505 larry_19991231 moe_19991231 shemp_20030303 shemp_19991231" #endif' ERROR - $'iffe: test: is sys/types.h a header ... yes'