diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /fixincludes | |
download | cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2 cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'fixincludes')
121 files changed, 30702 insertions, 0 deletions
diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog new file mode 100644 index 000000000..0ff992e79 --- /dev/null +++ b/fixincludes/ChangeLog @@ -0,0 +1,1230 @@ +2013-04-12 Release Manager + + * GCC 4.6.4 released. + +2012-03-01 Release Manager + + * GCC 4.6.3 released. + +2011-10-26 Release Manager + + * GCC 4.6.2 released. + +2011-06-27 Release Manager + + * GCC 4.6.1 released. + +2011-03-25 Release Manager + + * GCC 4.6.0 released. + +2010-11-20 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + PR other/46202 + * Makefile.in (install-strip): New phony target. + (all, check, install): Also mark as phony. + +2010-11-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (irix_pthread_init): New fix. + * fixincl.x: Regenerate. + * tests/base/pthread.h [IRIX_PTHREAD_INIT_CHECK]: New test. + +2010-10-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR c++/46024 + * inclhack.def (solaris_sys_va_list): New fix. + * fixincl.x: Regenerate. + * tests/base/sys/va_list.h: New test. + +2010-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + * inclhack.def (hpux_htonl): Allow trailing whitespace in select. + * fixincl.x: Regenerate. + +2010-07-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (solaris_cond_init): New fix. + * fixincl.x: Regenerate. + * tests/base/pthread.h [SOLARIS_COND_INIT_CHECK]: New test. + [SOLARIS_MUTEX_INIT_2_CHECK]: Adapt. + +2010-06-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (solaris__restrict, solaris_complex_cxx): New fixes + * fixincl.x: Regenerate. + * tests/base/complex.h [SOLARIS_COMPLEX_CXX_CHECK]: New test. + * tests/base/sys/feature_tests.h: New file. + +2010-06-03 Joern Rennecke <joern.rennecke@embecosm.com> + Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + PR bootstrap/42798 + * configure.ac: Check for declaration of 'basename(char *)'. + * configure: Regenerate. + +2010-04-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (alpha_wchar): Remove. + * fixincl.x: Regenerate. + * tests/base/wchar.h: Remove. + +2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * aclocal.m4: Regenerate. + +2010-03-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (alpha_assert): Allow for more whitespace in + select. + * fixincl.x: Regenerate. + +2010-03-28 H.J. Lu <hongjiu.lu@intel.com> + + PR target/40722 + * mkfixinc.sh: Revert the last change for mingw. + +2010-03-24 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (glibc_strncpy): New fix. + * fixincl.x: Regenerate. + * tests/base/bits/string2.h: Update. + +2010-03-23 H.J. Lu <hongjiu.lu@intel.com> + + PR target/40722 + * mkfixinc.sh: Fix stdlib.h for mingw. + +2010-02-19 Bruce Korb <bkorb@gnu.org> + + * inclhack.def: remove vestiges of inadvertently committed changes + +2010-02-10 Bruce Korb <bkorb@gnu.org> + + * README: fix up references to old gcc/fixinc directory + +2010-01-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (solaris_int_limits_3): New fix. + * fixincl.x: Regenerate. + * tests/base/sys/int_limits.h [SOLARIS_INT_LIMITS_3_CHECK]: New + test. + + * inclhack.def (solaris_int_const, solaris_int_limits_1, + solaris_int_limits_2 ): Applies to Solaris 2 in general. + Remove select. + Add mach for *-*-solaris2*. + Change second c_fix_arg to select. + Remove #pragma ident from test_text. + * fixincl.x: Regenerate. + * tests/base/sys/int_const.h [SOLARIS_INT_CONST_CHECK]: Remove + #pragma trigger text. + * tests/base/sys/int_limits.h [SOLARIS_INT_LIMITS_1_CHECK, + SOLARIS_INT_LIMITS_2_CHECK]: Likewise. + +2010-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * inclhack.def (aix_stdint_1): Add stdint-aix.h to files. + (aix_stdint_2): Likewise. + (aix_stdint_3): Likewise. + (aix_stdint_4): Likewise. + (aix_stdint_5): Likewise. + (darwin_stdint_1): Add stdint-darwin.h to files. + (darwin_stdint_2): Likewise. + (darwin_stdint_3): Likewise. + (darwin_stdint_4): Likewise. + (darwin_stdint_5): Likewise. + (darwin_stdint_6): Likewise. + (darwin_stdint_7): Likewise. + (hpux_c99_intptr): Add stdint-hpux11.h to files. + (hpux_c99_inttypes): Likewise. + (hpux_c99_inttypes2): Likewise. + (hpux_stdint_least_fast): Likewise. + (irix_stdint_c99): Renamed to irix_stdint_c99_mode. + (irix_stdint_c99_types): New fix. + (irix_stdint_c99_macros): New fix. + (newlib_stdint_1): Add stdint-newlib.h to files. + (newlib_stdint_2): Likewise. + fixincl.x: Regenerate. + tests/base/stdint-aix.h: New file. + tests/base/stdint.h [AIX_STDINT_1_CHECK, AIX_STDINT_2_CHECK, + AIX_STDINT_3_CHECK, AIX_STDINT_4_CHECK, AIX_STDINT_5_CHECK]: Moved ... + tests/base/stdint-aix.h: ... here. + [AIX_STDINT_3_CHECK]: Updated to match aix_stdint_3 fix. + [AIX_STDINT_4_CHECK]: Updated to match aix_stdint_4 fix. + [AIX_STDINT_5_CHECK]: Updated to match aix_stdint_5 fix. + tests/base/stdint-darwin.h: New file. + tests/base/stdint.h [DARWIN_STDINT_1_CHECK, DARWIN_STDINT_2_CHECK, + DARWIN_STDINT_3_CHECK, DARWIN_STDINT_4_CHECK, + DARWIN_STDINT_5_CHECK, DARWIN_STDINT_6_CHECK]: Moved ... + tests/base/stdint-darwin.h: ... here. + [DARWIN_STDINT_1_CHECK]: Updated to match darwin_stdint_1 fix. + [DARWIN_STDINT_4_CHECK]: Updated to match darwin_stdint_4 fix. + [DARWIN_STDINT_6_CHECK]: Updated to match darwin_stdint_6 fix. + tests/base/stdint-hpux11.h: New file. + tests/base/stdint.h [HPUX_C99_INTPTR_CHECK, + HPUX_C99_INTTYPES2_CHECK, HPUX_STDINT_LEAST_FAST_CHECK]: Moved ... + tests/base/stdint-hpux11.h: ... here. + [HPUX_C99_INTPTR_CHECK]: Updated to match hpux_c99_intptr fix. + [HPUX_C99_INTTYPES2_CHECK]: Updated to match hpux_c99_inttypes2 fix. + tests/base/stdint.h [IRIX_STDINT_C99_CHECK]: Renamed guard to + IRIX_STDINT_C99_MODE_CHECK. + tests/base/stdint-irix65.h: New file. + tests/base/stdint-newlib.h: New file. + tests/base/stdint.h [NEWLIB_STDINT_1_CHECK, + NEWLIB_STDINT_2_CHECK]: Moved ... + tests/base/stdint-newlib.h: ... here. + +2009-12-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2009-10-21 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux_stdint_least_fast): Simplify. + * fixincl.x: Regenerate. + * tests/base/stdint.h: Update. + +2009-09-15 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * inclhack.def (isc_fmod, isc_omits_with_stdc) + (nested_sys_limits, sco_math): Remove. + * tests/base/math.h (ISC_FMOD_CHECK, SCO_MATH_CHECK): Remove. + * tests/base/stdio.h (ISC_OMITS_WITH_STDC_CHECK): Remove. + * tests/base/sys/limits.h: Remove. + * fixincl.x: Regenerate. + +2009-09-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + PR testsuite/29737 + PR bootstrap/35938 + PR testsuite/39655 + * check.tpl: Fix typos. + * README: Likewise. Also, document that 'select' uses ERE. + * mkheaders.in: Update copyright years in --version output. + * inclhack.def (sco_math): Add missing final newline in sed + script 'a', 'c', or 'i' commands, for BSD sed. + (sco_math): In the text of 'a', 'c', or 'i' sed + commands, prepend leading white space with a backslash to avoid + the whitespace to be removed by BSD sed. + (sco_math): Match plain 'C++' instead of 'C\+\+' in sed regex. + (x11_new): Fix sed expression, for BSD sed. + (glibc_mutex_init): Fix newlines in sed 's' command replacement + part, for GNU sed 3.02 and Solaris sed. + (glibc_mutex_init): Replace unportable \+ sed regex operator + with \{1,\}. + (glibc_c99_inline_2, glibc_mutex_init): Avoid unportable sed + alternation \| regex operator. + (solaris_complex): Remove superfluous backslashes from + replacement string. Replace \+ operator with \{1,\}. + * tests/base/Xm/Traversal.h: This is fixed for BSD sed now. + * fixincl.x: Regenerate. + +2009-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR libfortran/41169 + * inclhack.def (irix_complex): New fix. + (solaris_complex): Likewise. + * fixincl.x: Regenerate. + * tests/base/complex.h [IRIX_COMPLEX_CHECK, SOLARIS_COMPLEX_CHECK]: + New tests. + +2009-08-28 Bruce Korb <bkorb@gnu.org> + Steve Ellcey <sje@cup.hp.com> + + * README (files): Describe files entry. + * inclhack.def (hpux_stdint_least): Remove. + (hpux_stdint_fast): Remove. + (hpux_stdint_fast): Remove. + (hpux_stdint_least_fast): New. + (hpux_inttype_int_least8_t): Remove. + (hpux_inttype_int8_t): Modify. + * fixincl.x: Regenerate. + * tests/base/stdint.h: Update. + * tests/base/sys/_inttypes.h: Update. + +2009-08-28 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux_imaginary_i): Remove spaces. + * fixincl.x: Regenerate. + * tests/base/stdint.h: Update AIX fixes. + * tests/base/complex.h: Change HPUX_IMAGINARY_I_CHECK fix. + +2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure.ac (AC_PREREQ): Bump to 2.64. + +2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * aclocal.m4: Regenerate. + * configure: Regenerate. + * config.h.in: Regenerate. + +2009-08-17 David Edelsohn <edelsohn@gnu.org> + + * inclhack.def (aix_complex): Redefine _Complex_I. Do not + redefine I. + * (aix_stdint_[12345]): New fixes. + * fixincl.x: Regenerate. + * tests/base/complex.h: Update check. + * tests/base/stdint.h: Add AIX stdint.h checks. + +2009-08-14 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux_imaginary_i): New fix. + * fixincl.x: Regenerate. + * tests/base/complex.h: New file. + +2009-08-12 David Edelsohn <edelsohn@gnu.org> + + * inclhack.def (aix_complex): New fix. + * fixincl.x: Regenerate. + +2009-08-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + * inclhack.def (hpux_inttype_int_least8_t): Also apply on hpux10*. + (hpux_inttype_int8_t): Likewise. + * fixincl.x: Regenerate. + +2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * Makefile.in (AUTOCONF, AUTOHEADER, ACLOCAL, ACLOCAL_AMFLAGS): + New variables. + ($(srcdir)/configure, $(srcdir)/config.h.in, $(srcdir)/aclocal.m4): + Use them. + +2009-07-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + * inclhack.def (darwin_stdint_5, darwin_stdint_6, + darwin_stdint_7): New fixes. + * fixincl.x: Regenerate. + * tests/base/stdint.h: Adjust test for new fixes. + +2009-07-03 Eric Botcazou <ebotcazou@adacore.com> + + * inclhack.def (solaris_int_types): New fix. + * fixincl.x: Regenerate. + * tests/base/sys/int_types.h: New file. + +2009-06-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + * inclhack.def (darwin_stdint_1, darwin_stdint_2, darwin_stdint_3, + darwin_stdint_4): New fixes. + * tests/base/stdint.h: Adjust test results for new fixes. + * fixincl.x: Regenerate. + +2009-05-29 Eric Botcazou <ebotcazou@adacore.com> + + * inclhack.def (solaris_int_const): New fix. + (solaris_int_limits_1): Likewise. + (solaris_int_limits_2): Likewise. + * fixincl.x: Regenerate. + * tests/base/sys/int_const.h: New file. + * tests/base/sys/int_limits.h: Likewise. + +2009-05-15 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (glibc_tgmath): Correct bypass. + * fixincl.x: Regenerate. + +2009-04-28 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux11_uint32_c): Remove. + (hpux_long_double): Disable on hpux11.3*. + (hpux_long_double_2): New. + (hpux_c99_intptr): New. + (hpux_c99_inttypes): New. + (hpux_c99_inttypes2): New. + (hpux_stdint_least): New. + (hpux_stdint_fast): New. + (hpux_inttype_int_least8_t): New. + (hpux_inttype_int8_t): New. + * fixincl.x: Regenerate. + * tests/base/sys/_inttypes.h: New. + * tests/base/inttypes.h: Update. + * tests/base/stdlib.h: Update. + * tests/base/stdint.h: Update. + +2009-04-28 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (glibc_stdint): New fix. + * fixincl.x: Regenerate. + * tests/base/stdint.h: Update. + +2009-04-09 Jakub Jelinek <jakub@redhat.com> + + * Makefile.in: Change copyright header to refer to version + 3 of the GNU General Public License and to point readers at the + COPYING3 file and the FSF's license web page. + * fixfixes.c: Likewise. + * fixinc.in: Likewise. + * fixincl.c: Likewise. + * fixlib.c: Likewise. + * fixlib.h: Likewise. + * fixopts.c: Likewise. + * fixtests.c: Likewise. + * genfixes: Likewise. + * mkheaders.in: Likewise. + * system.h: Likewise. + +2009-03-31 Joseph Myers <joseph@codesourcery.com> + + PR c/448 + * inclhack.def (newlib_stdint_1, newlib_stdint_2): New fixes. + * fixincl.x: Regenerate. + * tests/base/stdint.h: Update. + +2009-03-29 Joseph Myers <joseph@codesourcery.com> + + * tests/base/math.h, tests/base/pthread.h, tests/base/sys/wait.h: + Update. + +2009-03-29 Joseph Myers <joseph@codesourcery.com> + + PR c/456 + PR c/5675 + PR c/19976 + PR c/29116 + PR c/31871 + PR c/35198 + * inclhack.def (glibc_tgmath): New fix. + * fixincl.x: Regenerate. + * tests/base/tgmath.h: New. + +2009-03-28 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (aix_syswait, exception_structure, + pthread_page_size): Remove. + (math_exception): Remove mention of fixproto in comment. + * fixincl.x: Regenerate. + * mkheaders.in: Do not handle STMP_FIXPROTO. + +2009-03-27 Sandra Loosemore <sandra@codesourcery.com> + + * server.c (run_shell): Quote directory name passed to cd. + +2009-03-01 Bruce Korb <bkorb@gnu.org> + Apply a positively ancient patch: + + 2004-10-15 Giovanni Bajo <giovannibajo@libero.it> + + * inclhack.def (alpha_if_semicolon): new fix from long, long ago + * tests/base/net/if.h: Add new test. + +2009-01-06 Andreas Tobler <a.tobler@schweiz.org> + + * tests/base/locale.h: Add new test. + * tests/base/stdarg.h: Likewise. + +2009-01-05 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux_spu_info): Add files line. + * fixincl.x: Regenerate. + +2009-01-01 Andreas Tobler <a.tobler@schweiz.org> + + * inclhack.def (openbsd_null_definition): Redefine NULL to (void *)0 + in case of C. + * fixincl.x: Regenerate. + +2008-12-31 Andreas Tobler <a.tobler@schweiz.org> + + PR target/35460 + * inclhack.def (openbsd_va_start): Use __builtin_va_start + for OpenBSD. + * fixincl.x: Regenerate. + +2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2008-12-15 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux_spu_info): Match PA as well as IA64. + * fixincl.x: Regenerate. + +2008-09-06 H.J. Lu <hongjiu.lu@intel.com> + + * configure.ac: Fix a typo. + * configured: Regenerate. + +2008-09-06 Bruce Korb <bkorb@gnu.org> + + * fixincl.tpl (sed): make the program executable configurable. + Some platforms have some rather oddball defaults. + * config.h.in (SED_PROGRAM): define the default sed. + * fixincl.x: regenerated + * tests/base/internal/wchar_core.h: fix bad sample text + * tests/base/math.h: fix bad sample text + * configure.ac: search for working sed + * inclhack.def (glibc_mutex_init): fix non-portable construct + and re-order a few misordered entries. + +2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> + + * configure: Regenerate. + +2008-06-07 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (AAB_svr4_replace_byteorder, + AAB_ultrix_ansi_compat, AAB_ultrix_limits, AAB_ultrix_memory, + libc1_G_va_list, libc1_ifdefd_memx, nested_motorola, + ptx_sys_mc_param_h, sco_regset, sco_static_func, sco_utime, + solaris_mutex_init_1, solaris_socket, solaris_unistd, + solaris_widec, svr4_krnl, ultrix_atexit_param, ultrix_atof_param, + ultrix_const3, ultrix_fix_fixproto, ultrix_ifdef, ultrix_locale, + ultrix_math_ifdef, ultrix_nested_ioctl, ultrix_nested_svc, + ultrix_stat, ultrix_static, ultrix_stdlib, ultrix_strings, + ultrix_strings2, ultrix_sys_time, ultrix_unistd, + unicosmk_restrict, uw7_byteorder_fix, windiss_math1, + windiss_math2, windiss_valist): Remove. + * fixincl.x: Regenerate. + * mkfixinc.sh: (arm-semi-aof, hppa1.1-*-osf*, hppa1.1-*-bsd*, + i370-*-openedition, i?86-*-moss*, i?86-*-uwin*, + powerpc-*-eabiaix*): Remove. + * tests/base/math.h: Update. + * tests/base/pthread.h: Update. + * tests/base/stdio.h: Update. + * tests/base/stdlib.h: Update. + * tests/base/string.h: Update. + * tests/base/strings.h: Update. + * tests/base/sys/file.h: Update. + * tests/base/sys/limits.h: Update. + * tests/base/sys/socket.h: Update. + * tests/base/sys/stat.h: Update. + * tests/base/sys/time.h: Update. + * tests/base/testing.h: Update. + * tests/base/unistd.h: Update. + * tests/base/_G_config.h: Remove. + * tests/base/arpa: Remove directory. + * tests/base/fs: Remove directory. + * tests/base/locale.h: Remove. + * tests/base/machine: Remove directory. + * tests/base/rpc/svc.h: Remove. + * tests/base/sys/ioctl.h: Remove. + * tests/base/sys/regset.h: Remove. + * tests/base/sys/times.h: Remove. + * tests/base/sys/utsname.h: Remove. + * tests/base/widec.h: Remove. + +2008-05-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * inclhack.def (solaris_math_4): Use GCC's __builtin_fpclassify. + * tests/base/iso/math_c99.h: Update. + * fixincl.x: Regenerate. + +2008-05-14 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (AAB_fd_zero_asm_posix_types_h): Bypass on + posix_types_64. + * fixincl.x: Regenerate. + +2008-04-25 Kai Tietz <kai.tietz@onvision.com> + + * fixincl.c (fix_with_system): Cast pointer difference to long. + * fixlib.c (make_raw_shell_str): Cast compare to avoid sign warning. + +2008-04-18 Paolo Bonzini <bonzini@gnu.org> + + PR bootstrap/35457 + * Makefile.in: Rewrite aclocal.m4 rule. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2008-03-07 Peter O'Gorman <pogma@thewrittenword.com> + + PR c++/20366 + * inclhack.def (AAB_aix_stdio): Hack stdio.h for -D_LARGE_FILES. + * fixincl.x: Regenerate. + * tests/base/stdio.h: Add test. + +2008-02-25 Ben Elliston <bje@au.ibm.com> + + PR other/32948 + * fixincl.c (fix_applies): Remove unused variable `name_len'. + +2008-02-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * inclhack.def (solaris_math_10): New. + * tests/base/iso/math_c99.h: Update. + + * fixincl.x: Regenerate. + +2008-02-04 Ismail Dönmez <ismail@pardus.org.tr> + + * inclhack.def: (bsd_stdio_attrs_conflict, freebsd_gcc3_breakage, + freebsd_gcc4_breakage, hppa_hpux_fp_macros, hpux11_abs, + netbsd_c99_inline_1, netbsd_c99_inline_2, netbsd_extra_semicolon): Add + quotes around mach entries. + * fixincl.x: Regenerate with latest autogen (5.9.4), updating license + to GPLv3. + +2008-02-04 Hans-Peter Nilsson <hp@axis.com> + + PR other/31405 + * inclhack.def: (glibc_c99_inline_1a): Re-add last change. + (glibc_c99_inline_3) <bypass>: Change from __STDC_VERSION__ to + __extern_inline|__GNU_STDC_INLINE__. + (glibc_c99_inline_4) <files>: Add wchar.h and */wchar.h. + <bypass>: Change from __STDC_VERSION__ to + __extern_inline|__GNU_STDC_INLINE__. + <first c_fix_arg>: Change from #ifdef-wrapping the extern part to + appending attribute-gnu_inline. + <second c_fix_arg>: Remove. + <test_text>: Remove __extern_inline line. + * tests/base/features.h: Re-add. + * tests/base/sys/sysmacros.h: Adjust. + * fixincl.x: Regenerate. + +2008-01-06 Hans-Peter Nilsson <hp@axis.com> + + Revert last change. + +2007-12-18 Hans-Peter Nilsson <hp@axis.com> + + * inclhack.def: (glibc_c99_inline_1a, glibc_c99_inline_5): New. + * fixincl.x: Regenerate. + * tests/base/wchar.h: Update. + * tests/base/features.h: New. + +2007-10-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + PR target/33700 + * inclhack.def (hpux11_pthread_const): New. + * fixincl.x: Regenerate. + * tests/base/sys/pthread.h: Update. + +2007-10-12 Kai Tietz <kai.tietz@onevision.com> + + * configure.ac: x86_64 mingw target uses twoprocess. + * mkfixinc.sh: Add x86_64 mingw target. + * configure: Regenerate. + +2007-10-09 Geoffrey Keating <geoffk@apple.com> + + * inclhack.def (darwin_externc): New. + * fixincl.x: Regenerate. + * tests/base/mach-o/swap.h: New. + +2007-08-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * inclhack.def (solaris_math_5, solaris_math_6, solaris_math_7): + Delete fixes. + * tests/base/iso/math_c99.h: Delete associated test baselines. + * fixincl.x: Regenerate. + +2007-07-24 Krister Walfridsson <cato@df.lth.se> + + PR target/30058 + * inclhack.def (netbsd_c99_inline_2): New. + * fixincl.x: Regenerate. + * tests/base/signal.h: Update. + +2007-07-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + PR target/32641 + + * inclhack.def (solaris_math_4, solaris_math_5, solaris_math_6, + solaris_math_7): Constify and make FP exception-safe. + * tests/base/iso/math_c99.h: Update. + + * fixincl.x: Regenerate. + +2007-07-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + PR libgcj/28190 + * inclhack.def (irix_stdint_c99): New fix. + * fixincl.x: Regenerate. + * tests/base/stdint.h: New test. + +2007-06-06 Steve Ellcey <sje@cup.hp.com> + + PR testsuite/31828 + * inclhack.def (hppa_hpux_fp_macros): New. + * fixincl.x: Regenerate. + * tests/base/math.h: Update. + +2007-03-26 Jakub Jelinek <jakub@redhat.com> + + * inclhack.def (glibc_c99_inline_1): Define __USE_EXTERN_INLINES + if __extern_inline or __GNUC_GNU_INLINE__ is defined rather than + __STDC_VERSION__ < 199901L. + (glibc_c99_inline_2): Replace #if __STDC_VERSION__ < 199901L + with #ifdef __GNUC_GNU_INLINE__. + (glibc_c99_inline_3): Add select. Replace __STDC_VERSION__ >= 199901L + with defined(__GNUC_STDC_INLINE__). + (glibc_c99_inline_4): Change select, add second c_fix_arg. + Replace #if __STDC_VERSION__ < 199901L with + #ifdef __GNUC_GNU_INLINE__. + * fixincl.x: Regenerated. + * tests/base/bits/string2.h: Update. + * tests/base/sys/sysmacros.h: Update. + * tests/base/sys/stat.h: Update. + +2007-03-18 Krister Walfridsson <cato@df.lth.se> + + PR target/30058 + * inclhack.def (netbsd_c99_inline_1): New. + * fixincl.x: Regenerate. + * tests/base/signal.h: New. + +2007-03-12 Brooks Moses <brooks.moses@codesourcery.com> + + * Makefile.in: Add dummy "install-info" target. + +2007-03-06 Joseph Myers <joseph@codesourcery.com> + + * mkheaders.in: Fix headers for each multilib required. + +2007-03-01 Brooks Moses <brooks.moses@codesourcery.com> + + * Makefile.in: Add dummy install-pdf target. + +2007-02-27 Joseph Myers <joseph@codesourcery.com> + + * mkheaders.in (incdir): Use include-fixed not include. + +2007-02-15 Brooks Moses <brooks.moses@codesourcery.com> + + * Makefile.in: Added "pdf" target to .PHONY. + +2007-02-05 Richard Guenther <rguenther@suse.de> + + * inclhack.def (glibc_c99_inline_4): Adjust selector to cope + with older glibc. Adjust version number for C99. + * fixincl.x: Regenerated. + +2007-02-04 Mike Stump <mrs@apple.com> + + * mkheaders.in: Allow optional isysroot parameter. + +2007-02-03 Bruce Korb <bkorb@gnu.org> + + * inclhack.def (glibc_c99_inline_4): replace "extern" only if + surrounded by space characters. + +2007-01-25 Daniel Franke <franke.daniel@gmail.com> + + PR target/30272 + * inclhack.def(broken_cabs): Also remove definition of cabsl. + * fixincl.x: Regenerate. + * tests/base/math.h: Update. + +2007-01-05 Bruce Korb <bkorb@gnu.org>, + Daniel Franke <franke.daniel@gmail.com> + + PR target/30008 + * fixincl.tpl (List): separate file name patterns with a NUL byte instead + of a vertical bar ("|"). + * fixincl.c (fix_applies, machine_matches): Use fnmatch for name + matching. Set SKIP_TEST flag if we are not to run a test. + * fixincl.x: Regenerate. + * inclhack.def (glibc_c99_inline_[1234], broken_cabs, broken_nan, + kandr_concat, sco_math): Replace lists of specfic file names by search + patterns. + +2006-12-12 Olivier Hainque <hainque@adacore.com> + + * fixincludes/mkfixinc.sh: Add "*-*-vxworks*" to the list of + targets for which a no-op fixer is appropriate. + +2006-11-07 Richard Guenther <rguenther@suse.de> + + * inclhack.def (glibc_c99_inline_2): Adjust for glibc 2.3 + systems. + * fixincl.x: Regenerate. + +2006-11-02 Geoffrey Keating <geoffk@apple.com> + + * inclhack.def (glibc_c99_inline_1): New. + * inclhack.def (glibc_c99_inline_2): New. + * inclhack.def (glibc_c99_inline_3): New. + * inclhack.def (glibc_c99_inline_4): New. + * fixincl.x: Regenerate. + * tests/base/bits/string2.h: New. + * tests/base/sys/sysmacros.h: New. + * tests/base/sys/stat.h: Update. + +2006-11-01 Steve Ellcey <sje@cup.hp.com> + + * tests/base/sys/socket.h: Update. + +2006-10-31 Steve Ellcey <sje@cup.hp.com> + + * inclhack.def (hpux11_extern_sendfile): New. + (hpux11_extern_sendpath): New. + * fixincl.x: Regenerate. + +2006-10-29 Joseph Myers <joseph@codesourcery.com> + + * inclhack.def (AAB_fd_zero_asm_posix_types_h): Bypass on x86_64. + * fixincl.x: Regenerate. + +2006-10-10 Brooks Moses <bmoses@stanford.edu> + + * Makefile.in: Added empty "pdf" target. + +2006-10-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + PR target/29300 + * inclhack.def (hpux_pthread_initializers): New hack. + * tests/base/sys/pthread.h: New file. + + * fixincl.x: Regenerate. + +2006-10-03 Uros Bizjak <uros@kss-loka.si> + + * inclhack.def (glibc_mutex_init): Also fix + PTHREAD_MUTEX_(RECURSIVE|ERRORCHECK|ADAPTIVE)_NP and + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP initializers. + * tests/base/pthread.h: Update. + + * fixincl.x: Regenerate. + +2006-10-01 Uros Bizjak <uros@kss-loka.si> + + * inclhack.def (glibc_mutex_init): New fix. + * tests/base/pthread.h: Update. + + * fixincl.x: Regenerate. + +2006-09-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * inclhack.def (solaris_mutex_init_2): Update for Solaris9. + Prevent it from running on solaris10 or later. + (solaris_once_init_2): Fix comment. + * tests/base/pthread.h: Update. + + * fixincl.x: Regenerate. + +2006-09-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * inclhack.def (solaris_once_init_2): New fix. + * tests/base/pthread.h: Update. + + * fixincl.x: Regenerate. + +2006-09-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * inclhack.def (solaris_mutex_init_2): Remove test for + PTHREAD_RWLOCK_INITIALIZER. + (solaris_rwlock_init_1): New. + * tests/base/pthread.h: Update. + + * inclhack.def (solaris_once_init_1): New. + * tests/base/pthread.h: Adjust for new fix. + + * fixincl.x: Regenerate. + +2006-07-17 Roger Sayle <roger@eyesopen.com> + + * tests/base/errno.h: New file. + * tests/base/architecture/ppc/math.h: Likewise. + * tests/base/ia64/sys/getppdp.h: Likewise. + +2006-07-10 Laurynas Biveinis <laurynas.biveinis@gmail.com> + + PR bootstrap/20437 + * Makefile.in (configure, config.h.in): Change into $(srcdir) + before autoconf or autoheader call. + +2006-06-23 Steve Ellcey <sje@cup.hp.com> + + PR target/28084 + * inclhack.def (hpux_extern_errno): New. + * fixincl.x: Regenerate. + +2006-05-23 Carlos O'Donell <carlos@codesourcery.com> + + * Makefile.in: Add dvi info html and install-html to .PHONY + Add install-html target. + +2006-05-16 Mike Stump <mrs@apple.com> + + * configure.ac: Add -Wno-overlength-strings. + * configure: Regenerate. + +2006-05-14 Bernhard Fischer <aldot@gcc.gnu.org> + + * README: Fix typo. + +2006-02-18 Steve Ellcey <sje@cup.hp.com> + + PR target/26189 + * inclhack.def (hpux_spu_info): New. + * fixincl.x: Regenerate + +2006-01-31 Marcin Dalecki <martin@dalecki.de> + + * configure.ac: Check for asprintf, basename, vasprintf. + * config.h.in: Regenerate. + * configure: Regenerate. + +2006-01-19 Andrew Pinski <pinskia@physics.uc.edu> + + PR target/15642 + * inclhack.def (AAB_darwin7_9_long_double_funcs [replace]): Define + __APPLE_CC_ as 1345. + (broken_nan): New. + * fixincl.x: Regenerate. + +2005-11-24 Bruce Korb <bkorb@gnu.org> + + * fixincl.c (write_replacement): "here strings" in AutoGen + often/generally don't have a terminating newline. Check the + last byte for '\n'. + +2005-11-13 Andreas Jaeger <aj@suse.de> + + * check.tpl: Handle CVS additionally. + +2005-11-05 Andreas Jaeger <aj@suse.de> + + * check.tpl: Adopt for move to subversion. + +2005-09-15 Joseph S. Myers <joseph@codesourcery.com> + + PR c++/23139 + * inclhack.def (huge_val_hex, huge_valf_hex, huge_vall_hex): New + fixes. + * fixincl.x: Regenerate. + * tests/base/bits/huge_val.h: New file. + +2005-08-14 Kelley Cook <kcook@gcc.gnu.org> + + * All files: Update with new FSF address. + +2005-07-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * Makefile.in (WARN_CFLAGS): New. + (.c.o): Add $(WARN_CFLAGS). + * aclocal.m4: Include ../config/warnings.m4. + * configure.ac: Invoke ACX_PROG_CC_WARNING_OPTS, + ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and + ACX_PROG_CC_WARNINGS_ARE_ERRORS. + * fixopts.c (initialize_opts): Fix old-style definintion. + + * configure: Regenerate. + +2005-06-24 Geoffrey Keating <geoffk@geoffk.org> + + * inclhack.def (AAB_darwin7_9_long_double_funcs): New. + (AAB_darwin7_9_long_double_funcs_2): New. + * fixincl.x: Regenerate. + +2005-06-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + PR libfortran/15266 + * inclhack.def (broken_cabs): Mention IRIX 5/6 problem. + Use double quotes in select so \t matches tabs. + Add IRIX testcase. + * fixincl.x: Regenerate. + * tests/base/math.h [BROKEN_CABS_CHECK]: Adapt for new testcase. + +2005-05-22 Danny Smith <dannysmith@users.souceforge.net> + + PR target/21683 + * fixincl.c: Don't include <sys/wait.h> if SEPARATE_FIX_PROC. + +2005-05-19 Eric Botcazou <ebotcazou@libertysurf.fr> + Joseph S. Myers <joseph@codesourcery.com> + + PR target/19933 + PR target/21315 + * inclhack.def: New fixes solaris_math_[1-9]. + * fixincl.x: Regenerate. + * tests/base/iso/math_c99.h: New. + +2005-05-19 Kelley Cook <kcook@gcc.gnu.org> + + * aclocal.m4: Remove superfluous reference to accross.m4. + +2005-05-15 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * fixlib.c (load_file_data): Use XRESIZVEC in lieu of xrealloc. + * server.c (load_data): Likewise. + (run_shell): Use XCNEW (char) in lieu of xcalloc (1, 1). + * fixincl.c: #include <sys/wait.h> + (run_compiles): Use XCNEWVEC instead of xcalloc. + (fix_with_system, start_fixer): Use XNEWVEC instead of xmalloc. + * fixfixes.c (FIX_PROC_HEAD, main): Likewise. + +2005-05-10 Joseph S. Myers <joseph@codesourcery.com> + + * inclhack.def (stdio_stdarg_h, stdio_va_list): Bypass on + *-*-solaris2.1[0-9]*, not just *-*-solaris2.1[0-9]. + * fixincl.x: Regenerate. + +2005-05-06 Bruce Korb <bkorb@gnu.org> + Joseph S. Myers <joseph@codesourcery.com> + + * fixinc/inclhack.def: Correct backslashes + * fixinc/fixincl.x: regen + +2005-04-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * system.h (fopen, fdopen, freopen): Define these to the unlocked + libiberty functions. + +2005-04-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * configure.ac (fixincludes_UNLOCKED_FUNCS): New. + (AC_CHECK_FUNCS, AC_CHECK_DECLS): Check for fixincludes_UNLOCKED_FUNCS. + * system.h (putchar, getc, getchar, clearerr, feof, fileno, + fflush, fgetc, fgets, ferror, fread): Redefine to the associated + _unlocked function. + (fwrite_unlocked): Fix prototype. + + * configure, config.h.in: Regenerate. + +2005-03-21 Zack Weinberg <zack@codesourcery.com> + + * Makefile.in: Set gcc_version directly, not via substitution. + (libsubdir): Use $(gcc_version), not $(version). + (mkheaders.almost): New rule. + (mkheaders): Generate from mkheaders.almost. + (clean): Also delete mkheaders.almost. + * aclocal.m4: Do not include ../config/gcc-version.m4. + * configure.ac: Do not invoke TL_AC_GCC_VERSION. Generate + mkheaders.almost from mkheaders.in. + * configure: Regenerate. + +2005-03-21 Richard Guenther <rguenth@gcc.gnu.org> + + PR target/20166 + * inclhack.def: Add fix for array of incomplete structures + in function prototype in pthread.h. + * fixincl.x: Regenerate. + * tests/base/pthread.h: Adjust. + +2005-03-15 Joseph S. Myers <joseph@codesourcery.com> + + * inclhack.def (hpux_htonl): New fix. + * tests/base/netinet/in.h: New test. + * fixincl.x: Regenerate. + +2005-02-23 James E Wilson <wilson@specifixinc.com> + + * Makefile.in (full-stamp, test-stamp, $(AF)): Add $(CFLAGS) to link. + +2004-12-13 Andrew Pinski <pinskia@physics.uc.edu> + + PR 18458 + * Makefile.in (install): Add @EXEEXT@ to the end of the program name, + fixincl. + +2004-12-02 Richard Sandiford <rsandifo@redhat.com> + + * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. + * aclocal.m4: Include ../config/gcc-version.m4. + * configure: Regenerate. + +2004-11-26 Mark Mitchell <mark@codesourcery.com> + + * inclhack.def (gnu_types): Do not use on Solaris 2.1x. + (stdio_va_list): Likewise. + (stdio_stdarg.h): Likewise. + (solaris_stdio_tag): Add bypass. + * fixincl.x: Regenerated. + +2004-11-23 Geoffrey Keating <geoffk@apple.com> + + * mkfixinc.sh: Check error code from 'cat'. Don't try running + built fixincl program. + * mkheaders.in: Use @SHELL@ rather than ${SHELL} to avoid picking + up csh from user. + +2004-11-20 Roger Sayle <roger@eyesopen.com> + + * inclhack.def (alpha_pthread_init): Fix technical problems with + the last check-in caused by CVS variable substitution. + * fixincl.x: Likewise. + * tests/base/pthread.h: Likewise. + +2004-11-20 Roger Sayle <roger@eyesopen.com> + Bruce Korb <bkorb@gnu.org> + + * inclhack.def (alpha_pthread_init): New fix. + * fixincl.x: Regenerate. + * tests/base/pthread.h: Update for new test. + +2004-11-15 Bruce Korb <bkorb@gnu.org> + + * fixincl.c(fix_with_system): correct misuse of variables and + incorrect application of "sizeof()". + +2004-11-13 Joseph S. Myers <joseph@codesourcery.com> + + * inclhack.def (hpux_maxint, limits_ifndefs, math_huge_val_ifndef, + svr4__p, undefine_null): Remove. + * fixincl.x: Regenerate. + * tests/base/AvailabilityMacros.h, tests/base/com_err.h: New. + * tests/base/sys/param.h: Remove. + * tests/base/curses.h, tests/base/math.h, tests/base/testing.h, + tests/base/sys/limits.h: Update. + +2004-11-12 Mike Stump <mrs@apple.com> + + * Makefile.in (html): Add html generation support. + +2004-11-12 Joseph S. Myers <joseph@codesourcery.com> + + * inclhack.def (sco_math): Bypass on __GNUG__. + (sysz_stdlib_for_sun): Bypass on _CLASSIC_ANSI_TYPES. + * fixincl.x: Regenerate. + +2004-11-09 Joseph S. Myers <joseph@codesourcery.com> + + * inclhack.def (hpux8_bogus_inlines): Bypass on __GNUG__. + (int_abort_free_and_exit, sun_malloc, sysv68_string): Bypass on + _CLASSIC_ANSI_TYPES. + (sun_auth_proto): Bypass on __cplusplus. + * fixincl.x: Regenerate. + +2004-11-05 Geoffrey Keating <geoffk@apple.com> + + * Makefile.in (mostlyclean): Add fixinc.sh. + (clean): Add mkheaders. + (distclean): New. + (dvi): New. + (info): New. + (installcheck): New. + +2004-11-05 Paolo Bonzini <bonzini@gnu.org> + + * Makefile.in (mostlyclean, distclean): New targets. + +2004-11-04 Geoffrey Keating <geoffk@apple.com> + + * configure.ac: Add code to determine noncanonical_target, + local_prefix, gcc_version; process mkheaders.in to make mkheaders. + * configure: Regenerate. + * fixinc.in: Move here from gcc/; fix many cross-hosting bugs. + * mkfixinc.sh: Move here from gcc/; update for changes to fixinc.in. + * mkheaders.in: Move here from gcc/; remove some unnecessary macros; + update for changes to fixinc.in. + * Makefile.in: Add many new macros. + (install): New target. + (mkheaders): New target. + (fixinc.sh): New target. + (all): Add mkheaders and fixinc.sh. + * README-fixinc: Move here from gcc/. + +2004-11-01 Mike Stump <mrs@apple.com> + + * inclhack.def (stdio_va_list): Break out clients from here... + (stdio_va_list_clients): ...to here. Also, don't fix if stdarg.h is + included or ifdef va_start. + * fixincl.x: Regenerate. + +2004-10-28 Mike Stump <mrs@apple.com> + + * inclhack.def (void_null): Avoid changing NULL on C++ friendly + systems. + * fixincl.x: Regenerate. + +2004-10-27 Geoffrey Keating <geoffk@apple.com> + + * inclhack.def (darwin_gcc4_breakage): New. + * fixincl.x: Regenerate. + +2004-10-27 Aaron W. LaFramboise <aaronavay62@aaronwl.com> + + PR bootstrap/17832 + + * fixfixes.c (main): Check for _PC_NAME_MAX. + +2004-10-27 Paolo Bonzini <bonzini@gnu.org> + + PR other/17991 + + * configure.ac: Fix typo. + * configure: Regenerate. + * fixincl.c (fix_with_system): tSCC is not a pointer. Fix. + +2004-10-20 Aaron W. LaFramboise <aaronavay62@aaronwl.com> + + PR bootstrap/17832 + + * fixincl.c (SIGCHLD): Remove definition. + (initialize): Remove SIGIOT and SIGPIPE checks. + (create_file): Fix mkdir() for Win32. + (internal_fix): Use dup2() instead of fcntl(). + + * fixlib.h (SIGQUIT): Define if undefined. + (SIGIOT): Same. + (SIGPIPE): Same. + (SIGALRM): Same. + (SIGKILL): Same. + + * procopen.c (chain_open): Use dup2() instead of fcntl(). + +2004-08-14 Paolo Bonzini <bonzini@gnu.org> + + PR other/17991 + + * Makefile.in (ALLOBJ, TESTOBJ, FIXOBJ): Add fixopts.o. + Update copyright year. + * fixfixes.c (main): Call initialize_opts from fixopts.c. + * fixincl.c (initialize): Call initialize_opts from fixopts.c, + do not include code for parsing options (environment vars). + (fix_with_system): Use a search path for applyfix, so that you + can run the test suite with two-process fixincludes. + * fixopts.c: New file. + * configure.ac: Add --enable-twoprocess. Export ac_exeext + to config.h. Default to --enable-twoprocess for MinGW32. + * config.h.in: Regenerate. + * configure: Regenerate. + +2004-10-04 Loren J. Rittle <ljrittle@acm.org> + + * tests/base/sys/cdefs.h: Update from test area. + +2004-09-17 Roger Sayle <roger@eyesopen.com> + + * inclhack.def (linux_ia64_ucontext): New fix. + * fixincl.x: Regenerate. + * tests/base/sys/ucontext.h: New file. + +2004-09-15 Roger Sayle <roger@eyesopen.com> + + * tests/base/sys/time.h: Correct mismatch in 2004-09-10 check-in. + * tests/base/stdlib.h: Likewise. + +2004-09-13 Loren J. Rittle <ljrittle@acm.org> + + * inclhack.def (freebsd_gcc4_breakage): Add. + * fixincl.x: Regenerate. + * tests/base/sys/cdefs.h: Update for new test. + +2004-09-10 Adam Nemet <anemet@lnxw.com> + + * inclhack.def (lynx_void_int): Remove. + (lynxos_fcntl_proto): Remove. + (lynxos_no_warning_in_sys_time_h): New fix. + (lynxos_missing_putenv): New fix. + * fixincl.x: Regenerate. + * tests/base/fcntl.h: Remove. + * tests/base/sys/time.h: Update from test area. + * tests/base/curses.h: Likewise. + * tests/base/stdlib.h: Likewise. + +2004-09-03 Jan Beulich <jbeulich@novell.com> + + * inclhack.def: Suppress exception_structure and math_exception + for NetWare headers. + * fixincl.x: Regenerate. + +2004-08-31 Paolo Bonzini <bonzini@gnu.org> + + * .cvsignore: New. + * Makefile.in: From gcc/fixinc/Makefile.in, making it fully + autoconfiscated. + * configure.ac: New. + * config.h.in: Generate. + * configure: Generate. + * aclocal.m4: New. + * fixlib.h: Remove inclusions of gcc files. + * system.h: New. + + Other files copied from gcc/fixinc. diff --git a/fixincludes/Makefile.in b/fixincludes/Makefile.in new file mode 100644 index 000000000..b9857b957 --- /dev/null +++ b/fixincludes/Makefile.in @@ -0,0 +1,205 @@ +# Makefile for fixincludes. +# +# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2009, 2010 +# Free Software Foundation, Inc. + +#This file is part of fixincludes. + +#fixincludes is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 3, or (at your option) +#any later version. + +#fixincludes is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with fixincludes; see the file COPYING3. If not see +#<http://www.gnu.org/licenses/>. + +SHELL=@SHELL@ + +# Some versions of `touch' (such as the version on Solaris 2.8) +# do not correctly set the timestamp due to buggy versions of `utime' +# in the kernel. So, we use `echo' instead. +STAMP = echo timestamp > + +CC = @CC@ +CFLAGS = @CFLAGS@ +WARN_CFLAGS = @WARN_CFLAGS@ @WARN_PEDANTIC@ @WERROR@ +LDFLAGS = @LDFLAGS@ +INCLUDES = -I. -I$(srcdir) -I../include -I$(srcdir)/../include +FIXINC_CFLAGS = -DHAVE_CONFIG_H $(INCLUDES) + +# Directory where sources are, from where we are. +srcdir = @srcdir@ +VPATH = $(srcdir) + +# Directory in which to put the directories used by the compiler. +libdir = @libdir@ +# Directory in which GCC puts its executables. +libexecdir = @libexecdir@ + +# End of variables for you to override. + +# The target that we're configured for. +target = @target@ +target_noncanonical:=@target_noncanonical@ + +# The version of GCC in this tree +gcc_version := $(shell cat $(srcdir)/../gcc/BASE-VER) + +# Directory in which the compiler finds libraries etc. +libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) +# Directory in which the compiler finds executables +libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) +# Where our executable files go +itoolsdir = $(libexecsubdir)/install-tools +# Where our data files go +itoolsdatadir = $(libsubdir)/install-tools + +# Locate mkinstalldirs. +mkinstalldirs=$(SHELL) $(srcdir)/../mkinstalldirs + +AUTOCONF = autoconf +AUTOHEADER = autoheader +ACLOCAL = aclocal +ACLOCAL_AMFLAGS = -I ../gcc -I .. -I ../config + +default : all + +# Now figure out from those variables how to compile and link. + +.c.o: + $(CC) -c $(CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(FIXINC_CFLAGS) $< + +# The only suffixes we want for implicit rules are .c and .o. +.SUFFIXES: +.SUFFIXES: .c .o + +# + +## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +## +## Makefile for constructing the "best" include fixer we can +## +## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +LIBIBERTY=../libiberty/libiberty.a + +ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \ + fixlib.o fixopts.o + +TESTOBJ = fixincl.o fixlib.o fixtests.o fixopts.o +FIXOBJ = fixfixes.o fixlib.o fixopts.o + +HDR = server.h fixlib.h +FI = fixincl@EXEEXT@ +AF = applyfix@EXEEXT@ + +all : @TARGET@ fixinc.sh mkheaders +gen : $(srcdir)/fixincl.x + + +oneprocess : full-stamp +twoprocess : test-stamp $(AF) + +full-stamp : $(ALLOBJ) $(LIBIBERTY) + $(CC) $(CFLAGS) $(LDFLAGS) -o $(FI) $(ALLOBJ) $(LIBIBERTY) + $(STAMP) $@ + +test-stamp : $(TESTOBJ) $(LIBIBERTY) + $(CC) $(CFLAGS) $(LDFLAGS) -o $(FI) $(TESTOBJ) $(LIBIBERTY) + $(STAMP) $@ + +$(AF): $(FIXOBJ) $(LIBIBERTY) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(FIXOBJ) $(LIBIBERTY) + +$(ALLOBJ) : $(HDR) +fixincl.o : fixincl.c $(srcdir)/fixincl.x +fixtests.o : fixtests.c +fixfixes.o : fixfixes.c $(srcdir)/fixincl.x +server.o : server.c +procopen.o : procopen.c +fixlib.o : fixlib.c + +fixinc.sh : fixinc.in mkfixinc.sh Makefile + srcdir="$(srcdir)" $(SHELL) $(srcdir)/mkfixinc.sh $(target) + +$(srcdir)/fixincl.x: @MAINT@ fixincl.tpl inclhack.def + cd $(srcdir) ; $(SHELL) ./genfixes + +mostlyclean : + rm -f *.o *-stamp $(AF) $(FI) *~ fixinc.sh + +clean: mostlyclean + rm -f mkheaders mkheaders.almost + +distclean: clean + rm -f Makefile config.h config.log config.status stamp-h + +maintainer-clean: distclean + rm -f $(srcdir)/fixincl.x + +distclean : clean + +Makefile: $(srcdir)/Makefile.in config.status + $(SHELL) ./config.status Makefile + +mkheaders.almost: $(srcdir)/mkheaders.in config.status + CONFIG_FILES=mkheaders.almost:mkheaders.in \ + CONFIG_HEADERS= ./config.status + +mkheaders: mkheaders.almost $(srcdir)/../gcc/BASE-VER + sed -e 's/@gcc_version@/$(gcc_version)/' < $< > $@T + mv -f $@T $@ + +config.h: stamp-h +stamp-h: $(srcdir)/config.h.in config.status + $(SHELL) ./config.status config.h + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck + +$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/aclocal.m4 + cd $(srcdir) && $(AUTOCONF) + +$(srcdir)/config.h.in: @MAINT@ $(srcdir)/configure.ac + cd $(srcdir) && $(AUTOHEADER) + +$(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/configure.ac + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +check : all + autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def + $(SHELL) ./check.sh $(srcdir)/tests/base + @rm -f ./check.sh + +install : all + -rm -rf $(DESTDIR)$(itoolsdir) + $(mkinstalldirs) $(DESTDIR)$(itoolsdir) + $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include + $(INSTALL_DATA) $(srcdir)/README-fixinc \ + $(DESTDIR)$(itoolsdatadir)/include/README + $(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh + $(INSTALL_PROGRAM) fixincl@EXEEXT@ \ + $(DESTDIR)$(itoolsdir)/fixincl@EXEEXT@ + $(INSTALL_SCRIPT) mkheaders $(DESTDIR)$(itoolsdir)/mkheaders + +install-strip: install + test -z '$(STRIP)' \ + || $(STRIP) $(DESTDIR)$(itoolsdir)/fixincl@EXEEXT@ + +.PHONY: all check install install-strip +.PHONY: dvi pdf info html install-pdf install-info install-html + +dvi : +pdf : +info : +html : +install-pdf : +install-info : +install-html : +installcheck : diff --git a/fixincludes/README b/fixincludes/README new file mode 100644 index 000000000..07a3964a2 --- /dev/null +++ b/fixincludes/README @@ -0,0 +1,331 @@ + +FIXINCLUDES OPERATION +===================== + +See also: http://autogen.SourceForge.net/fixinc.html + +The set of fixes required was distilled down to just the data required +to specify what needed to happen for each fix. Those data were edited +into a file named fixincludes/inclhack.def. A program called AutoGen +(http://autogen.SourceForge.net) uses these definitions to instantiate +several different templates that then produces code for a fixinclude +program (fixincl.x) and a shell script to test its functioning. On +certain platforms (viz. those that do not have functional bidirectional +pipes), the fixincl program is split into two. This should only concern +you on DOS and BeOS. + +Regards, + Bruce <bkorb@gnu.org> + + + +GCC MAINTAINER INFORMATION +========================== + +If you are having some problem with a system header that is either +broken by the manufacturer, or is broken by the fixinclude process, +then you will need to alter or add information to the include fix +definitions file, ``inclhack.def''. Please also send relevant +information to gcc-bugs@gcc.gnu.org, gcc-patches@gcc.gnu.org and, +please, to me: bkorb@gnu.org. + +To make your fix, you will need to do several things: + +1. Obtain access to the AutoGen program on some platform. It does + not have to be your build platform, but it is more convenient. + +2. Edit "inclhack.def" to reflect the changes you need to make. + See below for information on how to make those changes. + +3. Run the "genfixes" shell script to produce a new copy of + the "fixincl.x" file. + +4. Rebuild the compiler and check the header causing the issue. + Make sure it is now properly handled. Add tests to the + "test_text" entry(ies) that validate your fix. This will + help ensure that future fixes won't negate your work. + +5. Go into the fixincludes build directory and type, "make check". + You are guaranteed to have issues printed out as a result. + Look at the diffs produced. Make sure you have not clobbered + the proper functioning of a different fix. Make sure your + fix is properly tested and it does what it is supposed to do. + +6. Now that you have the right things happening, synchronize the + $(srcdir)/tests/base directory with the $(builddir)/tests/res + directory. The output of "make check" will be some diffs that + should give you some hints about what to do. + +7. Rerun "make check" and verify that there are no issues left. + + +MAKING CHANGES TO INCLHACK.DEF +============================== + +0. If you are not the fixincludes maintainer, please send that + person email about any changes you may want to make. Thanks! + +1. Every fix must have a "hackname" that is compatible with C syntax + for variable names and is unique without regard to alphabetic case. + Please keep them alphabetical by this name. :-) + +2. If the problem is known to exist only in certain files, then + identify the files with "files = " entries. If you use fnmatch(3C) + wild card characters in a "files" entry, be certain that the first + "files" entry has no such character. Otherwise, the "make check" + machinery will attempt to create files with those characters in the + name. That is inconvenient. + +3. It is relatively expensive to fire off a process to fix a source + file, therefore write apply tests to avoid unnecessary fix + processes. The preferred apply tests are "select", "bypass", "mach" + and "c-test" because they are performed internally: + + * select - Run a regex on the contents of the file being considered. + All such regex-es must match. Matching is done with + extended regular expressions. + + * bypass - Run a regex on the contents of the file being considered. + No such regex may match. + + * c_test - call a function in fixtests.c. See that file. + + * files - the "fnmatch" pattern of the file(s) to examine for + the issue. There may be several copies of this attribute. + If the header lives in a /usr/include subdirectory, be + sure to include that subdirectory in the name. e.g. net/if.h + + * mach - Match the output of config.guess against a series of fnmatch + patterns. It must match at least one of the patterns, unless + "not-machine" has also been specified. In that case, the + config.guess output must not match any of the patterns. + + The next test is relatively slow because it must be handled in a + separate shell process. Some platforms do not support server shells, + so the whole process is even slower and more cumbersome there. + + * test - These should be arguments to the program, "/bin/test". + You may perform multiple commands, if you enclose them + in backquotes and echo out valid test arguments. For + example, you might echo out '0 -eq 1' if you want a false + result, or '0 -eq 0' for a true result. + + These tests are required to: + + 1. Be positive for all header files that require the fix. + + It is desirable to: + + 2. Be negative as often as possible whenever the fix is not + required, avoiding the process overhead. + + It is nice if: + + 3. The expression is as simple as possible to both + process and understand by people. :-) + + Please take advantage of the fact AutoGen will glue + together string fragments. It helps. Also take note + that double quote strings and single quote strings have + different formation rules. Double quote strings are a + tiny superset of ANSI-C string syntax. Single quote + strings follow shell single quote string formation + rules, except that the backslash is processed before + '\\', '\'' and '#' characters (using C character syntax). + + Each test must pass or the fix is not applied. For example, + all "select" expressions must be found and not one "bypass" + selection may be found. + + Examples of test specifications: + + hackname = broken_assert_stdio; + files = assert.h; + select = stderr; + bypass = "include.*stdio.h"; + + The ``broken_assert_stdio'' fix will be applied only to a file + named "assert.h" if it contains the string "stderr" _and_ it + does _not_ contain the expression "include.*stdio.h". + + hackname = no_double_slash; + c_test = "double_slash"; + + The ``no_double_slash'' fix will be applied if the + ``double_slash_test()'' function says to. See ``fixtests.c'' + for documentation on how to include new functions into that + module. + +4. There are currently four methods of fixing a file: + + 1. a series of sed expressions. Each will be an individual + "-e" argument to a single invocation of sed. + + 2. a shell script. These scripts are _required_ to read all + of stdin in order to avoid pipe stalls. They may choose to + discard the input. + + 3. Replacement text. If the replacement is empty, then no + fix is applied. Otherwise, the replacement text is + written to the output file and no further fixes are + applied. If you really want a no-op file, replace the + file with a comment. + + Replacement text "fixes" must be first in this file!! + + 4. A C language subroutine method for both tests and fixes. + See ``fixtests.c'' for instructions on writing C-language + applicability tests and ``fixfixes.c'' for C-language fixing. + These files also contain tables that describe the currently + implemented fixes and tests. + + If at all possible, you should try to use one of the C language + fixes as it is far more efficient. There are currently five + such fixes, three of which are very special purpose: + + i) char_macro_def - This function repairs the definition of an + ioctl macro that presumes CPP macro substitution within + pairs of single quote characters. + + ii) char_macro_use - This function repairs the usage of ioctl + macros that no longer can wrap an argument with single quotes. + + iii) machine_name - This function will look at "#if", "#ifdef", + "#ifndef" and "#elif" directive lines and replace the first + occurrence of a non-reserved name that is traditionally + pre-defined by the native compiler. + + The next two are for general use: + + iv) wrap - wraps the entire file with "#ifndef", "#define" and + "#endif" self-exclusionary text. It also, optionally, inserts + a prolog after the "#define" and an epilog just before the + "#endif". You can use this for a fix as follows: + + c_fix = wrap; + c_fix_arg = "/* prolog text */"; + c_fix_arg = "/* epilog text */"; + + If you want an epilog without a prolog, set the first "c_fix_arg" + to the empty string. Both or the second "c_fix_arg"s may be + omitted and the file will still be wrapped. + + THERE IS A SPECIAL EXCEPTION TO THIS, HOWEVER: + + If the regular expression '#if.*__need' is found, then it is + assumed that the file needs to be read and interpreted more + than once. However, the prolog and epilog text (if any) will + be inserted. + + v) format - Replaces text selected with a regular expression with + a specialized formating string. The formatting works as follows: + The format text is copied to the output until a '%' character + is found. If the character after the '%' is another '%', then + one '%' is output and processing continues. If the following + character is not a digit, then the '%' and that character are + copied and processing continues. Finally, if the '%' *is* + followed by a digit, that digit is used as an index into the + regmatch_t array to replace the two characters with the matched + text. i.e.: "%0" is replaced by the full matching text, "%1" + is the first matching sub-expression, etc. + + This is used as follows: + + c_fix = format; + c_fix_arg = "#ifndef %1\n%0\n#endif"; + c_fix_arg = "#define[ \t]+([A-Z][A-Z0-9a-z_]*).*"; + + This would wrap a one line #define inside of a "#ifndef"/"#endif" + pair. The second "c_fix_arg" may be omitted *IF* there is at least + one select clause and the first one identifies the text you wish to + reformat. It will then be used as the second "c_fix_arg". You may + delete the selected text by supplying an empty string for the + replacement format (the first "c_fix_arg"). + + Note: In general, a format c_fix may be used in place of one + sed expression. However, it will need to be rewritten by + hand. For example: + + sed = 's@^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$' + '@& || __GNUC__ >= 3@'; + + may be rewritten using a format c_fix as: + + c_fix = format; + c_fix_arg = '%0 || __GNUC__ >= 3'; + c_fix_arg = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$'; + + Multiple sed substitution expressions probably ought to remain sed + expressions in order to maintain clarity. Also note that if the + second sed expression is the same as the first select expression, + then you may omit the second c_fix_arg. The select expression will + be picked up and used in its absence. + +EXAMPLES OF FIXES: +================== + + hackname = AAA_ki_iface; + replace; /* empty replacement -> no fixing the file */ + + When this ``fix'' is invoked, it will prevent any fixes + from being applied. + + ------------------ + + hackname = AAB_svr4_no_varargs; + replace = "/* This file was generated by fixincludes. */\n" + "#ifndef _SYS_VARARGS_H\n" + "#define _SYS_VARARGS_H\n\n" + + "#ifdef __STDC__\n" + "#include <stdarg.h>\n" + "#else\n" + "#include <varargs.h>\n" + "#endif\n\n" + + "#endif /* _SYS_VARARGS_H */\n"; + + When this ``fix'' is invoked, the replacement text will be + emitted into the replacement include file. No further fixes + will be applied. + + ------------------ + + hackname = hpux11_fabsf; + files = math.h; + select = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*"; + bypass = "__cplusplus"; + + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + + test_text = + "# define fabsf(x) ((float)fabs((double)(float)(x)))\n"; + + This fix will ensure that the #define for fabs is wrapped + with C++ protection, providing the header is not already + C++ aware. + + ------------------ + +5. Testing fixes. + + The brute force method is, of course, to configure and build + GCC. But you can also: + + cd ${top_builddir}/gcc + rm -rf fixinc.sh include/ stmp-fixinc + make stmp-fixinc + + I would really recommend, however: + + cd ${top_builddir}/fixincludes + make check + + To do this, you *must* have autogen installed on your system. + The "check" step will proceed to construct a shell script that + will exercise all the fixes, using the sample test_text + provided with each fix. Once done, the changes made will + be compared against the changes saved in the source directory. + If you are changing the tests or fixes, the change will likely + be highlighted. diff --git a/fixincludes/README-fixinc b/fixincludes/README-fixinc new file mode 100644 index 000000000..7086a7782 --- /dev/null +++ b/fixincludes/README-fixinc @@ -0,0 +1,14 @@ +This README file is copied into the directory for GCC-only header files +when fixincludes is run by the makefile for GCC. + +Many of the files in this directory were automatically edited from the +standard system header files by the fixincludes process. They are +system-specific, and will not work on any other kind of system. They +are also not part of GCC. The reason we have to do this is because +GCC requires ANSI C headers and many vendors supply ANSI-incompatible +headers. + +Because this is an automated process, sometimes headers get "fixed" +that do not, strictly speaking, need a fix. As long as nothing is broken +by the process, it is just an unfortunate collateral inconvenience. +We would like to rectify it, if it is not "too inconvenient". diff --git a/fixincludes/aclocal.m4 b/fixincludes/aclocal.m4 new file mode 100644 index 000000000..b23541c34 --- /dev/null +++ b/fixincludes/aclocal.m4 @@ -0,0 +1,17 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_include([../config/acx.m4]) +m4_include([../config/override.m4]) +m4_include([../config/warnings.m4]) +m4_include([../gcc/acinclude.m4]) diff --git a/fixincludes/check.tpl b/fixincludes/check.tpl new file mode 100644 index 000000000..b239d8b55 --- /dev/null +++ b/fixincludes/check.tpl @@ -0,0 +1,177 @@ +[= autogen5 template sh=check.sh =] +[= +# +# This file contains the shell template to run tests on the fixes +# +=]#!/bin/sh + +set -e +TESTDIR=tests +TESTBASE=`cd $1;${PWDCMD-pwd}` + +[ -d ${TESTDIR} ] || mkdir ${TESTDIR} +cd ${TESTDIR} +TESTDIR=`${PWDCMD-pwd}` + +TARGET_MACHINE='*' +DESTDIR=`${PWDCMD-pwd}`/res +SRCDIR=`${PWDCMD-pwd}`/inc +FIND_BASE='.' +VERBOSE=[=` echo ${VERBOSE-1} `=] +INPUT=`${PWDCMD-pwd}` +ORIGDIR=${INPUT} + +export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR + +rm -rf ${DESTDIR} ${SRCDIR} +mkdir ${DESTDIR} ${SRCDIR} +( +[= + (shellf + "for f in %s + do case $f in + */* ) echo $f | sed 's;/[^/]*$;;' ;; + esac + done | sort -u | \ + while read g + do echo \" mkdir \\${SRCDIR}/$g || mkdir -p \\${SRCDIR}/$g || exit 1\" + done" (join " " (stack "fix.files")) ) =] +) 2> /dev/null[= # suppress 'No such file or directory' messages =] +cd inc +[= +(define sfile "") +(define HACK "") +(define dfile "") =][= + +FOR fix =][= + + IF (> (count "test_text") 1) =][= + (set! HACK (string-upcase! (get "hackname"))) + (set! sfile (if (exist? "files") (get "files[]") "testing.h")) + (set! dfile (string-append + (if (*==* sfile "/") + (shellf "echo \"%s\"|sed 's,/[^/]*,/,'" sfile ) + "" ) + (string-tr! (get "hackname") "_A-Z" "-a-z") + ) ) =][= + + FOR test_text (for-from 1) =] +cat >> [=(. sfile)=] <<_HACK_EOF_ + + +#if defined( [=(. HACK)=]_CHECK_[=(for-index)=] ) +[=test_text=] +#endif /* [=(. HACK)=]_CHECK_[=(for-index)=] */ +_HACK_EOF_ +echo [=(. sfile)=] | ../../fixincl +mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h +[ -f ${DESTDIR}/[=(. sfile)=] ] && [=# + =]mv ${DESTDIR}/[=(. sfile)=] ${DESTDIR}/[=(. dfile)=]-[=(for-index)=].h[= + + ENDFOR test_text =][= + + ENDIF multi-test =][= + +ENDFOR fix + +=][= + +FOR fix =][= + (set! HACK (string-upcase! (get "hackname"))) =][= + + IF (not (exist? "test_text")) =][= + (if (not (exist? "replace")) + (error (sprintf "include fix '%s' has no test text" + (get "hackname") )) ) + =][= + ELSE =] +cat >> [= + IF (exist? "files") =][= + files[0] =][= + ELSE =]testing.h[= + ENDIF =] <<_HACK_EOF_ + + +#if defined( [=(. HACK)=]_CHECK ) +[=test_text=] +#endif /* [=(. HACK)=]_CHECK */ +_HACK_EOF_ +[=ENDIF =][= + +ENDFOR fix + +=] + +find . -type f | sed 's;^\./;;' | sort | ../../fixincl +cd ${DESTDIR} + +exitok=true + +find * -type f -print > ${TESTDIR}/LIST + +# Special hack for sys/types.h: the #define-d types for size_t, +# ptrdiff_t and wchar_t are different for each port. Therefore, +# strip off the defined-to type so that the test results are the +# same for all platforms. +# +sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX +mv -f XX sys/types.h + +# The following subshell weirdness is for saving an exit +# status from within a while loop that reads input. If you can +# think of a cleaner way, suggest away, please... +# +exitok=` +exec < ${TESTDIR}/LIST +while read f +do + if [ ! -f ${TESTBASE}/$f ] + then + echo "Newly fixed header: $f" >&2 + exitok=false + + elif cmp $f ${TESTBASE}/$f >&2 + then + : + + else + ${DIFF:-diff} -c $f ${TESTBASE}/$f >&2 || : + exitok=false + fi +done +echo $exitok` + +cd $TESTBASE + +find * -type f -print | \ +fgrep -v 'CVS/' | \ +fgrep -v '.svn/' > ${TESTDIR}/LIST + +exitok=` +exec < ${TESTDIR}/LIST +while read f +do + if [ -s $f ] && [ ! -f ${DESTDIR}/$f ] + then + echo "Missing header fix: $f" >&2 + exitok=false + fi +done +echo $exitok` + +echo +if $exitok +then + cd ${TESTDIR} + rm -rf inc res LIST + cd .. + rmdir ${TESTDIR} > /dev/null 2>&1 || : + echo All fixinclude tests pass >&2 +else + echo There were fixinclude test FAILURES >&2 +fi +$exitok[= + +(if (defined? 'set-writable) (set-writable)) + +=] diff --git a/fixincludes/config.h.in b/fixincludes/config.h.in new file mode 100644 index 000000000..07cfb60e0 --- /dev/null +++ b/fixincludes/config.h.in @@ -0,0 +1,412 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Defined to the executable file extension on the host system */ +#ifndef USED_FOR_TARGET +#undef EXE_EXT +#endif + + +/* Define to 1 if you have the `clearerr_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_CLEARERR_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `abort', and to 0 if you don't. + */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_ABORT +#endif + + +/* Define to 1 if you have the declaration of `asprintf', and to 0 if you + don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_ASPRINTF +#endif + + +/* Define to 1 if you have the declaration of `basename', and to 0 if you + don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_BASENAME +#endif + + +/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_CLEARERR_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `errno', and to 0 if you don't. + */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_ERRNO +#endif + + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FEOF_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FERROR_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FFLUSH_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fgetc_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FGETC_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FGETS_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fileno_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FILENO_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fprintf_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FPRINTF_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FPUTC_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FPUTS_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FREAD_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_FWRITE_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_GETCHAR_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_GETC_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if + you don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_PUTCHAR_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you + don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_PUTC_UNLOCKED +#endif + + +/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you + don't. */ +#ifndef USED_FOR_TARGET +#undef HAVE_DECL_VASPRINTF +#endif + + +/* Define to 1 if you have the <fcntl.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FCNTL_H +#endif + + +/* Define to 1 if you have the `feof_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FEOF_UNLOCKED +#endif + + +/* Define to 1 if you have the `ferror_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FERROR_UNLOCKED +#endif + + +/* Define to 1 if you have the `fflush_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FFLUSH_UNLOCKED +#endif + + +/* Define to 1 if you have the `fgetc_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FGETC_UNLOCKED +#endif + + +/* Define to 1 if you have the `fgets_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FGETS_UNLOCKED +#endif + + +/* Define to 1 if you have the `fileno_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FILENO_UNLOCKED +#endif + + +/* Define to 1 if you have the `fprintf_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FPRINTF_UNLOCKED +#endif + + +/* Define to 1 if you have the `fputc_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FPUTC_UNLOCKED +#endif + + +/* Define to 1 if you have the `fputs_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FPUTS_UNLOCKED +#endif + + +/* Define to 1 if you have the `fread_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FREAD_UNLOCKED +#endif + + +/* Define to 1 if you have the `fwrite_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FWRITE_UNLOCKED +#endif + + +/* Define to 1 if you have the `getchar_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_GETCHAR_UNLOCKED +#endif + + +/* Define to 1 if you have the `getc_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_GETC_UNLOCKED +#endif + + +/* Define to 1 if you have the <inttypes.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_INTTYPES_H +#endif + + +/* Define to 1 if you have the <memory.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_MEMORY_H +#endif + + +/* Define if mmap with MAP_ANON(YMOUS) works. */ +#ifndef USED_FOR_TARGET +#undef HAVE_MMAP_ANON +#endif + + +/* Define if mmap of /dev/zero works. */ +#ifndef USED_FOR_TARGET +#undef HAVE_MMAP_DEV_ZERO +#endif + + +/* Define if read-only mmap of a plain file works. */ +#ifndef USED_FOR_TARGET +#undef HAVE_MMAP_FILE +#endif + + +/* Define to 1 if you have the `putchar_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_PUTCHAR_UNLOCKED +#endif + + +/* Define to 1 if you have the `putc_unlocked' function. */ +#ifndef USED_FOR_TARGET +#undef HAVE_PUTC_UNLOCKED +#endif + + +/* Define to 1 if you have the <stddef.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_STDDEF_H +#endif + + +/* Define to 1 if you have the <stdint.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_STDINT_H +#endif + + +/* Define to 1 if you have the <stdlib.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_STDLIB_H +#endif + + +/* Define to 1 if you have the <strings.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_STRINGS_H +#endif + + +/* Define to 1 if you have the <string.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_STRING_H +#endif + + +/* Define to 1 if you have the <sys/file.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_SYS_FILE_H +#endif + + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_SYS_STAT_H +#endif + + +/* Define to 1 if you have the <sys/types.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_SYS_TYPES_H +#endif + + +/* Define to 1 if you have the <unistd.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_UNISTD_H +#endif + + +/* Define to the address where bug reports for this package should be sent. */ +#ifndef USED_FOR_TARGET +#undef PACKAGE_BUGREPORT +#endif + + +/* Define to the full name of this package. */ +#ifndef USED_FOR_TARGET +#undef PACKAGE_NAME +#endif + + +/* Define to the full name and version of this package. */ +#ifndef USED_FOR_TARGET +#undef PACKAGE_STRING +#endif + + +/* Define to the one symbol short name of this package. */ +#ifndef USED_FOR_TARGET +#undef PACKAGE_TARNAME +#endif + + +/* Define to the home page for this package. */ +#ifndef USED_FOR_TARGET +#undef PACKAGE_URL +#endif + + +/* Define to the version of this package. */ +#ifndef USED_FOR_TARGET +#undef PACKAGE_VERSION +#endif + + +/* Defined to the best working sed program on the host system */ +#ifndef USED_FOR_TARGET +#undef SED_PROGRAM +#endif + + +/* Define if testing and fixing are done by separate process */ +#ifndef USED_FOR_TARGET +#undef SEPARATE_FIX_PROC +#endif + + +/* Define to 1 if you have the ANSI C header files. */ +#ifndef USED_FOR_TARGET +#undef STDC_HEADERS +#endif + + +/* Define to xatexit if the host system does not support atexit */ +#ifndef USED_FOR_TARGET +#undef atexit +#endif + + +/* Define to empty if `const' does not conform to ANSI C. */ +#ifndef USED_FOR_TARGET +#undef const +#endif + + +/* Define to xexit if the host system does not support atexit */ +#ifndef USED_FOR_TARGET +#undef exit +#endif + diff --git a/fixincludes/configure b/fixincludes/configure new file mode 100755 index 000000000..7b7109a93 --- /dev/null +++ b/fixincludes/configure @@ -0,0 +1,6434 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.64 for fixincludes . +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software +# Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 7<&0 </dev/null 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='fixincludes' +PACKAGE_TARNAME='fixincludes' +PACKAGE_VERSION=' ' +PACKAGE_STRING='fixincludes ' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="inclhack.def" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +MAINT +EGREP +GREP +CPP +TARGET +target_noncanonical +WERROR +WARN_PEDANTIC +WARN_CFLAGS +SED +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_werror_always +with_local_prefix +enable_twoprocess +enable_maintainer_mode +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information." + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures fixincludes to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/fixincludes] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of fixincludes :";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-werror-always enable -Werror despite compiler version + --enable-twoprocess Use a separate process to apply the fixes + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-local-prefix=DIR specifies directory to put local include + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +fixincludes configure +generated by GNU Autoconf 2.64 + +Copyright (C) 2009 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case <limits.h> declares $2. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func + +# ac_fn_c_check_decl LINENO SYMBOL VAR +# ------------------------------------ +# Tests whether SYMBOL is declared, setting cache variable VAR accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by fixincludes $as_me , which was +generated by GNU Autoconf 2.64. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + +ac_aux_dir= +for ac_dir in .. "$srcdir"/..; do + for ac_t in install-sh install.sh shtool; do + if test -f "$ac_dir/$ac_t"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/$ac_t -c" + break 2 + fi + done +done +if test -z "$ac_aux_dir"; then + as_fn_error "cannot find install-sh, install.sh, or shtool in .. \"$srcdir\"/.." "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + + + +# serial 56 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. + + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters + + + +# LT_INIT([OPTIONS]) +# ------------------ +# LT_INIT + +# Old names: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. + + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. + + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. + + +# Initialize. + + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. + + +# Initialize. + + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- + + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. + + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. + + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- + + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ + + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- + + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- + + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- + + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- + + + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ + + + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. + + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' + + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script + + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name + + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. + + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- + + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ + + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +#_LT_CONFIG_COMMANDS + + +# Initialize. + + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' + + + +# C support is built-in for now + + + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_TAG_COMPILER +# ---------------- +# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- + + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin + + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +# _LT_COMPILER_OPTION + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +# _LT_LINKER_OPTION + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# LT_CMD_MAX_LEN +#--------------- +# LT_CMD_MAX_LEN + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_HEADER_DLFCN +# ---------------- +# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +# LT_SYS_DLOPEN_SELF + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +# _LT_PATH_TOOL_PREFIX + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +# LT_PATH_LD + +# Old names: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_PATH_LD_GNU +#- -------------- +# _LT_PATH_LD_GNU + + +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +# _LT_CMD_RELOAD + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +# LT_PATH_NM + +# Old names: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# LT_LIB_M +# -------- +# check for math library +# LT_LIB_M + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- + # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- + + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# LT_PROG_RC +# ---------- + + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. + + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. + + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +# _LT_DECL_SED + +#m4_ifndef + +# Old name: +# This is what autoupdate's m4 run will expand. It fires +# the warning (with _au_warn_XXX), outputs it into the +# updated configure.ac (with AC_DIAGNOSE), and then outputs +# the replacement expansion. + + +# This is an auxiliary macro that is also run when +# autoupdate runs m4. It simply calls m4_warning, but +# we need a wrapper so that each warning is emitted only +# once. We break the quoting in m4_warning's argument in +# order to expand this macro's arguments, not AU_DEFUN's. + + +# Finally, this is the expansion that is picked up by +# autoconf. It tells the user to run autoupdate, and +# then outputs the replacement expansion. We do not care +# about autoupdate's warning because that contains +# information on what to do *after* running autoupdate. + + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "no acceptable C compiler found in \$PATH +See \`config.log' for more details." "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then : + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "C compiler cannot create executables +See \`config.log' for more details." "$LINENO" 5; }; } +fi +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of object files: cannot compile +See \`config.log' for more details." "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + +# Figure out what compiler warnings we can enable. +# See config/warnings.m4 for details. + + +WARN_CFLAGS= +save_CFLAGS="$CFLAGS" +for option in -W -Wall -Wwrite-strings -Wstrict-prototypes \ + -Wmissing-prototypes -Wold-style-definition \ + -Wmissing-format-attribute -Wno-overlength-strings; do + as_acx_Woption=`$as_echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $option" >&5 +$as_echo_n "checking whether $CC supports $option... " >&6; } +if { as_var=$as_acx_Woption; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + CFLAGS="$option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_acx_Woption=yes" +else + eval "$as_acx_Woption=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +eval ac_res=\$$as_acx_Woption + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if test `eval 'as_val=${'$as_acx_Woption'};$as_echo "$as_val"'` = yes; then : + WARN_CFLAGS="$WARN_CFLAGS${WARN_CFLAGS:+ }$option" +fi + done +CFLAGS="$save_CFLAGS" + +WARN_PEDANTIC= +if test "$GCC" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pedantic -Wno-long-long" >&5 +$as_echo_n "checking whether $CC supports -pedantic -Wno-long-long... " >&6; } +if test "${acx_cv_prog_cc_pedantic__Wno_long_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + save_CFLAGS="$CFLAGS" +CFLAGS="-pedantic -Wno-long-long" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + acx_cv_prog_cc_pedantic__Wno_long_long=yes +else + acx_cv_prog_cc_pedantic__Wno_long_long=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +CFLAGS="$save_CFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_prog_cc_pedantic__Wno_long_long" >&5 +$as_echo "$acx_cv_prog_cc_pedantic__Wno_long_long" >&6; } +if test $acx_cv_prog_cc_pedantic__Wno_long_long = yes; then : + WARN_PEDANTIC="$WARN_PEDANTIC${WARN_PEDANTIC:+ }-pedantic -Wno-long-long" +fi + +fi + + +# Only enable with --enable-werror-always until existing warnings are +# corrected. +WERROR= +# Check whether --enable-werror-always was given. +if test "${enable_werror_always+set}" = set; then : + enableval=$enable_werror_always; +else + enable_werror_always=no +fi + +if test $enable_werror_always = yes; then : + WERROR="$WERROR${WERROR:+ }-Werror" +fi + + + +# Determine the noncanonical target name, for directory use. + case ${build_alias} in + "") build_noncanonical=${build} ;; + *) build_noncanonical=${build_alias} ;; +esac + + case ${host_alias} in + "") host_noncanonical=${build_noncanonical} ;; + *) host_noncanonical=${host_alias} ;; +esac + + case ${target_alias} in + "") target_noncanonical=${host_noncanonical} ;; + *) target_noncanonical=${target_alias} ;; +esac + + + + +# Specify the local prefix +local_prefix= + +# Check whether --with-local-prefix was given. +if test "${with_local_prefix+set}" = set; then : + withval=$with_local_prefix; case "${withval}" in +yes) as_fn_error "bad value ${withval} given for local include directory prefix" "$LINENO" 5 ;; +no) ;; +*) local_prefix=$with_local_prefix ;; +esac +fi + + +# Default local prefix if it is empty +if test x$local_prefix = x; then + local_prefix=/usr/local +fi + +# Choose one or two-process fix methodology. Systems that cannot handle +# bi-directional pipes must use the two process method. +# +# Check whether --enable-twoprocess was given. +if test "${enable_twoprocess+set}" = set; then : + enableval=$enable_twoprocess; if test "x$enable_twoprocess" = xyes; then + TARGET=twoprocess +else + TARGET=oneprocess +fi +else + case $host in + i?86-*-msdosdjgpp* | \ + i?86-*-mingw32* | \ + x86_64-*-mingw32* | \ + *-*-beos* ) + TARGET=twoprocess + ;; + + * ) + TARGET=oneprocess + ;; +esac +fi + + + +if test $TARGET = twoprocess; then + +$as_echo "#define SEPARATE_FIX_PROC 1" >>confdefs.h + +fi + +case $host in + vax-dec-bsd* ) + +$as_echo "#define exit xexit" >>confdefs.h + + +$as_echo "#define atexit xatexit" >>confdefs.h + + ;; +esac + + +cat >>confdefs.h <<_ACEOF +#define EXE_EXT "$ac_exeext" +_ACEOF + + +# Checks for header files. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in stddef.h stdlib.h strings.h unistd.h fcntl.h sys/file.h \ + sys/stat.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in clearerr_unlocked feof_unlocked ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked putchar_unlocked putc_unlocked +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +ac_fn_c_check_decl "$LINENO" "abort" "ac_cv_have_decl_abort" "$ac_includes_default" +if test "x$ac_cv_have_decl_abort" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ABORT $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default" +if test "x$ac_cv_have_decl_asprintf" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ASPRINTF $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "basename(char *)" "ac_cv_have_decl_basename_char_p_" "$ac_includes_default" +if test "x$ac_cv_have_decl_basename_char_p_" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_BASENAME $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "errno" "ac_cv_have_decl_errno" "$ac_includes_default" +if test "x$ac_cv_have_decl_errno" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ERRNO $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default" +if test "x$ac_cv_have_decl_vasprintf" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_VASPRINTF $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_clearerr_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CLEARERR_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_feof_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "ferror_unlocked" "ac_cv_have_decl_ferror_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_ferror_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FERROR_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fflush_unlocked" "ac_cv_have_decl_fflush_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fflush_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FFLUSH_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fgetc_unlocked" "ac_cv_have_decl_fgetc_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fgetc_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETC_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fgets_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fileno_unlocked" "ac_cv_have_decl_fileno_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fileno_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FILENO_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fprintf_unlocked" "ac_cv_have_decl_fprintf_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fprintf_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPRINTF_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fputc_unlocked" "ac_cv_have_decl_fputc_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fputc_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPUTC_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fputs_unlocked" "ac_cv_have_decl_fputs_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fputs_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPUTS_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fread_unlocked" "ac_cv_have_decl_fread_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fread_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FREAD_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fwrite_unlocked" "ac_cv_have_decl_fwrite_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_fwrite_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FWRITE_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "getchar_unlocked" "ac_cv_have_decl_getchar_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_getchar_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETCHAR_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "putchar_unlocked" "ac_cv_have_decl_putchar_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_putchar_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PUTCHAR_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "putc_unlocked" "ac_cv_have_decl_putc_unlocked" "$ac_includes_default" +if test "x$ac_cv_have_decl_putc_unlocked" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PUTC_UNLOCKED $ac_have_decl +_ACEOF + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + + +# Checks for library functions. + +ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mman_h" = x""yes; then : + gcc_header_sys_mman_h=yes +else + gcc_header_sys_mman_h=no +fi + + +ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" +if test "x$ac_cv_func_mmap" = x""yes; then : + gcc_func_mmap=yes +else + gcc_func_mmap=no +fi + +if test "$gcc_header_sys_mman_h" != yes \ + || test "$gcc_func_mmap" != yes; then + gcc_cv_func_mmap_file=no + gcc_cv_func_mmap_dev_zero=no + gcc_cv_func_mmap_anon=no +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5 +$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; } +if test "${gcc_cv_func_mmap_file+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Add a system to this blacklist if + # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a + # memory area containing the same data that you'd get if you applied + # read() to the same fd. The only system known to have a problem here + # is VMS, where text files have record structure. + case "$host_os" in + vms* | ultrix*) + gcc_cv_func_mmap_file=no ;; + *) + gcc_cv_func_mmap_file=yes;; + esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_func_mmap_file" >&5 +$as_echo "$gcc_cv_func_mmap_file" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5 +$as_echo_n "checking whether mmap from /dev/zero works... " >&6; } +if test "${gcc_cv_func_mmap_dev_zero+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Add a system to this blacklist if it has mmap() but /dev/zero + # does not exist, or if mmapping /dev/zero does not give anonymous + # zeroed pages with both the following properties: + # 1. If you map N consecutive pages in with one call, and then + # unmap any subset of those pages, the pages that were not + # explicitly unmapped remain accessible. + # 2. If you map two adjacent blocks of memory and then unmap them + # both at once, they must both go away. + # Systems known to be in this category are Windows (all variants), + # VMS, and Darwin. + case "$host_os" in + vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) + gcc_cv_func_mmap_dev_zero=no ;; + *) + gcc_cv_func_mmap_dev_zero=yes;; + esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_func_mmap_dev_zero" >&5 +$as_echo "$gcc_cv_func_mmap_dev_zero" >&6; } + + # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5 +$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; } +if test "${gcc_cv_decl_map_anon+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/mman.h> +#include <unistd.h> + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif + +int +main () +{ +int n = MAP_ANONYMOUS; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gcc_cv_decl_map_anon=yes +else + gcc_cv_decl_map_anon=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_decl_map_anon" >&5 +$as_echo "$gcc_cv_decl_map_anon" >&6; } + + if test $gcc_cv_decl_map_anon = no; then + gcc_cv_func_mmap_anon=no + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5 +$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; } +if test "${gcc_cv_func_mmap_anon+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Add a system to this blacklist if it has mmap() and MAP_ANON or + # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) + # doesn't give anonymous zeroed pages with the same properties listed + # above for use of /dev/zero. + # Systems known to be in this category are Windows, VMS, and SCO Unix. + case "$host_os" in + vms* | cygwin* | pe | mingw* | sco* | udk* ) + gcc_cv_func_mmap_anon=no ;; + *) + gcc_cv_func_mmap_anon=yes;; + esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_func_mmap_anon" >&5 +$as_echo "$gcc_cv_func_mmap_anon" >&6; } + fi +fi + +if test $gcc_cv_func_mmap_file = yes; then + +$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h + +fi +if test $gcc_cv_func_mmap_dev_zero = yes; then + +$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h + +fi +if test $gcc_cv_func_mmap_anon = yes; then + +$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } +# Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } +if test "$USE_MAINTAINER_MODE" = yes; then + MAINT= +else + MAINT='#' +fi + + +cat >>confdefs.h <<_ACEOF +#define SED_PROGRAM "${SED}" +_ACEOF + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files Makefile mkheaders.almost:mkheaders.in" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by fixincludes $as_me , which was +generated by GNU Autoconf 2.64. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +fixincludes config.status +configured by $0, generated by GNU Autoconf 2.64, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2009 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "mkheaders.almost") CONFIG_FILES="$CONFIG_FILES mkheaders.almost:mkheaders.in" ;; + + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' <conf$$subs.awk | sed ' +/^[^""]/{ + N + s/\n// +} +' >>$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' <confdefs.h | sed ' +s/'"$ac_delim"'/"\\\ +"/g' >>$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 + fi + ;; + + + esac + + + case $ac_file$ac_mode in + "config.h":H) echo timestamp > stamp-h ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit $? +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/fixincludes/configure.ac b/fixincludes/configure.ac new file mode 100644 index 000000000..2c488e703 --- /dev/null +++ b/fixincludes/configure.ac @@ -0,0 +1,117 @@ +AC_PREREQ(2.64) + +AC_INIT(fixincludes, [ ]) +AC_CONFIG_SRCDIR(inclhack.def) +AC_CONFIG_AUX_DIR(..) +m4_sinclude(../libtool.m4) +AC_CANONICAL_SYSTEM +AC_PROG_CC +AC_PROG_SED + +# Figure out what compiler warnings we can enable. +# See config/warnings.m4 for details. + +ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \ + -Wmissing-prototypes -Wold-style-definition \ + -Wmissing-format-attribute -Wno-overlength-strings]) +ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long]) + +# Only enable with --enable-werror-always until existing warnings are +# corrected. +ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual]) + +# Determine the noncanonical target name, for directory use. +ACX_NONCANONICAL_TARGET + +# Specify the local prefix +local_prefix= +AC_ARG_WITH(local-prefix, +[ --with-local-prefix=DIR specifies directory to put local include], +[case "${withval}" in +yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;; +no) ;; +*) local_prefix=$with_local_prefix ;; +esac]) + +# Default local prefix if it is empty +if test x$local_prefix = x; then + local_prefix=/usr/local +fi + +# Choose one or two-process fix methodology. Systems that cannot handle +# bi-directional pipes must use the two process method. +# +AC_ARG_ENABLE([twoprocess], +[ --enable-twoprocess Use a separate process to apply the fixes], +[if test "x$enable_twoprocess" = xyes; then + TARGET=twoprocess +else + TARGET=oneprocess +fi], +[case $host in + i?86-*-msdosdjgpp* | \ + i?86-*-mingw32* | \ + x86_64-*-mingw32* | \ + *-*-beos* ) + TARGET=twoprocess + ;; + + * ) + TARGET=oneprocess + ;; +esac]) +AC_SUBST(TARGET) + +if test $TARGET = twoprocess; then + AC_DEFINE(SEPARATE_FIX_PROC, 1, + [Define if testing and fixing are done by separate process]) +fi + +case $host in + vax-dec-bsd* ) + AC_DEFINE(exit, xexit, [Define to xexit if the host system does not support atexit]) + AC_DEFINE(atexit, xatexit, [Define to xatexit if the host system does not support atexit]) + ;; +esac + +AC_DEFINE_UNQUOTED([EXE_EXT], "$ac_exeext", + [Defined to the executable file extension on the host system]) + +# Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS([stddef.h stdlib.h strings.h unistd.h fcntl.h sys/file.h \ + sys/stat.h]) +define(fixincludes_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl + ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl + fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl + fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl + putchar_unlocked putc_unlocked) +AC_CHECK_FUNCS(fixincludes_UNLOCKED_FUNCS) +AC_CHECK_DECLS([abort, asprintf, basename(char *), errno, vasprintf]) +AC_CHECK_DECLS(m4_split(m4_normalize(fixincludes_UNLOCKED_FUNCS))) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST + +# Checks for library functions. +gcc_AC_FUNC_MMAP_BLACKLIST + +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) +AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) +AC_MSG_RESULT($USE_MAINTAINER_MODE) +if test "$USE_MAINTAINER_MODE" = yes; then + MAINT= +else + MAINT='#' +fi +AC_SUBST(MAINT) +AC_DEFINE_UNQUOTED([SED_PROGRAM], "${SED}", + [Defined to the best working sed program on the host system]) + +AC_CONFIG_HEADERS(config.h, [echo timestamp > stamp-h]) +AC_CONFIG_FILES(Makefile mkheaders.almost:mkheaders.in) +AC_OUTPUT diff --git a/fixincludes/fixfixes.c b/fixincludes/fixfixes.c new file mode 100644 index 000000000..5616bf149 --- /dev/null +++ b/fixincludes/fixfixes.c @@ -0,0 +1,806 @@ + +/* + + Test to see if a particular fix should be applied to a header file. + + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2009 + Free Software Foundation, Inc. + += = = = = = = = = = = = = = = = = = = = = = = = = + +NOTE TO DEVELOPERS + +The routines you write here must work closely with fixincl.c. + +Here are the rules: + +1. Every test procedure name must be suffixed with "_fix". + These routines will be referenced from inclhack.def, sans the suffix. + +2. Use the "FIX_PROC_HEAD()" macro _with_ the "_fix" suffix + (I cannot use the ## magic from ANSI C) for defining your entry point. + +3. Put your test name into the FIXUP_TABLE. + +4. Do not read anything from stdin. It is closed. + +5. Write to stderr only in the event of a reportable error + In such an event, call "exit (EXIT_FAILURE)". + +6. You have access to the fixDescList entry for the fix in question. + This may be useful, for example, if there are interesting strings + or pre-compiled regular expressions stored there. + += = = = = = = = = = = = = = = = = = = = = = = = = + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "fixlib.h" +#define GTYPE_SE_CT 1 + +#ifdef SEPARATE_FIX_PROC +#include "fixincl.x" +#endif + +tSCC zNeedsArg[] = "fixincl error: `%s' needs %s argument (c_fix_arg[%d])\n"; + +typedef void t_fix_proc (const char *, const char *, tFixDesc *) ; +typedef struct { + const char* fix_name; + t_fix_proc* fix_proc; +} fix_entry_t; + +#define FIXUP_TABLE \ + _FT_( "char_macro_def", char_macro_def_fix ) \ + _FT_( "char_macro_use", char_macro_use_fix ) \ + _FT_( "format", format_fix ) \ + _FT_( "machine_name", machine_name_fix ) \ + _FT_( "wrap", wrap_fix ) \ + _FT_( "gnu_type", gnu_type_fix ) + + +#define FIX_PROC_HEAD( fix ) \ +static void fix (const char* filname ATTRIBUTE_UNUSED , \ + const char* text ATTRIBUTE_UNUSED , \ + tFixDesc* p_fixd ATTRIBUTE_UNUSED ) + +#ifdef NEED_PRINT_QUOTE +/* + * Skip over a quoted string. Single quote strings may + * contain multiple characters if the first character is + * a backslash. Especially a backslash followed by octal digits. + * We are not doing a correctness syntax check here. + */ +static char* +print_quote(char q, char* text ) +{ + fputc( q, stdout ); + + for (;;) + { + char ch = *(text++); + fputc( ch, stdout ); + + switch (ch) + { + case '\\': + if (*text == NUL) + goto quote_done; + + fputc( *(text++), stdout ); + break; + + case '"': + case '\'': + if (ch != q) + break; + /*FALLTHROUGH*/ + + case '\n': + case NUL: + goto quote_done; + } + } quote_done:; + + return text; +} +#endif /* NEED_PRINT_QUOTE */ + + +/* + * Emit the GNU standard type wrapped up in such a way that + * this thing can be encountered countless times during a compile + * and not cause even a warning. + */ +static const char* +emit_gnu_type (const char* text, regmatch_t* rm ) +{ + char z_TYPE[ 64 ]; + char z_type[ 64 ]; + + fwrite (text, rm[0].rm_so, 1, stdout); + + { + const char* ps = text + rm[1].rm_so; + const char* pe = text + rm[1].rm_eo; + char* pd = z_type; + char* pD = z_TYPE; + + while (ps < pe) + *(pD++) = TOUPPER( *(pd++) = *(ps++) ); + + *pD = *pd = NUL; + } + + /* + * Now print out the reformed typedef, + * with a C++ guard for WCHAR + */ + { + tSCC z_fmt[] = "\ +#if !defined(_GCC_%s_T)%s\n\ +#define _GCC_%s_T\n\ +typedef __%s_TYPE__ %s_t;\n\ +#endif\n"; + + const char *const pz_guard = (strcmp (z_type, "wchar") == 0) + ? " && ! defined(__cplusplus)" : ""; + + printf (z_fmt, z_TYPE, pz_guard, z_TYPE, z_TYPE, z_type); + } + + return text += rm[0].rm_eo; +} + + +/* + * Copy the `format' string to std out, replacing `%n' expressions + * with the matched text from a regular expression evaluation. + * Doubled '%' characters will be replaced with a single copy. + * '%' characters in other contexts and all other characters are + * copied out verbatim. + */ +static void +format_write (tCC* format, tCC* text, regmatch_t av[] ) +{ + int c; + + while ((c = (unsigned)*(format++)) != NUL) { + + if (c != '%') + { + putchar(c); + continue; + } + + c = (unsigned)*(format++); + + /* + * IF the character following a '%' is not a digit, + * THEN we will always emit a '%' and we may or may + * not emit the following character. We will end on + * a NUL and we will emit only one of a pair of '%'. + */ + if (! ISDIGIT ( c )) + { + putchar( '%' ); + switch (c) { + case NUL: + return; + case '%': + break; + default: + putchar(c); + } + } + + /* + * Emit the matched subexpression numbered 'c'. + * IF, of course, there was such a match... + */ + else { + regmatch_t* pRM = av + (c - (unsigned)'0'); + size_t len; + + if (pRM->rm_so < 0) + continue; + + len = pRM->rm_eo - pRM->rm_so; + if (len > 0) + fwrite(text + pRM->rm_so, len, 1, stdout); + } + } +} + + +/* + * Search for multiple copies of a regular expression. Each block + * of matched text is replaced with the format string, as described + * above in `format_write'. + */ +FIX_PROC_HEAD( format_fix ) +{ + tCC* pz_pat = p_fixd->patch_args[2]; + tCC* pz_fmt = p_fixd->patch_args[1]; + regex_t re; + regmatch_t rm[10]; + IGNORE_ARG(filname); + + /* + * We must have a format + */ + if (pz_fmt == (tCC*)NULL) + { + fprintf( stderr, zNeedsArg, p_fixd->fix_name, "replacement format", 0 ); + exit (EXIT_BROKEN); + } + + /* + * IF we don't have a search text, then go find the first + * regular expression among the tests. + */ + if (pz_pat == (tCC*)NULL) + { + tTestDesc* pTD = p_fixd->p_test_desc; + int ct = p_fixd->test_ct; + for (;;) + { + if (ct-- <= 0) + { + fprintf( stderr, zNeedsArg, p_fixd->fix_name, "search text", 1 ); + exit (EXIT_BROKEN); + } + + if (pTD->type == TT_EGREP) + { + pz_pat = pTD->pz_test_text; + break; + } + + pTD++; + } + } + + /* + * Replace every copy of the text we find + */ + compile_re (pz_pat, &re, 1, "format search-text", "format_fix" ); + while (xregexec (&re, text, 10, rm, 0) == 0) + { + fwrite( text, rm[0].rm_so, 1, stdout ); + format_write( pz_fmt, text, rm ); + text += rm[0].rm_eo; + } + + /* + * Dump out the rest of the file + */ + fputs (text, stdout); +} + + +/* Scan the input file for all occurrences of text like this: + + #define TIOCCONS _IO(T, 12) + + and change them to read like this: + + #define TIOCCONS _IO('T', 12) + + which is the required syntax per the C standard. (The definition of + _IO also has to be tweaked - see below.) 'IO' is actually whatever you + provide as the `c_fix_arg' argument. */ + +FIX_PROC_HEAD( char_macro_use_fix ) +{ + /* This regexp looks for a traditional-syntax #define (# in column 1) + of an object-like macro. */ + static const char pat[] = + "^#[ \t]*define[ \t]+[_A-Za-z][_A-Za-z0-9]*[ \t]+"; + static regex_t re; + + const char* str = p_fixd->patch_args[1]; + regmatch_t rm[1]; + const char *p, *limit; + size_t len; + IGNORE_ARG(filname); + + if (str == NULL) + { + fprintf (stderr, zNeedsArg, p_fixd->fix_name, "ioctl type", 0); + exit (EXIT_BROKEN); + } + + len = strlen (str); + compile_re (pat, &re, 1, "macro pattern", "char_macro_use_fix"); + + for (p = text; + xregexec (&re, p, 1, rm, 0) == 0; + p = limit + 1) + { + /* p + rm[0].rm_eo is the first character of the macro replacement. + Find the end of the macro replacement, and the STR we were + sent to look for within the replacement. */ + p += rm[0].rm_eo; + limit = p - 1; + do + { + limit = strchr (limit + 1, '\n'); + if (!limit) + goto done; + } + while (limit[-1] == '\\'); + + do + { + if (*p == str[0] && !strncmp (p+1, str+1, len-1)) + goto found; + } + while (++p < limit - len); + /* Hit end of line. */ + continue; + + found: + /* Found STR on this line. If the macro needs fixing, + the next few chars will be whitespace or uppercase, + then an open paren, then a single letter. */ + while ((ISSPACE (*p) || ISUPPER (*p)) && p < limit) p++; + if (*p++ != '(') + continue; + if (!ISALPHA (*p)) + continue; + if (ISIDNUM (p[1])) + continue; + + /* Splat all preceding text into the output buffer, + quote the character at p, then proceed. */ + fwrite (text, 1, p - text, stdout); + putchar ('\''); + putchar (*p); + putchar ('\''); + text = p + 1; + } + done: + fputs (text, stdout); +} + + +/* Scan the input file for all occurrences of text like this: + + #define xxxIOxx(x, y) (....'x'<<16....) + + and change them to read like this: + + #define xxxIOxx(x, y) (....x<<16....) + + which is the required syntax per the C standard. (The uses of _IO + also has to be tweaked - see above.) 'IO' is actually whatever + you provide as the `c_fix_arg' argument. */ +FIX_PROC_HEAD( char_macro_def_fix ) +{ + /* This regexp looks for any traditional-syntax #define (# in column 1). */ + static const char pat[] = + "^#[ \t]*define[ \t]+"; + static regex_t re; + + const char* str = p_fixd->patch_args[1]; + regmatch_t rm[1]; + const char *p, *limit; + char arg; + size_t len; + IGNORE_ARG(filname); + + if (str == NULL) + { + fprintf (stderr, zNeedsArg, p_fixd->fix_name, "ioctl type", 0); + exit (EXIT_BROKEN); + } + + len = strlen (str); + compile_re (pat, &re, 1, "macro pattern", "fix_char_macro_defines"); + + for (p = text; + xregexec (&re, p, 1, rm, 0) == 0; + p = limit + 1) + { + /* p + rm[0].rm_eo is the first character of the macro name. + Find the end of the macro replacement, and the STR we were + sent to look for within the name. */ + p += rm[0].rm_eo; + limit = p - 1; + do + { + limit = strchr (limit + 1, '\n'); + if (!limit) + goto done; + } + while (limit[-1] == '\\'); + + do + { + if (*p == str[0] && !strncmp (p+1, str+1, len-1)) + goto found; + p++; + } + while (ISIDNUM (*p)); + /* Hit end of macro name without finding the string. */ + continue; + + found: + /* Found STR in this macro name. If the macro needs fixing, + there may be a few uppercase letters, then there will be an + open paren with _no_ intervening whitespace, and then a + single letter. */ + while (ISUPPER (*p) && p < limit) p++; + if (*p++ != '(') + continue; + if (!ISALPHA (*p)) + continue; + if (ISIDNUM (p[1])) + continue; + + /* The character at P is the one to look for in the following + text. */ + arg = *p; + p += 2; + + while (p < limit) + { + if (p[-1] == '\'' && p[0] == arg && p[1] == '\'') + { + /* Remove the quotes from this use of ARG. */ + p--; + fwrite (text, 1, p - text, stdout); + putchar (arg); + p += 3; + text = p; + } + else + p++; + } + } + done: + fputs (text, stdout); +} + +/* Fix for machine name #ifdefs that are not in the namespace reserved + by the C standard. They won't be defined if compiling with -ansi, + and the headers will break. We go to some trouble to only change + #ifdefs where the macro is defined by GCC in non-ansi mode; this + minimizes the number of headers touched. */ + +#define SCRATCHSZ 64 /* hopefully long enough */ + +FIX_PROC_HEAD( machine_name_fix ) +{ + regmatch_t match[2]; + const char *line, *base, *limit, *p, *q; + regex_t *label_re, *name_re; + char scratch[SCRATCHSZ]; + size_t len; + IGNORE_ARG(filname); + IGNORE_ARG(p_fixd); + + if (!mn_get_regexps (&label_re, &name_re, "machine_name_fix")) + { + fputs( "The target machine has no needed machine name fixes\n", stderr ); + goto done; + } + + scratch[0] = '_'; + scratch[1] = '_'; + + for (base = text; + xregexec (label_re, base, 2, match, 0) == 0; + base = limit) + { + base += match[0].rm_eo; + /* We're looking at an #if or #ifdef. Scan forward for the + next non-escaped newline. */ + line = limit = base; + do + { + limit++; + limit = strchr (limit, '\n'); + if (!limit) + goto done; + } + while (limit[-1] == '\\'); + + /* If the 'name_pat' matches in between base and limit, we have + a bogon. It is not worth the hassle of excluding comments + because comments on #if/#ifdef lines are rare, and strings on + such lines are illegal. + + REG_NOTBOL means 'base' is not at the beginning of a line, which + shouldn't matter since the name_re has no ^ anchor, but let's + be accurate anyway. */ + + for (;;) + { + again: + if (base == limit) + break; + + if (xregexec (name_re, base, 1, match, REG_NOTBOL)) + goto done; /* No remaining match in this file */ + + /* Match; is it on the line? */ + if (match[0].rm_eo > limit - base) + break; + + p = base + match[0].rm_so; + base += match[0].rm_eo; + + /* One more test: if on the same line we have the same string + with the appropriate underscores, then leave it alone. + We want exactly two leading and trailing underscores. */ + if (*p == '_') + { + len = base - p - ((*base == '_') ? 2 : 1); + q = p + 1; + } + else + { + len = base - p - ((*base == '_') ? 1 : 0); + q = p; + } + if (len + 4 > SCRATCHSZ) + abort (); + memcpy (&scratch[2], q, len); + len += 2; + scratch[len++] = '_'; + scratch[len++] = '_'; + + for (q = line; q <= limit - len; q++) + if (*q == '_' && !strncmp (q, scratch, len)) + goto again; + + fwrite (text, 1, p - text, stdout); + fwrite (scratch, 1, len, stdout); + + text = base; + } + } + done: + fputs (text, stdout); +} + + +FIX_PROC_HEAD( wrap_fix ) +{ + tSCC z_no_wrap_pat[] = "^#if.*__need_"; + static regex_t no_wrapping_re; /* assume zeroed data */ + + tCC* pz_name = NULL; + + if (no_wrapping_re.allocated == 0) + compile_re( z_no_wrap_pat, &no_wrapping_re, 0, "no-wrap pattern", + "wrap-fix" ); + + /* + * IF we do *not* match the no-wrap re, then we have a double negative. + * A double negative means YES. + */ + if (xregexec( &no_wrapping_re, text, 0, NULL, 0 ) != 0) + { + /* + * A single file can get wrapped more than once by different fixes. + * A single fix can wrap multiple files. Therefore, guard with + * *both* the fix name and the file name. + */ + size_t ln = strlen( filname ) + strlen( p_fixd->fix_name ) + 14; + char* pz = XNEWVEC (char, ln); + pz_name = pz; + sprintf( pz, "FIXINC_WRAP_%s-%s", filname, p_fixd->fix_name ); + + for (pz += 12; 1; pz++) { + char ch = *pz; + + if (ch == NUL) + break; + + if (! ISALNUM( ch )) { + *pz = '_'; + } + else { + *pz = TOUPPER( ch ); + } + } + + printf( "#ifndef %s\n", pz_name ); + printf( "#define %s 1\n\n", pz_name ); + } + + if (p_fixd->patch_args[1] == (tCC*)NULL) + fputs( text, stdout ); + + else { + fputs( p_fixd->patch_args[1], stdout ); + fputs( text, stdout ); + if (p_fixd->patch_args[2] != (tCC*)NULL) + fputs( p_fixd->patch_args[2], stdout ); + } + + if (pz_name != NULL) { + printf( "\n#endif /* %s */\n", pz_name ); + free( (void*)pz_name ); + } +} + + +/* + * Search for multiple copies of a regular expression. Each block + * of matched text is replaced with the format string, as described + * above in `format_write'. + */ +FIX_PROC_HEAD( gnu_type_fix ) +{ + const char* pz_pat; + regex_t re; + regmatch_t rm[GTYPE_SE_CT+1]; + IGNORE_ARG(filname); + + { + tTestDesc* pTD = p_fixd->p_test_desc; + int ct = p_fixd->test_ct; + for (;;) + { + if (ct-- <= 0) + { + fprintf (stderr, zNeedsArg, p_fixd->fix_name, "search text", 1); + exit (EXIT_BROKEN); + } + + if (pTD->type == TT_EGREP) + { + pz_pat = pTD->pz_test_text; + break; + } + + pTD++; + } + } + + compile_re (pz_pat, &re, 1, "gnu type typedef", "gnu_type_fix"); + + while (xregexec (&re, text, GTYPE_SE_CT+1, rm, 0) == 0) + { + text = emit_gnu_type (text, rm); + } + + /* + * Dump out the rest of the file + */ + fputs (text, stdout); +} + + +/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = + + test for fix selector + + THIS IS THE ONLY EXPORTED ROUTINE + +*/ +void +apply_fix( tFixDesc* p_fixd, tCC* filname ) +{ +#define _FT_(n,p) { n, p }, + static fix_entry_t fix_table[] = { FIXUP_TABLE { NULL, NULL }}; +#undef _FT_ +#define FIX_TABLE_CT (ARRAY_SIZE (fix_table)-1) + + tCC* fixname = p_fixd->patch_args[0]; + char* buf; + int ct = FIX_TABLE_CT; + fix_entry_t* pfe = fix_table; + + for (;;) + { + if (strcmp (pfe->fix_name, fixname) == 0) + break; + if (--ct <= 0) + { + fprintf (stderr, "fixincl error: the `%s' fix is unknown\n", + fixname ); + exit (EXIT_BROKEN); + } + pfe++; + } + + buf = load_file_data (stdin); + (*pfe->fix_proc)( filname, buf, p_fixd ); +} + +#ifdef SEPARATE_FIX_PROC +tSCC z_usage[] = +"USAGE: applyfix <fix-name> <file-to-fix> <file-source> <file-destination>\n"; +tSCC z_reopen[] = +"FS error %d (%s) reopening %s as std%s\n"; + +int +main( int argc, char** argv ) +{ + tFixDesc* pFix; + char* pz_tmptmp; + char* pz_tmp_base; + char* pz_tmp_dot; + + if (argc != 5) + { + usage_failure: + fputs (z_usage, stderr); + return EXIT_FAILURE; + } + + initialize_opts (); + + { + char* pz = argv[1]; + long idx; + + if (! ISDIGIT ( *pz )) + goto usage_failure; + + idx = strtol (pz, &pz, 10); + if ((*pz != NUL) || ((unsigned)idx >= FIX_COUNT)) + goto usage_failure; + pFix = fixDescList + idx; + } + + if (freopen (argv[3], "r", stdin) != stdin) + { + fprintf (stderr, z_reopen, errno, strerror( errno ), argv[3], "in"); + return EXIT_FAILURE; + } + + pz_tmptmp = XNEWVEC (char, strlen (argv[4]) + 5); + strcpy( pz_tmptmp, argv[4] ); + + /* Don't lose because "12345678" and "12345678X" map to the same + file under DOS restricted 8+3 file namespace. Note that DOS + doesn't allow more than one dot in the trunk of a file name. */ + pz_tmp_base = basename( pz_tmptmp ); + pz_tmp_dot = strchr( pz_tmp_base, '.' ); +#ifdef _PC_NAME_MAX + if (pathconf( pz_tmptmp, _PC_NAME_MAX ) <= 12 /* is this DOS or Windows9X? */ + && pz_tmp_dot != (char*)NULL) + strcpy (pz_tmp_dot+1, "X"); /* nuke the original extension */ + else +#endif /* _PC_NAME_MAX */ + strcat (pz_tmptmp, ".X"); + if (freopen (pz_tmptmp, "w", stdout) != stdout) + { + fprintf (stderr, z_reopen, errno, strerror( errno ), pz_tmptmp, "out"); + return EXIT_FAILURE; + } + + apply_fix (pFix, argv[1]); + fclose (stdout); + fclose (stdin); + unlink (argv[4]); + if (rename (pz_tmptmp, argv[4]) != 0) + { + fprintf (stderr, "error %d (%s) renaming %s to %s\n", errno, + strerror( errno ), pz_tmptmp, argv[4]); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} +#endif diff --git a/fixincludes/fixinc.in b/fixincludes/fixinc.in new file mode 100755 index 000000000..e73aed99a --- /dev/null +++ b/fixincludes/fixinc.in @@ -0,0 +1,498 @@ +#!/bin/sh +# +# Install modified versions of certain ANSI-incompatible system header +# files which are fixed to work correctly with ANSI C and placed in a +# directory that GCC will search. +# +# See README-fixinc for more information. +# +# fixincludes copyright (c) 1998, 1999, 2000, 2002, 2009 +# The Free Software Foundation, Inc. +# +# fixincludes is free software. +# +# You may redistribute it and/or modify it under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 3, or (at your option) any later version. +# +# fixincludes is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fixincludes; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. +# +# # # # # # # # # # # # # # # # # # # # # + +# Usage: fixinc.sh output-dir input-dir +# +# Directory in which to store the results. +# Fail if no arg to specify a directory for the output. +if [ "x$1" = "x" ] +then + echo fixincludes: no output directory specified + exit 1 +fi + +LIB=${1} +shift + +# Make sure it exists. +if [ ! -d $LIB ]; then + mkdir $LIB || { + echo fixincludes: output dir '`'$LIB"' cannot be created" + exit 1 + } +else + ( cd $LIB && touch DONE && rm DONE ) || { + echo fixincludes: output dir '`'$LIB"' is an invalid directory" + exit 1 + } +fi + +if test -z "$VERBOSE" +then + VERBOSE=2 + export VERBOSE +else + case "$VERBOSE" in + [0-9] ) : ;; + * ) VERBOSE=3 ;; + esac +fi + +# Define what target system we're fixing. +# +if test -r ./Makefile; then + target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`" +fi + +# If not from the Makefile, then try config.guess +# +if test -z "${target_canonical}" ; then + if test -x ./config.guess ; then + target_canonical="`config.guess`" ; fi + test -z "${target_canonical}" && target_canonical=unknown +fi +export target_canonical + +# # # # # # # # # # # # # # # # # # # # # +# +# Define PWDCMD as a command to use to get the working dir +# in the form that we want. +PWDCMD=${PWDCMD-pwd} + +case "`$PWDCMD`" in +//*) + # On an Apollo, discard everything before `/usr'. + PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'" + ;; +esac + +# Original directory. +ORIGDIR=`${PWDCMD}` +export ORIGDIR +FIXINCL=`${PWDCMD}`/fixincl +if [ ! -x $FIXINCL ] ; then + echo "Cannot find fixincl" >&2 + exit 1 +fi +export FIXINCL + +# Make LIB absolute only if needed to avoid problems with the amd. +case $LIB in +/*) + ;; +*) + cd $LIB; LIB=`${PWDCMD}` + ;; +esac + +if test $VERBOSE -gt 0 +then echo Fixing headers into ${LIB} for ${target_canonical} target ; fi + +# Determine whether this system has symbolic links. +if test -n "$DJDIR"; then + LINKS=false +elif ln -s X $LIB/ShouldNotExist 2>/dev/null; then + rm -f $LIB/ShouldNotExist + LINKS=true +elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then + rm -f /tmp/ShouldNotExist + LINKS=true +else + LINKS=false +fi + +# # # # # # # # # # # # # # # # # # # # # +# +# In the file macro_list are listed all the predefined +# macros that are not in the C89 reserved namespace (the reserved +# namespace is all identifiers beginnning with two underscores or one +# underscore followed by a capital letter). A regular expression to find +# any of those macros in a header file is written to MN_NAME_PAT. +# +# Note dependency on ASCII. \012 = newline. +# tr ' ' '\n' is, alas, not portable. + +if test -s ${MACRO_LIST} +then + if test $VERBOSE -gt 0; then + echo "Forbidden identifiers: `tr '\012' ' ' < ${MACRO_LIST}`" + fi + MN_NAME_PAT="`sed 's/^/\\\\</; s/$/\\\\>/; $!s/$/|/' \ + < ${MACRO_LIST} | tr -d '\012'`" + export MN_NAME_PAT +else + if test $VERBOSE -gt 0 + then echo "No forbidden identifiers defined by this target" ; fi +fi + +# # # # # # # # # # # # # # # # # # # # # +# +# Search each input directory for broken header files. +# This loop ends near the end of the file. +# +if test $# -eq 0 +then + INPUTLIST="/usr/include" +else + INPUTLIST="$@" +fi + +for INPUT in ${INPUTLIST} ; do + +cd ${ORIGDIR} + +# Make sure a directory exists before changing into it, +# otherwise Solaris2 will fail-exit the script. +# +if [ ! -d ${INPUT} ]; then + continue +fi +cd ${INPUT} + +INPUT=`${PWDCMD}` +export INPUT + +# +# # # # # # # # # # # # # # # # # # # # # +# +if test $VERBOSE -gt 1 +then echo Finding directories and links to directories ; fi + +# Find all directories and all symlinks that point to directories. +# Put the list in $all_dirs. +# Each time we find a symlink, add it to newdirs +# so that we do another find within the dir the link points to. +# Note that $all_dirs may have duplicates in it; +# later parts of this file are supposed to ignore them. +dirs="." +levels=2 +all_dirs="" +search_dirs="" + +while [ -n "$dirs" ] && [ $levels -gt 0 ] +do + levels=`expr $levels - 1` + newdirs= + for d in $dirs + do + if test $VERBOSE -gt 1 + then echo " Searching $INPUT/$d" ; fi + + # Find all directories under $d, relative to $d, excluding $d itself. + # (The /. is needed after $d in case $d is a symlink.) + all_dirs="$all_dirs `find $d/. -type d -print | \ + sed -e '/\/\.$/d' -e 's@/./@/@g'`" + # Find all links to directories. + # Using `-exec test -d' in find fails on some systems, + # and trying to run test via sh fails on others, + # so this is the simplest alternative left. + # First find all the links, then test each one. + theselinks= + $LINKS && \ + theselinks=`find $d/. -type l -print | sed -e 's@/./@/@g'` + for d1 in $theselinks --dummy-- + do + # If the link points to a directory, + # add that dir to $newdirs + if [ -d $d1 ] + then + all_dirs="$all_dirs $d1" + if [ "`ls -ld $d1 | sed -n 's/.*-> //p'`" != "." ] + then + newdirs="$newdirs $d1" + search_dirs="$search_dirs $d1" + fi + fi + done + done + + dirs="$newdirs" +done + +# # # # # # # # # # # # # # # # # # # # # +# +dirs= +if test $VERBOSE -gt 2 +then echo "All directories (including links to directories):" + echo $all_dirs +fi + +for file in $all_dirs; do + rm -rf $LIB/$file + if [ ! -d $LIB/$file ] + then mkdir $LIB/$file + fi +done +mkdir $LIB/root + +# # # # # # # # # # # # # # # # # # # # # +# +# treetops gets an alternating list +# of old directories to copy +# and the new directories to copy to. +treetops=". ${LIB}" + +if $LINKS; then + if test $VERBOSE -gt 1 + then echo 'Making symbolic directory links' ; fi + cwd=`${PWDCMD}` + + for sym_link in $search_dirs; do + cd ${INPUT} + dest=`ls -ld ${sym_link} | sed -n 's/.*-> //p'` + + # In case $dest is relative, get to ${sym_link}'s dir first. + # + cd ./`echo ${sym_link} | sed 's;/[^/]*$;;'` + + # Check that the target directory exists. + # Redirections changed to avoid bug in sh on Ultrix. + # + (cd $dest) > /dev/null 2>&1 + if [ $? = 0 ]; then + cd $dest + + # full_dest_dir gets the dir that the link actually leads to. + # + full_dest_dir=`${PWDCMD}` + + # Canonicalize ${INPUT} now to minimize the time an + # automounter has to change the result of ${PWDCMD}. + # + cinput=`cd ${INPUT}; ${PWDCMD}` + + # If a link points to ., make a similar link to . + # + if [ ${full_dest_dir} = ${cinput} ]; then + if test $VERBOSE -gt 2 + then echo ${sym_link} '->' . ': Making self link' ; fi + rm -fr ${LIB}/${sym_link} > /dev/null 2>&1 + ln -s . ${LIB}/${sym_link} > /dev/null 2>&1 + + # If link leads back into ${INPUT}, + # make a similar link here. + # + elif expr ${full_dest_dir} : "${cinput}/.*" > /dev/null; then + # Y gets the actual target dir name, relative to ${INPUT}. + y=`echo ${full_dest_dir} | sed -n "s&${cinput}/&&p"` + # DOTS is the relative path from ${LIB}/${sym_link} back to ${LIB}. + dots=`echo "${sym_link}" | + sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'` + if test $VERBOSE -gt 2 + then echo ${sym_link} '->' $dots$y ': Making local link' ; fi + rm -fr ${LIB}/${sym_link} > /dev/null 2>&1 + ln -s $dots$y ${LIB}/${sym_link} > /dev/null 2>&1 + + else + # If the link is to a dir $target outside ${INPUT}, + # repoint the link at ${INPUT}/root$target + # and process $target into ${INPUT}/root$target + # treat this directory as if it actually contained the files. + # + if test $VERBOSE -gt 2 + then echo ${sym_link} '->' root${full_dest_dir} ': Making rooted link' + fi + if [ -d $LIB/root${full_dest_dir} ] + then true + else + dirname=root${full_dest_dir}/ + dirmade=. + cd $LIB + while [ x$dirname != x ]; do + component=`echo $dirname | sed -e 's|/.*$||'` + mkdir $component >/dev/null 2>&1 + cd $component + dirmade=$dirmade/$component + dirname=`echo $dirname | sed -e 's|[^/]*/||'` + done + fi + + # Duplicate directory structure created in ${LIB}/${sym_link} in new + # root area. + # + for file2 in $all_dirs; do + case $file2 in + ${sym_link}/*) + dupdir=${LIB}/root${full_dest_dir}/`echo $file2 | + sed -n "s|^${sym_link}/||p"` + if test $VERBOSE -gt 2 + then echo "Duplicating ${sym_link}'s ${dupdir}" ; fi + if [ -d ${dupdir} ] + then true + else + mkdir ${dupdir} + fi + ;; + *) + ;; + esac + done + + # Get the path from ${LIB} to ${sym_link}, accounting for symlinks. + # + parent=`echo "${sym_link}" | sed -e 's@/[^/]*$@@'` + libabs=`cd ${LIB}; ${PWDCMD}` + file2=`cd ${LIB}; cd $parent; ${PWDCMD} | sed -e "s@^${libabs}@@"` + + # DOTS is the relative path from ${LIB}/${sym_link} back to ${LIB}. + # + dots=`echo "$file2" | sed -e 's@/[^/]*@../@g'` + rm -fr ${LIB}/${sym_link} > /dev/null 2>&1 + ln -s ${dots}root${full_dest_dir} ${LIB}/${sym_link} > /dev/null 2>&1 + treetops="$treetops ${sym_link} ${LIB}/root${full_dest_dir}" + fi + fi + done +fi + +# # # # # # # # # # # # # # # # # # # # # +# +required= +set x $treetops +shift +while [ $# != 0 ]; do + # $1 is an old directory to copy, and $2 is the new directory to copy to. + # + SRCDIR=`cd ${INPUT} ; cd $1 ; ${PWDCMD}` + export SRCDIR + + FIND_BASE=$1 + export FIND_BASE + shift + + DESTDIR=`cd $1;${PWDCMD}` + export DESTDIR + shift + + # The same dir can appear more than once in treetops. + # There's no need to scan it more than once. + # + if [ -f ${DESTDIR}/DONE ] + then continue ; fi + + touch ${DESTDIR}/DONE + if test $VERBOSE -gt 1 + then echo Fixing directory ${SRCDIR} into ${DESTDIR} ; fi + + # Check files which are symlinks as well as those which are files. + # + cd ${INPUT} + required="$required `if $LINKS; then + find ${FIND_BASE}/. -name '*.h' \( -type f -o -type l \) -print + else + find ${FIND_BASE}/. -name '*.h' -type f -print + fi | \ + sed -e 's;/\./;/;g' -e 's;//*;/;g' | \ + ${FIXINCL}`" +done + +## Make sure that any include files referenced using double quotes +## exist in the fixed directory. This comes last since otherwise +## we might end up deleting some of these files "because they don't +## need any change." +set x `echo $required` +shift +while [ $# != 0 ]; do + newreq= + while [ $# != 0 ]; do + # $1 is the directory to copy from, + # $2 is the unfixed file, + # $3 is the fixed file name. + # + cd ${INPUT} + cd $1 + if [ -f $2 ] ; then + if [ -r $2 ] && [ ! -r $3 ]; then + cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" >&2 + chmod +w $3 2>/dev/null + chmod a+r $3 2>/dev/null + if test $VERBOSE -gt 2 + then echo Copied $2 ; fi + for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 | + sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'` + do + dir=`echo $2 | sed -e s'|/[^/]*$||'` + dir2=`echo $3 | sed -e s'|/[^/]*$||'` + newreq="$newreq $1 $dir/$include $dir2/$include" + done + fi + fi + shift; shift; shift + done + set x $newreq + shift +done + +if test $VERBOSE -gt 2 +then echo 'Cleaning up DONE files.' ; fi +cd $LIB +# Look for files case-insensitively, for the benefit of +# DOS/Windows filesystems. +find . -name '[Dd][Oo][Nn][Ee]' -exec rm -f '{}' ';' + +if test $VERBOSE -gt 1 +then echo 'Cleaning up unneeded directories:' ; fi +cd $LIB +all_dirs=`find . -type d \! -name '.' -print | sort -r` +for file in $all_dirs; do + if rmdir $LIB/$file > /dev/null + then + test $VERBOSE -gt 3 && echo " removed $file" + fi +done 2> /dev/null + +# On systems which don't support symlinks, `find' may barf +# if called with "-type l" predicate. So only use that if +# we know we should look for symlinks. +if $LINKS; then + test $VERBOSE -gt 2 && echo "Removing unused symlinks" + + all_dirs=`find . -type l -print` + for file in $all_dirs + do + if test ! -d $file + then + rm -f $file + test $VERBOSE -gt 3 && echo " removed $file" + rmdir `dirname $file` > /dev/null && \ + test $VERBOSE -gt 3 && \ + echo " removed `dirname $file`" + fi + done 2> /dev/null +fi + +if test $VERBOSE -gt 0 +then echo fixincludes is done ; fi + +# # # # # # # # # # # # # # # # # # # # # +# +# End of for INPUT directories +# +done +# +# # # # # # # # # # # # # # # # # # # # # diff --git a/fixincludes/fixincl.c b/fixincludes/fixincl.c new file mode 100644 index 000000000..9f399abdd --- /dev/null +++ b/fixincludes/fixincl.c @@ -0,0 +1,1358 @@ +/* Install modified versions of certain ANSI-incompatible system header + files which are fixed to work correctly with ANSI C and placed in a + directory that GCC will search. + + Copyright (C) 1997, 1998, 1999, 2000, 2004, 2009 + Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "fixlib.h" + +#include <fnmatch.h> +#include <sys/stat.h> +#ifndef SEPARATE_FIX_PROC +#include <sys/wait.h> +#endif + +#if defined( HAVE_MMAP_FILE ) +#include <sys/mman.h> +#define BAD_ADDR ((void*)-1) +#endif + +#ifndef SEPARATE_FIX_PROC +#include "server.h" +#endif + +/* The contents of this string are not very important. It is mostly + just used as part of the "I am alive and working" test. */ + +static const char program_id[] = "fixincl version 1.1"; + +/* This format will be used at the start of every generated file */ + +static const char z_std_preamble[] = +"/* DO NOT EDIT THIS FILE.\n\n\ + It has been auto-edited by fixincludes from:\n\n\ +\t\"%s/%s\"\n\n\ + This had to be done to correct non-standard usages in the\n\ + original, manufacturer supplied header file. */\n\n"; + +int find_base_len = 0; + +typedef enum { + VERB_SILENT = 0, + VERB_FIXES, + VERB_APPLIES, + VERB_PROGRESS, + VERB_TESTS, + VERB_EVERYTHING +} te_verbose; + +te_verbose verbose_level = VERB_PROGRESS; +int have_tty = 0; + +#define VLEVEL(l) ((unsigned int) verbose_level >= (unsigned int) l) +#define NOT_SILENT VLEVEL(VERB_FIXES) + +pid_t process_chain_head = (pid_t) -1; + +char* pz_curr_file; /* name of the current file under test/fix */ +char* pz_curr_data; /* original contents of that file */ +char* pz_temp_file; /* for DOS, a place to stash the temporary + fixed data between system(3) calls */ +t_bool curr_data_mapped; +int data_map_fd; +size_t data_map_size; +size_t ttl_data_size = 0; + +#ifdef DO_STATS +int process_ct = 0; +int apply_ct = 0; +int fixed_ct = 0; +int altered_ct = 0; +#endif /* DO_STATS */ + +const char incl_quote_pat[] = "^[ \t]*#[ \t]*include[ \t]*\"[^/]"; +tSCC z_fork_err[] = "Error %d (%s) starting filter process for %s\n"; +regex_t incl_quote_re; + +static void do_version (void) ATTRIBUTE_NORETURN; +char *load_file (const char *); +void run_compiles (void); +void initialize (int argc, char** argv); +void process (void); + +/* External Source Code */ + +#include "fixincl.x" + +/* * * * * * * * * * * * * * * * * * * + * + * MAIN ROUTINE + */ +extern int main (int, char **); +int +main (int argc, char** argv) +{ + char *file_name_buf; + + initialize ( argc, argv ); + + have_tty = isatty (fileno (stderr)); + + /* Before anything else, ensure we can allocate our file name buffer. */ + file_name_buf = load_file_data (stdin); + + /* Because of the way server shells work, you have to keep stdin, out + and err open so that the proper input file does not get closed + by accident */ + + freopen ("/dev/null", "r", stdin); + + if (file_name_buf == (char *) NULL) + { + fputs ("No file names listed for fixing\n", stderr); + exit (EXIT_FAILURE); + } + + for (;;) + { + char* pz_end; + + /* skip to start of name, past any "./" prefixes */ + + while (ISSPACE (*file_name_buf)) file_name_buf++; + while ((file_name_buf[0] == '.') && (file_name_buf[1] == '/')) + file_name_buf += 2; + + /* Check for end of list */ + + if (*file_name_buf == NUL) + break; + + /* Set global file name pointer and find end of name */ + + pz_curr_file = file_name_buf; + pz_end = strchr( pz_curr_file, '\n' ); + if (pz_end == (char*)NULL) + pz_end = file_name_buf = pz_curr_file + strlen (pz_curr_file); + else + file_name_buf = pz_end + 1; + + while ((pz_end > pz_curr_file) && ISSPACE( pz_end[-1])) pz_end--; + + /* IF no name is found (blank line) or comment marker, skip line */ + + if ((pz_curr_file == pz_end) || (*pz_curr_file == '#')) + continue; + *pz_end = NUL; + + process (); + } /* for (;;) */ + +#ifdef DO_STATS + if (VLEVEL( VERB_PROGRESS )) { + tSCC zFmt[] = + "\ +Processed %5d files containing %d bytes \n\ +Applying %5d fixes to %d files\n\ +Altering %5d of them\n"; + + fprintf (stderr, zFmt, process_ct, ttl_data_size, apply_ct, + fixed_ct, altered_ct); + } +#endif /* DO_STATS */ + +# ifdef SEPARATE_FIX_PROC + unlink( pz_temp_file ); +# endif + exit (EXIT_SUCCESS); +} + + +static void +do_version (void) +{ + static const char zFmt[] = "echo '%s'"; + char zBuf[ 1024 ]; + + /* The 'version' option is really used to test that: + 1. The program loads correctly (no missing libraries) + 2. that we can compile all the regular expressions. + 3. we can correctly run our server shell process + */ + run_compiles (); + sprintf (zBuf, zFmt, program_id); +#ifndef SEPARATE_FIX_PROC + puts (zBuf + 5); + exit (strcmp (run_shell (zBuf), program_id)); +#else + exit (system (zBuf)); +#endif +} + +/* * * * * * * * * * * * */ + +void +initialize ( int argc, char** argv ) +{ + xmalloc_set_program_name (argv[0]); + + switch (argc) + { + case 1: + break; + + case 2: + if (strcmp (argv[1], "-v") == 0) + do_version (); + if (freopen (argv[1], "r", stdin) == (FILE*)NULL) + { + fprintf (stderr, "Error %d (%s) reopening %s as stdin\n", + errno, xstrerror (errno), argv[1] ); + exit (EXIT_FAILURE); + } + break; + + default: + fputs ("fixincl ERROR: too many command line arguments\n", stderr); + exit (EXIT_FAILURE); + } + +#ifdef SIGCHLD + /* We *MUST* set SIGCHLD to SIG_DFL so that the wait4() call will + receive the signal. A different setting is inheritable */ + signal (SIGCHLD, SIG_DFL); +#endif + + initialize_opts (); + + if (ISDIGIT ( *pz_verbose )) + verbose_level = (te_verbose)atoi( pz_verbose ); + else + switch (*pz_verbose) { + case 's': + case 'S': + verbose_level = VERB_SILENT; break; + + case 'f': + case 'F': + verbose_level = VERB_FIXES; break; + + case 'a': + case 'A': + verbose_level = VERB_APPLIES; break; + + default: + case 'p': + case 'P': + verbose_level = VERB_PROGRESS; break; + + case 't': + case 'T': + verbose_level = VERB_TESTS; break; + + case 'e': + case 'E': + verbose_level = VERB_EVERYTHING; break; + } + if (verbose_level >= VERB_EVERYTHING) { + verbose_level = VERB_EVERYTHING; + fputs ("fixinc verbosity: EVERYTHING\n", stderr); + } + while ((pz_find_base[0] == '.') && (pz_find_base[1] == '/')) + pz_find_base += 2; + if ((pz_find_base[0] != '.') || (pz_find_base[1] != NUL)) + find_base_len = strlen( pz_find_base ); + + /* Compile all the regular expressions now. + That way, it is done only once for the whole run. + */ + run_compiles (); + +# ifdef SEPARATE_FIX_PROC + /* NULL as the first argument to `tempnam' causes it to DTRT + wrt the temporary directory where the file will be created. */ + pz_temp_file = tempnam( NULL, "fxinc" ); +# endif + + signal (SIGQUIT, SIG_IGN); + signal (SIGIOT, SIG_IGN); + signal (SIGPIPE, SIG_IGN); + signal (SIGALRM, SIG_IGN); + signal (SIGTERM, SIG_IGN); +} + +/* * * * * * * * * * * * * + + load_file loads all the contents of a file into malloc-ed memory. + Its argument is the name of the file to read in; the returned + result is the NUL terminated contents of the file. The file + is presumed to be an ASCII text file containing no NULs. */ +char * +load_file ( const char* fname ) +{ + struct stat stbf; + char* res; + + if (stat (fname, &stbf) != 0) + { + if (NOT_SILENT) + fprintf (stderr, "error %d (%s) stat-ing %s\n", + errno, xstrerror (errno), fname ); + return (char *) NULL; + } + if (stbf.st_size == 0) + return (char*)NULL; + + /* Make the data map size one larger than the file size for documentation + purposes. Truth is that there will be a following NUL character if + the file size is not a multiple of the page size. If it is a multiple, + then this adjustment sometimes fails anyway. */ + data_map_size = stbf.st_size+1; + data_map_fd = open (fname, O_RDONLY); + ttl_data_size += data_map_size-1; + + if (data_map_fd < 0) + { + if (NOT_SILENT) + fprintf (stderr, "error %d (%s) opening %s for read\n", + errno, xstrerror (errno), fname); + return (char*)NULL; + } + +#ifdef HAVE_MMAP_FILE + curr_data_mapped = BOOL_TRUE; + + /* IF the file size is a multiple of the page size, + THEN sometimes you will seg fault trying to access a trailing byte */ + if ((stbf.st_size & (getpagesize()-1)) == 0) + res = (char*)BAD_ADDR; + else + res = (char*)mmap ((void*)NULL, data_map_size, PROT_READ, + MAP_PRIVATE, data_map_fd, 0); + if (res == (char*)BAD_ADDR) +#endif + { + FILE* fp = fdopen (data_map_fd, "r"); + curr_data_mapped = BOOL_FALSE; + res = load_file_data (fp); + fclose (fp); + } + + return res; +} + +static int +machine_matches( tFixDesc* p_fixd ) +{ + char const ** papz_machs = p_fixd->papz_machs; + int have_match = BOOL_FALSE; + + for (;;) + { + char const * pz_mpat = *(papz_machs++); + if (pz_mpat == NULL) + break; + if (fnmatch(pz_mpat, pz_machine, 0) == 0) + { + have_match = BOOL_TRUE; + break; + } + } + + /* Check for sense inversion then set the "skip test" flag, if needed */ + if (p_fixd->fd_flags & FD_MACH_IFNOT) + have_match = ! have_match; + + if (! have_match) + p_fixd->fd_flags |= FD_SKIP_TEST; + + return have_match; +} + +/* * * * * * * * * * * * * + * + * run_compiles run all the regexp compiles for all the fixes once. + */ +void +run_compiles (void) +{ + tFixDesc *p_fixd = fixDescList; + int fix_ct = FIX_COUNT; + regex_t *p_re = XCNEWVEC (regex_t, REGEX_COUNT); + + /* Make sure compile_re does not stumble across invalid data */ + + memset (&incl_quote_re, '\0', sizeof (regex_t)); + + compile_re (incl_quote_pat, &incl_quote_re, 1, + "quoted include", "run_compiles"); + + /* Allow machine name tests to be ignored (testing, mainly) */ + + if (pz_machine && ((*pz_machine == '\0') || (*pz_machine == '*'))) + pz_machine = (char*)NULL; + + /* FOR every fixup, ... */ + do + { + tTestDesc *p_test = p_fixd->p_test_desc; + int test_ct = p_fixd->test_ct; + + /* IF the machine type pointer is not NULL (we are not in test mode) + AND this test is for or not done on particular machines + THEN ... */ + + if ( (pz_machine != NULL) + && (p_fixd->papz_machs != (const char**) NULL) + && ! machine_matches (p_fixd) ) + continue; + + /* FOR every test for the fixup, ... */ + + while (--test_ct >= 0) + { + switch (p_test->type) + { + case TT_EGREP: + case TT_NEGREP: + p_test->p_test_regex = p_re++; + compile_re (p_test->pz_test_text, p_test->p_test_regex, 0, + "select test", p_fixd->fix_name); + default: break; + } + p_test++; + } + } + while (p_fixd++, --fix_ct > 0); +} + + +/* * * * * * * * * * * * * + + create_file Create the output modified file. + Input: the name of the file to create + Returns: a file pointer to the new, open file */ + +#if defined(S_IRUSR) && defined(S_IWUSR) && \ + defined(S_IRGRP) && defined(S_IROTH) + +# define S_IRALL (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) +#else +# define S_IRALL 0644 +#endif + +#if defined(S_IRWXU) && defined(S_IRGRP) && defined(S_IXGRP) && \ + defined(S_IROTH) && defined(S_IXOTH) + +# define S_DIRALL (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) +#else +# define S_DIRALL 0755 +#endif + + +static FILE * +create_file (void) +{ + int fd; + FILE *pf; + char fname[MAXPATHLEN]; + + sprintf (fname, "%s/%s", pz_dest_dir, pz_curr_file + find_base_len); + + fd = open (fname, O_WRONLY | O_CREAT | O_TRUNC, S_IRALL); + + /* We may need to create the directories needed... */ + if ((fd < 0) && (errno == ENOENT)) + { + char *pz_dir = strchr (fname + 1, '/'); + struct stat stbf; + + while (pz_dir != (char *) NULL) + { + *pz_dir = NUL; + if (stat (fname, &stbf) < 0) + { +#ifdef _WIN32 + mkdir (fname); +#else + mkdir (fname, S_IFDIR | S_DIRALL); +#endif + } + + *pz_dir = '/'; + pz_dir = strchr (pz_dir + 1, '/'); + } + + /* Now, lets try the open again... */ + fd = open (fname, O_WRONLY | O_CREAT | O_TRUNC, S_IRALL); + } + if (fd < 0) + { + fprintf (stderr, "Error %d (%s) creating %s\n", + errno, xstrerror (errno), fname); + exit (EXIT_FAILURE); + } + if (NOT_SILENT) + fprintf (stderr, "Fixed: %s\n", pz_curr_file); + pf = fdopen (fd, "w"); + + /* + * IF pz_machine is NULL, then we are in some sort of test mode. + * Do not insert the current directory name. Use a constant string. + */ + fprintf (pf, z_std_preamble, + (pz_machine == NULL) + ? "fixinc/tests/inc" + : pz_input_dir, + pz_curr_file); + + return pf; +} + + +/* * * * * * * * * * * * * + + test_test make sure a shell-style test expression passes. + Input: a pointer to the descriptor of the test to run and + the name of the file that we might want to fix + Result: APPLY_FIX or SKIP_FIX, depending on the result of the + shell script we run. */ +#ifndef SEPARATE_FIX_PROC +static int +test_test (tTestDesc* p_test, char* pz_test_file) +{ + tSCC cmd_fmt[] = +"file=%s\n\ +if ( test %s ) > /dev/null 2>&1\n\ +then echo TRUE\n\ +else echo FALSE\n\ +fi"; + + char *pz_res; + int res; + + static char cmd_buf[4096]; + + sprintf (cmd_buf, cmd_fmt, pz_test_file, p_test->pz_test_text); + pz_res = run_shell (cmd_buf); + + switch (*pz_res) { + case 'T': + res = APPLY_FIX; + break; + + case 'F': + res = SKIP_FIX; + break; + + default: + fprintf (stderr, "Script yielded bogus result of `%s':\n%s\n\n", + pz_res, cmd_buf ); + res = SKIP_FIX; + } + + free ((void *) pz_res); + return res; +} +#else +/* + * IF we are in MS-DOS land, then whatever shell-type test is required + * will, by definition, fail + */ +#define test_test(t,tf) SKIP_FIX +#endif + +/* * * * * * * * * * * * * + + egrep_test make sure an egrep expression is found in the file text. + Input: a pointer to the descriptor of the test to run and + the pointer to the contents of the file under suspicion + Result: APPLY_FIX if the pattern is found, SKIP_FIX otherwise + + The caller may choose to reverse meaning if the sense of the test + is inverted. */ + +static int +egrep_test (char* pz_data, tTestDesc* p_test) +{ +#ifdef DEBUG + if (p_test->p_test_regex == 0) + fprintf (stderr, "fixincl ERROR RE not compiled: `%s'\n", + p_test->pz_test_text); +#endif + if (xregexec (p_test->p_test_regex, pz_data, 0, 0, 0) == 0) + return APPLY_FIX; + return SKIP_FIX; +} + + +/* * * * * * * * * * * * * + + quoted_file_exists Make sure that a file exists before we emit + the file name. If we emit the name, our invoking shell will try + to copy a non-existing file into the destination directory. */ + +static int +quoted_file_exists (const char* pz_src_path, + const char* pz_file_path, + const char* pz_file) +{ + char z[ MAXPATHLEN ]; + char* pz; + sprintf (z, "%s/%s/", pz_src_path, pz_file_path); + pz = z + strlen ( z ); + + for (;;) { + char ch = *pz_file++; + if (! ISGRAPH( ch )) + return 0; + if (ch == '"') + break; + *pz++ = ch; + } + *pz = '\0'; + { + struct stat s; + if (stat (z, &s) != 0) + return 0; + return S_ISREG( s.st_mode ); + } +} + + +/* * * * * * * * * * * * * + * + extract_quoted_files + + The syntax, `#include "file.h"' specifies that the compiler is to + search the local directory of the current file before the include + list. Consequently, if we have modified a header and stored it in + another directory, any files that are included by that modified + file in that fashion must also be copied into this new directory. + This routine finds those flavors of #include and for each one found + emits a triple of: + + 1. source directory of the original file + 2. the relative path file name of the #includ-ed file + 3. the full destination path for this file + + Input: the text of the file, the file name and a pointer to the + match list where the match information was stored. + Result: internally nothing. The results are written to stdout + for interpretation by the invoking shell */ + + +static void +extract_quoted_files (char* pz_data, + const char* pz_fixed_file, + regmatch_t* p_re_match) +{ + char *pz_dir_end = strrchr (pz_fixed_file, '/'); + char *pz_incl_quot = pz_data; + + if (VLEVEL( VERB_APPLIES )) + fprintf (stderr, "Quoted includes in %s\n", pz_fixed_file); + + /* Set "pz_fixed_file" to point to the containing subdirectory of the source + If there is none, then it is in our current directory, ".". */ + + if (pz_dir_end == (char *) NULL) + pz_fixed_file = "."; + else + *pz_dir_end = '\0'; + + for (;;) + { + pz_incl_quot += p_re_match->rm_so; + + /* Skip forward to the included file name */ + while (*pz_incl_quot != '"') + pz_incl_quot++; + + if (quoted_file_exists (pz_src_dir, pz_fixed_file, pz_incl_quot)) + { + /* Print the source directory and the subdirectory + of the file in question. */ + printf ("%s %s/", pz_src_dir, pz_fixed_file); + pz_dir_end = pz_incl_quot; + + /* Append to the directory the relative path of the desired file */ + while (*pz_incl_quot != '"') + putc (*pz_incl_quot++, stdout); + + /* Now print the destination directory appended with the + relative path of the desired file */ + printf (" %s/%s/", pz_dest_dir, pz_fixed_file); + while (*pz_dir_end != '"') + putc (*pz_dir_end++, stdout); + + /* End of entry */ + putc ('\n', stdout); + } + + /* Find the next entry */ + if (xregexec (&incl_quote_re, pz_incl_quot, 1, p_re_match, 0) != 0) + break; + } +} + + +/* * * * * * * * * * * * * + + Somebody wrote a *_fix subroutine that we must call. + */ +#ifndef SEPARATE_FIX_PROC +static int +internal_fix (int read_fd, tFixDesc* p_fixd) +{ + int fd[2]; + + if (pipe( fd ) != 0) + { + fprintf (stderr, "Error %d on pipe(2) call\n", errno ); + exit (EXIT_FAILURE); + } + + for (;;) + { + pid_t childid = fork(); + + switch (childid) + { + case -1: + break; + + case 0: + close (fd[0]); + goto do_child_task; + + default: + /* + * Parent process + */ + close (read_fd); + close (fd[1]); + return fd[0]; + } + + /* + * Parent in error + */ + fprintf (stderr, z_fork_err, errno, xstrerror (errno), + p_fixd->fix_name); + { + static int failCt = 0; + if ((errno != EAGAIN) || (++failCt > 10)) + exit (EXIT_FAILURE); + sleep (1); + } + } do_child_task:; + + /* + * Close our current stdin and stdout + */ + close (STDIN_FILENO); + close (STDOUT_FILENO); + UNLOAD_DATA(); + + /* + * Make the fd passed in the stdin, and the write end of + * the new pipe become the stdout. + */ + dup2 (fd[1], STDOUT_FILENO); + dup2 (read_fd, STDIN_FILENO); + + apply_fix (p_fixd, pz_curr_file); + exit (0); +} +#endif /* !SEPARATE_FIX_PROC */ + + +#ifdef SEPARATE_FIX_PROC +static void +fix_with_system (tFixDesc* p_fixd, + tCC* pz_fix_file, + tCC* pz_file_source, + tCC* pz_temp_file) +{ + char* pz_cmd; + char* pz_scan; + size_t argsize; + + if (p_fixd->fd_flags & FD_SUBROUTINE) + { + static const char z_applyfix_prog[] = + "/../fixincludes/applyfix" EXE_EXT; + + struct stat buf; + argsize = 32 + + strlen (pz_orig_dir) + + sizeof (z_applyfix_prog) + + strlen (pz_fix_file) + + strlen (pz_file_source) + + strlen (pz_temp_file); + + /* Allocate something sure to be big enough for our purposes */ + pz_cmd = XNEWVEC (char, argsize); + strcpy (pz_cmd, pz_orig_dir); + pz_scan = pz_cmd + strlen (pz_orig_dir); + + strcpy (pz_scan, z_applyfix_prog); + + /* IF we can't find the "applyfix" executable file at the first guess, + try one level higher up */ + if (stat (pz_cmd, &buf) == -1) + { + strcpy (pz_scan, "/.."); + strcpy (pz_scan+3, z_applyfix_prog); + } + + pz_scan += strlen (pz_scan); + + /* + * Now add the fix number and file names that may be needed + */ + sprintf (pz_scan, " %ld '%s' '%s'", (long) (p_fixd - fixDescList), + pz_fix_file, pz_file_source, pz_temp_file); + } + else /* NOT an "internal" fix: */ + { + size_t parg_size; +#ifdef __MSDOS__ + /* Don't use the "src > dstX; rm -f dst; mv -f dstX dst" trick: + dst is a temporary file anyway, so we know there's no other + file by that name; and DOS's system(3) doesn't mind to + clobber existing file in redirection. Besides, with DOS 8+3 + limited file namespace, we can easily lose if dst already has + an extension that is 3 or more characters long. + + I do not think the 8+3 issue is relevant because all the files + we operate on are named "*.h", making 8+2 adequate. Anyway, + the following bizarre use of 'cat' only works on DOS boxes. + It causes the file to be dropped into a temporary file for + 'cat' to read (pipes do not work on DOS). */ + tSCC z_cmd_fmt[] = " '%s' | cat > '%s'"; +#else + /* Don't use positional formatting arguments because some lame-o + implementations cannot cope :-(. */ + tSCC z_cmd_fmt[] = " %s > %sX ; rm -f %s; mv -f %sX %s"; +#endif + tCC** ppArgs = p_fixd->patch_args; + + argsize = sizeof( z_cmd_fmt ) + strlen( pz_temp_file ) + + strlen( pz_file_source ); + parg_size = argsize; + + + /* + * Compute the size of the command line. Add lotsa extra space + * because some of the args to sed use lotsa single quotes. + * (This requires three extra bytes per quote. Here we allow + * for up to 8 single quotes for each argument, including the + * command name "sed" itself. Nobody will *ever* need more. :) + */ + for (;;) + { + tCC* p_arg = *(ppArgs++); + if (p_arg == NULL) + break; + argsize += 24 + strlen( p_arg ); + } + + /* Estimated buffer size we will need. */ + pz_scan = pz_cmd = XNEWVEC (char, argsize); + /* How much of it do we allot to the program name and its + arguments. */ + parg_size = argsize - parg_size; + + ppArgs = p_fixd->patch_args; + + /* + * Copy the program name, unquoted + */ + { + tCC* pArg = *(ppArgs++); + for (;;) + { + char ch = *(pArg++); + if (ch == NUL) + break; + *(pz_scan++) = ch; + } + } + + /* + * Copy the program arguments, quoted + */ + for (;;) + { + tCC* pArg = *(ppArgs++); + char* pz_scan_save; + if (pArg == NULL) + break; + *(pz_scan++) = ' '; + pz_scan = make_raw_shell_str( pz_scan_save = pz_scan, pArg, + parg_size - (pz_scan - pz_cmd) ); + /* + * Make sure we don't overflow the buffer due to sloppy + * size estimation. + */ + while (pz_scan == (char*)NULL) + { + size_t already_filled = pz_scan_save - pz_cmd; + pz_cmd = xrealloc (pz_cmd, argsize += 100); + pz_scan_save = pz_scan = pz_cmd + already_filled; + parg_size += 100; + pz_scan = make_raw_shell_str( pz_scan, pArg, + parg_size - (pz_scan - pz_cmd) ); + } + } + + /* + * add the file machinations. + */ +#ifdef __MSDOS__ + sprintf (pz_scan, z_cmd_fmt, pz_file_source, pz_temp_file ); +#else + sprintf (pz_scan, z_cmd_fmt, pz_file_source, pz_temp_file, + pz_temp_file, pz_temp_file, pz_temp_file); +#endif + } + system( pz_cmd ); + free( (void*)pz_cmd ); +} + +/* * * * * * * * * * * * * + + This loop should only cycle for 1/2 of one loop. + "chain_open" starts a process that uses "read_fd" as + its stdin and returns the new fd this process will use + for stdout. */ + +#else /* is *NOT* SEPARATE_FIX_PROC */ +static int +start_fixer (int read_fd, tFixDesc* p_fixd, char* pz_fix_file) +{ + tCC* pz_cmd_save; + char* pz_cmd; + + if ((p_fixd->fd_flags & FD_SUBROUTINE) != 0) + return internal_fix (read_fd, p_fixd); + + if ((p_fixd->fd_flags & FD_SHELL_SCRIPT) == 0) + { + pz_cmd = NULL; + pz_cmd_save = NULL; + } + else + { + tSCC z_cmd_fmt[] = "file='%s'\n%s"; + pz_cmd = XNEWVEC (char, strlen (p_fixd->patch_args[2]) + + sizeof (z_cmd_fmt) + strlen (pz_fix_file)); + sprintf (pz_cmd, z_cmd_fmt, pz_fix_file, p_fixd->patch_args[2]); + pz_cmd_save = p_fixd->patch_args[2]; + p_fixd->patch_args[2] = pz_cmd; + } + + /* Start a fix process, handing off the previous read fd for its + stdin and getting a new fd that reads from the fix process' stdout. + We normally will not loop, but we will up to 10 times if we keep + getting "EAGAIN" errors. + + */ + for (;;) + { + static int failCt = 0; + int fd; + + fd = chain_open (read_fd, + (tCC **) p_fixd->patch_args, + (process_chain_head == -1) + ? &process_chain_head : (pid_t *) NULL); + + if (fd != -1) + { + read_fd = fd; + break; + } + + fprintf (stderr, z_fork_err, errno, xstrerror (errno), + p_fixd->fix_name); + + if ((errno != EAGAIN) || (++failCt > 10)) + exit (EXIT_FAILURE); + sleep (1); + } + + /* IF we allocated a shell script command, + THEN free it and restore the command format to the fix description */ + if (pz_cmd != (char*)NULL) + { + free ((void*)pz_cmd); + p_fixd->patch_args[2] = pz_cmd_save; + } + + return read_fd; +} +#endif + + +/* * * * * * * * * * * * * + * + * Process the potential fixes for a particular include file. + * Input: the original text of the file and the file's name + * Result: none. A new file may or may not be created. + */ +static t_bool +fix_applies (tFixDesc* p_fixd) +{ + const char *pz_fname = pz_curr_file; + const char *pz_scan = p_fixd->file_list; + int test_ct; + tTestDesc *p_test; + +#ifdef SEPARATE_FIX_PROC + /* + * There is only one fix that uses a shell script as of this writing. + * I hope to nuke it anyway, it does not apply to DOS and it would + * be painful to implement. Therefore, no "shell" fixes for DOS. + */ + if (p_fixd->fd_flags & (FD_SHELL_SCRIPT | FD_SKIP_TEST)) + return BOOL_FALSE; +#else + if (p_fixd->fd_flags & FD_SKIP_TEST) + return BOOL_FALSE; +#endif + + /* IF there is a file name restriction, + THEN ensure the current file name matches one in the pattern */ + + if (pz_scan != (char *) NULL) + { + while ((pz_fname[0] == '.') && (pz_fname[1] == '/')) + pz_fname += 2; + + for (;;) + { + if (fnmatch (pz_scan, pz_fname, 0) == 0) + break; + pz_scan += strlen (pz_scan) + 1; + if (*pz_scan == NUL) + return BOOL_FALSE; + } + } + + /* FOR each test, see if it fails. + IF it does fail, then we go on to the next test */ + + for (p_test = p_fixd->p_test_desc, test_ct = p_fixd->test_ct; + test_ct-- > 0; + p_test++) + { + switch (p_test->type) + { + case TT_TEST: + if (test_test (p_test, pz_curr_file) != APPLY_FIX) { +#ifdef DEBUG + if (VLEVEL( VERB_EVERYTHING )) + fprintf (stderr, z_failed, "TEST", p_fixd->fix_name, + pz_fname, p_fixd->test_ct - test_ct); +#endif + return BOOL_FALSE; + } + break; + + case TT_EGREP: + if (egrep_test (pz_curr_data, p_test) != APPLY_FIX) { +#ifdef DEBUG + if (VLEVEL( VERB_EVERYTHING )) + fprintf (stderr, z_failed, "EGREP", p_fixd->fix_name, + pz_fname, p_fixd->test_ct - test_ct); +#endif + return BOOL_FALSE; + } + break; + + case TT_NEGREP: + if (egrep_test (pz_curr_data, p_test) == APPLY_FIX) { +#ifdef DEBUG + if (VLEVEL( VERB_EVERYTHING )) + fprintf (stderr, z_failed, "NEGREP", p_fixd->fix_name, + pz_fname, p_fixd->test_ct - test_ct); +#endif + /* Negated sense */ + return BOOL_FALSE; + } + break; + + case TT_FUNCTION: + if (run_test (p_test->pz_test_text, pz_curr_file, pz_curr_data) + != APPLY_FIX) { +#ifdef DEBUG + if (VLEVEL( VERB_EVERYTHING )) + fprintf (stderr, z_failed, "FTEST", p_fixd->fix_name, + pz_fname, p_fixd->test_ct - test_ct); +#endif + return BOOL_FALSE; + } + break; + } + } + + return BOOL_TRUE; +} + + +/* * * * * * * * * * * * * + + Write out a replacement file */ + +static void +write_replacement (tFixDesc* p_fixd) +{ + const char* pz_text = p_fixd->patch_args[0]; + + if ((pz_text == (char*)NULL) || (*pz_text == NUL)) + return; + + { + FILE* out_fp = create_file (); + size_t sz = strlen (pz_text); + fwrite (pz_text, sz, 1, out_fp); + if (pz_text[ sz-1 ] != '\n') + fputc ('\n', out_fp); + fclose (out_fp); + } +} + + +/* * * * * * * * * * * * * + + We have work to do. Read back in the output + of the filtering chain. Compare each byte as we read it with + the contents of the original file. As soon as we find any + difference, we will create the output file, write out all + the matched text and then copy any remaining data from the + output of the filter chain. + */ +static void +test_for_changes (int read_fd) +{ + FILE *in_fp = fdopen (read_fd, "r"); + FILE *out_fp = (FILE *) NULL; + unsigned char *pz_cmp = (unsigned char*)pz_curr_data; + +#ifdef DO_STATS + fixed_ct++; +#endif + for (;;) + { + int ch; + + ch = getc (in_fp); + if (ch == EOF) + break; + ch &= 0xFF; /* all bytes are 8 bits */ + + /* IF we are emitting the output + THEN emit this character, too. + */ + if (out_fp != (FILE *) NULL) + putc (ch, out_fp); + + /* ELSE if this character does not match the original, + THEN now is the time to start the output. + */ + else if (ch != *pz_cmp) + { + out_fp = create_file (); + +#ifdef DO_STATS + altered_ct++; +#endif + /* IF there are matched data, write the matched part now. */ + if ((char*)pz_cmp != pz_curr_data) + fwrite (pz_curr_data, (size_t)((char*)pz_cmp - pz_curr_data), + 1, out_fp); + + /* Emit the current unmatching character */ + putc (ch, out_fp); + } + else + /* ELSE the character matches. Advance the compare ptr */ + pz_cmp++; + } + + /* IF we created the output file, ... */ + if (out_fp != (FILE *) NULL) + { + regmatch_t match; + + /* Close the file and see if we have to worry about + `#include "file.h"' constructs. */ + fclose (out_fp); + if (xregexec (&incl_quote_re, pz_curr_data, 1, &match, 0) == 0) + extract_quoted_files (pz_curr_data, pz_curr_file, &match); + } + + fclose (in_fp); + close (read_fd); /* probably redundant, but I'm paranoid */ +} + + +/* * * * * * * * * * * * * + + Process the potential fixes for a particular include file. + Input: the original text of the file and the file's name + Result: none. A new file may or may not be created. */ + +void +process (void) +{ + tFixDesc *p_fixd = fixDescList; + int todo_ct = FIX_COUNT; + int read_fd = -1; +# ifndef SEPARATE_FIX_PROC + int num_children = 0; +# else /* is SEPARATE_FIX_PROC */ + char* pz_file_source = pz_curr_file; +# endif + + if (access (pz_curr_file, R_OK) != 0) + { + int erno = errno; + fprintf (stderr, "Cannot access %s from %s\n\terror %d (%s)\n", + pz_curr_file, getcwd ((char *) NULL, MAXPATHLEN), + erno, xstrerror (erno)); + return; + } + + pz_curr_data = load_file (pz_curr_file); + if (pz_curr_data == (char *) NULL) + return; + +#ifdef DO_STATS + process_ct++; +#endif + if (VLEVEL( VERB_PROGRESS ) && have_tty) + fprintf (stderr, "%6lu %-50s \r", + (unsigned long) data_map_size, pz_curr_file); + +# ifndef SEPARATE_FIX_PROC + process_chain_head = NOPROCESS; + + /* For every fix in our fix list, ... */ + for (; todo_ct > 0; p_fixd++, todo_ct--) + { + if (! fix_applies (p_fixd)) + continue; + + if (VLEVEL( VERB_APPLIES )) + fprintf (stderr, "Applying %-24s to %s\n", + p_fixd->fix_name, pz_curr_file); + + if (p_fixd->fd_flags & FD_REPLACEMENT) + { + write_replacement (p_fixd); + UNLOAD_DATA(); + return; + } + + /* IF we do not have a read pointer, + THEN this is the first fix for the current file. + Open the source file. That will be used as stdin for + the first fix. Any subsequent fixes will use the + stdout descriptor of the previous fix for its stdin. */ + + if (read_fd == -1) + { + read_fd = open (pz_curr_file, O_RDONLY); + if (read_fd < 0) + { + fprintf (stderr, "Error %d (%s) opening %s\n", errno, + xstrerror (errno), pz_curr_file); + exit (EXIT_FAILURE); + } + + /* Ensure we do not get duplicate output */ + + fflush (stdout); + } + + read_fd = start_fixer (read_fd, p_fixd, pz_curr_file); + num_children++; + } + + /* IF we have a read-back file descriptor, + THEN check for changes and write output if changed. */ + + if (read_fd >= 0) + { + test_for_changes (read_fd); +#ifdef DO_STATS + apply_ct += num_children; +#endif + /* Wait for child processes created by chain_open() + to avoid leaving zombies. */ + do { + wait ((int *) NULL); + } while (--num_children > 0); + } + +# else /* is SEPARATE_FIX_PROC */ + + for (; todo_ct > 0; p_fixd++, todo_ct--) + { + if (! fix_applies (p_fixd)) + continue; + + if (VLEVEL( VERB_APPLIES )) + fprintf (stderr, "Applying %-24s to %s\n", + p_fixd->fix_name, pz_curr_file); + + if (p_fixd->fd_flags & FD_REPLACEMENT) + { + write_replacement (p_fixd); + UNLOAD_DATA(); + return; + } + fix_with_system (p_fixd, pz_curr_file, pz_file_source, pz_temp_file); + pz_file_source = pz_temp_file; + } + + read_fd = open (pz_temp_file, O_RDONLY); + if (read_fd < 0) + { + if (errno != ENOENT) + fprintf (stderr, "error %d (%s) opening output (%s) for read\n", + errno, xstrerror (errno), pz_temp_file); + } + else + { + test_for_changes (read_fd); + /* Unlinking a file while it is still open is a Bad Idea on + DOS/Windows. */ + close (read_fd); + unlink (pz_temp_file); + } + +# endif + UNLOAD_DATA(); +} diff --git a/fixincludes/fixincl.tpl b/fixincludes/fixincl.tpl new file mode 100644 index 000000000..c8d4b2ce1 --- /dev/null +++ b/fixincludes/fixincl.tpl @@ -0,0 +1,237 @@ +[= AutoGen5 Template -*- Mode: C -*- +x=fixincl.x =] +[= (dne " * " "/* ")=] + */ +/* DO NOT SVN-MERGE THIS FILE, EITHER [= + (define re-ct 0) (define max-mach 0) (define ct 0) + (define HACK "") (define Hack "") (define tmp "") + (shell "date") =] + * + * You must regenerate it. Use the ./genfixes script. + * + * + * This is part of the fixincl program used to install modified versions of + * certain ANSI-incompatible system header files which are fixed to work + * correctly with ANSI C and placed in a directory that GNU C will search. + * + * This file contains [=(count "fix")=] fixup descriptions. + * + * See README for more information. + * + * inclhack copyright (c) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008 + * The Free Software Foundation, Inc. + * + * inclhack is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * inclhack is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef SED_PROGRAM +#define SED_PROGRAM "/usr/bin/sed" +#endif +static char const sed_cmd_z[] = SED_PROGRAM; +[= + +FOR fix =] +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of [= + (set! Hack (string-capitalize! (get "hackname"))) + (set! HACK (string-upcase! (get "hackname"))) + (if (and (not (exist? "test_text")) (not (exist? "replace"))) + (error (sprintf "include fix '%s' has no test text" Hack )) ) + (. Hack)=] fix + */[= + +# Note that this is not just for debugging purposes, but in case + some C fix wishes to refer to the regexps it is paired with. + See commentary at the top of fixfixes.c. +=] +tSCC z[=(. Hack)=]Name[] = + "[=hackname=]"; + +/* + * File name selection pattern + */[= + + IF (exist? "files")=] +tSCC z[=(. Hack)=]List[] = + "[= (join "\\0" (stack "files")) =]\0";[= + + ELSE =] +#define z[=(. Hack)=]List (char*)NULL[= + ENDIF (exist? "files") =] +/* + * Machine/OS name selection pattern + */[= + + IF (exist? "mach")=] +tSCC* apz[=(. Hack)=]Machs[] = {[= + (set! ct 0) =][= + + FOR mach =] + [= + (set! tmp (get "mach")) + (set! ct (+ ct (string-length tmp) 5)) + (kr-string tmp)=],[= + ENDFOR=] + (const char*)NULL };[= + + (if (> ct max-mach) (set! max-mach ct)) =][= + + ELSE =] +#define apz[=(. Hack)=]Machs (const char**)NULL[= + ENDIF (exist? "mach") =][= + + IF (exist? "select")=] + +/* + * content selection pattern - do fix if pattern found + */[= + FOR select =] +tSCC z[=(. Hack)=]Select[=(for-index)=][] = + [=(kr-string (get "select"))=];[= + ENDFOR select =][= + ENDIF =][= + + IF (exist? "bypass")=] + +/* + * content bypass pattern - skip fix if pattern found + */[= + FOR bypass =] +tSCC z[=(. Hack)=]Bypass[=(for-index)=][] = + [=(kr-string (get "bypass"))=];[= + ENDFOR bypass =][= + ENDIF =][= + + IF (exist? "test")=] + +/* + * perform the 'test' shell command - do fix on success + */[= + FOR test =] +tSCC z[=(. Hack)=]Test[=(for-index)=][] = + [=(kr-string (get "test"))=];[= + ENDFOR =][= + ENDIF =][= + + IF (exist? "c_test")=] + +/* + * perform the C function call test + */[= + FOR c_test =] +tSCC z[=(. Hack)=]FTst[=(for-index)=][] = "[=c_test=]";[= + ENDFOR c_test =][= + ENDIF =][= + + IF (set! ct (+ (count "select") (count "bypass") + (count "test") (count "c_test"))) + + (= ct 0) +=] +#define [=(. HACK)=]_TEST_CT 0 +#define a[=(. Hack)=]Tests (tTestDesc*)NULL[= + ELSE =] + +#define [=(. HACK)=]_TEST_CT [=(. ct)=][= + (set! re-ct (+ re-ct (count "select") (count "bypass"))) =] +static tTestDesc a[=(. Hack)=]Tests[] = {[= + + FOR test =] + { TT_TEST, z[=(. Hack)=]Test[=(for-index)=], 0 /* unused */ },[= + ENDFOR test =][= + + FOR c_test =] + { TT_FUNCTION, z[=(. Hack)=]FTst[=(for-index)=], 0 /* unused */ },[= + ENDFOR c_test =][= + + FOR bypass =] + { TT_NEGREP, z[=(. Hack)=]Bypass[=(for-index)=], (regex_t*)NULL },[= + ENDFOR bypass =][= + + FOR select =] + { TT_EGREP, z[=(. Hack)=]Select[=(for-index)=], (regex_t*)NULL },[= + ENDFOR select =] };[= + ENDIF =] + +/* + * Fix Command Arguments for [=(. Hack)=] + */ +static const char* apz[=(. Hack)=]Patch[] = {[= + IF (exist? "sed")=] sed_cmd_z[= + FOR sed=], + "-e", [=(kr-string (get "sed"))=][= + ENDFOR sed=],[= + + ELIF (exist? "shell")=] "sh", "-c", + [=(kr-string (get "shell"))=],[= + + ELIF (exist? "c_fix")=] + [=(kr-string (get "c_fix"))=],[= + + FOR c_fix_arg =] + [=(kr-string (get "c_fix_arg"))=],[= + ENDFOR c_fix_arg =][= + + ELIF (> (len "replace") 0) =] +[=(kr-string (get "replace"))=],[= + + ENDIF=] + (char*)NULL }; +[=ENDFOR fix=] + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * List of all fixes + */[= +# as of this writing, 49 bytes are needed by the case statement format. + We also must allow for the size of the target machine machine name. + This allows for a 79 byte machine name. Better be enough. +=] +#define REGEX_COUNT [= (. re-ct) =] +#define MACH_LIST_SIZE_LIMIT [= (+ 128 max-mach) =] +#define FIX_COUNT [= (count "fix") =] + +/* + * Enumerate the fixes[= # in a way that minimizes diffs :-) =] + */ +typedef enum {[= + +FOR fix "," =] + [=(string-upcase! (get "hackname"))=]_FIXIDX[= +ENDFOR + +=] +} t_fixinc_idx; + +tFixDesc fixDescList[ FIX_COUNT ] = {[= + + +FOR fix ",\n" =][= + (set! Hack (string-capitalize! (get "hackname"))) + (set! HACK (string-upcase! (get "hackname"))) =] + { z[=(. Hack)=]Name, z[=(. Hack)=]List, + apz[=(. Hack)=]Machs, + [=(. HACK)=]_TEST_CT, [= + IF (exist? "not_machine") =]FD_MACH_IFNOT[= + ELSE =]FD_MACH_ONLY[= + ENDIF =][= + IF (exist? "shell") =] | FD_SHELL_SCRIPT[= + ELIF (exist? "c_fix") =] | FD_SUBROUTINE[= + ELIF (exist? "replace") =] | FD_REPLACEMENT[= + ENDIF =], + a[=(. Hack)=]Tests, apz[=(. Hack)=]Patch, 0 }[= + +ENDFOR =] +}; diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x new file mode 100644 index 000000000..d9117d8e3 --- /dev/null +++ b/fixincludes/fixincl.x @@ -0,0 +1,9825 @@ +/* -*- buffer-read-only: t -*- vi: set ro: + * + * DO NOT EDIT THIS FILE (fixincl.x) + * + * It has been AutoGen-ed Monday November 8, 2010 at 08:33:47 PM MET + * From the definitions inclhack.def + * and the template file fixincl + */ +/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Nov 8 20:33:47 MET 2010 + * + * You must regenerate it. Use the ./genfixes script. + * + * + * This is part of the fixincl program used to install modified versions of + * certain ANSI-incompatible system header files which are fixed to work + * correctly with ANSI C and placed in a directory that GNU C will search. + * + * This file contains 210 fixup descriptions. + * + * See README for more information. + * + * inclhack copyright (c) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + * 2006, 2007, 2008 + * The Free Software Foundation, Inc. + * + * inclhack is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * inclhack is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef SED_PROGRAM +#define SED_PROGRAM "/usr/bin/sed" +#endif +static char const sed_cmd_z[] = SED_PROGRAM; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Aix_Stdio fix + */ +tSCC zAab_Aix_StdioName[] = + "AAB_aix_stdio"; + +/* + * File name selection pattern + */ +tSCC zAab_Aix_StdioList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Aix_StdioMachs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAab_Aix_StdioSelect0[] = + "define fopen fopen64"; + +#define AAB_AIX_STDIO_TEST_CT 1 +static tTestDesc aAab_Aix_StdioTests[] = { + { TT_EGREP, zAab_Aix_StdioSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aab_Aix_Stdio + */ +static const char* apzAab_Aix_StdioPatch[] = { + "wrap", + "", + "\n\ +#if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus\n\ +#define __need__aix_stdio_h_fix\n\ +#ifdef __need__aix_stdio_h_fix\n\ +#undef fseeko\n\ +#undef ftello\n\ +#undef fgetpos\n\ +#undef fsetpos\n\ +#undef fopen\n\ +#undef freopen\n\ +/* Alias the symbols using asm */\n\ +extern \"C\" {\n\ +extern int fgetpos(FILE *, fpos64_t *) __asm__(\"fgetpos64\");\n\ +extern FILE *fopen(const char *, const char *) __asm__(\"fopen64\");\n\ +extern FILE *freopen(const char *, const char *, FILE *) __asm__(\"freopen64\");\n\ +extern int fseeko(FILE *, off64_t, int) __asm__(\"fseeko64\");\n\ +extern int fsetpos(FILE *, const fpos64_t *) __asm__(\"fsetpos64\");\n\ +extern off64_t ftello(FILE *) __asm__(\"ftello64\");\n\ +}\n\ +#endif\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Darwin7_9_Long_Double_Funcs fix + */ +tSCC zAab_Darwin7_9_Long_Double_FuncsName[] = + "AAB_darwin7_9_long_double_funcs"; + +/* + * File name selection pattern + */ +tSCC zAab_Darwin7_9_Long_Double_FuncsList[] = + "architecture/ppc/math.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Darwin7_9_Long_Double_FuncsMachs[] = { + "*-*-darwin7.9*", + (const char*)NULL }; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zAab_Darwin7_9_Long_Double_FuncsBypass0[] = + "powl"; + +#define AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT 1 +static tTestDesc aAab_Darwin7_9_Long_Double_FuncsTests[] = { + { TT_NEGREP, zAab_Darwin7_9_Long_Double_FuncsBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aab_Darwin7_9_Long_Double_Funcs + */ +static const char* apzAab_Darwin7_9_Long_Double_FuncsPatch[] = { +"/* This file prototypes the long double functions available on Mac OS\n\ + 10.3.9. */\n\ +#ifndef __MATH__\n\ +# undef __APPLE_CC__\n\ +# define __APPLE_CC__ 1345\n\ +# include_next <architecture/ppc/math.h>\n\ +# undef __APPLE_CC__\n\ +# define __APPLE_CC__ 1\n\ +# ifndef __LIBMLDBL_COMPAT\n\ +# ifdef __LONG_DOUBLE_128__\n\ +# define __LIBMLDBL_COMPAT(sym) __asm(\"_\" #sym \"$LDBL128\")\n\ +# else\n\ +# define __LIBMLDBL_COMPAT(sym)\n\ +# endif /* __LONG_DOUBLE_128__ */\n\ +# endif /* __LIBMLDBL_COMPAT */\n\ +# ifdef __cplusplus\n\ + extern \"C\" {\n\ +# endif\n\ + extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl);\n\ + extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl);\n\ + extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl);\n\ + extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l);\n\ + extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl);\n\ + extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl);\n\ + extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl);\n\ + extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl);\n\ + extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl);\n\ + extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl);\n\ + extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl);\n\ + extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl);\n\ + extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl);\n\ + extern long double expl( long double ) __LIBMLDBL_COMPAT(expl);\n\ + extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l);\n\ + extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l);\n\ + extern long double logl( long double ) __LIBMLDBL_COMPAT(logl);\n\ + extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l);\n\ + extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l);\n\ + extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl);\n\ + extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl);\n\ + extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl);\n\ + extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl);\n\ + extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl);\n\ + extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl);\n\ + extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl);\n\ + extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl);\n\ + extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl);\n\ + extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl);\n\ + extern long double hypotl( long double, long double ) __LIBMLDBL_COMPAT(hypotl);\n\ + extern long double powl( long double, long double ) __LIBMLDBL_COMPAT(powl);\n\ + extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl);\n\ + extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl);\n\ + extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl);\n\ + extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal);\n\ + extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal);\n\ + extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill);\n\ + extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl);\n\ + extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl);\n\ + extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl);\n\ + extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl);\n\ + extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl);\n\ + extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl);\n\ + extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl);\n\ + extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl);\n\ + extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl);\n\ + extern long double fmodl( long double, long double) __LIBMLDBL_COMPAT(fmodl);\n\ + extern long double remainderl( long double, long double ) __LIBMLDBL_COMPAT(remainderl);\n\ + extern long double remquol( long double, long double, int * ) __LIBMLDBL_COMPAT(remquol);\n\ + extern long double copysignl( long double, long double ) __LIBMLDBL_COMPAT(copysignl);\n\ + extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl);\n\ + extern long double nextafterl( long double, long double ) __LIBMLDBL_COMPAT(nextafterl);\n\ + extern long double nexttowardl( long double, long double ) __LIBMLDBL_COMPAT(nexttowardl);\n\ + extern long double fdiml( long double, long double ) __LIBMLDBL_COMPAT(fdiml);\n\ + extern long double fmaxl( long double, long double ) __LIBMLDBL_COMPAT(fmaxl);\n\ + extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl);\n\ + extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal);\n\ +# ifdef __cplusplus\n\ + }\n\ +# endif\n\ +#endif /* __MATH__ */", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Darwin7_9_Long_Double_Funcs_2 fix + */ +tSCC zAab_Darwin7_9_Long_Double_Funcs_2Name[] = + "AAB_darwin7_9_long_double_funcs_2"; + +/* + * File name selection pattern + */ +tSCC zAab_Darwin7_9_Long_Double_Funcs_2List[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Darwin7_9_Long_Double_Funcs_2Machs[] = { + "*-*-darwin7.9*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAab_Darwin7_9_Long_Double_Funcs_2Select0[] = + "#include[ \\t]+\\\""; + +#define AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_2_TEST_CT 1 +static tTestDesc aAab_Darwin7_9_Long_Double_Funcs_2Tests[] = { + { TT_EGREP, zAab_Darwin7_9_Long_Double_Funcs_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aab_Darwin7_9_Long_Double_Funcs_2 + */ +static const char* apzAab_Darwin7_9_Long_Double_Funcs_2Patch[] = { + "format", + "%1<%2.h>", + "([ \\t]*#[ \\t]*include[ \\t]+)\"([a-z0-9/]+)\\.h\"", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Fd_Zero_Asm_Posix_Types_H fix + */ +tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] = + "AAB_fd_zero_asm_posix_types_h"; + +/* + * File name selection pattern + */ +tSCC zAab_Fd_Zero_Asm_Posix_Types_HList[] = + "asm/posix_types.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Fd_Zero_Asm_Posix_Types_HMachs[] = { + "i[34567]86-*-linux*", + (const char*)NULL }; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zAab_Fd_Zero_Asm_Posix_Types_HBypass0[] = + "} while"; +tSCC zAab_Fd_Zero_Asm_Posix_Types_HBypass1[] = + "x86_64"; +tSCC zAab_Fd_Zero_Asm_Posix_Types_HBypass2[] = + "posix_types_64"; + +#define AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT 3 +static tTestDesc aAab_Fd_Zero_Asm_Posix_Types_HTests[] = { + { TT_NEGREP, zAab_Fd_Zero_Asm_Posix_Types_HBypass0, (regex_t*)NULL }, + { TT_NEGREP, zAab_Fd_Zero_Asm_Posix_Types_HBypass1, (regex_t*)NULL }, + { TT_NEGREP, zAab_Fd_Zero_Asm_Posix_Types_HBypass2, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aab_Fd_Zero_Asm_Posix_Types_H + */ +static const char* apzAab_Fd_Zero_Asm_Posix_Types_HPatch[] = { +"/* This file fixes a bug in the __FD_ZERO macro\n\ + for older versions of the Linux kernel. */\n\ +#ifndef _POSIX_TYPES_H_WRAPPER\n\ +#include <features.h>\n\ + #include_next <asm/posix_types.h>\n\n\ +#if defined(__FD_ZERO) && !defined(__GLIBC__)\n\ +#undef __FD_ZERO\n\ +#define __FD_ZERO(fdsetp) \\\n\ + do { \\\n\ + int __d0, __d1; \\\n\ +__asm__ __volatile__(\"cld ; rep ; stosl\" \\\n\ +: \"=&c\" (__d0), \"=&D\" (__d1) \\\n\ +: \"a\" (0), \"0\" (__FDSET_LONGS), \\\n\ + \"1\" ((__kernel_fd_set *) (fdsetp)) :\"memory\"); \\\n\ + } while (0)\n\ +#endif\n\n\ +#define _POSIX_TYPES_H_WRAPPER\n\ +#endif /* _POSIX_TYPES_H_WRAPPER */", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Fd_Zero_Gnu_Types_H fix + */ +tSCC zAab_Fd_Zero_Gnu_Types_HName[] = + "AAB_fd_zero_gnu_types_h"; + +/* + * File name selection pattern + */ +tSCC zAab_Fd_Zero_Gnu_Types_HList[] = + "gnu/types.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Fd_Zero_Gnu_Types_HMachs[] = { + "i[34567]86-*-linux*", + (const char*)NULL }; +#define AAB_FD_ZERO_GNU_TYPES_H_TEST_CT 0 +#define aAab_Fd_Zero_Gnu_Types_HTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Aab_Fd_Zero_Gnu_Types_H + */ +static const char* apzAab_Fd_Zero_Gnu_Types_HPatch[] = { +"/* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */\n\ +#ifndef _TYPES_H_WRAPPER\n\ +#include <features.h>\n\ +#include_next <gnu/types.h>\n\n\ +#if defined(__FD_ZERO) && !defined(__GLIBC__)\n\ +#undef __FD_ZERO\n\ +# define __FD_ZERO(fdsetp) \\\n\ + do { \\\n\ + int __d0, __d1; \\\n\ + __asm__ __volatile__(\"cld ; rep ; stosl\" \\\n\ + : \"=&c\" (__d0), \"=&D\" (__d1) \\\n\ + : \"a\" (0), \"0\" (__FDSET_LONGS), \\\n\ + \"1\" ((__fd_set *) (fdsetp)) :\"memory\"); \\\n\ + } while (0)\n\ +#endif\n\n\ +#define _TYPES_H_WRAPPER\n\ +#endif /* _TYPES_H_WRAPPER */", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Fd_Zero_Selectbits_H fix + */ +tSCC zAab_Fd_Zero_Selectbits_HName[] = + "AAB_fd_zero_selectbits_h"; + +/* + * File name selection pattern + */ +tSCC zAab_Fd_Zero_Selectbits_HList[] = + "selectbits.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Fd_Zero_Selectbits_HMachs[] = { + "i[34567]86-*-linux*", + (const char*)NULL }; +#define AAB_FD_ZERO_SELECTBITS_H_TEST_CT 0 +#define aAab_Fd_Zero_Selectbits_HTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Aab_Fd_Zero_Selectbits_H + */ +static const char* apzAab_Fd_Zero_Selectbits_HPatch[] = { +"/* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */\n\ +#ifndef _SELECTBITS_H_WRAPPER\n\ + #include <features.h>\n\ + #include_next <selectbits.h>\n\n\ + #if defined(__FD_ZERO) && defined(__GLIBC__) \\\\\n\ + && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\\\\n\ + && __GLIBC_MINOR__ == 0\n\ + #undef __FD_ZERO\n\ + #define __FD_ZERO(fdsetp) \\\\\n\ + do { \\\\\n\ + int __d0, __d1; \\\\\n\ + __asm__ __volatile__ (\"cld; rep; stosl\" \\\\\n\ + : \"=&c\" (__d0), \"=&D\" (__d1) \\\\\n\ + : \"a\" (0), \"0\" (sizeof (__fd_set) \\\\\n\ + / sizeof (__fd_mask)), \\\\\n\ + \"1\" ((__fd_mask *) (fdsetp)) \\\\\n\ + : \"memory\"); \\\\\n\ + } while (0)\n\ + #endif\n\n\ + #define _SELECTBITS_H_WRAPPER\n\ +#endif /* _SELECTBITS_H_WRAPPER */", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Solaris_Sys_Varargs_H fix + */ +tSCC zAab_Solaris_Sys_Varargs_HName[] = + "AAB_solaris_sys_varargs_h"; + +/* + * File name selection pattern + */ +tSCC zAab_Solaris_Sys_Varargs_HList[] = + "sys/varargs.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAab_Solaris_Sys_Varargs_HMachs[] = { + "*-*-solaris*", + (const char*)NULL }; +#define AAB_SOLARIS_SYS_VARARGS_H_TEST_CT 0 +#define aAab_Solaris_Sys_Varargs_HTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Aab_Solaris_Sys_Varargs_H + */ +static const char* apzAab_Solaris_Sys_Varargs_HPatch[] = { +"#ifdef __STDC__\n\ + #include <stdarg.h>\n\ +#else\n\ + #include <varargs.h>\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aab_Sun_Memcpy fix + */ +tSCC zAab_Sun_MemcpyName[] = + "AAB_sun_memcpy"; + +/* + * File name selection pattern + */ +tSCC zAab_Sun_MemcpyList[] = + "memory.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAab_Sun_MemcpyMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAab_Sun_MemcpySelect0[] = + "/\\*\t@\\(#\\)(head/memory.h\t50.1\t |memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/"; + +#define AAB_SUN_MEMCPY_TEST_CT 1 +static tTestDesc aAab_Sun_MemcpyTests[] = { + { TT_EGREP, zAab_Sun_MemcpySelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aab_Sun_Memcpy + */ +static const char* apzAab_Sun_MemcpyPatch[] = { +"/* This file was generated by fixincludes */\n\ +#ifndef __memory_h__\n\ + #define __memory_h__\n\n\ + #ifdef __STDC__\n\ + extern void *memccpy();\n\ + extern void *memchr();\n\ + extern void *memcpy();\n\ + extern void *memset();\n\ + #else\n\ + extern char *memccpy();\n\ + extern char *memchr();\n\ + extern char *memcpy();\n\ + extern char *memset();\n\ + #endif /* __STDC__ */\n\n\ + extern int memcmp();\n\n\ +#endif /* __memory_h__ */", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Complex fix + */ +tSCC zAix_ComplexName[] = + "aix_complex"; + +/* + * File name selection pattern + */ +tSCC zAix_ComplexList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_ComplexMachs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_ComplexSelect0[] = + "#define[ \t]_Complex_I[ \t]__I"; + +#define AIX_COMPLEX_TEST_CT 1 +static tTestDesc aAix_ComplexTests[] = { + { TT_EGREP, zAix_ComplexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Complex + */ +static const char* apzAix_ComplexPatch[] = { + "format", + "#define _Complex_I (__extension__ 1.0iF)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Pthread fix + */ +tSCC zAix_PthreadName[] = + "aix_pthread"; + +/* + * File name selection pattern + */ +tSCC zAix_PthreadList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAix_PthreadMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_PthreadSelect0[] = + "(#define [A-Za-z_0-9]+)(\\\\\n\ +[^A-Za-z_0-9 \t\n\ +(])"; + +#define AIX_PTHREAD_TEST_CT 1 +static tTestDesc aAix_PthreadTests[] = { + { TT_EGREP, zAix_PthreadSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Pthread + */ +static const char* apzAix_PthreadPatch[] = { + "format", + "%1 %2", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Stdint_1 fix + */ +tSCC zAix_Stdint_1Name[] = + "aix_stdint_1"; + +/* + * File name selection pattern + */ +tSCC zAix_Stdint_1List[] = + "stdint-aix.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Stdint_1Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Stdint_1Select0[] = + "#define[ \t]UINT8_MAX[ \t]\\(255U\\)\n\ +#define[ \t]UINT16_MAX[ \t]\\(65535U\\)"; + +#define AIX_STDINT_1_TEST_CT 1 +static tTestDesc aAix_Stdint_1Tests[] = { + { TT_EGREP, zAix_Stdint_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Stdint_1 + */ +static const char* apzAix_Stdint_1Patch[] = { + "format", + "#define UINT8_MAX\t(255)\n\ +#define UINT16_MAX\t(65535)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Stdint_2 fix + */ +tSCC zAix_Stdint_2Name[] = + "aix_stdint_2"; + +/* + * File name selection pattern + */ +tSCC zAix_Stdint_2List[] = + "stdint-aix.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Stdint_2Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Stdint_2Select0[] = + "#define[ \t]INTPTR_MIN[ \t]INT64_MIN\n\ +#define[ \t]INTPTR_MAX[ \t]INT64_MAX\n\ +#define[ \t]UINTPTR_MAX[ \t]UINT64_MAX\n\ +#else\n\ +#define[ \t]INTPTR_MIN[ \t]INT32_MIN\n\ +#define[ \t]INTPTR_MAX[ \t]INT32_MAX\n\ +#define[ \t]UINTPTR_MAX[ \t]UINT32_MAX"; + +#define AIX_STDINT_2_TEST_CT 1 +static tTestDesc aAix_Stdint_2Tests[] = { + { TT_EGREP, zAix_Stdint_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Stdint_2 + */ +static const char* apzAix_Stdint_2Patch[] = { + "format", + "#define INTPTR_MIN\t(-INTPTR_MAX-1)\n\ +#define INTPTR_MAX\t9223372036854775807L\n\ +#define UINTPTR_MAX\t18446744073709551615UL\n\ +#else\n\ +#define INTPTR_MIN\t(-INTPTR_MAX-1)\n\ +#define INTPTR_MAX\t2147483647L\n\ +#define UINTPTR_MAX\t4294967295UL", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Stdint_3 fix + */ +tSCC zAix_Stdint_3Name[] = + "aix_stdint_3"; + +/* + * File name selection pattern + */ +tSCC zAix_Stdint_3List[] = + "stdint-aix.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Stdint_3Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Stdint_3Select0[] = + "#define[ \t]PTRDIFF_MIN[ \t]INT64_MIN\n\ +#define[ \t]PTRDIFF_MAX[ \t]INT64_MAX\n\ +#else\n\ +#define[ \t]PTRDIFF_MIN[ \t]*INT32_MIN\n\ +#define[ \t]PTRDIFF_MAX[ \t]*INT32_MAX"; + +#define AIX_STDINT_3_TEST_CT 1 +static tTestDesc aAix_Stdint_3Tests[] = { + { TT_EGREP, zAix_Stdint_3Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Stdint_3 + */ +static const char* apzAix_Stdint_3Patch[] = { + "format", + "#define PTRDIFF_MIN\t(-9223372036854775807L - 1)\n\ +#define PTRDIFF_MAX\t9223372036854775807L\n\ +#else\n\ +#define PTRDIFF_MIN\t(-2147483647L - 1)\n\ +#define PTRDIFF_MAX\t2147483647L", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Stdint_4 fix + */ +tSCC zAix_Stdint_4Name[] = + "aix_stdint_4"; + +/* + * File name selection pattern + */ +tSCC zAix_Stdint_4List[] = + "stdint-aix.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Stdint_4Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Stdint_4Select0[] = + "#define[ \t]SIZE_MAX[ \t]UINT64_MAX\n\ +#else\n\ +#define[ \t]SIZE_MAX[ \t]*UINT32_MAX"; + +#define AIX_STDINT_4_TEST_CT 1 +static tTestDesc aAix_Stdint_4Tests[] = { + { TT_EGREP, zAix_Stdint_4Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Stdint_4 + */ +static const char* apzAix_Stdint_4Patch[] = { + "format", + "#define SIZE_MAX\t18446744073709551615UL\n\ +#else\n\ +#define SIZE_MAX\t4294967295UL", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Stdint_5 fix + */ +tSCC zAix_Stdint_5Name[] = + "aix_stdint_5"; + +/* + * File name selection pattern + */ +tSCC zAix_Stdint_5List[] = + "stdint-aix.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAix_Stdint_5Machs[] = { + "*-*-aix*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Stdint_5Select0[] = + "#define[ \t]UINT8_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)\n\ +#define[ \t]UINT16_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)"; + +#define AIX_STDINT_5_TEST_CT 1 +static tTestDesc aAix_Stdint_5Tests[] = { + { TT_EGREP, zAix_Stdint_5Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Stdint_5 + */ +static const char* apzAix_Stdint_5Patch[] = { + "format", + "#define UINT8_C(c)\tc\n\ +#define UINT16_C(c)\tc", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Sysmachine fix + */ +tSCC zAix_SysmachineName[] = + "aix_sysmachine"; + +/* + * File name selection pattern + */ +tSCC zAix_SysmachineList[] = + "sys/machine.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAix_SysmachineMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_SysmachineSelect0[] = + "\\\\ +\n"; + +#define AIX_SYSMACHINE_TEST_CT 1 +static tTestDesc aAix_SysmachineTests[] = { + { TT_EGREP, zAix_SysmachineSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Sysmachine + */ +static const char* apzAix_SysmachinePatch[] = { + "format", + "\\\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Syswait_2 fix + */ +tSCC zAix_Syswait_2Name[] = + "aix_syswait_2"; + +/* + * File name selection pattern + */ +tSCC zAix_Syswait_2List[] = + "sys/wait.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAix_Syswait_2Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_Syswait_2Select0[] = + "\\? (\\(\\(\\(\\(unsigned[^)]*\\)[^)]*\\) >> [^)]*\\) \\& 0xff\\) : -1)"; + +#define AIX_SYSWAIT_2_TEST_CT 1 +static tTestDesc aAix_Syswait_2Tests[] = { + { TT_EGREP, zAix_Syswait_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Syswait_2 + */ +static const char* apzAix_Syswait_2Patch[] = { + "format", + "? (int)%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Aix_Volatile fix + */ +tSCC zAix_VolatileName[] = + "aix_volatile"; + +/* + * File name selection pattern + */ +tSCC zAix_VolatileList[] = + "sys/signal.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAix_VolatileMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAix_VolatileSelect0[] = + "typedef volatile int sig_atomic_t"; + +#define AIX_VOLATILE_TEST_CT 1 +static tTestDesc aAix_VolatileTests[] = { + { TT_EGREP, zAix_VolatileSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Aix_Volatile + */ +static const char* apzAix_VolatilePatch[] = { + "format", + "typedef int sig_atomic_t", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha___Assert fix + */ +tSCC zAlpha___AssertName[] = + "alpha___assert"; + +/* + * File name selection pattern + */ +tSCC zAlpha___AssertList[] = + "assert.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha___AssertMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha___AssertSelect0[] = + "__assert\\(char \\*, char \\*, int\\)"; + +#define ALPHA___ASSERT_TEST_CT 1 +static tTestDesc aAlpha___AssertTests[] = { + { TT_EGREP, zAlpha___AssertSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha___Assert + */ +static const char* apzAlpha___AssertPatch[] = { + "format", + "__assert(const char *, const char *, int)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha___Extern_Prefix fix + */ +tSCC zAlpha___Extern_PrefixName[] = + "alpha___extern_prefix"; + +/* + * File name selection pattern + */ +#define zAlpha___Extern_PrefixList (char*)NULL +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha___Extern_PrefixMachs[] = { + "alpha*-dec-osf*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha___Extern_PrefixSelect0[] = + "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n\ +(#[ \t]*pragma[ \t]*extern_prefix.*)"; + +#define ALPHA___EXTERN_PREFIX_TEST_CT 1 +static tTestDesc aAlpha___Extern_PrefixTests[] = { + { TT_EGREP, zAlpha___Extern_PrefixSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha___Extern_Prefix + */ +static const char* apzAlpha___Extern_PrefixPatch[] = { + "format", + "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n\ +%3", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha___Extern_Prefix_Standards fix + */ +tSCC zAlpha___Extern_Prefix_StandardsName[] = + "alpha___extern_prefix_standards"; + +/* + * File name selection pattern + */ +tSCC zAlpha___Extern_Prefix_StandardsList[] = + "standards.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha___Extern_Prefix_StandardsMachs[] = { + "alpha*-dec-osf*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha___Extern_Prefix_StandardsSelect0[] = + ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)"; + +#define ALPHA___EXTERN_PREFIX_STANDARDS_TEST_CT 1 +static tTestDesc aAlpha___Extern_Prefix_StandardsTests[] = { + { TT_EGREP, zAlpha___Extern_Prefix_StandardsSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha___Extern_Prefix_Standards + */ +static const char* apzAlpha___Extern_Prefix_StandardsPatch[] = { + "format", + "%0 && !defined(__PRAGMA_EXTERN_PREFIX)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha___Extern_Prefix_Sys_Stat fix + */ +tSCC zAlpha___Extern_Prefix_Sys_StatName[] = + "alpha___extern_prefix_sys_stat"; + +/* + * File name selection pattern + */ +tSCC zAlpha___Extern_Prefix_Sys_StatList[] = + "sys/stat.h\0sys/mount.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha___Extern_Prefix_Sys_StatMachs[] = { + "alpha*-dec-osf5*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha___Extern_Prefix_Sys_StatSelect0[] = + "#[ \t]*if[ \t]*defined\\(__DECC\\)"; + +#define ALPHA___EXTERN_PREFIX_SYS_STAT_TEST_CT 1 +static tTestDesc aAlpha___Extern_Prefix_Sys_StatTests[] = { + { TT_EGREP, zAlpha___Extern_Prefix_Sys_StatSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha___Extern_Prefix_Sys_Stat + */ +static const char* apzAlpha___Extern_Prefix_Sys_StatPatch[] = { + "format", + "%0 || defined(__PRAGMA_EXTERN_PREFIX)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Assert fix + */ +tSCC zAlpha_AssertName[] = + "alpha_assert"; + +/* + * File name selection pattern + */ +tSCC zAlpha_AssertList[] = + "assert.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha_AssertMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_AssertSelect0[] = + "(#[ \t]*define assert\\(EX\\).*)\\(\\(int\\) \\(EX\\)\\)"; + +#define ALPHA_ASSERT_TEST_CT 1 +static tTestDesc aAlpha_AssertTests[] = { + { TT_EGREP, zAlpha_AssertSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Assert + */ +static const char* apzAlpha_AssertPatch[] = { + "format", + "%1(EX)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Bad_Lval fix + */ +tSCC zAlpha_Bad_LvalName[] = + "alpha_bad_lval"; + +/* + * File name selection pattern + */ +#define zAlpha_Bad_LvalList (char*)NULL +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha_Bad_LvalMachs[] = { + "alpha*-dec-osf*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_Bad_LvalSelect0[] = + "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix"; + +#define ALPHA_BAD_LVAL_TEST_CT 1 +static tTestDesc aAlpha_Bad_LvalTests[] = { + { TT_EGREP, zAlpha_Bad_LvalSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Bad_Lval + */ +static const char* apzAlpha_Bad_LvalPatch[] = { sed_cmd_z, + "-e", "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Getopt fix + */ +tSCC zAlpha_GetoptName[] = + "alpha_getopt"; + +/* + * File name selection pattern + */ +tSCC zAlpha_GetoptList[] = + "stdio.h\0stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha_GetoptMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_GetoptSelect0[] = + "getopt\\(int, char \\*\\[\\], *char \\*\\)"; + +#define ALPHA_GETOPT_TEST_CT 1 +static tTestDesc aAlpha_GetoptTests[] = { + { TT_EGREP, zAlpha_GetoptSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Getopt + */ +static const char* apzAlpha_GetoptPatch[] = { + "format", + "getopt(int, char *const[], const char *)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_If_Semicolon fix + */ +tSCC zAlpha_If_SemicolonName[] = + "alpha_if_semicolon"; + +/* + * File name selection pattern + */ +tSCC zAlpha_If_SemicolonList[] = + "net/if.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha_If_SemicolonMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_If_SemicolonSelect0[] = + "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*"; + +#define ALPHA_IF_SEMICOLON_TEST_CT 1 +static tTestDesc aAlpha_If_SemicolonTests[] = { + { TT_EGREP, zAlpha_If_SemicolonSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_If_Semicolon + */ +static const char* apzAlpha_If_SemicolonPatch[] = { + "format", + "struct sockaddr vmif_paddr;\t/*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Parens fix + */ +tSCC zAlpha_ParensName[] = + "alpha_parens"; + +/* + * File name selection pattern + */ +tSCC zAlpha_ParensList[] = + "sym.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha_ParensMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_ParensSelect0[] = + "#ifndef\\(__mips64\\)"; + +#define ALPHA_PARENS_TEST_CT 1 +static tTestDesc aAlpha_ParensTests[] = { + { TT_EGREP, zAlpha_ParensSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Parens + */ +static const char* apzAlpha_ParensPatch[] = { + "format", + "#ifndef __mips64", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Pthread fix + */ +tSCC zAlpha_PthreadName[] = + "alpha_pthread"; + +/* + * File name selection pattern + */ +tSCC zAlpha_PthreadList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha_PthreadMachs[] = { + "alpha*-dec-osf*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_PthreadSelect0[] = + "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)|def _PTHREAD_ENV_DECC)(.*))\n\ +(#[ \t]*define _PTHREAD_USE_PTDNAM_)"; + +#define ALPHA_PTHREAD_TEST_CT 1 +static tTestDesc aAlpha_PthreadTests[] = { + { TT_EGREP, zAlpha_PthreadSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Pthread + */ +static const char* apzAlpha_PthreadPatch[] = { + "format", + "%2 defined (_PTHREAD_ENV_DECC)%4 || defined (__PRAGMA_EXTERN_PREFIX)\n\ +%5", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Pthread_Gcc fix + */ +tSCC zAlpha_Pthread_GccName[] = + "alpha_pthread_gcc"; + +/* + * File name selection pattern + */ +tSCC zAlpha_Pthread_GccList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha_Pthread_GccMachs[] = { + "alpha*-dec-osf*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_Pthread_GccSelect0[] = + "#else\n\ +# error <pthread.h>: unrecognized compiler."; + +#define ALPHA_PTHREAD_GCC_TEST_CT 1 +static tTestDesc aAlpha_Pthread_GccTests[] = { + { TT_EGREP, zAlpha_Pthread_GccSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Pthread_Gcc + */ +static const char* apzAlpha_Pthread_GccPatch[] = { + "format", + "#elif defined (__GNUC__)\n\ +# define _PTHREAD_ENV_GCC\n\ +%0", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Pthread_Init fix + */ +tSCC zAlpha_Pthread_InitName[] = + "alpha_pthread_init"; + +/* + * File name selection pattern + */ +tSCC zAlpha_Pthread_InitList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzAlpha_Pthread_InitMachs[] = { + "alpha*-dec-osf*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_Pthread_InitSelect0[] = + " \\* @\\(#\\).RCSfile: pthread\\.h,v \\$ .Revision: 1\\.1\\.33\\.21 \\$ \\(DEC\\) .Date: 2000/08/15 15:30:13 \\$"; + +#define ALPHA_PTHREAD_INIT_TEST_CT 1 +static tTestDesc aAlpha_Pthread_InitTests[] = { + { TT_EGREP, zAlpha_Pthread_InitSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Pthread_Init + */ +static const char* apzAlpha_Pthread_InitPatch[] = { sed_cmd_z, + "-e", "s@MVALID\\(.*\\)A}@MVALID\\1A, 0, 0, 0, 0, 0, 0 }@\n\ +s@MVALID\\(.*\\)_}@MVALID\\1_, 0, 0, 0, 0 }@\n\ +s@CVALID\\(.*\\)A}@CVALID\\1A, 0, 0, 0, 0 }@\n\ +s@CVALID\\(.*\\)_}@CVALID\\1_, 0, 0 }@\n\ +s@WVALID\\(.*\\)A}@WVALID\\1A, 0, 0, 0, 0, 0, 0, 0, 0, 0 }@\n\ +s@WVALID\\(.*\\)_}@WVALID\\1_, 0, 0, 0, 0, 0, 0, 0 }@\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Alpha_Sbrk fix + */ +tSCC zAlpha_SbrkName[] = + "alpha_sbrk"; + +/* + * File name selection pattern + */ +tSCC zAlpha_SbrkList[] = + "unistd.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAlpha_SbrkMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAlpha_SbrkSelect0[] = + "char[ \t]*\\*[\t ]*sbrk[ \t]*\\("; + +#define ALPHA_SBRK_TEST_CT 1 +static tTestDesc aAlpha_SbrkTests[] = { + { TT_EGREP, zAlpha_SbrkSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Alpha_Sbrk + */ +static const char* apzAlpha_SbrkPatch[] = { + "format", + "void *sbrk(", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Avoid_Bool_Define fix + */ +tSCC zAvoid_Bool_DefineName[] = + "avoid_bool_define"; + +/* + * File name selection pattern + */ +tSCC zAvoid_Bool_DefineList[] = + "curses.h\0curses_colr/curses.h\0term.h\0tinfo.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAvoid_Bool_DefineMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAvoid_Bool_DefineSelect0[] = + "#[ \t]*define[ \t]+bool[ \t]"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zAvoid_Bool_DefineBypass0[] = + "__cplusplus"; + +#define AVOID_BOOL_DEFINE_TEST_CT 2 +static tTestDesc aAvoid_Bool_DefineTests[] = { + { TT_NEGREP, zAvoid_Bool_DefineBypass0, (regex_t*)NULL }, + { TT_EGREP, zAvoid_Bool_DefineSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Avoid_Bool_Define + */ +static const char* apzAvoid_Bool_DefinePatch[] = { + "format", + "#ifndef __cplusplus\n\ +%0\n\ +#endif", + "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Avoid_Bool_Type fix + */ +tSCC zAvoid_Bool_TypeName[] = + "avoid_bool_type"; + +/* + * File name selection pattern + */ +tSCC zAvoid_Bool_TypeList[] = + "curses.h\0curses_colr/curses.h\0term.h\0tinfo.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzAvoid_Bool_TypeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAvoid_Bool_TypeSelect0[] = + "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zAvoid_Bool_TypeBypass0[] = + "__cplusplus"; + +#define AVOID_BOOL_TYPE_TEST_CT 2 +static tTestDesc aAvoid_Bool_TypeTests[] = { + { TT_NEGREP, zAvoid_Bool_TypeBypass0, (regex_t*)NULL }, + { TT_EGREP, zAvoid_Bool_TypeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Avoid_Bool_Type + */ +static const char* apzAvoid_Bool_TypePatch[] = { + "format", + "#ifndef __cplusplus\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Avoid_Wchar_T_Type fix + */ +tSCC zAvoid_Wchar_T_TypeName[] = + "avoid_wchar_t_type"; + +/* + * File name selection pattern + */ +#define zAvoid_Wchar_T_TypeList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzAvoid_Wchar_T_TypeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zAvoid_Wchar_T_TypeSelect0[] = + "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zAvoid_Wchar_T_TypeBypass0[] = + "__cplusplus"; +tSCC zAvoid_Wchar_T_TypeBypass1[] = + "_LINUX_NLS_H"; +tSCC zAvoid_Wchar_T_TypeBypass2[] = + "XFree86: xc/lib/X11/Xlib\\.h"; + +#define AVOID_WCHAR_T_TYPE_TEST_CT 4 +static tTestDesc aAvoid_Wchar_T_TypeTests[] = { + { TT_NEGREP, zAvoid_Wchar_T_TypeBypass0, (regex_t*)NULL }, + { TT_NEGREP, zAvoid_Wchar_T_TypeBypass1, (regex_t*)NULL }, + { TT_NEGREP, zAvoid_Wchar_T_TypeBypass2, (regex_t*)NULL }, + { TT_EGREP, zAvoid_Wchar_T_TypeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Avoid_Wchar_T_Type + */ +static const char* apzAvoid_Wchar_T_TypePatch[] = { + "format", + "#ifndef __cplusplus\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Bad_Struct_Term fix + */ +tSCC zBad_Struct_TermName[] = + "bad_struct_term"; + +/* + * File name selection pattern + */ +tSCC zBad_Struct_TermList[] = + "curses.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzBad_Struct_TermMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBad_Struct_TermSelect0[] = + "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;"; + +#define BAD_STRUCT_TERM_TEST_CT 1 +static tTestDesc aBad_Struct_TermTests[] = { + { TT_EGREP, zBad_Struct_TermSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Bad_Struct_Term + */ +static const char* apzBad_Struct_TermPatch[] = { + "format", + "struct term;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Badquote fix + */ +tSCC zBadquoteName[] = + "badquote"; + +/* + * File name selection pattern + */ +tSCC zBadquoteList[] = + "sundev/vuid_event.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzBadquoteMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBadquoteSelect0[] = + "doesn't"; + +#define BADQUOTE_TEST_CT 1 +static tTestDesc aBadquoteTests[] = { + { TT_EGREP, zBadquoteSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Badquote + */ +static const char* apzBadquotePatch[] = { + "format", + "does not", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Broken_Assert_Stdio fix + */ +tSCC zBroken_Assert_StdioName[] = + "broken_assert_stdio"; + +/* + * File name selection pattern + */ +tSCC zBroken_Assert_StdioList[] = + "assert.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzBroken_Assert_StdioMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBroken_Assert_StdioSelect0[] = + "stderr"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zBroken_Assert_StdioBypass0[] = + "include.*stdio\\.h"; + +#define BROKEN_ASSERT_STDIO_TEST_CT 2 +static tTestDesc aBroken_Assert_StdioTests[] = { + { TT_NEGREP, zBroken_Assert_StdioBypass0, (regex_t*)NULL }, + { TT_EGREP, zBroken_Assert_StdioSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Broken_Assert_Stdio + */ +static const char* apzBroken_Assert_StdioPatch[] = { + "wrap", + "#include <stdio.h>\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Broken_Assert_Stdlib fix + */ +tSCC zBroken_Assert_StdlibName[] = + "broken_assert_stdlib"; + +/* + * File name selection pattern + */ +tSCC zBroken_Assert_StdlibList[] = + "assert.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzBroken_Assert_StdlibMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBroken_Assert_StdlibSelect0[] = + "exit *\\(|abort *\\("; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zBroken_Assert_StdlibBypass0[] = + "include.*stdlib\\.h"; + +#define BROKEN_ASSERT_STDLIB_TEST_CT 2 +static tTestDesc aBroken_Assert_StdlibTests[] = { + { TT_NEGREP, zBroken_Assert_StdlibBypass0, (regex_t*)NULL }, + { TT_EGREP, zBroken_Assert_StdlibSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Broken_Assert_Stdlib + */ +static const char* apzBroken_Assert_StdlibPatch[] = { + "wrap", + "#ifdef __cplusplus\n\ +#include <stdlib.h>\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Broken_Cabs fix + */ +tSCC zBroken_CabsName[] = + "broken_cabs"; + +/* + * File name selection pattern + */ +tSCC zBroken_CabsList[] = + "math.h\0architecture/*/math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzBroken_CabsMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBroken_CabsSelect0[] = + "^extern[ \t]+double[ \t]+cabs"; + +#define BROKEN_CABS_TEST_CT 1 +static tTestDesc aBroken_CabsTests[] = { + { TT_EGREP, zBroken_CabsSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Broken_Cabs + */ +static const char* apzBroken_CabsPatch[] = { sed_cmd_z, + "-e", "s/^extern[ \t]*double[ \t]*cabs[ \t]*([^\\)]*);//", + "-e", "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*([^\\)]*);//", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Broken_Nan fix + */ +tSCC zBroken_NanName[] = + "broken_nan"; + +/* + * File name selection pattern + */ +tSCC zBroken_NanList[] = + "architecture/ppc/math.h\0architecture/*/math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzBroken_NanMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBroken_NanSelect0[] = + "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zBroken_NanBypass0[] = + "powl"; + +#define BROKEN_NAN_TEST_CT 2 +static tTestDesc aBroken_NanTests[] = { + { TT_NEGREP, zBroken_NanBypass0, (regex_t*)NULL }, + { TT_EGREP, zBroken_NanSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Broken_Nan + */ +static const char* apzBroken_NanPatch[] = { + "format", + "#if 1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Bsd_Stdio_Attrs_Conflict fix + */ +tSCC zBsd_Stdio_Attrs_ConflictName[] = + "bsd_stdio_attrs_conflict"; + +/* + * File name selection pattern + */ +tSCC zBsd_Stdio_Attrs_ConflictList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzBsd_Stdio_Attrs_ConflictMachs[] = { + "*-*-*bsd*", + "*-*-*darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zBsd_Stdio_Attrs_ConflictSelect0[] = + "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$"; + +#define BSD_STDIO_ATTRS_CONFLICT_TEST_CT 1 +static tTestDesc aBsd_Stdio_Attrs_ConflictTests[] = { + { TT_EGREP, zBsd_Stdio_Attrs_ConflictSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Bsd_Stdio_Attrs_Conflict + */ +static const char* apzBsd_Stdio_Attrs_ConflictPatch[] = { + "format", + "#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)\n\ +#define _BSD_STRINGX(_BSD_X) #_BSD_X\n\ +int vfscanf(FILE *, const char *, __builtin_va_list) __asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) \"__svfscanf\");", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Ctrl_Quotes_Def fix + */ +tSCC zCtrl_Quotes_DefName[] = + "ctrl_quotes_def"; + +/* + * File name selection pattern + */ +#define zCtrl_Quotes_DefList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzCtrl_Quotes_DefMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zCtrl_Quotes_DefSelect0[] = + "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]"; + +#define CTRL_QUOTES_DEF_TEST_CT 1 +static tTestDesc aCtrl_Quotes_DefTests[] = { + { TT_EGREP, zCtrl_Quotes_DefSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Ctrl_Quotes_Def + */ +static const char* apzCtrl_Quotes_DefPatch[] = { + "char_macro_def", + "CTRL", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Ctrl_Quotes_Use fix + */ +tSCC zCtrl_Quotes_UseName[] = + "ctrl_quotes_use"; + +/* + * File name selection pattern + */ +#define zCtrl_Quotes_UseList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzCtrl_Quotes_UseMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zCtrl_Quotes_UseSelect0[] = + "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']"; + +#define CTRL_QUOTES_USE_TEST_CT 1 +static tTestDesc aCtrl_Quotes_UseTests[] = { + { TT_EGREP, zCtrl_Quotes_UseSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Ctrl_Quotes_Use + */ +static const char* apzCtrl_Quotes_UsePatch[] = { + "char_macro_use", + "CTRL", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Cxx_Unready fix + */ +tSCC zCxx_UnreadyName[] = + "cxx_unready"; + +/* + * File name selection pattern + */ +tSCC zCxx_UnreadyList[] = + "sys/mman.h\0rpc/types.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzCxx_UnreadyMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zCxx_UnreadySelect0[] = + "[^#]+malloc.*;"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zCxx_UnreadyBypass0[] = + "\"C\"|__BEGIN_DECLS"; + +#define CXX_UNREADY_TEST_CT 2 +static tTestDesc aCxx_UnreadyTests[] = { + { TT_NEGREP, zCxx_UnreadyBypass0, (regex_t*)NULL }, + { TT_EGREP, zCxx_UnreadySelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Cxx_Unready + */ +static const char* apzCxx_UnreadyPatch[] = { + "wrap", + "#ifdef __cplusplus\n\ +extern \"C\" {\n\ +#endif\n", + "#ifdef __cplusplus\n\ +}\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Externc fix + */ +tSCC zDarwin_ExterncName[] = + "darwin_externc"; + +/* + * File name selection pattern + */ +tSCC zDarwin_ExterncList[] = + "mach-o/swap.h\0mach/mach_time.h\0mach/mach_traps.h\0mach/message.h\0mach/mig.h\0mach/semaphore.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_ExterncMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zDarwin_ExterncBypass0[] = + "extern \"C\""; +tSCC zDarwin_ExterncBypass1[] = + "__BEGIN_DECLS"; + +#define DARWIN_EXTERNC_TEST_CT 2 +static tTestDesc aDarwin_ExterncTests[] = { + { TT_NEGREP, zDarwin_ExterncBypass0, (regex_t*)NULL }, + { TT_NEGREP, zDarwin_ExterncBypass1, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Externc + */ +static const char* apzDarwin_ExterncPatch[] = { + "wrap", + "#ifdef __cplusplus\n\ +extern \"C\" {\n\ +#endif\n", + "#ifdef __cplusplus\n\ +}\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Gcc4_Breakage fix + */ +tSCC zDarwin_Gcc4_BreakageName[] = + "darwin_gcc4_breakage"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Gcc4_BreakageList[] = + "AvailabilityMacros.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Gcc4_BreakageMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Gcc4_BreakageSelect0[] = + "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)"; + +#define DARWIN_GCC4_BREAKAGE_TEST_CT 1 +static tTestDesc aDarwin_Gcc4_BreakageTests[] = { + { TT_EGREP, zDarwin_Gcc4_BreakageSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Gcc4_Breakage + */ +static const char* apzDarwin_Gcc4_BreakagePatch[] = { + "format", + "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Private_Extern fix + */ +tSCC zDarwin_Private_ExternName[] = + "darwin_private_extern"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Private_ExternList[] = + "mach-o/dyld.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Private_ExternMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Private_ExternSelect0[] = + "__private_extern__ [a-z_]+ _dyld_"; + +#define DARWIN_PRIVATE_EXTERN_TEST_CT 1 +static tTestDesc aDarwin_Private_ExternTests[] = { + { TT_EGREP, zDarwin_Private_ExternSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Private_Extern + */ +static const char* apzDarwin_Private_ExternPatch[] = { + "format", + "extern", + "__private_extern__", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_1 fix + */ +tSCC zDarwin_Stdint_1Name[] = + "darwin_stdint_1"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_1List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_1Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_1Select0[] = + "#define UINT8_C\\(v\\)[ \t]+\\(v ## U\\)\n\ +#define UINT16_C\\(v\\)[ \t]+\\(v ## U\\)"; + +#define DARWIN_STDINT_1_TEST_CT 1 +static tTestDesc aDarwin_Stdint_1Tests[] = { + { TT_EGREP, zDarwin_Stdint_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_1 + */ +static const char* apzDarwin_Stdint_1Patch[] = { + "format", + "#define UINT8_C(v)\tv\n\ +#define UINT16_C(v)\tv", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_2 fix + */ +tSCC zDarwin_Stdint_2Name[] = + "darwin_stdint_2"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_2List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_2Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_2Select0[] = + "#if __WORDSIZE == 64\n\ +#define INTPTR_MIN[ \t]+INT64_MIN\n\ +#define INTPTR_MAX[ \t]+INT64_MAX\n\ +#else\n\ +#define INTPTR_MIN[ \t]+INT32_MIN\n\ +#define INTPTR_MAX[ \t]+INT32_MAX\n\ +#endif"; + +#define DARWIN_STDINT_2_TEST_CT 1 +static tTestDesc aDarwin_Stdint_2Tests[] = { + { TT_EGREP, zDarwin_Stdint_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_2 + */ +static const char* apzDarwin_Stdint_2Patch[] = { + "format", + "#if __WORDSIZE == 64\n\ +#define INTPTR_MAX 9223372036854775807L\n\ +#define INTPTR_MIN (-INTPTR_MAX-1)\n\ +#else\n\ +#define INTPTR_MAX 2147483647L\n\ +#define INTPTR_MIN (-INTPTR_MAX-1)\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_3 fix + */ +tSCC zDarwin_Stdint_3Name[] = + "darwin_stdint_3"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_3List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_3Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_3Select0[] = + "#if __WORDSIZE == 64\n\ +#define UINTPTR_MAX[ \t]+UINT64_MAX\n\ +#else\n\ +#define UINTPTR_MAX[ \t]+UINT32_MAX\n\ +#endif"; + +#define DARWIN_STDINT_3_TEST_CT 1 +static tTestDesc aDarwin_Stdint_3Tests[] = { + { TT_EGREP, zDarwin_Stdint_3Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_3 + */ +static const char* apzDarwin_Stdint_3Patch[] = { + "format", + "#if __WORDSIZE == 64\n\ +#define UINTPTR_MAX 18446744073709551615UL\n\ +#else\n\ +#define UINTPTR_MAX 4294967295UL\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_4 fix + */ +tSCC zDarwin_Stdint_4Name[] = + "darwin_stdint_4"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_4List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_4Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_4Select0[] = + "#if __WORDSIZE == 64\n\ +#define SIZE_MAX[ \t]+UINT64_MAX\n\ +#else\n\ +#define SIZE_MAX[ \t]+UINT32_MAX\n\ +#endif"; + +#define DARWIN_STDINT_4_TEST_CT 1 +static tTestDesc aDarwin_Stdint_4Tests[] = { + { TT_EGREP, zDarwin_Stdint_4Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_4 + */ +static const char* apzDarwin_Stdint_4Patch[] = { + "format", + "#if __WORDSIZE == 64\n\ +#define SIZE_MAX 18446744073709551615UL\n\ +#else\n\ +#define SIZE_MAX 4294967295UL\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_5 fix + */ +tSCC zDarwin_Stdint_5Name[] = + "darwin_stdint_5"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_5List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_5Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_5Select0[] = + "#define INTMAX_MIN[ \t]+INT64_MIN\n\ +#define INTMAX_MAX[ \t]+INT64_MAX\n\n\ +#define UINTMAX_MAX[ \t]+UINT64_MAX"; + +#define DARWIN_STDINT_5_TEST_CT 1 +static tTestDesc aDarwin_Stdint_5Tests[] = { + { TT_EGREP, zDarwin_Stdint_5Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_5 + */ +static const char* apzDarwin_Stdint_5Patch[] = { + "format", + "#if __WORDSIZE == 64\n\ +#define INTMAX_MIN (-9223372036854775807L - 1)\n\ +#define INTMAX_MAX 9223372036854775807L\n\ +#define UINTMAX_MAX 18446744073709551615UL\n\ +#else\n\ +#define INTMAX_MIN (-9223372036854775807LL - 1)\n\ +#define INTMAX_MAX 9223372036854775807LL\n\ +#define UINTMAX_MAX 18446744073709551615ULL\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_6 fix + */ +tSCC zDarwin_Stdint_6Name[] = + "darwin_stdint_6"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_6List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_6Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_6Select0[] = + "#if __WORDSIZE == 64\n\ +#define PTRDIFF_MIN[ \t]+INT64_MIN\n\ +#define PTRDIFF_MAX[ \t]+INT64_MAX\n\ +#else\n\ +#define PTRDIFF_MIN[ \t]+INT32_MIN\n\ +#define PTRDIFF_MAX[ \t]+INT32_MAX\n\ +#endif"; + +#define DARWIN_STDINT_6_TEST_CT 1 +static tTestDesc aDarwin_Stdint_6Tests[] = { + { TT_EGREP, zDarwin_Stdint_6Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_6 + */ +static const char* apzDarwin_Stdint_6Patch[] = { + "format", + "#if __WORDSIZE == 64\n\ +#define PTRDIFF_MIN (-9223372036854775807L - 1)\n\ +#define PTRDIFF_MAX 9223372036854775807L\n\ +#else\n\ +#define PTRDIFF_MIN (-2147483647 - 1)\n\ +#define PTRDIFF_MAX 2147483647\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Stdint_7 fix + */ +tSCC zDarwin_Stdint_7Name[] = + "darwin_stdint_7"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Stdint_7List[] = + "stdint-darwin.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Stdint_7Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Stdint_7Select0[] = + "#define INTMAX_C\\(v\\)[ \t]+\\(v ## LL\\)\n\ +#define UINTMAX_C\\(v\\)[ \t]+\\(v ## ULL\\)"; + +#define DARWIN_STDINT_7_TEST_CT 1 +static tTestDesc aDarwin_Stdint_7Tests[] = { + { TT_EGREP, zDarwin_Stdint_7Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Stdint_7 + */ +static const char* apzDarwin_Stdint_7Patch[] = { + "format", + "#if __WORDSIZE == 64\n\ +#define INTMAX_C(v) (v ## L)\n\ +#define UINTMAX_C(v) (v ## UL)\n\ +#else\n\ +#define INTMAX_C(v) (v ## LL)\n\ +#define UINTMAX_C(v) (v ## ULL)\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Dec_Intern_Asm fix + */ +tSCC zDec_Intern_AsmName[] = + "dec_intern_asm"; + +/* + * File name selection pattern + */ +tSCC zDec_Intern_AsmList[] = + "c_asm.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzDec_Intern_AsmMachs (const char**)NULL +#define DEC_INTERN_ASM_TEST_CT 0 +#define aDec_Intern_AsmTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Dec_Intern_Asm + */ +static const char* apzDec_Intern_AsmPatch[] = { sed_cmd_z, + "-e", "/^[ \t]*float[ \t]*fasm/i\\\n\ +#ifdef __DECC\n", + "-e", "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Djgpp_Wchar_H fix + */ +tSCC zDjgpp_Wchar_HName[] = + "djgpp_wchar_h"; + +/* + * File name selection pattern + */ +#define zDjgpp_Wchar_HList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzDjgpp_Wchar_HMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDjgpp_Wchar_HSelect0[] = + "__DJ_wint_t"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zDjgpp_Wchar_HBypass0[] = + "sys/djtypes.h"; + +#define DJGPP_WCHAR_H_TEST_CT 2 +static tTestDesc aDjgpp_Wchar_HTests[] = { + { TT_NEGREP, zDjgpp_Wchar_HBypass0, (regex_t*)NULL }, + { TT_EGREP, zDjgpp_Wchar_HSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Djgpp_Wchar_H + */ +static const char* apzDjgpp_Wchar_HPatch[] = { + "format", + "%0\n\ +#include <sys/djtypes.h>", + "#include <stddef.h>", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Ecd_Cursor fix + */ +tSCC zEcd_CursorName[] = + "ecd_cursor"; + +/* + * File name selection pattern + */ +tSCC zEcd_CursorList[] = + "sunwindow/win_lock.h\0sunwindow/win_cursor.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzEcd_CursorMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zEcd_CursorSelect0[] = + "ecd\\.cursor"; + +#define ECD_CURSOR_TEST_CT 1 +static tTestDesc aEcd_CursorTests[] = { + { TT_EGREP, zEcd_CursorSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Ecd_Cursor + */ +static const char* apzEcd_CursorPatch[] = { + "format", + "ecd_cursor", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Freebsd_Gcc3_Breakage fix + */ +tSCC zFreebsd_Gcc3_BreakageName[] = + "freebsd_gcc3_breakage"; + +/* + * File name selection pattern + */ +tSCC zFreebsd_Gcc3_BreakageList[] = + "sys/cdefs.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzFreebsd_Gcc3_BreakageMachs[] = { + "*-*-freebsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zFreebsd_Gcc3_BreakageSelect0[] = + "^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zFreebsd_Gcc3_BreakageBypass0[] = + "__GNUC__[ \\t]*([>=]=[ \\t]*[3-9]|>[ \\t]*2)"; + +#define FREEBSD_GCC3_BREAKAGE_TEST_CT 2 +static tTestDesc aFreebsd_Gcc3_BreakageTests[] = { + { TT_NEGREP, zFreebsd_Gcc3_BreakageBypass0, (regex_t*)NULL }, + { TT_EGREP, zFreebsd_Gcc3_BreakageSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Freebsd_Gcc3_Breakage + */ +static const char* apzFreebsd_Gcc3_BreakagePatch[] = { + "format", + "%0 || __GNUC__ >= 3", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Freebsd_Gcc4_Breakage fix + */ +tSCC zFreebsd_Gcc4_BreakageName[] = + "freebsd_gcc4_breakage"; + +/* + * File name selection pattern + */ +tSCC zFreebsd_Gcc4_BreakageList[] = + "sys/cdefs.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzFreebsd_Gcc4_BreakageMachs[] = { + "*-*-freebsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zFreebsd_Gcc4_BreakageSelect0[] = + "^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \\|\\| __GNUC__ == 3$"; + +#define FREEBSD_GCC4_BREAKAGE_TEST_CT 1 +static tTestDesc aFreebsd_Gcc4_BreakageTests[] = { + { TT_EGREP, zFreebsd_Gcc4_BreakageSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Freebsd_Gcc4_Breakage + */ +static const char* apzFreebsd_Gcc4_BreakagePatch[] = { + "format", + "#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_C99_Inline_1 fix + */ +tSCC zGlibc_C99_Inline_1Name[] = + "glibc_c99_inline_1"; + +/* + * File name selection pattern + */ +tSCC zGlibc_C99_Inline_1List[] = + "features.h\0*/features.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_C99_Inline_1Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_C99_Inline_1Select0[] = + "^ *&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__$"; + +#define GLIBC_C99_INLINE_1_TEST_CT 1 +static tTestDesc aGlibc_C99_Inline_1Tests[] = { + { TT_EGREP, zGlibc_C99_Inline_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_C99_Inline_1 + */ +static const char* apzGlibc_C99_Inline_1Patch[] = { + "format", + "%0 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_C99_Inline_1a fix + */ +tSCC zGlibc_C99_Inline_1aName[] = + "glibc_c99_inline_1a"; + +/* + * File name selection pattern + */ +tSCC zGlibc_C99_Inline_1aList[] = + "features.h\0*/features.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_C99_Inline_1aMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_C99_Inline_1aSelect0[] = + "(\\) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__)\n\ +(#[ \t]*define[ \t]*__USE_EXTERN_INLINES[ \t]*1)"; + +#define GLIBC_C99_INLINE_1A_TEST_CT 1 +static tTestDesc aGlibc_C99_Inline_1aTests[] = { + { TT_EGREP, zGlibc_C99_Inline_1aSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_C99_Inline_1a + */ +static const char* apzGlibc_C99_Inline_1aPatch[] = { + "format", + "%1 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)\n\ +%2", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_C99_Inline_2 fix + */ +tSCC zGlibc_C99_Inline_2Name[] = + "glibc_c99_inline_2"; + +/* + * File name selection pattern + */ +tSCC zGlibc_C99_Inline_2List[] = + "sys/stat.h\0*/sys/stat.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_C99_Inline_2Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_C99_Inline_2Select0[] = + "extern __inline__ int"; + +#define GLIBC_C99_INLINE_2_TEST_CT 1 +static tTestDesc aGlibc_C99_Inline_2Tests[] = { + { TT_EGREP, zGlibc_C99_Inline_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_C99_Inline_2 + */ +static const char* apzGlibc_C99_Inline_2Patch[] = { sed_cmd_z, + "-e", "s/extern int \\(stat\\)/#ifdef __GNUC_GNU_INLINE__\\\n\ +extern\\\n\ +#endif\\\n\ +__inline__ int \\1/", + "-e", "s/extern int \\([lf]stat\\)/#ifdef __GNUC_GNU_INLINE__\\\n\ +extern\\\n\ +#endif\\\n\ +__inline__ int \\1/", + "-e", "s/extern int \\(mknod\\)/#ifdef __GNUC_GNU_INLINE__\\\n\ +extern\\\n\ +#endif\\\n\ +__inline__ int \\1/", + "-e", "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\(stat\\)/#ifdef __GNUC_GNU_INLINE__\\\n\ +extern\\\n\ +#endif\\\n\ +__inline__ int __REDIRECT\\1 (\\2/", + "-e", "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\([lf]stat\\)/#ifdef __GNUC_GNU_INLINE__\\\n\ +extern\\\n\ +#endif\\\n\ +__inline__ int __REDIRECT\\1 (\\2/", + "-e", "s/^extern __inline__ int/#ifdef __GNUC_GNU_INLINE__\\\n\ +extern\\\n\ +#endif\\\n\ +__inline__ int/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_C99_Inline_3 fix + */ +tSCC zGlibc_C99_Inline_3Name[] = + "glibc_c99_inline_3"; + +/* + * File name selection pattern + */ +tSCC zGlibc_C99_Inline_3List[] = + "bits/string2.h\0*/bits/string2.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_C99_Inline_3Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_C99_Inline_3Select0[] = + "extern __inline"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zGlibc_C99_Inline_3Bypass0[] = + "__extern_inline|__GNU_STDC_INLINE__"; + +#define GLIBC_C99_INLINE_3_TEST_CT 2 +static tTestDesc aGlibc_C99_Inline_3Tests[] = { + { TT_NEGREP, zGlibc_C99_Inline_3Bypass0, (regex_t*)NULL }, + { TT_EGREP, zGlibc_C99_Inline_3Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_C99_Inline_3 + */ +static const char* apzGlibc_C99_Inline_3Patch[] = { + "format", + "# if defined(__cplusplus) || defined(__GNUC_STDC_INLINE__)", + "^# ifdef __cplusplus$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_C99_Inline_4 fix + */ +tSCC zGlibc_C99_Inline_4Name[] = + "glibc_c99_inline_4"; + +/* + * File name selection pattern + */ +tSCC zGlibc_C99_Inline_4List[] = + "sys/sysmacros.h\0*/sys/sysmacros.h\0wchar.h\0*/wchar.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_C99_Inline_4Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_C99_Inline_4Select0[] = + "(^| )extern __inline"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zGlibc_C99_Inline_4Bypass0[] = + "__extern_inline|__gnu_inline__"; + +#define GLIBC_C99_INLINE_4_TEST_CT 2 +static tTestDesc aGlibc_C99_Inline_4Tests[] = { + { TT_NEGREP, zGlibc_C99_Inline_4Bypass0, (regex_t*)NULL }, + { TT_EGREP, zGlibc_C99_Inline_4Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_C99_Inline_4 + */ +static const char* apzGlibc_C99_Inline_4Patch[] = { + "format", + "%0 __attribute__ ((__gnu_inline__))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_Mutex_Init fix + */ +tSCC zGlibc_Mutex_InitName[] = + "glibc_mutex_init"; + +/* + * File name selection pattern + */ +tSCC zGlibc_Mutex_InitList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_Mutex_InitMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_Mutex_InitSelect0[] = + "\\{ *\\{ *0, *\\} *\\}"; + +#define GLIBC_MUTEX_INIT_TEST_CT 1 +static tTestDesc aGlibc_Mutex_InitTests[] = { + { TT_EGREP, zGlibc_Mutex_InitSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_Mutex_Init + */ +static const char* apzGlibc_Mutex_InitPatch[] = { sed_cmd_z, + "-e", "/define[ \t]\\{1,\\}PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/{\n\ +N\n\ +s/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/\n\ +}", + "-e", "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_\\(RECURSIVE\\)_NP\\) }/{ \\1, 0 }/", + "-e", "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0 }/", + "-e", "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/", + "-e", "s/{ \\(0, 0, 0, PTHREAD_MUTEX_\\(RECURSIVE\\)_NP\\) }/{ \\1, 0, 0 }/", + "-e", "s/{ \\(0, 0, 0, PTHREAD_MUTEX_\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0, 0 }/", + "-e", "s/{ \\(0, 0, 0, PTHREAD_MUTEX_\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/", + "-e", "/define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/N;s/^[ \t]*#[ \t]*\\(define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\\n\ +# \\1\\\n\ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n\ +# else\\\n\ +# \\1\\\n\ + { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n\ +# endif/", + "-e", "s/{ \\(0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/", + "-e", "/define[ \t]\\{1,\\}PTHREAD_COND_INITIALIZER/s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_Stdint fix + */ +tSCC zGlibc_StdintName[] = + "glibc_stdint"; + +/* + * File name selection pattern + */ +tSCC zGlibc_StdintList[] = + "stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_StdintMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_StdintSelect0[] = + "GNU C Library"; + +#define GLIBC_STDINT_TEST_CT 1 +static tTestDesc aGlibc_StdintTests[] = { + { TT_EGREP, zGlibc_StdintSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_Stdint + */ +static const char* apzGlibc_StdintPatch[] = { + "format", + "# define UINT8_C(c)\tc\n\ +# define UINT16_C(c)\tc", + "# define UINT8_C\\(c\\)\tc ## U\n\ +# define UINT16_C\\(c\\)\tc ## U", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_Strncpy fix + */ +tSCC zGlibc_StrncpyName[] = + "glibc_strncpy"; + +/* + * File name selection pattern + */ +tSCC zGlibc_StrncpyList[] = + "bits/string2.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_StrncpyMachs (const char**)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zGlibc_StrncpyBypass0[] = + "__builtin_strncpy"; + +#define GLIBC_STRNCPY_TEST_CT 1 +static tTestDesc aGlibc_StrncpyTests[] = { + { TT_NEGREP, zGlibc_StrncpyBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_Strncpy + */ +static const char* apzGlibc_StrncpyPatch[] = { + "format", + "# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)", + "# define strncpy([^\n\ +]*\\\\\n\ +)*[^\n\ +]*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Glibc_Tgmath fix + */ +tSCC zGlibc_TgmathName[] = + "glibc_tgmath"; + +/* + * File name selection pattern + */ +tSCC zGlibc_TgmathList[] = + "tgmath.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzGlibc_TgmathMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGlibc_TgmathSelect0[] = + "\\(\\(\\(type\\) 0.25\\) && \\(\\(type\\) 0.25 - 1\\)\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zGlibc_TgmathBypass0[] = + "__floating_type\\(type\\) \\\\\n\ +.*__builtin_classify_type"; + +#define GLIBC_TGMATH_TEST_CT 2 +static tTestDesc aGlibc_TgmathTests[] = { + { TT_NEGREP, zGlibc_TgmathBypass0, (regex_t*)NULL }, + { TT_EGREP, zGlibc_TgmathSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Glibc_Tgmath + */ +static const char* apzGlibc_TgmathPatch[] = { + "format", + "(__builtin_classify_type ((type) 0) == 8 || (__builtin_classify_type ((type) 0) == 9 && __builtin_classify_type (__real__ ((type) 0)) == 8))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Gnu_Types fix + */ +tSCC zGnu_TypesName[] = + "gnu_types"; + +/* + * File name selection pattern + */ +tSCC zGnu_TypesList[] = + "sys/types.h\0stdlib.h\0sys/stdtypes.h\0stddef.h\0memory.h\0unistd.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzGnu_TypesMachs[] = { + "*-*-solaris2.1[0-9]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zGnu_TypesSelect0[] = + "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zGnu_TypesBypass0[] = + "_GCC_(PTRDIFF|SIZE|WCHAR)_T"; + +#define GNU_TYPES_TEST_CT 2 +static tTestDesc aGnu_TypesTests[] = { + { TT_NEGREP, zGnu_TypesBypass0, (regex_t*)NULL }, + { TT_EGREP, zGnu_TypesSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Gnu_Types + */ +static const char* apzGnu_TypesPatch[] = { + "gnu_type", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hp_Inline fix + */ +tSCC zHp_InlineName[] = + "hp_inline"; + +/* + * File name selection pattern + */ +tSCC zHp_InlineList[] = + "sys/spinlock.h\0machine/machparam.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHp_InlineMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHp_InlineSelect0[] = + "[ \t]*#[ \t]*include[ \t]+\"\\.\\./machine/"; + +#define HP_INLINE_TEST_CT 1 +static tTestDesc aHp_InlineTests[] = { + { TT_EGREP, zHp_InlineSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hp_Inline + */ +static const char* apzHp_InlinePatch[] = { + "format", + "%1<machine/%2.h>", + "([ \t]*#[ \t]*include[ \t]+)\"\\.\\./machine/([a-z]+)\\.h\"", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hp_Sysfile fix + */ +tSCC zHp_SysfileName[] = + "hp_sysfile"; + +/* + * File name selection pattern + */ +tSCC zHp_SysfileList[] = + "sys/file.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHp_SysfileMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHp_SysfileSelect0[] = + "HPUX_SOURCE"; + +#define HP_SYSFILE_TEST_CT 1 +static tTestDesc aHp_SysfileTests[] = { + { TT_EGREP, zHp_SysfileSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hp_Sysfile + */ +static const char* apzHp_SysfilePatch[] = { + "format", + "(struct file *, ...)", + "\\(\\.\\.\\.\\)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hppa_Hpux_Fp_Macros fix + */ +tSCC zHppa_Hpux_Fp_MacrosName[] = + "hppa_hpux_fp_macros"; + +/* + * File name selection pattern + */ +tSCC zHppa_Hpux_Fp_MacrosList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHppa_Hpux_Fp_MacrosMachs[] = { + "hppa*-hp-hpux11*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHppa_Hpux_Fp_MacrosSelect0[] = + "#[ \t]*define[ \t]*FP_NORMAL.*\n\ +#[ \t]*define[ \t]*FP_ZERO.*\n\ +#[ \t]*define[ \t]*FP_INFINITE.*\n\ +#[ \t]*define[ \t]*FP_SUBNORMAL.*\n\ +#[ \t]*define[ \t]*FP_NAN.*\n"; + +#define HPPA_HPUX_FP_MACROS_TEST_CT 1 +static tTestDesc aHppa_Hpux_Fp_MacrosTests[] = { + { TT_EGREP, zHppa_Hpux_Fp_MacrosSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hppa_Hpux_Fp_Macros + */ +static const char* apzHppa_Hpux_Fp_MacrosPatch[] = { + "format", + "#endif /* _INCLUDE_HPUX_SOURCE */\n\n\ +#if defined(_INCLUDE_HPUX_SOURCE) || \\\n\ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L))\n\ +%0#endif\n\n\ +#ifdef _INCLUDE_HPUX_SOURCE\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux10_Cpp_Pow_Inline fix + */ +tSCC zHpux10_Cpp_Pow_InlineName[] = + "hpux10_cpp_pow_inline"; + +/* + * File name selection pattern + */ +tSCC zHpux10_Cpp_Pow_InlineList[] = + "fixinc-test-limits.h\0math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux10_Cpp_Pow_InlineMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux10_Cpp_Pow_InlineSelect0[] = + "^# +ifdef +__cplusplus\n\ + +\\}\n\ + +inline +double +pow\\(double +__d,int +__expon\\) +\\{\n\ +[ \t]+return +pow\\(__d,\\(double\\)__expon\\);\n\ + +\\}\n\ + +extern +\"C\" +\\{\n\ +#else\n\ +# +endif"; + +#define HPUX10_CPP_POW_INLINE_TEST_CT 1 +static tTestDesc aHpux10_Cpp_Pow_InlineTests[] = { + { TT_EGREP, zHpux10_Cpp_Pow_InlineSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux10_Cpp_Pow_Inline + */ +static const char* apzHpux10_Cpp_Pow_InlinePatch[] = { + "format", + "", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Cpp_Pow_Inline fix + */ +tSCC zHpux11_Cpp_Pow_InlineName[] = + "hpux11_cpp_pow_inline"; + +/* + * File name selection pattern + */ +tSCC zHpux11_Cpp_Pow_InlineList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux11_Cpp_Pow_InlineMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_Cpp_Pow_InlineSelect0[] = + " +inline double pow\\(double d,int expon\\) \\{\n\ + +return pow\\(d, \\(double\\)expon\\);\n\ + +\\}\n"; + +#define HPUX11_CPP_POW_INLINE_TEST_CT 1 +static tTestDesc aHpux11_Cpp_Pow_InlineTests[] = { + { TT_EGREP, zHpux11_Cpp_Pow_InlineSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Cpp_Pow_Inline + */ +static const char* apzHpux11_Cpp_Pow_InlinePatch[] = { + "format", + "", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux10_Ctype_Declarations1 fix + */ +tSCC zHpux10_Ctype_Declarations1Name[] = + "hpux10_ctype_declarations1"; + +/* + * File name selection pattern + */ +tSCC zHpux10_Ctype_Declarations1List[] = + "ctype.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux10_Ctype_Declarations1Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux10_Ctype_Declarations1Select0[] = + "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHpux10_Ctype_Declarations1Bypass0[] = + "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\("; + +#define HPUX10_CTYPE_DECLARATIONS1_TEST_CT 2 +static tTestDesc aHpux10_Ctype_Declarations1Tests[] = { + { TT_NEGREP, zHpux10_Ctype_Declarations1Bypass0, (regex_t*)NULL }, + { TT_EGREP, zHpux10_Ctype_Declarations1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux10_Ctype_Declarations1 + */ +static const char* apzHpux10_Ctype_Declarations1Patch[] = { + "format", + "#ifdef _PROTOTYPES\n\ +extern int __tolower(int);\n\ +extern int __toupper(int);\n\ +#else /* NOT _PROTOTYPES */\n\ +extern int __tolower();\n\ +extern int __toupper();\n\ +#endif /* _PROTOTYPES */\n\n\ +%0\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux10_Ctype_Declarations2 fix + */ +tSCC zHpux10_Ctype_Declarations2Name[] = + "hpux10_ctype_declarations2"; + +/* + * File name selection pattern + */ +tSCC zHpux10_Ctype_Declarations2List[] = + "ctype.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux10_Ctype_Declarations2Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux10_Ctype_Declarations2Select0[] = + "^# if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHpux10_Ctype_Declarations2Bypass0[] = + "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\("; + +#define HPUX10_CTYPE_DECLARATIONS2_TEST_CT 2 +static tTestDesc aHpux10_Ctype_Declarations2Tests[] = { + { TT_NEGREP, zHpux10_Ctype_Declarations2Bypass0, (regex_t*)NULL }, + { TT_EGREP, zHpux10_Ctype_Declarations2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux10_Ctype_Declarations2 + */ +static const char* apzHpux10_Ctype_Declarations2Patch[] = { + "format", + "%0\n\n\ +#ifdef _PROTOTYPES\n\ + extern int _isalnum(int);\n\ + extern int _isalpha(int);\n\ + extern int _iscntrl(int);\n\ + extern int _isdigit(int);\n\ + extern int _isgraph(int);\n\ + extern int _islower(int);\n\ + extern int _isprint(int);\n\ + extern int _ispunct(int);\n\ + extern int _isspace(int);\n\ + extern int _isupper(int);\n\ + extern int _isxdigit(int);\n\ +# else /* not _PROTOTYPES */\n\ + extern int _isalnum();\n\ + extern int _isalpha();\n\ + extern int _iscntrl();\n\ + extern int _isdigit();\n\ + extern int _isgraph();\n\ + extern int _islower();\n\ + extern int _isprint();\n\ + extern int _ispunct();\n\ + extern int _isspace();\n\ + extern int _isupper();\n\ + extern int _isxdigit();\n\ +#endif /* _PROTOTYPES */\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux10_Stdio_Declarations fix + */ +tSCC zHpux10_Stdio_DeclarationsName[] = + "hpux10_stdio_declarations"; + +/* + * File name selection pattern + */ +tSCC zHpux10_Stdio_DeclarationsList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux10_Stdio_DeclarationsMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux10_Stdio_DeclarationsSelect0[] = + "^#[ \t]*define _iob[ \t]*__iob"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHpux10_Stdio_DeclarationsBypass0[] = + "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\("; + +#define HPUX10_STDIO_DECLARATIONS_TEST_CT 2 +static tTestDesc aHpux10_Stdio_DeclarationsTests[] = { + { TT_NEGREP, zHpux10_Stdio_DeclarationsBypass0, (regex_t*)NULL }, + { TT_EGREP, zHpux10_Stdio_DeclarationsSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux10_Stdio_Declarations + */ +static const char* apzHpux10_Stdio_DeclarationsPatch[] = { + "format", + "%0\n\n\ +# if defined(__STDC__) || defined(__cplusplus)\n\ + extern int snprintf(char *, size_t, const char *, ...);\n\ + extern int vsnprintf(char *, size_t, const char *, __va_list);\n\ +# else /* not __STDC__) || __cplusplus */\n\ + extern int snprintf();\n\ + extern int vsnprintf();\n\ +# endif /* __STDC__) || __cplusplus */\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Abs fix + */ +tSCC zHpux11_AbsName[] = + "hpux11_abs"; + +/* + * File name selection pattern + */ +tSCC zHpux11_AbsList[] = + "stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux11_AbsMachs[] = { + "ia64-hp-hpux11*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_AbsSelect0[] = + "ifndef _MATH_INCLUDED"; + +#define HPUX11_ABS_TEST_CT 1 +static tTestDesc aHpux11_AbsTests[] = { + { TT_EGREP, zHpux11_AbsSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Abs + */ +static const char* apzHpux11_AbsPatch[] = { + "format", + "if !defined(_MATH_INCLUDED) || defined(__GNUG__)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Fabsf fix + */ +tSCC zHpux11_FabsfName[] = + "hpux11_fabsf"; + +/* + * File name selection pattern + */ +tSCC zHpux11_FabsfList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux11_FabsfMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_FabsfSelect0[] = + "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHpux11_FabsfBypass0[] = + "__cplusplus"; + +#define HPUX11_FABSF_TEST_CT 2 +static tTestDesc aHpux11_FabsfTests[] = { + { TT_NEGREP, zHpux11_FabsfBypass0, (regex_t*)NULL }, + { TT_EGREP, zHpux11_FabsfSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Fabsf + */ +static const char* apzHpux11_FabsfPatch[] = { + "format", + "#ifndef __cplusplus\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Pthread_Const fix + */ +tSCC zHpux11_Pthread_ConstName[] = + "hpux11_pthread_const"; + +/* + * File name selection pattern + */ +tSCC zHpux11_Pthread_ConstList[] = + "sys/pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux11_Pthread_ConstMachs[] = { + "*-hp-hpux11.[0-3]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_Pthread_ConstSelect0[] = + "^#define[ \t]*__POINTER_SET[ \t]*\\(\\(void \\*\\) 1LL\\)"; + +#define HPUX11_PTHREAD_CONST_TEST_CT 1 +static tTestDesc aHpux11_Pthread_ConstTests[] = { + { TT_EGREP, zHpux11_Pthread_ConstSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Pthread_Const + */ +static const char* apzHpux11_Pthread_ConstPatch[] = { + "format", + "#define __POINTER_SET\t\t((void *) 1L)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Size_T fix + */ +tSCC zHpux11_Size_TName[] = + "hpux11_size_t"; + +/* + * File name selection pattern + */ +#define zHpux11_Size_TList (char*)NULL +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux11_Size_TMachs[] = { + "*-hp-hpux11*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_Size_TSelect0[] = + "__size_t"; + +#define HPUX11_SIZE_T_TEST_CT 1 +static tTestDesc aHpux11_Size_TTests[] = { + { TT_EGREP, zHpux11_Size_TSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Size_T + */ +static const char* apzHpux11_Size_TPatch[] = { + "format", + "_hpux_size_t", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Snprintf fix + */ +tSCC zHpux11_SnprintfName[] = + "hpux11_snprintf"; + +/* + * File name selection pattern + */ +tSCC zHpux11_SnprintfList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux11_SnprintfMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_SnprintfSelect0[] = + "(extern int snprintf *\\(char *\\*, *(|__|_hpux_)size_t,) *(char *\\*, *\\.\\.\\.\\);)"; + +#define HPUX11_SNPRINTF_TEST_CT 1 +static tTestDesc aHpux11_SnprintfTests[] = { + { TT_EGREP, zHpux11_SnprintfSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Snprintf + */ +static const char* apzHpux11_SnprintfPatch[] = { + "format", + "%1 const %3", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Vsnprintf fix + */ +tSCC zHpux11_VsnprintfName[] = + "hpux11_vsnprintf"; + +/* + * File name selection pattern + */ +tSCC zHpux11_VsnprintfList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux11_VsnprintfMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_VsnprintfSelect0[] = + "(extern int vsnprintf\\(char \\*, _[hpux]*_size_t, const char \\*,) __va__list\\);"; + +#define HPUX11_VSNPRINTF_TEST_CT 1 +static tTestDesc aHpux11_VsnprintfTests[] = { + { TT_EGREP, zHpux11_VsnprintfSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Vsnprintf + */ +static const char* apzHpux11_VsnprintfPatch[] = { + "format", + "%1 __va_list);", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux8_Bogus_Inlines fix + */ +tSCC zHpux8_Bogus_InlinesName[] = + "hpux8_bogus_inlines"; + +/* + * File name selection pattern + */ +tSCC zHpux8_Bogus_InlinesList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux8_Bogus_InlinesMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux8_Bogus_InlinesSelect0[] = + "inline"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHpux8_Bogus_InlinesBypass0[] = + "__GNUG__"; + +#define HPUX8_BOGUS_INLINES_TEST_CT 2 +static tTestDesc aHpux8_Bogus_InlinesTests[] = { + { TT_NEGREP, zHpux8_Bogus_InlinesBypass0, (regex_t*)NULL }, + { TT_EGREP, zHpux8_Bogus_InlinesSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux8_Bogus_Inlines + */ +static const char* apzHpux8_Bogus_InlinesPatch[] = { sed_cmd_z, + "-e", "s@inline int abs(int [a-z][a-z]*) {.*}@extern \"C\" int abs(int);@", + "-e", "s@inline double abs(double [a-z][a-z]*) {.*}@@", + "-e", "s@inline int sqr(int [a-z][a-z]*) {.*}@@", + "-e", "s@inline double sqr(double [a-z][a-z]*) {.*}@@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Ctype_Macros fix + */ +tSCC zHpux_Ctype_MacrosName[] = + "hpux_ctype_macros"; + +/* + * File name selection pattern + */ +tSCC zHpux_Ctype_MacrosList[] = + "ctype.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux_Ctype_MacrosMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Ctype_MacrosSelect0[] = + "((: |\\()__SB_masks \\? )(__SB_masks\\[__(alnum|c)\\] & _IS)"; + +#define HPUX_CTYPE_MACROS_TEST_CT 1 +static tTestDesc aHpux_Ctype_MacrosTests[] = { + { TT_EGREP, zHpux_Ctype_MacrosSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Ctype_Macros + */ +static const char* apzHpux_Ctype_MacrosPatch[] = { + "format", + "%1(int)%3", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Htonl fix + */ +tSCC zHpux_HtonlName[] = + "hpux_htonl"; + +/* + * File name selection pattern + */ +tSCC zHpux_HtonlList[] = + "netinet/in.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux_HtonlMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_HtonlSelect0[] = + "#ifndef _XOPEN_SOURCE_EXTENDED[ \t]*\n\ +(/\\*\n\ + \\* Macros for number representation conversion\\.\n\ + \\*/\n\ +#ifndef ntohl)"; + +#define HPUX_HTONL_TEST_CT 1 +static tTestDesc aHpux_HtonlTests[] = { + { TT_EGREP, zHpux_HtonlSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Htonl + */ +static const char* apzHpux_HtonlPatch[] = { + "format", + "#if 1\n\ +%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Long_Double fix + */ +tSCC zHpux_Long_DoubleName[] = + "hpux_long_double"; + +/* + * File name selection pattern + */ +tSCC zHpux_Long_DoubleList[] = + "stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Long_DoubleMachs[] = { + "*-*-hpux10*", + "*-*-hpux11.[012]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Long_DoubleSelect0[] = + "extern[ \t]long_double[ \t]strtold"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHpux_Long_DoubleBypass0[] = + "long_double_t"; + +#define HPUX_LONG_DOUBLE_TEST_CT 2 +static tTestDesc aHpux_Long_DoubleTests[] = { + { TT_NEGREP, zHpux_Long_DoubleBypass0, (regex_t*)NULL }, + { TT_EGREP, zHpux_Long_DoubleSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Long_Double + */ +static const char* apzHpux_Long_DoublePatch[] = { sed_cmd_z, + "-e", "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D", + "-e", "s/long_double/long double/g", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Long_Double_2 fix + */ +tSCC zHpux_Long_Double_2Name[] = + "hpux_long_double_2"; + +/* + * File name selection pattern + */ +tSCC zHpux_Long_Double_2List[] = + "stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Long_Double_2Machs[] = { + "hppa*-*-hpux11.3*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Long_Double_2Select0[] = + "#[ \t]*if[ \t]*!defined\\(__ia64\\) \\|\\| defined\\(_PROTOTYPES\\) \\|\\| defined\\(_LONG_DOUBLE_STRUCT\\)"; + +#define HPUX_LONG_DOUBLE_2_TEST_CT 1 +static tTestDesc aHpux_Long_Double_2Tests[] = { + { TT_EGREP, zHpux_Long_Double_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Long_Double_2 + */ +static const char* apzHpux_Long_Double_2Patch[] = { + "format", + "# if !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Systime fix + */ +tSCC zHpux_SystimeName[] = + "hpux_systime"; + +/* + * File name selection pattern + */ +tSCC zHpux_SystimeList[] = + "sys/time.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHpux_SystimeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_SystimeSelect0[] = + "^extern struct sigevent;"; + +#define HPUX_SYSTIME_TEST_CT 1 +static tTestDesc aHpux_SystimeTests[] = { + { TT_EGREP, zHpux_SystimeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Systime + */ +static const char* apzHpux_SystimePatch[] = { + "format", + "struct sigevent;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Spu_Info fix + */ +tSCC zHpux_Spu_InfoName[] = + "hpux_spu_info"; + +/* + * File name selection pattern + */ +tSCC zHpux_Spu_InfoList[] = + "ia64/sys/getppdp.h\0*/sys/getppdp.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Spu_InfoMachs[] = { + "*-hp-hpux*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Spu_InfoSelect0[] = + "^.*extern.*spu_info.*"; + +#define HPUX_SPU_INFO_TEST_CT 1 +static tTestDesc aHpux_Spu_InfoTests[] = { + { TT_EGREP, zHpux_Spu_InfoSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Spu_Info + */ +static const char* apzHpux_Spu_InfoPatch[] = { + "format", + "#ifdef _KERNEL\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Extern_Sendfile fix + */ +tSCC zHpux11_Extern_SendfileName[] = + "hpux11_extern_sendfile"; + +/* + * File name selection pattern + */ +tSCC zHpux11_Extern_SendfileList[] = + "sys/socket.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux11_Extern_SendfileMachs[] = { + "*-hp-hpux11.[12]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_Extern_SendfileSelect0[] = + "^[ \t]*extern sbsize_t sendfile.*\n\ +.*, int\\)\\);\n"; + +#define HPUX11_EXTERN_SENDFILE_TEST_CT 1 +static tTestDesc aHpux11_Extern_SendfileTests[] = { + { TT_EGREP, zHpux11_Extern_SendfileSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Extern_Sendfile + */ +static const char* apzHpux11_Extern_SendfilePatch[] = { + "format", + "#ifndef _APP32_64BIT_OFF_T\n\ +%0#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux11_Extern_Sendpath fix + */ +tSCC zHpux11_Extern_SendpathName[] = + "hpux11_extern_sendpath"; + +/* + * File name selection pattern + */ +tSCC zHpux11_Extern_SendpathList[] = + "sys/socket.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux11_Extern_SendpathMachs[] = { + "*-hp-hpux11.[12]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux11_Extern_SendpathSelect0[] = + "^[ \t]*extern sbsize_t sendpath.*\n\ +.*, int\\)\\);\n"; + +#define HPUX11_EXTERN_SENDPATH_TEST_CT 1 +static tTestDesc aHpux11_Extern_SendpathTests[] = { + { TT_EGREP, zHpux11_Extern_SendpathSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux11_Extern_Sendpath + */ +static const char* apzHpux11_Extern_SendpathPatch[] = { + "format", + "#ifndef _APP32_64BIT_OFF_T\n\ +%0#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Extern_Errno fix + */ +tSCC zHpux_Extern_ErrnoName[] = + "hpux_extern_errno"; + +/* + * File name selection pattern + */ +tSCC zHpux_Extern_ErrnoList[] = + "errno.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Extern_ErrnoMachs[] = { + "*-hp-hpux10.*", + "*-hp-hpux11.[0-2]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Extern_ErrnoSelect0[] = + "^[ \t]*extern int errno;$"; + +#define HPUX_EXTERN_ERRNO_TEST_CT 1 +static tTestDesc aHpux_Extern_ErrnoTests[] = { + { TT_EGREP, zHpux_Extern_ErrnoSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Extern_Errno + */ +static const char* apzHpux_Extern_ErrnoPatch[] = { + "format", + "#ifdef __cplusplus\n\ +extern \"C\" {\n\ +#endif\n\ +%0\n\ +#ifdef __cplusplus\n\ +}\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Pthread_Initializers fix + */ +tSCC zHpux_Pthread_InitializersName[] = + "hpux_pthread_initializers"; + +/* + * File name selection pattern + */ +tSCC zHpux_Pthread_InitializersList[] = + "sys/pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Pthread_InitializersMachs[] = { + "*-hp-hpux11.[0-3]*", + (const char*)NULL }; +#define HPUX_PTHREAD_INITIALIZERS_TEST_CT 0 +#define aHpux_Pthread_InitializersTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Hpux_Pthread_Initializers + */ +static const char* apzHpux_Pthread_InitializersPatch[] = { sed_cmd_z, + "-e", "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@", + "-e", "s@^[ \t]*1,[ \t]*\\\\@\t{ 1, 0 }@", + "-e", "/^[ \t]*0$/d", + "-e", "s@__PTHREAD_MUTEX_VALID, 0@{ __PTHREAD_MUTEX_VALID, 0 }@", + "-e", "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@", + "-e", "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@", + "-e", "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@", + "-e", "s@^[ \t]*0, 0[ \t]*\\\\@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@", + "-e", "s@__PTHREAD_COND_VALID, 0@{ __PTHREAD_COND_VALID, 0 }@", + "-e", "s@__LWP_COND_VALID, 0,[ \t]*\\\\@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@", + "-e", "s@__PTHREAD_RWLOCK_VALID, 0@{ __PTHREAD_RWLOCK_VALID, 0 }@", + "-e", "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@", + "-e", "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \t]*\\\\@\t{ 0, 0, 0, 0, 0 }, { 0, 0}\t\t\t\t\t\\\\@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_C99_Intptr fix + */ +tSCC zHpux_C99_IntptrName[] = + "hpux_c99_intptr"; + +/* + * File name selection pattern + */ +tSCC zHpux_C99_IntptrList[] = + "stdint-hpux11.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_C99_IntptrMachs[] = { + "*-hp-hpux11.3*", + (const char*)NULL }; +#define HPUX_C99_INTPTR_TEST_CT 0 +#define aHpux_C99_IntptrTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Hpux_C99_Intptr + */ +static const char* apzHpux_C99_IntptrPatch[] = { sed_cmd_z, + "-e", "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MAX[ \t]*INT32_MAX[ \t]*$@#define PTRDIFF_MAX (2147483647l)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MIN[ \t]*INT32_MIN[ \t]*$@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MAX[ \t]*INT32_MAX[ \t]*$@#define INTPTR_MAX (2147483647l)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MIN[ \t]*INT32_MIN[ \t]*$@#define INTPTR_MIN (-INTPTR_MAX - 1)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*UINTPTR_MAX[ \t]*UINT32_MAX[ \t]*$@#define UINTPTR_MAX (4294967295ul)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*SIZE_MAX[ \t]*UINT32_MAX[ \t]*$@#define SIZE_MAX (4294967295ul)@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_C99_Inttypes fix + */ +tSCC zHpux_C99_InttypesName[] = + "hpux_c99_inttypes"; + +/* + * File name selection pattern + */ +tSCC zHpux_C99_InttypesList[] = + "inttypes.h\0stdint-hpux11.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_C99_InttypesMachs[] = { + "*-hp-hpux11.[23]*", + (const char*)NULL }; +#define HPUX_C99_INTTYPES_TEST_CT 0 +#define aHpux_C99_InttypesTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Hpux_C99_Inttypes + */ +static const char* apzHpux_C99_InttypesPatch[] = { sed_cmd_z, + "-e", "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*__CONCAT_U__(__c)[ \t]*$@#define UINT8_C(__c) (__c)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*__CONCAT_U__(__c)[ \t]*$@#define UINT16_C(__c) (__c)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*INT32_C(__c)[ \t]*__CONCAT__(__c,l)[ \t]*$@#define INT32_C(__c) (__c)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*UINT32_C(__c)[ \t].*$@#define UINT32_C(__c) __CONCAT__(__c,u)@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_C99_Inttypes2 fix + */ +tSCC zHpux_C99_Inttypes2Name[] = + "hpux_c99_inttypes2"; + +/* + * File name selection pattern + */ +tSCC zHpux_C99_Inttypes2List[] = + "stdint-hpux11.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_C99_Inttypes2Machs[] = { + "*-hp-hpux11.2*", + (const char*)NULL }; +#define HPUX_C99_INTTYPES2_TEST_CT 0 +#define aHpux_C99_Inttypes2Tests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Hpux_C99_Inttypes2 + */ +static const char* apzHpux_C99_Inttypes2Patch[] = { sed_cmd_z, + "-e", "s@^[ \t]*#[ \t]*define[ \t]*INT8_C(__c)[ \t]*((signed char)(__c))[ \t]*$@#define INT8_C(__c) (__c)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*((unsigned char)(__c))[ \t]*$@#define UINT8_C(__c) (__c)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*INT16_C(__c)[ \t]*((short)(__c))[ \t]*$@#define INT16_C(__c) (__c)@", + "-e", "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*((unsigned short)(__c))[ \t]*$@#define UINT16_C(__c) (__c)@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Stdint_Least_Fast fix + */ +tSCC zHpux_Stdint_Least_FastName[] = + "hpux_stdint_least_fast"; + +/* + * File name selection pattern + */ +tSCC zHpux_Stdint_Least_FastList[] = + "stdint-hpux11.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Stdint_Least_FastMachs[] = { + "*-hp-hpux11.2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Stdint_Least_FastSelect0[] = + "^[ \t]*#[ \t]*define[ \t]+UINT_(LEAST|FAST)64_MAX[ \t]+ULLONG_MAX"; + +#define HPUX_STDINT_LEAST_FAST_TEST_CT 1 +static tTestDesc aHpux_Stdint_Least_FastTests[] = { + { TT_EGREP, zHpux_Stdint_Least_FastSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Stdint_Least_Fast + */ +static const char* apzHpux_Stdint_Least_FastPatch[] = { + "format", + "# define\tUINT_%164_MAX\t__UINT64_MAX__", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Inttype_Int8_T fix + */ +tSCC zHpux_Inttype_Int8_TName[] = + "hpux_inttype_int8_t"; + +/* + * File name selection pattern + */ +tSCC zHpux_Inttype_Int8_TList[] = + "sys/_inttypes.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Inttype_Int8_TMachs[] = { + "*-hp-hpux1[01].*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Inttype_Int8_TSelect0[] = + "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*"; + +#define HPUX_INTTYPE_INT8_T_TEST_CT 1 +static tTestDesc aHpux_Inttype_Int8_TTests[] = { + { TT_EGREP, zHpux_Inttype_Int8_TSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Inttype_Int8_T + */ +static const char* apzHpux_Inttype_Int8_TPatch[] = { + "format", + "typedef signed char int%18_t;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Hpux_Imaginary_I fix + */ +tSCC zHpux_Imaginary_IName[] = + "hpux_imaginary_i"; + +/* + * File name selection pattern + */ +tSCC zHpux_Imaginary_IList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzHpux_Imaginary_IMachs[] = { + "ia64-hp-hpux11.*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHpux_Imaginary_ISelect0[] = + "^[ \t]*#[ \t]*define[ \t]*_Complex_I.*"; + +#define HPUX_IMAGINARY_I_TEST_CT 1 +static tTestDesc aHpux_Imaginary_ITests[] = { + { TT_EGREP, zHpux_Imaginary_ISelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Hpux_Imaginary_I + */ +static const char* apzHpux_Imaginary_IPatch[] = { + "format", + "#define _Complex_I (__extension__ 1.0iF)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Huge_Val_Hex fix + */ +tSCC zHuge_Val_HexName[] = + "huge_val_hex"; + +/* + * File name selection pattern + */ +tSCC zHuge_Val_HexList[] = + "bits/huge_val.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHuge_Val_HexMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHuge_Val_HexSelect0[] = + "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHuge_Val_HexBypass0[] = + "__builtin_huge_val"; + +#define HUGE_VAL_HEX_TEST_CT 2 +static tTestDesc aHuge_Val_HexTests[] = { + { TT_NEGREP, zHuge_Val_HexBypass0, (regex_t*)NULL }, + { TT_EGREP, zHuge_Val_HexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Huge_Val_Hex + */ +static const char* apzHuge_Val_HexPatch[] = { + "format", + "#define HUGE_VAL (__builtin_huge_val())\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Huge_Valf_Hex fix + */ +tSCC zHuge_Valf_HexName[] = + "huge_valf_hex"; + +/* + * File name selection pattern + */ +tSCC zHuge_Valf_HexList[] = + "bits/huge_val.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHuge_Valf_HexMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHuge_Valf_HexSelect0[] = + "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHuge_Valf_HexBypass0[] = + "__builtin_huge_valf"; + +#define HUGE_VALF_HEX_TEST_CT 2 +static tTestDesc aHuge_Valf_HexTests[] = { + { TT_NEGREP, zHuge_Valf_HexBypass0, (regex_t*)NULL }, + { TT_EGREP, zHuge_Valf_HexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Huge_Valf_Hex + */ +static const char* apzHuge_Valf_HexPatch[] = { + "format", + "#define HUGE_VALF (__builtin_huge_valf())\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Huge_Vall_Hex fix + */ +tSCC zHuge_Vall_HexName[] = + "huge_vall_hex"; + +/* + * File name selection pattern + */ +tSCC zHuge_Vall_HexList[] = + "bits/huge_val.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzHuge_Vall_HexMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zHuge_Vall_HexSelect0[] = + "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zHuge_Vall_HexBypass0[] = + "__builtin_huge_vall"; + +#define HUGE_VALL_HEX_TEST_CT 2 +static tTestDesc aHuge_Vall_HexTests[] = { + { TT_NEGREP, zHuge_Vall_HexBypass0, (regex_t*)NULL }, + { TT_EGREP, zHuge_Vall_HexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Huge_Vall_Hex + */ +static const char* apzHuge_Vall_HexPatch[] = { + "format", + "#define HUGE_VALL (__builtin_huge_vall())\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Int_Abort_Free_And_Exit fix + */ +tSCC zInt_Abort_Free_And_ExitName[] = + "int_abort_free_and_exit"; + +/* + * File name selection pattern + */ +tSCC zInt_Abort_Free_And_ExitList[] = + "stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzInt_Abort_Free_And_ExitMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zInt_Abort_Free_And_ExitSelect0[] = + "int[ \t]+(abort|free|exit)[ \t]*\\("; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zInt_Abort_Free_And_ExitBypass0[] = + "_CLASSIC_ANSI_TYPES"; + +#define INT_ABORT_FREE_AND_EXIT_TEST_CT 2 +static tTestDesc aInt_Abort_Free_And_ExitTests[] = { + { TT_NEGREP, zInt_Abort_Free_And_ExitBypass0, (regex_t*)NULL }, + { TT_EGREP, zInt_Abort_Free_And_ExitSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Int_Abort_Free_And_Exit + */ +static const char* apzInt_Abort_Free_And_ExitPatch[] = { + "format", + "void\t%1(", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Io_Quotes_Def fix + */ +tSCC zIo_Quotes_DefName[] = + "io_quotes_def"; + +/* + * File name selection pattern + */ +#define zIo_Quotes_DefList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzIo_Quotes_DefMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIo_Quotes_DefSelect0[] = + "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]"; + +#define IO_QUOTES_DEF_TEST_CT 1 +static tTestDesc aIo_Quotes_DefTests[] = { + { TT_EGREP, zIo_Quotes_DefSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Io_Quotes_Def + */ +static const char* apzIo_Quotes_DefPatch[] = { + "char_macro_def", + "IO", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Io_Quotes_Use fix + */ +tSCC zIo_Quotes_UseName[] = + "io_quotes_use"; + +/* + * File name selection pattern + */ +#define zIo_Quotes_UseList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzIo_Quotes_UseMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIo_Quotes_UseSelect0[] = + "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*\\( *[^,']"; + +#define IO_QUOTES_USE_TEST_CT 1 +static tTestDesc aIo_Quotes_UseTests[] = { + { TT_EGREP, zIo_Quotes_UseSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Io_Quotes_Use + */ +static const char* apzIo_Quotes_UsePatch[] = { + "char_macro_use", + "IO", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Ip_Missing_Semi fix + */ +tSCC zIp_Missing_SemiName[] = + "ip_missing_semi"; + +/* + * File name selection pattern + */ +tSCC zIp_Missing_SemiList[] = + "netinet/ip.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzIp_Missing_SemiMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIp_Missing_SemiSelect0[] = + "}$"; + +#define IP_MISSING_SEMI_TEST_CT 1 +static tTestDesc aIp_Missing_SemiTests[] = { + { TT_EGREP, zIp_Missing_SemiSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Ip_Missing_Semi + */ +static const char* apzIp_Missing_SemiPatch[] = { sed_cmd_z, + "-e", "/^struct/,/^};/s/}$/};/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix___Restrict fix + */ +tSCC zIrix___RestrictName[] = + "irix___restrict"; + +/* + * File name selection pattern + */ +tSCC zIrix___RestrictList[] = + "internal/sgimacros.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix___RestrictMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix___RestrictSelect0[] = + "(#ifdef __c99\n\ +)(#[ \t]*define __restrict restrict)"; + +#define IRIX___RESTRICT_TEST_CT 1 +static tTestDesc aIrix___RestrictTests[] = { + { TT_EGREP, zIrix___RestrictSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix___Restrict + */ +static const char* apzIrix___RestrictPatch[] = { + "format", + "%1# ifndef __cplusplus\n\ +%2\n\ +# endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix___Generic1 fix + */ +tSCC zIrix___Generic1Name[] = + "irix___generic1"; + +/* + * File name selection pattern + */ +tSCC zIrix___Generic1List[] = + "internal/math_core.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix___Generic1Machs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix___Generic1Select0[] = + "#define ([a-z]+)\\(x\\) *__generic.*"; + +#define IRIX___GENERIC1_TEST_CT 1 +static tTestDesc aIrix___Generic1Tests[] = { + { TT_EGREP, zIrix___Generic1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix___Generic1 + */ +static const char* apzIrix___Generic1Patch[] = { + "format", + "extern int %1(double);\n\ +extern int %1f(float);\n\ +extern int %1l(long double);\n\ +#define %1(x) (sizeof(x) == sizeof(double) ? _%1(x) \\\n\ + : sizeof(x) == sizeof(float) ? _%1f(x) \\\n\ + : _%1l(x))\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix___Generic2 fix + */ +tSCC zIrix___Generic2Name[] = + "irix___generic2"; + +/* + * File name selection pattern + */ +tSCC zIrix___Generic2List[] = + "internal/math_core.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix___Generic2Machs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix___Generic2Select0[] = + "#define ([a-z]+)\\(x,y\\) *__generic.*"; + +#define IRIX___GENERIC2_TEST_CT 1 +static tTestDesc aIrix___Generic2Tests[] = { + { TT_EGREP, zIrix___Generic2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix___Generic2 + */ +static const char* apzIrix___Generic2Patch[] = { + "format", + "#define %1(x,y) \\\n\ + ((sizeof(x)<=4 && sizeof(y)<=4) ? _%1f(x,y) \\\n\ + : (sizeof(x)<=8 && sizeof(y)<=8) ? _%1(x,y) \\\n\ + : _%1l(x,y))\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Asm_Apostrophe fix + */ +tSCC zIrix_Asm_ApostropheName[] = + "irix_asm_apostrophe"; + +/* + * File name selection pattern + */ +tSCC zIrix_Asm_ApostropheList[] = + "sys/asm.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzIrix_Asm_ApostropheMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_Asm_ApostropheSelect0[] = + "^[ \t]*#.*[Ww]e're"; + +#define IRIX_ASM_APOSTROPHE_TEST_CT 1 +static tTestDesc aIrix_Asm_ApostropheTests[] = { + { TT_EGREP, zIrix_Asm_ApostropheSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Asm_Apostrophe + */ +static const char* apzIrix_Asm_ApostrophePatch[] = { + "format", + "%1 are", + "^([ \t]*#.*[Ww]e)'re", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Complex fix + */ +tSCC zIrix_ComplexName[] = + "irix_complex"; + +/* + * File name selection pattern + */ +tSCC zIrix_ComplexList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_ComplexMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_ComplexSelect0[] = + "#define[ \t]_Complex_I[ \t]\\(\\(float[ \t]_Complex\\)[ \t]\\(__I__\\)\\)"; + +#define IRIX_COMPLEX_TEST_CT 1 +static tTestDesc aIrix_ComplexTests[] = { + { TT_EGREP, zIrix_ComplexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Complex + */ +static const char* apzIrix_ComplexPatch[] = { sed_cmd_z, + "-e", "s/#define[ \t]_Complex_I[ \t]((float[ \t]_Complex)[ \t](__I__))/#define _Complex_I (__extension__ 1.0iF)/", + "-e", "/#define[ \t]imaginary[ \t]_Imaginary/d", + "-e", "/#define[ \t]_Imaginary_I/d", + "-e", "s/#define[ \t]I[ \t]_Imaginary_I/#define I _Complex_I/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Limits_Const fix + */ +tSCC zIrix_Limits_ConstName[] = + "irix_limits_const"; + +/* + * File name selection pattern + */ +tSCC zIrix_Limits_ConstList[] = + "fixinc-test-limits.h\0limits.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzIrix_Limits_ConstMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_Limits_ConstSelect0[] = + "^extern const "; + +#define IRIX_LIMITS_CONST_TEST_CT 1 +static tTestDesc aIrix_Limits_ConstTests[] = { + { TT_EGREP, zIrix_Limits_ConstSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Limits_Const + */ +static const char* apzIrix_Limits_ConstPatch[] = { + "format", + "extern __const ", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Pthread_Init fix + */ +tSCC zIrix_Pthread_InitName[] = + "irix_pthread_init"; + +/* + * File name selection pattern + */ +tSCC zIrix_Pthread_InitList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_Pthread_InitMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_Pthread_InitSelect0[] = + "^(#define[ \t]+PTHREAD_.*_INITIALIZER[ \t]+)(\\{ 0 \\})"; + +#define IRIX_PTHREAD_INIT_TEST_CT 1 +static tTestDesc aIrix_Pthread_InitTests[] = { + { TT_EGREP, zIrix_Pthread_InitSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Pthread_Init + */ +static const char* apzIrix_Pthread_InitPatch[] = { + "format", + "%1{ %2 }", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Socklen_T fix + */ +tSCC zIrix_Socklen_TName[] = + "irix_socklen_t"; + +/* + * File name selection pattern + */ +tSCC zIrix_Socklen_TList[] = + "sys/socket.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_Socklen_TMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_Socklen_TSelect0[] = + "(#define _SOCKLEN_T\n\ +)(typedef u_int32_t socklen_t;)"; + +#define IRIX_SOCKLEN_T_TEST_CT 1 +static tTestDesc aIrix_Socklen_TTests[] = { + { TT_EGREP, zIrix_Socklen_TSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Socklen_T + */ +static const char* apzIrix_Socklen_TPatch[] = { + "format", + "%1#if _NO_XOPEN4 && _NO_XOPEN5\n\ +typedef int socklen_t;\n\ +#else\n\ +%2\n\ +#endif /* _NO_XOPEN4 && _NO_XOPEN5 */", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Stdint_C99_Mode fix + */ +tSCC zIrix_Stdint_C99_ModeName[] = + "irix_stdint_c99_mode"; + +/* + * File name selection pattern + */ +tSCC zIrix_Stdint_C99_ModeList[] = + "stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_Stdint_C99_ModeMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_Stdint_C99_ModeSelect0[] = + "(#ifndef __c99\n\ +)(#error This header file is to be used only for c99 mode compilations)"; + +#define IRIX_STDINT_C99_MODE_TEST_CT 1 +static tTestDesc aIrix_Stdint_C99_ModeTests[] = { + { TT_EGREP, zIrix_Stdint_C99_ModeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Stdint_C99_Mode + */ +static const char* apzIrix_Stdint_C99_ModePatch[] = { + "format", + "#if 0\n\ +%2", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Stdint_C99_Types fix + */ +tSCC zIrix_Stdint_C99_TypesName[] = + "irix_stdint_c99_types"; + +/* + * File name selection pattern + */ +tSCC zIrix_Stdint_C99_TypesList[] = + "stdint-irix65.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_Stdint_C99_TypesMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; +#define IRIX_STDINT_C99_TYPES_TEST_CT 0 +#define aIrix_Stdint_C99_TypesTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Irix_Stdint_C99_Types + */ +static const char* apzIrix_Stdint_C99_TypesPatch[] = { sed_cmd_z, + "-e", "s@^#define INT64_MIN.*(-0x7fffffffffffffff - 1)$@#define INT64_MIN (-0x7fffffffffffffffLL - 1)@", + "-e", "s@^#define INT64_MAX.*0x7fffffffffffffff$@#define INT64_MAX 0x7fffffffffffffffLL@", + "-e", "s@^#define UINT32_MAX.*0xffffffff$@#define UINT32_MAX 0xffffffffU@", + "-e", "s@^#define UINT64_MAX.*0xffffffffffffffff$@#define UINT64_MAX 0xffffffffffffffffULL@", + "-e", "s@^#define INTPTR_MIN.*INT32_MIN$@#define INTPTR_MIN (-0x7fffffffL - 1)@", + "-e", "s@^#define INTPTR_MAX.*INT32_MAX$@#define INTPTR_MAX 0x7fffffffL@", + "-e", "s@^#define UINTPTR_MAX.*UINT32_MAX$@#define UINTPTR_MAX 0xffffffffUL@", + "-e", "s@^#define INTPTR_MIN.*INT64_MIN@#define INTPTR_MIN (-0x7fffffffffffffffL - 1)@", + "-e", "s@^#define INTPTR_MAX.*INT64_MAX$@#define INTPTR_MAX 0x7fffffffffffffffL@", + "-e", "s@^#define UINTPTR_MAX.*UINT64_MAX$@#define UINTPTR_MAX 0xffffffffffffffffUL@", + "-e", "s@^#define PTRDIFF_MIN.*INT64_MIN$@#define PTRDIFF_MIN (-0x7fffffffffffffffL - 1)@", + "-e", "s@^#define PTRDIFF_MAX.*INT64_MAX$@#define PTRDIFF_MAX 0x7fffffffffffffffL@", + "-e", "s@^#define SIZE_MAX.*UINT64_MAX$@#define SIZE_MAX 0xffffffffffffffffUL@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Stdint_C99_Macros fix + */ +tSCC zIrix_Stdint_C99_MacrosName[] = + "irix_stdint_c99_macros"; + +/* + * File name selection pattern + */ +tSCC zIrix_Stdint_C99_MacrosList[] = + "stdint-irix65.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_Stdint_C99_MacrosMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; +#define IRIX_STDINT_C99_MACROS_TEST_CT 0 +#define aIrix_Stdint_C99_MacrosTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Irix_Stdint_C99_Macros + */ +static const char* apzIrix_Stdint_C99_MacrosPatch[] = { sed_cmd_z, + "-e", "s@^#define INT8_C(x).*int.*_t.*$@#define INT8_C(x) (x)@", + "-e", "s@^#define INT16_C(x).*int.*_t.*$@#define INT16_C(x) (x)@", + "-e", "s@^#define INT32_C(x).*int.*_t.*$@#define INT32_C(x) (x)@", + "-e", "s@^#define INT64_C(x).*int.*_t.*$@#define INT64_C(x) (x ## LL)@", + "-e", "s@^#define UINT8_C(x).*int.*_t.*$@#define UINT8_C(x) (x)@", + "-e", "s@^#define UINT16_C(x).*int.*_t.*$@#define UINT16_C(x) (x)@", + "-e", "s@^#define UINT32_C(x).*int.*_t.*$@#define UINT32_C(x) (x ## U)@", + "-e", "s@^#define UINT64_C(x).*int.*_t.*$@#define UINT64_C(x) (x ## ULL)@", + "-e", "s@^#define INTMAX_C(x).*int.*_t.*$@#define INTMAX_C(x) (x ## LL)@", + "-e", "s@^#define UINTMAX_C(x).*int.*_t.*$@#define UINTMAX_C(x) (x ## ULL)@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Stdio_Va_List fix + */ +tSCC zIrix_Stdio_Va_ListName[] = + "irix_stdio_va_list"; + +/* + * File name selection pattern + */ +tSCC zIrix_Stdio_Va_ListList[] = + "stdio.h\0internal/stdio_core.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzIrix_Stdio_Va_ListMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_Stdio_Va_ListSelect0[] = + "/\\* va_list \\*/ char \\*"; + +#define IRIX_STDIO_VA_LIST_TEST_CT 1 +static tTestDesc aIrix_Stdio_Va_ListTests[] = { + { TT_EGREP, zIrix_Stdio_Va_ListSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Stdio_Va_List + */ +static const char* apzIrix_Stdio_Va_ListPatch[] = { + "format", + "__gnuc_va_list", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Irix_Wcsftime fix + */ +tSCC zIrix_WcsftimeName[] = + "irix_wcsftime"; + +/* + * File name selection pattern + */ +tSCC zIrix_WcsftimeList[] = + "internal/wchar_core.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzIrix_WcsftimeMachs[] = { + "mips-sgi-irix6.5", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zIrix_WcsftimeSelect0[] = + "#if _NO_XOPEN5\n\ +(extern size_t[ \t]+wcsftime.*const char *.*)"; + +#define IRIX_WCSFTIME_TEST_CT 1 +static tTestDesc aIrix_WcsftimeTests[] = { + { TT_EGREP, zIrix_WcsftimeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Irix_Wcsftime + */ +static const char* apzIrix_WcsftimePatch[] = { + "format", + "#if _NO_XOPEN5 && !defined(__c99)\n\ +%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Kandr_Concat fix + */ +tSCC zKandr_ConcatName[] = + "kandr_concat"; + +/* + * File name selection pattern + */ +tSCC zKandr_ConcatList[] = + "sparc/asm_linkage.h\0sun*/asm_linkage.h\0arm/as_support.h\0arm/mc_type.h\0arm/xcb.h\0dev/chardefmac.h\0dev/ps_irq.h\0dev/screen.h\0dev/scsi.h\0sys/tty.h\0Xm.acorn/XmP.h\0bsd43/bsd43_.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzKandr_ConcatMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zKandr_ConcatSelect0[] = + "/\\*\\*/"; + +#define KANDR_CONCAT_TEST_CT 1 +static tTestDesc aKandr_ConcatTests[] = { + { TT_EGREP, zKandr_ConcatSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Kandr_Concat + */ +static const char* apzKandr_ConcatPatch[] = { + "format", + "##", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Linux_Ia64_Ucontext fix + */ +tSCC zLinux_Ia64_UcontextName[] = + "linux_ia64_ucontext"; + +/* + * File name selection pattern + */ +tSCC zLinux_Ia64_UcontextList[] = + "sys/ucontext.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzLinux_Ia64_UcontextMachs[] = { + "ia64-*-linux*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zLinux_Ia64_UcontextSelect0[] = + "\\(\\(\\(char \\*\\) &\\(\\(struct sigcontext \\*\\) 0\\)->sc_gr\\[0\\]\\) - \\(char \\*\\) 0\\)"; + +#define LINUX_IA64_UCONTEXT_TEST_CT 1 +static tTestDesc aLinux_Ia64_UcontextTests[] = { + { TT_EGREP, zLinux_Ia64_UcontextSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Linux_Ia64_Ucontext + */ +static const char* apzLinux_Ia64_UcontextPatch[] = { + "format", + "__builtin_offsetof (struct sigcontext, sc_gr[0])", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Lynxos_No_Warning_In_Sys_Time_H fix + */ +tSCC zLynxos_No_Warning_In_Sys_Time_HName[] = + "lynxos_no_warning_in_sys_time_h"; + +/* + * File name selection pattern + */ +tSCC zLynxos_No_Warning_In_Sys_Time_HList[] = + "sys/time.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzLynxos_No_Warning_In_Sys_Time_HMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zLynxos_No_Warning_In_Sys_Time_HSelect0[] = + "#warning[ \t]+Using <time.h> instead of <sys/time.h>"; + +#define LYNXOS_NO_WARNING_IN_SYS_TIME_H_TEST_CT 1 +static tTestDesc aLynxos_No_Warning_In_Sys_Time_HTests[] = { + { TT_EGREP, zLynxos_No_Warning_In_Sys_Time_HSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Lynxos_No_Warning_In_Sys_Time_H + */ +static const char* apzLynxos_No_Warning_In_Sys_Time_HPatch[] = { + "format", + "", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Lynxos_Missing_Putenv fix + */ +tSCC zLynxos_Missing_PutenvName[] = + "lynxos_missing_putenv"; + +/* + * File name selection pattern + */ +tSCC zLynxos_Missing_PutenvList[] = + "stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzLynxos_Missing_PutenvMachs[] = { + "*-*-lynxos*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zLynxos_Missing_PutenvSelect0[] = + "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zLynxos_Missing_PutenvBypass0[] = + "putenv[ \\t]*\\("; + +#define LYNXOS_MISSING_PUTENV_TEST_CT 2 +static tTestDesc aLynxos_Missing_PutenvTests[] = { + { TT_NEGREP, zLynxos_Missing_PutenvBypass0, (regex_t*)NULL }, + { TT_EGREP, zLynxos_Missing_PutenvSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Lynxos_Missing_Putenv + */ +static const char* apzLynxos_Missing_PutenvPatch[] = { + "format", + "%0\n\ +extern int putenv\t\t\t\t_AP((char *));", + "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Machine_Ansi_H_Va_List fix + */ +tSCC zMachine_Ansi_H_Va_ListName[] = + "machine_ansi_h_va_list"; + +/* + * File name selection pattern + */ +#define zMachine_Ansi_H_Va_ListList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzMachine_Ansi_H_Va_ListMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zMachine_Ansi_H_Va_ListSelect0[] = + "define[ \t]+_BSD_VA_LIST_[ \t]"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zMachine_Ansi_H_Va_ListBypass0[] = + "__builtin_va_list"; + +#define MACHINE_ANSI_H_VA_LIST_TEST_CT 2 +static tTestDesc aMachine_Ansi_H_Va_ListTests[] = { + { TT_NEGREP, zMachine_Ansi_H_Va_ListBypass0, (regex_t*)NULL }, + { TT_EGREP, zMachine_Ansi_H_Va_ListSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Machine_Ansi_H_Va_List + */ +static const char* apzMachine_Ansi_H_Va_ListPatch[] = { + "format", + "%1__builtin_va_list", + "(define[ \t]+_BSD_VA_LIST_[ \t]+).*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Machine_Name fix + */ +tSCC zMachine_NameName[] = + "machine_name"; + +/* + * File name selection pattern + */ +#define zMachine_NameList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzMachine_NameMachs (const char**)NULL + +/* + * perform the C function call test + */ +tSCC zMachine_NameFTst0[] = "machine_name"; + +#define MACHINE_NAME_TEST_CT 1 +static tTestDesc aMachine_NameTests[] = { + { TT_FUNCTION, zMachine_NameFTst0, 0 /* unused */ }, }; + +/* + * Fix Command Arguments for Machine_Name + */ +static const char* apzMachine_NamePatch[] = { + "machine_name", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Math_Exception fix + */ +tSCC zMath_ExceptionName[] = + "math_exception"; + +/* + * File name selection pattern + */ +tSCC zMath_ExceptionList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzMath_ExceptionMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zMath_ExceptionSelect0[] = + "struct exception"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zMath_ExceptionBypass0[] = + "We have a problem when using C\\+\\+|for C\\+\\+, _[a-z0-9A-Z_]+_exception; for C, exception"; + +#define MATH_EXCEPTION_TEST_CT 2 +static tTestDesc aMath_ExceptionTests[] = { + { TT_NEGREP, zMath_ExceptionBypass0, (regex_t*)NULL }, + { TT_EGREP, zMath_ExceptionSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Math_Exception + */ +static const char* apzMath_ExceptionPatch[] = { + "wrap", + "#ifdef __cplusplus\n\ +#define exception __math_exception\n\ +#endif\n", + "#ifdef __cplusplus\n\ +#undef exception\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Math_Huge_Val_From_Dbl_Max fix + */ +tSCC zMath_Huge_Val_From_Dbl_MaxName[] = + "math_huge_val_from_dbl_max"; + +/* + * File name selection pattern + */ +tSCC zMath_Huge_Val_From_Dbl_MaxList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzMath_Huge_Val_From_Dbl_MaxMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zMath_Huge_Val_From_Dbl_MaxSelect0[] = + "define[ \t]+HUGE_VAL[ \t]+DBL_MAX"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zMath_Huge_Val_From_Dbl_MaxBypass0[] = + "define[ \t]+DBL_MAX"; + +#define MATH_HUGE_VAL_FROM_DBL_MAX_TEST_CT 2 +static tTestDesc aMath_Huge_Val_From_Dbl_MaxTests[] = { + { TT_NEGREP, zMath_Huge_Val_From_Dbl_MaxBypass0, (regex_t*)NULL }, + { TT_EGREP, zMath_Huge_Val_From_Dbl_MaxSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Math_Huge_Val_From_Dbl_Max + */ +static const char* apzMath_Huge_Val_From_Dbl_MaxPatch[] = { "sh", "-c", + "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h | sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n\ +\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n\ +\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/s@DBL_MAX@'\"$dbl_max_def@\"\n\ +\telse cat\n\ +\tfi", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Nested_Auth_Des fix + */ +tSCC zNested_Auth_DesName[] = + "nested_auth_des"; + +/* + * File name selection pattern + */ +tSCC zNested_Auth_DesList[] = + "rpc/rpc.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNested_Auth_DesMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNested_Auth_DesSelect0[] = + "(/\\*.*rpc/auth_des\\.h>.*)/\\*"; + +#define NESTED_AUTH_DES_TEST_CT 1 +static tTestDesc aNested_Auth_DesTests[] = { + { TT_EGREP, zNested_Auth_DesSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Nested_Auth_Des + */ +static const char* apzNested_Auth_DesPatch[] = { + "format", + "%1*/ /*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Netbsd_C99_Inline_1 fix + */ +tSCC zNetbsd_C99_Inline_1Name[] = + "netbsd_c99_inline_1"; + +/* + * File name selection pattern + */ +tSCC zNetbsd_C99_Inline_1List[] = + "signal.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzNetbsd_C99_Inline_1Machs[] = { + "*-*-netbsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNetbsd_C99_Inline_1Select0[] = + "extern __inline int"; + +#define NETBSD_C99_INLINE_1_TEST_CT 1 +static tTestDesc aNetbsd_C99_Inline_1Tests[] = { + { TT_EGREP, zNetbsd_C99_Inline_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Netbsd_C99_Inline_1 + */ +static const char* apzNetbsd_C99_Inline_1Patch[] = { + "format", + "extern\n\ +#ifdef __GNUC_STDC_INLINE__\n\ +__attribute__((__gnu_inline__))\n\ +#endif\n\ +__inline int", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Netbsd_C99_Inline_2 fix + */ +tSCC zNetbsd_C99_Inline_2Name[] = + "netbsd_c99_inline_2"; + +/* + * File name selection pattern + */ +tSCC zNetbsd_C99_Inline_2List[] = + "signal.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzNetbsd_C99_Inline_2Machs[] = { + "*-*-netbsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNetbsd_C99_Inline_2Select0[] = + "#define _SIGINLINE extern __inline"; + +#define NETBSD_C99_INLINE_2_TEST_CT 1 +static tTestDesc aNetbsd_C99_Inline_2Tests[] = { + { TT_EGREP, zNetbsd_C99_Inline_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Netbsd_C99_Inline_2 + */ +static const char* apzNetbsd_C99_Inline_2Patch[] = { + "format", + "#ifdef __GNUC_STDC_INLINE__\n\ +#define _SIGINLINE extern __attribute__((__gnu_inline__)) __inline\n\ +#else\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Netbsd_Extra_Semicolon fix + */ +tSCC zNetbsd_Extra_SemicolonName[] = + "netbsd_extra_semicolon"; + +/* + * File name selection pattern + */ +tSCC zNetbsd_Extra_SemicolonList[] = + "sys/cdefs.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzNetbsd_Extra_SemicolonMachs[] = { + "*-*-netbsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNetbsd_Extra_SemicolonSelect0[] = + "#define[ \t]*__END_DECLS[ \t]*};"; + +#define NETBSD_EXTRA_SEMICOLON_TEST_CT 1 +static tTestDesc aNetbsd_Extra_SemicolonTests[] = { + { TT_EGREP, zNetbsd_Extra_SemicolonSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Netbsd_Extra_Semicolon + */ +static const char* apzNetbsd_Extra_SemicolonPatch[] = { + "format", + "#define __END_DECLS }", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Newlib_Stdint_1 fix + */ +tSCC zNewlib_Stdint_1Name[] = + "newlib_stdint_1"; + +/* + * File name selection pattern + */ +tSCC zNewlib_Stdint_1List[] = + "stdint-newlib.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNewlib_Stdint_1Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNewlib_Stdint_1Select0[] = + "@todo - Add support for wint_t types"; + +#define NEWLIB_STDINT_1_TEST_CT 1 +static tTestDesc aNewlib_Stdint_1Tests[] = { + { TT_EGREP, zNewlib_Stdint_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Newlib_Stdint_1 + */ +static const char* apzNewlib_Stdint_1Patch[] = { sed_cmd_z, + "-e", "s@#define INT32_MIN.*@#define INT32_MIN (-INT32_MAX - 1)@", + "-e", "s@#define INT32_MAX.*@#define INT32_MAX __INT32_MAX__@", + "-e", "s@#define UINT32_MAX.*@#define UINT32_MAX __UINT32_MAX__@", + "-e", "s@#define INT_LEAST32_MIN.*@#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)@", + "-e", "s@#define INT_LEAST32_MAX.*@#define INT_LEAST32_MAX __INT_LEAST32_MAX__@", + "-e", "s@#define UINT_LEAST32_MAX.*@#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__@", + "-e", "s@#define INT_FAST\\([0-9]*\\)_MIN.*@#define INT_FAST\\1_MIN (-INT_FAST\\1_MAX - 1)@", + "-e", "s@#define INT_FAST\\([0-9]*\\)_MAX.*@#define INT_FAST\\1_MAX __INT_FAST\\1_MAX__@", + "-e", "s@#define UINT_FAST\\([0-9]*\\)_MAX.*@#define UINT_FAST\\1_MAX __UINT_FAST\\1_MAX__@", + "-e", "s@#define SIZE_MAX.*@#define SIZE_MAX __SIZE_MAX__@", + "-e", "s@#define PTRDIFF_MIN.*@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@", + "-e", "s@#define PTRDIFF_MAX.*@#define PTRDIFF_MAX __PTRDIFF_MAX__@", + "-e", "s@#define UINT8_C.*@#define UINT8_C(c) __UINT8_C(c)@", + "-e", "s@#define UINT16_C.*@#define UINT16_C(c) __UINT16_C(c)@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Newlib_Stdint_2 fix + */ +tSCC zNewlib_Stdint_2Name[] = + "newlib_stdint_2"; + +/* + * File name selection pattern + */ +tSCC zNewlib_Stdint_2List[] = + "stdint-newlib.h\0stdint.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNewlib_Stdint_2Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNewlib_Stdint_2Select0[] = + "@todo - Add support for wint_t types"; + +#define NEWLIB_STDINT_2_TEST_CT 1 +static tTestDesc aNewlib_Stdint_2Tests[] = { + { TT_EGREP, zNewlib_Stdint_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Newlib_Stdint_2 + */ +static const char* apzNewlib_Stdint_2Patch[] = { + "format", + "#define INTMAX_MAX __INTMAX_MAX__\n\ +#define INTMAX_MIN (-INTMAX_MAX - 1)\n\ +#define UINTMAX_MAX __UINTMAX_MAX__\n\ +#define WCHAR_MAX __WCHAR_MAX__\n\ +#define WCHAR_MIN __WCHAR_MIN__\n\ +#define WINT_MAX __WINT_MAX__\n\ +#define WINT_MIN __WINT_MIN__\n\n\ +%0", + "/\\*\\* Macros for minimum-width integer constant expressions \\*/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Next_Math_Prefix fix + */ +tSCC zNext_Math_PrefixName[] = + "next_math_prefix"; + +/* + * File name selection pattern + */ +tSCC zNext_Math_PrefixList[] = + "ansi/math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNext_Math_PrefixMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNext_Math_PrefixSelect0[] = + "^extern[ \t]+double[ \t]+__const__[ \t]"; + +#define NEXT_MATH_PREFIX_TEST_CT 1 +static tTestDesc aNext_Math_PrefixTests[] = { + { TT_EGREP, zNext_Math_PrefixSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Next_Math_Prefix + */ +static const char* apzNext_Math_PrefixPatch[] = { + "format", + "extern double %1(", + "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Next_Template fix + */ +tSCC zNext_TemplateName[] = + "next_template"; + +/* + * File name selection pattern + */ +tSCC zNext_TemplateList[] = + "bsd/libc.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNext_TemplateMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNext_TemplateSelect0[] = + "[ \t]template\\)"; + +#define NEXT_TEMPLATE_TEST_CT 1 +static tTestDesc aNext_TemplateTests[] = { + { TT_EGREP, zNext_TemplateSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Next_Template + */ +static const char* apzNext_TemplatePatch[] = { + "format", + "(%1)", + "\\(([^)]*)[ \t]template\\)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Next_Volitile fix + */ +tSCC zNext_VolitileName[] = + "next_volitile"; + +/* + * File name selection pattern + */ +tSCC zNext_VolitileList[] = + "ansi/stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNext_VolitileMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNext_VolitileSelect0[] = + "^extern[ \t]+volatile[ \t]+void[ \t]"; + +#define NEXT_VOLITILE_TEST_CT 1 +static tTestDesc aNext_VolitileTests[] = { + { TT_EGREP, zNext_VolitileSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Next_Volitile + */ +static const char* apzNext_VolitilePatch[] = { + "format", + "extern void %1(", + "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Next_Wait_Union fix + */ +tSCC zNext_Wait_UnionName[] = + "next_wait_union"; + +/* + * File name selection pattern + */ +tSCC zNext_Wait_UnionList[] = + "sys/wait.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNext_Wait_UnionMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNext_Wait_UnionSelect0[] = + "wait\\(union wait"; + +#define NEXT_WAIT_UNION_TEST_CT 1 +static tTestDesc aNext_Wait_UnionTests[] = { + { TT_EGREP, zNext_Wait_UnionSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Next_Wait_Union + */ +static const char* apzNext_Wait_UnionPatch[] = { + "format", + "wait(void", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Nodeent_Syntax fix + */ +tSCC zNodeent_SyntaxName[] = + "nodeent_syntax"; + +/* + * File name selection pattern + */ +tSCC zNodeent_SyntaxList[] = + "netdnet/dnetdb.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzNodeent_SyntaxMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zNodeent_SyntaxSelect0[] = + "char[ \t]*\\*na_addr[ \t]*$"; + +#define NODEENT_SYNTAX_TEST_CT 1 +static tTestDesc aNodeent_SyntaxTests[] = { + { TT_EGREP, zNodeent_SyntaxSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Nodeent_Syntax + */ +static const char* apzNodeent_SyntaxPatch[] = { + "format", + "%0;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Openbsd_Null_Definition fix + */ +tSCC zOpenbsd_Null_DefinitionName[] = + "openbsd_null_definition"; + +/* + * File name selection pattern + */ +tSCC zOpenbsd_Null_DefinitionList[] = + "locale.h\0stddef.h\0stdio.h\0string.h\0time.h\0unistd.h\0wchar.h\0sys/param.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzOpenbsd_Null_DefinitionMachs[] = { + "*-*-openbsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zOpenbsd_Null_DefinitionSelect0[] = + "__GNUG__"; + +#define OPENBSD_NULL_DEFINITION_TEST_CT 1 +static tTestDesc aOpenbsd_Null_DefinitionTests[] = { + { TT_EGREP, zOpenbsd_Null_DefinitionSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Openbsd_Null_Definition + */ +static const char* apzOpenbsd_Null_DefinitionPatch[] = { + "format", + "#ifndef NULL\n\ +#ifdef __cplusplus\n\ +#ifdef __GNUG__\n\ +#define NULL\t__null\n\ +#else\t /* ! __GNUG__ */\n\ +#define NULL\t0L\n\ +#endif\t /* __GNUG__ */\n\ +#else\t /* ! __cplusplus */\n\ +#define NULL\t((void *)0)\n\ +#endif\t /* __cplusplus */\n\ +#endif\t /* !NULL */", + "^#ifndef[ \t]*NULL\n\ +^#ifdef[ \t]*__GNUG__\n\ +^#define[ \t]*NULL[ \t]*__null\n\ +^#else\n\ +^#define[ \t]*NULL[ \t]*0L\n\ +^#endif\n\ +^#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Obstack_Lvalue_Cast fix + */ +tSCC zObstack_Lvalue_CastName[] = + "obstack_lvalue_cast"; + +/* + * File name selection pattern + */ +tSCC zObstack_Lvalue_CastList[] = + "obstack.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzObstack_Lvalue_CastMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zObstack_Lvalue_CastSelect0[] = + "\\*\\(\\(([^()]*)\\*\\)(.*)\\)\\+\\+ = \\(([^()]*)\\)"; + +#define OBSTACK_LVALUE_CAST_TEST_CT 1 +static tTestDesc aObstack_Lvalue_CastTests[] = { + { TT_EGREP, zObstack_Lvalue_CastSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Obstack_Lvalue_Cast + */ +static const char* apzObstack_Lvalue_CastPatch[] = { + "format", + "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Openbsd_Va_Start fix + */ +tSCC zOpenbsd_Va_StartName[] = + "openbsd_va_start"; + +/* + * File name selection pattern + */ +tSCC zOpenbsd_Va_StartList[] = + "stdarg.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzOpenbsd_Va_StartMachs[] = { + "*-*-openbsd*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zOpenbsd_Va_StartSelect0[] = + "__builtin_stdarg_start"; + +#define OPENBSD_VA_START_TEST_CT 1 +static tTestDesc aOpenbsd_Va_StartTests[] = { + { TT_EGREP, zOpenbsd_Va_StartSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Openbsd_Va_Start + */ +static const char* apzOpenbsd_Va_StartPatch[] = { + "format", + "__builtin_va_start", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Osf_Namespace_A fix + */ +tSCC zOsf_Namespace_AName[] = + "osf_namespace_a"; + +/* + * File name selection pattern + */ +tSCC zOsf_Namespace_AList[] = + "reg_types.h\0sys/lc_core.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzOsf_Namespace_AMachs (const char**)NULL + +/* + * perform the 'test' shell command - do fix on success + */ +tSCC zOsf_Namespace_ATest0[] = + " -r reg_types.h"; +tSCC zOsf_Namespace_ATest1[] = + " -r sys/lc_core.h"; +tSCC zOsf_Namespace_ATest2[] = + " -n \"`grep '} regex_t;' reg_types.h`\""; +tSCC zOsf_Namespace_ATest3[] = + " -z \"`grep __regex_t regex.h`\""; + +#define OSF_NAMESPACE_A_TEST_CT 4 +static tTestDesc aOsf_Namespace_ATests[] = { + { TT_TEST, zOsf_Namespace_ATest0, 0 /* unused */ }, + { TT_TEST, zOsf_Namespace_ATest1, 0 /* unused */ }, + { TT_TEST, zOsf_Namespace_ATest2, 0 /* unused */ }, + { TT_TEST, zOsf_Namespace_ATest3, 0 /* unused */ }, }; + +/* + * Fix Command Arguments for Osf_Namespace_A + */ +static const char* apzOsf_Namespace_APatch[] = { + "format", + "__%0", + "reg(ex|off|match)_t", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Osf_Namespace_C fix + */ +tSCC zOsf_Namespace_CName[] = + "osf_namespace_c"; + +/* + * File name selection pattern + */ +tSCC zOsf_Namespace_CList[] = + "regex.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzOsf_Namespace_CMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zOsf_Namespace_CSelect0[] = + "#include <reg_types.h>.*"; + +/* + * perform the 'test' shell command - do fix on success + */ +tSCC zOsf_Namespace_CTest0[] = + " -r reg_types.h"; +tSCC zOsf_Namespace_CTest1[] = + " -r sys/lc_core.h"; +tSCC zOsf_Namespace_CTest2[] = + " -n \"`grep '} regex_t;' reg_types.h`\""; +tSCC zOsf_Namespace_CTest3[] = + " -z \"`grep __regex_t regex.h`\""; + +#define OSF_NAMESPACE_C_TEST_CT 5 +static tTestDesc aOsf_Namespace_CTests[] = { + { TT_TEST, zOsf_Namespace_CTest0, 0 /* unused */ }, + { TT_TEST, zOsf_Namespace_CTest1, 0 /* unused */ }, + { TT_TEST, zOsf_Namespace_CTest2, 0 /* unused */ }, + { TT_TEST, zOsf_Namespace_CTest3, 0 /* unused */ }, + { TT_EGREP, zOsf_Namespace_CSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Osf_Namespace_C + */ +static const char* apzOsf_Namespace_CPatch[] = { + "format", + "%0\n\ +typedef __regex_t\tregex_t;\n\ +typedef __regoff_t\tregoff_t;\n\ +typedef __regmatch_t\tregmatch_t;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Pthread_Incomplete_Struct_Argument fix + */ +tSCC zPthread_Incomplete_Struct_ArgumentName[] = + "pthread_incomplete_struct_argument"; + +/* + * File name selection pattern + */ +tSCC zPthread_Incomplete_Struct_ArgumentList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzPthread_Incomplete_Struct_ArgumentMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zPthread_Incomplete_Struct_ArgumentSelect0[] = + "struct __jmp_buf_tag"; + +#define PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT 1 +static tTestDesc aPthread_Incomplete_Struct_ArgumentTests[] = { + { TT_EGREP, zPthread_Incomplete_Struct_ArgumentSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Pthread_Incomplete_Struct_Argument + */ +static const char* apzPthread_Incomplete_Struct_ArgumentPatch[] = { + "format", + "%1 *%2%3", + "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) (__env)\\[1\\](.*)$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Read_Ret_Type fix + */ +tSCC zRead_Ret_TypeName[] = + "read_ret_type"; + +/* + * File name selection pattern + */ +tSCC zRead_Ret_TypeList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzRead_Ret_TypeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRead_Ret_TypeSelect0[] = + "extern int\t.*, fread\\(\\), fwrite\\(\\)"; + +#define READ_RET_TYPE_TEST_CT 1 +static tTestDesc aRead_Ret_TypeTests[] = { + { TT_EGREP, zRead_Ret_TypeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Read_Ret_Type + */ +static const char* apzRead_Ret_TypePatch[] = { + "format", + "extern unsigned int fread(), fwrite();\n\ +%1%2", + "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Rpc_Xdr_Lvalue_Cast_A fix + */ +tSCC zRpc_Xdr_Lvalue_Cast_AName[] = + "rpc_xdr_lvalue_cast_a"; + +/* + * File name selection pattern + */ +tSCC zRpc_Xdr_Lvalue_Cast_AList[] = + "rpc/xdr.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzRpc_Xdr_Lvalue_Cast_AMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRpc_Xdr_Lvalue_Cast_ASelect0[] = + "#define[ \t]*IXDR_GET_LONG.*\\\\\n\ +.*__extension__.*"; + +#define RPC_XDR_LVALUE_CAST_A_TEST_CT 1 +static tTestDesc aRpc_Xdr_Lvalue_Cast_ATests[] = { + { TT_EGREP, zRpc_Xdr_Lvalue_Cast_ASelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Rpc_Xdr_Lvalue_Cast_A + */ +static const char* apzRpc_Xdr_Lvalue_Cast_APatch[] = { + "format", + "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Rpc_Xdr_Lvalue_Cast_B fix + */ +tSCC zRpc_Xdr_Lvalue_Cast_BName[] = + "rpc_xdr_lvalue_cast_b"; + +/* + * File name selection pattern + */ +tSCC zRpc_Xdr_Lvalue_Cast_BList[] = + "rpc/xdr.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzRpc_Xdr_Lvalue_Cast_BMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRpc_Xdr_Lvalue_Cast_BSelect0[] = + "#define[ \t]*IXDR_PUT_LONG.*\\\\\n\ +.*__extension__.*"; + +#define RPC_XDR_LVALUE_CAST_B_TEST_CT 1 +static tTestDesc aRpc_Xdr_Lvalue_Cast_BTests[] = { + { TT_EGREP, zRpc_Xdr_Lvalue_Cast_BSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Rpc_Xdr_Lvalue_Cast_B + */ +static const char* apzRpc_Xdr_Lvalue_Cast_BPatch[] = { + "format", + "#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Rs6000_Double fix + */ +tSCC zRs6000_DoubleName[] = + "rs6000_double"; + +/* + * File name selection pattern + */ +tSCC zRs6000_DoubleList[] = + "math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzRs6000_DoubleMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRs6000_DoubleSelect0[] = + "[^a-zA-Z_]class\\("; + +#define RS6000_DOUBLE_TEST_CT 1 +static tTestDesc aRs6000_DoubleTests[] = { + { TT_EGREP, zRs6000_DoubleSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Rs6000_Double + */ +static const char* apzRs6000_DoublePatch[] = { + "format", + "#ifndef __cplusplus\n\ +%0\n\ +#endif", + "^.*[^a-zA-Z_]class\\(.*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Rs6000_Fchmod fix + */ +tSCC zRs6000_FchmodName[] = + "rs6000_fchmod"; + +/* + * File name selection pattern + */ +tSCC zRs6000_FchmodList[] = + "sys/stat.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzRs6000_FchmodMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRs6000_FchmodSelect0[] = + "fchmod\\(char \\*"; + +#define RS6000_FCHMOD_TEST_CT 1 +static tTestDesc aRs6000_FchmodTests[] = { + { TT_EGREP, zRs6000_FchmodSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Rs6000_Fchmod + */ +static const char* apzRs6000_FchmodPatch[] = { + "format", + "fchmod(int", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Rs6000_Param fix + */ +tSCC zRs6000_ParamName[] = + "rs6000_param"; + +/* + * File name selection pattern + */ +tSCC zRs6000_ParamList[] = + "stdio.h\0unistd.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzRs6000_ParamMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zRs6000_ParamSelect0[] = + "rename\\(const char \\*old, const char \\*new\\)"; + +#define RS6000_PARAM_TEST_CT 1 +static tTestDesc aRs6000_ParamTests[] = { + { TT_EGREP, zRs6000_ParamSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Rs6000_Param + */ +static const char* apzRs6000_ParamPatch[] = { + "format", + "rename(const char *_old, const char *_new)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris___Restrict fix + */ +tSCC zSolaris___RestrictName[] = + "solaris___restrict"; + +/* + * File name selection pattern + */ +tSCC zSolaris___RestrictList[] = + "sys/feature_tests.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris___RestrictMachs[] = { + "*-*-solaris2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris___RestrictSelect0[] = + "#define[ \t]*_RESTRICT_KYWD[ \t]*restrict"; + +#define SOLARIS___RESTRICT_TEST_CT 1 +static tTestDesc aSolaris___RestrictTests[] = { + { TT_EGREP, zSolaris___RestrictSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris___Restrict + */ +static const char* apzSolaris___RestrictPatch[] = { + "format", + "#ifdef __cplusplus\n\ +#define\t_RESTRICT_KYWD\t__restrict\n\ +#else\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Complex fix + */ +tSCC zSolaris_ComplexName[] = + "solaris_complex"; + +/* + * File name selection pattern + */ +tSCC zSolaris_ComplexList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_ComplexMachs[] = { + "*-*-solaris2.*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_ComplexSelect0[] = + "#define[ \t]_Complex_I[ \t]_Complex_I"; + +#define SOLARIS_COMPLEX_TEST_CT 1 +static tTestDesc aSolaris_ComplexTests[] = { + { TT_EGREP, zSolaris_ComplexSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Complex + */ +static const char* apzSolaris_ComplexPatch[] = { sed_cmd_z, + "-e", "s/#define[ \t]_Complex_I[ \t]_Complex_I/#define\t_Complex_I\t(__extension__ 1.0iF)/", + "-e", "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d", + "-e", "/#define[ \t]imaginary[ \t]_Imaginary/d", + "-e", "s/#define[ \t]I[ \t]\\{1,\\}_Imaginary_I/#define\tI\t\t_Complex_I/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Complex_Cxx fix + */ +tSCC zSolaris_Complex_CxxName[] = + "solaris_complex_cxx"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Complex_CxxList[] = + "complex.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Complex_CxxMachs[] = { + "*-*-solaris2.*", + (const char*)NULL }; +#define SOLARIS_COMPLEX_CXX_TEST_CT 0 +#define aSolaris_Complex_CxxTests (tTestDesc*)NULL + +/* + * Fix Command Arguments for Solaris_Complex_Cxx + */ +static const char* apzSolaris_Complex_CxxPatch[] = { sed_cmd_z, + "-e", "/#if[ \t]*!defined(__cplusplus)/c#ifdef\t__cplusplus\\\n\ +extern \"C\" {\\\n\ +#endif", + "-e", "/#endif[ \t]*\\/\\* !defined(__cplusplus) \\*\\//c#ifdef\t__cplusplus\\\n\ +}\\\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Cond_Init fix + */ +tSCC zSolaris_Cond_InitName[] = + "solaris_cond_init"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Cond_InitList[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Cond_InitMachs[] = { + "*-*-solaris2.8", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Cond_InitSelect0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +#define SOLARIS_COND_INIT_TEST_CT 1 +static tTestDesc aSolaris_Cond_InitTests[] = { + { TT_EGREP, zSolaris_Cond_InitSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Cond_Init + */ +static const char* apzSolaris_Cond_InitPatch[] = { + "format", + "%1, 0x4356%2", + "^(#define[ \t]+PTHREAD_COND_INITIALIZER[ \t]+\\{.*0)(\\},[ \t]*0\\}.*)$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_1 fix + */ +tSCC zSolaris_Math_1Name[] = + "solaris_math_1"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_1List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_1Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_1Select0[] = + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Math_1Bypass0[] = + "__GNUC__"; + +#define SOLARIS_MATH_1_TEST_CT 2 +static tTestDesc aSolaris_Math_1Tests[] = { + { TT_NEGREP, zSolaris_Math_1Bypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Math_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_1 + */ +static const char* apzSolaris_Math_1Patch[] = { + "format", + "#define\tHUGE_VA%1\t(__builtin_huge_va%2())", + "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_2 fix + */ +tSCC zSolaris_Math_2Name[] = + "solaris_math_2"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_2List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_2Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_2Select0[] = + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Math_2Bypass0[] = + "__GNUC__"; + +#define SOLARIS_MATH_2_TEST_CT 2 +static tTestDesc aSolaris_Math_2Tests[] = { + { TT_NEGREP, zSolaris_Math_2Bypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Math_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_2 + */ +static const char* apzSolaris_Math_2Patch[] = { + "format", + "#define\tINFINITY\t(__builtin_inff())", + "^#define[ \t]+INFINITY[ \t]+__builtin_infinity", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_3 fix + */ +tSCC zSolaris_Math_3Name[] = + "solaris_math_3"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_3List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_3Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_3Select0[] = + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Math_3Bypass0[] = + "__GNUC__"; + +#define SOLARIS_MATH_3_TEST_CT 2 +static tTestDesc aSolaris_Math_3Tests[] = { + { TT_NEGREP, zSolaris_Math_3Bypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Math_3Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_3 + */ +static const char* apzSolaris_Math_3Patch[] = { + "format", + "#define\tNAN\t\t(__builtin_nanf(\"\"))", + "^#define[ \t]+NAN[ \t]+__builtin_nan", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_4 fix + */ +tSCC zSolaris_Math_4Name[] = + "solaris_math_4"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_4List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_4Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_4Select0[] = + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Math_4Bypass0[] = + "__GNUC__"; + +#define SOLARIS_MATH_4_TEST_CT 2 +static tTestDesc aSolaris_Math_4Tests[] = { + { TT_NEGREP, zSolaris_Math_4Bypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Math_4Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_4 + */ +static const char* apzSolaris_Math_4Patch[] = { + "format", + "#define\tfpclassify(x) \\\n\ + __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, (x))", + "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_8 fix + */ +tSCC zSolaris_Math_8Name[] = + "solaris_math_8"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_8List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_8Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_8Select0[] = + "@\\(#\\)math_c99\\.h[ \t]+1\\.[0-9]+[ \t]+[0-9/]+ SMI"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Math_8Bypass0[] = + "__GNUC__"; + +#define SOLARIS_MATH_8_TEST_CT 2 +static tTestDesc aSolaris_Math_8Tests[] = { + { TT_NEGREP, zSolaris_Math_8Bypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Math_8Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_8 + */ +static const char* apzSolaris_Math_8Patch[] = { + "format", + "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n\ +\t\t\t ? __builtin_signbitf(x) \\\n\ +\t\t\t : sizeof(x) == sizeof(long double) \\\n\ +\t\t\t ? __builtin_signbitl(x) \\\n\ +\t\t\t : __builtin_signbit(x))", + "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_9 fix + */ +tSCC zSolaris_Math_9Name[] = + "solaris_math_9"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_9List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_9Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_9Select0[] = + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Math_9Bypass0[] = + "__GNUC__"; + +#define SOLARIS_MATH_9_TEST_CT 2 +static tTestDesc aSolaris_Math_9Tests[] = { + { TT_NEGREP, zSolaris_Math_9Bypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Math_9Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_9 + */ +static const char* apzSolaris_Math_9Patch[] = { + "format", + "#define\t%1(x, y)%2__builtin_%1(x, y)", + "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Math_10 fix + */ +tSCC zSolaris_Math_10Name[] = + "solaris_math_10"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Math_10List[] = + "iso/math_c99.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Math_10Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Math_10Select0[] = + "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +#define SOLARIS_MATH_10_TEST_CT 1 +static tTestDesc aSolaris_Math_10Tests[] = { + { TT_EGREP, zSolaris_Math_10Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Math_10 + */ +static const char* apzSolaris_Math_10Patch[] = { + "format", + "#define\tisinf(x) __builtin_isinf(x)", + "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n\ +[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \t]*\\\\\n\ +[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*INFINITY[ \t]*\\|\\|[ \t]*\\\\\n\ +[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Mutex_Init_2 fix + */ +tSCC zSolaris_Mutex_Init_2Name[] = + "solaris_mutex_init_2"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Mutex_Init_2List[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Mutex_Init_2Machs[] = { + "*-*-solaris2.[0-9]", + "*-*-solaris2.[0-9][!0-9]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Mutex_Init_2Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +#define SOLARIS_MUTEX_INIT_2_TEST_CT 1 +static tTestDesc aSolaris_Mutex_Init_2Tests[] = { + { TT_EGREP, zSolaris_Mutex_Init_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Mutex_Init_2 + */ +static const char* apzSolaris_Mutex_Init_2Patch[] = { + "format", + "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n\ +%0\n\ +#else\n\ +%1, {0}}%4\n\ +#endif", + "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+(|/*.**/[ \t]*\\\\\n\ +[ \t]*)\\{.*),[ \t]*0\\}(|[ \t].*)$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Rwlock_Init_1 fix + */ +tSCC zSolaris_Rwlock_Init_1Name[] = + "solaris_rwlock_init_1"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Rwlock_Init_1List[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Rwlock_Init_1Machs[] = { + "*-*-solaris*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Rwlock_Init_1Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +#define SOLARIS_RWLOCK_INIT_1_TEST_CT 1 +static tTestDesc aSolaris_Rwlock_Init_1Tests[] = { + { TT_EGREP, zSolaris_Rwlock_Init_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Rwlock_Init_1 + */ +static const char* apzSolaris_Rwlock_Init_1Patch[] = { + "format", + "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n\ +%0\n\ +#else\n\ +%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n\ +#endif", + "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Once_Init_1 fix + */ +tSCC zSolaris_Once_Init_1Name[] = + "solaris_once_init_1"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Once_Init_1List[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Once_Init_1Machs[] = { + "*-*-solaris*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Once_Init_1Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +#define SOLARIS_ONCE_INIT_1_TEST_CT 1 +static tTestDesc aSolaris_Once_Init_1Tests[] = { + { TT_EGREP, zSolaris_Once_Init_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Once_Init_1 + */ +static const char* apzSolaris_Once_Init_1Patch[] = { + "format", + "%1{%2}%3", + "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Once_Init_2 fix + */ +tSCC zSolaris_Once_Init_2Name[] = + "solaris_once_init_2"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Once_Init_2List[] = + "pthread.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Once_Init_2Machs[] = { + "*-*-solaris2.[0-9]", + "*-*-solaris2.[0-9][!0-9]*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Once_Init_2Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +#define SOLARIS_ONCE_INIT_2_TEST_CT 1 +static tTestDesc aSolaris_Once_Init_2Tests[] = { + { TT_EGREP, zSolaris_Once_Init_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Once_Init_2 + */ +static const char* apzSolaris_Once_Init_2Patch[] = { + "format", + "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n\ +%0\n\ +#else\n\ +%1{0}, {0}, {0}, {%3}%4\n\ +#endif", + "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Int_Const fix + */ +tSCC zSolaris_Int_ConstName[] = + "solaris_int_const"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Int_ConstList[] = + "sys/int_const.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Int_ConstMachs[] = { + "*-*-solaris2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Int_ConstSelect0[] = + "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n\ +(/*.**/)\n\ +#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*"; + +#define SOLARIS_INT_CONST_TEST_CT 1 +static tTestDesc aSolaris_Int_ConstTests[] = { + { TT_EGREP, zSolaris_Int_ConstSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Int_Const + */ +static const char* apzSolaris_Int_ConstPatch[] = { + "format", + "#define\tUINT8_C(c)\t(c)\n\ +%1\n\ +#define\tUINT16_C(c)\t(c)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Int_Limits_1 fix + */ +tSCC zSolaris_Int_Limits_1Name[] = + "solaris_int_limits_1"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Int_Limits_1List[] = + "sys/int_limits.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Int_Limits_1Machs[] = { + "*-*-solaris2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Int_Limits_1Select0[] = + "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n\ +#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)"; + +#define SOLARIS_INT_LIMITS_1_TEST_CT 1 +static tTestDesc aSolaris_Int_Limits_1Tests[] = { + { TT_EGREP, zSolaris_Int_Limits_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Int_Limits_1 + */ +static const char* apzSolaris_Int_Limits_1Patch[] = { + "format", + "#define\tUINT8_MAX\t(255)\n\ +#define\tUINT16_MAX\t(65535)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Int_Limits_2 fix + */ +tSCC zSolaris_Int_Limits_2Name[] = + "solaris_int_limits_2"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Int_Limits_2List[] = + "sys/int_limits.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Int_Limits_2Machs[] = { + "*-*-solaris2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Int_Limits_2Select0[] = + "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*"; + +#define SOLARIS_INT_LIMITS_2_TEST_CT 1 +static tTestDesc aSolaris_Int_Limits_2Tests[] = { + { TT_EGREP, zSolaris_Int_Limits_2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Int_Limits_2 + */ +static const char* apzSolaris_Int_Limits_2Patch[] = { + "format", + "#define\t%1_FAST16_%2 %132_%2", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Int_Limits_3 fix + */ +tSCC zSolaris_Int_Limits_3Name[] = + "solaris_int_limits_3"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Int_Limits_3List[] = + "sys/int_limits.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Int_Limits_3Machs[] = { + "*-*-solaris2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Int_Limits_3Select0[] = + "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL"; + +#define SOLARIS_INT_LIMITS_3_TEST_CT 1 +static tTestDesc aSolaris_Int_Limits_3Tests[] = { + { TT_EGREP, zSolaris_Int_Limits_3Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Int_Limits_3 + */ +static const char* apzSolaris_Int_Limits_3Patch[] = { + "format", + "#define\tSIZE_MAX\t4294967295U", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Int_Types fix + */ +tSCC zSolaris_Int_TypesName[] = + "solaris_int_types"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Int_TypesList[] = + "sys/int_types.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Int_TypesMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Int_TypesSelect0[] = + "__STDC__ - 0 == 0"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Int_TypesBypass0[] = + "_LONGLONG_TYPE"; + +#define SOLARIS_INT_TYPES_TEST_CT 2 +static tTestDesc aSolaris_Int_TypesTests[] = { + { TT_NEGREP, zSolaris_Int_TypesBypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Int_TypesSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Int_Types + */ +static const char* apzSolaris_Int_TypesPatch[] = { + "format", + "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Stdio_Tag fix + */ +tSCC zSolaris_Stdio_TagName[] = + "solaris_stdio_tag"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Stdio_TagList[] = + "stdio_tag.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSolaris_Stdio_TagMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Stdio_TagSelect0[] = + "__cplusplus < 54321L"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSolaris_Stdio_TagBypass0[] = + "__GNUC__"; + +#define SOLARIS_STDIO_TAG_TEST_CT 2 +static tTestDesc aSolaris_Stdio_TagTests[] = { + { TT_NEGREP, zSolaris_Stdio_TagBypass0, (regex_t*)NULL }, + { TT_EGREP, zSolaris_Stdio_TagSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Stdio_Tag + */ +static const char* apzSolaris_Stdio_TagPatch[] = { sed_cmd_z, + "-e", "s/defined(__cplusplus) && (__cplusplus < 54321L)/0/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Solaris_Sys_Va_List fix + */ +tSCC zSolaris_Sys_Va_ListName[] = + "solaris_sys_va_list"; + +/* + * File name selection pattern + */ +tSCC zSolaris_Sys_Va_ListList[] = + "sys/va_list.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzSolaris_Sys_Va_ListMachs[] = { + "*-*-solaris2.[89]", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSolaris_Sys_Va_ListSelect0[] = + "#if.*__STDC__.*\n\ +typedef void \\*__va_list;\n\ +#else\n\ +typedef char \\*__va_list;\n\ +#endif"; + +#define SOLARIS_SYS_VA_LIST_TEST_CT 1 +static tTestDesc aSolaris_Sys_Va_ListTests[] = { + { TT_EGREP, zSolaris_Sys_Va_ListSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Solaris_Sys_Va_List + */ +static const char* apzSolaris_Sys_Va_ListPatch[] = { + "format", + "#ifdef __GNUC__\n\ +typedef __builtin_va_list __va_list;\n\ +#else\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Statsswtch fix + */ +tSCC zStatsswtchName[] = + "statsswtch"; + +/* + * File name selection pattern + */ +tSCC zStatsswtchList[] = + "rpcsvc/rstat.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzStatsswtchMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zStatsswtchSelect0[] = + "boottime$"; + +#define STATSSWTCH_TEST_CT 1 +static tTestDesc aStatsswtchTests[] = { + { TT_EGREP, zStatsswtchSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Statsswtch + */ +static const char* apzStatsswtchPatch[] = { + "format", + "boottime;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Stdio_Stdarg_H fix + */ +tSCC zStdio_Stdarg_HName[] = + "stdio_stdarg_h"; + +/* + * File name selection pattern + */ +tSCC zStdio_Stdarg_HList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzStdio_Stdarg_HMachs[] = { + "*-*-solaris2.1[0-9]*", + (const char*)NULL }; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zStdio_Stdarg_HBypass0[] = + "include.*(stdarg.h|machine/ansi.h)"; + +#define STDIO_STDARG_H_TEST_CT 1 +static tTestDesc aStdio_Stdarg_HTests[] = { + { TT_NEGREP, zStdio_Stdarg_HBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Stdio_Stdarg_H + */ +static const char* apzStdio_Stdarg_HPatch[] = { + "wrap", + "#define __need___va_list\n\ +#include <stdarg.h>\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Stdio_Va_List fix + */ +tSCC zStdio_Va_ListName[] = + "stdio_va_list"; + +/* + * File name selection pattern + */ +tSCC zStdio_Va_ListList[] = + "stdio.h\0internal/stdio_core.h\0internal/wchar_core.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzStdio_Va_ListMachs[] = { + "*-*-solaris2.1[0-9]*", + (const char*)NULL }; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zStdio_Va_ListBypass0[] = + "__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list"; + +#define STDIO_VA_LIST_TEST_CT 1 +static tTestDesc aStdio_Va_ListTests[] = { + { TT_NEGREP, zStdio_Va_ListBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Stdio_Va_List + */ +static const char* apzStdio_Va_ListPatch[] = { sed_cmd_z, + "-e", "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n\ +s@(va_list)&@(__gnuc_va_list)\\&@\n\ +s@ _VA_LIST_));@ __gnuc_va_list));@\n\ +s@ __VA_LIST__));@ __gnuc_va_list));@\n\ +s@ va_list@ __not_va_list__@\n\ +s@\\*va_list@*__not_va_list__@\n\ +s@ __va_list)@ __gnuc_va_list)@\n\ +s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;@typedef \\1 __not_va_list__;@\n\ +s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n\ +s@GNUC_VA_LIST@GNUC_Va_LIST@\n\ +s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n\ +s@_NEED___VA_LIST@_NEED___Va_LIST@\n\ +s@VA_LIST@DUMMY_VA_LIST@\n\ +s@_Va_LIST@_VA_LIST@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Stdio_Va_List_Clients fix + */ +tSCC zStdio_Va_List_ClientsName[] = + "stdio_va_list_clients"; + +/* + * File name selection pattern + */ +tSCC zStdio_Va_List_ClientsList[] = + "com_err.h\0cps.h\0curses.h\0krb5.h\0lc_core.h\0pfmt.h\0wchar.h\0curses_colr/curses.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzStdio_Va_List_ClientsMachs (const char**)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zStdio_Va_List_ClientsBypass0[] = + "__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list"; +tSCC zStdio_Va_List_ClientsBypass1[] = + "include <stdarg\\.h>|#ifdef va_start"; + +#define STDIO_VA_LIST_CLIENTS_TEST_CT 2 +static tTestDesc aStdio_Va_List_ClientsTests[] = { + { TT_NEGREP, zStdio_Va_List_ClientsBypass0, (regex_t*)NULL }, + { TT_NEGREP, zStdio_Va_List_ClientsBypass1, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Stdio_Va_List_Clients + */ +static const char* apzStdio_Va_List_ClientsPatch[] = { sed_cmd_z, + "-e", "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n\ +s@(va_list)&@(__gnuc_va_list)\\&@\n\ +s@ _VA_LIST_));@ __gnuc_va_list));@\n\ +s@ __VA_LIST__));@ __gnuc_va_list));@\n\ +s@ va_list@ __not_va_list__@\n\ +s@\\*va_list@*__not_va_list__@\n\ +s@ __va_list)@ __gnuc_va_list)@\n\ +s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;@typedef \\1 __not_va_list__;@\n\ +s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n\ +s@GNUC_VA_LIST@GNUC_Va_LIST@\n\ +s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n\ +s@_NEED___VA_LIST@_NEED___Va_LIST@\n\ +s@VA_LIST@DUMMY_VA_LIST@\n\ +s@_Va_LIST@_VA_LIST@", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Strict_Ansi_Not fix + */ +tSCC zStrict_Ansi_NotName[] = + "strict_ansi_not"; + +/* + * File name selection pattern + */ +#define zStrict_Ansi_NotList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzStrict_Ansi_NotMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zStrict_Ansi_NotSelect0[] = + "^([ \t]*#[ \t]*if.*)(!__STDC__|__STDC__[ \t]*==[ \t]*0|__STDC__[ \t]*!=[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zStrict_Ansi_NotBypass0[] = + "GNU and MIPS C compilers define __STDC__ differently"; +tSCC zStrict_Ansi_NotBypass1[] = + "__SCO_VERSION__.*__STDC__ != 1"; + +/* + * perform the C function call test + */ +tSCC zStrict_Ansi_NotFTst0[] = "stdc_0_in_system_headers"; + +#define STRICT_ANSI_NOT_TEST_CT 4 +static tTestDesc aStrict_Ansi_NotTests[] = { + { TT_FUNCTION, zStrict_Ansi_NotFTst0, 0 /* unused */ }, + { TT_NEGREP, zStrict_Ansi_NotBypass0, (regex_t*)NULL }, + { TT_NEGREP, zStrict_Ansi_NotBypass1, (regex_t*)NULL }, + { TT_EGREP, zStrict_Ansi_NotSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Strict_Ansi_Not + */ +static const char* apzStrict_Ansi_NotPatch[] = { + "format", + "%1 !defined(__STRICT_ANSI__)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Strict_Ansi_Not_Ctd fix + */ +tSCC zStrict_Ansi_Not_CtdName[] = + "strict_ansi_not_ctd"; + +/* + * File name selection pattern + */ +tSCC zStrict_Ansi_Not_CtdList[] = + "math.h\0limits.h\0stdio.h\0signal.h\0stdlib.h\0sys/signal.h\0time.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzStrict_Ansi_Not_CtdMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zStrict_Ansi_Not_CtdSelect0[] = + "^([ \t]*(\\(|&&|\\|\\|)([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*[ \t(]*)(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)"; + +/* + * perform the C function call test + */ +tSCC zStrict_Ansi_Not_CtdFTst0[] = "stdc_0_in_system_headers"; + +#define STRICT_ANSI_NOT_CTD_TEST_CT 2 +static tTestDesc aStrict_Ansi_Not_CtdTests[] = { + { TT_FUNCTION, zStrict_Ansi_Not_CtdFTst0, 0 /* unused */ }, + { TT_EGREP, zStrict_Ansi_Not_CtdSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Strict_Ansi_Not_Ctd + */ +static const char* apzStrict_Ansi_Not_CtdPatch[] = { + "format", + "%1 !defined(__STRICT_ANSI__)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Strict_Ansi_Only fix + */ +tSCC zStrict_Ansi_OnlyName[] = + "strict_ansi_only"; + +/* + * File name selection pattern + */ +#define zStrict_Ansi_OnlyList (char*)NULL +/* + * Machine/OS name selection pattern + */ +#define apzStrict_Ansi_OnlyMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zStrict_Ansi_OnlySelect0[] = + "^([ \t]*#[ \t]*if.*)(__STDC__[ \t]*!=[ \t]*0|__STDC__[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)"; + +/* + * perform the C function call test + */ +tSCC zStrict_Ansi_OnlyFTst0[] = "stdc_0_in_system_headers"; + +#define STRICT_ANSI_ONLY_TEST_CT 2 +static tTestDesc aStrict_Ansi_OnlyTests[] = { + { TT_FUNCTION, zStrict_Ansi_OnlyFTst0, 0 /* unused */ }, + { TT_EGREP, zStrict_Ansi_OnlySelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Strict_Ansi_Only + */ +static const char* apzStrict_Ansi_OnlyPatch[] = { + "format", + "%1 defined(__STRICT_ANSI__)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Struct_File fix + */ +tSCC zStruct_FileName[] = + "struct_file"; + +/* + * File name selection pattern + */ +tSCC zStruct_FileList[] = + "rpc/xdr.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzStruct_FileMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zStruct_FileSelect0[] = + "^.*xdrstdio_create.*struct __file_s"; + +#define STRUCT_FILE_TEST_CT 1 +static tTestDesc aStruct_FileTests[] = { + { TT_EGREP, zStruct_FileSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Struct_File + */ +static const char* apzStruct_FilePatch[] = { + "format", + "struct __file_s;\n\ +%0", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Struct_Sockaddr fix + */ +tSCC zStruct_SockaddrName[] = + "struct_sockaddr"; + +/* + * File name selection pattern + */ +tSCC zStruct_SockaddrList[] = + "rpc/auth.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzStruct_SockaddrMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zStruct_SockaddrSelect0[] = + "^.*authdes_create.*struct sockaddr[^_]"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zStruct_SockaddrBypass0[] = + "<sys/socket.h>"; +tSCC zStruct_SockaddrBypass1[] = + "struct sockaddr;\n"; + +#define STRUCT_SOCKADDR_TEST_CT 3 +static tTestDesc aStruct_SockaddrTests[] = { + { TT_NEGREP, zStruct_SockaddrBypass0, (regex_t*)NULL }, + { TT_NEGREP, zStruct_SockaddrBypass1, (regex_t*)NULL }, + { TT_EGREP, zStruct_SockaddrSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Struct_Sockaddr + */ +static const char* apzStruct_SockaddrPatch[] = { + "format", + "struct sockaddr;\n\ +%0", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sun_Auth_Proto fix + */ +tSCC zSun_Auth_ProtoName[] = + "sun_auth_proto"; + +/* + * File name selection pattern + */ +tSCC zSun_Auth_ProtoList[] = + "rpc/auth.h\0rpc/clnt.h\0rpc/svc.h\0rpc/xdr.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSun_Auth_ProtoMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSun_Auth_ProtoSelect0[] = + "\\(\\*[a-z][a-z_]*\\)\\(\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSun_Auth_ProtoBypass0[] = + "__cplusplus"; + +#define SUN_AUTH_PROTO_TEST_CT 2 +static tTestDesc aSun_Auth_ProtoTests[] = { + { TT_NEGREP, zSun_Auth_ProtoBypass0, (regex_t*)NULL }, + { TT_EGREP, zSun_Auth_ProtoSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sun_Auth_Proto + */ +static const char* apzSun_Auth_ProtoPatch[] = { + "format", + "#ifdef __cplusplus\n\ +%1(...);%2\n\ +#else\n\ +%1();%2\n\ +#endif", + "(.*\\(\\*[a-z][a-z_]*\\))\\(\\);(.*)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sun_Bogus_Ifdef fix + */ +tSCC zSun_Bogus_IfdefName[] = + "sun_bogus_ifdef"; + +/* + * File name selection pattern + */ +tSCC zSun_Bogus_IfdefList[] = + "hsfs/hsfs_spec.h\0hsfs/iso_spec.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSun_Bogus_IfdefMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSun_Bogus_IfdefSelect0[] = + "#ifdef(.*\\|\\|.*)"; + +#define SUN_BOGUS_IFDEF_TEST_CT 1 +static tTestDesc aSun_Bogus_IfdefTests[] = { + { TT_EGREP, zSun_Bogus_IfdefSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sun_Bogus_Ifdef + */ +static const char* apzSun_Bogus_IfdefPatch[] = { + "format", + "#if%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sun_Catmacro fix + */ +tSCC zSun_CatmacroName[] = + "sun_catmacro"; + +/* + * File name selection pattern + */ +tSCC zSun_CatmacroList[] = + "pixrect/memvar.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSun_CatmacroMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSun_CatmacroSelect0[] = + "^#define[ \t]+CAT\\(a,b\\).*"; + +#define SUN_CATMACRO_TEST_CT 1 +static tTestDesc aSun_CatmacroTests[] = { + { TT_EGREP, zSun_CatmacroSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sun_Catmacro + */ +static const char* apzSun_CatmacroPatch[] = { + "format", + "#ifdef __STDC__\n\ +# define CAT(a,b) a##b\n\ +#else\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sun_Malloc fix + */ +tSCC zSun_MallocName[] = + "sun_malloc"; + +/* + * File name selection pattern + */ +tSCC zSun_MallocList[] = + "malloc.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSun_MallocMachs (const char**)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSun_MallocBypass0[] = + "_CLASSIC_ANSI_TYPES"; + +#define SUN_MALLOC_TEST_CT 1 +static tTestDesc aSun_MallocTests[] = { + { TT_NEGREP, zSun_MallocBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sun_Malloc + */ +static const char* apzSun_MallocPatch[] = { sed_cmd_z, + "-e", "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g", + "-e", "s/int[ \t][ \t]*free/void\tfree/g", + "-e", "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g", + "-e", "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g", + "-e", "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sun_Rusers_Semi fix + */ +tSCC zSun_Rusers_SemiName[] = + "sun_rusers_semi"; + +/* + * File name selection pattern + */ +tSCC zSun_Rusers_SemiList[] = + "rpcsvc/rusers.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSun_Rusers_SemiMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSun_Rusers_SemiSelect0[] = + "_cnt$"; + +#define SUN_RUSERS_SEMI_TEST_CT 1 +static tTestDesc aSun_Rusers_SemiTests[] = { + { TT_EGREP, zSun_Rusers_SemiSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sun_Rusers_Semi + */ +static const char* apzSun_Rusers_SemiPatch[] = { sed_cmd_z, + "-e", "/^struct/,/^};/s/_cnt$/_cnt;/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sun_Signal fix + */ +tSCC zSun_SignalName[] = + "sun_signal"; + +/* + * File name selection pattern + */ +tSCC zSun_SignalList[] = + "sys/signal.h\0signal.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSun_SignalMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSun_SignalSelect0[] = + "^void\t\\(\\*signal\\(\\)\\)\\(\\);.*"; + +#define SUN_SIGNAL_TEST_CT 1 +static tTestDesc aSun_SignalTests[] = { + { TT_EGREP, zSun_SignalSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sun_Signal + */ +static const char* apzSun_SignalPatch[] = { + "format", + "#ifdef __cplusplus\n\ +void\t(*signal(...))(...);\n\ +#else\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sunos_Strlen fix + */ +tSCC zSunos_StrlenName[] = + "sunos_strlen"; + +/* + * File name selection pattern + */ +tSCC zSunos_StrlenList[] = + "strings.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSunos_StrlenMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSunos_StrlenSelect0[] = + "int[ \t]*strlen\\(\\);(.*)"; + +#define SUNOS_STRLEN_TEST_CT 1 +static tTestDesc aSunos_StrlenTests[] = { + { TT_EGREP, zSunos_StrlenSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sunos_Strlen + */ +static const char* apzSunos_StrlenPatch[] = { + "format", + "__SIZE_TYPE__ strlen();%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Svr4_Disable_Opt fix + */ +tSCC zSvr4_Disable_OptName[] = + "svr4_disable_opt"; + +/* + * File name selection pattern + */ +tSCC zSvr4_Disable_OptList[] = + "string.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSvr4_Disable_OptMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSvr4_Disable_OptSelect0[] = + "#define.*__std_hdr_"; + +#define SVR4_DISABLE_OPT_TEST_CT 1 +static tTestDesc aSvr4_Disable_OptTests[] = { + { TT_EGREP, zSvr4_Disable_OptSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Svr4_Disable_Opt + */ +static const char* apzSvr4_Disable_OptPatch[] = { sed_cmd_z, + "-e", "/#define.*__std_hdr_/d", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Svr4_Getcwd fix + */ +tSCC zSvr4_GetcwdName[] = + "svr4_getcwd"; + +/* + * File name selection pattern + */ +tSCC zSvr4_GetcwdList[] = + "stdlib.h\0unistd.h\0prototypes.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSvr4_GetcwdMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSvr4_GetcwdSelect0[] = + "getcwd\\(char \\*, int\\)"; + +#define SVR4_GETCWD_TEST_CT 1 +static tTestDesc aSvr4_GetcwdTests[] = { + { TT_EGREP, zSvr4_GetcwdSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Svr4_Getcwd + */ +static const char* apzSvr4_GetcwdPatch[] = { + "format", + "getcwd(char *, size_t)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Svr4_Profil fix + */ +tSCC zSvr4_ProfilName[] = + "svr4_profil"; + +/* + * File name selection pattern + */ +tSCC zSvr4_ProfilList[] = + "stdlib.h\0unistd.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSvr4_ProfilMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSvr4_ProfilSelect0[] = + "profil\\(unsigned short \\*, unsigned int, unsigned int, unsigned int\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSvr4_ProfilBypass0[] = + "Silicon Graphics"; + +#define SVR4_PROFIL_TEST_CT 2 +static tTestDesc aSvr4_ProfilTests[] = { + { TT_NEGREP, zSvr4_ProfilBypass0, (regex_t*)NULL }, + { TT_EGREP, zSvr4_ProfilSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Svr4_Profil + */ +static const char* apzSvr4_ProfilPatch[] = { + "format", + "profil(unsigned short *, size_t, int, unsigned int)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Svr4_Sighandler_Type fix + */ +tSCC zSvr4_Sighandler_TypeName[] = + "svr4_sighandler_type"; + +/* + * File name selection pattern + */ +tSCC zSvr4_Sighandler_TypeList[] = + "sys/signal.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSvr4_Sighandler_TypeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSvr4_Sighandler_TypeSelect0[] = + "void *\\(\\*\\)\\(\\)"; + +#define SVR4_SIGHANDLER_TYPE_TEST_CT 1 +static tTestDesc aSvr4_Sighandler_TypeTests[] = { + { TT_EGREP, zSvr4_Sighandler_TypeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Svr4_Sighandler_Type + */ +static const char* apzSvr4_Sighandler_TypePatch[] = { + "format", + "void (*)(int)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Svr4_Undeclared_Getrnge fix + */ +tSCC zSvr4_Undeclared_GetrngeName[] = + "svr4_undeclared_getrnge"; + +/* + * File name selection pattern + */ +tSCC zSvr4_Undeclared_GetrngeList[] = + "regexp.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSvr4_Undeclared_GetrngeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSvr4_Undeclared_GetrngeSelect0[] = + "getrnge"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSvr4_Undeclared_GetrngeBypass0[] = + "static void getrnge"; + +#define SVR4_UNDECLARED_GETRNGE_TEST_CT 2 +static tTestDesc aSvr4_Undeclared_GetrngeTests[] = { + { TT_NEGREP, zSvr4_Undeclared_GetrngeBypass0, (regex_t*)NULL }, + { TT_EGREP, zSvr4_Undeclared_GetrngeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Svr4_Undeclared_Getrnge + */ +static const char* apzSvr4_Undeclared_GetrngePatch[] = { + "format", + "%0\n\ +static int getrnge ();", + "^static int[ \t]+size;", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sysv68_String fix + */ +tSCC zSysv68_StringName[] = + "sysv68_string"; + +/* + * File name selection pattern + */ +tSCC zSysv68_StringList[] = + "testing.h\0string.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSysv68_StringMachs (const char**)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSysv68_StringBypass0[] = + "_CLASSIC_ANSI_TYPES"; + +#define SYSV68_STRING_TEST_CT 1 +static tTestDesc aSysv68_StringTests[] = { + { TT_NEGREP, zSysv68_StringBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sysv68_String + */ +static const char* apzSysv68_StringPatch[] = { sed_cmd_z, + "-e", "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/", + "-e", "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/", + "-e", "s/strdup(char \\*s1);/strdup(const char *s1);/", + "-e", "/^extern char$/N", + "-e", "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/", + "-e", "/^extern int$/N", + "-e", "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/", + "-e", "/^\tstrncmp(),$/N", + "-e", "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n\ +extern unsigned int\\\n\ +\\2/", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Sysz_Stdlib_For_Sun fix + */ +tSCC zSysz_Stdlib_For_SunName[] = + "sysz_stdlib_for_sun"; + +/* + * File name selection pattern + */ +tSCC zSysz_Stdlib_For_SunList[] = + "stdlib.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSysz_Stdlib_For_SunMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSysz_Stdlib_For_SunSelect0[] = + "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\("; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSysz_Stdlib_For_SunBypass0[] = + "_CLASSIC_ANSI_TYPES"; + +#define SYSZ_STDLIB_FOR_SUN_TEST_CT 2 +static tTestDesc aSysz_Stdlib_For_SunTests[] = { + { TT_NEGREP, zSysz_Stdlib_For_SunBypass0, (regex_t*)NULL }, + { TT_EGREP, zSysz_Stdlib_For_SunSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sysz_Stdlib_For_Sun + */ +static const char* apzSysz_Stdlib_For_SunPatch[] = { + "format", + "void *\t%1(", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Thread_Keyword fix + */ +tSCC zThread_KeywordName[] = + "thread_keyword"; + +/* + * File name selection pattern + */ +tSCC zThread_KeywordList[] = + "pthread.h\0bits/sigthread.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzThread_KeywordMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zThread_KeywordSelect0[] = + "([* ])__thread([,)])"; + +#define THREAD_KEYWORD_TEST_CT 1 +static tTestDesc aThread_KeywordTests[] = { + { TT_EGREP, zThread_KeywordSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Thread_Keyword + */ +static const char* apzThread_KeywordPatch[] = { + "format", + "%1__thr%2", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Tinfo_Cplusplus fix + */ +tSCC zTinfo_CplusplusName[] = + "tinfo_cplusplus"; + +/* + * File name selection pattern + */ +tSCC zTinfo_CplusplusList[] = + "tinfo.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzTinfo_CplusplusMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zTinfo_CplusplusSelect0[] = + "[ \t]_cplusplus"; + +#define TINFO_CPLUSPLUS_TEST_CT 1 +static tTestDesc aTinfo_CplusplusTests[] = { + { TT_EGREP, zTinfo_CplusplusSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Tinfo_Cplusplus + */ +static const char* apzTinfo_CplusplusPatch[] = { + "format", + " __cplusplus", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Ultrix_Const fix + */ +tSCC zUltrix_ConstName[] = + "ultrix_const"; + +/* + * File name selection pattern + */ +tSCC zUltrix_ConstList[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzUltrix_ConstMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zUltrix_ConstSelect0[] = + "perror\\( char \\*"; + +#define ULTRIX_CONST_TEST_CT 1 +static tTestDesc aUltrix_ConstTests[] = { + { TT_EGREP, zUltrix_ConstSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Ultrix_Const + */ +static const char* apzUltrix_ConstPatch[] = { + "format", + "%1 const %3 *__", + "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)[ \t]+(char|void) \\*__", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Ultrix_Const2 fix + */ +tSCC zUltrix_Const2Name[] = + "ultrix_const2"; + +/* + * File name selection pattern + */ +tSCC zUltrix_Const2List[] = + "stdio.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzUltrix_Const2Machs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zUltrix_Const2Select0[] = + "\\*fopen\\( char \\*"; + +#define ULTRIX_CONST2_TEST_CT 1 +static tTestDesc aUltrix_Const2Tests[] = { + { TT_EGREP, zUltrix_Const2Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Ultrix_Const2 + */ +static const char* apzUltrix_Const2Patch[] = { + "format", + "%1( const char *%3, const char *", + "([ \t*](fopen|sscanf|popen|tempnam))\\([ \t]*char[ \t]*\\*([^,]*),[ \t]*char[ \t]*\\*[ \t]*", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Va_I960_Macro fix + */ +tSCC zVa_I960_MacroName[] = + "va_i960_macro"; + +/* + * File name selection pattern + */ +tSCC zVa_I960_MacroList[] = + "arch/i960/archI960.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzVa_I960_MacroMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zVa_I960_MacroSelect0[] = + "__(vsiz|vali|vpad|alignof__)"; + +#define VA_I960_MACRO_TEST_CT 1 +static tTestDesc aVa_I960_MacroTests[] = { + { TT_EGREP, zVa_I960_MacroSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Va_I960_Macro + */ +static const char* apzVa_I960_MacroPatch[] = { + "format", + "__vx%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Void_Null fix + */ +tSCC zVoid_NullName[] = + "void_null"; + +/* + * File name selection pattern + */ +tSCC zVoid_NullList[] = + "curses.h\0dbm.h\0locale.h\0stdio.h\0stdlib.h\0string.h\0time.h\0unistd.h\0sys/dir.h\0sys/param.h\0sys/types.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzVoid_NullMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zVoid_NullSelect0[] = + "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zVoid_NullBypass0[] = + "__cplusplus"; + +#define VOID_NULL_TEST_CT 2 +static tTestDesc aVoid_NullTests[] = { + { TT_NEGREP, zVoid_NullBypass0, (regex_t*)NULL }, + { TT_EGREP, zVoid_NullSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Void_Null + */ +static const char* apzVoid_NullPatch[] = { + "format", + "#define NULL 0", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Vxworks_Gcc_Problem fix + */ +tSCC zVxworks_Gcc_ProblemName[] = + "vxworks_gcc_problem"; + +/* + * File name selection pattern + */ +tSCC zVxworks_Gcc_ProblemList[] = + "types/vxTypesBase.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzVxworks_Gcc_ProblemMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zVxworks_Gcc_ProblemSelect0[] = + "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__"; + +#define VXWORKS_GCC_PROBLEM_TEST_CT 1 +static tTestDesc aVxworks_Gcc_ProblemTests[] = { + { TT_EGREP, zVxworks_Gcc_ProblemSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Vxworks_Gcc_Problem + */ +static const char* apzVxworks_Gcc_ProblemPatch[] = { sed_cmd_z, + "-e", "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/#if 1/", + "-e", "/[ \t]size_t/i\\\n\ +#ifndef _GCC_SIZE_T\\\n\ +#define _GCC_SIZE_T\n", + "-e", "/[ \t]size_t/a\\\n\ +#endif\n", + "-e", "/[ \t]ptrdiff_t/i\\\n\ +#ifndef _GCC_PTRDIFF_T\\\n\ +#define _GCC_PTRDIFF_T\n", + "-e", "/[ \t]ptrdiff_t/a\\\n\ +#endif\n", + "-e", "/[ \t]wchar_t/i\\\n\ +#ifndef _GCC_WCHAR_T\\\n\ +#define _GCC_WCHAR_T\n", + "-e", "/[ \t]wchar_t/a\\\n\ +#endif\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Vxworks_Needs_Vxtypes fix + */ +tSCC zVxworks_Needs_VxtypesName[] = + "vxworks_needs_vxtypes"; + +/* + * File name selection pattern + */ +tSCC zVxworks_Needs_VxtypesList[] = + "time.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzVxworks_Needs_VxtypesMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zVxworks_Needs_VxtypesSelect0[] = + "uint_t([ \t]+_clocks_per_sec)"; + +#define VXWORKS_NEEDS_VXTYPES_TEST_CT 1 +static tTestDesc aVxworks_Needs_VxtypesTests[] = { + { TT_EGREP, zVxworks_Needs_VxtypesSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Vxworks_Needs_Vxtypes + */ +static const char* apzVxworks_Needs_VxtypesPatch[] = { + "format", + "unsigned int%1", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Vxworks_Needs_Vxworks fix + */ +tSCC zVxworks_Needs_VxworksName[] = + "vxworks_needs_vxworks"; + +/* + * File name selection pattern + */ +tSCC zVxworks_Needs_VxworksList[] = + "sys/stat.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzVxworks_Needs_VxworksMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zVxworks_Needs_VxworksSelect0[] = + "#[ \t]define[ \t]+__INCstath"; + +/* + * perform the 'test' shell command - do fix on success + */ +tSCC zVxworks_Needs_VxworksTest0[] = + " -r types/vxTypesOld.h"; +tSCC zVxworks_Needs_VxworksTest1[] = + " -n \"`egrep '#include' $file`\""; +tSCC zVxworks_Needs_VxworksTest2[] = + " -n \"`egrep ULONG $file`\""; + +#define VXWORKS_NEEDS_VXWORKS_TEST_CT 4 +static tTestDesc aVxworks_Needs_VxworksTests[] = { + { TT_TEST, zVxworks_Needs_VxworksTest0, 0 /* unused */ }, + { TT_TEST, zVxworks_Needs_VxworksTest1, 0 /* unused */ }, + { TT_TEST, zVxworks_Needs_VxworksTest2, 0 /* unused */ }, + { TT_EGREP, zVxworks_Needs_VxworksSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Vxworks_Needs_Vxworks + */ +static const char* apzVxworks_Needs_VxworksPatch[] = { sed_cmd_z, + "-e", "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n\ +#include <types/vxTypesOld.h>\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Vxworks_Time fix + */ +tSCC zVxworks_TimeName[] = + "vxworks_time"; + +/* + * File name selection pattern + */ +tSCC zVxworks_TimeList[] = + "time.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzVxworks_TimeMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zVxworks_TimeSelect0[] = + "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*"; + +/* + * perform the 'test' shell command - do fix on success + */ +tSCC zVxworks_TimeTest0[] = + " -r vxWorks.h"; + +#define VXWORKS_TIME_TEST_CT 2 +static tTestDesc aVxworks_TimeTests[] = { + { TT_TEST, zVxworks_TimeTest0, 0 /* unused */ }, + { TT_EGREP, zVxworks_TimeSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Vxworks_Time + */ +static const char* apzVxworks_TimePatch[] = { + "format", + "#ifndef __gcc_VOIDFUNCPTR_defined\n\ +#ifdef __cplusplus\n\ +typedef void (*__gcc_VOIDFUNCPTR) (...);\n\ +#else\n\ +typedef void (*__gcc_VOIDFUNCPTR) ();\n\ +#endif\n\ +#define __gcc_VOIDFUNCPTR_defined\n\ +#endif\n\ +#define VOIDFUNCPTR __gcc_VOIDFUNCPTR", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of X11_Class fix + */ +tSCC zX11_ClassName[] = + "x11_class"; + +/* + * File name selection pattern + */ +tSCC zX11_ClassList[] = + "X11/ShellP.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzX11_ClassMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zX11_ClassSelect0[] = + "^([ \t]*char \\*)class;(.*)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zX11_ClassBypass0[] = + "__cplusplus"; + +#define X11_CLASS_TEST_CT 2 +static tTestDesc aX11_ClassTests[] = { + { TT_NEGREP, zX11_ClassBypass0, (regex_t*)NULL }, + { TT_EGREP, zX11_ClassSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for X11_Class + */ +static const char* apzX11_ClassPatch[] = { + "format", + "#ifdef __cplusplus\n\ +%1c_class;%2\n\ +#else\n\ +%1class;%2\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of X11_Class_Usage fix + */ +tSCC zX11_Class_UsageName[] = + "x11_class_usage"; + +/* + * File name selection pattern + */ +tSCC zX11_Class_UsageList[] = + "Xm/BaseClassI.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzX11_Class_UsageMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zX11_Class_UsageSelect0[] = + " class\\)"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zX11_Class_UsageBypass0[] = + "__cplusplus"; + +#define X11_CLASS_USAGE_TEST_CT 2 +static tTestDesc aX11_Class_UsageTests[] = { + { TT_NEGREP, zX11_Class_UsageBypass0, (regex_t*)NULL }, + { TT_EGREP, zX11_Class_UsageSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for X11_Class_Usage + */ +static const char* apzX11_Class_UsagePatch[] = { + "format", + " c_class)", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of X11_New fix + */ +tSCC zX11_NewName[] = + "x11_new"; + +/* + * File name selection pattern + */ +tSCC zX11_NewList[] = + "Xm/Traversal.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzX11_NewMachs (const char**)NULL + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zX11_NewBypass0[] = + "__cplusplus"; + +#define X11_NEW_TEST_CT 1 +static tTestDesc aX11_NewTests[] = { + { TT_NEGREP, zX11_NewBypass0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for X11_New + */ +static const char* apzX11_NewPatch[] = { sed_cmd_z, + "-e", "/Widget\told, new;/i\\\n\ +#ifdef __cplusplus\\\n\ +\\\tWidget\told, c_new;\\\n\ +#else\n", + "-e", "/Widget\told, new;/a\\\n\ +#endif\n", + "-e", "s/Widget new,/Widget c_new,/g", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of X11_Sprintf fix + */ +tSCC zX11_SprintfName[] = + "x11_sprintf"; + +/* + * File name selection pattern + */ +tSCC zX11_SprintfList[] = + "X11/Xmu.h\0X11/Xmu/Xmu.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzX11_SprintfMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zX11_SprintfSelect0[] = + "^extern char \\*\tsprintf\\(\\);$"; + +#define X11_SPRINTF_TEST_CT 1 +static tTestDesc aX11_SprintfTests[] = { + { TT_EGREP, zX11_SprintfSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for X11_Sprintf + */ +static const char* apzX11_SprintfPatch[] = { + "format", + "#ifndef __STDC__\n\ +%0\n\ +#endif /* !defined __STDC__ */", + (char*)NULL }; + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * List of all fixes + */ +#define REGEX_COUNT 249 +#define MACH_LIST_SIZE_LIMIT 181 +#define FIX_COUNT 210 + +/* + * Enumerate the fixes + */ +typedef enum { + AAB_AIX_STDIO_FIXIDX, + AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_FIXIDX, + AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_2_FIXIDX, + AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX, + AAB_FD_ZERO_GNU_TYPES_H_FIXIDX, + AAB_FD_ZERO_SELECTBITS_H_FIXIDX, + AAB_SOLARIS_SYS_VARARGS_H_FIXIDX, + AAB_SUN_MEMCPY_FIXIDX, + AIX_COMPLEX_FIXIDX, + AIX_PTHREAD_FIXIDX, + AIX_STDINT_1_FIXIDX, + AIX_STDINT_2_FIXIDX, + AIX_STDINT_3_FIXIDX, + AIX_STDINT_4_FIXIDX, + AIX_STDINT_5_FIXIDX, + AIX_SYSMACHINE_FIXIDX, + AIX_SYSWAIT_2_FIXIDX, + AIX_VOLATILE_FIXIDX, + ALPHA___ASSERT_FIXIDX, + ALPHA___EXTERN_PREFIX_FIXIDX, + ALPHA___EXTERN_PREFIX_STANDARDS_FIXIDX, + ALPHA___EXTERN_PREFIX_SYS_STAT_FIXIDX, + ALPHA_ASSERT_FIXIDX, + ALPHA_BAD_LVAL_FIXIDX, + ALPHA_GETOPT_FIXIDX, + ALPHA_IF_SEMICOLON_FIXIDX, + ALPHA_PARENS_FIXIDX, + ALPHA_PTHREAD_FIXIDX, + ALPHA_PTHREAD_GCC_FIXIDX, + ALPHA_PTHREAD_INIT_FIXIDX, + ALPHA_SBRK_FIXIDX, + AVOID_BOOL_DEFINE_FIXIDX, + AVOID_BOOL_TYPE_FIXIDX, + AVOID_WCHAR_T_TYPE_FIXIDX, + BAD_STRUCT_TERM_FIXIDX, + BADQUOTE_FIXIDX, + BROKEN_ASSERT_STDIO_FIXIDX, + BROKEN_ASSERT_STDLIB_FIXIDX, + BROKEN_CABS_FIXIDX, + BROKEN_NAN_FIXIDX, + BSD_STDIO_ATTRS_CONFLICT_FIXIDX, + CTRL_QUOTES_DEF_FIXIDX, + CTRL_QUOTES_USE_FIXIDX, + CXX_UNREADY_FIXIDX, + DARWIN_EXTERNC_FIXIDX, + DARWIN_GCC4_BREAKAGE_FIXIDX, + DARWIN_PRIVATE_EXTERN_FIXIDX, + DARWIN_STDINT_1_FIXIDX, + DARWIN_STDINT_2_FIXIDX, + DARWIN_STDINT_3_FIXIDX, + DARWIN_STDINT_4_FIXIDX, + DARWIN_STDINT_5_FIXIDX, + DARWIN_STDINT_6_FIXIDX, + DARWIN_STDINT_7_FIXIDX, + DEC_INTERN_ASM_FIXIDX, + DJGPP_WCHAR_H_FIXIDX, + ECD_CURSOR_FIXIDX, + FREEBSD_GCC3_BREAKAGE_FIXIDX, + FREEBSD_GCC4_BREAKAGE_FIXIDX, + GLIBC_C99_INLINE_1_FIXIDX, + GLIBC_C99_INLINE_1A_FIXIDX, + GLIBC_C99_INLINE_2_FIXIDX, + GLIBC_C99_INLINE_3_FIXIDX, + GLIBC_C99_INLINE_4_FIXIDX, + GLIBC_MUTEX_INIT_FIXIDX, + GLIBC_STDINT_FIXIDX, + GLIBC_STRNCPY_FIXIDX, + GLIBC_TGMATH_FIXIDX, + GNU_TYPES_FIXIDX, + HP_INLINE_FIXIDX, + HP_SYSFILE_FIXIDX, + HPPA_HPUX_FP_MACROS_FIXIDX, + HPUX10_CPP_POW_INLINE_FIXIDX, + HPUX11_CPP_POW_INLINE_FIXIDX, + HPUX10_CTYPE_DECLARATIONS1_FIXIDX, + HPUX10_CTYPE_DECLARATIONS2_FIXIDX, + HPUX10_STDIO_DECLARATIONS_FIXIDX, + HPUX11_ABS_FIXIDX, + HPUX11_FABSF_FIXIDX, + HPUX11_PTHREAD_CONST_FIXIDX, + HPUX11_SIZE_T_FIXIDX, + HPUX11_SNPRINTF_FIXIDX, + HPUX11_VSNPRINTF_FIXIDX, + HPUX8_BOGUS_INLINES_FIXIDX, + HPUX_CTYPE_MACROS_FIXIDX, + HPUX_HTONL_FIXIDX, + HPUX_LONG_DOUBLE_FIXIDX, + HPUX_LONG_DOUBLE_2_FIXIDX, + HPUX_SYSTIME_FIXIDX, + HPUX_SPU_INFO_FIXIDX, + HPUX11_EXTERN_SENDFILE_FIXIDX, + HPUX11_EXTERN_SENDPATH_FIXIDX, + HPUX_EXTERN_ERRNO_FIXIDX, + HPUX_PTHREAD_INITIALIZERS_FIXIDX, + HPUX_C99_INTPTR_FIXIDX, + HPUX_C99_INTTYPES_FIXIDX, + HPUX_C99_INTTYPES2_FIXIDX, + HPUX_STDINT_LEAST_FAST_FIXIDX, + HPUX_INTTYPE_INT8_T_FIXIDX, + HPUX_IMAGINARY_I_FIXIDX, + HUGE_VAL_HEX_FIXIDX, + HUGE_VALF_HEX_FIXIDX, + HUGE_VALL_HEX_FIXIDX, + INT_ABORT_FREE_AND_EXIT_FIXIDX, + IO_QUOTES_DEF_FIXIDX, + IO_QUOTES_USE_FIXIDX, + IP_MISSING_SEMI_FIXIDX, + IRIX___RESTRICT_FIXIDX, + IRIX___GENERIC1_FIXIDX, + IRIX___GENERIC2_FIXIDX, + IRIX_ASM_APOSTROPHE_FIXIDX, + IRIX_COMPLEX_FIXIDX, + IRIX_LIMITS_CONST_FIXIDX, + IRIX_PTHREAD_INIT_FIXIDX, + IRIX_SOCKLEN_T_FIXIDX, + IRIX_STDINT_C99_MODE_FIXIDX, + IRIX_STDINT_C99_TYPES_FIXIDX, + IRIX_STDINT_C99_MACROS_FIXIDX, + IRIX_STDIO_VA_LIST_FIXIDX, + IRIX_WCSFTIME_FIXIDX, + KANDR_CONCAT_FIXIDX, + LINUX_IA64_UCONTEXT_FIXIDX, + LYNXOS_NO_WARNING_IN_SYS_TIME_H_FIXIDX, + LYNXOS_MISSING_PUTENV_FIXIDX, + MACHINE_ANSI_H_VA_LIST_FIXIDX, + MACHINE_NAME_FIXIDX, + MATH_EXCEPTION_FIXIDX, + MATH_HUGE_VAL_FROM_DBL_MAX_FIXIDX, + NESTED_AUTH_DES_FIXIDX, + NETBSD_C99_INLINE_1_FIXIDX, + NETBSD_C99_INLINE_2_FIXIDX, + NETBSD_EXTRA_SEMICOLON_FIXIDX, + NEWLIB_STDINT_1_FIXIDX, + NEWLIB_STDINT_2_FIXIDX, + NEXT_MATH_PREFIX_FIXIDX, + NEXT_TEMPLATE_FIXIDX, + NEXT_VOLITILE_FIXIDX, + NEXT_WAIT_UNION_FIXIDX, + NODEENT_SYNTAX_FIXIDX, + OPENBSD_NULL_DEFINITION_FIXIDX, + OBSTACK_LVALUE_CAST_FIXIDX, + OPENBSD_VA_START_FIXIDX, + OSF_NAMESPACE_A_FIXIDX, + OSF_NAMESPACE_C_FIXIDX, + PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_FIXIDX, + READ_RET_TYPE_FIXIDX, + RPC_XDR_LVALUE_CAST_A_FIXIDX, + RPC_XDR_LVALUE_CAST_B_FIXIDX, + RS6000_DOUBLE_FIXIDX, + RS6000_FCHMOD_FIXIDX, + RS6000_PARAM_FIXIDX, + SOLARIS___RESTRICT_FIXIDX, + SOLARIS_COMPLEX_FIXIDX, + SOLARIS_COMPLEX_CXX_FIXIDX, + SOLARIS_COND_INIT_FIXIDX, + SOLARIS_MATH_1_FIXIDX, + SOLARIS_MATH_2_FIXIDX, + SOLARIS_MATH_3_FIXIDX, + SOLARIS_MATH_4_FIXIDX, + SOLARIS_MATH_8_FIXIDX, + SOLARIS_MATH_9_FIXIDX, + SOLARIS_MATH_10_FIXIDX, + SOLARIS_MUTEX_INIT_2_FIXIDX, + SOLARIS_RWLOCK_INIT_1_FIXIDX, + SOLARIS_ONCE_INIT_1_FIXIDX, + SOLARIS_ONCE_INIT_2_FIXIDX, + SOLARIS_INT_CONST_FIXIDX, + SOLARIS_INT_LIMITS_1_FIXIDX, + SOLARIS_INT_LIMITS_2_FIXIDX, + SOLARIS_INT_LIMITS_3_FIXIDX, + SOLARIS_INT_TYPES_FIXIDX, + SOLARIS_STDIO_TAG_FIXIDX, + SOLARIS_SYS_VA_LIST_FIXIDX, + STATSSWTCH_FIXIDX, + STDIO_STDARG_H_FIXIDX, + STDIO_VA_LIST_FIXIDX, + STDIO_VA_LIST_CLIENTS_FIXIDX, + STRICT_ANSI_NOT_FIXIDX, + STRICT_ANSI_NOT_CTD_FIXIDX, + STRICT_ANSI_ONLY_FIXIDX, + STRUCT_FILE_FIXIDX, + STRUCT_SOCKADDR_FIXIDX, + SUN_AUTH_PROTO_FIXIDX, + SUN_BOGUS_IFDEF_FIXIDX, + SUN_CATMACRO_FIXIDX, + SUN_MALLOC_FIXIDX, + SUN_RUSERS_SEMI_FIXIDX, + SUN_SIGNAL_FIXIDX, + SUNOS_STRLEN_FIXIDX, + SVR4_DISABLE_OPT_FIXIDX, + SVR4_GETCWD_FIXIDX, + SVR4_PROFIL_FIXIDX, + SVR4_SIGHANDLER_TYPE_FIXIDX, + SVR4_UNDECLARED_GETRNGE_FIXIDX, + SYSV68_STRING_FIXIDX, + SYSZ_STDLIB_FOR_SUN_FIXIDX, + THREAD_KEYWORD_FIXIDX, + TINFO_CPLUSPLUS_FIXIDX, + ULTRIX_CONST_FIXIDX, + ULTRIX_CONST2_FIXIDX, + VA_I960_MACRO_FIXIDX, + VOID_NULL_FIXIDX, + VXWORKS_GCC_PROBLEM_FIXIDX, + VXWORKS_NEEDS_VXTYPES_FIXIDX, + VXWORKS_NEEDS_VXWORKS_FIXIDX, + VXWORKS_TIME_FIXIDX, + X11_CLASS_FIXIDX, + X11_CLASS_USAGE_FIXIDX, + X11_NEW_FIXIDX, + X11_SPRINTF_FIXIDX +} t_fixinc_idx; + +tFixDesc fixDescList[ FIX_COUNT ] = { + { zAab_Aix_StdioName, zAab_Aix_StdioList, + apzAab_Aix_StdioMachs, + AAB_AIX_STDIO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAab_Aix_StdioTests, apzAab_Aix_StdioPatch, 0 }, + + { zAab_Darwin7_9_Long_Double_FuncsName, zAab_Darwin7_9_Long_Double_FuncsList, + apzAab_Darwin7_9_Long_Double_FuncsMachs, + AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Darwin7_9_Long_Double_FuncsTests, apzAab_Darwin7_9_Long_Double_FuncsPatch, 0 }, + + { zAab_Darwin7_9_Long_Double_Funcs_2Name, zAab_Darwin7_9_Long_Double_Funcs_2List, + apzAab_Darwin7_9_Long_Double_Funcs_2Machs, + AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAab_Darwin7_9_Long_Double_Funcs_2Tests, apzAab_Darwin7_9_Long_Double_Funcs_2Patch, 0 }, + + { zAab_Fd_Zero_Asm_Posix_Types_HName, zAab_Fd_Zero_Asm_Posix_Types_HList, + apzAab_Fd_Zero_Asm_Posix_Types_HMachs, + AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Fd_Zero_Asm_Posix_Types_HTests, apzAab_Fd_Zero_Asm_Posix_Types_HPatch, 0 }, + + { zAab_Fd_Zero_Gnu_Types_HName, zAab_Fd_Zero_Gnu_Types_HList, + apzAab_Fd_Zero_Gnu_Types_HMachs, + AAB_FD_ZERO_GNU_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Fd_Zero_Gnu_Types_HTests, apzAab_Fd_Zero_Gnu_Types_HPatch, 0 }, + + { zAab_Fd_Zero_Selectbits_HName, zAab_Fd_Zero_Selectbits_HList, + apzAab_Fd_Zero_Selectbits_HMachs, + AAB_FD_ZERO_SELECTBITS_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Fd_Zero_Selectbits_HTests, apzAab_Fd_Zero_Selectbits_HPatch, 0 }, + + { zAab_Solaris_Sys_Varargs_HName, zAab_Solaris_Sys_Varargs_HList, + apzAab_Solaris_Sys_Varargs_HMachs, + AAB_SOLARIS_SYS_VARARGS_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Solaris_Sys_Varargs_HTests, apzAab_Solaris_Sys_Varargs_HPatch, 0 }, + + { zAab_Sun_MemcpyName, zAab_Sun_MemcpyList, + apzAab_Sun_MemcpyMachs, + AAB_SUN_MEMCPY_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Sun_MemcpyTests, apzAab_Sun_MemcpyPatch, 0 }, + + { zAix_ComplexName, zAix_ComplexList, + apzAix_ComplexMachs, + AIX_COMPLEX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_ComplexTests, apzAix_ComplexPatch, 0 }, + + { zAix_PthreadName, zAix_PthreadList, + apzAix_PthreadMachs, + AIX_PTHREAD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_PthreadTests, apzAix_PthreadPatch, 0 }, + + { zAix_Stdint_1Name, zAix_Stdint_1List, + apzAix_Stdint_1Machs, + AIX_STDINT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Stdint_1Tests, apzAix_Stdint_1Patch, 0 }, + + { zAix_Stdint_2Name, zAix_Stdint_2List, + apzAix_Stdint_2Machs, + AIX_STDINT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Stdint_2Tests, apzAix_Stdint_2Patch, 0 }, + + { zAix_Stdint_3Name, zAix_Stdint_3List, + apzAix_Stdint_3Machs, + AIX_STDINT_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Stdint_3Tests, apzAix_Stdint_3Patch, 0 }, + + { zAix_Stdint_4Name, zAix_Stdint_4List, + apzAix_Stdint_4Machs, + AIX_STDINT_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Stdint_4Tests, apzAix_Stdint_4Patch, 0 }, + + { zAix_Stdint_5Name, zAix_Stdint_5List, + apzAix_Stdint_5Machs, + AIX_STDINT_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Stdint_5Tests, apzAix_Stdint_5Patch, 0 }, + + { zAix_SysmachineName, zAix_SysmachineList, + apzAix_SysmachineMachs, + AIX_SYSMACHINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_SysmachineTests, apzAix_SysmachinePatch, 0 }, + + { zAix_Syswait_2Name, zAix_Syswait_2List, + apzAix_Syswait_2Machs, + AIX_SYSWAIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_Syswait_2Tests, apzAix_Syswait_2Patch, 0 }, + + { zAix_VolatileName, zAix_VolatileList, + apzAix_VolatileMachs, + AIX_VOLATILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAix_VolatileTests, apzAix_VolatilePatch, 0 }, + + { zAlpha___AssertName, zAlpha___AssertList, + apzAlpha___AssertMachs, + ALPHA___ASSERT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha___AssertTests, apzAlpha___AssertPatch, 0 }, + + { zAlpha___Extern_PrefixName, zAlpha___Extern_PrefixList, + apzAlpha___Extern_PrefixMachs, + ALPHA___EXTERN_PREFIX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha___Extern_PrefixTests, apzAlpha___Extern_PrefixPatch, 0 }, + + { zAlpha___Extern_Prefix_StandardsName, zAlpha___Extern_Prefix_StandardsList, + apzAlpha___Extern_Prefix_StandardsMachs, + ALPHA___EXTERN_PREFIX_STANDARDS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha___Extern_Prefix_StandardsTests, apzAlpha___Extern_Prefix_StandardsPatch, 0 }, + + { zAlpha___Extern_Prefix_Sys_StatName, zAlpha___Extern_Prefix_Sys_StatList, + apzAlpha___Extern_Prefix_Sys_StatMachs, + ALPHA___EXTERN_PREFIX_SYS_STAT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha___Extern_Prefix_Sys_StatTests, apzAlpha___Extern_Prefix_Sys_StatPatch, 0 }, + + { zAlpha_AssertName, zAlpha_AssertList, + apzAlpha_AssertMachs, + ALPHA_ASSERT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_AssertTests, apzAlpha_AssertPatch, 0 }, + + { zAlpha_Bad_LvalName, zAlpha_Bad_LvalList, + apzAlpha_Bad_LvalMachs, + ALPHA_BAD_LVAL_TEST_CT, FD_MACH_ONLY, + aAlpha_Bad_LvalTests, apzAlpha_Bad_LvalPatch, 0 }, + + { zAlpha_GetoptName, zAlpha_GetoptList, + apzAlpha_GetoptMachs, + ALPHA_GETOPT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_GetoptTests, apzAlpha_GetoptPatch, 0 }, + + { zAlpha_If_SemicolonName, zAlpha_If_SemicolonList, + apzAlpha_If_SemicolonMachs, + ALPHA_IF_SEMICOLON_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_If_SemicolonTests, apzAlpha_If_SemicolonPatch, 0 }, + + { zAlpha_ParensName, zAlpha_ParensList, + apzAlpha_ParensMachs, + ALPHA_PARENS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_ParensTests, apzAlpha_ParensPatch, 0 }, + + { zAlpha_PthreadName, zAlpha_PthreadList, + apzAlpha_PthreadMachs, + ALPHA_PTHREAD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_PthreadTests, apzAlpha_PthreadPatch, 0 }, + + { zAlpha_Pthread_GccName, zAlpha_Pthread_GccList, + apzAlpha_Pthread_GccMachs, + ALPHA_PTHREAD_GCC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_Pthread_GccTests, apzAlpha_Pthread_GccPatch, 0 }, + + { zAlpha_Pthread_InitName, zAlpha_Pthread_InitList, + apzAlpha_Pthread_InitMachs, + ALPHA_PTHREAD_INIT_TEST_CT, FD_MACH_ONLY, + aAlpha_Pthread_InitTests, apzAlpha_Pthread_InitPatch, 0 }, + + { zAlpha_SbrkName, zAlpha_SbrkList, + apzAlpha_SbrkMachs, + ALPHA_SBRK_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAlpha_SbrkTests, apzAlpha_SbrkPatch, 0 }, + + { zAvoid_Bool_DefineName, zAvoid_Bool_DefineList, + apzAvoid_Bool_DefineMachs, + AVOID_BOOL_DEFINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAvoid_Bool_DefineTests, apzAvoid_Bool_DefinePatch, 0 }, + + { zAvoid_Bool_TypeName, zAvoid_Bool_TypeList, + apzAvoid_Bool_TypeMachs, + AVOID_BOOL_TYPE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAvoid_Bool_TypeTests, apzAvoid_Bool_TypePatch, 0 }, + + { zAvoid_Wchar_T_TypeName, zAvoid_Wchar_T_TypeList, + apzAvoid_Wchar_T_TypeMachs, + AVOID_WCHAR_T_TYPE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aAvoid_Wchar_T_TypeTests, apzAvoid_Wchar_T_TypePatch, 0 }, + + { zBad_Struct_TermName, zBad_Struct_TermList, + apzBad_Struct_TermMachs, + BAD_STRUCT_TERM_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aBad_Struct_TermTests, apzBad_Struct_TermPatch, 0 }, + + { zBadquoteName, zBadquoteList, + apzBadquoteMachs, + BADQUOTE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aBadquoteTests, apzBadquotePatch, 0 }, + + { zBroken_Assert_StdioName, zBroken_Assert_StdioList, + apzBroken_Assert_StdioMachs, + BROKEN_ASSERT_STDIO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aBroken_Assert_StdioTests, apzBroken_Assert_StdioPatch, 0 }, + + { zBroken_Assert_StdlibName, zBroken_Assert_StdlibList, + apzBroken_Assert_StdlibMachs, + BROKEN_ASSERT_STDLIB_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aBroken_Assert_StdlibTests, apzBroken_Assert_StdlibPatch, 0 }, + + { zBroken_CabsName, zBroken_CabsList, + apzBroken_CabsMachs, + BROKEN_CABS_TEST_CT, FD_MACH_ONLY, + aBroken_CabsTests, apzBroken_CabsPatch, 0 }, + + { zBroken_NanName, zBroken_NanList, + apzBroken_NanMachs, + BROKEN_NAN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aBroken_NanTests, apzBroken_NanPatch, 0 }, + + { zBsd_Stdio_Attrs_ConflictName, zBsd_Stdio_Attrs_ConflictList, + apzBsd_Stdio_Attrs_ConflictMachs, + BSD_STDIO_ATTRS_CONFLICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aBsd_Stdio_Attrs_ConflictTests, apzBsd_Stdio_Attrs_ConflictPatch, 0 }, + + { zCtrl_Quotes_DefName, zCtrl_Quotes_DefList, + apzCtrl_Quotes_DefMachs, + CTRL_QUOTES_DEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aCtrl_Quotes_DefTests, apzCtrl_Quotes_DefPatch, 0 }, + + { zCtrl_Quotes_UseName, zCtrl_Quotes_UseList, + apzCtrl_Quotes_UseMachs, + CTRL_QUOTES_USE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aCtrl_Quotes_UseTests, apzCtrl_Quotes_UsePatch, 0 }, + + { zCxx_UnreadyName, zCxx_UnreadyList, + apzCxx_UnreadyMachs, + CXX_UNREADY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aCxx_UnreadyTests, apzCxx_UnreadyPatch, 0 }, + + { zDarwin_ExterncName, zDarwin_ExterncList, + apzDarwin_ExterncMachs, + DARWIN_EXTERNC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_ExterncTests, apzDarwin_ExterncPatch, 0 }, + + { zDarwin_Gcc4_BreakageName, zDarwin_Gcc4_BreakageList, + apzDarwin_Gcc4_BreakageMachs, + DARWIN_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Gcc4_BreakageTests, apzDarwin_Gcc4_BreakagePatch, 0 }, + + { zDarwin_Private_ExternName, zDarwin_Private_ExternList, + apzDarwin_Private_ExternMachs, + DARWIN_PRIVATE_EXTERN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Private_ExternTests, apzDarwin_Private_ExternPatch, 0 }, + + { zDarwin_Stdint_1Name, zDarwin_Stdint_1List, + apzDarwin_Stdint_1Machs, + DARWIN_STDINT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_1Tests, apzDarwin_Stdint_1Patch, 0 }, + + { zDarwin_Stdint_2Name, zDarwin_Stdint_2List, + apzDarwin_Stdint_2Machs, + DARWIN_STDINT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_2Tests, apzDarwin_Stdint_2Patch, 0 }, + + { zDarwin_Stdint_3Name, zDarwin_Stdint_3List, + apzDarwin_Stdint_3Machs, + DARWIN_STDINT_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_3Tests, apzDarwin_Stdint_3Patch, 0 }, + + { zDarwin_Stdint_4Name, zDarwin_Stdint_4List, + apzDarwin_Stdint_4Machs, + DARWIN_STDINT_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_4Tests, apzDarwin_Stdint_4Patch, 0 }, + + { zDarwin_Stdint_5Name, zDarwin_Stdint_5List, + apzDarwin_Stdint_5Machs, + DARWIN_STDINT_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_5Tests, apzDarwin_Stdint_5Patch, 0 }, + + { zDarwin_Stdint_6Name, zDarwin_Stdint_6List, + apzDarwin_Stdint_6Machs, + DARWIN_STDINT_6_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_6Tests, apzDarwin_Stdint_6Patch, 0 }, + + { zDarwin_Stdint_7Name, zDarwin_Stdint_7List, + apzDarwin_Stdint_7Machs, + DARWIN_STDINT_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_7Tests, apzDarwin_Stdint_7Patch, 0 }, + + { zDec_Intern_AsmName, zDec_Intern_AsmList, + apzDec_Intern_AsmMachs, + DEC_INTERN_ASM_TEST_CT, FD_MACH_ONLY, + aDec_Intern_AsmTests, apzDec_Intern_AsmPatch, 0 }, + + { zDjgpp_Wchar_HName, zDjgpp_Wchar_HList, + apzDjgpp_Wchar_HMachs, + DJGPP_WCHAR_H_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDjgpp_Wchar_HTests, apzDjgpp_Wchar_HPatch, 0 }, + + { zEcd_CursorName, zEcd_CursorList, + apzEcd_CursorMachs, + ECD_CURSOR_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aEcd_CursorTests, apzEcd_CursorPatch, 0 }, + + { zFreebsd_Gcc3_BreakageName, zFreebsd_Gcc3_BreakageList, + apzFreebsd_Gcc3_BreakageMachs, + FREEBSD_GCC3_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aFreebsd_Gcc3_BreakageTests, apzFreebsd_Gcc3_BreakagePatch, 0 }, + + { zFreebsd_Gcc4_BreakageName, zFreebsd_Gcc4_BreakageList, + apzFreebsd_Gcc4_BreakageMachs, + FREEBSD_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aFreebsd_Gcc4_BreakageTests, apzFreebsd_Gcc4_BreakagePatch, 0 }, + + { zGlibc_C99_Inline_1Name, zGlibc_C99_Inline_1List, + apzGlibc_C99_Inline_1Machs, + GLIBC_C99_INLINE_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_C99_Inline_1Tests, apzGlibc_C99_Inline_1Patch, 0 }, + + { zGlibc_C99_Inline_1aName, zGlibc_C99_Inline_1aList, + apzGlibc_C99_Inline_1aMachs, + GLIBC_C99_INLINE_1A_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_C99_Inline_1aTests, apzGlibc_C99_Inline_1aPatch, 0 }, + + { zGlibc_C99_Inline_2Name, zGlibc_C99_Inline_2List, + apzGlibc_C99_Inline_2Machs, + GLIBC_C99_INLINE_2_TEST_CT, FD_MACH_ONLY, + aGlibc_C99_Inline_2Tests, apzGlibc_C99_Inline_2Patch, 0 }, + + { zGlibc_C99_Inline_3Name, zGlibc_C99_Inline_3List, + apzGlibc_C99_Inline_3Machs, + GLIBC_C99_INLINE_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_C99_Inline_3Tests, apzGlibc_C99_Inline_3Patch, 0 }, + + { zGlibc_C99_Inline_4Name, zGlibc_C99_Inline_4List, + apzGlibc_C99_Inline_4Machs, + GLIBC_C99_INLINE_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_C99_Inline_4Tests, apzGlibc_C99_Inline_4Patch, 0 }, + + { zGlibc_Mutex_InitName, zGlibc_Mutex_InitList, + apzGlibc_Mutex_InitMachs, + GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY, + aGlibc_Mutex_InitTests, apzGlibc_Mutex_InitPatch, 0 }, + + { zGlibc_StdintName, zGlibc_StdintList, + apzGlibc_StdintMachs, + GLIBC_STDINT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_StdintTests, apzGlibc_StdintPatch, 0 }, + + { zGlibc_StrncpyName, zGlibc_StrncpyList, + apzGlibc_StrncpyMachs, + GLIBC_STRNCPY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_StrncpyTests, apzGlibc_StrncpyPatch, 0 }, + + { zGlibc_TgmathName, zGlibc_TgmathList, + apzGlibc_TgmathMachs, + GLIBC_TGMATH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aGlibc_TgmathTests, apzGlibc_TgmathPatch, 0 }, + + { zGnu_TypesName, zGnu_TypesList, + apzGnu_TypesMachs, + GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE, + aGnu_TypesTests, apzGnu_TypesPatch, 0 }, + + { zHp_InlineName, zHp_InlineList, + apzHp_InlineMachs, + HP_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHp_InlineTests, apzHp_InlinePatch, 0 }, + + { zHp_SysfileName, zHp_SysfileList, + apzHp_SysfileMachs, + HP_SYSFILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHp_SysfileTests, apzHp_SysfilePatch, 0 }, + + { zHppa_Hpux_Fp_MacrosName, zHppa_Hpux_Fp_MacrosList, + apzHppa_Hpux_Fp_MacrosMachs, + HPPA_HPUX_FP_MACROS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHppa_Hpux_Fp_MacrosTests, apzHppa_Hpux_Fp_MacrosPatch, 0 }, + + { zHpux10_Cpp_Pow_InlineName, zHpux10_Cpp_Pow_InlineList, + apzHpux10_Cpp_Pow_InlineMachs, + HPUX10_CPP_POW_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux10_Cpp_Pow_InlineTests, apzHpux10_Cpp_Pow_InlinePatch, 0 }, + + { zHpux11_Cpp_Pow_InlineName, zHpux11_Cpp_Pow_InlineList, + apzHpux11_Cpp_Pow_InlineMachs, + HPUX11_CPP_POW_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_Cpp_Pow_InlineTests, apzHpux11_Cpp_Pow_InlinePatch, 0 }, + + { zHpux10_Ctype_Declarations1Name, zHpux10_Ctype_Declarations1List, + apzHpux10_Ctype_Declarations1Machs, + HPUX10_CTYPE_DECLARATIONS1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux10_Ctype_Declarations1Tests, apzHpux10_Ctype_Declarations1Patch, 0 }, + + { zHpux10_Ctype_Declarations2Name, zHpux10_Ctype_Declarations2List, + apzHpux10_Ctype_Declarations2Machs, + HPUX10_CTYPE_DECLARATIONS2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux10_Ctype_Declarations2Tests, apzHpux10_Ctype_Declarations2Patch, 0 }, + + { zHpux10_Stdio_DeclarationsName, zHpux10_Stdio_DeclarationsList, + apzHpux10_Stdio_DeclarationsMachs, + HPUX10_STDIO_DECLARATIONS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux10_Stdio_DeclarationsTests, apzHpux10_Stdio_DeclarationsPatch, 0 }, + + { zHpux11_AbsName, zHpux11_AbsList, + apzHpux11_AbsMachs, + HPUX11_ABS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_AbsTests, apzHpux11_AbsPatch, 0 }, + + { zHpux11_FabsfName, zHpux11_FabsfList, + apzHpux11_FabsfMachs, + HPUX11_FABSF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_FabsfTests, apzHpux11_FabsfPatch, 0 }, + + { zHpux11_Pthread_ConstName, zHpux11_Pthread_ConstList, + apzHpux11_Pthread_ConstMachs, + HPUX11_PTHREAD_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_Pthread_ConstTests, apzHpux11_Pthread_ConstPatch, 0 }, + + { zHpux11_Size_TName, zHpux11_Size_TList, + apzHpux11_Size_TMachs, + HPUX11_SIZE_T_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_Size_TTests, apzHpux11_Size_TPatch, 0 }, + + { zHpux11_SnprintfName, zHpux11_SnprintfList, + apzHpux11_SnprintfMachs, + HPUX11_SNPRINTF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_SnprintfTests, apzHpux11_SnprintfPatch, 0 }, + + { zHpux11_VsnprintfName, zHpux11_VsnprintfList, + apzHpux11_VsnprintfMachs, + HPUX11_VSNPRINTF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_VsnprintfTests, apzHpux11_VsnprintfPatch, 0 }, + + { zHpux8_Bogus_InlinesName, zHpux8_Bogus_InlinesList, + apzHpux8_Bogus_InlinesMachs, + HPUX8_BOGUS_INLINES_TEST_CT, FD_MACH_ONLY, + aHpux8_Bogus_InlinesTests, apzHpux8_Bogus_InlinesPatch, 0 }, + + { zHpux_Ctype_MacrosName, zHpux_Ctype_MacrosList, + apzHpux_Ctype_MacrosMachs, + HPUX_CTYPE_MACROS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Ctype_MacrosTests, apzHpux_Ctype_MacrosPatch, 0 }, + + { zHpux_HtonlName, zHpux_HtonlList, + apzHpux_HtonlMachs, + HPUX_HTONL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_HtonlTests, apzHpux_HtonlPatch, 0 }, + + { zHpux_Long_DoubleName, zHpux_Long_DoubleList, + apzHpux_Long_DoubleMachs, + HPUX_LONG_DOUBLE_TEST_CT, FD_MACH_ONLY, + aHpux_Long_DoubleTests, apzHpux_Long_DoublePatch, 0 }, + + { zHpux_Long_Double_2Name, zHpux_Long_Double_2List, + apzHpux_Long_Double_2Machs, + HPUX_LONG_DOUBLE_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Long_Double_2Tests, apzHpux_Long_Double_2Patch, 0 }, + + { zHpux_SystimeName, zHpux_SystimeList, + apzHpux_SystimeMachs, + HPUX_SYSTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_SystimeTests, apzHpux_SystimePatch, 0 }, + + { zHpux_Spu_InfoName, zHpux_Spu_InfoList, + apzHpux_Spu_InfoMachs, + HPUX_SPU_INFO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Spu_InfoTests, apzHpux_Spu_InfoPatch, 0 }, + + { zHpux11_Extern_SendfileName, zHpux11_Extern_SendfileList, + apzHpux11_Extern_SendfileMachs, + HPUX11_EXTERN_SENDFILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_Extern_SendfileTests, apzHpux11_Extern_SendfilePatch, 0 }, + + { zHpux11_Extern_SendpathName, zHpux11_Extern_SendpathList, + apzHpux11_Extern_SendpathMachs, + HPUX11_EXTERN_SENDPATH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux11_Extern_SendpathTests, apzHpux11_Extern_SendpathPatch, 0 }, + + { zHpux_Extern_ErrnoName, zHpux_Extern_ErrnoList, + apzHpux_Extern_ErrnoMachs, + HPUX_EXTERN_ERRNO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Extern_ErrnoTests, apzHpux_Extern_ErrnoPatch, 0 }, + + { zHpux_Pthread_InitializersName, zHpux_Pthread_InitializersList, + apzHpux_Pthread_InitializersMachs, + HPUX_PTHREAD_INITIALIZERS_TEST_CT, FD_MACH_ONLY, + aHpux_Pthread_InitializersTests, apzHpux_Pthread_InitializersPatch, 0 }, + + { zHpux_C99_IntptrName, zHpux_C99_IntptrList, + apzHpux_C99_IntptrMachs, + HPUX_C99_INTPTR_TEST_CT, FD_MACH_ONLY, + aHpux_C99_IntptrTests, apzHpux_C99_IntptrPatch, 0 }, + + { zHpux_C99_InttypesName, zHpux_C99_InttypesList, + apzHpux_C99_InttypesMachs, + HPUX_C99_INTTYPES_TEST_CT, FD_MACH_ONLY, + aHpux_C99_InttypesTests, apzHpux_C99_InttypesPatch, 0 }, + + { zHpux_C99_Inttypes2Name, zHpux_C99_Inttypes2List, + apzHpux_C99_Inttypes2Machs, + HPUX_C99_INTTYPES2_TEST_CT, FD_MACH_ONLY, + aHpux_C99_Inttypes2Tests, apzHpux_C99_Inttypes2Patch, 0 }, + + { zHpux_Stdint_Least_FastName, zHpux_Stdint_Least_FastList, + apzHpux_Stdint_Least_FastMachs, + HPUX_STDINT_LEAST_FAST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Stdint_Least_FastTests, apzHpux_Stdint_Least_FastPatch, 0 }, + + { zHpux_Inttype_Int8_TName, zHpux_Inttype_Int8_TList, + apzHpux_Inttype_Int8_TMachs, + HPUX_INTTYPE_INT8_T_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Inttype_Int8_TTests, apzHpux_Inttype_Int8_TPatch, 0 }, + + { zHpux_Imaginary_IName, zHpux_Imaginary_IList, + apzHpux_Imaginary_IMachs, + HPUX_IMAGINARY_I_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHpux_Imaginary_ITests, apzHpux_Imaginary_IPatch, 0 }, + + { zHuge_Val_HexName, zHuge_Val_HexList, + apzHuge_Val_HexMachs, + HUGE_VAL_HEX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHuge_Val_HexTests, apzHuge_Val_HexPatch, 0 }, + + { zHuge_Valf_HexName, zHuge_Valf_HexList, + apzHuge_Valf_HexMachs, + HUGE_VALF_HEX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHuge_Valf_HexTests, apzHuge_Valf_HexPatch, 0 }, + + { zHuge_Vall_HexName, zHuge_Vall_HexList, + apzHuge_Vall_HexMachs, + HUGE_VALL_HEX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aHuge_Vall_HexTests, apzHuge_Vall_HexPatch, 0 }, + + { zInt_Abort_Free_And_ExitName, zInt_Abort_Free_And_ExitList, + apzInt_Abort_Free_And_ExitMachs, + INT_ABORT_FREE_AND_EXIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aInt_Abort_Free_And_ExitTests, apzInt_Abort_Free_And_ExitPatch, 0 }, + + { zIo_Quotes_DefName, zIo_Quotes_DefList, + apzIo_Quotes_DefMachs, + IO_QUOTES_DEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIo_Quotes_DefTests, apzIo_Quotes_DefPatch, 0 }, + + { zIo_Quotes_UseName, zIo_Quotes_UseList, + apzIo_Quotes_UseMachs, + IO_QUOTES_USE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIo_Quotes_UseTests, apzIo_Quotes_UsePatch, 0 }, + + { zIp_Missing_SemiName, zIp_Missing_SemiList, + apzIp_Missing_SemiMachs, + IP_MISSING_SEMI_TEST_CT, FD_MACH_ONLY, + aIp_Missing_SemiTests, apzIp_Missing_SemiPatch, 0 }, + + { zIrix___RestrictName, zIrix___RestrictList, + apzIrix___RestrictMachs, + IRIX___RESTRICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix___RestrictTests, apzIrix___RestrictPatch, 0 }, + + { zIrix___Generic1Name, zIrix___Generic1List, + apzIrix___Generic1Machs, + IRIX___GENERIC1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix___Generic1Tests, apzIrix___Generic1Patch, 0 }, + + { zIrix___Generic2Name, zIrix___Generic2List, + apzIrix___Generic2Machs, + IRIX___GENERIC2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix___Generic2Tests, apzIrix___Generic2Patch, 0 }, + + { zIrix_Asm_ApostropheName, zIrix_Asm_ApostropheList, + apzIrix_Asm_ApostropheMachs, + IRIX_ASM_APOSTROPHE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Asm_ApostropheTests, apzIrix_Asm_ApostrophePatch, 0 }, + + { zIrix_ComplexName, zIrix_ComplexList, + apzIrix_ComplexMachs, + IRIX_COMPLEX_TEST_CT, FD_MACH_ONLY, + aIrix_ComplexTests, apzIrix_ComplexPatch, 0 }, + + { zIrix_Limits_ConstName, zIrix_Limits_ConstList, + apzIrix_Limits_ConstMachs, + IRIX_LIMITS_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Limits_ConstTests, apzIrix_Limits_ConstPatch, 0 }, + + { zIrix_Pthread_InitName, zIrix_Pthread_InitList, + apzIrix_Pthread_InitMachs, + IRIX_PTHREAD_INIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Pthread_InitTests, apzIrix_Pthread_InitPatch, 0 }, + + { zIrix_Socklen_TName, zIrix_Socklen_TList, + apzIrix_Socklen_TMachs, + IRIX_SOCKLEN_T_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Socklen_TTests, apzIrix_Socklen_TPatch, 0 }, + + { zIrix_Stdint_C99_ModeName, zIrix_Stdint_C99_ModeList, + apzIrix_Stdint_C99_ModeMachs, + IRIX_STDINT_C99_MODE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Stdint_C99_ModeTests, apzIrix_Stdint_C99_ModePatch, 0 }, + + { zIrix_Stdint_C99_TypesName, zIrix_Stdint_C99_TypesList, + apzIrix_Stdint_C99_TypesMachs, + IRIX_STDINT_C99_TYPES_TEST_CT, FD_MACH_ONLY, + aIrix_Stdint_C99_TypesTests, apzIrix_Stdint_C99_TypesPatch, 0 }, + + { zIrix_Stdint_C99_MacrosName, zIrix_Stdint_C99_MacrosList, + apzIrix_Stdint_C99_MacrosMachs, + IRIX_STDINT_C99_MACROS_TEST_CT, FD_MACH_ONLY, + aIrix_Stdint_C99_MacrosTests, apzIrix_Stdint_C99_MacrosPatch, 0 }, + + { zIrix_Stdio_Va_ListName, zIrix_Stdio_Va_ListList, + apzIrix_Stdio_Va_ListMachs, + IRIX_STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_Stdio_Va_ListTests, apzIrix_Stdio_Va_ListPatch, 0 }, + + { zIrix_WcsftimeName, zIrix_WcsftimeList, + apzIrix_WcsftimeMachs, + IRIX_WCSFTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aIrix_WcsftimeTests, apzIrix_WcsftimePatch, 0 }, + + { zKandr_ConcatName, zKandr_ConcatList, + apzKandr_ConcatMachs, + KANDR_CONCAT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aKandr_ConcatTests, apzKandr_ConcatPatch, 0 }, + + { zLinux_Ia64_UcontextName, zLinux_Ia64_UcontextList, + apzLinux_Ia64_UcontextMachs, + LINUX_IA64_UCONTEXT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aLinux_Ia64_UcontextTests, apzLinux_Ia64_UcontextPatch, 0 }, + + { zLynxos_No_Warning_In_Sys_Time_HName, zLynxos_No_Warning_In_Sys_Time_HList, + apzLynxos_No_Warning_In_Sys_Time_HMachs, + LYNXOS_NO_WARNING_IN_SYS_TIME_H_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aLynxos_No_Warning_In_Sys_Time_HTests, apzLynxos_No_Warning_In_Sys_Time_HPatch, 0 }, + + { zLynxos_Missing_PutenvName, zLynxos_Missing_PutenvList, + apzLynxos_Missing_PutenvMachs, + LYNXOS_MISSING_PUTENV_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aLynxos_Missing_PutenvTests, apzLynxos_Missing_PutenvPatch, 0 }, + + { zMachine_Ansi_H_Va_ListName, zMachine_Ansi_H_Va_ListList, + apzMachine_Ansi_H_Va_ListMachs, + MACHINE_ANSI_H_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aMachine_Ansi_H_Va_ListTests, apzMachine_Ansi_H_Va_ListPatch, 0 }, + + { zMachine_NameName, zMachine_NameList, + apzMachine_NameMachs, + MACHINE_NAME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aMachine_NameTests, apzMachine_NamePatch, 0 }, + + { zMath_ExceptionName, zMath_ExceptionList, + apzMath_ExceptionMachs, + MATH_EXCEPTION_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aMath_ExceptionTests, apzMath_ExceptionPatch, 0 }, + + { zMath_Huge_Val_From_Dbl_MaxName, zMath_Huge_Val_From_Dbl_MaxList, + apzMath_Huge_Val_From_Dbl_MaxMachs, + MATH_HUGE_VAL_FROM_DBL_MAX_TEST_CT, FD_MACH_ONLY | FD_SHELL_SCRIPT, + aMath_Huge_Val_From_Dbl_MaxTests, apzMath_Huge_Val_From_Dbl_MaxPatch, 0 }, + + { zNested_Auth_DesName, zNested_Auth_DesList, + apzNested_Auth_DesMachs, + NESTED_AUTH_DES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNested_Auth_DesTests, apzNested_Auth_DesPatch, 0 }, + + { zNetbsd_C99_Inline_1Name, zNetbsd_C99_Inline_1List, + apzNetbsd_C99_Inline_1Machs, + NETBSD_C99_INLINE_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNetbsd_C99_Inline_1Tests, apzNetbsd_C99_Inline_1Patch, 0 }, + + { zNetbsd_C99_Inline_2Name, zNetbsd_C99_Inline_2List, + apzNetbsd_C99_Inline_2Machs, + NETBSD_C99_INLINE_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNetbsd_C99_Inline_2Tests, apzNetbsd_C99_Inline_2Patch, 0 }, + + { zNetbsd_Extra_SemicolonName, zNetbsd_Extra_SemicolonList, + apzNetbsd_Extra_SemicolonMachs, + NETBSD_EXTRA_SEMICOLON_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNetbsd_Extra_SemicolonTests, apzNetbsd_Extra_SemicolonPatch, 0 }, + + { zNewlib_Stdint_1Name, zNewlib_Stdint_1List, + apzNewlib_Stdint_1Machs, + NEWLIB_STDINT_1_TEST_CT, FD_MACH_ONLY, + aNewlib_Stdint_1Tests, apzNewlib_Stdint_1Patch, 0 }, + + { zNewlib_Stdint_2Name, zNewlib_Stdint_2List, + apzNewlib_Stdint_2Machs, + NEWLIB_STDINT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNewlib_Stdint_2Tests, apzNewlib_Stdint_2Patch, 0 }, + + { zNext_Math_PrefixName, zNext_Math_PrefixList, + apzNext_Math_PrefixMachs, + NEXT_MATH_PREFIX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNext_Math_PrefixTests, apzNext_Math_PrefixPatch, 0 }, + + { zNext_TemplateName, zNext_TemplateList, + apzNext_TemplateMachs, + NEXT_TEMPLATE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNext_TemplateTests, apzNext_TemplatePatch, 0 }, + + { zNext_VolitileName, zNext_VolitileList, + apzNext_VolitileMachs, + NEXT_VOLITILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNext_VolitileTests, apzNext_VolitilePatch, 0 }, + + { zNext_Wait_UnionName, zNext_Wait_UnionList, + apzNext_Wait_UnionMachs, + NEXT_WAIT_UNION_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNext_Wait_UnionTests, apzNext_Wait_UnionPatch, 0 }, + + { zNodeent_SyntaxName, zNodeent_SyntaxList, + apzNodeent_SyntaxMachs, + NODEENT_SYNTAX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aNodeent_SyntaxTests, apzNodeent_SyntaxPatch, 0 }, + + { zOpenbsd_Null_DefinitionName, zOpenbsd_Null_DefinitionList, + apzOpenbsd_Null_DefinitionMachs, + OPENBSD_NULL_DEFINITION_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aOpenbsd_Null_DefinitionTests, apzOpenbsd_Null_DefinitionPatch, 0 }, + + { zObstack_Lvalue_CastName, zObstack_Lvalue_CastList, + apzObstack_Lvalue_CastMachs, + OBSTACK_LVALUE_CAST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aObstack_Lvalue_CastTests, apzObstack_Lvalue_CastPatch, 0 }, + + { zOpenbsd_Va_StartName, zOpenbsd_Va_StartList, + apzOpenbsd_Va_StartMachs, + OPENBSD_VA_START_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aOpenbsd_Va_StartTests, apzOpenbsd_Va_StartPatch, 0 }, + + { zOsf_Namespace_AName, zOsf_Namespace_AList, + apzOsf_Namespace_AMachs, + OSF_NAMESPACE_A_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aOsf_Namespace_ATests, apzOsf_Namespace_APatch, 0 }, + + { zOsf_Namespace_CName, zOsf_Namespace_CList, + apzOsf_Namespace_CMachs, + OSF_NAMESPACE_C_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aOsf_Namespace_CTests, apzOsf_Namespace_CPatch, 0 }, + + { zPthread_Incomplete_Struct_ArgumentName, zPthread_Incomplete_Struct_ArgumentList, + apzPthread_Incomplete_Struct_ArgumentMachs, + PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aPthread_Incomplete_Struct_ArgumentTests, apzPthread_Incomplete_Struct_ArgumentPatch, 0 }, + + { zRead_Ret_TypeName, zRead_Ret_TypeList, + apzRead_Ret_TypeMachs, + READ_RET_TYPE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aRead_Ret_TypeTests, apzRead_Ret_TypePatch, 0 }, + + { zRpc_Xdr_Lvalue_Cast_AName, zRpc_Xdr_Lvalue_Cast_AList, + apzRpc_Xdr_Lvalue_Cast_AMachs, + RPC_XDR_LVALUE_CAST_A_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aRpc_Xdr_Lvalue_Cast_ATests, apzRpc_Xdr_Lvalue_Cast_APatch, 0 }, + + { zRpc_Xdr_Lvalue_Cast_BName, zRpc_Xdr_Lvalue_Cast_BList, + apzRpc_Xdr_Lvalue_Cast_BMachs, + RPC_XDR_LVALUE_CAST_B_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aRpc_Xdr_Lvalue_Cast_BTests, apzRpc_Xdr_Lvalue_Cast_BPatch, 0 }, + + { zRs6000_DoubleName, zRs6000_DoubleList, + apzRs6000_DoubleMachs, + RS6000_DOUBLE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aRs6000_DoubleTests, apzRs6000_DoublePatch, 0 }, + + { zRs6000_FchmodName, zRs6000_FchmodList, + apzRs6000_FchmodMachs, + RS6000_FCHMOD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aRs6000_FchmodTests, apzRs6000_FchmodPatch, 0 }, + + { zRs6000_ParamName, zRs6000_ParamList, + apzRs6000_ParamMachs, + RS6000_PARAM_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aRs6000_ParamTests, apzRs6000_ParamPatch, 0 }, + + { zSolaris___RestrictName, zSolaris___RestrictList, + apzSolaris___RestrictMachs, + SOLARIS___RESTRICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris___RestrictTests, apzSolaris___RestrictPatch, 0 }, + + { zSolaris_ComplexName, zSolaris_ComplexList, + apzSolaris_ComplexMachs, + SOLARIS_COMPLEX_TEST_CT, FD_MACH_ONLY, + aSolaris_ComplexTests, apzSolaris_ComplexPatch, 0 }, + + { zSolaris_Complex_CxxName, zSolaris_Complex_CxxList, + apzSolaris_Complex_CxxMachs, + SOLARIS_COMPLEX_CXX_TEST_CT, FD_MACH_ONLY, + aSolaris_Complex_CxxTests, apzSolaris_Complex_CxxPatch, 0 }, + + { zSolaris_Cond_InitName, zSolaris_Cond_InitList, + apzSolaris_Cond_InitMachs, + SOLARIS_COND_INIT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Cond_InitTests, apzSolaris_Cond_InitPatch, 0 }, + + { zSolaris_Math_1Name, zSolaris_Math_1List, + apzSolaris_Math_1Machs, + SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_1Tests, apzSolaris_Math_1Patch, 0 }, + + { zSolaris_Math_2Name, zSolaris_Math_2List, + apzSolaris_Math_2Machs, + SOLARIS_MATH_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_2Tests, apzSolaris_Math_2Patch, 0 }, + + { zSolaris_Math_3Name, zSolaris_Math_3List, + apzSolaris_Math_3Machs, + SOLARIS_MATH_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_3Tests, apzSolaris_Math_3Patch, 0 }, + + { zSolaris_Math_4Name, zSolaris_Math_4List, + apzSolaris_Math_4Machs, + SOLARIS_MATH_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_4Tests, apzSolaris_Math_4Patch, 0 }, + + { zSolaris_Math_8Name, zSolaris_Math_8List, + apzSolaris_Math_8Machs, + SOLARIS_MATH_8_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_8Tests, apzSolaris_Math_8Patch, 0 }, + + { zSolaris_Math_9Name, zSolaris_Math_9List, + apzSolaris_Math_9Machs, + SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 }, + + { zSolaris_Math_10Name, zSolaris_Math_10List, + apzSolaris_Math_10Machs, + SOLARIS_MATH_10_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Math_10Tests, apzSolaris_Math_10Patch, 0 }, + + { zSolaris_Mutex_Init_2Name, zSolaris_Mutex_Init_2List, + apzSolaris_Mutex_Init_2Machs, + SOLARIS_MUTEX_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Mutex_Init_2Tests, apzSolaris_Mutex_Init_2Patch, 0 }, + + { zSolaris_Rwlock_Init_1Name, zSolaris_Rwlock_Init_1List, + apzSolaris_Rwlock_Init_1Machs, + SOLARIS_RWLOCK_INIT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Rwlock_Init_1Tests, apzSolaris_Rwlock_Init_1Patch, 0 }, + + { zSolaris_Once_Init_1Name, zSolaris_Once_Init_1List, + apzSolaris_Once_Init_1Machs, + SOLARIS_ONCE_INIT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Once_Init_1Tests, apzSolaris_Once_Init_1Patch, 0 }, + + { zSolaris_Once_Init_2Name, zSolaris_Once_Init_2List, + apzSolaris_Once_Init_2Machs, + SOLARIS_ONCE_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Once_Init_2Tests, apzSolaris_Once_Init_2Patch, 0 }, + + { zSolaris_Int_ConstName, zSolaris_Int_ConstList, + apzSolaris_Int_ConstMachs, + SOLARIS_INT_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Int_ConstTests, apzSolaris_Int_ConstPatch, 0 }, + + { zSolaris_Int_Limits_1Name, zSolaris_Int_Limits_1List, + apzSolaris_Int_Limits_1Machs, + SOLARIS_INT_LIMITS_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Int_Limits_1Tests, apzSolaris_Int_Limits_1Patch, 0 }, + + { zSolaris_Int_Limits_2Name, zSolaris_Int_Limits_2List, + apzSolaris_Int_Limits_2Machs, + SOLARIS_INT_LIMITS_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Int_Limits_2Tests, apzSolaris_Int_Limits_2Patch, 0 }, + + { zSolaris_Int_Limits_3Name, zSolaris_Int_Limits_3List, + apzSolaris_Int_Limits_3Machs, + SOLARIS_INT_LIMITS_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Int_Limits_3Tests, apzSolaris_Int_Limits_3Patch, 0 }, + + { zSolaris_Int_TypesName, zSolaris_Int_TypesList, + apzSolaris_Int_TypesMachs, + SOLARIS_INT_TYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Int_TypesTests, apzSolaris_Int_TypesPatch, 0 }, + + { zSolaris_Stdio_TagName, zSolaris_Stdio_TagList, + apzSolaris_Stdio_TagMachs, + SOLARIS_STDIO_TAG_TEST_CT, FD_MACH_ONLY, + aSolaris_Stdio_TagTests, apzSolaris_Stdio_TagPatch, 0 }, + + { zSolaris_Sys_Va_ListName, zSolaris_Sys_Va_ListList, + apzSolaris_Sys_Va_ListMachs, + SOLARIS_SYS_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSolaris_Sys_Va_ListTests, apzSolaris_Sys_Va_ListPatch, 0 }, + + { zStatsswtchName, zStatsswtchList, + apzStatsswtchMachs, + STATSSWTCH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStatsswtchTests, apzStatsswtchPatch, 0 }, + + { zStdio_Stdarg_HName, zStdio_Stdarg_HList, + apzStdio_Stdarg_HMachs, + STDIO_STDARG_H_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE, + aStdio_Stdarg_HTests, apzStdio_Stdarg_HPatch, 0 }, + + { zStdio_Va_ListName, zStdio_Va_ListList, + apzStdio_Va_ListMachs, + STDIO_VA_LIST_TEST_CT, FD_MACH_IFNOT, + aStdio_Va_ListTests, apzStdio_Va_ListPatch, 0 }, + + { zStdio_Va_List_ClientsName, zStdio_Va_List_ClientsList, + apzStdio_Va_List_ClientsMachs, + STDIO_VA_LIST_CLIENTS_TEST_CT, FD_MACH_ONLY, + aStdio_Va_List_ClientsTests, apzStdio_Va_List_ClientsPatch, 0 }, + + { zStrict_Ansi_NotName, zStrict_Ansi_NotList, + apzStrict_Ansi_NotMachs, + STRICT_ANSI_NOT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStrict_Ansi_NotTests, apzStrict_Ansi_NotPatch, 0 }, + + { zStrict_Ansi_Not_CtdName, zStrict_Ansi_Not_CtdList, + apzStrict_Ansi_Not_CtdMachs, + STRICT_ANSI_NOT_CTD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStrict_Ansi_Not_CtdTests, apzStrict_Ansi_Not_CtdPatch, 0 }, + + { zStrict_Ansi_OnlyName, zStrict_Ansi_OnlyList, + apzStrict_Ansi_OnlyMachs, + STRICT_ANSI_ONLY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStrict_Ansi_OnlyTests, apzStrict_Ansi_OnlyPatch, 0 }, + + { zStruct_FileName, zStruct_FileList, + apzStruct_FileMachs, + STRUCT_FILE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStruct_FileTests, apzStruct_FilePatch, 0 }, + + { zStruct_SockaddrName, zStruct_SockaddrList, + apzStruct_SockaddrMachs, + STRUCT_SOCKADDR_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aStruct_SockaddrTests, apzStruct_SockaddrPatch, 0 }, + + { zSun_Auth_ProtoName, zSun_Auth_ProtoList, + apzSun_Auth_ProtoMachs, + SUN_AUTH_PROTO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSun_Auth_ProtoTests, apzSun_Auth_ProtoPatch, 0 }, + + { zSun_Bogus_IfdefName, zSun_Bogus_IfdefList, + apzSun_Bogus_IfdefMachs, + SUN_BOGUS_IFDEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSun_Bogus_IfdefTests, apzSun_Bogus_IfdefPatch, 0 }, + + { zSun_CatmacroName, zSun_CatmacroList, + apzSun_CatmacroMachs, + SUN_CATMACRO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSun_CatmacroTests, apzSun_CatmacroPatch, 0 }, + + { zSun_MallocName, zSun_MallocList, + apzSun_MallocMachs, + SUN_MALLOC_TEST_CT, FD_MACH_ONLY, + aSun_MallocTests, apzSun_MallocPatch, 0 }, + + { zSun_Rusers_SemiName, zSun_Rusers_SemiList, + apzSun_Rusers_SemiMachs, + SUN_RUSERS_SEMI_TEST_CT, FD_MACH_ONLY, + aSun_Rusers_SemiTests, apzSun_Rusers_SemiPatch, 0 }, + + { zSun_SignalName, zSun_SignalList, + apzSun_SignalMachs, + SUN_SIGNAL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSun_SignalTests, apzSun_SignalPatch, 0 }, + + { zSunos_StrlenName, zSunos_StrlenList, + apzSunos_StrlenMachs, + SUNOS_STRLEN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSunos_StrlenTests, apzSunos_StrlenPatch, 0 }, + + { zSvr4_Disable_OptName, zSvr4_Disable_OptList, + apzSvr4_Disable_OptMachs, + SVR4_DISABLE_OPT_TEST_CT, FD_MACH_ONLY, + aSvr4_Disable_OptTests, apzSvr4_Disable_OptPatch, 0 }, + + { zSvr4_GetcwdName, zSvr4_GetcwdList, + apzSvr4_GetcwdMachs, + SVR4_GETCWD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSvr4_GetcwdTests, apzSvr4_GetcwdPatch, 0 }, + + { zSvr4_ProfilName, zSvr4_ProfilList, + apzSvr4_ProfilMachs, + SVR4_PROFIL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSvr4_ProfilTests, apzSvr4_ProfilPatch, 0 }, + + { zSvr4_Sighandler_TypeName, zSvr4_Sighandler_TypeList, + apzSvr4_Sighandler_TypeMachs, + SVR4_SIGHANDLER_TYPE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSvr4_Sighandler_TypeTests, apzSvr4_Sighandler_TypePatch, 0 }, + + { zSvr4_Undeclared_GetrngeName, zSvr4_Undeclared_GetrngeList, + apzSvr4_Undeclared_GetrngeMachs, + SVR4_UNDECLARED_GETRNGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSvr4_Undeclared_GetrngeTests, apzSvr4_Undeclared_GetrngePatch, 0 }, + + { zSysv68_StringName, zSysv68_StringList, + apzSysv68_StringMachs, + SYSV68_STRING_TEST_CT, FD_MACH_ONLY, + aSysv68_StringTests, apzSysv68_StringPatch, 0 }, + + { zSysz_Stdlib_For_SunName, zSysz_Stdlib_For_SunList, + apzSysz_Stdlib_For_SunMachs, + SYSZ_STDLIB_FOR_SUN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aSysz_Stdlib_For_SunTests, apzSysz_Stdlib_For_SunPatch, 0 }, + + { zThread_KeywordName, zThread_KeywordList, + apzThread_KeywordMachs, + THREAD_KEYWORD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aThread_KeywordTests, apzThread_KeywordPatch, 0 }, + + { zTinfo_CplusplusName, zTinfo_CplusplusList, + apzTinfo_CplusplusMachs, + TINFO_CPLUSPLUS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aTinfo_CplusplusTests, apzTinfo_CplusplusPatch, 0 }, + + { zUltrix_ConstName, zUltrix_ConstList, + apzUltrix_ConstMachs, + ULTRIX_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aUltrix_ConstTests, apzUltrix_ConstPatch, 0 }, + + { zUltrix_Const2Name, zUltrix_Const2List, + apzUltrix_Const2Machs, + ULTRIX_CONST2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aUltrix_Const2Tests, apzUltrix_Const2Patch, 0 }, + + { zVa_I960_MacroName, zVa_I960_MacroList, + apzVa_I960_MacroMachs, + VA_I960_MACRO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aVa_I960_MacroTests, apzVa_I960_MacroPatch, 0 }, + + { zVoid_NullName, zVoid_NullList, + apzVoid_NullMachs, + VOID_NULL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aVoid_NullTests, apzVoid_NullPatch, 0 }, + + { zVxworks_Gcc_ProblemName, zVxworks_Gcc_ProblemList, + apzVxworks_Gcc_ProblemMachs, + VXWORKS_GCC_PROBLEM_TEST_CT, FD_MACH_ONLY, + aVxworks_Gcc_ProblemTests, apzVxworks_Gcc_ProblemPatch, 0 }, + + { zVxworks_Needs_VxtypesName, zVxworks_Needs_VxtypesList, + apzVxworks_Needs_VxtypesMachs, + VXWORKS_NEEDS_VXTYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aVxworks_Needs_VxtypesTests, apzVxworks_Needs_VxtypesPatch, 0 }, + + { zVxworks_Needs_VxworksName, zVxworks_Needs_VxworksList, + apzVxworks_Needs_VxworksMachs, + VXWORKS_NEEDS_VXWORKS_TEST_CT, FD_MACH_ONLY, + aVxworks_Needs_VxworksTests, apzVxworks_Needs_VxworksPatch, 0 }, + + { zVxworks_TimeName, zVxworks_TimeList, + apzVxworks_TimeMachs, + VXWORKS_TIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aVxworks_TimeTests, apzVxworks_TimePatch, 0 }, + + { zX11_ClassName, zX11_ClassList, + apzX11_ClassMachs, + X11_CLASS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aX11_ClassTests, apzX11_ClassPatch, 0 }, + + { zX11_Class_UsageName, zX11_Class_UsageList, + apzX11_Class_UsageMachs, + X11_CLASS_USAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aX11_Class_UsageTests, apzX11_Class_UsagePatch, 0 }, + + { zX11_NewName, zX11_NewList, + apzX11_NewMachs, + X11_NEW_TEST_CT, FD_MACH_ONLY, + aX11_NewTests, apzX11_NewPatch, 0 }, + + { zX11_SprintfName, zX11_SprintfList, + apzX11_SprintfMachs, + X11_SPRINTF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aX11_SprintfTests, apzX11_SprintfPatch, 0 } +}; diff --git a/fixincludes/fixlib.c b/fixincludes/fixlib.c new file mode 100644 index 000000000..1fec773d3 --- /dev/null +++ b/fixincludes/fixlib.c @@ -0,0 +1,280 @@ + +/* Install modified versions of certain ANSI-incompatible system header + files which are fixed to work correctly with ANSI C and placed in a + directory that GCC will search. + + Copyright (C) 1999, 2000, 2001, 2004, 2009 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "fixlib.h" + +/* * * * * * * * * * * * * + + load_file_data loads all the contents of a file into malloc-ed memory. + Its argument is the file pointer of the file to read in; the returned + result is the NUL terminated contents of the file. The file + is presumed to be an ASCII text file containing no NULs. */ + +char * +load_file_data (FILE* fp) +{ + char *pz_data = (char*)NULL; + int space_left = -1; /* allow for terminating NUL */ + size_t space_used = 0; + + if (fp == (FILE*)NULL) + return pz_data; + + do + { + size_t size_read; + + if (space_left < 1024) + { + space_left += 4096; + pz_data = XRESIZEVEC (char, pz_data, space_left + space_used + 1 ); + } + size_read = fread (pz_data + space_used, 1, space_left, fp); + + if (size_read == 0) + { + if (feof (fp)) + break; + + if (ferror (fp)) + { + int err = errno; + if (err != EISDIR) + fprintf (stderr, "error %d (%s) reading input\n", err, + xstrerror (err)); + free ((void *) pz_data); + return (char *) NULL; + } + } + + space_left -= size_read; + space_used += size_read; + } while (! feof (fp)); + + pz_data = XRESIZEVEC (char, pz_data, space_used+1 ); + pz_data[ space_used ] = NUL; + + return pz_data; +} + +#ifdef IS_CXX_HEADER_NEEDED +t_bool +is_cxx_header (tCC* fname, tCC* text) +{ + /* First, check to see if the file is in a C++ directory */ + for (;;) + { + switch (*(fname++)) + { + case 'C': /* check for "CC/" */ + if ((fname[0] == 'C') && (fname[1] == '/')) + return BOOL_TRUE; + break; + + case 'x': /* check for "xx/" */ + if ((fname[0] == 'x') && (fname[1] == '/')) + return BOOL_TRUE; + break; + + case '+': /* check for "++" */ + if (fname[0] == '+') + return BOOL_TRUE; + break; + + case NUL: + goto not_cxx_name; + } + } not_cxx_name:; + + /* Or it might contain one of several phrases which indicate C++ code. + Currently recognized are: + extern "C++" + -*- (Mode: )? C++ -*- (emacs mode marker) + template < + */ + { + tSCC cxxpat[] = "\ +extern[ \t]*\"C\\+\\+\"|\ +-\\*-[ \t]*([mM]ode:[ \t]*)?[cC]\\+\\+[; \t]*-\\*-|\ +template[ \t]*<|\ +^[ \t]*class[ \t]|\ +(public|private|protected):|\ +^[ \t]*#[ \t]*pragma[ \t]+(interface|implementation)\ +"; + static regex_t cxxre; + static int compiled; + + if (!compiled) + compile_re (cxxpat, &cxxre, 0, "contents check", "is_cxx_header"); + + if (xregexec (&cxxre, text, 0, 0, 0) == 0) + return BOOL_TRUE; + } + + return BOOL_FALSE; +} +#endif /* CXX_TYPE_NEEDED */ + +#ifdef SKIP_QUOTE_NEEDED +/* + * Skip over a quoted string. Single quote strings may + * contain multiple characters if the first character is + * a backslash. Especially a backslash followed by octal digits. + * We are not doing a correctness syntax check here. + */ +tCC* +skip_quote(char q, char* text ) +{ + for (;;) + { + char ch = *(text++); + switch (ch) + { + case '\\': + text++; /* skip over whatever character follows */ + break; + + case '"': + case '\'': + if (ch != q) + break; + /*FALLTHROUGH*/ + + case '\n': + case NUL: + goto skip_done; + } + } skip_done:; + + return text; +} +#endif /* SKIP_QUOTE_NEEDED */ + +/* * * * * * * * * * * * * + + Compile one regular expression pattern for later use. PAT contains + the pattern, RE points to a regex_t structure (which should have + been bzeroed). MATCH is 1 if we need to know where the regex + matched, 0 if not. If xregcomp fails, prints an error message and + aborts; E1 and E2 are strings to shove into the error message. + + The patterns we search for are all egrep patterns. + REG_EXTENDED|REG_NEWLINE produces identical regex syntax/semantics + to egrep (verified from 4.4BSD Programmer's Reference Manual). */ +void +compile_re( tCC* pat, regex_t* re, int match, tCC* e1, tCC* e2 ) +{ + tSCC z_bad_comp[] = "fixincl ERROR: cannot compile %s regex for %s\n\ +\texpr = `%s'\n\terror %s\n"; + int flags, err; + + flags = (match ? REG_EXTENDED|REG_NEWLINE + : REG_EXTENDED|REG_NEWLINE|REG_NOSUB); + err = xregcomp (re, pat, flags); + + if (err) + { + char rerrbuf[1024]; + regerror (err, re, rerrbuf, 1024); + fprintf (stderr, z_bad_comp, e1, e2, pat, rerrbuf); + exit (EXIT_FAILURE); + } +} + +/* * * * * * * * * * * * * + + Helper routine and data for the machine_name test and fix. */ + +tSCC mn_label_pat[] = "^[ \t]*#[ \t]*(if|ifdef|ifndef)[ \t]+"; +static regex_t mn_label_re; +static regex_t mn_name_re; + +static int mn_compiled = 0; + +t_bool +mn_get_regexps(regex_t** label_re, regex_t** name_re, tCC* who ) +{ + if (! pz_mn_name_pat) + return BOOL_FALSE; + + if (! mn_compiled) + { + compile_re (mn_label_pat, &mn_label_re, 1, "label pattern", who); + compile_re (pz_mn_name_pat, &mn_name_re, 1, "name pattern", who); + mn_compiled++; + } + *label_re = &mn_label_re; + *name_re = &mn_name_re; + return BOOL_TRUE; +} + + +#ifdef SEPARATE_FIX_PROC + +char* +make_raw_shell_str( char* pz_d, tCC* pz_s, size_t smax ) +{ + tSCC zQ[] = "'\\''"; + size_t dtaSize; + char* pz_d_start = pz_d; + + smax--; /* adjust for trailing NUL */ + + dtaSize = strlen( pz_s ) + 3; + + { + const char* pz = pz_s - 1; + + for (;;) { + pz = strchr( pz+1, '\'' ); + if (pz == (char*)NULL) + break; + dtaSize += sizeof( zQ )-1; + } + } + if (dtaSize > smax) + return (char*)NULL; + + *(pz_d++) = '\''; + + for (;;) { + if ((size_t) (pz_d - pz_d_start) >= smax) + return (char*)NULL; + switch (*(pz_d++) = *(pz_s++)) { + case NUL: + goto loopDone; + + case '\'': + if ((size_t) (pz_d - pz_d_start) >= smax - sizeof( zQ )-1) + return (char*)NULL; + strcpy( pz_d-1, zQ ); + pz_d += sizeof( zQ )-2; + } + } loopDone:; + pz_d[-1] = '\''; + *pz_d = NUL; + + return pz_d; +} + +#endif diff --git a/fixincludes/fixlib.h b/fixincludes/fixlib.h new file mode 100644 index 000000000..42d98b225 --- /dev/null +++ b/fixincludes/fixlib.h @@ -0,0 +1,248 @@ + +/* Install modified versions of certain ANSI-incompatible system header + files which are fixed to work correctly with ANSI C and placed in a + directory that GCC will search. + + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2009 + Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#ifndef GCC_FIXLIB_H +#define GCC_FIXLIB_H + +#include "config.h" +#include "system.h" +#include <signal.h> + +#include "xregex.h" +#include "libiberty.h" + +#ifndef STDIN_FILENO +# define STDIN_FILENO 0 +#endif +#ifndef STDOUT_FILENO +# define STDOUT_FILENO 1 +#endif + +#if ! defined( SIGCHLD ) && defined( SIGCLD ) +# define SIGCHLD SIGCLD +#endif + +#ifndef SIGQUIT +#define SIGQUIT SIGTERM +#endif +#ifndef SIGIOT +#define SIGIOT SIGTERM +#endif +#ifndef SIGPIPE +#define SIGPIPE SIGTERM +#endif +#ifndef SIGALRM +#define SIGALRM SIGTERM +#endif +#ifndef SIGKILL +#define SIGKILL SIGTERM +#endif + +typedef int t_success; + +#define FAILURE (-1) +#define SUCCESS 0 +#define PROBLEM 1 + +#define SUCCEEDED(p) ((p) == SUCCESS) +#define SUCCESSFUL(p) SUCCEEDED (p) +#define FAILED(p) ((p) < SUCCESS) +#define HADGLITCH(p) ((p) > SUCCESS) + +#ifndef DEBUG +# define STATIC static +#else +# define STATIC +#endif + +#define tSCC static const char +#define tCC const char +#define tSC static char + +/* If this particular system's header files define the macro `MAXPATHLEN', + we happily take advantage of it; otherwise we use a value which ought + to be large enough. */ +#ifndef MAXPATHLEN +# define MAXPATHLEN 4096 +#endif + +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +#define EXIT_BROKEN 3 + +#define NUL '\0' + +#ifndef NOPROCESS +#define NOPROCESS ((pid_t) -1) +#define NULLPROCESS ((pid_t)0) + +#define EXIT_PANIC 99 +#endif /* NOPROCESS */ + +#define IGNORE_ARG(a) ((void)(a)) + +typedef enum t_bool +{ + BOOL_FALSE, BOOL_TRUE +} t_bool; + +typedef int apply_fix_p_t; /* Apply Fix Predicate Type */ + +#define APPLY_FIX 0 +#define SKIP_FIX 1 + +#define ENV_TABLE \ + _ENV_( pz_machine, BOOL_TRUE, "TARGET_MACHINE", \ + "output from config.guess" ) \ + \ + _ENV_( pz_orig_dir, BOOL_TRUE, "ORIGDIR", \ + "directory of fixincl and applyfix" ) \ + \ + _ENV_( pz_src_dir, BOOL_TRUE, "SRCDIR", \ + "directory of original files" ) \ + \ + _ENV_( pz_input_dir, BOOL_TRUE, "INPUT", \ + "current directory for fixincl" ) \ + \ + _ENV_( pz_dest_dir, BOOL_TRUE, "DESTDIR", \ + "output directory" ) \ + \ + _ENV_( pz_mn_name_pat, BOOL_FALSE, "MN_NAME_PAT", \ + "regex matching forbidden identifiers" ) \ + \ + _ENV_( pz_verbose, BOOL_FALSE, "VERBOSE", \ + "amount of user entertainment" ) \ + \ + _ENV_( pz_find_base, BOOL_TRUE, "FIND_BASE", \ + "leader to trim from file names" ) + +#define _ENV_(v,m,n,t) extern tCC* v; +ENV_TABLE +#undef _ENV_ + +/* Test Descriptor + + Each fix may have associated tests that determine + whether the fix needs to be applied or not. + Each test has a type (from the te_test_type enumeration); + associated test text; and, if the test is TT_EGREP or + the negated form TT_NEGREP, a pointer to the compiled + version of the text string. + + */ +typedef enum +{ + TT_TEST, TT_EGREP, TT_NEGREP, TT_FUNCTION +} te_test_type; + +typedef struct test_desc tTestDesc; + +struct test_desc +{ + te_test_type type; + const char *pz_test_text; + regex_t *p_test_regex; +}; + +typedef struct patch_desc tPatchDesc; + +/* Fix Descriptor + + Everything you ever wanted to know about how to apply + a particular fix (which files, how to qualify them, + how to actually make the fix, etc...) + + NB: the FD_ defines are BIT FLAGS, even though + some are mutually exclusive + + */ +#define FD_MACH_ONLY 0x0000 +#define FD_MACH_IFNOT 0x0001 +#define FD_SHELL_SCRIPT 0x0002 +#define FD_SUBROUTINE 0x0004 +#define FD_REPLACEMENT 0x0008 +#define FD_SKIP_TEST 0x8000 + +typedef struct fix_desc tFixDesc; +struct fix_desc +{ + tCC* fix_name; /* Name of the fix */ + tCC* file_list; /* List of files it applies to */ + tCC** papz_machs; /* List of machine/os-es it applies to */ + int test_ct; + int fd_flags; + tTestDesc* p_test_desc; + tCC** patch_args; + long unused; +}; + +typedef struct { + int type_name_len; + tCC* pz_type; + tCC* pz_TYPE; + tCC* pz_gtype; +} t_gnu_type_map; + +extern int gnu_type_map_ct; + +#ifdef HAVE_MMAP_FILE +#define UNLOAD_DATA() do { if (curr_data_mapped) { \ + munmap ((void*)pz_curr_data, data_map_size); close (data_map_fd); } \ + else free ((void*)pz_curr_data); } while(0) +#else +#define UNLOAD_DATA() free ((void*)pz_curr_data) +#endif + +/* + * Exported procedures + */ +char * load_file_data ( FILE* fp ); + +#ifdef IS_CXX_HEADER_NEEDED +t_bool is_cxx_header ( tCC* filename, tCC* filetext ); +#endif /* IS_CXX_HEADER_NEEDED */ + +#ifdef SKIP_QUOTE_NEEDED +tCC* skip_quote ( char q, char* text ); +#endif + +void compile_re ( tCC* pat, regex_t* re, int match, tCC *e1, tCC *e2 ); + +void apply_fix ( tFixDesc* p_fixd, tCC* filname ); +apply_fix_p_t + run_test ( tCC* t_name, tCC* f_name, tCC* text ); + +#ifdef SEPARATE_FIX_PROC +char* make_raw_shell_str ( char* pz_d, tCC* pz_s, size_t smax ); +#endif + +t_bool mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who ); + +void initialize_opts ( void ); +#endif /* ! GCC_FIXLIB_H */ diff --git a/fixincludes/fixopts.c b/fixincludes/fixopts.c new file mode 100644 index 000000000..d305cd767 --- /dev/null +++ b/fixincludes/fixopts.c @@ -0,0 +1,50 @@ +/* Handle options that are passed from environment variables. + + Copyright (C) 2004, 2009 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "fixlib.h" + +#define _ENV_(v,m,n,t) tCC* v = NULL; +ENV_TABLE +#undef _ENV_ + +void +initialize_opts (void) +{ + static const char var_not_found[] = +#ifndef __STDC__ + "fixincl ERROR: %s environment variable not defined\n" +#else + "fixincl ERROR: %s environment variable not defined\n" + "each of these must be defined:\n" +# define _ENV_(vv,mm,nn,tt) "\t" nn " - " tt "\n" + ENV_TABLE +# undef _ENV_ +#endif + ; + +#define _ENV_(v,m,n,t) { tSCC var[] = n; \ + v = getenv (var); if (m && (v == NULL)) { \ + fprintf (stderr, var_not_found, var); \ + exit (EXIT_FAILURE); } } + +ENV_TABLE + +#undef _ENV_ +} diff --git a/fixincludes/fixtests.c b/fixincludes/fixtests.c new file mode 100644 index 000000000..d668b92f2 --- /dev/null +++ b/fixincludes/fixtests.c @@ -0,0 +1,154 @@ + +/* + + Test to see if a particular fix should be applied to a header file. + + Copyright (C) 1997, 1998, 1999, 2000, 2009 Free Software Foundation, Inc. + += = = = = = = = = = = = = = = = = = = = = = = = = + +NOTE TO DEVELOPERS + +The routines you write here must work closely with fixincl.c. + +Here are the rules: + +1. Every test procedure name must be suffixed with "_test". + These routines will be referenced from inclhack.def, sans the suffix. + +2. Use the "TEST_FOR_FIX_PROC_HEAD()" macro _with_ the "_test" suffix + (I cannot use the ## magic from ANSI C) for defining your entry point. + +3. Put your test name into the FIX_TEST_TABLE + +4. Do not write anything to stdout. It may be closed. + +5. Write to stderr only in the event of a reportable error + In such an event, call "exit(1)". + += = = = = = = = = = = = = = = = = = = = = = = = = + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "fixlib.h" + +#define _ENV_(v,m,n,t) extern tCC* v; +ENV_TABLE +#undef _ENV_ + +typedef apply_fix_p_t t_test_proc ( tCC* file, tCC* text ); + +typedef struct { + tCC* test_name; + t_test_proc* test_proc; +} test_entry_t; + +#define FIX_TEST_TABLE \ + _FT_( "machine_name", machine_name_test ) \ + _FT_( "stdc_0_in_system_headers", stdc_0_in_system_headers_test ) + +#define TEST_FOR_FIX_PROC_HEAD( test ) \ +static apply_fix_p_t test ( tCC* fname ATTRIBUTE_UNUSED, \ + tCC* text ATTRIBUTE_UNUSED ) + +TEST_FOR_FIX_PROC_HEAD( machine_name_test ) +{ + regex_t *label_re, *name_re; + regmatch_t match[2]; + tCC *base, *limit; + IGNORE_ARG(fname); + + if (!mn_get_regexps (&label_re, &name_re, "machine_name_test")) + return SKIP_FIX; + + for (base = text; + xregexec (label_re, base, 2, match, 0) == 0; + base = limit) + { + base += match[0].rm_eo; + /* We're looking at an #if or #ifdef. Scan forward for the + next non-escaped newline. */ + limit = base; + do + { + limit++; + limit = strchr (limit, '\n'); + if (!limit) + return SKIP_FIX; + } + while (limit[-1] == '\\'); + + /* If the 'name_pat' matches in between base and limit, we have + a bogon. It is not worth the hassle of excluding comments, + because comments on #if/#ifdef/#ifndef lines are rare, + and strings on such lines are illegal. + + REG_NOTBOL means 'base' is not at the beginning of a line, which + shouldn't matter since the name_re has no ^ anchor, but let's + be accurate anyway. */ + + if (xregexec (name_re, base, 1, match, REG_NOTBOL)) + return SKIP_FIX; /* No match in file - no fix needed */ + + /* Match; is it on the line? */ + if (match[0].rm_eo <= limit - base) + return APPLY_FIX; /* Yup */ + + /* Otherwise, keep looking... */ + } + return SKIP_FIX; +} + + +TEST_FOR_FIX_PROC_HEAD( stdc_0_in_system_headers_test ) +{ +#ifdef STDC_0_IN_SYSTEM_HEADERS + return (pz_machine == NULL) ? APPLY_FIX : SKIP_FIX; +#else + return APPLY_FIX; +#endif +} + + +/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = + + test for fix selector + + THIS IS THE ONLY EXPORTED ROUTINE + +*/ +apply_fix_p_t +run_test( tCC* tname, tCC* fname, tCC* text ) +{ +#define _FT_(n,p) { n, p }, + static test_entry_t test_table[] = { FIX_TEST_TABLE { NULL, NULL }}; +#undef _FT_ +#define TEST_TABLE_CT (ARRAY_SIZE (test_table)-1) + + int ct = TEST_TABLE_CT; + test_entry_t* pte = test_table; + + do + { + if (strcmp( pte->test_name, tname ) == 0) + return (*pte->test_proc)( fname, text ); + pte++; + } while (--ct > 0); + fprintf( stderr, "fixincludes error: the `%s' fix test is unknown\n", + tname ); + exit( 3 ); +} diff --git a/fixincludes/genfixes b/fixincludes/genfixes new file mode 100755 index 000000000..6bc60d227 --- /dev/null +++ b/fixincludes/genfixes @@ -0,0 +1,76 @@ +#! /bin/sh + +# Copyright (C) 1999, 2000, 2001, 2009 Free Software Foundation, Inc. +# This file is part of GCC. + +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. + +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +SHELL=/bin/sh +export SHELL +if [ $# -eq 0 ] ; then + not_done=false +else + not_done=true +fi + +while $not_done +do + case "$1" in + -D ) + shift + if [ $# -eq 0 ] ; then + not_done=false + else + AG="$AG -D$1" + shift + fi + ;; + + -D* ) + AG="$AG $1" + shift + ;; + + '-?' ) + echo "USAGE: gendefs [ -D<def-name> ... ]" + echo "WHERE: '<def-name>' specifies a #define test name from inclhack.def" + exit 0 + ;; + + * ) + not_done=false + ;; + esac +done + +if [ $# -eq 0 ] ; then + set -- fixincl.x +fi + +AG="autogen $AG" +set -e + +if [ -z "`${AG} -v | fgrep 'Ver. 5.'`" ] +then + echo "AutoGen appears to be out of date or not correctly installed." + echo "Please download and install:" + echo " ftp://gcc.gnu.org/pub/gcc/infrastructure/autogen.tar.gz" + touch fixincl.x +else + echo AutoGen-ing fixincl.x + $AG inclhack.def +fi + +exit 0 diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def new file mode 100644 index 000000000..ac8f79583 --- /dev/null +++ b/fixincludes/inclhack.def @@ -0,0 +1,4590 @@ +/* -*- Mode: C -*- */ + +autogen definitions fixincl; + +/* Define all the fixes we know about for repairing damaged headers. + Please see the README before adding or changing entries in this file. + + This is the sort command: + + blocksort output=inclhack.sorted \ + pattern='^/\*$' \ + trailer='^/\*EOF\*[/]' \ + input=inclhack.def \ + key='hackname[ ]*=[ ]*(.*);' + + Set up a debug test so we can make the templates emit special + code while debugging these fixes: */ + +#ifdef DEBUG +FIXINC_DEBUG = yes; +#endif + +/* On AIX when _LARGE_FILES is defined stdio.h defines fopen to + * fopen64 etc. and this causes problems when building with g++ + * because cstdio udefs everything from stdio.h, leaving us with + * ::fopen has not been declared errors. This fixes stdio.h to + * undef those defines and use __asm__ to alias the symbols if + * building with g++ and -D_LARGE_FILES + */ +fix = { + hackname = AAB_aix_stdio; + files = stdio.h; + select = "define fopen fopen64"; + mach = "*-*-aix*"; + test-text = ''; /* no way to test */ + + c_fix = wrap; + + c_fix_arg = ""; + + c_fix_arg = <<- _EOArg_ + + #if defined __GNUG__ && defined _LARGE_FILES && defined __cplusplus + #define __need__aix_stdio_h_fix + #ifdef __need__aix_stdio_h_fix + #undef fseeko + #undef ftello + #undef fgetpos + #undef fsetpos + #undef fopen + #undef freopen + /* Alias the symbols using asm */ + extern "C" { + extern int fgetpos(FILE *, fpos64_t *) __asm__("fgetpos64"); + extern FILE *fopen(const char *, const char *) __asm__("fopen64"); + extern FILE *freopen(const char *, const char *, FILE *) __asm__("freopen64"); + extern int fseeko(FILE *, off64_t, int) __asm__("fseeko64"); + extern int fsetpos(FILE *, const fpos64_t *) __asm__("fsetpos64"); + extern off64_t ftello(FILE *) __asm__("ftello64"); + } + #endif + #endif + + _EOArg_; +}; + + +/* + * On Mac OS 10.3.9, the 'long double' functions are available in + * libSystem, but are not prototyped in math.h. + */ +fix = { + hackname = AAB_darwin7_9_long_double_funcs; + mach = "*-*-darwin7.9*"; + files = architecture/ppc/math.h; + bypass = "powl"; + replace = <<- _EndOfHeader_ + /* This file prototypes the long double functions available on Mac OS + 10.3.9. */ + #ifndef __MATH__ + # undef __APPLE_CC__ + # define __APPLE_CC__ 1345 + # include_next <architecture/ppc/math.h> + # undef __APPLE_CC__ + # define __APPLE_CC__ 1 + # ifndef __LIBMLDBL_COMPAT + # ifdef __LONG_DOUBLE_128__ + # define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128") + # else + # define __LIBMLDBL_COMPAT(sym) + # endif /* __LONG_DOUBLE_128__ */ + # endif /* __LIBMLDBL_COMPAT */ + # ifdef __cplusplus + extern "C" { + # endif + extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl); + extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl); + extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl); + extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l); + extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl); + extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl); + extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl); + extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl); + extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl); + extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl); + extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl); + extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl); + extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl); + extern long double expl( long double ) __LIBMLDBL_COMPAT(expl); + extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l); + extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l); + extern long double logl( long double ) __LIBMLDBL_COMPAT(logl); + extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l); + extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l); + extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl); + extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl); + extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl); + extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl); + extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl); + extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl); + extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl); + extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl); + extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl); + extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl); + extern long double hypotl( long double, long double ) __LIBMLDBL_COMPAT(hypotl); + extern long double powl( long double, long double ) __LIBMLDBL_COMPAT(powl); + extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl); + extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl); + extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl); + extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal); + extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal); + extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill); + extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl); + extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl); + extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl); + extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl); + extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl); + extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl); + extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl); + extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl); + extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl); + extern long double fmodl( long double, long double) __LIBMLDBL_COMPAT(fmodl); + extern long double remainderl( long double, long double ) __LIBMLDBL_COMPAT(remainderl); + extern long double remquol( long double, long double, int * ) __LIBMLDBL_COMPAT(remquol); + extern long double copysignl( long double, long double ) __LIBMLDBL_COMPAT(copysignl); + extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl); + extern long double nextafterl( long double, long double ) __LIBMLDBL_COMPAT(nextafterl); + extern long double nexttowardl( long double, long double ) __LIBMLDBL_COMPAT(nexttowardl); + extern long double fdiml( long double, long double ) __LIBMLDBL_COMPAT(fdiml); + extern long double fmaxl( long double, long double ) __LIBMLDBL_COMPAT(fmaxl); + extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl); + extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal); + # ifdef __cplusplus + } + # endif + #endif /* __MATH__ */ + _EndOfHeader_; +}; + + +/* + * ... and for the previous fix to be useful, you have to not use "" + * includes. + */ +fix = { + hackname = AAB_darwin7_9_long_double_funcs_2; + mach = "*-*-darwin7.9*"; + files = math.h; + select = '#include[ \t]+\"'; + c_fix = format; + c_fix_arg = "%1<%2.h>"; + + c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"'; + + test_text = '#include "architecture/ppc/math.h"'; +}; + + +/* + * This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n) + */ +fix = { + hackname = AAB_fd_zero_asm_posix_types_h; + files = asm/posix_types.h; + mach = 'i[34567]86-*-linux*'; + bypass = '} while'; + bypass = 'x86_64'; + bypass = 'posix_types_64'; + + /* + * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not + * the start, so that if #include_next gets another instance of + * the wrapper, this will follow the #include_next chain until + * we arrive at the real <asm/posix_types.h>. + */ + replace = <<- _EndOfHeader_ + /* This file fixes a bug in the __FD_ZERO macro + for older versions of the Linux kernel. */ + #ifndef _POSIX_TYPES_H_WRAPPER + #include <features.h> + #include_next <asm/posix_types.h> + + #if defined(__FD_ZERO) && !defined(__GLIBC__) + #undef __FD_ZERO + #define __FD_ZERO(fdsetp) \ + do { \ + int __d0, __d1; \ + __asm__ __volatile__("cld ; rep ; stosl" \ + : "=&c" (__d0), "=&D" (__d1) \ + : "a" (0), "0" (__FDSET_LONGS), \ + "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \ + } while (0) + #endif + + #define _POSIX_TYPES_H_WRAPPER + #endif /* _POSIX_TYPES_H_WRAPPER */ + _EndOfHeader_; +}; + + +/* + * This fixes __FD_ZERO bug for glibc-1.x + */ +fix = { + hackname = AAB_fd_zero_gnu_types_h; + files = gnu/types.h; + mach = 'i[34567]86-*-linux*'; + + /* + * Define _TYPES_H_WRAPPER at the end of the wrapper, not + * the start, so that if #include_next gets another instance of + * the wrapper, this will follow the #include_next chain until + * we arrive at the real <gnu/types.h>. + */ + replace = <<- _EndOfHeader_ + /* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */ + #ifndef _TYPES_H_WRAPPER + #include <features.h> + #include_next <gnu/types.h> + + #if defined(__FD_ZERO) && !defined(__GLIBC__) + #undef __FD_ZERO + # define __FD_ZERO(fdsetp) \ + do { \ + int __d0, __d1; \ + __asm__ __volatile__("cld ; rep ; stosl" \ + : "=&c" (__d0), "=&D" (__d1) \ + : "a" (0), "0" (__FDSET_LONGS), \ + "1" ((__fd_set *) (fdsetp)) :"memory"); \ + } while (0) + #endif + + #define _TYPES_H_WRAPPER + #endif /* _TYPES_H_WRAPPER */ + _EndOfHeader_; +}; + + +/* + * This fixes __FD_ZERO bug for glibc-2.0.x + */ +fix = { + hackname = AAB_fd_zero_selectbits_h; + files = selectbits.h; + mach = 'i[34567]86-*-linux*'; + + /* + * Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not + * the start, so that if #include_next gets another instance of + * the wrapper, this will follow the #include_next chain until + * we arrive at the real <selectbits.h>. + */ + replace = <<- _EndOfHeader_ + /* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */ + #ifndef _SELECTBITS_H_WRAPPER + #include <features.h> + #include_next <selectbits.h> + + #if defined(__FD_ZERO) && defined(__GLIBC__) \\ + && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\ + && __GLIBC_MINOR__ == 0 + #undef __FD_ZERO + #define __FD_ZERO(fdsetp) \\ + do { \\ + int __d0, __d1; \\ + __asm__ __volatile__ ("cld; rep; stosl" \\ + : "=&c" (__d0), "=&D" (__d1) \\ + : "a" (0), "0" (sizeof (__fd_set) \\ + / sizeof (__fd_mask)), \\ + "1" ((__fd_mask *) (fdsetp)) \\ + : "memory"); \\ + } while (0) + #endif + + #define _SELECTBITS_H_WRAPPER + #endif /* _SELECTBITS_H_WRAPPER */ + _EndOfHeader_; +}; + + +/* + * Solaris <sys/varargs.h> is a DDK (aka kernel-land) header providing + * the same interface as <stdarg.h>. No idea why they couldn't have just + * used the standard header. + */ +fix = { + hackname = AAB_solaris_sys_varargs_h; + files = "sys/varargs.h"; + mach = '*-*-solaris*'; + replace = <<- _EndOfHeader_ + #ifdef __STDC__ + #include <stdarg.h> + #else + #include <varargs.h> + #endif + _EndOfHeader_; +}; + + +/* + * Fix non-ANSI memcpy declaration that conflicts with gcc's builtin + * declaration on Sun OS 4.x. We must only fix this on Sun OS 4.x, because + * many other systems have similar text but correct versions of the file. + * To ensure only Sun's is fixed, we grep for a likely unique string. + * Fix also on sysV68 R3V7.1 (head/memory.h\t50.1\t ) + */ +fix = { + hackname = AAB_sun_memcpy; + files = memory.h; + select = "/\\*\t@\\(#\\)" + "(head/memory.h\t50.1\t " + "|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/"; + + replace = <<- _EndOfHeader_ + /* This file was generated by fixincludes */ + #ifndef __memory_h__ + #define __memory_h__ + + #ifdef __STDC__ + extern void *memccpy(); + extern void *memchr(); + extern void *memcpy(); + extern void *memset(); + #else + extern char *memccpy(); + extern char *memchr(); + extern char *memcpy(); + extern char *memset(); + #endif /* __STDC__ */ + + extern int memcmp(); + + #endif /* __memory_h__ */ + _EndOfHeader_; +}; + + +/* + * complex.h on AIX 5 and AIX 6 define _Complex_I and I in terms of __I, + * which only is provided by AIX xlc C99. + */ +fix = { + hackname = aix_complex; + mach = "*-*-aix*"; + files = complex.h; + select = "#define[ \t]_Complex_I[ \t]__I"; + c_fix = format; + c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)"; + test_text = "#define _Complex_I __I\n"; +}; + + +/* + * pthread.h on AIX 4.3.3 tries to define a macro without whitspace + * which violates a requirement of ISO C. + */ +fix = { + hackname = aix_pthread; + files = "pthread.h"; + select = "(#define [A-Za-z_0-9]+)(\\\\\n[^A-Za-z_0-9 \t\n(])"; + c_fix = format; + c_fix_arg = "%1 %2"; + test_text = "#define PTHREAD_MUTEX_INITIALIZER\\\\\n" + "{...init stuff...}"; +}; + + +/* + * AIX stdint.h fixes. + */ +fix = { + hackname = aix_stdint_1; + mach = "*-*-aix*"; + files = stdint-aix.h, stdint.h; + select = "#define[ \t]UINT8_MAX[ \t]\\(255U\\)\n" + "#define[ \t]UINT16_MAX[ \t]\\(65535U\\)"; + c_fix = format; + c_fix_arg = "#define UINT8_MAX (255)\n" + "#define UINT16_MAX (65535)"; + test_text = "#define UINT8_MAX (255U)\n" + "#define UINT16_MAX (65535U)"; +}; + + +fix = { + hackname = aix_stdint_2; + mach = "*-*-aix*"; + files = stdint-aix.h, stdint.h; + select = "#define[ \t]INTPTR_MIN[ \t]INT64_MIN\n" + "#define[ \t]INTPTR_MAX[ \t]INT64_MAX\n" + "#define[ \t]UINTPTR_MAX[ \t]UINT64_MAX\n" + "#else\n" + "#define[ \t]INTPTR_MIN[ \t]INT32_MIN\n" + "#define[ \t]INTPTR_MAX[ \t]INT32_MAX\n" + "#define[ \t]UINTPTR_MAX[ \t]UINT32_MAX"; + c_fix = format; + c_fix_arg = "#define INTPTR_MIN (-INTPTR_MAX-1)\n" + "#define INTPTR_MAX 9223372036854775807L\n" + "#define UINTPTR_MAX 18446744073709551615UL\n" + "#else\n" + "#define INTPTR_MIN (-INTPTR_MAX-1)\n" + "#define INTPTR_MAX 2147483647L\n" + "#define UINTPTR_MAX 4294967295UL"; + test_text = "#define INTPTR_MIN INT64_MIN\n" + "#define INTPTR_MAX INT64_MAX\n" + "#define UINTPTR_MAX UINT64_MAX\n" + "#else\n" + "#define INTPTR_MIN INT32_MIN\n" + "#define INTPTR_MAX INT32_MAX\n" + "#define UINTPTR_MAX UINT32_MAX"; +}; + + +fix = { + hackname = aix_stdint_3; + mach = "*-*-aix*"; + files = stdint-aix.h, stdint.h; + select = "#define[ \t]PTRDIFF_MIN[ \t]INT64_MIN\n" + "#define[ \t]PTRDIFF_MAX[ \t]INT64_MAX\n" + "#else\n" + "#define[ \t]PTRDIFF_MIN[ \t]*INT32_MIN\n" + "#define[ \t]PTRDIFF_MAX[ \t]*INT32_MAX"; + c_fix = format; + c_fix_arg = "#define PTRDIFF_MIN (-9223372036854775807L - 1)\n" + "#define PTRDIFF_MAX 9223372036854775807L\n" + "#else\n" + "#define PTRDIFF_MIN (-2147483647L - 1)\n" + "#define PTRDIFF_MAX 2147483647L"; + test_text = "#define PTRDIFF_MIN INT64_MIN\n" + "#define PTRDIFF_MAX INT64_MAX\n" + "#else\n" + "#define PTRDIFF_MIN INT32_MIN\n" + "#define PTRDIFF_MAX INT32_MAX"; +}; + + +fix = { + hackname = aix_stdint_4; + mach = "*-*-aix*"; + files = stdint-aix.h, stdint.h; + select = "#define[ \t]SIZE_MAX[ \t]UINT64_MAX\n" + "#else\n" + "#define[ \t]SIZE_MAX[ \t]*UINT32_MAX"; + c_fix = format; + c_fix_arg = "#define SIZE_MAX 18446744073709551615UL\n" + "#else\n" + "#define SIZE_MAX 4294967295UL"; + test_text = "#define SIZE_MAX UINT64_MAX\n" + "#else\n" + "#define SIZE_MAX UINT32_MAX"; +}; + + +fix = { + hackname = aix_stdint_5; + mach = "*-*-aix*"; + files = stdint-aix.h, stdint.h; + select = "#define[ \t]UINT8_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)\n" + "#define[ \t]UINT16_C\\(c\\)[ \t]__CONCAT__\\(c,U\\)"; + c_fix = format; + c_fix_arg = "#define UINT8_C(c) c\n" + "#define UINT16_C(c) c"; + test_text = "#define UINT8_C(c) __CONCAT__(c,U)\n" + "#define UINT16_C(c) __CONCAT__(c,U)"; +}; + + +/* + * sys/machine.h on AIX 4.3.3 puts whitespace between a \ and a newline + * in an otherwise harmless (and #ifed out) macro definition + */ +fix = { + hackname = aix_sysmachine; + files = sys/machine.h; + select = "\\\\ +\n"; + c_fix = format; + c_fix_arg = "\\\n"; + test_text = "#define FOO \\\n" + " bar \\ \n baz \\ \n bat"; +}; + + +/* + * sys/wait.h on AIX 5.2 defines macros that have both signed and + * unsigned types in conditional expressions. + */ +fix = { + hackname = aix_syswait_2; + files = sys/wait.h; + select = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)'; + c_fix = format; + c_fix_arg = "? (int)%1"; + test_text = "#define WSTOPSIG(__x) (int)(WIFSTOPPED(__x) ? ((((unsigned int)__x) >> 8) & 0xff) : -1)"; +}; + + +/* + * sys/signal.h on some versions of AIX uses volatile in the typedef of + * sig_atomic_t, which causes gcc to generate a warning about duplicate + * volatile when a sig_atomic_t variable is declared volatile, as + * required by ANSI C. + */ +fix = { + hackname = aix_volatile; + files = sys/signal.h; + select = "typedef volatile int sig_atomic_t"; + c_fix = format; + c_fix_arg = "typedef int sig_atomic_t"; + test_text = "typedef volatile int sig_atomic_t;"; +}; + + +/* + * Fix __assert declaration in assert.h on Alpha OSF/1. + */ +fix = { + hackname = alpha___assert; + files = "assert.h"; + select = '__assert\(char \*, char \*, int\)'; + c_fix = format; + c_fix_arg = "__assert(const char *, const char *, int)"; + test_text = 'extern void __assert(char *, char *, int);'; +}; + + +/* + * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 headers. + */ +fix = { + hackname = alpha___extern_prefix; + select = "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n" + "(#[ \t]*pragma[ \t]*extern_prefix.*)"; + + mach = "alpha*-dec-osf*"; + c_fix = format; + c_fix_arg = "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n%3"; + + test_text = "#ifdef __DECC\n" + "#pragma extern_prefix \"_P\"\n" + "# if defined(__DECC)\n" + "# pragma extern_prefix \"_E\"\n" + "# if !defined(_LIBC_POLLUTION_H_) && defined(__DECC)\n" + "# pragma extern_prefix \"\""; +}; + + +/* + * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 <standards.h>. + */ +fix = { + hackname = alpha___extern_prefix_standards; + files = standards.h; + select = ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)"; + + mach = "alpha*-dec-osf*"; + c_fix = format; + c_fix_arg = "%0 && !defined(__PRAGMA_EXTERN_PREFIX)"; + + test_text = "#if (_ISO_C_SOURCE>=19990L) " + "&& !defined(_LIBC_POLLUTION_H_) && !defined(__DECC)"; +}; + + +/* + * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5 <sys/mount.h> and + * <sys/stat.h>. The tests for __DECC are special in various ways, so + * alpha__extern_prefix cannot be used. + */ +fix = { + hackname = alpha___extern_prefix_sys_stat; + files = sys/stat.h; + files = sys/mount.h; + select = "#[ \t]*if[ \t]*defined\\(__DECC\\)"; + + mach = "alpha*-dec-osf5*"; + c_fix = format; + c_fix_arg = "%0 || defined(__PRAGMA_EXTERN_PREFIX)"; + + test_text = "# if defined(__DECC)"; +}; + + +/* + * Fix assert macro in assert.h on Alpha OSF/1. + * The superfluous int cast breaks C++. + */ +fix = { + hackname = alpha_assert; + files = "assert.h"; + select = "(#[ \t]*" 'define assert\(EX\).*)\(\(int\) \(EX\)\)'; + c_fix = format; + c_fix_arg = "%1(EX)"; + test_text = '#define assert(EX) (((int) (EX)) ? (void)0 ' + ': __assert(#EX, __FILE__, __LINE__))'; +}; + + +/* + * Fix #defines under Alpha OSF/1: + * The following files contain '#pragma extern_prefix "_FOO"' followed by + * a '#define something(x,y,z) _FOOsomething(x,y,z)'. The intent of these + * statements is to reduce namespace pollution. While these macros work + * properly in most cases, they don't allow you to take a pointer to the + * "something" being modified. To get around this limitation, change these + * statements to be of the form '#define something _FOOsomething'. + * + * sed ain't egrep, lesson 2463: sed can use self-referential + * regular expressions. In the substitute expression below, + * "\\1" and "\\2" refer to subexpressions found earlier in the + * same match. So, we continue to use sed. "extern_prefix" will + * be a rare match anyway... + */ +fix = { + hackname = alpha_bad_lval; + + select = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix"; + mach = "alpha*-dec-osf*"; + + sed = + "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*" + "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/"; + + test_text = '#pragma extern_prefix "_FOO"'"\n" + "#define something(x,y,z) _FOOsomething(x,y,z)\n" + "#define mumble _FOOmumble"; +}; + + +/* + * Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX. + */ +fix = { + hackname = alpha_getopt; + files = "stdio.h"; + files = "stdlib.h"; + select = 'getopt\(int, char \*\[\], *char \*\)'; + c_fix = format; + c_fix_arg = "getopt(int, char *const[], const char *)"; + test_text = 'extern int getopt(int, char *[], char *);'; +}; + + +/* + * Fix missing semicolon on Alpha OSF/4 in <net/if.h> + */ +fix = { + hackname = alpha_if_semicolon; + files = net/if.h; + select = "struct[ \t]+sockaddr[ \t]+vmif_paddr[ \t]+/\\*"; + c_fix = format; + c_fix_arg = "struct sockaddr vmif_paddr;\t/*"; + test_text = ' struct sockaddr vmif_paddr /* protocol address */'; +}; + + +/* + * Remove erroneous parentheses in sym.h on Alpha OSF/1. + */ +fix = { + hackname = alpha_parens; + files = sym.h; + select = '#ifndef\(__mips64\)'; + c_fix = format; + c_fix_arg = "#ifndef __mips64"; + test_text = "#ifndef(__mips64) /* bogus */\nextern int foo;\n#endif"; +}; + + +/* + * Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX <pthread.h>. + */ +fix = { + hackname = alpha_pthread; + files = pthread.h; + select = "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)" + "|def _PTHREAD_ENV_DECC)(.*))\n" + "(#[ \t]*define _PTHREAD_USE_PTDNAM_)"; + + mach = "alpha*-dec-osf*"; + c_fix = format; + c_fix_arg = "%2 defined (_PTHREAD_ENV_DECC)%4 " + "|| defined (__PRAGMA_EXTERN_PREFIX)\n%5"; + + test_text = "# if defined (_PTHREAD_ENV_DECC) " + "|| defined (_PTHREAD_ENV_EPCC)\n" + "# define _PTHREAD_USE_PTDNAM_\n" + "# endif\n" + "# ifdef _PTHREAD_ENV_DECC\n" + "# define _PTHREAD_USE_PTDNAM_\n" + "# endif"; +}; + + +/* + * Recognize GCC in Tru64 UNIX V5.1B <pthread.h>. + */ +fix = { + hackname = alpha_pthread_gcc; + files = pthread.h; + select = "#else\n# error <pthread.h>: unrecognized compiler."; + + mach = "alpha*-dec-osf*"; + c_fix = format; + c_fix_arg = "#elif defined (__GNUC__)\n" + "# define _PTHREAD_ENV_GCC\n" + "%0"; + + test_text = "# define _PTHREAD_ENV_INTELC\n" + "#else\n" + "# error <pthread.h>: unrecognized compiler.\n" + "#endif"; +}; + + +/* + * Compaq Tru64 v5.1 defines all of its PTHREAD_*_INITIALIZER macros + * incorrectly, specifying less fields in the initializers than are + * defined in the corresponding structure types. Use of these macros + * in user code results in spurious warnings. + */ +fix = { + hackname = alpha_pthread_init; + files = pthread.h; + select = ' \* @\(#\).RCSfile: pthread\.h,v \$' + ' .Revision: 1\.1\.33\.21 \$ \(DEC\)' + ' .Date: 2000/08/15 15:30:13 \$'; + mach = "alpha*-dec-osf*"; + sed = "s@MVALID\\(.*\\)A}@MVALID\\1A, 0, 0, 0, 0, 0, 0 }@\n" + "s@MVALID\\(.*\\)_}@MVALID\\1_, 0, 0, 0, 0 }@\n" + "s@CVALID\\(.*\\)A}@CVALID\\1A, 0, 0, 0, 0 }@\n" + "s@CVALID\\(.*\\)_}@CVALID\\1_, 0, 0 }@\n" + "s@WVALID\\(.*\\)A}@WVALID\\1A, 0, 0, 0, 0, 0, 0, 0, 0, 0 }@\n" + "s@WVALID\\(.*\\)_}@WVALID\\1_, 0, 0, 0, 0, 0, 0, 0 }@\n"; + test_text = <<- _EOText_ + /* + * @(#)_RCSfile: pthread.h,v $ _Revision: 1.1.33.21 $ (DEC) _Date: 2000/08/15 15:30:13 $ + */ + #ifndef _PTHREAD_NOMETER_STATIC + # define PTHREAD_MUTEX_INITIALIZER \ + {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA} + # define PTHREAD_COND_INITIALIZER \ + {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA} + # define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \ + {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_} + # define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \ + {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_} + #else + # define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA} + # define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \ + {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_} + # define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \ + {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_} + #endif + + #define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA} + #define PTHREAD_RWLOCK_INITWITHNAME_NP(_n_,_a_) \ + {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, _n_, _a_} + _EOText_; +}; + + +/* + * Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0 + * And OpenBSD. + */ +fix = { + hackname = alpha_sbrk; + files = unistd.h; + select = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\("; + c_fix = format; + c_fix_arg = "void *sbrk("; + test_text = "extern char* sbrk(ptrdiff_t increment);"; +}; + + +/* + * For C++, avoid any typedef or macro definition of bool, + * and use the built in type instead. + * HP/UX 10.20 also has it in curses_colr/curses.h. + */ +fix = { + hackname = avoid_bool_define; + files = curses.h; + files = curses_colr/curses.h; + files = term.h; + files = tinfo.h; + + select = "#[ \t]*define[ \t]+bool[ \t]"; + bypass = "__cplusplus"; + + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + c_fix_arg = "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*"; + + test_text = "# define bool\t char \n"; +}; + + +fix = { + hackname = avoid_bool_type; + files = curses.h; + files = curses_colr/curses.h; + files = term.h; + files = tinfo.h; + + select = "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;"; + bypass = "__cplusplus"; + + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + + test_text = "typedef unsigned int\tbool \t; /* bool\n type */"; +}; + + +/* + * For C++, avoid any typedef definition of wchar_t, + * and use the built in type instead. + * Don't do this for headers that are smart enough to do the right + * thing (recent [n]curses.h and Xlib.h). + * Don't do it for <linux/nls.h> which is never used from C++ anyway, + * and will be broken by the edit. + */ + +fix = { + hackname = avoid_wchar_t_type; + + select = "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;"; + bypass = "__cplusplus"; + bypass = "_LINUX_NLS_H"; + bypass = "XFree86: xc/lib/X11/Xlib\\.h"; + + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + + test_text = "typedef unsigned short\twchar_t \t; /* wchar_t\n type */"; +}; + + +/* + * Fix `typedef struct term;' on hppa1.1-hp-hpux9. + */ +fix = { + hackname = bad_struct_term; + files = curses.h; + select = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;"; + c_fix = format; + c_fix_arg = "struct term;"; + + test_text = 'typedef struct term;'; +}; + + +/* + * Fix one other error in this file: + * a mismatched quote not inside a C comment. + */ +fix = { + hackname = badquote; + files = sundev/vuid_event.h; + select = "doesn't"; + c_fix = format; + c_fix_arg = "does not"; + + test_text = "/* doesn't have matched single quotes */"; +}; + + +/* + * check for broken assert.h that needs stdio.h + */ +fix = { + hackname = broken_assert_stdio; + files = assert.h; + select = stderr; + bypass = "include.*stdio\\.h"; + c_fix = wrap; + c_fix_arg = "#include <stdio.h>\n"; + test_text = "extern FILE* stderr;"; +}; + + +/* + * check for broken assert.h that needs stdlib.h + */ +fix = { + hackname = broken_assert_stdlib; + files = assert.h; + select = 'exit *\(|abort *\('; + bypass = "include.*stdlib\\.h"; + c_fix = wrap; + c_fix_arg = "#ifdef __cplusplus\n" + "#include <stdlib.h>\n" + "#endif\n"; + test_text = "extern void exit ( int );"; +}; + + +/* + * Remove `extern double cabs' declarations from math.h. + * This conflicts with C99. Discovered on AIX. + * IRIX 5 and IRIX 6 before 6.5.18 (where C99 support was introduced) + * declares cabs() to take a struct __cabs_s argument. + * SunOS4 has its cabs() declaration followed by a comment which + * terminates on the following line. + * Darwin hides its broken cabs in architecture-specific subdirs. + */ +fix = { + hackname = broken_cabs; + files = math.h, "architecture/*/math.h"; + select = "^extern[ \t]+double[ \t]+cabs"; + + sed = "s/^extern[ \t]*double[ \t]*cabs[ \t]*\([^\\\)]*\);//"; + sed = "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*\([^\\\)]*\);//"; + + test_text = "#ifdef __STDC__\n" + "extern double cabs(struct dbl_hypot);\n" + "#else\n" + "extern double cabs();\n" + "#endif\n" + "extern double cabs ( _Complex z );\n" + "extern double cabs(); /* This is a comment\n" + " and it ends here. */\n" + "extern double cabs(struct __cabs_s);\n" + "extern long double cabsl( struct __cabsl_s );"; +}; + + +/* + * Fixup Darwin's broken check for __builtin_nanf. + */ +fix = { + hackname = broken_nan; + /* + * It is tempting to omit the first "files" entry. Do not. + * The testing machinery will take the first "files" entry as the name + * of a test file to play with. It would be a nuisance to have a directory + * with the name "*". + */ + files = "architecture/ppc/math.h"; + files = "architecture/*/math.h"; + select = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)"; + bypass = "powl"; + c_fix = format; + c_fix_arg = "#if 1"; + test_text = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)"; +}; + + +/* + * Various systems derived from BSD4.4 contain a macro definition + * for vfscanf that interacts badly with requirements of builtin-attrs.def. + * Known to be fixed in FreeBSD 5 system headers. + */ +fix = { + hackname = bsd_stdio_attrs_conflict; + mach = "*-*-*bsd*"; + mach = "*-*-*darwin*"; + files = stdio.h; + select = "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$"; + c_fix = format; + c_fix_arg = '#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)' "\n" + '#define _BSD_STRINGX(_BSD_X) #_BSD_X' "\n" + 'int vfscanf(FILE *, const char *, __builtin_va_list) ' + '__asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf");'; + test_text = '#define vfscanf __svfscanf'; +}; + + +/* + * Fix various macros used to define ioctl numbers. + * The traditional syntax was: + * + * #define _CTRL(n, x) (('n'<<8)+x) + * #define TCTRLCFOO _CTRL(T, 1) + * + * but this does not work with the C standard, which disallows macro + * expansion inside strings. We have to rewrite it thus: + * + * #define _CTRL(n, x) ((n<<8)+x) + * #define TCTRLCFOO _CTRL('T', 1) + * + * The select expressions match too much, but the c_fix code is cautious. + * + * CTRL might be: CTRL _CTRL ISCTRL BSD43_CTRL ... + */ +fix = { + hackname = ctrl_quotes_def; + select = "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]"; + c_fix = char_macro_def; + c_fix_arg = "CTRL"; + + /* + * This is two tests in order to ensure that the "CTRL(c)" can + * be selected in isolation from the multi-arg format + */ + test_text = "#define BSD43_CTRL(n, x) (('n'<<8)+x)\n"; + test_text = "#define _CTRL(c) ('c'&037)"; +}; + +fix = { + hackname = ctrl_quotes_use; + select = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']"; + c_fix = char_macro_use; + c_fix_arg = "CTRL"; + test_text = "#define TCTRLFOO BSD43_CTRL(T, 1)"; +}; + + +/* + * sys/mman.h on HP/UX is not C++ ready, + * even though NO_IMPLICIT_EXTERN_C is defined on HP/UX. + * + * rpc/types.h on OSF1/2.0 is not C++ ready, + * even though NO_IMPLICIT_EXTERN_C is defined for the alpha. + * + * The problem is the declaration of malloc. + */ +fix = { + hackname = cxx_unready; + files = sys/mman.h; + files = rpc/types.h; + select = '[^#]+malloc.*;'; /* Catch any form of declaration + not within a macro. */ + bypass = '"C"|__BEGIN_DECLS'; + + c_fix = wrap; + c_fix_arg = "#ifdef __cplusplus\n" + "extern \"C\" {\n" + "#endif\n"; + c_fix_arg = "#ifdef __cplusplus\n" + "}\n" + "#endif\n"; + test_text = "extern void* malloc( size_t );"; +}; + + +/* + * On darwin8 and earlier, mach-o/swap.h isn't properly guarded + * by 'extern "C"'. On darwin7 some mach/ headers aren't properly guarded. + */ +fix = { + hackname = darwin_externc; + mach = "*-*-darwin*"; + files = mach-o/swap.h; + files = mach/mach_time.h; + files = mach/mach_traps.h; + files = mach/message.h; + files = mach/mig.h; + files = mach/semaphore.h; + bypass = "extern \"C\""; + bypass = "__BEGIN_DECLS"; + c_fix = wrap; + c_fix_arg = "#ifdef __cplusplus\n" + "extern \"C\" {\n" + "#endif\n"; + c_fix_arg = "#ifdef __cplusplus\n" + "}\n" + "#endif\n"; + test_text = "extern void swap_fat_header();\n"; +}; + + +/* + * AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of + * bad __GNUC__ tests. + */ + +fix = { + hackname = darwin_gcc4_breakage; + mach = "*-*-darwin*"; + files = AvailabilityMacros.h; + select = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)"; + c_fix = format; + c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))"; + test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && " + "(__GNUC_MINOR__ >= 1)\n"; +}; + + +/* + * __private_extern__ doesn't exist in FSF GCC. Even if it did, + * why would you ever put it in a system header file? + */ +fix = { + hackname = darwin_private_extern; + mach = "*-*-darwin*"; + files = mach-o/dyld.h; + select = "__private_extern__ [a-z_]+ _dyld_"; + c_fix = format; + c_fix_arg = "extern"; + c_fix_arg = "__private_extern__"; + test_text = "__private_extern__ int _dyld_func_lookup(\n" + "const char *dyld_func_name,\n" + "unsigned long *address);\n"; +}; + + +/* + * Darwin headers have a stdint.h that defines UINT8_C and UINT16_C to + * unsigned constants. + */ +fix = { + hackname = darwin_stdint_1; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#define UINT8_C(v)\tv\n#define UINT16_C(v)\tv"; + select = "#define UINT8_C\\(v\\)[ \t]+\\(v ## U\\)\n" + "#define UINT16_C\\(v\\)[ \t]+\\(v ## U\\)"; + test_text = "#define UINT8_C(v) (v ## U)\n" + "#define UINT16_C(v) (v ## U)"; +}; + + +/* + * Darwin headers have a stdint.h that defines INTPTR_MIN and INTPTR_MAX + * with wrong types. + */ +fix = { + hackname = darwin_stdint_2; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#if __WORDSIZE == 64\n" + "#define INTPTR_MAX 9223372036854775807L\n" + "#define INTPTR_MIN (-INTPTR_MAX-1)\n" + "#else\n" + "#define INTPTR_MAX 2147483647L\n" + "#define INTPTR_MIN (-INTPTR_MAX-1)\n" + "#endif"; + select = "#if __WORDSIZE == 64\n" + "#define INTPTR_MIN[ \t]+INT64_MIN\n" + "#define INTPTR_MAX[ \t]+INT64_MAX\n" + "#else\n" + "#define INTPTR_MIN[ \t]+INT32_MIN\n" + "#define INTPTR_MAX[ \t]+INT32_MAX\n" + "#endif"; + test_text = "#if __WORDSIZE == 64\n" + "#define INTPTR_MIN INT64_MIN\n" + "#define INTPTR_MAX INT64_MAX\n" + "#else\n" + "#define INTPTR_MIN INT32_MIN\n" + "#define INTPTR_MAX INT32_MAX\n" + "#endif"; +}; + + +/* + * Darwin headers have a stdint.h that defines UINTPTR_MAX with a wrong type. + */ +fix = { + hackname = darwin_stdint_3; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#if __WORDSIZE == 64\n" + "#define UINTPTR_MAX 18446744073709551615UL\n" + "#else\n" + "#define UINTPTR_MAX 4294967295UL\n" + "#endif"; + select = "#if __WORDSIZE == 64\n" + "#define UINTPTR_MAX[ \t]+UINT64_MAX\n" + "#else\n" + "#define UINTPTR_MAX[ \t]+UINT32_MAX\n" + "#endif"; + test_text = "#if __WORDSIZE == 64\n" + "#define UINTPTR_MAX UINT64_MAX\n" + "#else\n" + "#define UINTPTR_MAX UINT32_MAX\n" + "#endif"; +}; + + +/* + * Darwin headers have a stdint.h that defines SIZE_MAX with a wrong type. + */ +fix = { + hackname = darwin_stdint_4; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#if __WORDSIZE == 64\n" + "#define SIZE_MAX 18446744073709551615UL\n" + "#else\n" + "#define SIZE_MAX 4294967295UL\n" + "#endif"; + select = "#if __WORDSIZE == 64\n" + "#define SIZE_MAX[ \t]+UINT64_MAX\n" + "#else\n" + "#define SIZE_MAX[ \t]+UINT32_MAX\n" + "#endif"; + test_text = "#if __WORDSIZE == 64\n" + "#define SIZE_MAX UINT64_MAX\n" + "#else\n" + "#define SIZE_MAX UINT32_MAX\n" + "#endif"; +}; + + +/* + * Darwin headers have a stdint.h that defines {U,}INTMAX_{MIN,MAX} + * with a wrong type. + */ +fix = { + hackname = darwin_stdint_5; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#if __WORDSIZE == 64\n" + "#define INTMAX_MIN (-9223372036854775807L - 1)\n" + "#define INTMAX_MAX 9223372036854775807L\n" + "#define UINTMAX_MAX 18446744073709551615UL\n" + "#else\n" + "#define INTMAX_MIN (-9223372036854775807LL - 1)\n" + "#define INTMAX_MAX 9223372036854775807LL\n" + "#define UINTMAX_MAX 18446744073709551615ULL\n" + "#endif"; + select = "#define INTMAX_MIN[ \t]+INT64_MIN\n" + "#define INTMAX_MAX[ \t]+INT64_MAX\n" + "\n" + "#define UINTMAX_MAX[ \t]+UINT64_MAX"; + test_text = "#define INTMAX_MIN INT64_MIN\n" + "#define INTMAX_MAX INT64_MAX\n" + "\n" + "#define UINTMAX_MAX UINT64_MAX"; +}; + + +/* + * Darwin headers have a stdint.h that defines {U,}INTMAX_C + * with a wrong type. + */ +fix = { + hackname = darwin_stdint_6; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#if __WORDSIZE == 64\n" + "#define PTRDIFF_MIN (-9223372036854775807L - 1)\n" + "#define PTRDIFF_MAX 9223372036854775807L\n" + "#else\n" + "#define PTRDIFF_MIN (-2147483647 - 1)\n" + "#define PTRDIFF_MAX 2147483647\n" + "#endif"; + select = "#if __WORDSIZE == 64\n" + "#define PTRDIFF_MIN[ \t]+INT64_MIN\n" + "#define PTRDIFF_MAX[ \t]+INT64_MAX\n" + "#else\n" + "#define PTRDIFF_MIN[ \t]+INT32_MIN\n" + "#define PTRDIFF_MAX[ \t]+INT32_MAX\n" + "#endif"; + test_text = "#if __WORDSIZE == 64\n" + "#define PTRDIFF_MIN INT64_MIN\n" + "#define PTRDIFF_MAX INT64_MAX\n" + "#else\n" + "#define PTRDIFF_MIN INT32_MIN\n" + "#define PTRDIFF_MAX INT32_MAX\n" + "#endif"; +}; + + +/* + * Darwin headers have a stdint.h that defines {U,}INTMAX_C + * with a wrong type. + */ +fix = { + hackname = darwin_stdint_7; + mach = "*-*-darwin*"; + files = stdint-darwin.h, stdint.h; + c_fix = format; + c_fix_arg = "#if __WORDSIZE == 64\n" + "#define INTMAX_C(v) (v ## L)\n" + "#define UINTMAX_C(v) (v ## UL)\n" + "#else\n" + "#define INTMAX_C(v) (v ## LL)\n" + "#define UINTMAX_C(v) (v ## ULL)\n" + "#endif"; + select = "#define INTMAX_C\\(v\\)[ \t]+\\(v ## LL\\)\n" + "#define UINTMAX_C\\(v\\)[ \t]+\\(v ## ULL\\)"; + test_text = "#define INTMAX_C(v) (v ## LL)\n" + "#define UINTMAX_C(v) (v ## ULL)"; +}; + + +/* + * Fix <c_asm.h> on Digital UNIX V4.0: + * It contains a prototype for a DEC C internal asm() function, + * clashing with gcc's asm keyword. So protect this with __DECC. + */ +fix = { + hackname = dec_intern_asm; + files = c_asm.h; + sed = "/^[ \t]*float[ \t]*fasm/i\\\n#ifdef __DECC\n"; + sed = "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n" + "#endif\n"; + test_text = + "float fasm {\n" + " ... asm stuff ...\n" + "};\n#pragma intrinsic( dasm )\n/* END ASM TEST*/"; +}; + + +/* + * Fix typo in <wchar.h> on DJGPP 2.03. + */ +fix = { + hackname = djgpp_wchar_h; + file = wchar.h; + select = "__DJ_wint_t"; + bypass = "sys/djtypes.h"; + c_fix = format; + c_fix_arg = "%0\n#include <sys/djtypes.h>"; + c_fix_arg = "#include <stddef.h>"; + test_text = "#include <stddef.h>\n" + "extern __DJ_wint_t x;\n"; +}; + + +/* + * Fix these Sun OS files to avoid an invalid identifier in an #ifdef. + */ +fix = { + hackname = ecd_cursor; + files = "sunwindow/win_lock.h"; + files = "sunwindow/win_cursor.h"; + select = 'ecd\.cursor'; + c_fix = format; + c_fix_arg = 'ecd_cursor'; + + test_text = "#ifdef ecd.cursor\n#error bogus\n#endif /* ecd+cursor */"; +}; + + +/* + * Between 8/24/1998 and 2/17/2001, FreeBSD system headers presume + * neither the existence of GCC 3 nor its exact feature set yet break + * (by design?) when __GNUC__ is set beyond 2. + */ +fix = { + hackname = freebsd_gcc3_breakage; + mach = "*-*-freebsd*"; + files = sys/cdefs.h; + select = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$'; + bypass = '__GNUC__[ \t]*([>=]=[ \t]*[3-9]|>[ \t]*2)'; + c_fix = format; + c_fix_arg = '%0 || __GNUC__ >= 3'; + test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7'; +}; + + +/* + * Some releases of FreeBSD 4 and FreeBSD 5.0 and 5.1 system headers presume + * neither the existence of GCC 4 nor its exact feature set yet break + * (by design?) when __GNUC__ is set beyond 3. + */ +fix = { + hackname = freebsd_gcc4_breakage; + mach = "*-*-freebsd*"; + files = sys/cdefs.h; + select = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \|\| __GNUC__ == 3$'; + c_fix = format; + c_fix_arg = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3'; + test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3'; +}; + + +/* + * Some versions of glibc don't expect the C99 inline semantics. + */ +fix = { + hackname = glibc_c99_inline_1; + files = features.h, '*/features.h'; + select = "^ *&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__$"; + c_fix = format; + c_fix_arg = "%0 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)"; + test_text = <<-EOT + #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ + && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ + # define __USE_EXTERN_INLINES 1 + #endif + EOT; +}; + + +/* + * Similar, but a version that didn't have __NO_INLINE__ + */ +fix = { + hackname = glibc_c99_inline_1a; + files = features.h, '*/features.h'; + select = "(\\) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__)\n" + "(#[ \t]*define[ \t]*__USE_EXTERN_INLINES[ \t]*1)"; + c_fix = format; + c_fix_arg = "%1 && (defined __extern_inline || defined __GNUC_GNU_INLINE__)\n%2"; + test_text = <<-EOT + #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ + # define __USE_EXTERN_INLINES 1 + #endif + EOT; +}; + + +/* + * The glibc_c99_inline_1 fix should have fixed everything. Unfortunately + * there are many glibc headers which do not respect __USE_EXTERN_INLINES. + * The remaining glibc_c99_inline_* fixes deal with some of those headers. + */ +fix = { + hackname = glibc_c99_inline_2; + files = sys/stat.h, '*/sys/stat.h'; + select = "extern __inline__ int"; + sed = "s/extern int \\(stat\\)/" + "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n" + "__inline__ int \\1/"; + sed = "s/extern int \\([lf]stat\\)/" + "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n" + "__inline__ int \\1/"; + sed = "s/extern int \\(mknod\\)/" + "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n" + "__inline__ int \\1/"; + sed = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\(stat\\)/" + "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n" + "__inline__ int __REDIRECT\\1 (\\2/"; + sed = "s/extern int __REDIRECT\\(_NTH\\)\\{0,1\\} (\\([lf]stat\\)/" + "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n" + "__inline__ int __REDIRECT\\1 (\\2/"; + sed = "s/^extern __inline__ int/" + "#ifdef __GNUC_GNU_INLINE__\\\nextern\\\n#endif\\\n" + "__inline__ int/"; + test_text = <<-EOT + extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2)); + extern __inline__ int + __NTH (fstat64 (int __fd, struct stat64 *__statbuf)) + {} + EOT; +}; + + +fix = { + hackname = glibc_c99_inline_3; + files = bits/string2.h, '*/bits/string2.h'; + select = "extern __inline"; + bypass = "__extern_inline|__GNU_STDC_INLINE__"; + c_fix = format; + c_fix_arg = "# if defined(__cplusplus) || defined(__GNUC_STDC_INLINE__)"; + c_fix_arg = "^# ifdef __cplusplus$"; + test_text = <<-EOT + # ifdef __cplusplus + # define __STRING_INLINE inline + # else + # define __STRING_INLINE extern __inline + # endif + EOT; +}; + + +fix = { + hackname = glibc_c99_inline_4; + files = sys/sysmacros.h, '*/sys/sysmacros.h', wchar.h, '*/wchar.h'; + bypass = "__extern_inline|__gnu_inline__"; + select = "(^| )extern __inline"; + c_fix = format; + c_fix_arg = "%0 __attribute__ ((__gnu_inline__))"; + test_text = <<-EOT + __extension__ extern __inline unsigned int + extern __inline unsigned int + EOT; +}; + + +/* glibc-2.3.5 defines pthread mutex initializers incorrectly, + * so we replace them with versions that correspond to the + * definition. + */ +fix = { + hackname = glibc_mutex_init; + files = pthread.h; + select = '\{ *\{ *0, *\} *\}'; + sed = "/define[ \t]\\{1,\\}PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/{\n" + "N\ns/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/\n}"; + sed = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_" + "\\(RECURSIVE\\)_NP\\) }/{ \\1, 0 }/"; + sed = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_" + "\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0 }/"; + sed = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_" + "\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/"; + sed = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_" + "\\(RECURSIVE\\)_NP\\) }/{ \\1, 0, 0 }/"; + sed = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_" + "\\(ERRORCHECK\\)_NP\\) }/{ \\1, 0, 0 }/"; + sed = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_" + "\\(ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/"; + sed = "/define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/" + "N;s/^[ \t]*#[ \t]*" + "\\(define[ \t]\\{1,\\}PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n" + "[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\\n" + "# \\1\\\n" + " { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n" + "# else\\\n" + "# \\1\\\n" + " { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\\n" + "# endif/"; + sed = "s/{ \\(0, 0, 0, 0, 0, 0, " + "PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/"; + sed = "/define[ \t]\\{1,\\}PTHREAD_COND_INITIALIZER/" + "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/"; + + test_text = <<- _EOText_ + #define PTHREAD_MUTEX_INITIALIZER \\ + { { 0, } } + #ifdef __USE_GNU + # if __WORDSIZE == 64 + # define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\ + { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } } + # define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } } + # define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } } + # else + # define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\ + { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } } + # define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\ + { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } } + # define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\ + { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } } + # endif + #endif + # define PTHREAD_RWLOCK_INITIALIZER \\ + { { 0, } } + # ifdef __USE_GNU + # if __WORDSIZE == 64 + # define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \\ + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } } + # else + # define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\ + { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } } + # endif + # endif + #define PTHREAD_COND_INITIALIZER { { 0, } } + _EOText_; +}; + + +/* glibc versions before 2.5 have a version of stdint.h that defines + UINT8_C and UINT16_C to produce unsigned constants, as do uClibc + versions with stdint.h based on those glibc versions. */ +fix = { + hackname = glibc_stdint; + files = stdint.h; + select = "GNU C Library"; + c_fix = format; + c_fix_arg = "# define UINT8_C(c)\tc\n# define UINT16_C(c)\tc"; + c_fix_arg = "# define UINT8_C\\(c\\)\tc ## U\n# define UINT16_C\\(c\\)\tc ## U"; + test_text = "/* This file is part of the GNU C Library. */\n# define UINT8_C(c)\tc ## U\n# define UINT16_C(c)\tc ## U"; +}; + + +/* Some versions of glibc have a version of bits/string2.h that + produces "value computed is not used" warnings from strncpy; fix + this definition by using __builtin_strncpy instead as in newer + versions. */ +fix = { + hackname = glibc_strncpy; + files = bits/string2.h; + bypass = "__builtin_strncpy"; + c_fix = format; + c_fix_arg = "# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)"; + c_fix_arg = "# define strncpy([^\n]*\\\\\n)*[^\n]*"; + test_text = <<-EOT + # define strncpy(dest, src, n) \ + (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \\ + ? (strlen (src) + 1 >= ((size_t) (n)) \\ + ? (char *) memcpy (dest, src, n) \\ + : strncpy (dest, src, n)) \\ + : strncpy (dest, src, n))) + EOT; + +}; + +/* glibc's tgmath.h relies on an expression that is not an integer + constant expression being treated as it was by GCC 4.4 and + earlier. */ +fix = { + hackname = glibc_tgmath; + files = tgmath.h; + select = '\(\(\(type\) 0.25\) && \(\(type\) 0.25 - 1\)\)'; + bypass = "__floating_type\\(type\\) \\\\\n.*__builtin_classify_type"; + c_fix = format; + c_fix_arg = "(__builtin_classify_type ((type) 0) == 8 || (__builtin_classify_type ((type) 0) == 9 && __builtin_classify_type (__real__ ((type) 0)) == 8))"; + test_text = "# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))"; +}; + +/* + * Fix these files to use the types we think they should for + * ptrdiff_t, size_t, and wchar_t. + * + * This defines the types in terms of macros predefined by our 'cpp'. + * This is supposedly necessary for glibc's handling of these types. + * It's probably not necessary for anyone else, but it doesn't hurt. + */ +fix = { + hackname = gnu_types; + files = "sys/types.h"; + files = "stdlib.h"; + files = "sys/stdtypes.h"; + files = "stddef.h"; + files = "memory.h"; + files = "unistd.h"; + bypass = '_GCC_(PTRDIFF|SIZE|WCHAR)_T'; + select = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;"; + c_fix = gnu_type; + /* The Solaris 10 headers already define these types correctly. */ + mach = '*-*-solaris2.1[0-9]*'; + not_machine = true; + + test_text = "typedef long int ptrdiff_t; /* long int */\n" + "typedef uint_t size_t; /* uint_t */\n" + "typedef ushort_t wchar_t; /* ushort_t */"; +}; + + +/* + * Fix HP & Sony's use of "../machine/xxx.h" + * to refer to: <machine/xxx.h> + */ +fix = { + hackname = hp_inline; + files = sys/spinlock.h; + files = machine/machparam.h; + select = "[ \t]*#[ \t]*include[ \t]+" '"\.\./machine/'; + + c_fix = format; + c_fix_arg = "%1<machine/%2.h>"; + + c_fix_arg = "([ \t]*#[ \t]*include[ \t]+)" '"\.\./machine/' + '([a-z]+)\.h"'; + + test_text = ' # include "../machine/mumble.h"'; +}; + + +/* + * Check for (...) in C++ code in HP/UX sys/file.h. + */ +fix = { + hackname = hp_sysfile; + files = sys/file.h; + select = "HPUX_SOURCE"; + + c_fix = format; + c_fix_arg = "(struct file *, ...)"; + c_fix_arg = '\(\.\.\.\)'; + + test_text = "extern void foo(...); /* HPUX_SOURCE - bad varargs */"; +}; + + +/* + * Un-Hide a series of five FP defines from post-1999 compliance GCC: + * FP_NORMAL, FP_ZERO, FP_INFINITE, FP_SUBNORMAL and FP_NAN + */ +fix = { + hackname = hppa_hpux_fp_macros; + mach = "hppa*-hp-hpux11*"; + files = math.h; + select = "#[ \t]*define[ \t]*FP_NORMAL.*\n" + "#[ \t]*define[ \t]*FP_ZERO.*\n" + "#[ \t]*define[ \t]*FP_INFINITE.*\n" + "#[ \t]*define[ \t]*FP_SUBNORMAL.*\n" + "#[ \t]*define[ \t]*FP_NAN.*\n"; + c_fix = format; + c_fix_arg = <<- _EOFix_ + #endif /* _INCLUDE_HPUX_SOURCE */ + + #if defined(_INCLUDE_HPUX_SOURCE) || \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) + %0#endif + + #ifdef _INCLUDE_HPUX_SOURCE + + _EOFix_; + + test_text = + "# define FP_NORMAL 0\n" + "# define FP_ZERO 1\n" + "# define FP_INFINITE 2\n" + "# define FP_SUBNORMAL 3\n" + "# define FP_NAN 4\n"; +}; + + +/* + * Delete C++ double pow (double, int) inline function from HP-UX 10 & 11 + * math.h to prevent clash with define in c_std/bits/std_cmath.h. + */ +fix = { + hackname = hpux10_cpp_pow_inline; + files = fixinc-test-limits.h, math.h; + select = <<- END_POW_INLINE + ^# +ifdef +__cplusplus + +\} + +inline +double +pow\(double +__d,int +__expon\) +\{ + [ ]+return +pow\(__d,\(double\)__expon\); + +\} + +extern +"C" +\{ + #else + # +endif + END_POW_INLINE; + + c_fix = format; + c_fix_arg = ""; + + test_text = + "# ifdef __cplusplus\n" + " }\n" + " inline double pow(double __d,int __expon) {\n" + "\t return pow(__d,(double)__expon);\n" + " }\n" + ' extern "C"' " {\n" + "#else\n" + "# endif"; +}; + +fix = { + hackname = hpux11_cpp_pow_inline; + files = math.h; + select = " +inline double pow\\(double d,int expon\\) \\{\n" + " +return pow\\(d, \\(double\\)expon\\);\n" + " +\\}\n"; + c_fix = format; + c_fix_arg = ""; + + test_text = + " inline double pow(double d,int expon) {\n" + " return pow(d, (double)expon);\n" + " }\n"; +}; + + +/* + * Fix hpux 10.X missing ctype declarations 1 + */ +fix = { + hackname = hpux10_ctype_declarations1; + files = ctype.h; + select = "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)"; + bypass = "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\("; + c_fix = format; + c_fix_arg = "#ifdef _PROTOTYPES\n" + "extern int __tolower(int);\n" + "extern int __toupper(int);\n" + "#else /* NOT _PROTOTYPES */\n" + "extern int __tolower();\n" + "extern int __toupper();\n" + "#endif /* _PROTOTYPES */\n\n" + "%0\n"; + + test_text = "# define _toupper(__c) __toupper(__c)\n"; +}; + + +/* + * Fix hpux 10.X missing ctype declarations 2 + */ +fix = { + hackname = hpux10_ctype_declarations2; + files = ctype.h; + select = "^# if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)"; + bypass = "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\("; + c_fix = format; + c_fix_arg = "%0\n\n" + "#ifdef _PROTOTYPES\n" + " extern int _isalnum(int);\n" + " extern int _isalpha(int);\n" + " extern int _iscntrl(int);\n" + " extern int _isdigit(int);\n" + " extern int _isgraph(int);\n" + " extern int _islower(int);\n" + " extern int _isprint(int);\n" + " extern int _ispunct(int);\n" + " extern int _isspace(int);\n" + " extern int _isupper(int);\n" + " extern int _isxdigit(int);\n" + "# else /* not _PROTOTYPES */\n" + " extern int _isalnum();\n" + " extern int _isalpha();\n" + " extern int _iscntrl();\n" + " extern int _isdigit();\n" + " extern int _isgraph();\n" + " extern int _islower();\n" + " extern int _isprint();\n" + " extern int _ispunct();\n" + " extern int _isspace();\n" + " extern int _isupper();\n" + " extern int _isxdigit();\n" + "#endif /* _PROTOTYPES */\n"; + + test_text = "# if defined(_SB_CTYPE_MACROS) && !defined(__lint)\n" + " extern unsigned int *__SB_masks;\n"; +}; + + +/* + * Fix hpux 10.X missing stdio declarations + */ +fix = { + hackname = hpux10_stdio_declarations; + files = stdio.h; + select = "^#[ \t]*define _iob[ \t]*__iob"; + bypass = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\("; + c_fix = format; + c_fix_arg = "%0\n\n" + "# if defined(__STDC__) || defined(__cplusplus)\n" + " extern int snprintf(char *, size_t, const char *, ...);\n" + " extern int vsnprintf(char *, size_t, const char *, __va_list);\n" + "# else /* not __STDC__) || __cplusplus */\n" + " extern int snprintf();\n" + " extern int vsnprintf();\n" + "# endif /* __STDC__) || __cplusplus */\n"; + + test_text = "# define _iob __iob\n"; +}; + + +/* + * Make sure hpux defines abs in header. + */ +fix = { + hackname = hpux11_abs; + mach = "ia64-hp-hpux11*"; + files = stdlib.h; + select = "ifndef _MATH_INCLUDED"; + c_fix = format; + c_fix_arg = "if !defined(_MATH_INCLUDED) || defined(__GNUG__)"; + test_text = "#ifndef _MATH_INCLUDED"; +}; + + +/* + * Keep HP-UX 11 from stomping on C++ math namespace + * with defines for fabsf. + */ +fix = { + hackname = hpux11_fabsf; + files = math.h; + select = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*"; + bypass = "__cplusplus"; + + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + + test_text = + "#ifdef _PA_RISC\n" + "# define fabsf(x) ((float)fabs((double)(float)(x)))\n" + "#endif"; +}; + + +/* + * Fix C99 constant in __POINTER_SET define. + */ +fix = { + hackname = hpux11_pthread_const; + mach = "*-hp-hpux11.[0-3]*"; + files = sys/pthread.h; + select = "^#define[ \t]*__POINTER_SET[ \t]*\\(\\(void \\*\\) 1LL\\)"; + + c_fix = format; + c_fix_arg = "#define __POINTER_SET\t\t((void *) 1L)"; + test_text = "#define __POINTER_SET\t\t((void *) 1LL)"; +}; + + +/* + * Prevent HP-UX 11 from defining __size_t and preventing size_t from + * being defined by having it define _hpux_size_t instead. + */ +fix = { + hackname = hpux11_size_t; + mach = "*-hp-hpux11*"; + select = "__size_t"; + + c_fix = format; + c_fix_arg = "_hpux_size_t"; + + test_text = + "#define __size_t size_t\n" + " extern int getpwuid_r( char *, __size_t, struct passwd **);\n"; +}; + + +/* + * Fix hpux 11.00 broken snprintf declaration + * (third argument is char *, needs to be const char * to prevent + * spurious warnings with -Wwrite-strings or in C++). + */ +fix = { + hackname = hpux11_snprintf; + files = stdio.h; + select = '(extern int snprintf *\(char *\*, *(|__|_hpux_)size_t,)' + ' *(char *\*, *\.\.\.\);)'; + c_fix = format; + c_fix_arg = '%1 const %3'; + + test_text = "extern int snprintf(char *, size_t, char *, ...);\n" + "extern int snprintf(char *, __size_t, char *, ...);\n" + "extern int snprintf(char *, _hpux_size_t, char *, ...);"; +}; + +/* + * Fix hpux 11.00 broken vsnprintf declaration + */ +fix = { + hackname = hpux11_vsnprintf; + files = stdio.h; + select = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, ' + 'const char \*,) __va__list\);'; + c_fix = format; + c_fix_arg = "%1 __va_list);"; + + test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,' + ' __va__list);'; +}; + + +/* + * get rid of bogus inline definitions in HP-UX 8.0 + */ +fix = { + hackname = hpux8_bogus_inlines; + files = math.h; + select = inline; + bypass = "__GNUG__"; + sed = "s@inline int abs(int [a-z][a-z]*) {.*}" + "@extern \"C\" int abs(int);@"; + sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@"; + sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@"; + sed = "s@inline double sqr(double [a-z][a-z]*) {.*}@@"; + test_text = "inline int abs(int v) { return (v>=0)?v:-v; }\n" + "inline double sqr(double v) { return v**0.5; }"; +}; + + +/* + * Fix hpux broken ctype macros + */ +fix = { + hackname = hpux_ctype_macros; + files = ctype.h; + select = '((: |\()__SB_masks \? )' + '(__SB_masks\[__(alnum|c)\] & _IS)'; + c_fix = format; + c_fix_arg = "%1(int)%3"; + + test_text = ": __SB_masks ? __SB_masks[__alnum] & _ISCNTRL\n" + "# define isalpha(__c) (__SB_masks ? __SB_masks[__c] & _IS\n"; +}; + + +/* + * Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc. + */ +fix = { + hackname = hpux_htonl; + files = netinet/in.h; + select = "#ifndef _XOPEN_SOURCE_EXTENDED[ \t]*\n" + "(/\\*\n" + " \\* Macros for number representation conversion\\.\n" + " \\*/\n" + "#ifndef ntohl)"; + c_fix = format; + c_fix_arg = "#if 1\n%1"; + + test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n" + "/*\n" + " * Macros for number representation conversion.\n" + " */\n" + "#ifndef ntohl\n" + "#define ntohl(x) (x)\n" + "#define ntohs(x) (x)\n" + "#define htonl(x) (x)\n" + "#define htons(x) (x)\n" + "#endif\n" + "#endif /* ! _XOPEN_SOURCE_EXTENDED */"; +}; + + +/* + * HP-UX long_double + */ +fix = { + hackname = hpux_long_double; + mach = "*-*-hpux10*"; + mach = "*-*-hpux11.[012]*"; + files = stdlib.h; + select = "extern[ \t]long_double[ \t]strtold"; + bypass = "long_double_t"; + sed = "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D"; + sed = "s/long_double/long double/g"; + + test_text = "# ifndef _LONG_DOUBLE\n" + "# define _LONG_DOUBLE\n" + " typedef struct {\n" + " unsigned int word1, word2, word3, word4;\n" + " } long_double;\n" + "# endif /* _LONG_DOUBLE */\n" + "extern long_double strtold(const char *, char **);\n"; +}; + + /* + * We cannot use the above rule on 11.31 because it removes the strtold + * definition. ia64 is OK with no hack, PA needs some help. + */ +fix = { + hackname = hpux_long_double_2; + mach = "hppa*-*-hpux11.3*"; + files = stdlib.h; + select = "#[ \t]*if[ \t]*!defined\\(__ia64\\) \\|\\| defined\\(_PROTOTYPES\\) \\|\\| defined\\(_LONG_DOUBLE_STRUCT\\)"; + c_fix = format; + c_fix_arg = "# if !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)"; + + test_text = "# if !defined(__ia64) || !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT)\n"; +}; + +/* + * Fix hpux10.20 <sys/time.h> to avoid invalid forward decl + */ +fix = { + hackname = hpux_systime; + files = sys/time.h; + select = "^extern struct sigevent;"; + + c_fix = format; + c_fix_arg = "struct sigevent;"; + + test_text = 'extern struct sigevent;'; +}; + + +/* + * Wrap spu_info in ifdef _KERNEL. GCC cannot handle an array of unknown + * type and mpinfou is only defined when _KERNEL is set. + */ +fix = { + hackname = hpux_spu_info; + mach = "*-hp-hpux*"; + /* + * It is tempting to omit the first "files" entry. Do not. + * The testing machinery will take the first "files" entry as the name + * of a test file to play with. It would be a nuisance to have a directory + * with the name "*". + */ + files = "ia64/sys/getppdp.h"; + files = "*/sys/getppdp.h"; + select = "^.*extern.*spu_info.*"; + + c_fix = format; + c_fix_arg = "#ifdef _KERNEL\n%0\n#endif"; + + test_text = "extern union mpinfou spu_info[];"; +}; + +fix = { + hackname = hpux11_extern_sendfile; + mach = "*-hp-hpux11.[12]*"; + files = sys/socket.h; + select = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n"; + c_fix = format; + c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n"; + test_text = " extern sbsize_t sendfile __((int, int, off_t, bsize_t,\n const struct iovec *, int));\n"; +}; + +fix = { + hackname = hpux11_extern_sendpath; + mach = "*-hp-hpux11.[12]*"; + files = sys/socket.h; + select = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n"; + c_fix = format; + c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n"; + test_text = " extern sbsize_t sendpath __((int, int, off_t, bsize_t,\n const struct iovec *, int));\n"; +}; + +fix = { + hackname = hpux_extern_errno; + mach = "*-hp-hpux10.*"; + mach = "*-hp-hpux11.[0-2]*"; + files = errno.h; + select = "^[ \t]*extern int errno;$"; + c_fix = format; + c_fix_arg = "#ifdef __cplusplus\nextern \"C\" {\n#endif\n%0\n#ifdef __cplusplus\n}\n#endif"; + test_text = " extern int errno;\n"; +}; + + +/* + * Add missing braces to pthread initializer defines. + */ +fix = { + hackname = hpux_pthread_initializers; + mach = "*-hp-hpux11.[0-3]*"; + files = sys/pthread.h; + sed = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\" + "@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@"; + sed = "s@^[ \t]*1,[ \t]*\\\\" + "@\t{ 1, 0 }@"; + sed = "/^[ \t]*0$/d"; + sed = "s@__PTHREAD_MUTEX_VALID, 0" + "@{ __PTHREAD_MUTEX_VALID, 0 }@"; + sed = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\" + "@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@"; + sed = "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\" + "@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@"; + sed = "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \t]*\\\\" + "@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@"; + sed = "s@^[ \t]*0, 0[ \t]*\\\\" + "@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@"; + sed = "s@__PTHREAD_COND_VALID, 0" + "@{ __PTHREAD_COND_VALID, 0 }@"; + sed = "s@__LWP_COND_VALID, 0,[ \t]*\\\\" + "@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@"; + sed = "s@__PTHREAD_RWLOCK_VALID, 0" + "@{ __PTHREAD_RWLOCK_VALID, 0 }@"; + sed = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\" + "@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@"; + sed = "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \t]*\\\\" + "@\t{ 0, 0, 0, 0, 0 }, { 0, 0}\t\t\t\t\t\\\\@"; + test_text = "#define PTHREAD_MUTEX_INITIALIZER {\t\t\t\t\t\\\\\n" + "\t__PTHREAD_MUTEX_VALID, 0,\t\t\t\t\t\\\\\n" + "\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n" + "\t__SPNLCK_INITIALIZER,\t\t\t\t\t\t\\\\\n" + "\t0, 0, -1, 0,\t\t\t\t\t\t\t\\\\\n" + "\t0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,\t\t\t\t\\\\\n" + "\t0, 0\t\t\t\t\t\t\t\t\\\\\n" + "}\n"; +}; + +fix = { + hackname = hpux_c99_intptr; + mach = "*-hp-hpux11.3*"; + files = stdint-hpux11.h, stdint.h; + sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MAX[ \t]*INT32_MAX[ \t]*$@#define PTRDIFF_MAX (2147483647l)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*PTRDIFF_MIN[ \t]*INT32_MIN[ \t]*$@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MAX[ \t]*INT32_MAX[ \t]*$@#define INTPTR_MAX (2147483647l)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*INTPTR_MIN[ \t]*INT32_MIN[ \t]*$@#define INTPTR_MIN (-INTPTR_MAX - 1)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*UINTPTR_MAX[ \t]*UINT32_MAX[ \t]*$@#define UINTPTR_MAX (4294967295ul)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*SIZE_MAX[ \t]*UINT32_MAX[ \t]*$@#define SIZE_MAX (4294967295ul)@"; + test_text = "#define PTRDIFF_MAX INT32_MAX\n" + "#define PTRDIFF_MIN INT32_MIN\n" + "#define INTPTR_MAX INT32_MAX\n" + "#define INTPTR_MIN INT32_MIN\n" + "#define UINTPTR_MAX UINT32_MAX\n" + "#define SIZE_MAX UINT32_MAX\n"; +}; + +/* + * These hacks are need in inttypes.h on 11.23 and in stdint.h on 11.31. + */ + +fix = { + hackname = hpux_c99_inttypes; + mach = "*-hp-hpux11.[23]*"; + files = inttypes.h; + files = stdint-hpux11.h, stdint.h; + sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*__CONCAT_U__(__c)[ \t]*$@#define UINT8_C(__c) (__c)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*__CONCAT_U__(__c)[ \t]*$@#define UINT16_C(__c) (__c)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*INT32_C(__c)[ \t]*__CONCAT__(__c,l)[ \t]*$@#define INT32_C(__c) (__c)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT32_C(__c)[ \t].*$@#define UINT32_C(__c) __CONCAT__(__c,u)@"; + test_text = "#define UINT8_C(__c) __CONCAT_U__(__c)\n" + "#define UINT16_C(__c) __CONCAT_U__(__c)\n" + "#define INT32_C(__c) __CONCAT__(__c,l)\n" + "#define UINT32_C(__c) __CONCAT__(__c,ul)\n"; +}; + +fix = { + hackname = hpux_c99_inttypes2; + mach = "*-hp-hpux11.2*"; + files = stdint-hpux11.h, stdint.h; + sed = "s@^[ \t]*#[ \t]*define[ \t]*INT8_C(__c)[ \t]*((signed char)(__c))[ \t]*$@#define INT8_C(__c) (__c)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT8_C(__c)[ \t]*((unsigned char)(__c))[ \t]*$@#define UINT8_C(__c) (__c)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*INT16_C(__c)[ \t]*((short)(__c))[ \t]*$@#define INT16_C(__c) (__c)@"; + sed = "s@^[ \t]*#[ \t]*define[ \t]*UINT16_C(__c)[ \t]*((unsigned short)(__c))[ \t]*$@#define UINT16_C(__c) (__c)@"; + test_text = "# define INT8_C(__c) ((signed char)(__c))\n" + "# define UINT8_C(__c) ((unsigned char)(__c))\n" + "# define INT16_C(__c) ((short)(__c))\n" + "# define UINT16_C(__c) ((unsigned short)(__c))\n"; +}; + +fix = { + hackname = hpux_stdint_least_fast; + mach = "*-hp-hpux11.2*"; + files = stdint-hpux11.h, stdint.h; + select = + "^[ \t]*#[ \t]*define[ \t]+UINT_(LEAST|FAST)64_MAX[ \t]+ULLONG_MAX"; + c_fix = format; + c-fix-arg = "# define UINT_%164_MAX __UINT64_MAX__"; + test-text = "# define UINT_FAST64_MAX ULLONG_MAX\n" + "# define UINT_LEAST64_MAX ULLONG_MAX\n"; + _EOFix_; +}; + +fix = { + hackname = hpux_inttype_int8_t; + mach = "*-hp-hpux1[01].*"; + files = sys/_inttypes.h; + select = "^[ \t]*typedef[ \t]*char[ \t]*int(_least){0,1}8_t.*"; + c_fix = format; + c_fix_arg = "typedef signed char int%18_t;"; + test_text = "typedef char int_least8_t;\n" + "typedef char int8_t;\n"; +}; + +fix = { + hackname = hpux_imaginary_i; + mach = "ia64-hp-hpux11.*"; + files = complex.h; + select = "^[ \t]*#[ \t]*define[ \t]*_Complex_I.*"; + c_fix = format; + c_fix_arg = "#define _Complex_I (__extension__ 1.0iF)"; + test_text = "#define _Complex_I (0.f+_Imaginary_I)\n"; +}; + +/* + * Fix glibc definition of HUGE_VAL in terms of hex floating point constant + */ +fix = { + hackname = huge_val_hex; + files = bits/huge_val.h; + select = "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*"; + bypass = "__builtin_huge_val"; + + c_fix = format; + c_fix_arg = "#define HUGE_VAL (__builtin_huge_val())\n"; + + test_text = "# define HUGE_VAL\t(__extension__ 0x1.0p2047)"; +}; + + +/* + * Fix glibc definition of HUGE_VALF in terms of hex floating point constant + */ +fix = { + hackname = huge_valf_hex; + files = bits/huge_val.h; + select = "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*"; + bypass = "__builtin_huge_valf"; + + c_fix = format; + c_fix_arg = "#define HUGE_VALF (__builtin_huge_valf())\n"; + + test_text = "# define HUGE_VALF (__extension__ 0x1.0p255f)"; +}; + + +/* + * Fix glibc definition of HUGE_VALL in terms of hex floating point constant + */ +fix = { + hackname = huge_vall_hex; + files = bits/huge_val.h; + select = "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*"; + bypass = "__builtin_huge_vall"; + + c_fix = format; + c_fix_arg = "#define HUGE_VALL (__builtin_huge_vall())\n"; + + test_text = "# define HUGE_VALL (__extension__ 0x1.0p32767L)"; +}; + + +/* + * Fix return type of abort and free + */ +fix = { + hackname = int_abort_free_and_exit; + files = stdlib.h; + select = "int[ \t]+(abort|free|exit)[ \t]*\\("; + bypass = "_CLASSIC_ANSI_TYPES"; + + c_fix = format; + c_fix_arg = "void\t%1("; + + test_text = "extern int abort(int);\n" + "extern int free(void*);\n" + "extern int exit(void*);"; +}; + + +/* + * Fix various macros used to define ioctl numbers. + * The traditional syntax was: + * + * #define _IO(n, x) (('n'<<8)+x) + * #define TIOCFOO _IO(T, 1) + * + * but this does not work with the C standard, which disallows macro + * expansion inside strings. We have to rewrite it thus: + * + * #define _IO(n, x) ((n<<8)+x) + * #define TIOCFOO _IO('T', 1) + * + * The select expressions match too much, but the c_fix code is cautious. + * + * _IO might be: _IO DESIO BSD43__IO with W, R, WR, C, ... suffixes. + */ +fix = { + hackname = io_quotes_def; + select = "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]"; + c_fix = char_macro_def; + c_fix_arg = "IO"; + test_text = + "#define BSD43__IOWR(n, x) (('n'<<8)+x)\n" + "#define _IOWN(x,y,t) (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|('x'<<8)|y)\n" + "#define _IO(x,y) ('x'<<8|y)"; + test_text = + "#define XX_IO(x) ('x'<<8|256)"; +}; + +fix = { + hackname = io_quotes_use; + select = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*" + "\\( *[^,']"; + c_fix = char_macro_use; + c_fix_arg = "IO"; + test_text = "#define TIOCFOO BSD43__IOWR(T, 1)\n" + "#define TIOCFOO \\\\\n" + "BSD43__IOWR(T, 1) /* Some are multi-line */"; +}; + + +/* + * Check for missing ';' in struct + */ +fix = { + hackname = ip_missing_semi; + files = netinet/ip.h; + select = "}$"; + sed = "/^struct/,/^};/s/}$/};/"; + test_text= + "struct mumble {\n" + " union {\n" + " int x;\n" + " }\n" + "}; /* mumbled struct */\n"; +}; + + +/* + * IRIX 6.5.1[89] <internal/sgimacros.h> unconditionally defines + * __restrict as restrict iff __c99. This is wrong for C++, which + * needs many C99 features, but only supports __restrict. + */ +fix = { + hackname = irix___restrict; + files = internal/sgimacros.h; + select = "(#ifdef __c99\n)(#[ \t]*define __restrict restrict)"; + + mach = "mips-sgi-irix6.5"; + c_fix = format; + c_fix_arg = "%1" + "# ifndef __cplusplus\n%2\n# endif"; + + test_text = "#ifdef __c99\n# define __restrict restrict"; +}; + +/* + * IRIX 6.5.22 <internal/math_core.h> uses the SGI c99 __generic() intrinsic + * to define the fpclasify, isfinite, isinf, isnan, isnormal and signbit + * functions. + * + * This was probably introduced around IRIX 6.5.18 + */ +fix = { + hackname = irix___generic1; + files = internal/math_core.h; + mach = "mips-sgi-irix6.5"; + select = "#define ([a-z]+)\\(x\\) *__generic.*"; + + c_fix = format; + c_fix_arg = "extern int %1(double);\n" + "extern int %1f(float);\n" + "extern int %1l(long double);\n" + "#define %1(x) (sizeof(x) == sizeof(double) ? _%1(x) \\\n" + " : sizeof(x) == sizeof(float) ? _%1f(x) \\\n" + " : _%1l(x))\n"; + + test_text = + "#define isnan(x) __generic(x,,, _isnan, _isnanf, _isnanl,,,)(x)\n"; +}; + + +/* Likewise <internal/math_core.h> on IRIX 6.5.19 and later uses the SGI + compiler's __generic intrinsic to define isgreater, isgreaterequal, + isless, islessequal, islessgreater and isunordered functions. */ +fix = { + hackname = irix___generic2; + files = internal/math_core.h; + mach = "mips-sgi-irix6.5"; + select = "#define ([a-z]+)\\(x,y\\) *__generic.*"; + + c_fix = format; + c_fix_arg = "#define %1(x,y) \\\n" + " ((sizeof(x)<=4 && sizeof(y)<=4) ? _%1f(x,y) \\\n" + " : (sizeof(x)<=8 && sizeof(y)<=8) ? _%1(x,y) \\\n" + " : _%1l(x,y))\n"; + + test_text = + "#define isless(x,y) __generic(x,y,, _isless, _islessf, _islessl,,,)(x,y)"; +}; + + +/* + * IRIX 5.2's <sys/asm.h> contains an asm comment with a contraction + * that causes the assembly preprocessor to complain about an + * unterminated character constant. + */ +fix = { + hackname = irix_asm_apostrophe; + files = sys/asm.h; + + select = "^[ \t]*#.*[Ww]e're"; + c_fix = format; + c_fix_arg = "%1 are"; + c_fix_arg = "^([ \t]*#.*[Ww]e)'re"; + test_text = "\t# and we're on vacation"; +}; + + +/* + * IRIX 6.5 complex.h defines _Complex_I and _Imaginary_I in terms of __I__, + * which is a MIPSpro compiler builtin. Remove _Imaginary_I and imaginary + * definitions which are not supported by GCC. + */ +fix = { + hackname = irix_complex; + mach = "mips-sgi-irix6.5"; + files = complex.h; + select = "#define[ \t]_Complex_I[ \t]\\(\\(float[ \t]_Complex\\)[ \t]\\(__I__\\)\\)"; + sed = "s/#define[ \t]_Complex_I[ \t]((float[ \t]_Complex)[ \t](__I__))/" + "#define _Complex_I (__extension__ 1.0iF)/"; + sed = "/#define[ \t]imaginary[ \t]_Imaginary/d"; + sed = "/#define[ \t]_Imaginary_I/d"; + sed = "s/#define[ \t]I[ \t]_Imaginary_I/#define I _Complex_I/"; + test_text = "#define _Complex_I ((float _Complex) (__I__))\n" + "#define imaginary _Imaginary\n" + "// #define _Imaginary_I ((float _Imaginary) 1)\n" + "#define _Imaginary_I __I__\n" + "#define I _Imaginary_I"; +}; + + +/* + * Non-traditional "const" declaration in Irix's limits.h. + */ +fix = { + hackname = irix_limits_const; + files = fixinc-test-limits.h, limits.h; + select = "^extern const "; + c_fix = format; + c_fix_arg = "extern __const "; + test_text = "extern const char limit; /* test limits */"; +}; + + +/* + * IRIX 6.5 PTHREAD_*_INITIALIZER need an additional level of braces in + * <pthread.h>. + */ +fix = { + hackname = irix_pthread_init; + files = pthread.h; + select = "^(#define[ \t]+PTHREAD_.*_INITIALIZER[ \t]+)(\\{ 0 \\})"; + + mach = "mips-sgi-irix6.5"; + c_fix = format; + c_fix_arg = "%1{ %2 }"; + test_text = "#define PTHREAD_MUTEX_INITIALIZER { 0 }\n" + "#define PTHREAD_COND_INITIALIZER { 0 }\n" + "#define PTHREAD_RWLOCK_INITIALIZER { 0 }"; +}; + + +/* + * IRIX 6.5.1[78] <sys/socket.h> has a broken definition of socklen_t. + * Various socket function prototypes use different types instead, + * depending on the API in use (BSD, XPG4/5), but the socklen_t + * definition doesn't reflect this (SGI Bug Id 864477, fixed in + * IRIX 6.5.19). + */ +fix = { + hackname = irix_socklen_t; + files = sys/socket.h; + select = "(#define _SOCKLEN_T\n)(typedef u_int32_t socklen_t;)"; + + mach = "mips-sgi-irix6.5"; + c_fix = format; + c_fix_arg = "%1" + "#if _NO_XOPEN4 && _NO_XOPEN5\n" + "typedef int socklen_t;\n" + "#else\n" + "%2\n" + "#endif /* _NO_XOPEN4 && _NO_XOPEN5 */"; + + test_text = "#define _SOCKLEN_T\ntypedef u_int32_t socklen_t;"; +}; + +/* + * IRIX 6.5 <stdint.h> only works with ISO C99 and errors out + * otherwise. + */ +fix = { + hackname = irix_stdint_c99_mode; + files = stdint.h; + select = "(#ifndef __c99\n)(#error This header file is to be used only for c99 mode compilations)"; + + mach = "mips-sgi-irix6.5"; + c_fix = format; + c_fix_arg = "#if 0\n" + "%2"; + test_text = + "#ifndef __c99\n#error This header file is to be used only for c99 mode compilations\n#else"; +}; + + +/* + * IRIX 6.5 <stdint.h> has some *_MIN/MAX constants whose types don't + * match the corresponding types, as required by ISO C99. + */ +fix = { + hackname = irix_stdint_c99_types; + files = stdint-irix65.h, stdint.h; + mach = "mips-sgi-irix6.5"; + sed = "s@^#define INT64_MIN.*(-0x7fffffffffffffff - 1)$@" + "#define INT64_MIN (-0x7fffffffffffffffLL - 1)@"; + sed = "s@^#define INT64_MAX.*0x7fffffffffffffff$@" + "#define INT64_MAX 0x7fffffffffffffffLL@"; + sed = "s@^#define UINT32_MAX.*0xffffffff$@" + "#define UINT32_MAX 0xffffffffU@"; + sed = "s@^#define UINT64_MAX.*0xffffffffffffffff$@" + "#define UINT64_MAX 0xffffffffffffffffULL@"; + sed = "s@^#define INTPTR_MIN.*INT32_MIN$@" + "#define INTPTR_MIN (-0x7fffffffL - 1)@"; + sed = "s@^#define INTPTR_MAX.*INT32_MAX$@" + "#define INTPTR_MAX 0x7fffffffL@"; + sed = "s@^#define UINTPTR_MAX.*UINT32_MAX$@" + "#define UINTPTR_MAX 0xffffffffUL@"; + sed = "s@^#define INTPTR_MIN.*INT64_MIN@" + "#define INTPTR_MIN (-0x7fffffffffffffffL - 1)@"; + sed = "s@^#define INTPTR_MAX.*INT64_MAX$@" + "#define INTPTR_MAX 0x7fffffffffffffffL@"; + sed = "s@^#define UINTPTR_MAX.*UINT64_MAX$@" + "#define UINTPTR_MAX 0xffffffffffffffffUL@"; + sed = "s@^#define PTRDIFF_MIN.*INT64_MIN$@" + "#define PTRDIFF_MIN (-0x7fffffffffffffffL - 1)@"; + sed = "s@^#define PTRDIFF_MAX.*INT64_MAX$@" + "#define PTRDIFF_MAX 0x7fffffffffffffffL@"; + sed = "s@^#define SIZE_MAX.*UINT64_MAX$@" + "#define SIZE_MAX 0xffffffffffffffffUL@"; + test_text = "#define INT64_MIN (-0x7fffffffffffffff - 1)\n" + "#define INT64_MAX 0x7fffffffffffffff\n" + "#define UINT32_MAX 0xffffffff\n" + "#define UINT64_MAX 0xffffffffffffffff\n" + "#define INTPTR_MIN INT32_MIN\n" + "#define INTPTR_MAX INT32_MAX\n" + "#define UINTPTR_MAX UINT32_MAX\n" + "#define INTPTR_MIN INT64_MIN\n" + "#define INTPTR_MAX INT64_MAX\n" + "#define UINTPTR_MAX UINT64_MAX\n" + "#define PTRDIFF_MIN INT64_MIN\n" + "#define PTRDIFF_MAX INT64_MAX\n" + "#define SIZE_MAX UINT64_MAX"; +}; + + +/* + * IRIX 6.5 <stdint.h> uses casts in some macros which cannot thus be used + * in preprocessor tests, although ISO C99 requires this. + */ +fix = { + hackname = irix_stdint_c99_macros; + files = stdint-irix65.h, stdint.h; + mach = "mips-sgi-irix6.5"; + sed = "s@^#define INT8_C(x).*int.*_t.*$@#define INT8_C(x) (x)@"; + sed = "s@^#define INT16_C(x).*int.*_t.*$@#define INT16_C(x) (x)@"; + sed = "s@^#define INT32_C(x).*int.*_t.*$@#define INT32_C(x) (x)@"; + sed = "s@^#define INT64_C(x).*int.*_t.*$@#define INT64_C(x) (x ## LL)@"; + sed = "s@^#define UINT8_C(x).*int.*_t.*$@#define UINT8_C(x) (x)@"; + sed = "s@^#define UINT16_C(x).*int.*_t.*$@#define UINT16_C(x) (x)@"; + sed = "s@^#define UINT32_C(x).*int.*_t.*$@#define UINT32_C(x) (x ## U)@"; + sed = "s@^#define UINT64_C(x).*int.*_t.*$@#define UINT64_C(x) (x ## ULL)@"; + sed = "s@^#define INTMAX_C(x).*int.*_t.*$@#define INTMAX_C(x) (x ## LL)@"; + sed = "s@^#define UINTMAX_C(x).*int.*_t.*$@#define UINTMAX_C(x) (x ## ULL)@"; + test_text = "#define INT8_C(x) (int_least8_t)(x)\n" + "#define INT16_C(x) (int_least16_t)(x)\n" + "#define INT32_C(x) (int_least32_t)(x)\n" + "#define INT64_C(x) (int_least64_t)(x)\n" + "#define UINT8_C(x) (uint_least8_t)(x)\n" + "#define UINT16_C(x) (uint_least16_t)(x)\n" + "#define UINT32_C(x) (uint_least32_t)(x)\n" + "#define UINT64_C(x) (uint_least64_t)(x)\n" + "#define INTMAX_C(x) (intmax_t)(x)\n" + "#define UINTMAX_C(x) (uintmax_t)(x)"; +}; + + +/* + * IRIX 5.x's stdio.h and IRIX 6.5's internal/stdio_core.h declare + * some functions that take a va_list as + * taking char *. However, GCC uses void * for va_list, so + * calling vfprintf with a va_list fails in C++. */ +fix = { + hackname = irix_stdio_va_list; + files = stdio.h; + files = internal/stdio_core.h; + + select = '/\* va_list \*/ char \*'; + c_fix = format; + c_fix_arg = "__gnuc_va_list"; + test_text = + "extern int printf( const char *, /* va_list */ char * );"; +}; + + +/* + * IRIX 6.5.19 <internal/wchar_core.h> provides the XPG4 variant of + * wcsftime by default. ISO C99 requires the XPG5 variant instead. + */ +fix = { + hackname = irix_wcsftime; + files = internal/wchar_core.h; + select = "#if _NO_XOPEN5\n(extern size_t[ \t]+wcsftime.*const char \*.*)"; + + mach = "mips-sgi-irix6.5"; + c_fix = format; + c_fix_arg = "#if _NO_XOPEN5 && !defined(__c99)\n%1"; + + test_text = "#if _NO_XOPEN5\n" + "extern size_t wcsftime(wchar_t *, " + "__SGI_LIBC_NAMESPACE_QUALIFIER size_t, const char *, " + "const struct tm *);"; +}; + + +/* + * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3 + * use / * * / to concatenate tokens. + */ +fix = { + hackname = kandr_concat; + files = "sparc/asm_linkage.h"; + files = "sun*/asm_linkage.h"; + files = "arm/as_support.h"; + files = "arm/mc_type.h"; + files = "arm/xcb.h"; + files = "dev/chardefmac.h"; + files = "dev/ps_irq.h"; + files = "dev/screen.h"; + files = "dev/scsi.h"; + files = "sys/tty.h"; + files = "Xm.acorn/XmP.h"; + files = bsd43/bsd43_.h; + select = '/\*\*/'; + c_fix = format; + c_fix_arg = '##'; + test_text = "#define __CONCAT__(a,b) a/**/b"; +}; + + +/* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines + * an _SC_GR0_OFFSET macro using an idiom that isn't a compile time + * constant on recent versions of g++. + */ +fix = { + hackname = linux_ia64_ucontext; + files = "sys/ucontext.h"; + mach = "ia64-*-linux*"; + select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)' + '->sc_gr\[0\]\) - \(char \*\) 0\)'; + c_fix = format; + c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)"; + test_text = "# define _SC_GR0_OFFSET\t\\\\\n" + "\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n"; +}; + + +/* + * Remove header file warning from sys/time.h. Autoconf's + * AC_HEADER_TIME recommends to include both sys/time.h and time.h + * which causes warning on LynxOS. Remove the warning. + */ +fix = { + hackname = lynxos_no_warning_in_sys_time_h; + files = sys/time.h; + select = "#warning[ \t]+Using <time.h> instead of <sys/time.h>"; + c_fix = format; + c_fix_arg = ""; + test_text = "#warning Using <time.h> instead of <sys/time.h>"; +}; + + +/* + * Add missing declaration for putenv. + */ +fix = { + hackname = lynxos_missing_putenv; + mach = '*-*-lynxos*'; + files = stdlib.h; + bypass = 'putenv[ \t]*\\('; + select = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);"; + c_fix = format; + c_fix_arg = "%0\n" + "extern int putenv _AP((char *));"; + c_fix_arg = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);"; + test_text = "extern char *getenv _AP((const char *));"; +}; + + +/* + * Fix BSD machine/ansi.h to use __builtin_va_list to define _BSD_VA_LIST_. + * + * On NetBSD, machine is a symbolic link to an architecture specific + * directory name, so we can't match a specific file name here. + */ +fix = { + hackname = machine_ansi_h_va_list; + select = "define[ \t]+_BSD_VA_LIST_[ \t]"; + bypass = '__builtin_va_list'; + + c_fix = format; + c_fix_arg = "%1__builtin_va_list"; + c_fix_arg = "(define[ \t]+_BSD_VA_LIST_[ \t]+).*"; + + test_text = " # define _BSD_VA_LIST_\tchar**"; +}; + + +/* + * Fix non-ansi machine name defines + */ +fix = { + hackname = machine_name; + c_test = machine_name; + c_fix = machine_name; + + test_text = "/* MACH_DIFF: */\n" + "#if defined( i386 ) || defined( sparc ) || defined( vax )" + "\n/* no uniform test, so be careful :-) */"; +}; + + +/* + * Some math.h files define struct exception (it's in the System V + * Interface Definition), which conflicts with the class exception defined + * in the C++ file std/stdexcept.h. We redefine it to __math_exception. + * This is not a great fix, but I haven't been able to think of anything + * better. + */ +fix = { + hackname = math_exception; + files = math.h; + select = "struct exception"; + /* + * This should be bypassed on __cplusplus, but some supposedly C++ C++ + * aware headers, such as Solaris 8 and 9, don't wrap their struct + * exception either. So currently we bypass only for glibc, based on a + * comment in the fixed glibc header. Ick. + */ + bypass = 'We have a problem when using C\+\+|for C\+\+, ' + '_[a-z0-9A-Z_]+_exception; for C, exception'; + c_fix = wrap; + + c_fix_arg = "#ifdef __cplusplus\n" + "#define exception __math_exception\n" + "#endif\n"; + + c_fix_arg = "#ifdef __cplusplus\n" + "#undef exception\n" + "#endif\n"; + + test_text = "typedef struct exception t_math_exception;"; +}; + + +/* + * This looks pretty broken to me. ``dbl_max_def'' will contain + * "define DBL_MAX " at the start, when what we really want is just + * the value portion. Can't figure out how to write a test case + * for this either :-( + */ +fix = { + hackname = math_huge_val_from_dbl_max; + files = math.h; + + /* + * IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined + * in math.h, this fix applies. + */ + select = "define[ \t]+HUGE_VAL[ \t]+DBL_MAX"; + bypass = "define[ \t]+DBL_MAX"; + + shell = + /* + * See if we have a definition for DBL_MAX in float.h. + * If we do, we will replace the one in math.h with that one. + */ + + "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h " + "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n" + + "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n" + "\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/" + "s@DBL_MAX@'\"$dbl_max_def@\"\n" + "\telse cat\n" + "\tfi"; + + test_text = + "`echo '#define DBL_MAX\t3.1415e+9 /* really big */' >> float.h`\n" + "#define HUGE_VAL DBL_MAX"; +}; + + +/* + * nested comment + */ +fix = { + hackname = nested_auth_des; + files = rpc/rpc.h; + select = '(/\*.*rpc/auth_des\.h>.*)/\*'; + c_fix = format; + c_fix_arg = "%1*/ /*"; + test_text = "/*#include <rpc/auth_des.h> /* skip this */"; +}; + + +/* + * Some versions of NetBSD don't expect the C99 inline semantics. + */ +fix = { + hackname = netbsd_c99_inline_1; + mach = "*-*-netbsd*"; + files = signal.h; + select = "extern __inline int"; + + c_fix = format; + c_fix_arg = "extern\n" + "#ifdef __GNUC_STDC_INLINE__\n" + "__attribute__((__gnu_inline__))\n" + "#endif\n" + "__inline int"; + + test_text = "extern __inline int\nsigaddset(sigset_t *set, int signo)\n{}"; +}; + + +fix = { + hackname = netbsd_c99_inline_2; + mach = "*-*-netbsd*"; + files = signal.h; + select = "#define _SIGINLINE extern __inline"; + + c_fix = format; + c_fix_arg = <<- _EOArg_ + #ifdef __GNUC_STDC_INLINE__ + #define _SIGINLINE extern __attribute__((__gnu_inline__)) __inline + #else + %0 + #endif + _EOArg_; + + test_text = "#define _SIGINLINE extern __inline"; +}; + + +/* + * NetBSD has a semicolon after the ending '}' for some extern "C". + */ +fix = { + hackname = netbsd_extra_semicolon; + mach = "*-*-netbsd*"; + files = sys/cdefs.h; + select = "#define[ \t]*__END_DECLS[ \t]*};"; + + c_fix = format; + c_fix_arg = "#define __END_DECLS }"; + + test_text = "#define __END_DECLS };"; +}; + + +/* newlib's stdint.h has several failures to conform to C99. The fix + for these removed a comment that can be matched to identify unfixed + versions. */ +fix = { + hackname = newlib_stdint_1; + files = stdint-newlib.h, stdint.h; + select = "@todo - Add support for wint_t types"; + sed = "s@#define INT32_MIN.*@#define INT32_MIN (-INT32_MAX - 1)@"; + sed = "s@#define INT32_MAX.*@#define INT32_MAX __INT32_MAX__@"; + sed = "s@#define UINT32_MAX.*@#define UINT32_MAX __UINT32_MAX__@"; + sed = "s@#define INT_LEAST32_MIN.*@#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)@"; + sed = "s@#define INT_LEAST32_MAX.*@#define INT_LEAST32_MAX __INT_LEAST32_MAX__@"; + sed = "s@#define UINT_LEAST32_MAX.*@#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__@"; + sed = 's@#define INT_FAST\([0-9]*\)_MIN.*@#define INT_FAST\1_MIN (-INT_FAST\1_MAX - 1)@'; + sed = 's@#define INT_FAST\([0-9]*\)_MAX.*@#define INT_FAST\1_MAX __INT_FAST\1_MAX__@'; + sed = 's@#define UINT_FAST\([0-9]*\)_MAX.*@#define UINT_FAST\1_MAX __UINT_FAST\1_MAX__@'; + sed = "s@#define SIZE_MAX.*@#define SIZE_MAX __SIZE_MAX__@"; + sed = "s@#define PTRDIFF_MIN.*@#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)@"; + sed = "s@#define PTRDIFF_MAX.*@#define PTRDIFF_MAX __PTRDIFF_MAX__@"; + sed = "s@#define UINT8_C.*@#define UINT8_C(c) __UINT8_C(c)@"; + sed = "s@#define UINT16_C.*@#define UINT16_C(c) __UINT16_C(c)@"; + test_text = "/* @todo - Add support for wint_t types. */\n" + "#define INT32_MIN (-2147483647-1)\n" + "#define INT32_MAX 2147483647\n" + "#define UINT32_MAX 4294967295U\n" + "#define INT_LEAST32_MIN (-2147483647-1)\n" + "#define INT_LEAST32_MAX 2147483647\n" + "#define UINT_LEAST32_MAX 4294967295U\n" + "#define INT_FAST8_MIN INT8_MIN\n" + "#define INT_FAST8_MAX INT8_MAX\n" + "#define UINT_FAST8_MAX UINT8_MAX\n" + "#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)\n" + "#define PTRDIFF_MIN (-__STDINT_EXP(LONG_MAX) - 1L)\n" + "#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)\n" + "#define UINT8_C(x) x##U\n" + "#define UINT16_C(x) x##U"; +}; + + +fix = { + hackname = newlib_stdint_2; + files = stdint-newlib.h, stdint.h; + select = "@todo - Add support for wint_t types"; + c_fix = format; + c_fix_arg = "#define INTMAX_MAX __INTMAX_MAX__\n" + "#define INTMAX_MIN (-INTMAX_MAX - 1)\n" + "#define UINTMAX_MAX __UINTMAX_MAX__\n" + "#define WCHAR_MAX __WCHAR_MAX__\n" + "#define WCHAR_MIN __WCHAR_MIN__\n" + "#define WINT_MAX __WINT_MAX__\n" + "#define WINT_MIN __WINT_MIN__\n\n" + "%0"; + c_fix_arg = '/\*\* Macros for minimum-width integer constant expressions \*/'; + test_text = "/* @todo - Add support for wint_t types. */\n" + "/** Macros for minimum-width integer constant expressions */"; +}; + + +/* + * NeXT 3.2 adds const prefix to some math functions. + * These conflict with the built-in functions. + */ +fix = { + hackname = next_math_prefix; + files = ansi/math.h; + select = "^extern[ \t]+double[ \t]+__const__[ \t]"; + + c_fix = format; + c_fix_arg = "extern double %1("; + c_fix_arg = "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\("; + + test_text = "extern\tdouble\t__const__\tmumble();"; +}; + + +/* + * NeXT 3.2 uses the word "template" as a parameter for some + * functions. GCC reports an invalid use of a reserved key word + * with the built-in functions. + */ +fix = { + hackname = next_template; + files = bsd/libc.h; + select = "[ \t]template\\)"; + + c_fix = format; + c_fix_arg = "(%1)"; + c_fix_arg = "\\(([^)]*)[ \t]template\\)"; + test_text = "extern mumble( char * template); /* fix */"; +}; + + +/* + * NeXT 3.2 includes the keyword volatile in the abort() and exit() + * function prototypes. That conflicts with the built-in functions. + */ +fix = { + hackname = next_volitile; + files = ansi/stdlib.h; + select = "^extern[ \t]+volatile[ \t]+void[ \t]"; + + c_fix = format; + c_fix_arg = "extern void %1("; + c_fix_arg = "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\("; + + test_text = "extern\tvolatile\tvoid\tabort();"; +}; + + +/* + * NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1. + * Note that version 3 of the NeXT system has wait.h in a different directory, + * so that this code won't do anything. But wait.h in version 3 has a + * conditional, so it doesn't need this fix. So everything is okay. + */ +fix = { + hackname = next_wait_union; + files = sys/wait.h; + + select = 'wait\(union wait'; + c_fix = format; + c_fix_arg = "wait(void"; + test_text = "extern pid_d wait(union wait*);"; +}; + + +/* + * a missing semi-colon at the end of the nodeent structure definition. + */ +fix = { + hackname = nodeent_syntax; + files = netdnet/dnetdb.h; + select = "char[ \t]*\\*na_addr[ \t]*$"; + c_fix = format; + c_fix_arg = "%0;"; + test_text = "char *na_addr\t"; +}; + +/* + * Fix OpenBSD's NULL definition. + */ +fix = { + hackname = openbsd_null_definition; + mach = "*-*-openbsd*"; + files = locale.h, stddef.h, stdio.h, string.h, + time.h, unistd.h, wchar.h, sys/param.h; + select = "__GNUG__"; + c_fix = format; + c_fix_arg = "#ifndef NULL\n" + "#ifdef __cplusplus\n" + "#ifdef __GNUG__\n" + "#define NULL\t__null\n" + "#else\t /* ! __GNUG__ */\n" + "#define NULL\t0L\n" + "#endif\t /* __GNUG__ */\n" + "#else\t /* ! __cplusplus */\n" + "#define NULL\t((void *)0)\n" + "#endif\t /* __cplusplus */\n" + "#endif\t /* !NULL */"; + + c_fix_arg = "^#ifndef[ \t]*NULL\n" + "^#ifdef[ \t]*__GNUG__\n" + "^#define[ \t]*NULL[ \t]*__null\n" + "^#else\n" + "^#define[ \t]*NULL[ \t]*0L\n" + "^#endif\n" + "^#endif"; + test_text = + "#ifndef NULL\n" + "#ifdef __GNUG__\n" + "#define NULL __null\n" + "#else\n" + "#define NULL 0L\n" + "#endif\n" + "#endif\n"; +}; + +/* + * obstack.h used casts as lvalues. + * + * We need to change postincrements of casted pointers (which are + * then dereferenced and assigned into) of the form + * + * *((TYPE*)PTRVAR)++ = (VALUE) + * + * into expressions like + * + * ((*((TYPE*)PTRVAR) = (VALUE)), (PTRVAR += sizeof (TYPE))) + * + * which is correct for the cases used in obstack.h since PTRVAR is + * of type char * and the value of the expression is not used. + */ +fix = { + hackname = obstack_lvalue_cast; + files = obstack.h; + select = '\*\(\(([^()]*)\*\)(.*)\)\+\+ = \(([^()]*)\)'; + c_fix = format; + c_fix_arg = "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))"; + test_text = "*((void **) (h)->next_free)++ = (aptr)"; +}; + +/* + * Fix OpenBSD's va_start define. + */ +fix = { + hackname = openbsd_va_start; + mach = "*-*-openbsd*"; + files = stdarg.h; + select = '__builtin_stdarg_start'; + c_fix = format; + c_fix_arg = __builtin_va_start; + + test_text = "#define va_start(v,l) __builtin_stdarg_start((v),l)"; +}; + +/* + * sys/lc_core.h on some versions of OSF1/4.x pollutes the namespace by + * defining regex.h related types. This causes libg++ build and usage + * failures. Fixing this correctly requires checking and modifying 3 files. + */ +fix = { + hackname = osf_namespace_a; + files = reg_types.h; + files = sys/lc_core.h; + test = " -r reg_types.h"; + test = " -r sys/lc_core.h"; + test = " -n \"`grep '} regex_t;' reg_types.h`\""; + test = " -z \"`grep __regex_t regex.h`\""; + + c_fix = format; + c_fix_arg = "__%0"; + c_fix_arg = "reg(ex|off|match)_t"; + + test_text = "`touch sys/lc_core.h`" + "typedef struct {\n int stuff, mo_suff;\n} regex_t;\n" + "extern regex_t re;\n" + "extern regoff_t ro;\n" + "extern regmatch_t rm;\n"; +}; + +fix = { + hackname = osf_namespace_c; + files = regex.h; + test = " -r reg_types.h"; + test = " -r sys/lc_core.h"; + test = " -n \"`grep '} regex_t;' reg_types.h`\""; + test = " -z \"`grep __regex_t regex.h`\""; + + select = "#include <reg_types\.h>.*"; + c_fix = format; + c_fix_arg = "%0\n" + "typedef __regex_t\tregex_t;\n" + "typedef __regoff_t\tregoff_t;\n" + "typedef __regmatch_t\tregmatch_t;"; + + test_text = "#include <reg_types.h>"; +}; + + +/* + * On broken glibc-2.3.3 systems an array of incomplete structures is + * passed to __sigsetjmp. Fix that to take a pointer instead. + */ +fix = { + hackname = pthread_incomplete_struct_argument; + files = pthread.h; + select = "struct __jmp_buf_tag"; + c_fix = format; + c_fix_arg = "%1 *%2%3"; + c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) (__env)\\[1\\](.*)$"; + test_text = "extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask);"; +}; + +/* + * Fix return type of fread and fwrite on sysV68 + */ +fix = { + hackname = read_ret_type; + files = stdio.h; + select = "extern int\t.*, fread\\(\\), fwrite\\(\\)"; + c_fix = format; + c_fix_arg = "extern unsigned int fread(), fwrite();\n%1%2"; + c_fix_arg = "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)"; + + test_text = "extern int\tfclose(), fflush(), fread(), fwrite(), foo();"; +}; + + +/* + * Fix casts as lvalues in glibc's <rpc/xdr.h>. + */ +fix = { + hackname = rpc_xdr_lvalue_cast_a; + files = rpc/xdr.h; + select = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*"; + c_fix = format; + c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))"; + test_text = "#define IXDR_GET_LONG(buf) \\\\\n" + "\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))"; +}; + + +fix = { + hackname = rpc_xdr_lvalue_cast_b; + files = rpc/xdr.h; + select = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*"; + c_fix = format; + c_fix_arg = "#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))"; + test_text = "#define IXDR_PUT_LONG(buf, v) \\\\\n" + "\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))"; +}; + + +/* + * function class(double x) conflicts with C++ keyword on rs/6000 + */ +fix = { + hackname = rs6000_double; + files = math.h; + select = '[^a-zA-Z_]class\('; + + c_fix = format; + c_fix_arg = "#ifndef __cplusplus\n%0\n#endif"; + c_fix_arg = '^.*[^a-zA-Z_]class\(.*'; + + test_text = "extern int class();"; +}; + + +/* + * Wrong fchmod prototype on RS/6000. + */ +fix = { + hackname = rs6000_fchmod; + files = sys/stat.h; + select = 'fchmod\(char \*'; + c_fix = format; + c_fix_arg = "fchmod(int"; + test_text = "extern int fchmod(char *, mode_t);"; +}; + + +/* + * parameters conflict with C++ new on rs/6000 + */ +fix = { + hackname = rs6000_param; + files = "stdio.h"; + files = "unistd.h"; + + select = 'rename\(const char \*old, const char \*new\)'; + c_fix = format; + c_fix_arg = 'rename(const char *_old, const char *_new)'; + + test_text = 'extern int rename(const char *old, const char *new);'; +}; + + +/* + * Solaris 10+ <sys/feature_tests.h> defines _RESTRICT_KYWD as restrict + * for C99. This is wrong for C++, which needs many C99 features, but + * only supports __restrict. + */ +fix = { + hackname = solaris___restrict; + files = sys/feature_tests.h; + select = "#define[ \t]*_RESTRICT_KYWD[ \t]*restrict"; + mach = "*-*-solaris2*"; + c_fix = format; + c_fix_arg = "#ifdef __cplusplus\n#define\t_RESTRICT_KYWD\t__restrict\n" + "#else\n%0\n#endif"; + test_text = "#define _RESTRICT_KYWD restrict"; +}; + + +/* + * Solaris 10+ complex.h defines _Complex_I and _Imaginary_I in terms of + * themselves, which are Sun Studio compiler intrinsics. Remove _Imaginary_I + * and imaginary definitions which are not supported by GCC. + */ +fix = { + hackname = solaris_complex; + mach = "*-*-solaris2.*"; + files = complex.h; + select = "#define[ \t]_Complex_I[ \t]_Complex_I"; + sed = "s/#define[ \t]_Complex_I[ \t]_Complex_I/" + "#define\t_Complex_I\t(__extension__ 1.0iF)/"; + sed = "/#define[ \t]_Imaginary_I[ \t]_Imaginary_I/d"; + sed = "/#define[ \t]imaginary[ \t]_Imaginary/d"; + sed = "s/#define[ \t]I[ \t]\\{1,\\}_Imaginary_I/#define\tI\t\t_Complex_I/"; + test_text = "#define _Complex_I _Complex_I\n" + "#define complex _Complex\n" + "#define _Imaginary_I _Imaginary_I\n" + "#define imaginary _Imaginary\n" + "#undef I\n" + "#define I _Imaginary_I"; +}; + + +/* + * Solaris 10+ <complex.h> is wrapped in #ifndef __cplusplus. Wrap in + * extern "C" instead so libstdc++ can use it. + */ +fix = { + hackname = solaris_complex_cxx; + mach = "*-*-solaris2.*"; + files = complex.h; + sed = "/#if[ \t]*!defined(__cplusplus)/c" + "#ifdef\t__cplusplus\\\nextern \"C\" {\\\n#endif"; + sed = "/#endif[ \t]*\\/\\* !defined(__cplusplus) \\*\\//c" + "#ifdef\t__cplusplus\\\n}\\\n#endif"; + test_text = "#if !defined(__cplusplus)\n" + "#endif /* !defined(__cplusplus) */"; +}; + + +/* + * Solaris 8 PTHREAD_COND_INITIALIZER lacks the __pthread_cond_magic field. + * COND_MAGIC is only defined in <synch.h> and pollutes the namespace, so + * use the value literally instead. + */ +fix = { + hackname = solaris_cond_init; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; + mach = '*-*-solaris2.8'; + c_fix = format; + c_fix_arg = "%1, 0x4356%2"; + c_fix_arg = "^(#define[ \t]+PTHREAD_COND_INITIALIZER[ \t]+" + "\\{.*0)(\\},[ \t]*0\\}.*)$"; + test_text = + '#pragma ident "@(#)pthread.h 1.29 01/07/07 SMI"'"\n" + '#define PTHREAD_COND_INITIALIZER {{{0}, 0}, 0} /* = DEFAULTCV */'; +}; + + +/* + * Sun Solaris 10 defines several C99 math macros in terms of + * builtins specific to the Studio compiler, in particular not + * compatible with the GNU compiler. + */ +fix = { + hackname = solaris_math_1; + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + bypass = "__GNUC__"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())"; + c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)"; + test_text = + '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n" + "#undef HUGE_VAL\n" + "#define HUGE_VAL __builtin_huge_val\n" + "#undef HUGE_VALF\n" + "#define HUGE_VALF __builtin_huge_valf\n" + "#undef HUGE_VALL\n" + "#define HUGE_VALL __builtin_huge_vall"; +}; + +fix = { + hackname = solaris_math_2; + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + bypass = "__GNUC__"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\tINFINITY\t(__builtin_inff())"; + c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity"; + test_text = + '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n" + "#undef INFINITY\n" + "#define INFINITY __builtin_infinity"; +}; + +fix = { + hackname = solaris_math_3; + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + bypass = "__GNUC__"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))"; + c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan"; + test_text = + '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n" + "#undef NAN\n" + "#define NAN __builtin_nan"; +}; + +fix = { + hackname = solaris_math_4; + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + bypass = "__GNUC__"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\tfpclassify(x) \\\n" + " __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, (x))"; + c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)"; + test_text = + '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n" + "#undef fpclassify\n" + "#define fpclassify(x) __builtin_fpclassify(x)"; +}; + +fix = { + hackname = solaris_math_8; + select = '@\(#\)math_c99\.h' "[ \t]+1\\.[0-9]+[ \t]+[0-9/]+ SMI"; + bypass = "__GNUC__"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n" + "\t\t\t ? __builtin_signbitf(x) \\\n" + "\t\t\t : sizeof(x) == sizeof(long double) \\\n" + "\t\t\t ? __builtin_signbitl(x) \\\n" + "\t\t\t : __builtin_signbit(x))"; + c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)"; + test_text = <<- _EOText_ + #ident "@(#)math_c99.h 1.9 04/11/01 SMI" + #undef signbit + #define signbit(x) __builtin_signbit(x) + _EOText_; +}; + +fix = { + hackname = solaris_math_9; + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + bypass = "__GNUC__"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)"; + c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)"; + test_text = + '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n" + "#undef isgreater\n" + "#define isgreater(x, y) ((x) __builtin_isgreater(y))\n" + "#undef isgreaterequal\n" + "#define isgreaterequal(x, y) ((x) __builtin_isgreaterequal(y))\n" + "#undef isless\n" + "#define isless(x, y) ((x) __builtin_isless(y))\n" + "#undef islessequal\n" + "#define islessequal(x, y) ((x) __builtin_islessequal(y))\n" + "#undef islessgreater\n" + "#define islessgreater(x, y) ((x) __builtin_islessgreater(y))\n" + "#undef isunordered\n" + "#define isunordered(x, y) ((x) __builtin_isunordered(y))"; +}; + +/* + * On Solaris 11, if you do isinf(NaN) you'll get a floating point + * exception. Provide an alternative using GCC's builtin. + */ + +fix = { + hackname = solaris_math_10; + select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = iso/math_c99.h; + c_fix = format; + c_fix_arg = "#define\tisinf(x) __builtin_isinf(x)"; + c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__extension__\\([ \t]*\\\\\n" + "[ \t]*\\{[ \t]*__typeof\\(x\\)[ \t]*__x_i[ \t]*=[ \t]*\\(x\\);[ \t]*\\\\\n" + "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*INFINITY[ \t]*\\|\\|[ \t]*\\\\\n" + "[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)"; + test_text = + '#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI"'"\n" + "#undef isinf\n" + "#define isinf(x) __extension__( \\\\\n" + " { __typeof(x) __x_i = (x); \\\\\n" + " __x_i == (__typeof(__x_i)) INFINITY || \\\\\n" + " __x_i == (__typeof(__x_i)) (-INFINITY); })"; +}; + +/* + * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing + * "0" for the last field of the pthread_mutex_t structure, which is + * of type upad64_t, which itself is typedef'd to int64_t, but with + * __STDC__ defined (e.g. by -ansi) it is a union. So change the + * initializer to "{0}" instead + */ +fix = { + hackname = solaris_mutex_init_2; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; + /* + * On Solaris 10, this fix is unnecessary because upad64_t is + * always defined correctly regardless of the definition of the + * __STDC__ macro. The first "mach" pattern matches up to + * solaris9. The second "mach" pattern will not match any two (or + * more) digit solaris version, but it will match e.g. 2.5.1. + */ + mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; + c_fix = format; + c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "%0\n" + "#else\n" + "%1, {0}}%4\n" + "#endif"; + c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+" + "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)" + ",[ \t]*0\\}" "(|[ \t].*)$"; + test_text = + '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" + "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n" + "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n" + "#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \\\\\n" + " {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n" + "#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \\\\\n" + " {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}"; +}; + + +/* + * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some + * fields of the pthread_rwlock_t structure, which are of type + * upad64_t, which itself is typedef'd to int64_t, but with __STDC__ + * defined (e.g. by -ansi) it is a union. So change the initializer + * to "{0}" instead. + */ +fix = { + hackname = solaris_rwlock_init_1; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; + mach = '*-*-solaris*'; + c_fix = format; + c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "%0\n" + "#else\n" + "%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n" + "#endif"; + c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)" + "\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$"; + + test_text = + '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" + "#define PTHREAD_RWLOCK_INITIALIZER\t{0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}}"; +}; + + +/* + * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a + * structure. As such, it need two levels of brackets, but only + * contains one. Wrap the macro definition in an extra layer. + */ +fix = { + hackname = solaris_once_init_1; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; + mach = '*-*-solaris*'; + c_fix = format; + c_fix_arg = "%1{%2}%3"; + c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$"; + test_text = + '#pragma ident "@(#)pthread.h 1.37 04/09/28 SMI"'"\n" + "#define PTHREAD_ONCE_INIT\t{0, 0, 0, PTHREAD_ONCE_NOTDONE}"; +}; + + +/* + * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some + * fields of the pthread_once_t structure, which are of type + * upad64_t, which itself is typedef'd to int64_t, but with __STDC__ + * defined (e.g. by -ansi) it is a union. So change the initializer + * to "{0}" instead. This test relies on solaris_once_init_1. + */ +fix = { + hackname = solaris_once_init_2; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; + /* + * On Solaris 10, this fix is unnecessary because upad64_t is + * always defined correctly regardless of the definition of the + * __STDC__ macro. The first "mach" pattern matches up to + * solaris9. The second "mach" pattern will not match any two (or + * more) digit solaris version, but it will match e.g. 2.5.1. + */ + mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; + c_fix = format; + c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "%0\n" + "#else\n" + "%1{0}, {0}, {0}, {%3}%4\n" + "#endif"; + c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)" + "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$"; + test_text = + '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" + "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n"; +}; + + +/* + * Sun Solaris 2 has a version of sys/int_const.h that defines + * UINT8_C and UINT16_C to unsigned constants. + */ +fix = { + hackname = solaris_int_const; + files = sys/int_const.h; + mach = '*-*-solaris2*'; + c_fix = format; + c_fix_arg = "#define\tUINT8_C(c)\t(c)\n" + "%1\n" + "#define\tUINT16_C(c)\t(c)"; + select = "^#define[ \t]+UINT8_C\\(c\\)[ \t]+__CONCAT__.*\n" + "(/\*.*\*/)\n" + "#define[ \t]+UINT16_C\\(c\\)[ \t]+__CONCAT__.*"; + test_text = + "#define UINT8_C(c) __CONCAT__(c,u)\n" + "/* CSTYLED */\n" + "#define UINT16_C(c) __CONCAT__(c,u)"; +}; + + +/* + * Sun Solaris 2 has a version of sys/int_limits.h that defines + * UINT8_MAX and UINT16_MAX to unsigned constants. + */ +fix = { + hackname = solaris_int_limits_1; + files = sys/int_limits.h; + mach = '*-*-solaris2*'; + c_fix = format; + c_fix_arg = "#define\tUINT8_MAX\t(255)\n" + "#define\tUINT16_MAX\t(65535)"; + select = "^#define[ \t]+UINT8_MAX[ \t]+\\(255U\\)\n" + "#define[ \t]+UINT16_MAX[ \t]+\\(65535U\\)"; + test_text = + "#define UINT8_MAX (255U)\n" + "#define UINT16_MAX (65535U)"; +}; + + +/* + * Sun Solaris 2 has a version of sys/int_limits.h that defines + * INT_FAST16 limits to wrong values for sys/int_types.h. + */ +fix = { + hackname = solaris_int_limits_2; + files = sys/int_limits.h; + mach = '*-*-solaris2*'; + c_fix = format; + c_fix_arg = "#define\t%1_FAST16_%2 %132_%2"; + select = "^#define[ \t]+(INT|UINT)_FAST16_(MAX|MIN)[ \t](INT|UINT)16.*"; + test_text = + "#define INT_FAST16_MAX INT16_MAX\n" + "#define UINT_FAST16_MAX UINT16_MAX\n" + "#define INT_FAST16_MIN INT16_MIN"; +}; + + +/* + * Sun Solaris 2 has a version of sys/int_limits.h that defines + * SIZE_MAX as unsigned long. + */ +fix = { + hackname = solaris_int_limits_3; + files = sys/int_limits.h; + mach = '*-*-solaris2*'; + c_fix = format; + c_fix_arg = "#define\tSIZE_MAX\t4294967295U"; + select = "^#define[ \t]+SIZE_MAX[ \t]+4294967295UL"; + test_text = + "#define SIZE_MAX 4294967295UL"; +}; + + +/* + * Sun Solaris up to 9 has a version of sys/int_types.h that forbids use + * of Standard C99 64-bit types in 32-bit mode. + */ +fix = { + hackname = solaris_int_types; + select = "__STDC__ - 0 == 0"; + bypass = "_LONGLONG_TYPE"; + files = sys/int_types.h; + c_fix = format; + c_fix_arg = + "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))"; + test_text = + "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "typedef long long int64_t;\n" + "#endif\n\n" + "#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n" + "typedef int64_t intmax_t;\n" + "#endif"; +}; + + +/* + * Sun Solaris 8 has what appears to be some gross workaround for + * some old version of their c++ compiler. G++ doesn't want it + * either, but doesn't want to be tied to SunPRO version numbers. + */ +fix = { + hackname = solaris_stdio_tag; + files = stdio_tag.h; + + select = '__cplusplus < 54321L'; + /* In Solaris 10, the code in stdio_tag.h is conditionalized on + "!defined(__GNUC__)" so we no longer need to fix it. */ + bypass = '__GNUC__'; + sed = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/'; + + test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)"; +}; + + +/* + * On Solaris 8 and 9, __va_list needs to become a typedef for + * __builtin_va_list to make -Wmissing-format-attribute work. + */ +fix = { + hackname = solaris_sys_va_list; + files = sys/va_list.h; + mach = '*-*-solaris2.[89]'; + select = "#if.*__STDC__.*\n" + "typedef void \\*__va_list;\n" + "#else\n" + "typedef char \\*__va_list;\n" + "#endif"; + + c_fix = format; + c_fix_arg = "#ifdef __GNUC__\n" + "typedef __builtin_va_list __va_list;\n" + "#else\n" + "%0\n" + "#endif"; + test_text = "#if defined(__STDC__) && !defined(__ia64)\n" + "typedef void *__va_list;\n" + "#else\n" + "typedef char *__va_list;\n" + "#endif"; +}; + + +/* + * a missing semi-colon at the end of the statsswtch structure definition. + */ +fix = { + hackname = statsswtch; + files = rpcsvc/rstat.h; + select = "boottime$"; + c_fix = format; + c_fix_arg = "boottime;"; + test_text = "struct statswtch {\n int boottime\n};"; +}; + + +/* + * Arrange for stdio.h to use stdarg.h to define __gnuc_va_list. + * On 4BSD-derived systems, stdio.h defers to machine/ansi.h; that's + * OK too. + */ +fix = { + hackname = stdio_stdarg_h; + files = stdio.h; + bypass = "include.*(stdarg\.h|machine/ansi\.h)"; + /* + * On Solaris 10, this fix is unncessary; <stdio.h> includes + * <iso/stdio_iso.h>, which includes <sys/va_list.h>. + */ + mach = '*-*-solaris2.1[0-9]*'; + not_machine = true; + + c_fix = wrap; + + c_fix_arg = "#define __need___va_list\n#include <stdarg.h>\n"; + + test_text = ""; +}; + + +/* + * Don't use or define the name va_list in stdio.h. This is for + * ANSI. Note _BSD_VA_LIST_ is dealt with elsewhere. The presence + * of __gnuc_va_list, __DJ_va_list, or _G_va_list is taken to + * indicate that the header knows what it's doing -- under SUSv2, + * stdio.h is required to define va_list, and we shouldn't break + * that. On IRIX 6.5, internal/wchar_core.h used to get its + * definition of va_list from stdio.h. Since this doesn't happen any + * longer, use __gnuc_va_list there, too. + */ +fix = { + hackname = stdio_va_list; + files = stdio.h; + files = internal/stdio_core.h; + files = internal/wchar_core.h; + bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list'; + /* + * On Solaris 10, the definition in + * <stdio.h> is guarded appropriately by the _XPG4 feature macro; + * there is therefore no need for this fix there. + */ + mach = '*-*-solaris2.1[0-9]*'; + not_machine = true; + + /* + * Use __gnuc_va_list in arg types in place of va_list. + * On 386BSD use __gnuc_va_list instead of _VA_LIST_. On Tru64 UNIX V5.1A + * use __gnuc_va_list instead of __VA_LIST__. We're hoping the + * trailing parentheses and semicolon save all other systems from this. + * Define __not_va_list__ (something harmless and unused) + * instead of va_list. + * Don't claim to have defined va_list. + */ + sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n" + "s@(va_list)&@(__gnuc_va_list)\\&@\n" + "s@ _VA_LIST_));@ __gnuc_va_list));@\n" + "s@ __VA_LIST__));@ __gnuc_va_list));@\n" + "s@ va_list@ __not_va_list__@\n" + "s@\\*va_list@*__not_va_list__@\n" + "s@ __va_list)@ __gnuc_va_list)@\n" + "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;" + "@typedef \\1 __not_va_list__;@\n" + "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n" + "s@GNUC_VA_LIST@GNUC_Va_LIST@\n" + "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n" + "s@_NEED___VA_LIST@_NEED___Va_LIST@\n" + "s@VA_LIST@DUMMY_VA_LIST@\n" + "s@_Va_LIST@_VA_LIST@"; + test_text = "extern void mumble( va_list);"; +}; + + +/* + * Fix headers that use va_list from stdio.h to use the updated + * va_list from the stdio_va_list change. Note _BSD_VA_LIST_ is + * dealt with elsewhere. The presence of __gnuc_va_list, + * __DJ_va_list, or _G_va_list is taken to indicate that the header + * knows what it's doing. + */ +fix = { + hackname = stdio_va_list_clients; + files = com_err.h; + files = cps.h; + files = curses.h; + files = krb5.h; + files = lc_core.h; + files = pfmt.h; + files = wchar.h; + files = curses_colr/curses.h; + bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list'; + /* Don't fix, if we use va_list from stdarg.h, or if the use is + otherwise protected. */ + bypass = 'include <stdarg\.h>|#ifdef va_start'; + + /* + * Use __gnuc_va_list in arg types in place of va_list. + * On 386BSD use __gnuc_va_list instead of _VA_LIST_. On Tru64 UNIX V5.1A + * use __gnuc_va_list instead of __VA_LIST__. We're hoping the + * trailing parentheses and semicolon save all other systems from this. + * Define __not_va_list__ (something harmless and unused) + * instead of va_list. + * Don't claim to have defined va_list. + */ + sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n" + "s@(va_list)&@(__gnuc_va_list)\\&@\n" + "s@ _VA_LIST_));@ __gnuc_va_list));@\n" + "s@ __VA_LIST__));@ __gnuc_va_list));@\n" + "s@ va_list@ __not_va_list__@\n" + "s@\\*va_list@*__not_va_list__@\n" + "s@ __va_list)@ __gnuc_va_list)@\n" + "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;" + "@typedef \\1 __not_va_list__;@\n" + "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n" + "s@GNUC_VA_LIST@GNUC_Va_LIST@\n" + "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n" + "s@_NEED___VA_LIST@_NEED___Va_LIST@\n" + "s@VA_LIST@DUMMY_VA_LIST@\n" + "s@_Va_LIST@_VA_LIST@"; + test_text = "extern void mumble( va_list);"; +}; + + +/* + * "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0" + * is "!defined( __STRICT_ANSI__ )" + */ +fix = { + hackname = strict_ansi_not; + select = "^([ \t]*#[ \t]*if.*)" + "(!__STDC__" + "|__STDC__[ \t]*==[ \t]*0" + "|__STDC__[ \t]*!=[ \t]*1" + "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)"; + /* Tru64 UNIX V4.0F/V5.1 <standards.h> supports GCC usage of __STDC__. */ + bypass = 'GNU and MIPS C compilers define __STDC__ differently'; + /* GNU gmp.h uses "__STDC__ != 1" only if __SCO_VERSION__, which + is not defined by GCC, so it is safe. */ + bypass = '__SCO_VERSION__.*__STDC__ != 1'; + c_test = stdc_0_in_system_headers; + + c_fix = format; + c_fix_arg = "%1 !defined(__STRICT_ANSI__)"; + + test_text = "#if !__STDC__ \n" + "#if __STDC__ == 0\n" + "#if __STDC__ != 1\n" + "#if __STDC__ - 0 == 0" + "/* not std C */\nint foo;\n" + "\n#end-end-end-end-if :-)"; +}; + +/* + * "__STDC__-0==0" + * is "!defined( __STRICT_ANSI__ )" on continued #if-s + */ +fix = { + hackname = strict_ansi_not_ctd; + files = math.h, limits.h, stdio.h, signal.h, + stdlib.h, sys/signal.h, time.h; + /* + * Starting at the beginning of a line, skip white space and + * a leading "(" or "&&" or "||". One of those must be found. + * Then, zero, one or more copies of a "defined(_FOO_BAR_) &&" + * expression. If these are nested, then they must accumulate + * because we won't match any closing parentheses. Finally, + * after skipping over all that, we must then match our suspect + * phrase: "__STDC__-0==0" with or without white space. + */ + select = "^([ \t]*" '(\(|&&|\|\|)' + "([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*" + "[ \t(]*)" + "(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)"; + c_test = stdc_0_in_system_headers; + + c_fix = format; + c_fix_arg = "%1 !defined(__STRICT_ANSI__)"; + + test_text = "#if 1 && \\\\\n" + "&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n" + "( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n" + "|| __STDC__ - 0 == 0 ) /* not std C */\n" + "int foo;\n#endif"; +}; + + +/* + * "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1" + * is "defined( __STRICT_ANSI__ )" + */ +fix = { + hackname = strict_ansi_only; + select = "^([ \t]*#[ \t]*if.*)" + "(__STDC__[ \t]*!=[ \t]*0" + "|__STDC__[ \t]*==[ \t]*1" + "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1" + "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)"; + c_test = stdc_0_in_system_headers; + + c_fix = format; + c_fix_arg = "%1 defined(__STRICT_ANSI__)"; + + test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif"; +}; + + +/* + * IRIX 4.0.5 <rpc/xdr.h> uses struct __file_s + * in prototype without previous definition. + */ +fix = { + hackname = struct_file; + files = rpc/xdr.h; + select = '^.*xdrstdio_create.*struct __file_s'; + c_fix = format; + c_fix_arg = "struct __file_s;\n%0"; + test_text = "extern void xdrstdio_create( struct __file_s* );"; +}; + + +/* + * IRIX 4.0.5 <rpc/auth.h> uses struct sockaddr + * in prototype without previous definition. + * + * Don't fix OpenBSD, which uses struct sockaddr_in prototyping the same + * function, and does define it. + */ +fix = { + hackname = struct_sockaddr; + files = rpc/auth.h; + select = "^.*authdes_create.*struct sockaddr[^_]"; + bypass = "<sys/socket\.h>"; + bypass = "struct sockaddr;\n"; + c_fix = format; + c_fix_arg = "struct sockaddr;\n%0"; + test_text = "extern AUTH* authdes_create( struct sockaddr* );"; +}; + + +/* + * Apply fix this to all OSs since this problem seems to effect + * more than just SunOS. + */ +fix = { + hackname = sun_auth_proto; + files = rpc/auth.h; + files = rpc/clnt.h; + files = rpc/svc.h; + files = rpc/xdr.h; + bypass = "__cplusplus"; + /* + * Select those files containing '(*name)()'. + */ + select = '\(\*[a-z][a-z_]*\)\(\)'; + + c_fix = format; + c_fix_arg = "#ifdef __cplusplus\n%1(...);%2\n" + "#else\n%1();%2\n#endif"; + c_fix_arg = '(.*\(\*[a-z][a-z_]*\))\(\);(.*)'; + + test_text = + "struct auth_t {\n" + " int (*name)(); /* C++ bad */\n" + "};"; +}; + + +/* + * Fix bogus #ifdef on SunOS 4.1. + */ +fix = { + hackname = sun_bogus_ifdef; + files = "hsfs/hsfs_spec.h"; + files = "hsfs/iso_spec.h"; + select = '#ifdef(.*\|\|.*)'; + c_fix = format; + c_fix_arg = "#if%1"; + + test_text = "#ifdef __i386__ || __vax__ || __sun4c__"; +}; + + +/* + * Fix the CAT macro in SunOS memvar.h. + */ +fix = { + hackname = sun_catmacro; + files = pixrect/memvar.h; + select = "^#define[ \t]+CAT\\(a,b\\).*"; + c_fix = format; + + c_fix_arg = + "#ifdef __STDC__\n" + "# define CAT(a,b) a##b\n" + "#else\n%0\n#endif"; + + test_text = + "#define CAT(a,b)\ta/**/b"; +}; + + +/* + * Fix return type of free and {c,m,re}alloc in <malloc.h> on SunOS 4.1. + * Also fix return type of {m,re}alloc in <malloc.h> on sysV68 + */ +fix = { + hackname = sun_malloc; + files = malloc.h; + bypass = "_CLASSIC_ANSI_TYPES"; + + sed = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g"; + sed = "s/int[ \t][ \t]*free/void\tfree/g"; + sed = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g"; + sed = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g"; + sed = "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g"; + + test_text = + "typedef char *\tmalloc_t;\n" + "int \tfree();\n" + "char*\tmalloc();\n" + "char*\tcalloc();\n" + "char*\trealloc();"; +}; + + +/* + * Check for yet more missing ';' in struct (in SunOS 4.0.x) + */ +fix = { + hackname = sun_rusers_semi; + files = rpcsvc/rusers.h; + select = "_cnt$"; + sed = "/^struct/,/^};/s/_cnt$/_cnt;/"; + test_text = "struct mumble\n int _cnt\n};"; +}; + + +/* + * signal.h on SunOS defines signal using (), + * which causes trouble when compiling with g++ -pedantic. + */ +fix = { + hackname = sun_signal; + files = sys/signal.h; + files = signal.h; + select = "^void\t" '\(\*signal\(\)\)\(\);.*'; + + c_fix = format; + c_fix_arg = + "#ifdef __cplusplus\n" + "void\t(*signal(...))(...);\n" + "#else\n%0\n#endif"; + + test_text = "void\t(*signal())();"; +}; + + +/* + * Correct the return type for strlen in strings.h in SunOS 4. + */ +fix = { + hackname = sunos_strlen; + files = strings.h; + select = "int[ \t]*strlen\\(\\);(.*)"; + c_fix = format; + c_fix_arg = "__SIZE_TYPE__ strlen();%1"; + test_text = " int\tstrlen(); /* string length */"; +}; + + +/* + * Disable apparent native compiler optimization cruft in SVR4.2 <string.h> + * that is visible to any ANSI compiler using this include. Simply + * delete the lines that #define some string functions to internal forms. + */ +fix = { + hackname = svr4_disable_opt; + files = string.h; + select = '#define.*__std_hdr_'; + sed = '/#define.*__std_hdr_/d'; + test_text = "#define strlen __std_hdr_strlen\n"; +}; + + +/* + * Fix broken decl of getcwd present on some svr4 systems. + */ +fix = { + hackname = svr4_getcwd; + files = stdlib.h; + files = unistd.h; + files = prototypes.h; + select = 'getcwd\(char \*, int\)'; + + c_fix = format; + c_fix_arg = "getcwd(char *, size_t)"; + + test_text = "extern char* getcwd(char *, int);"; +}; + + +/* + * Fix broken decl of profil present on some svr4 systems. + */ +fix = { + hackname = svr4_profil; + files = stdlib.h; + files = unistd.h; + + select = + 'profil\(unsigned short \*, unsigned int, unsigned int, unsigned int\)'; + /* The fix is wrong on IRIX 5/6 and creates a conflict with another + prototype in <sys/profil.h>. */ + bypass = 'Silicon Graphics'; + c_fix = format; + c_fix_arg = 'profil(unsigned short *, size_t, int, unsigned int)'; + + test_text = + 'profil(unsigned short *, unsigned int, unsigned int, unsigned int);'; +}; + + +/* + * Correct types for signal handler constants like SIG_DFL; they might be + * void (*) (), and should be void (*) (int). C++ doesn't like the + * old style. + */ +fix = { + hackname = svr4_sighandler_type; + files = sys/signal.h; + select = 'void *\(\*\)\(\)'; + c_fix = format; + c_fix_arg = "void (*)(int)"; + test_text = "#define SIG_DFL (void(*)())0\n" + "#define SIG_IGN (void (*)())0\n"; +}; + + +/* + * Some SysV r4 systems, including Sequent's DYNIX/ptx, use the local + * function 'getrnge' in <regexp.h> before they declare it. For these + * systems add a 'static int' declaration of 'getrnge' into <regexp.h> + * early on. + * + * 'getrnge' traditionally manipulates a file-scope global called 'size', + * so put the declaration right after the declaration of 'size'. + * + * Don't do this if there is already a `static void getrnge' declaration + * present, since this would cause a redeclaration error. Solaris 2.x has + * such a declaration. + */ +fix = { + hackname = svr4_undeclared_getrnge; + files = regexp.h; + select = "getrnge"; + bypass = "static void getrnge"; + c_fix = format; + c_fix_arg = "%0\n" + "static int getrnge ();"; + c_fix_arg = "^static int[ \t]+size;"; + test_text = "static int size;\n" + "/* stuff which calls getrnge() */\n" + "static getrnge()\n" + "{}"; +}; + + +/* + * Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn} + * in string.h on sysV68 + * Correct the return type for strlen in string.h on Lynx. + * Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0. + * Add missing const for strdup on OSF/1 V3.0. + * On sysV88 layout is slightly different. + */ +fix = { + hackname = sysv68_string; + files = testing.h; + files = string.h; + bypass = "_CLASSIC_ANSI_TYPES"; + + sed = "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/"; + sed = "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/"; + sed = "s/strdup(char \\*s1);/strdup(const char *s1);/"; + + sed = "/^extern char$/N"; + sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/"; + + sed = "/^extern int$/N"; + sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/"; + + sed = "/^\tstrncmp(),$/N"; + sed = 's/^\(' "\t" 'strncmp()\),\n\(' "\t" 'strlen(),\)$/' + '\1;' "\\\nextern unsigned int\\\n\\2/"; + + test_text = + "extern int strlen();\n" + + "extern int ffs(long);\n" + + "extern char\n" + "\t*memccpy(),\n" + "\tmemcpy();\n" + + "extern int\n" + "\tstrcmp(),\n" + "\tstrncmp(),\n" + "\tstrlen(),\n" + "\tstrspn();\n" + + "extern int\n" + "\tstrlen(), strspn();"; +}; + + +/* + * Fix return type of calloc, malloc, realloc, bsearch and exit + */ +fix = { + hackname = sysz_stdlib_for_sun; + files = stdlib.h; + bypass = "_CLASSIC_ANSI_TYPES"; + + select = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\("; + c_fix = format; + c_fix_arg = "void *\t%1("; + + test_text = + "extern char*\tcalloc(size_t);\n" + "extern char*\tmalloc(size_t);\n" + "extern char*\trealloc(void*,size_t);\n" + "extern char*\tbsearch(void*,size_t,size_t);\n"; +}; + + +/* + * __thread is now a keyword. + */ +fix = { + hackname = thread_keyword; + files = "pthread.h"; + files = "bits/sigthread.h"; + select = "([* ])__thread([,)])"; + c_fix = format; + c_fix_arg = "%1__thr%2"; + + test_text = + "extern int pthread_create (pthread_t *__restrict __thread,\n" + "extern int pthread_kill (pthread_t __thread, int __signo);\n" + "extern int pthread_cancel (pthread_t __thread);"; +}; + +/* + * if the #if says _cplusplus, not the double underscore __cplusplus + * that it should be + */ +fix = { + hackname = tinfo_cplusplus; + files = tinfo.h; + select = "[ \t]_cplusplus"; + + c_fix = format; + c_fix_arg = " __cplusplus"; + test_text = "#ifdef _cplusplus\nint bogus;\n#endif"; +}; + + +/* + * parameters not const on DECstation Ultrix V4.0 and OSF/1. + */ +fix = { + hackname = ultrix_const; + files = stdio.h; + select = 'perror\( char \*'; + + c_fix = format; + c_fix_arg = "%1 const %3 *__"; + c_fix_arg = "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)" + "[ \t]+(char|void) \\*__"; + + test_text = + "extern void perror( char *__s );\n" + "extern int fputs( char *__s, FILE *);\n" + "extern size_t fwrite( void *__ptr, size_t, size_t, FILE *);\n" + "extern int fscanf( FILE *__stream, char *__format, ...);\n" + "extern int scanf( char *__format, ...);\n"; +}; + + +/* + * parameters not const on DECstation Ultrix V4.0 and OSF/1. + */ +fix = { + hackname = ultrix_const2; + files = stdio.h; + + select = '\*fopen\( char \*'; + c_fix = format; + c_fix_arg = "%1( const char *%3, const char *"; + c_fix_arg = "([ \t*](fopen|sscanf|popen|tempnam))\\(" + "[ \t]*char[ \t]*\\*([^,]*)," + "[ \t]*char[ \t]*\\*[ \t]*"; + + test_text = + "extern FILE *fopen( char *__filename, char *__type );\n" + "extern int sscanf( char *__s, char *__format, ...);\n" + "extern FILE *popen(char *, char *);\n" + "extern char *tempnam(char*,char*);\n"; +}; + + +/* + * Fix definitions of macros used by va-i960.h in VxWorks header file. + */ +fix = { + hackname = va_i960_macro; + files = arch/i960/archI960.h; + select = "__(vsiz|vali|vpad|alignof__)"; + + c_fix = format; + c_fix_arg = "__vx%1"; + + test_text = + "extern int __vsiz vsiz;\n" + "extern int __vali vali;\n" + "extern int __vpad vpad;\n" + "#define __alignof__(x) ..."; +}; + + +/* + * AIX and Interix headers define NULL to be cast to a void pointer, + * which is illegal in ANSI C++. + */ +fix = { + hackname = void_null; + files = curses.h; + files = dbm.h; + files = locale.h; + files = stdio.h; + files = stdlib.h; + files = string.h; + files = time.h; + files = unistd.h; + files = sys/dir.h; + files = sys/param.h; + files = sys/types.h; + /* avoid changing C++ friendly NULL */ + bypass = __cplusplus; + select = "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)"; + c_fix = format; + c_fix_arg = "#define NULL 0"; + test_text = "# define\tNULL \t((void *)0) /* typed NULL */"; +}; + + +/* + * Make VxWorks header which is almost gcc ready fully gcc ready. + */ +fix = { + hackname = vxworks_gcc_problem; + files = types/vxTypesBase.h; + select = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__"; + + sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/" + "#if 1/"; + + sed = "/[ \t]size_t/i\\\n" + "#ifndef _GCC_SIZE_T\\\n" + "#define _GCC_SIZE_T\n"; + + sed = "/[ \t]size_t/a\\\n" + "#endif\n"; + + sed = "/[ \t]ptrdiff_t/i\\\n" + "#ifndef _GCC_PTRDIFF_T\\\n" + "#define _GCC_PTRDIFF_T\n"; + + sed = "/[ \t]ptrdiff_t/a\\\n" + "#endif\n"; + + sed = "/[ \t]wchar_t/i\\\n" + "#ifndef _GCC_WCHAR_T\\\n" + "#define _GCC_WCHAR_T\n"; + + sed = "/[ \t]wchar_t/a\\\n" + "#endif\n"; + + test_text = + "#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__\n" + "typedef unsigned int size_t;\n" + "typedef long ptrdiff_t;\n" + "typedef unsigned short wchar_t;\n" + "#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n"; +}; + + +/* + * Fix VxWorks <time.h> to not require including <vxTypes.h>. + */ +fix = { + hackname = vxworks_needs_vxtypes; + files = time.h; + select = "uint_t([ \t]+_clocks_per_sec)"; + c_fix = format; + c_fix_arg = "unsigned int%1"; + test_text = "uint_t\t_clocks_per_sec;"; +}; + + +/* + * Fix VxWorks <sys/stat.h> to not require including <vxWorks.h>. + */ +fix = { + hackname = vxworks_needs_vxworks; + files = sys/stat.h; + test = " -r types/vxTypesOld.h"; + test = " -n \"`egrep '#include' $file`\""; + test = " -n \"`egrep ULONG $file`\""; + select = "#[ \t]define[ \t]+__INCstath"; + + sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n" + "#include <types/vxTypesOld.h>\n"; + + test_text = "`touch types/vxTypesOld.h`" + "#include </dev/null> /* ULONG */\n" + "# define\t__INCstath <sys/stat.h>"; +}; + + +/* + * Another bad dependency in VxWorks 5.2 <time.h>. + */ +fix = { + hackname = vxworks_time; + files = time.h; + test = " -r vxWorks.h"; + + select = "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*"; + c_fix = format; + + c_fix_arg = + "#ifndef __gcc_VOIDFUNCPTR_defined\n" + "#ifdef __cplusplus\n" + "typedef void (*__gcc_VOIDFUNCPTR) (...);\n" + "#else\n" + "typedef void (*__gcc_VOIDFUNCPTR) ();\n" + "#endif\n" + "#define __gcc_VOIDFUNCPTR_defined\n" + "#endif\n" + "#define VOIDFUNCPTR __gcc_VOIDFUNCPTR"; + + test_text = "`touch vxWorks.h`" + "#define VOIDFUNCPTR (void(*)())"; +}; + + +/* + * There are several name conflicts with C++ reserved words in X11 header + * files. These are fixed in some versions, so don't do the fixes if + * we find __cplusplus in the file. These were found on the RS/6000. + */ +fix = { + hackname = x11_class; + files = X11/ShellP.h; + bypass = __cplusplus; + select = "^([ \t]*char \\*)class;(.*)"; + c_fix = format; + c_fix_arg = "#ifdef __cplusplus\n%1c_class;%2\n" + "#else\n%1class;%2\n#endif"; + test_text = + "struct {\n" + " char *class;\n" + "} mumble;\n"; +}; + + +/* + * class in Xm/BaseClassI.h + */ +fix = { + hackname = x11_class_usage; + files = Xm/BaseClassI.h; + bypass = "__cplusplus"; + + select = " class\\)"; + c_fix = format; + c_fix_arg = " c_class)"; + + test_text = "extern mumble (int class);\n"; +}; + + +/* + * new in Xm/Traversal.h + */ +fix = { + hackname = x11_new; + files = Xm/Traversal.h; + bypass = __cplusplus; + + sed = "/Widget\told, new;/i\\\n" + "#ifdef __cplusplus\\\n" + "\\\tWidget\told, c_new;\\\n" + "#else\n"; + + sed = "/Widget\told, new;/a\\\n" + "#endif\n"; + + sed = "s/Widget new,/Widget c_new,/g"; + test_text = + "struct wedge {\n" + " Widget\told, new;\n" + "};\nextern Wedged( Widget new, Widget old );"; +}; + + +/* + * Incorrect sprintf declaration in X11/Xmu.h + */ +fix = { + hackname = x11_sprintf; + files = X11/Xmu.h; + files = X11/Xmu/Xmu.h; + select = "^extern char \\*\tsprintf\\(\\);$"; + + c_fix = format; + c_fix_arg = "#ifndef __STDC__\n%0\n#endif /* !defined __STDC__ */"; + + test_text = "extern char *\tsprintf();"; +}; + +/*EOF*/ diff --git a/fixincludes/mkfixinc.sh b/fixincludes/mkfixinc.sh new file mode 100755 index 000000000..b45f1795d --- /dev/null +++ b/fixincludes/mkfixinc.sh @@ -0,0 +1,36 @@ +#! /bin/sh + +if [ $# -ne 1 ] +then + echo "Usage: $0 <target-mach-triplet>" + exit 1 +fi + +machine=$1 +target=fixinc.sh + +# Check for special fix rules for particular targets +case $machine in + alpha*-dec-*vms* | \ + i?86-moss-msdos* | \ + i?86-*-pe | \ + i?86-*-cygwin* | \ + i?86-*-mingw32* | \ + x86_64-*-mingw32* | \ + i?86-*-interix* | \ + *-*-vxworks* | \ + powerpc-*-eabisim* | \ + powerpc-*-eabi* | \ + powerpc-*-rtems* | \ + powerpcle-*-eabisim* | \ + powerpcle-*-eabi* ) + # IF there is no include fixing, + # THEN create a no-op fixer and exit + (echo "#! /bin/sh" ; echo "exit 0" ) > ${target} + ;; + + *) + cat < ${srcdir}/fixinc.in > ${target} || exit 1 + ;; +esac +chmod 755 ${target} diff --git a/fixincludes/mkheaders.in b/fixincludes/mkheaders.in new file mode 100644 index 000000000..9109b057c --- /dev/null +++ b/fixincludes/mkheaders.in @@ -0,0 +1,104 @@ +#!/bin/sh + +# Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc. + +#This file is part of GCC. + +#GCC is free software; you can redistribute it and/or modify it under +#the terms of the GNU General Public License as published by the Free +#Software Foundation; either version 3, or (at your option) any later +#version. + +#GCC is distributed in the hope that it will be useful, but WITHOUT +#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +#for more details. + +#You should have received a copy of the GNU General Public License +#along with GCC; see the file COPYING3. If not see +#<http://www.gnu.org/licenses/>. + +# Basic information +target=@target@ +target_noncanonical=@target_noncanonical@ +version=@gcc_version@ + +VERBOSE=0 +while [ x$1 = x-v ] ; do + shift + VERBOSE=`expr $VERBOSE + 1` +done +export VERBOSE + +if [ x$1 = x--help ] ; then + echo "Usage: mkheaders [options] [prefix [isysroot]]" + echo "Options:" + echo " -v Print more output (may be repeated for even more output)" + echo " --help This help" + echo " --version Print version information" + exit 0 +fi + +if [ x$1 = x--version ] ; then + echo "mkheaders (GCC) version $version" + echo "Copyright 2002, 2007, 2009 Free Software Foundation, Inc." + echo "This program is free software; you may redistribute it under the" + echo "terms of the GNU General Public License. This program has" + echo "absolutely no warranty." + exit 0 +fi + +# Common prefix for installation directories. +if [ x$1 != x ] ; then + prefix=$1 + shift +else + prefix=@prefix@ +fi + +# Allow for alternate isysroot in which to find headers +if [ x$1 != x ] ; then + isysroot=$1 + shift +else + isysroot= +fi + +# Directory in which to put host dependent programs and libraries +exec_prefix=@exec_prefix@ +# Directory in which to put the directories used by the compiler. +libdir=@libdir@ +libexecdir=@libexecdir@ +# Directory in which the compiler finds libraries, etc. +libsubdir=${libdir}/gcc/${target_noncanonical}/${version} +# Directory in which the compiler finds executables +libexecsubdir=${libexecdir}/gcc/${target_noncanonical}/${version} + +itoolsdir=${libexecsubdir}/install-tools +itoolsdatadir=${libsubdir}/install-tools +incdir=${libsubdir}/include-fixed +mkinstalldirs="@SHELL@ ${itoolsdir}/mkinstalldirs" + +cd ${itoolsdir} +rm -rf ${incdir}/* + +for ml in `cat ${itoolsdatadir}/fixinc_list`; do + sysroot_headers_suffix=`echo ${ml} | sed -e 's/;.*$//'` + multi_dir=`echo ${ml} | sed -e 's/^[^;]*;//'` + subincdir=${incdir}${multi_dir} + . ${itoolsdatadir}/mkheaders.conf + if [ x${STMP_FIXINC} != x ] ; then + TARGET_MACHINE="${target}" target_canonical="${target}" \ + MACRO_LIST="${itoolsdatadir}/macro_list" \ + @SHELL@ ./fixinc.sh ${subincdir} \ + ${isysroot}${SYSTEM_HEADER_DIR} ${OTHER_FIXINCLUDES_DIRS} + rm -f ${subincdir}/syslimits.h + if [ -f ${subincdir}/limits.h ]; then + mv ${subincdir}/limits.h ${subincdir}/syslimits.h + else + cp ${itoolsdatadir}/gsyslimits.h ${subincdir}/syslimits.h + fi + fi + + cp ${itoolsdatadir}/include${multi_dir}/limits.h ${subincdir} +done diff --git a/fixincludes/procopen.c b/fixincludes/procopen.c new file mode 100644 index 000000000..22d4f6793 --- /dev/null +++ b/fixincludes/procopen.c @@ -0,0 +1,218 @@ + +/* + * server.c Set up and handle communications with a server process. + * + * Server Handling copyright 1992-1999, 2004 The Free Software Foundation + * + * Server Handling is free software. + * You may redistribute it and/or modify it under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2, or (at your option) any later version. + * + * Server Handling is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Server Handling. See the file "COPYING". If not, + * write to: The Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * As a special exception, The Free Software Foundation gives + * permission for additional uses of the text contained in his release + * of ServerHandler. + * + * The exception is that, if you link the ServerHandler library with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the ServerHandler library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by The Free + * Software Foundation under the name ServerHandler. If you copy code + * from other sources under the General Public License into a copy of + * ServerHandler, as the General Public License permits, the exception + * does not apply to the code that you add in this way. To avoid + * misleading anyone as to the status of such modified files, you must + * delete this exception notice from them. + * + * If you write modifications of your own for ServerHandler, it is your + * choice whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + */ + +#include "fixlib.h" +#include "server.h" + +STATIC const char* def_args[] = +{ (char *) NULL, (char *) NULL }; + +/* + * chain_open + * + * Given an FD for an inferior process to use as stdin, + * start that process and return a NEW FD that that process + * will use for its stdout. Requires the argument vector + * for the new process and, optionally, a pointer to a place + * to store the child's process id. + */ +int +chain_open (int stdin_fd, tCC** pp_args, pid_t* p_child) +{ + t_fd_pair stdout_pair; + pid_t ch_id; + tCC *pz_cmd; + + stdout_pair.read_fd = stdout_pair.write_fd = -1; + + /* + * Create a pipe it will be the child process' stdout, + * and the parent will read from it. + */ + if (pipe ((int *) &stdout_pair) < 0) + { + if (p_child != (pid_t *) NULL) + *p_child = NOPROCESS; + return -1; + } + + /* + * If we did not get an arg list, use the default + */ + if (pp_args == (tCC **) NULL) + pp_args = def_args; + + /* + * If the arg list does not have a program, + * assume the "SHELL" from the environment, or, failing + * that, then sh. Set argv[0] to whatever we decided on. + */ + if (pz_cmd = *pp_args, + (pz_cmd == (char *) NULL) || (*pz_cmd == '\0')) + { + + pz_cmd = getenv ("SHELL"); + if (pz_cmd == (char *) NULL) + pz_cmd = "sh"; + } + +#ifdef DEBUG_PRINT + printf ("START: %s\n", pz_cmd); + { + int idx = 0; + + while (pp_args[++idx] != (char *) NULL) + printf (" ARG %2d: %s\n", idx, pp_args[idx]); + } +#endif + + /* + * Call fork() and see which process we become + */ + ch_id = fork (); + switch (ch_id) + { + case NOPROCESS: /* parent - error in call */ + close (stdout_pair.read_fd); + close (stdout_pair.write_fd); + if (p_child != (pid_t *) NULL) + *p_child = NOPROCESS; + return -1; + + default: /* parent - return opposite FD's */ + if (p_child != (pid_t *) NULL) + *p_child = ch_id; +#ifdef DEBUG_PRINT + printf ("for pid %d: stdin from %d, stdout to %d\n" + "for parent: read from %d\n", + ch_id, stdin_fd, stdout_pair.write_fd, stdout_pair.read_fd); +#endif + close (stdin_fd); + close (stdout_pair.write_fd); + return stdout_pair.read_fd; + + case NULLPROCESS: /* child - continue processing */ + break; + } + + /* + * Close the pipe end handed back to the parent process + */ + close (stdout_pair.read_fd); + + /* + * Close our current stdin and stdout + */ + close (STDIN_FILENO); + close (STDOUT_FILENO); + + /* + * Make the fd passed in the stdin, and the write end of + * the new pipe become the stdout. + */ + dup2 (stdout_pair.write_fd, STDOUT_FILENO); + dup2 (stdin_fd, STDIN_FILENO); + + if (*pp_args == (char *) NULL) + *pp_args = pz_cmd; + + execvp (pz_cmd, (char**)pp_args); + fprintf (stderr, "Error %d: Could not execvp( '%s', ... ): %s\n", + errno, pz_cmd, xstrerror (errno)); + exit (EXIT_PANIC); +} + + +/* + * proc2_open + * + * Given a pointer to an argument vector, start a process and + * place its stdin and stdout file descriptors into an fd pair + * structure. The "write_fd" connects to the inferior process + * stdin, and the "read_fd" connects to its stdout. The calling + * process should write to "write_fd" and read from "read_fd". + * The return value is the process id of the created process. + */ +pid_t +proc2_open (t_fd_pair* p_pair, tCC** pp_args) +{ + pid_t ch_id; + + /* Create a bi-directional pipe. Writes on 0 arrive on 1 and vice + versa, so the parent and child processes will read and write to + opposite FD's. */ + if (pipe ((int *) p_pair) < 0) + return NOPROCESS; + + p_pair->read_fd = chain_open (p_pair->read_fd, pp_args, &ch_id); + if (ch_id == NOPROCESS) + close (p_pair->write_fd); + + return ch_id; +} + + +/* + * proc2_fopen + * + * Identical to "proc2_open()", except that the "fd"'s are + * "fdopen(3)"-ed into file pointers instead. + */ +pid_t +proc2_fopen (t_pf_pair* pf_pair, tCC** pp_args) +{ + t_fd_pair fd_pair; + pid_t ch_id = proc2_open (&fd_pair, pp_args); + + if (ch_id == NOPROCESS) + return ch_id; + + pf_pair->pf_read = fdopen (fd_pair.read_fd, "r"); + pf_pair->pf_write = fdopen (fd_pair.write_fd, "w"); + return ch_id; +} diff --git a/fixincludes/server.c b/fixincludes/server.c new file mode 100644 index 000000000..1e50efc9f --- /dev/null +++ b/fixincludes/server.c @@ -0,0 +1,305 @@ + +/* + * server.c Set up and handle communications with a server process. + * + * Server Handling copyright 1992-1999, 2001 The Free Software Foundation + * + * Server Handling is free software. + * You may redistribute it and/or modify it under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2, or (at your option) any later version. + * + * Server Handling is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Server Handling. See the file "COPYING". If not, + * write to: The Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * As a special exception, The Free Software Foundation gives + * permission for additional uses of the text contained in his release + * of ServerHandler. + * + * The exception is that, if you link the ServerHandler library with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the ServerHandler library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by The Free + * Software Foundation under the name ServerHandler. If you copy code + * from other sources under the General Public License into a copy of + * ServerHandler, as the General Public License permits, the exception + * does not apply to the code that you add in this way. To avoid + * misleading anyone as to the status of such modified files, you must + * delete this exception notice from them. + * + * If you write modifications of your own for ServerHandler, it is your + * choice whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + */ + +#include "fixlib.h" +#include "server.h" + +STATIC volatile enum t_bool read_pipe_timeout; +STATIC pid_t server_master_pid = NOPROCESS; + +tSCC* def_args[] = +{ (char *) NULL, (char *) NULL }; +STATIC t_pf_pair server_pair = +{ (FILE *) NULL, (FILE *) NULL }; +STATIC pid_t server_id = NULLPROCESS; +/* + * Arbitrary text that should not be found in the shell output. + * It must be a single line and appear verbatim at the start of + * the terminating output line. + */ +tSCC z_done[] = "ShElL-OuTpUt-HaS-bEeN-cOmPlEtEd"; +tSCC* p_cur_dir = (char *) NULL; + +/* + * load_data + * + * Read data from a file pointer (a pipe to a process in this context) + * until we either get EOF or we get a marker line back. + * The read data are stored in a malloc-ed string that is truncated + * to size at the end. Input is assumed to be an ASCII string. + */ +static char * +load_data (FILE* fp) +{ + char *pz_text; + size_t text_size; + char *pz_scan; + char z_line[1024]; + t_bool got_done = BOOL_FALSE; + + text_size = sizeof (z_line) * 2; + pz_scan = pz_text = XNEWVEC (char, text_size); + + for (;;) + { + size_t used_ct; + + alarm (10); + read_pipe_timeout = BOOL_FALSE; + if (fgets (z_line, sizeof (z_line), fp) == (char *) NULL) + break; + + if (strncmp (z_line, z_done, sizeof (z_done) - 1) == 0) + { + got_done = BOOL_TRUE; + break; + } + + strcpy (pz_scan, z_line); + pz_scan += strlen (z_line); + used_ct = (size_t) (pz_scan - pz_text); + + if (text_size - used_ct < sizeof (z_line)) + { + size_t off = (size_t) (pz_scan - pz_text); + + text_size += 4096; + pz_text = XRESIZEVEC (char, pz_text, text_size); + pz_scan = pz_text + off; + } + } + + alarm (0); + if (read_pipe_timeout || ! got_done) + { + free ((void *) pz_text); + return (char *) NULL; + } + + while ((pz_scan > pz_text) && ISSPACE (pz_scan[-1])) + pz_scan--; + *pz_scan = NUL; + return XRESIZEVEC (char, pz_text, strlen (pz_text) + 1); +} + + +/* + * close_server + * + * Make certain the server process is dead, close the + * pipes to it and from it, finally NULL out the file pointers + */ +void +close_server (void) +{ + if ( (server_id != NULLPROCESS) + && (server_master_pid == getpid ())) + { + kill ((pid_t) server_id, SIGKILL); + server_id = NULLPROCESS; + server_master_pid = NOPROCESS; + fclose (server_pair.pf_read); + fclose (server_pair.pf_write); + server_pair.pf_read = server_pair.pf_write = (FILE *) NULL; + } +} + +/* + * sig_handler really only handles the timeout and pipe signals. + * This ensures that we do not wait forever on a request + * to our server, and also that if the server dies, we do not + * die from a sigpipe problem. + */ +static void +sig_handler (int signo ATTRIBUTE_UNUSED) +{ +#ifdef DEBUG + /* FIXME: this is illegal to do in a signal handler. */ + fprintf (stderr, + "fixincl ERROR: sig_handler: killed pid %ld due to %s\n", + (long) server_id, signo == SIGPIPE ? "SIGPIPE" : "SIGALRM"); +#endif + close_server (); + read_pipe_timeout = BOOL_TRUE; +} + + +/* + * server_setup Establish the signal handler for PIPE and ALARM. + * Also establishes the current directory to give to the + * server process at the start of every server command. + */ +static void +server_setup (void) +{ + static int atexit_done = 0; + char buff [MAXPATHLEN + 1]; + + if (atexit_done++ == 0) + atexit (close_server); + else + fputs ("NOTE: server restarted\n", stderr); + + server_master_pid = getpid (); + + signal (SIGPIPE, sig_handler); + signal (SIGALRM, sig_handler); + + fputs ("trap : 1\n", server_pair.pf_write); + fflush (server_pair.pf_write); + getcwd (buff, MAXPATHLEN + 1); + p_cur_dir = xstrdup (buff); +} + +/* + * find_shell + * + * Locate a shell suitable for use. For various reasons + * (like the use of "trap" in server_setup(), it must be a + * Bourne-like shell. + * + * Most of the time, /bin/sh is preferred, but sometimes + * it's quite broken (like on Ultrix). autoconf lets you + * override with $CONFIG_SHELL, so we do the same. + */ + +static const char * +find_shell (void) +{ + char * shell = getenv ("CONFIG_SHELL"); + if (shell) + return shell; + + return "/bin/sh"; +} + + +/* + * run_shell + * + * Run a shell command on the server. The command string + * passed in is wrapped inside the sequence: + * + * cd <original directory> + * <command string> + * echo + * echo <end-of-command-marker> + * + * This ensures that all commands start at a known place in + * the directory structure, that any incomplete output lines + * are completed and that our special marker sequence appears on + * a line by itself. We have chosen a marker that is + * excessively unlikely to be reproduced in normal output: + * + * "ShElL-OuTpUt-HaS-bEeN-cOmPlEtEd" + */ +char * +run_shell (const char* pz_cmd) +{ + tSCC zNoServer[] = "Server not running, cannot run:\n%s\n\n"; + t_bool retry = BOOL_TRUE; + + do_retry: + /* IF the shell server process is not running yet, + THEN try to start it. */ + if (server_id == NULLPROCESS) + { + def_args[0] = find_shell (); + + server_id = proc2_fopen (&server_pair, def_args); + if (server_id > 0) + server_setup (); + } + + /* IF it is still not running, THEN return the nil string. */ + if (server_id <= 0) + { + fprintf (stderr, zNoServer, pz_cmd); + return XCNEW (char); + } + + /* Make sure the process will pay attention to us, send the + supplied command, and then have it output a special marker that + we can find. */ + fprintf (server_pair.pf_write, "cd \"%s\"\n%s\n\necho\necho %s\n", + p_cur_dir, pz_cmd, z_done); + fflush (server_pair.pf_write); + + /* IF the server died and we received a SIGPIPE, + THEN return an empty string. */ + if (server_id == NULLPROCESS) + { + fprintf (stderr, zNoServer, pz_cmd); + return XCNEW (char); + } + + /* Now try to read back all the data. If we fail due to either a + sigpipe or sigalrm (timeout), we will return the nil string. */ + { + char *pz = load_data (server_pair.pf_read); + + if (pz == (char *) NULL) + { + close_server (); + + if (retry) + { + retry = BOOL_FALSE; + goto do_retry; + } + + fprintf (stderr, "CLOSING SHELL SERVER - command failure:\n\t%s\n", + pz_cmd); + pz = XCNEW (char); + } +#ifdef DEBUG + fprintf( stderr, "run_shell command success: %s\n", pz ); +#endif + return pz; + } +} diff --git a/fixincludes/server.h b/fixincludes/server.h new file mode 100644 index 000000000..9eafb03b5 --- /dev/null +++ b/fixincludes/server.h @@ -0,0 +1,74 @@ + +/* + * server.c Set up and handle communications with a server process. + * + * Server Handling copyright 1992-1999 The Free Software Foundation + * + * Server Handling is free software. + * You may redistribute it and/or modify it under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2, or (at your option) any later version. + * + * Server Handling is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Server Handling. See the file "COPYING". If not, + * write to: The Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * As a special exception, The Free Software Foundation gives + * permission for additional uses of the text contained in his release + * of ServerHandler. + * + * The exception is that, if you link the ServerHandler library with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the ServerHandler library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by The Free + * Software Foundation under the name ServerHandler. If you copy code + * from other sources under the General Public License into a copy of + * ServerHandler, as the General Public License permits, the exception + * does not apply to the code that you add in this way. To avoid + * misleading anyone as to the status of such modified files, you must + * delete this exception notice from them. + * + * If you write modifications of your own for ServerHandler, it is your + * choice whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + */ + +#ifndef GCC_SERVER_H +#define GCC_SERVER_H + +/* + * Dual pipe opening of a child process + */ + +typedef struct +{ + int read_fd; + int write_fd; +} t_fd_pair; + +typedef struct +{ + FILE *pf_read; /* parent read fp */ + FILE *pf_write; /* parent write fp */ +} t_pf_pair; + +char* run_shell( const char* pzCmd ); +pid_t proc2_fopen( t_pf_pair* p_pair, tCC** pp_args ); +pid_t proc2_open( t_fd_pair* p_pair, tCC** pp_args ); +int chain_open( int in_fd, tCC** pp_args, pid_t* p_child ); +void close_server( void ); + +#endif /* ! GCC_SERVER_H */ diff --git a/fixincludes/system.h b/fixincludes/system.h new file mode 100644 index 000000000..dca5d57b2 --- /dev/null +++ b/fixincludes/system.h @@ -0,0 +1,228 @@ +/* Get common system includes and various definitions and declarations based + on autoconf macros. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2009 + Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + + +#ifndef FIXINC_SYSTEM_H +#define FIXINC_SYSTEM_H + +/* We must include stdarg.h before stdio.h. */ +#include <stdarg.h> + +#ifdef HAVE_STDDEF_H +# include <stddef.h> +#endif + +#include <stdio.h> + +/* Define a generic NULL if one hasn't already been defined. */ +#ifndef NULL +#define NULL 0 +#endif + +/* Use the unlocked open routines from libiberty. */ +#define fopen(PATH,MODE) fopen_unlocked(PATH,MODE) +#define fdopen(FILDES,MODE) fdopen_unlocked(FILDES,MODE) +#define freopen(PATH,MODE,STREAM) freopen_unlocked(PATH,MODE,STREAM) + +/* fixincludes is not a multi-threaded application and therefore we + do not have to use the locking functions. In fact, using the locking + functions can cause the compiler to be significantly slower under + I/O bound conditions (such as -g -O0 on very large source files). + + HAVE_DECL_PUTC_UNLOCKED actually indicates whether or not the stdio + code is multi-thread safe by default. If it is set to 0, then do + not worry about using the _unlocked functions. + + fputs_unlocked, fwrite_unlocked, and fprintf_unlocked are + extensions and need to be prototyped by hand (since we do not + define _GNU_SOURCE). */ + +#if defined HAVE_DECL_PUTC_UNLOCKED && HAVE_DECL_PUTC_UNLOCKED + +# ifdef HAVE_PUTC_UNLOCKED +# undef putc +# define putc(C, Stream) putc_unlocked (C, Stream) +# endif +# ifdef HAVE_PUTCHAR_UNLOCKED +# undef putchar +# define putchar(C) putchar_unlocked (C) +# endif +# ifdef HAVE_GETC_UNLOCKED +# undef getc +# define getc(Stream) getc_unlocked (Stream) +# endif +# ifdef HAVE_GETCHAR_UNLOCKED +# undef getchar +# define getchar() getchar_unlocked () +# endif +# ifdef HAVE_FPUTC_UNLOCKED +# undef fputc +# define fputc(C, Stream) fputc_unlocked (C, Stream) +# endif + +# ifdef HAVE_CLEARERR_UNLOCKED +# undef clearerr +# define clearerr(Stream) clearerr_unlocked (Stream) +# if defined (HAVE_DECL_CLEARERR_UNLOCKED) && !HAVE_DECL_CLEARERR_UNLOCKED +extern void clearerr_unlocked (FILE *); +# endif +# endif +# ifdef HAVE_FEOF_UNLOCKED +# undef feof +# define feof(Stream) feof_unlocked (Stream) +# if defined (HAVE_DECL_FEOF_UNLOCKED) && !HAVE_DECL_FEOF_UNLOCKED +extern int feof_unlocked (FILE *); +# endif +# endif +# ifdef HAVE_FILENO_UNLOCKED +# undef fileno +# define fileno(Stream) fileno_unlocked (Stream) +# if defined (HAVE_DECL_FILENO_UNLOCKED) && !HAVE_DECL_FILENO_UNLOCKED +extern int fileno_unlocked (FILE *); +# endif +# endif +# ifdef HAVE_FFLUSH_UNLOCKED +# undef fflush +# define fflush(Stream) fflush_unlocked (Stream) +# if defined (HAVE_DECL_FFLUSH_UNLOCKED) && !HAVE_DECL_FFLUSH_UNLOCKED +extern int fflush_unlocked (FILE *); +# endif +# endif +# ifdef HAVE_FGETC_UNLOCKED +# undef fgetc +# define fgetc(Stream) fgetc_unlocked (Stream) +# if defined (HAVE_DECL_FGETC_UNLOCKED) && !HAVE_DECL_FGETC_UNLOCKED +extern int fgetc_unlocked (FILE *); +# endif +# endif +# ifdef HAVE_FGETS_UNLOCKED +# undef fgets +# define fgets(S, n, Stream) fgets_unlocked (S, n, Stream) +# if defined (HAVE_DECL_FGETS_UNLOCKED) && !HAVE_DECL_FGETS_UNLOCKED +extern char *fgets_unlocked (char *, int, FILE *); +# endif +# endif +# ifdef HAVE_FPUTS_UNLOCKED +# undef fputs +# define fputs(String, Stream) fputs_unlocked (String, Stream) +# if defined (HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED +extern int fputs_unlocked (const char *, FILE *); +# endif +# endif +# ifdef HAVE_FERROR_UNLOCKED +# undef ferror +# define ferror(Stream) ferror_unlocked (Stream) +# if defined (HAVE_DECL_FERROR_UNLOCKED) && !HAVE_DECL_FERROR_UNLOCKED +extern int ferror_unlocked (FILE *); +# endif +# endif +# ifdef HAVE_FREAD_UNLOCKED +# undef fread +# define fread(Ptr, Size, N, Stream) fread_unlocked (Ptr, Size, N, Stream) +# if defined (HAVE_DECL_FREAD_UNLOCKED) && !HAVE_DECL_FREAD_UNLOCKED +extern size_t fread_unlocked (void *, size_t, size_t, FILE *); +# endif +# endif +# ifdef HAVE_FWRITE_UNLOCKED +# undef fwrite +# define fwrite(Ptr, Size, N, Stream) fwrite_unlocked (Ptr, Size, N, Stream) +# if defined (HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED +extern size_t fwrite_unlocked (const void *, size_t, size_t, FILE *); +# endif +# endif +# ifdef HAVE_FPRINTF_UNLOCKED +# undef fprintf +/* We can't use a function-like macro here because we don't know if + we have varargs macros. */ +# define fprintf fprintf_unlocked +# if defined (HAVE_DECL_FPRINTF_UNLOCKED) && !HAVE_DECL_FPRINTF_UNLOCKED +extern int fprintf_unlocked (FILE *, const char *, ...); +# endif +# endif + +#endif + +/* ??? Glibc's fwrite/fread_unlocked macros cause + "warning: signed and unsigned type in conditional expression". */ +#undef fread_unlocked +#undef fwrite_unlocked + +#include <sys/types.h> +#include <errno.h> + +#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO +extern int errno; +#endif + +/* Some of glibc's string inlines cause warnings. Plus we'd rather + rely on (and therefore test) GCC's string builtins. */ +#define __NO_STRING_INLINES + +#ifdef HAVE_STRING_H +# include <string.h> +#else +# ifdef HAVE_STRINGS_H +# include <strings.h> +# endif +#endif + +#ifdef HAVE_STDLIB_H +# include <stdlib.h> +#endif + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#else +# ifdef HAVE_SYS_FILE_H +# include <sys/file.h> +# endif +#endif + +/* The HAVE_DECL_* macros are three-state, undefined, 0 or 1. If they + are defined to 0 then we must provide the relevant declaration + here. These checks will be in the undefined state while configure + is running so be careful to test "defined (HAVE_DECL_*)". */ + +#if defined (HAVE_DECL_ABORT) && !HAVE_DECL_ABORT +extern void abort (void); +#endif + +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif + +/* Test if something is a normal file. */ +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif + +/* Filename handling macros. */ +#include "filenames.h" + +/* Get libiberty declarations. */ +#include "libiberty.h" +#include "safe-ctype.h" + +#endif /* ! FIXINC_SYSTEM_H */ diff --git a/fixincludes/tests/base/AvailabilityMacros.h b/fixincludes/tests/base/AvailabilityMacros.h new file mode 100644 index 000000000..81a0da0f7 --- /dev/null +++ b/fixincludes/tests/base/AvailabilityMacros.h @@ -0,0 +1,15 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/AvailabilityMacros.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DARWIN_GCC4_BREAKAGE_CHECK ) +#if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) + +#endif /* DARWIN_GCC4_BREAKAGE_CHECK */ diff --git a/fixincludes/tests/base/X11/ShellP.h b/fixincludes/tests/base/X11/ShellP.h new file mode 100644 index 000000000..45e8e1f70 --- /dev/null +++ b/fixincludes/tests/base/X11/ShellP.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/X11/ShellP.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( X11_CLASS_CHECK ) +struct { +#ifdef __cplusplus + char *c_class; +#else + char *class; +#endif +} mumble; + +#endif /* X11_CLASS_CHECK */ diff --git a/fixincludes/tests/base/X11/Xmu.h b/fixincludes/tests/base/X11/Xmu.h new file mode 100644 index 000000000..5fac5dba9 --- /dev/null +++ b/fixincludes/tests/base/X11/Xmu.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/X11/Xmu.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( X11_SPRINTF_CHECK ) +#ifndef __STDC__ +extern char * sprintf(); +#endif /* !defined __STDC__ */ +#endif /* X11_SPRINTF_CHECK */ diff --git a/fixincludes/tests/base/Xm/BaseClassI.h b/fixincludes/tests/base/Xm/BaseClassI.h new file mode 100644 index 000000000..afc3a897e --- /dev/null +++ b/fixincludes/tests/base/Xm/BaseClassI.h @@ -0,0 +1,15 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/Xm/BaseClassI.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( X11_CLASS_USAGE_CHECK ) +extern mumble (int c_class); + +#endif /* X11_CLASS_USAGE_CHECK */ diff --git a/fixincludes/tests/base/Xm/Traversal.h b/fixincludes/tests/base/Xm/Traversal.h new file mode 100644 index 000000000..2b3cba73f --- /dev/null +++ b/fixincludes/tests/base/Xm/Traversal.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/Xm/Traversal.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( X11_NEW_CHECK ) +struct wedge { +#ifdef __cplusplus + Widget old, c_new; +#else + Widget old, new; +#endif +}; +extern Wedged( Widget c_new, Widget old ); +#endif /* X11_NEW_CHECK */ diff --git a/fixincludes/tests/base/ansi/math.h b/fixincludes/tests/base/ansi/math.h new file mode 100644 index 000000000..c8a9ca208 --- /dev/null +++ b/fixincludes/tests/base/ansi/math.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/ansi/math.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NEXT_MATH_PREFIX_CHECK ) +extern double mumble(); +#endif /* NEXT_MATH_PREFIX_CHECK */ diff --git a/fixincludes/tests/base/ansi/stdlib.h b/fixincludes/tests/base/ansi/stdlib.h new file mode 100644 index 000000000..e47d49cc8 --- /dev/null +++ b/fixincludes/tests/base/ansi/stdlib.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/ansi/stdlib.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NEXT_VOLITILE_CHECK ) +extern void abort(); +#endif /* NEXT_VOLITILE_CHECK */ diff --git a/fixincludes/tests/base/arch/i960/archI960.h b/fixincludes/tests/base/arch/i960/archI960.h new file mode 100644 index 000000000..b886700c4 --- /dev/null +++ b/fixincludes/tests/base/arch/i960/archI960.h @@ -0,0 +1,17 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/arch/i960/archI960.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VA_I960_MACRO_CHECK ) +extern int __vxvsiz vsiz; +extern int __vxvali vali; +extern int __vxvpad vpad; +#define __vxalignof__(x) ... +#endif /* VA_I960_MACRO_CHECK */ diff --git a/fixincludes/tests/base/architecture/ppc/math.h b/fixincludes/tests/base/architecture/ppc/math.h new file mode 100644 index 000000000..dcd04236b --- /dev/null +++ b/fixincludes/tests/base/architecture/ppc/math.h @@ -0,0 +1,88 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/architecture/ppc/math.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + +/* This file prototypes the long double functions available on Mac OS + 10.3.9. */ +#ifndef __MATH__ +# undef __APPLE_CC__ +# define __APPLE_CC__ 1345 +# include_next <architecture/ppc/math.h> +# undef __APPLE_CC__ +# define __APPLE_CC__ 1 +# ifndef __LIBMLDBL_COMPAT +# ifdef __LONG_DOUBLE_128__ +# define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128") +# else +# define __LIBMLDBL_COMPAT(sym) +# endif /* __LONG_DOUBLE_128__ */ +# endif /* __LIBMLDBL_COMPAT */ +# ifdef __cplusplus + extern "C" { +# endif + extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl); + extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl); + extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl); + extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l); + extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl); + extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl); + extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl); + extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl); + extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl); + extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl); + extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl); + extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl); + extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl); + extern long double expl( long double ) __LIBMLDBL_COMPAT(expl); + extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l); + extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l); + extern long double logl( long double ) __LIBMLDBL_COMPAT(logl); + extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l); + extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l); + extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl); + extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl); + extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl); + extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl); + extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl); + extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl); + extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl); + extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl); + extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl); + extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl); + extern long double hypotl( long double, long double ) __LIBMLDBL_COMPAT(hypotl); + extern long double powl( long double, long double ) __LIBMLDBL_COMPAT(powl); + extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl); + extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl); + extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl); + extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal); + extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal); + extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill); + extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl); + extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl); + extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl); + extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl); + extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl); + extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl); + extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl); + extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl); + extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl); + extern long double fmodl( long double, long double) __LIBMLDBL_COMPAT(fmodl); + extern long double remainderl( long double, long double ) __LIBMLDBL_COMPAT(remainderl); + extern long double remquol( long double, long double, int * ) __LIBMLDBL_COMPAT(remquol); + extern long double copysignl( long double, long double ) __LIBMLDBL_COMPAT(copysignl); + extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl); + extern long double nextafterl( long double, long double ) __LIBMLDBL_COMPAT(nextafterl); + extern long double nexttowardl( long double, long double ) __LIBMLDBL_COMPAT(nexttowardl); + extern long double fdiml( long double, long double ) __LIBMLDBL_COMPAT(fdiml); + extern long double fmaxl( long double, long double ) __LIBMLDBL_COMPAT(fmaxl); + extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl); + extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal); +# ifdef __cplusplus + } +# endif +#endif /* __MATH__ */ diff --git a/fixincludes/tests/base/assert.h b/fixincludes/tests/base/assert.h new file mode 100644 index 000000000..2642cbe49 --- /dev/null +++ b/fixincludes/tests/base/assert.h @@ -0,0 +1,43 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/assert.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + +#ifndef FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB +#define FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB 1 + +#ifdef __cplusplus +#include <stdlib.h> +#endif +#ifndef FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO +#define FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO 1 + +#include <stdio.h> + + +#if defined( ALPHA___ASSERT_CHECK ) +extern void __assert(const char *, const char *, int); +#endif /* ALPHA___ASSERT_CHECK */ + + +#if defined( ALPHA_ASSERT_CHECK ) +#define assert(EX) ((EX) ? (void)0 : __assert(#EX, __FILE__, __LINE__)) +#endif /* ALPHA_ASSERT_CHECK */ + + +#if defined( BROKEN_ASSERT_STDIO_CHECK ) +extern FILE* stderr; +#endif /* BROKEN_ASSERT_STDIO_CHECK */ + + +#if defined( BROKEN_ASSERT_STDLIB_CHECK ) +extern void exit ( int ); +#endif /* BROKEN_ASSERT_STDLIB_CHECK */ + +#endif /* FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO */ + +#endif /* FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB */ diff --git a/fixincludes/tests/base/bits/huge_val.h b/fixincludes/tests/base/bits/huge_val.h new file mode 100644 index 000000000..f8bb0495b --- /dev/null +++ b/fixincludes/tests/base/bits/huge_val.h @@ -0,0 +1,27 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/bits/huge_val.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HUGE_VAL_HEX_CHECK ) +#define HUGE_VAL (__builtin_huge_val()) + +#endif /* HUGE_VAL_HEX_CHECK */ + + +#if defined( HUGE_VALF_HEX_CHECK ) +#define HUGE_VALF (__builtin_huge_valf()) + +#endif /* HUGE_VALF_HEX_CHECK */ + + +#if defined( HUGE_VALL_HEX_CHECK ) +#define HUGE_VALL (__builtin_huge_vall()) + +#endif /* HUGE_VALL_HEX_CHECK */ diff --git a/fixincludes/tests/base/bits/string2.h b/fixincludes/tests/base/bits/string2.h new file mode 100644 index 000000000..be6fe601a --- /dev/null +++ b/fixincludes/tests/base/bits/string2.h @@ -0,0 +1,23 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/bits/string2.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( GLIBC_C99_INLINE_3_CHECK ) +# if defined(__cplusplus) || defined(__GNUC_STDC_INLINE__) +# define __STRING_INLINE inline +# else +# define __STRING_INLINE extern __inline +# endif +#endif /* GLIBC_C99_INLINE_3_CHECK */ + + +#if defined( GLIBC_STRNCPY_CHECK ) +# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n) +#endif /* GLIBC_STRNCPY_CHECK */ diff --git a/fixincludes/tests/base/bsd/libc.h b/fixincludes/tests/base/bsd/libc.h new file mode 100644 index 000000000..939a5b1c9 --- /dev/null +++ b/fixincludes/tests/base/bsd/libc.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/bsd/libc.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NEXT_TEMPLATE_CHECK ) +extern mumble( char *); /* fix */ +#endif /* NEXT_TEMPLATE_CHECK */ diff --git a/fixincludes/tests/base/c_asm.h b/fixincludes/tests/base/c_asm.h new file mode 100644 index 000000000..f3e0daaee --- /dev/null +++ b/fixincludes/tests/base/c_asm.h @@ -0,0 +1,20 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/c_asm.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DEC_INTERN_ASM_CHECK ) +#ifdef __DECC +float fasm { + ... asm stuff ... +}; +#pragma intrinsic( dasm ) +#endif +/* END ASM TEST*/ +#endif /* DEC_INTERN_ASM_CHECK */ diff --git a/fixincludes/tests/base/com_err.h b/fixincludes/tests/base/com_err.h new file mode 100644 index 000000000..6017d2a6c --- /dev/null +++ b/fixincludes/tests/base/com_err.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/com_err.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( STDIO_DUMMY_VA_LIST_CLIENTS_CHECK ) +extern void mumble( __gnuc_va_list); +#endif /* STDIO_DUMMY_VA_LIST_CLIENTS_CHECK */ diff --git a/fixincludes/tests/base/complex.h b/fixincludes/tests/base/complex.h new file mode 100644 index 000000000..b3fe27aca --- /dev/null +++ b/fixincludes/tests/base/complex.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/complex.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AIX_COMPLEX_CHECK ) +#define _Complex_I (__extension__ 1.0iF) + +#endif /* AIX_COMPLEX_CHECK */ + + +#if defined( HPUX_IMAGINARY_I_CHECK ) +#define _Complex_I (__extension__ 1.0iF) + +#endif /* HPUX_IMAGINARY_I_CHECK */ + + +#if defined( IRIX_COMPLEX_CHECK ) +#define _Complex_I (__extension__ 1.0iF) +#define I _Complex_I +#endif /* IRIX_COMPLEX_CHECK */ + + +#if defined( SOLARIS_COMPLEX_CHECK ) +#define _Complex_I (__extension__ 1.0iF) +#define complex _Complex +#undef I +#define I _Complex_I +#endif /* SOLARIS_COMPLEX_CHECK */ + + +#if defined( SOLARIS_COMPLEX_CXX_CHECK ) +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif /* SOLARIS_COMPLEX_CXX_CHECK */ diff --git a/fixincludes/tests/base/ctrl-quotes-def-1.h b/fixincludes/tests/base/ctrl-quotes-def-1.h new file mode 100644 index 000000000..16b18dc41 --- /dev/null +++ b/fixincludes/tests/base/ctrl-quotes-def-1.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/ctrl-quotes-def-1.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( CTRL_QUOTES_DEF_CHECK_1 ) +#define _CTRL(c) (c&037) +#endif /* CTRL_QUOTES_DEF_CHECK_1 */ diff --git a/fixincludes/tests/base/ctype.h b/fixincludes/tests/base/ctype.h new file mode 100644 index 000000000..deabd5e44 --- /dev/null +++ b/fixincludes/tests/base/ctype.h @@ -0,0 +1,65 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/ctype.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX10_CTYPE_DECLARATIONS1_CHECK ) +#ifdef _PROTOTYPES +extern int __tolower(int); +extern int __toupper(int); +#else /* NOT _PROTOTYPES */ +extern int __tolower(); +extern int __toupper(); +#endif /* _PROTOTYPES */ + +# define _toupper(__c) __toupper(__c) + + +#endif /* HPUX10_CTYPE_DECLARATIONS1_CHECK */ + + +#if defined( HPUX10_CTYPE_DECLARATIONS2_CHECK ) +# if defined(_SB_CTYPE_MACROS) && !defined(__lint) + +#ifdef _PROTOTYPES + extern int _isalnum(int); + extern int _isalpha(int); + extern int _iscntrl(int); + extern int _isdigit(int); + extern int _isgraph(int); + extern int _islower(int); + extern int _isprint(int); + extern int _ispunct(int); + extern int _isspace(int); + extern int _isupper(int); + extern int _isxdigit(int); +# else /* not _PROTOTYPES */ + extern int _isalnum(); + extern int _isalpha(); + extern int _iscntrl(); + extern int _isdigit(); + extern int _isgraph(); + extern int _islower(); + extern int _isprint(); + extern int _ispunct(); + extern int _isspace(); + extern int _isupper(); + extern int _isxdigit(); +#endif /* _PROTOTYPES */ + + extern unsigned int *__SB_masks; + +#endif /* HPUX10_CTYPE_DECLARATIONS2_CHECK */ + + +#if defined( HPUX_CTYPE_MACROS_CHECK ) +: __SB_masks ? (int)__SB_masks[__alnum] & _ISCNTRL +# define isalpha(__c) (__SB_masks ? (int)__SB_masks[__c] & _IS + +#endif /* HPUX_CTYPE_MACROS_CHECK */ diff --git a/fixincludes/tests/base/curses.h b/fixincludes/tests/base/curses.h new file mode 100644 index 000000000..e05f8912d --- /dev/null +++ b/fixincludes/tests/base/curses.h @@ -0,0 +1,35 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/curses.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AVOID_BOOL_DEFINE_CHECK ) +#ifndef __cplusplus +# define bool char +#endif + +#endif /* AVOID_BOOL_DEFINE_CHECK */ + + +#if defined( AVOID_BOOL_TYPE_CHECK ) +#ifndef __cplusplus +typedef unsigned int bool ; +#endif /* bool + type */ +#endif /* AVOID_BOOL_TYPE_CHECK */ + + +#if defined( BAD_STRUCT_TERM_CHECK ) +struct term; +#endif /* BAD_STRUCT_TERM_CHECK */ + + +#if defined( VOID_NULL_CHECK ) +#define NULL 0 /* typed NULL */ +#endif /* VOID_NULL_CHECK */ diff --git a/fixincludes/tests/base/errno.h b/fixincludes/tests/base/errno.h new file mode 100644 index 000000000..e2dd5b1c0 --- /dev/null +++ b/fixincludes/tests/base/errno.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/errno.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_EXTERN_ERRNO_CHECK ) +#ifdef __cplusplus +extern "C" { +#endif + extern int errno; +#ifdef __cplusplus +} +#endif + +#endif /* HPUX_EXTERN_ERRNO_CHECK */ diff --git a/fixincludes/tests/base/features.h b/fixincludes/tests/base/features.h new file mode 100644 index 000000000..93838c712 --- /dev/null +++ b/fixincludes/tests/base/features.h @@ -0,0 +1,23 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/features.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( GLIBC_C99_INLINE_1_CHECK ) +#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ +# define __USE_EXTERN_INLINES 1 +#endif +#endif /* GLIBC_C99_INLINE_1_CHECK */ + + +#if defined( GLIBC_C99_INLINE_1A_CHECK ) +#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && (defined __extern_inline || defined __GNUC_GNU_INLINE__) +# define __USE_EXTERN_INLINES 1 +#endif +#endif /* GLIBC_C99_INLINE_1A_CHECK */ diff --git a/fixincludes/tests/base/fixinc-test-limits.h b/fixincludes/tests/base/fixinc-test-limits.h new file mode 100644 index 000000000..0422d0901 --- /dev/null +++ b/fixincludes/tests/base/fixinc-test-limits.h @@ -0,0 +1,19 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/fixinc-test-limits.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX10_CPP_POW_INLINE_CHECK ) + +#endif /* HPUX10_CPP_POW_INLINE_CHECK */ + + +#if defined( IRIX_LIMITS_CONST_CHECK ) +extern __const char limit; /* test limits */ +#endif /* IRIX_LIMITS_CONST_CHECK */ diff --git a/fixincludes/tests/base/hsfs/hsfs_spec.h b/fixincludes/tests/base/hsfs/hsfs_spec.h new file mode 100644 index 000000000..2c67852bc --- /dev/null +++ b/fixincludes/tests/base/hsfs/hsfs_spec.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/hsfs/hsfs_spec.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SUN_BOGUS_IFDEF_CHECK ) +#if __i386__ || __vax__ || __sun4c__ +#endif /* SUN_BOGUS_IFDEF_CHECK */ diff --git a/fixincludes/tests/base/ia64/sys/getppdp.h b/fixincludes/tests/base/ia64/sys/getppdp.h new file mode 100644 index 000000000..80fe99ecd --- /dev/null +++ b/fixincludes/tests/base/ia64/sys/getppdp.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/ia64/sys/getppdp.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_SPU_INFO_CHECK ) +#ifdef _KERNEL +extern union mpinfou spu_info[]; +#endif +#endif /* HPUX_SPU_INFO_CHECK */ diff --git a/fixincludes/tests/base/internal/math_core.h b/fixincludes/tests/base/internal/math_core.h new file mode 100644 index 000000000..f39ac3f90 --- /dev/null +++ b/fixincludes/tests/base/internal/math_core.h @@ -0,0 +1,30 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/internal/math_core.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IRIX___GENERIC1_CHECK ) +extern int isnan(double); +extern int isnanf(float); +extern int isnanl(long double); +#define isnan(x) (sizeof(x) == sizeof(double) ? _isnan(x) \ + : sizeof(x) == sizeof(float) ? _isnanf(x) \ + : _isnanl(x)) + + +#endif /* IRIX___GENERIC1_CHECK */ + + +#if defined( IRIX___GENERIC2_CHECK ) +#define isless(x,y) \ + ((sizeof(x)<=4 && sizeof(y)<=4) ? _islessf(x,y) \ + : (sizeof(x)<=8 && sizeof(y)<=8) ? _isless(x,y) \ + : _islessl(x,y)) + +#endif /* IRIX___GENERIC2_CHECK */ diff --git a/fixincludes/tests/base/internal/sgimacros.h b/fixincludes/tests/base/internal/sgimacros.h new file mode 100644 index 000000000..a491e865a --- /dev/null +++ b/fixincludes/tests/base/internal/sgimacros.h @@ -0,0 +1,17 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/internal/sgimacros.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IRIX___RESTRICT_CHECK ) +#ifdef __c99 +# ifndef __cplusplus +# define __restrict restrict +# endif +#endif /* IRIX___RESTRICT_CHECK */ diff --git a/fixincludes/tests/base/internal/wchar_core.h b/fixincludes/tests/base/internal/wchar_core.h new file mode 100644 index 000000000..9c9fc4e97 --- /dev/null +++ b/fixincludes/tests/base/internal/wchar_core.h @@ -0,0 +1,15 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/internal/wchar_core.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IRIX_WCSFTIME_CHECK ) +#if _NO_XOPEN5 && !defined(__c99) +extern size_t wcsftime(wchar_t *, __SGI_LIBC_NAMESPACE_QUALIFIER size_t, const char *, const struct tm *); +#endif /* IRIX_WCSFTIME_CHECK */ diff --git a/fixincludes/tests/base/inttypes.h b/fixincludes/tests/base/inttypes.h new file mode 100644 index 000000000..3f556856a --- /dev/null +++ b/fixincludes/tests/base/inttypes.h @@ -0,0 +1,18 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/inttypes.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_C99_INTTYPES_CHECK ) +#define UINT8_C(__c) (__c) +#define UINT16_C(__c) (__c) +#define INT32_C(__c) (__c) +#define UINT32_C(__c) __CONCAT__(__c,u) + +#endif /* HPUX_C99_INTTYPES_CHECK */ diff --git a/fixincludes/tests/base/io-quotes-def-1.h b/fixincludes/tests/base/io-quotes-def-1.h new file mode 100644 index 000000000..383ff08f1 --- /dev/null +++ b/fixincludes/tests/base/io-quotes-def-1.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/io-quotes-def-1.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IO_QUOTES_DEF_CHECK_1 ) +#define XX_IO(x) (x<<8|256) +#endif /* IO_QUOTES_DEF_CHECK_1 */ diff --git a/fixincludes/tests/base/iso/math_c99.h b/fixincludes/tests/base/iso/math_c99.h new file mode 100644 index 000000000..4d9b6311f --- /dev/null +++ b/fixincludes/tests/base/iso/math_c99.h @@ -0,0 +1,77 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/iso/math_c99.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS_MATH_1_CHECK ) +#ident "@(#)math_c99.h 1.9 04/11/01 SMI" +#undef HUGE_VAL +#define HUGE_VAL (__builtin_huge_val()) +#undef HUGE_VALF +#define HUGE_VALF (__builtin_huge_valf()) +#undef HUGE_VALL +#define HUGE_VALL (__builtin_huge_vall()) +#endif /* SOLARIS_MATH_1_CHECK */ + + +#if defined( SOLARIS_MATH_2_CHECK ) +#ident "@(#)math_c99.h 1.9 04/11/01 SMI" +#undef INFINITY +#define INFINITY (__builtin_inff()) +#endif /* SOLARIS_MATH_2_CHECK */ + + +#if defined( SOLARIS_MATH_3_CHECK ) +#ident "@(#)math_c99.h 1.9 04/11/01 SMI" +#undef NAN +#define NAN (__builtin_nanf("")) +#endif /* SOLARIS_MATH_3_CHECK */ + + +#if defined( SOLARIS_MATH_4_CHECK ) +#ident "@(#)math_c99.h 1.9 04/11/01 SMI" +#undef fpclassify +#define fpclassify(x) \ + __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, (x)) +#endif /* SOLARIS_MATH_4_CHECK */ + + +#if defined( SOLARIS_MATH_8_CHECK ) +#ident "@(#)math_c99.h 1.9 04/11/01 SMI" +#undef signbit +#define signbit(x) (sizeof(x) == sizeof(float) \ + ? __builtin_signbitf(x) \ + : sizeof(x) == sizeof(long double) \ + ? __builtin_signbitl(x) \ + : __builtin_signbit(x)) +#endif /* SOLARIS_MATH_8_CHECK */ + + +#if defined( SOLARIS_MATH_9_CHECK ) +#ident "@(#)math_c99.h 1.9 04/11/01 SMI" +#undef isgreater +#define isgreater(x, y) __builtin_isgreater(x, y) +#undef isgreaterequal +#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y) +#undef isless +#define isless(x, y) __builtin_isless(x, y) +#undef islessequal +#define islessequal(x, y) __builtin_islessequal(x, y) +#undef islessgreater +#define islessgreater(x, y) __builtin_islessgreater(x, y) +#undef isunordered +#define isunordered(x, y) __builtin_isunordered(x, y) +#endif /* SOLARIS_MATH_9_CHECK */ + + +#if defined( SOLARIS_MATH_10_CHECK ) +#pragma ident "@(#)math_c99.h 1.12 07/01/21 SMI" +#undef isinf +#define isinf(x) __builtin_isinf(x) +#endif /* SOLARIS_MATH_10_CHECK */ diff --git a/fixincludes/tests/base/locale.h b/fixincludes/tests/base/locale.h new file mode 100644 index 000000000..7a7273e10 --- /dev/null +++ b/fixincludes/tests/base/locale.h @@ -0,0 +1,25 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/locale.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( OPENBSD_NULL_DEFINITION_CHECK ) +#ifndef NULL +#ifdef __cplusplus +#ifdef __GNUG__ +#define NULL __null +#else /* ! __GNUG__ */ +#define NULL 0L +#endif /* __GNUG__ */ +#else /* ! __cplusplus */ +#define NULL ((void *)0) +#endif /* __cplusplus */ +#endif /* !NULL */ + +#endif /* OPENBSD_NULL_DEFINITION_CHECK */ diff --git a/fixincludes/tests/base/mach-o/dyld.h b/fixincludes/tests/base/mach-o/dyld.h new file mode 100644 index 000000000..c0620312d --- /dev/null +++ b/fixincludes/tests/base/mach-o/dyld.h @@ -0,0 +1,17 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/mach-o/dyld.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DARWIN_PRIVATE_EXTERN_CHECK ) +extern int _dyld_func_lookup( +const char *dyld_func_name, +unsigned long *address); + +#endif /* DARWIN_PRIVATE_EXTERN_CHECK */ diff --git a/fixincludes/tests/base/mach-o/swap.h b/fixincludes/tests/base/mach-o/swap.h new file mode 100644 index 000000000..1bc65d4c8 --- /dev/null +++ b/fixincludes/tests/base/mach-o/swap.h @@ -0,0 +1,26 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/mach-o/swap.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + +#ifndef FIXINC_WRAP_MACH_O_SWAP_H_DARWIN_EXTERNC +#define FIXINC_WRAP_MACH_O_SWAP_H_DARWIN_EXTERNC 1 + +#ifdef __cplusplus +extern "C" { +#endif + + +#if defined( DARWIN_EXTERNC_CHECK ) +extern void swap_fat_header(); + +#endif /* DARWIN_EXTERNC_CHECK */ +#ifdef __cplusplus +} +#endif + +#endif /* FIXINC_WRAP_MACH_O_SWAP_H_DARWIN_EXTERNC */ diff --git a/fixincludes/tests/base/malloc.h b/fixincludes/tests/base/malloc.h new file mode 100644 index 000000000..3866af8c7 --- /dev/null +++ b/fixincludes/tests/base/malloc.h @@ -0,0 +1,18 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/malloc.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SUN_MALLOC_CHECK ) +typedef void * malloc_t; +void free(); +void* malloc(); +void* calloc(); +void* realloc(); +#endif /* SUN_MALLOC_CHECK */ diff --git a/fixincludes/tests/base/math.h b/fixincludes/tests/base/math.h new file mode 100644 index 000000000..9733744ea --- /dev/null +++ b/fixincludes/tests/base/math.h @@ -0,0 +1,104 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/math.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + +#ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION +#define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1 + +#ifdef __cplusplus +#define exception __math_exception +#endif + + +#if defined( AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_2_CHECK ) +#include <architecture/ppc/math.h> +#endif /* AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_2_CHECK */ + + +#if defined( BROKEN_CABS_CHECK ) +#ifdef __STDC__ + +#else + +#endif + + /* This is a comment + and it ends here. */ + + +#endif /* BROKEN_CABS_CHECK */ + + +#if defined( HPPA_HPUX_FP_MACROS_CHECK ) +#endif /* _INCLUDE_HPUX_SOURCE */ + +#if defined(_INCLUDE_HPUX_SOURCE) || \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) +# define FP_NORMAL 0 +# define FP_ZERO 1 +# define FP_INFINITE 2 +# define FP_SUBNORMAL 3 +# define FP_NAN 4 +#endif + +#ifdef _INCLUDE_HPUX_SOURCE + +#endif /* HPPA_HPUX_FP_MACROS_CHECK */ + + +#if defined( HPUX11_CPP_POW_INLINE_CHECK ) + +#endif /* HPUX11_CPP_POW_INLINE_CHECK */ + + +#if defined( HPUX11_FABSF_CHECK ) +#ifdef _PA_RISC +#ifndef __cplusplus +# define fabsf(x) ((float)fabs((double)(float)(x))) +#endif +#endif +#endif /* HPUX11_FABSF_CHECK */ + + +#if defined( HPUX8_BOGUS_INLINES_CHECK ) +extern "C" int abs(int); + +#endif /* HPUX8_BOGUS_INLINES_CHECK */ + + +#if defined( MATH_EXCEPTION_CHECK ) +typedef struct exception t_math_exception; +#endif /* MATH_EXCEPTION_CHECK */ + + +#if defined( MATH_HUGE_VAL_FROM_DBL_MAX_CHECK ) + +#define HUGE_VAL 3.1415e+9 /* really big */ +#endif /* MATH_HUGE_VAL_FROM_DBL_MAX_CHECK */ + + +#if defined( RS6000_DOUBLE_CHECK ) +#ifndef __cplusplus +extern int class(); +#endif +#endif /* RS6000_DOUBLE_CHECK */ + + +#if defined( STRICT_ANSI_NOT_CTD_CHECK ) +#if 1 && \ +&& defined(mumbling) |& ( !defined(__STRICT_ANSI__)) \ +( !defined(__STRICT_ANSI__) && !defined(_XOPEN_SOURCE) \ +|| !defined(__STRICT_ANSI__) ) /* not std C */ +int foo; +#endif +#endif /* STRICT_ANSI_NOT_CTD_CHECK */ +#ifdef __cplusplus +#undef exception +#endif + +#endif /* FIXINC_WRAP_MATH_H_MATH_EXCEPTION */ diff --git a/fixincludes/tests/base/net/if.h b/fixincludes/tests/base/net/if.h new file mode 100644 index 000000000..4c25423c5 --- /dev/null +++ b/fixincludes/tests/base/net/if.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/net/if.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA_IF_SEMICOLON_CHECK ) + struct sockaddr vmif_paddr; /* protocol address */ +#endif /* ALPHA_IF_SEMICOLON_CHECK */ diff --git a/fixincludes/tests/base/netdnet/dnetdb.h b/fixincludes/tests/base/netdnet/dnetdb.h new file mode 100644 index 000000000..e506c6eab --- /dev/null +++ b/fixincludes/tests/base/netdnet/dnetdb.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/netdnet/dnetdb.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NODEENT_SYNTAX_CHECK ) +char *na_addr ; +#endif /* NODEENT_SYNTAX_CHECK */ diff --git a/fixincludes/tests/base/netinet/in.h b/fixincludes/tests/base/netinet/in.h new file mode 100644 index 000000000..2d7f7b852 --- /dev/null +++ b/fixincludes/tests/base/netinet/in.h @@ -0,0 +1,24 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/netinet/in.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_HTONL_CHECK ) +#if 1 +/* + * Macros for number representation conversion. + */ +#ifndef ntohl +#define ntohl(x) (x) +#define ntohs(x) (x) +#define htonl(x) (x) +#define htons(x) (x) +#endif +#endif /* ! _XOPEN_SOURCE_EXTENDED */ +#endif /* HPUX_HTONL_CHECK */ diff --git a/fixincludes/tests/base/netinet/ip.h b/fixincludes/tests/base/netinet/ip.h new file mode 100644 index 000000000..7b2990352 --- /dev/null +++ b/fixincludes/tests/base/netinet/ip.h @@ -0,0 +1,19 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/netinet/ip.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IP_MISSING_SEMI_CHECK ) +struct mumble { + union { + int x; + }; +}; /* mumbled struct */ + +#endif /* IP_MISSING_SEMI_CHECK */ diff --git a/fixincludes/tests/base/obstack.h b/fixincludes/tests/base/obstack.h new file mode 100644 index 000000000..ea8e8dd1e --- /dev/null +++ b/fixincludes/tests/base/obstack.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/obstack.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( OBSTACK_LVALUE_CAST_CHECK ) +((*((void **) (h)->next_free) = (aptr)), ( (h)->next_free += sizeof (void *))) +#endif /* OBSTACK_LVALUE_CAST_CHECK */ diff --git a/fixincludes/tests/base/pixrect/memvar.h b/fixincludes/tests/base/pixrect/memvar.h new file mode 100644 index 000000000..19230cb33 --- /dev/null +++ b/fixincludes/tests/base/pixrect/memvar.h @@ -0,0 +1,18 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/pixrect/memvar.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SUN_CATMACRO_CHECK ) +#ifdef __STDC__ +# define CAT(a,b) a##b +#else +#define CAT(a,b) a/**/b +#endif +#endif /* SUN_CATMACRO_CHECK */ diff --git a/fixincludes/tests/base/pthread.h b/fixincludes/tests/base/pthread.h new file mode 100644 index 000000000..834f0519e --- /dev/null +++ b/fixincludes/tests/base/pthread.h @@ -0,0 +1,185 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/pthread.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AIX_PTHREAD_CHECK ) +#define PTHREAD_MUTEX_INITIALIZER \ +{...init stuff...} +#endif /* AIX_PTHREAD_CHECK */ + + +#if defined( ALPHA_PTHREAD_CHECK ) +# if defined (_PTHREAD_ENV_DECC) || defined (_PTHREAD_ENV_EPCC) || defined (__PRAGMA_EXTERN_PREFIX) +# define _PTHREAD_USE_PTDNAM_ +# endif +# if defined (_PTHREAD_ENV_DECC) || defined (__PRAGMA_EXTERN_PREFIX) +# define _PTHREAD_USE_PTDNAM_ +# endif +#endif /* ALPHA_PTHREAD_CHECK */ + + +#if defined( ALPHA_PTHREAD_GCC_CHECK ) +# define _PTHREAD_ENV_INTELC +#elif defined (__GNUC__) +# define _PTHREAD_ENV_GCC +#else +# error <pthread.h>: unrecognized compiler. +#endif +#endif /* ALPHA_PTHREAD_GCC_CHECK */ + + +#if defined( ALPHA_PTHREAD_INIT_CHECK ) +/* + * @(#)_RCSfile: pthread.h,v $ _Revision: 1.1.33.21 $ (DEC) _Date: 2000/08/15 15:30:13 $ + */ +#ifndef _PTHREAD_NOMETER_STATIC +# define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, 0, 0, 0, 0, 0, 0 } +# define PTHREAD_COND_INITIALIZER {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, 0, 0, 0, 0 } +# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_, 0, 0, 0, 0 } +# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_, 0, 0 } +#else +# define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, 0, 0, 0, 0, 0, 0 } +# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_, 0, 0, 0, 0 } +# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_, 0, 0 } +#endif + +#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +#define PTHREAD_RWLOCK_INITWITHNAME_NP(_n_,_a_) {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, _n_, _a_, 0, 0, 0, 0, 0, 0, 0 } +#endif /* ALPHA_PTHREAD_INIT_CHECK */ + + +#if defined( GLIBC_MUTEX_INIT_CHECK ) +#define PTHREAD_MUTEX_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0 } } +#ifdef __USE_GNU +# if __WORDSIZE == 64 +# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0 } } +# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0 } } +# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0 } } +# else +# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, 0 } } +# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, 0 } } +# define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, 0 } } +# endif +#endif +# if __WORDSIZE == 64 +# define PTHREAD_RWLOCK_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } +# else +# define PTHREAD_RWLOCK_INITIALIZER \ + { { 0, 0, 0, 0, 0, 0, 0, 0 } } +# endif +# ifdef __USE_GNU +# if __WORDSIZE == 64 +# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } } +# else +# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \ + { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 0 } } +# endif +# endif +#define PTHREAD_COND_INITIALIZER { { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } } +#endif /* GLIBC_MUTEX_INIT_CHECK */ + + +#if defined( IRIX_PTHREAD_INIT_CHECK ) +#define PTHREAD_MUTEX_INITIALIZER { { 0 } } +#define PTHREAD_COND_INITIALIZER { { 0 } } +#define PTHREAD_RWLOCK_INITIALIZER { { 0 } } +#endif /* IRIX_PTHREAD_INIT_CHECK */ + + +#if defined( PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_CHECK ) +extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask); +#endif /* PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_CHECK */ + + +#if defined( SOLARIS_COND_INIT_CHECK ) +#pragma ident "@(#)pthread.h 1.29 01/07/07 SMI" +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_COND_INITIALIZER {{{0}, 0, 0x4356}, 0} /* = DEFAULTCV */ +#else +#define PTHREAD_COND_INITIALIZER {{{0}, 0, 0x4356}, {0}} /* = DEFAULTCV */ +#endif +#endif /* SOLARIS_COND_INIT_CHECK */ + + +#if defined( SOLARIS_MUTEX_INIT_2_CHECK ) +#ident "@(#)pthread.h 1.26 98/04/12 SMI" +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, 0} +#else +#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, {0}} +#endif +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_COND_INITIALIZER {{{0}, 0, 0x4356}, 0} /* DEFAULTCV */ +#else +#define PTHREAD_COND_INITIALIZER {{{0}, 0, 0x4356}, {0}} /* DEFAULTCV */ +#endif +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \ + {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0} +#else +#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \ + {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, {0}} +#endif +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \ + {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0} +#else +#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \ + {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, {0}} +#endif +#endif /* SOLARIS_MUTEX_INIT_2_CHECK */ + + +#if defined( SOLARIS_RWLOCK_INIT_1_CHECK ) +#ident "@(#)pthread.h 1.26 98/04/12 SMI" +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {0, 0, 0}, {0, 0}, {0, 0}} +#else +#define PTHREAD_RWLOCK_INITIALIZER {0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}} +#endif +#endif /* SOLARIS_RWLOCK_INIT_1_CHECK */ + + +#if defined( SOLARIS_ONCE_INIT_1_CHECK ) +#pragma ident "@(#)pthread.h 1.37 04/09/28 SMI" +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_ONCE_INIT {{0, 0, 0, PTHREAD_ONCE_NOTDONE}} +#else +#define PTHREAD_ONCE_INIT {{{0}, {0}, {0}, {PTHREAD_ONCE_NOTDONE}}} +#endif +#endif /* SOLARIS_ONCE_INIT_1_CHECK */ + + +#if defined( SOLARIS_ONCE_INIT_2_CHECK ) +#ident "@(#)pthread.h 1.26 98/04/12 SMI" +#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) +#define PTHREAD_ONCE_INIT {{0, 0, 0, PTHREAD_ONCE_NOTDONE}} +#else +#define PTHREAD_ONCE_INIT {{{0}, {0}, {0}, {PTHREAD_ONCE_NOTDONE}}} +#endif + +#endif /* SOLARIS_ONCE_INIT_2_CHECK */ + + +#if defined( THREAD_KEYWORD_CHECK ) +extern int pthread_create (pthread_t *__restrict __thr, +extern int pthread_kill (pthread_t __thr, int __signo); +extern int pthread_cancel (pthread_t __thr); +#endif /* THREAD_KEYWORD_CHECK */ diff --git a/fixincludes/tests/base/reg_types.h b/fixincludes/tests/base/reg_types.h new file mode 100644 index 000000000..950dabb26 --- /dev/null +++ b/fixincludes/tests/base/reg_types.h @@ -0,0 +1,20 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/reg_types.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( OSF_NAMESPACE_A_CHECK ) +typedef struct { + int stuff, mo_suff; +} __regex_t; +extern __regex_t re; +extern __regoff_t ro; +extern __regmatch_t rm; + +#endif /* OSF_NAMESPACE_A_CHECK */ diff --git a/fixincludes/tests/base/regex.h b/fixincludes/tests/base/regex.h new file mode 100644 index 000000000..304b790f4 --- /dev/null +++ b/fixincludes/tests/base/regex.h @@ -0,0 +1,17 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/regex.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( OSF_NAMESPACE_C_CHECK ) +#include <reg_types.h> +typedef __regex_t regex_t; +typedef __regoff_t regoff_t; +typedef __regmatch_t regmatch_t; +#endif /* OSF_NAMESPACE_C_CHECK */ diff --git a/fixincludes/tests/base/regexp.h b/fixincludes/tests/base/regexp.h new file mode 100644 index 000000000..35ec04942 --- /dev/null +++ b/fixincludes/tests/base/regexp.h @@ -0,0 +1,18 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/regexp.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SVR4_UNDECLARED_GETRNGE_CHECK ) +static int size; +static int getrnge (); +/* stuff which calls getrnge() */ +static getrnge() +{} +#endif /* SVR4_UNDECLARED_GETRNGE_CHECK */ diff --git a/fixincludes/tests/base/rpc/auth.h b/fixincludes/tests/base/rpc/auth.h new file mode 100644 index 000000000..42ba84707 --- /dev/null +++ b/fixincludes/tests/base/rpc/auth.h @@ -0,0 +1,26 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rpc/auth.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( STRUCT_SOCKADDR_CHECK ) +struct sockaddr; +extern AUTH* authdes_create( struct sockaddr* ); +#endif /* STRUCT_SOCKADDR_CHECK */ + + +#if defined( SUN_AUTH_PROTO_CHECK ) +struct auth_t { +#ifdef __cplusplus + int (*name)(...); /* C++ bad */ +#else + int (*name)(); /* C++ bad */ +#endif +}; +#endif /* SUN_AUTH_PROTO_CHECK */ diff --git a/fixincludes/tests/base/rpc/rpc.h b/fixincludes/tests/base/rpc/rpc.h new file mode 100644 index 000000000..2e7847897 --- /dev/null +++ b/fixincludes/tests/base/rpc/rpc.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rpc/rpc.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NESTED_AUTH_DES_CHECK ) +/*#include <rpc/auth_des.h> */ /* skip this */ +#endif /* NESTED_AUTH_DES_CHECK */ diff --git a/fixincludes/tests/base/rpc/xdr.h b/fixincludes/tests/base/rpc/xdr.h new file mode 100644 index 000000000..7b9f9bae9 --- /dev/null +++ b/fixincludes/tests/base/rpc/xdr.h @@ -0,0 +1,25 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rpc/xdr.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( RPC_XDR_LVALUE_CAST_A_CHECK ) +#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) +#endif /* RPC_XDR_LVALUE_CAST_A_CHECK */ + + +#if defined( RPC_XDR_LVALUE_CAST_B_CHECK ) +#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) +#endif /* RPC_XDR_LVALUE_CAST_B_CHECK */ + + +#if defined( STRUCT_FILE_CHECK ) +struct __file_s; +extern void xdrstdio_create( struct __file_s* ); +#endif /* STRUCT_FILE_CHECK */ diff --git a/fixincludes/tests/base/rpcsvc/rstat.h b/fixincludes/tests/base/rpcsvc/rstat.h new file mode 100644 index 000000000..05dc65b66 --- /dev/null +++ b/fixincludes/tests/base/rpcsvc/rstat.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rpcsvc/rstat.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( STATSSWTCH_CHECK ) +struct statswtch { + int boottime; +}; +#endif /* STATSSWTCH_CHECK */ diff --git a/fixincludes/tests/base/rpcsvc/rusers.h b/fixincludes/tests/base/rpcsvc/rusers.h new file mode 100644 index 000000000..727c40925 --- /dev/null +++ b/fixincludes/tests/base/rpcsvc/rusers.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/rpcsvc/rusers.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SUN_RUSERS_SEMI_CHECK ) +struct mumble + int _cnt; +}; +#endif /* SUN_RUSERS_SEMI_CHECK */ diff --git a/fixincludes/tests/base/signal.h b/fixincludes/tests/base/signal.h new file mode 100644 index 000000000..1c4517e2c --- /dev/null +++ b/fixincludes/tests/base/signal.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/signal.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NETBSD_C99_INLINE_1_CHECK ) +extern +#ifdef __GNUC_STDC_INLINE__ +__attribute__((__gnu_inline__)) +#endif +__inline int +sigaddset(sigset_t *set, int signo) +{} +#endif /* NETBSD_C99_INLINE_1_CHECK */ + + +#if defined( NETBSD_C99_INLINE_2_CHECK ) +#ifdef __GNUC_STDC_INLINE__ +#define _SIGINLINE extern __attribute__((__gnu_inline__)) __inline +#else +#define _SIGINLINE extern __inline +#endif +#endif /* NETBSD_C99_INLINE_2_CHECK */ diff --git a/fixincludes/tests/base/sparc/asm_linkage.h b/fixincludes/tests/base/sparc/asm_linkage.h new file mode 100644 index 000000000..5690f7789 --- /dev/null +++ b/fixincludes/tests/base/sparc/asm_linkage.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sparc/asm_linkage.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( KANDR_CONCAT_CHECK ) +#define __CONCAT__(a,b) a##b +#endif /* KANDR_CONCAT_CHECK */ diff --git a/fixincludes/tests/base/standards.h b/fixincludes/tests/base/standards.h new file mode 100644 index 000000000..fccf8063f --- /dev/null +++ b/fixincludes/tests/base/standards.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/standards.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA___EXTERN_PREFIX_STANDARDS_CHECK ) +#if (_ISO_C_SOURCE>=19990L) && !defined(_LIBC_POLLUTION_H_) && !defined(__DECC) && !defined(__PRAGMA_EXTERN_PREFIX) +#endif /* ALPHA___EXTERN_PREFIX_STANDARDS_CHECK */ diff --git a/fixincludes/tests/base/stdarg.h b/fixincludes/tests/base/stdarg.h new file mode 100644 index 000000000..686d0b3d6 --- /dev/null +++ b/fixincludes/tests/base/stdarg.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdarg.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( OPENBSD_VA_START_CHECK ) +#define va_start(v,l) __builtin_va_start((v),l) +#endif /* OPENBSD_VA_START_CHECK */ diff --git a/fixincludes/tests/base/stdint-aix.h b/fixincludes/tests/base/stdint-aix.h new file mode 100644 index 000000000..1560e75d6 --- /dev/null +++ b/fixincludes/tests/base/stdint-aix.h @@ -0,0 +1,48 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdint-aix.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AIX_STDINT_1_CHECK ) +#define UINT8_MAX (255) +#define UINT16_MAX (65535) +#endif /* AIX_STDINT_1_CHECK */ + + +#if defined( AIX_STDINT_2_CHECK ) +#define INTPTR_MIN (-INTPTR_MAX-1) +#define INTPTR_MAX 9223372036854775807L +#define UINTPTR_MAX 18446744073709551615UL +#else +#define INTPTR_MIN (-INTPTR_MAX-1) +#define INTPTR_MAX 2147483647L +#define UINTPTR_MAX 4294967295UL +#endif /* AIX_STDINT_2_CHECK */ + + +#if defined( AIX_STDINT_3_CHECK ) +#define PTRDIFF_MIN (-9223372036854775807L - 1) +#define PTRDIFF_MAX 9223372036854775807L +#else +#define PTRDIFF_MIN (-2147483647L - 1) +#define PTRDIFF_MAX 2147483647L +#endif /* AIX_STDINT_3_CHECK */ + + +#if defined( AIX_STDINT_4_CHECK ) +#define SIZE_MAX 18446744073709551615UL +#else +#define SIZE_MAX 4294967295UL +#endif /* AIX_STDINT_4_CHECK */ + + +#if defined( AIX_STDINT_5_CHECK ) +#define UINT8_C(c) c +#define UINT16_C(c) c +#endif /* AIX_STDINT_5_CHECK */ diff --git a/fixincludes/tests/base/stdint-darwin.h b/fixincludes/tests/base/stdint-darwin.h new file mode 100644 index 000000000..7a5d6dadf --- /dev/null +++ b/fixincludes/tests/base/stdint-darwin.h @@ -0,0 +1,79 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdint-darwin.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DARWIN_STDINT_1_CHECK ) +#define UINT8_C(v) v +#define UINT16_C(v) v +#endif /* DARWIN_STDINT_1_CHECK */ + + +#if defined( DARWIN_STDINT_2_CHECK ) +#if __WORDSIZE == 64 +#define INTPTR_MAX 9223372036854775807L +#define INTPTR_MIN (-INTPTR_MAX-1) +#else +#define INTPTR_MAX 2147483647L +#define INTPTR_MIN (-INTPTR_MAX-1) +#endif +#endif /* DARWIN_STDINT_2_CHECK */ + + +#if defined( DARWIN_STDINT_3_CHECK ) +#if __WORDSIZE == 64 +#define UINTPTR_MAX 18446744073709551615UL +#else +#define UINTPTR_MAX 4294967295UL +#endif +#endif /* DARWIN_STDINT_3_CHECK */ + + +#if defined( DARWIN_STDINT_4_CHECK ) +#if __WORDSIZE == 64 +#define SIZE_MAX 18446744073709551615UL +#else +#define SIZE_MAX 4294967295UL +#endif +#endif /* DARWIN_STDINT_4_CHECK */ + + +#if defined( DARWIN_STDINT_5_CHECK ) +#if __WORDSIZE == 64 +#define INTMAX_MIN (-9223372036854775807L - 1) +#define INTMAX_MAX 9223372036854775807L +#define UINTMAX_MAX 18446744073709551615UL +#else +#define INTMAX_MIN (-9223372036854775807LL - 1) +#define INTMAX_MAX 9223372036854775807LL +#define UINTMAX_MAX 18446744073709551615ULL +#endif +#endif /* DARWIN_STDINT_5_CHECK */ + + +#if defined( DARWIN_STDINT_6_CHECK ) +#if __WORDSIZE == 64 +#define PTRDIFF_MIN (-9223372036854775807L - 1) +#define PTRDIFF_MAX 9223372036854775807L +#else +#define PTRDIFF_MIN (-2147483647 - 1) +#define PTRDIFF_MAX 2147483647 +#endif +#endif /* DARWIN_STDINT_6_CHECK */ + + +#if defined( DARWIN_STDINT_7_CHECK ) +#if __WORDSIZE == 64 +#define INTMAX_C(v) (v ## L) +#define UINTMAX_C(v) (v ## UL) +#else +#define INTMAX_C(v) (v ## LL) +#define UINTMAX_C(v) (v ## ULL) +#endif +#endif /* DARWIN_STDINT_7_CHECK */ diff --git a/fixincludes/tests/base/stdint-hpux11.h b/fixincludes/tests/base/stdint-hpux11.h new file mode 100644 index 000000000..6e8ea1349 --- /dev/null +++ b/fixincludes/tests/base/stdint-hpux11.h @@ -0,0 +1,36 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdint-hpux11.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_C99_INTPTR_CHECK ) +#define PTRDIFF_MAX (2147483647l) +#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) +#define INTPTR_MAX (2147483647l) +#define INTPTR_MIN (-INTPTR_MAX - 1) +#define UINTPTR_MAX (4294967295ul) +#define SIZE_MAX (4294967295ul) + +#endif /* HPUX_C99_INTPTR_CHECK */ + + +#if defined( HPUX_C99_INTTYPES2_CHECK ) +#define INT8_C(__c) (__c) +#define UINT8_C(__c) (__c) +#define INT16_C(__c) (__c) +#define UINT16_C(__c) (__c) + +#endif /* HPUX_C99_INTTYPES2_CHECK */ + + +#if defined( HPUX_STDINT_LEAST_FAST_CHECK ) +# define UINT_FAST64_MAX __UINT64_MAX__ +# define UINT_LEAST64_MAX __UINT64_MAX__ + +#endif /* HPUX_STDINT_LEAST_FAST_CHECK */ diff --git a/fixincludes/tests/base/stdint-irix65.h b/fixincludes/tests/base/stdint-irix65.h new file mode 100644 index 000000000..d1757fb55 --- /dev/null +++ b/fixincludes/tests/base/stdint-irix65.h @@ -0,0 +1,40 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdint-irix65.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IRIX_STDINT_C99_TYPES_CHECK ) +#define INT64_MIN (-0x7fffffffffffffffLL - 1) +#define INT64_MAX 0x7fffffffffffffffLL +#define UINT32_MAX 0xffffffffU +#define UINT64_MAX 0xffffffffffffffffULL +#define INTPTR_MIN (-0x7fffffffL - 1) +#define INTPTR_MAX 0x7fffffffL +#define UINTPTR_MAX 0xffffffffUL +#define INTPTR_MIN (-0x7fffffffffffffffL - 1) +#define INTPTR_MAX 0x7fffffffffffffffL +#define UINTPTR_MAX 0xffffffffffffffffUL +#define PTRDIFF_MIN (-0x7fffffffffffffffL - 1) +#define PTRDIFF_MAX 0x7fffffffffffffffL +#define SIZE_MAX 0xffffffffffffffffUL +#endif /* IRIX_STDINT_C99_TYPES_CHECK */ + + +#if defined( IRIX_STDINT_C99_MACROS_CHECK ) +#define INT8_C(x) (x) +#define INT16_C(x) (x) +#define INT32_C(x) (x) +#define INT64_C(x) (x ## LL) +#define UINT8_C(x) (x) +#define UINT16_C(x) (x) +#define UINT32_C(x) (x ## U) +#define UINT64_C(x) (x ## ULL) +#define INTMAX_C(x) (x ## LL) +#define UINTMAX_C(x) (x ## ULL) +#endif /* IRIX_STDINT_C99_MACROS_CHECK */ diff --git a/fixincludes/tests/base/stdint-newlib.h b/fixincludes/tests/base/stdint-newlib.h new file mode 100644 index 000000000..451a4756a --- /dev/null +++ b/fixincludes/tests/base/stdint-newlib.h @@ -0,0 +1,42 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdint-newlib.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( NEWLIB_STDINT_1_CHECK ) +/* @todo - Add support for wint_t types. */ +#define INT32_MIN (-INT32_MAX - 1) +#define INT32_MAX __INT32_MAX__ +#define UINT32_MAX __UINT32_MAX__ +#define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1) +#define INT_LEAST32_MAX __INT_LEAST32_MAX__ +#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ +#define INT_FAST8_MIN (-INT_FAST8_MAX - 1) +#define INT_FAST8_MAX __INT_FAST8_MAX__ +#define UINT_FAST8_MAX __UINT_FAST8_MAX__ +#define SIZE_MAX __SIZE_MAX__ +#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) +#define PTRDIFF_MAX __PTRDIFF_MAX__ +#define UINT8_C(c) __UINT8_C(c) +#define UINT16_C(c) __UINT16_C(c) +#endif /* NEWLIB_STDINT_1_CHECK */ + + +#if defined( NEWLIB_STDINT_2_CHECK ) +/* @todo - Add support for wint_t types. */ +#define INTMAX_MAX __INTMAX_MAX__ +#define INTMAX_MIN (-INTMAX_MAX - 1) +#define UINTMAX_MAX __UINTMAX_MAX__ +#define WCHAR_MAX __WCHAR_MAX__ +#define WCHAR_MIN __WCHAR_MIN__ +#define WINT_MAX __WINT_MAX__ +#define WINT_MIN __WINT_MIN__ + +/** Macros for minimum-width integer constant expressions */ +#endif /* NEWLIB_STDINT_2_CHECK */ diff --git a/fixincludes/tests/base/stdint.h b/fixincludes/tests/base/stdint.h new file mode 100644 index 000000000..3d897f88f --- /dev/null +++ b/fixincludes/tests/base/stdint.h @@ -0,0 +1,23 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdint.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( GLIBC_STDINT_CHECK ) +/* This file is part of the GNU C Library. */ +# define UINT8_C(c) c +# define UINT16_C(c) c +#endif /* GLIBC_STDINT_CHECK */ + + +#if defined( IRIX_STDINT_C99_MODE_CHECK ) +#if 0 +#error This header file is to be used only for c99 mode compilations +#else +#endif /* IRIX_STDINT_C99_MODE_CHECK */ diff --git a/fixincludes/tests/base/stdio.h b/fixincludes/tests/base/stdio.h new file mode 100644 index 000000000..5fda7bd34 --- /dev/null +++ b/fixincludes/tests/base/stdio.h @@ -0,0 +1,96 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdio.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + +#ifndef FIXINC_WRAP_STDIO_H_STDIO_STDARG_H +#define FIXINC_WRAP_STDIO_H_STDIO_STDARG_H 1 + +#define __need___va_list +#include <stdarg.h> + + +#if defined( AAB_AIX_STDIO_CHECK ) + +#endif /* AAB_AIX_STDIO_CHECK */ + + +#if defined( ALPHA_GETOPT_CHECK ) +extern int getopt(int, char *const[], const char *); +#endif /* ALPHA_GETOPT_CHECK */ + + +#if defined( BSD_STDIO_ATTRS_CONFLICT_CHECK ) +#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X) +#define _BSD_STRINGX(_BSD_X) #_BSD_X +int vfscanf(FILE *, const char *, __builtin_va_list) __asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf"); +#endif /* BSD_STDIO_ATTRS_CONFLICT_CHECK */ + + +#if defined( HPUX10_STDIO_DECLARATIONS_CHECK ) +# define _iob __iob + +#endif /* HPUX10_STDIO_DECLARATIONS_CHECK */ + + +#if defined( HPUX11_SNPRINTF_CHECK ) +extern int snprintf(char *, size_t, const char *, ...); +extern int snprintf(char *, _hpux_size_t, const char *, ...); +extern int snprintf(char *, _hpux_size_t, const char *, ...); +#endif /* HPUX11_SNPRINTF_CHECK */ + + +#if defined( HPUX11_VSNPRINTF_CHECK ) +extern int vsnprintf(char *, _hpux_size_t, const char *, __gnuc_va_list); +#endif /* HPUX11_VSNPRINTF_CHECK */ + + +#if defined( IRIX_STDIO_DUMMY_VA_LIST_CHECK ) +extern int printf( const char *, __gnuc_va_list ); +#endif /* IRIX_STDIO_DUMMY_VA_LIST_CHECK */ + + +#if defined( READ_RET_TYPE_CHECK ) +extern unsigned int fread(), fwrite(); +extern int fclose(), fflush(), foo(); +#endif /* READ_RET_TYPE_CHECK */ + + +#if defined( RS6000_PARAM_CHECK ) +extern int rename(const char *_old, const char *_new); +#endif /* RS6000_PARAM_CHECK */ + + +#if defined( STDIO_STDARG_H_CHECK ) + +#endif /* STDIO_STDARG_H_CHECK */ + + +#if defined( STDIO_DUMMY_VA_LIST_CHECK ) +extern void mumble( __gnuc_va_list); +#endif /* STDIO_DUMMY_VA_LIST_CHECK */ + + +#if defined( ULTRIX_CONST_CHECK ) +extern void perror( const char *__s ); +extern int fputs( const char *__s, FILE *); +extern size_t fwrite( const void *__ptr, size_t, size_t, FILE *); +extern int fscanf( FILE *__stream, const char *__format, ...); +extern int scanf( const char *__format, ...); + +#endif /* ULTRIX_CONST_CHECK */ + + +#if defined( ULTRIX_CONST2_CHECK ) +extern FILE *fopen( const char *__filename, const char *__type ); +extern int sscanf( const char *__s, const char *__format, ...); +extern FILE *popen( const char *, const char *); +extern char *tempnam( const char *, const char *); + +#endif /* ULTRIX_CONST2_CHECK */ + +#endif /* FIXINC_WRAP_STDIO_H_STDIO_STDARG_H */ diff --git a/fixincludes/tests/base/stdio_tag.h b/fixincludes/tests/base/stdio_tag.h new file mode 100644 index 000000000..788de24b2 --- /dev/null +++ b/fixincludes/tests/base/stdio_tag.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdio_tag.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS_STDIO_TAG_CHECK ) +#if 0 +#endif /* SOLARIS_STDIO_TAG_CHECK */ diff --git a/fixincludes/tests/base/stdlib.h b/fixincludes/tests/base/stdlib.h new file mode 100644 index 000000000..d104cc7d5 --- /dev/null +++ b/fixincludes/tests/base/stdlib.h @@ -0,0 +1,58 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/stdlib.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX11_ABS_CHECK ) +#if !defined(_MATH_INCLUDED) || defined(__GNUG__) +#endif /* HPUX11_ABS_CHECK */ + + +#if defined( HPUX_LONG_DOUBLE_CHECK ) +extern long double strtold(const char *, char **); + +#endif /* HPUX_LONG_DOUBLE_CHECK */ + + +#if defined( HPUX_LONG_DOUBLE_2_CHECK ) +# if !defined(__ia64) || !defined(_PROTOTYPES) || defined(_LONG_DOUBLE_STRUCT) + +#endif /* HPUX_LONG_DOUBLE_2_CHECK */ + + +#if defined( INT_ABORT_FREE_AND_EXIT_CHECK ) +extern void abort(int); +extern void free(void*); +extern void exit(void*); +#endif /* INT_ABORT_FREE_AND_EXIT_CHECK */ + + +#if defined( LYNXOS_MISSING_PUTENV_CHECK ) +extern char *getenv _AP((const char *)); +extern int putenv _AP((char *)); +#endif /* LYNXOS_MISSING_PUTENV_CHECK */ + + +#if defined( SVR4_GETCWD_CHECK ) +extern char* getcwd(char *, size_t); +#endif /* SVR4_GETCWD_CHECK */ + + +#if defined( SVR4_PROFIL_CHECK ) +profil(unsigned short *, size_t, int, unsigned int); +#endif /* SVR4_PROFIL_CHECK */ + + +#if defined( SYSZ_STDLIB_FOR_SUN_CHECK ) +extern void * calloc(size_t); +extern void * malloc(size_t); +extern void * realloc(void*,size_t); +extern void * bsearch(void*,size_t,size_t); + +#endif /* SYSZ_STDLIB_FOR_SUN_CHECK */ diff --git a/fixincludes/tests/base/string.h b/fixincludes/tests/base/string.h new file mode 100644 index 000000000..5156cd5c3 --- /dev/null +++ b/fixincludes/tests/base/string.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/string.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SVR4_DISABLE_OPT_CHECK ) + +#endif /* SVR4_DISABLE_OPT_CHECK */ diff --git a/fixincludes/tests/base/strings.h b/fixincludes/tests/base/strings.h new file mode 100644 index 000000000..60b73ac6e --- /dev/null +++ b/fixincludes/tests/base/strings.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/strings.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SUNOS_STRLEN_CHECK ) + __SIZE_TYPE__ strlen(); /* string length */ +#endif /* SUNOS_STRLEN_CHECK */ diff --git a/fixincludes/tests/base/sundev/vuid_event.h b/fixincludes/tests/base/sundev/vuid_event.h new file mode 100644 index 000000000..0f35cb8ad --- /dev/null +++ b/fixincludes/tests/base/sundev/vuid_event.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sundev/vuid_event.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( BADQUOTE_CHECK ) +/* does not have matched single quotes */ +#endif /* BADQUOTE_CHECK */ diff --git a/fixincludes/tests/base/sunwindow/win_lock.h b/fixincludes/tests/base/sunwindow/win_lock.h new file mode 100644 index 000000000..8cd0b19d1 --- /dev/null +++ b/fixincludes/tests/base/sunwindow/win_lock.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sunwindow/win_lock.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ECD_CURSOR_CHECK ) +#ifdef ecd_cursor +#error bogus +#endif /* ecd+cursor */ +#endif /* ECD_CURSOR_CHECK */ diff --git a/fixincludes/tests/base/sym.h b/fixincludes/tests/base/sym.h new file mode 100644 index 000000000..0c811a3aa --- /dev/null +++ b/fixincludes/tests/base/sym.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sym.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA_PARENS_CHECK ) +#ifndef __mips64 /* bogus */ +extern int foo; +#endif +#endif /* ALPHA_PARENS_CHECK */ diff --git a/fixincludes/tests/base/sys/_inttypes.h b/fixincludes/tests/base/sys/_inttypes.h new file mode 100644 index 000000000..dab8961f6 --- /dev/null +++ b/fixincludes/tests/base/sys/_inttypes.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/_inttypes.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_INTTYPE_INT8_T_CHECK ) +typedef signed char int_least8_t; +typedef signed char int8_t; + +#endif /* HPUX_INTTYPE_INT8_T_CHECK */ diff --git a/fixincludes/tests/base/sys/asm.h b/fixincludes/tests/base/sys/asm.h new file mode 100644 index 000000000..658830a7b --- /dev/null +++ b/fixincludes/tests/base/sys/asm.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/asm.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( IRIX_ASM_APOSTROPHE_CHECK ) + # and we are on vacation +#endif /* IRIX_ASM_APOSTROPHE_CHECK */ diff --git a/fixincludes/tests/base/sys/cdefs.h b/fixincludes/tests/base/sys/cdefs.h new file mode 100644 index 000000000..6ccd0b773 --- /dev/null +++ b/fixincludes/tests/base/sys/cdefs.h @@ -0,0 +1,24 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/cdefs.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( FREEBSD_GCC3_BREAKAGE_CHECK ) +#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 +#endif /* FREEBSD_GCC3_BREAKAGE_CHECK */ + + +#if defined( FREEBSD_GCC4_BREAKAGE_CHECK ) +#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3 +#endif /* FREEBSD_GCC4_BREAKAGE_CHECK */ + + +#if defined( NETBSD_EXTRA_SEMICOLON_CHECK ) +#define __END_DECLS } +#endif /* NETBSD_EXTRA_SEMICOLON_CHECK */ diff --git a/fixincludes/tests/base/sys/feature_tests.h b/fixincludes/tests/base/sys/feature_tests.h new file mode 100644 index 000000000..3bb803c28 --- /dev/null +++ b/fixincludes/tests/base/sys/feature_tests.h @@ -0,0 +1,18 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/feature_tests.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS___RESTRICT_CHECK ) +#ifdef __cplusplus +#define _RESTRICT_KYWD __restrict +#else +#define _RESTRICT_KYWD restrict +#endif +#endif /* SOLARIS___RESTRICT_CHECK */ diff --git a/fixincludes/tests/base/sys/file.h b/fixincludes/tests/base/sys/file.h new file mode 100644 index 000000000..ba56a414c --- /dev/null +++ b/fixincludes/tests/base/sys/file.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/file.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HP_SYSFILE_CHECK ) +extern void foo(struct file *, ...); /* HPUX_SOURCE - bad varargs */ +#endif /* HP_SYSFILE_CHECK */ diff --git a/fixincludes/tests/base/sys/int_const.h b/fixincludes/tests/base/sys/int_const.h new file mode 100644 index 000000000..6f71a15ec --- /dev/null +++ b/fixincludes/tests/base/sys/int_const.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/int_const.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS_INT_CONST_CHECK ) +#define UINT8_C(c) (c) +/* CSTYLED */ +#define UINT16_C(c) (c) +#endif /* SOLARIS_INT_CONST_CHECK */ diff --git a/fixincludes/tests/base/sys/int_limits.h b/fixincludes/tests/base/sys/int_limits.h new file mode 100644 index 000000000..bcacd68a9 --- /dev/null +++ b/fixincludes/tests/base/sys/int_limits.h @@ -0,0 +1,27 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/int_limits.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS_INT_LIMITS_1_CHECK ) +#define UINT8_MAX (255) +#define UINT16_MAX (65535) +#endif /* SOLARIS_INT_LIMITS_1_CHECK */ + + +#if defined( SOLARIS_INT_LIMITS_2_CHECK ) +#define INT_FAST16_MAX INT32_MAX +#define UINT_FAST16_MAX UINT32_MAX +#define INT_FAST16_MIN INT32_MIN +#endif /* SOLARIS_INT_LIMITS_2_CHECK */ + + +#if defined( SOLARIS_INT_LIMITS_3_CHECK ) +#define SIZE_MAX 4294967295U +#endif /* SOLARIS_INT_LIMITS_3_CHECK */ diff --git a/fixincludes/tests/base/sys/int_types.h b/fixincludes/tests/base/sys/int_types.h new file mode 100644 index 000000000..39bb68acd --- /dev/null +++ b/fixincludes/tests/base/sys/int_types.h @@ -0,0 +1,20 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/int_types.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS_INT_TYPES_CHECK ) +#if (defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__)) && !defined(_NO_LONGLONG) +typedef long long int64_t; +#endif + +#if defined(_LP64) || ((defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__)) && !defined(_NO_LONGLONG)) +typedef int64_t intmax_t; +#endif +#endif /* SOLARIS_INT_TYPES_CHECK */ diff --git a/fixincludes/tests/base/sys/machine.h b/fixincludes/tests/base/sys/machine.h new file mode 100644 index 000000000..a03741372 --- /dev/null +++ b/fixincludes/tests/base/sys/machine.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/machine.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AIX_SYSMACHINE_CHECK ) +#define FOO bar \ + baz \ + bat +#endif /* AIX_SYSMACHINE_CHECK */ diff --git a/fixincludes/tests/base/sys/mman.h b/fixincludes/tests/base/sys/mman.h new file mode 100644 index 000000000..8fa2fb18c --- /dev/null +++ b/fixincludes/tests/base/sys/mman.h @@ -0,0 +1,25 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/mman.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + +#ifndef FIXINC_WRAP_SYS_MMAN_H_CXX_UNREADY +#define FIXINC_WRAP_SYS_MMAN_H_CXX_UNREADY 1 + +#ifdef __cplusplus +extern "C" { +#endif + + +#if defined( CXX_UNREADY_CHECK ) +extern void* malloc( size_t ); +#endif /* CXX_UNREADY_CHECK */ +#ifdef __cplusplus +} +#endif + +#endif /* FIXINC_WRAP_SYS_MMAN_H_CXX_UNREADY */ diff --git a/fixincludes/tests/base/sys/pthread.h b/fixincludes/tests/base/sys/pthread.h new file mode 100644 index 000000000..8b893cfe5 --- /dev/null +++ b/fixincludes/tests/base/sys/pthread.h @@ -0,0 +1,27 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/pthread.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX11_PTHREAD_CONST_CHECK ) +#define __POINTER_SET ((void *) 1L) +#endif /* HPUX11_PTHREAD_CONST_CHECK */ + + +#if defined( HPUX_PTHREAD_INITIALIZERS_CHECK ) +#define PTHREAD_MUTEX_INITIALIZER { \ + { __PTHREAD_MUTEX_VALID, 0 }, \ + (PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE), \ + __SPNLCK_INITIALIZER, \ + { 0, 0, -1, 0 }, \ + { 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 }, \ + { 0, 0 } \ +} + +#endif /* HPUX_PTHREAD_INITIALIZERS_CHECK */ diff --git a/fixincludes/tests/base/sys/signal.h b/fixincludes/tests/base/sys/signal.h new file mode 100644 index 000000000..7a9ecb113 --- /dev/null +++ b/fixincludes/tests/base/sys/signal.h @@ -0,0 +1,30 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/signal.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AIX_VOLATILE_CHECK ) +typedef int sig_atomic_t; +#endif /* AIX_VOLATILE_CHECK */ + + +#if defined( SUN_SIGNAL_CHECK ) +#ifdef __cplusplus +void (*signal(...))(...); +#else +void (*signal())(); +#endif +#endif /* SUN_SIGNAL_CHECK */ + + +#if defined( SVR4_SIGHANDLER_TYPE_CHECK ) +#define SIG_DFL (void (*)(int))0 +#define SIG_IGN (void (*)(int))0 + +#endif /* SVR4_SIGHANDLER_TYPE_CHECK */ diff --git a/fixincludes/tests/base/sys/socket.h b/fixincludes/tests/base/sys/socket.h new file mode 100644 index 000000000..3c6e42027 --- /dev/null +++ b/fixincludes/tests/base/sys/socket.h @@ -0,0 +1,37 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/socket.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX11_EXTERN_SENDFILE_CHECK ) +#ifndef _APP32_64BIT_OFF_T + extern sbsize_t sendfile __((int, int, off_t, bsize_t, + const struct iovec *, int)); +#endif + +#endif /* HPUX11_EXTERN_SENDFILE_CHECK */ + + +#if defined( HPUX11_EXTERN_SENDPATH_CHECK ) +#ifndef _APP32_64BIT_OFF_T + extern sbsize_t sendpath __((int, int, off_t, bsize_t, + const struct iovec *, int)); +#endif + +#endif /* HPUX11_EXTERN_SENDPATH_CHECK */ + + +#if defined( IRIX_SOCKLEN_T_CHECK ) +#define _SOCKLEN_T +#if _NO_XOPEN4 && _NO_XOPEN5 +typedef int socklen_t; +#else +typedef u_int32_t socklen_t; +#endif /* _NO_XOPEN4 && _NO_XOPEN5 */ +#endif /* IRIX_SOCKLEN_T_CHECK */ diff --git a/fixincludes/tests/base/sys/spinlock.h b/fixincludes/tests/base/sys/spinlock.h new file mode 100644 index 000000000..a25f65011 --- /dev/null +++ b/fixincludes/tests/base/sys/spinlock.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/spinlock.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HP_INLINE_CHECK ) + # include <machine/mumble.h> +#endif /* HP_INLINE_CHECK */ diff --git a/fixincludes/tests/base/sys/stat.h b/fixincludes/tests/base/sys/stat.h new file mode 100644 index 000000000..5c254ea94 --- /dev/null +++ b/fixincludes/tests/base/sys/stat.h @@ -0,0 +1,40 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/stat.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA___EXTERN_PREFIX_SYS_STAT_CHECK ) +# if defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX) +#endif /* ALPHA___EXTERN_PREFIX_SYS_STAT_CHECK */ + + +#if defined( GLIBC_C99_INLINE_2_CHECK ) +#ifdef __GNUC_GNU_INLINE__ +extern +#endif +__inline__ int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2)); +#ifdef __GNUC_GNU_INLINE__ +extern +#endif +__inline__ int +__NTH (fstat64 (int __fd, struct stat64 *__statbuf)) +{} +#endif /* GLIBC_C99_INLINE_2_CHECK */ + + +#if defined( RS6000_FCHMOD_CHECK ) +extern int fchmod(int, mode_t); +#endif /* RS6000_FCHMOD_CHECK */ + + +#if defined( VXWORKS_NEEDS_VXWORKS_CHECK ) +#include </dev/null> /* ULONG */ +# define __INCstath <sys/stat.h> +#include <types/vxTypesOld.h> +#endif /* VXWORKS_NEEDS_VXWORKS_CHECK */ diff --git a/fixincludes/tests/base/sys/sysmacros.h b/fixincludes/tests/base/sys/sysmacros.h new file mode 100644 index 000000000..2fc3398f4 --- /dev/null +++ b/fixincludes/tests/base/sys/sysmacros.h @@ -0,0 +1,15 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/sysmacros.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( GLIBC_C99_INLINE_4_CHECK ) +__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int +extern __inline __attribute__ ((__gnu_inline__)) unsigned int +#endif /* GLIBC_C99_INLINE_4_CHECK */ diff --git a/fixincludes/tests/base/sys/time.h b/fixincludes/tests/base/sys/time.h new file mode 100644 index 000000000..1c730c495 --- /dev/null +++ b/fixincludes/tests/base/sys/time.h @@ -0,0 +1,19 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/time.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( HPUX_SYSTIME_CHECK ) +struct sigevent; +#endif /* HPUX_SYSTIME_CHECK */ + + +#if defined( LYNXOS_NO_WARNING_IN_SYS_TIME_H_CHECK ) + +#endif /* LYNXOS_NO_WARNING_IN_SYS_TIME_H_CHECK */ diff --git a/fixincludes/tests/base/sys/types.h b/fixincludes/tests/base/sys/types.h new file mode 100644 index 000000000..683b5e93e --- /dev/null +++ b/fixincludes/tests/base/sys/types.h @@ -0,0 +1,30 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/types.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( GNU_TYPES_CHECK ) +#if !defined(_GCC_PTRDIFF_T) +#define _GCC_PTRDIFF_T +typedef __PTRDIFF_TYPE__ ptrdiff_t; +#endif + /* long int */ +#if !defined(_GCC_SIZE_T) +#define _GCC_SIZE_T +typedef __SIZE_TYPE__ size_t; +#endif + /* uint_t */ +#ifndef __cplusplus +#if !defined(_GCC_WCHAR_T) && ! defined(__cplusplus) +#define _GCC_WCHAR_T +typedef __WCHAR_TYPE__ wchar_t; +#endif + +#endif /* ushort_t */ +#endif /* GNU_TYPES_CHECK */ diff --git a/fixincludes/tests/base/sys/ucontext.h b/fixincludes/tests/base/sys/ucontext.h new file mode 100644 index 000000000..6a873672d --- /dev/null +++ b/fixincludes/tests/base/sys/ucontext.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/ucontext.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( LINUX_IA64_UCONTEXT_CHECK ) +# define _SC_GR0_OFFSET \ + __builtin_offsetof (struct sigcontext, sc_gr[0]) + +#endif /* LINUX_IA64_UCONTEXT_CHECK */ diff --git a/fixincludes/tests/base/sys/va_list.h b/fixincludes/tests/base/sys/va_list.h new file mode 100644 index 000000000..8c69e2d57 --- /dev/null +++ b/fixincludes/tests/base/sys/va_list.h @@ -0,0 +1,22 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/va_list.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( SOLARIS_SYS_VA_LIST_CHECK ) +#ifdef __GNUC__ +typedef __builtin_va_list __va_list; +#else +#if defined(__STDC__) && !defined(__ia64) +typedef void *__va_list; +#else +typedef char *__va_list; +#endif +#endif +#endif /* SOLARIS_SYS_VA_LIST_CHECK */ diff --git a/fixincludes/tests/base/sys/wait.h b/fixincludes/tests/base/sys/wait.h new file mode 100644 index 000000000..556277cc4 --- /dev/null +++ b/fixincludes/tests/base/sys/wait.h @@ -0,0 +1,19 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/sys/wait.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( AIX_SYSWAIT_2_CHECK ) +#define WSTOPSIG(__x) (int)(WIFSTOPPED(__x) ? (int)((((unsigned int)__x) >> 8) & 0xff) : -1) +#endif /* AIX_SYSWAIT_2_CHECK */ + + +#if defined( NEXT_WAIT_UNION_CHECK ) +extern pid_d wait(void*); +#endif /* NEXT_WAIT_UNION_CHECK */ diff --git a/fixincludes/tests/base/testing.h b/fixincludes/tests/base/testing.h new file mode 100644 index 000000000..43a4ff715 --- /dev/null +++ b/fixincludes/tests/base/testing.h @@ -0,0 +1,122 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/testing.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA___EXTERN_PREFIX_CHECK ) +#if (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX)) +#pragma extern_prefix "_P" +# if (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX)) +# pragma extern_prefix "_E" +# if !defined(_LIBC_POLLUTION_H_) && (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX)) +# pragma extern_prefix "" +#endif /* ALPHA___EXTERN_PREFIX_CHECK */ + + +#if defined( ALPHA_BAD_LVAL_CHECK ) +#pragma extern_prefix "_FOO" +#define something _FOOsomething +#define mumble _FOOmumble +#endif /* ALPHA_BAD_LVAL_CHECK */ + + +#if defined( AVOID_WCHAR_T_TYPE_CHECK ) +#ifndef __cplusplus +typedef unsigned short wchar_t ; +#endif /* wchar_t + type */ +#endif /* AVOID_WCHAR_T_TYPE_CHECK */ + + +#if defined( CTRL_QUOTES_DEF_CHECK ) +#define BSD43_CTRL(n, x) ((n<<8)+x) + +#endif /* CTRL_QUOTES_DEF_CHECK */ + + +#if defined( CTRL_QUOTES_USE_CHECK ) +#define TCTRLFOO BSD43_CTRL('T', 1) +#endif /* CTRL_QUOTES_USE_CHECK */ + + +#if defined( DJGPP_WCHAR_H_CHECK ) +#include <stddef.h> +#include <sys/djtypes.h> +extern __DJ_wint_t x; + +#endif /* DJGPP_WCHAR_H_CHECK */ + + +#if defined( HPUX11_SIZE_T_CHECK ) +#define _hpux_size_t size_t + extern int getpwuid_r( char *, _hpux_size_t, struct passwd **); + +#endif /* HPUX11_SIZE_T_CHECK */ + + +#if defined( IO_QUOTES_DEF_CHECK ) +#define BSD43__IOWR(n, x) ((n<<8)+x) +#define _IOWN(x,y,t) (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|(x<<8)|y) +#define _IO(x,y) (x<<8|y) +#endif /* IO_QUOTES_DEF_CHECK */ + + +#if defined( IO_QUOTES_USE_CHECK ) +#define TIOCFOO BSD43__IOWR('T', 1) +#define TIOCFOO \ +BSD43__IOWR('T', 1) /* Some are multi-line */ +#endif /* IO_QUOTES_USE_CHECK */ + + +#if defined( MACHINE_ANSI_H_VA_LIST_CHECK ) + # define _BSD_VA_LIST_ __builtin_va_list +#endif /* MACHINE_ANSI_H_VA_LIST_CHECK */ + + +#if defined( MACHINE_NAME_CHECK ) +/* MACH_DIFF: */ +#if defined( i386 ) || defined( sparc ) || defined( vax ) +/* no uniform test, so be careful :-) */ +#endif /* MACHINE_NAME_CHECK */ + + +#if defined( STRICT_ANSI_NOT_CHECK ) +#if !defined(__STRICT_ANSI__) +#if !defined(__STRICT_ANSI__) +#if !defined(__STRICT_ANSI__) +#if !defined(__STRICT_ANSI__)/* not std C */ +int foo; + +#end-end-end-end-if :-) +#endif /* STRICT_ANSI_NOT_CHECK */ + + +#if defined( STRICT_ANSI_ONLY_CHECK ) +#if defined(__STRICT_ANSI__) /* is std C + */ +int foo; +#endif +#endif /* STRICT_ANSI_ONLY_CHECK */ + + +#if defined( SYSV68_STRING_CHECK ) +extern unsigned int strlen(); +extern int ffs(int); +extern void + *memccpy(), + memcpy(); +extern int + strcmp(), + strncmp(); +extern unsigned int + strlen(), + strspn(); +extern size_t + strlen(), strspn(); +#endif /* SYSV68_STRING_CHECK */ diff --git a/fixincludes/tests/base/tgmath.h b/fixincludes/tests/base/tgmath.h new file mode 100644 index 000000000..f06dc89a2 --- /dev/null +++ b/fixincludes/tests/base/tgmath.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/tgmath.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( GLIBC_TGMATH_CHECK ) +# define __floating_type(type) (__builtin_classify_type ((type) 0) == 8 || (__builtin_classify_type ((type) 0) == 9 && __builtin_classify_type (__real__ ((type) 0)) == 8)) +#endif /* GLIBC_TGMATH_CHECK */ diff --git a/fixincludes/tests/base/time.h b/fixincludes/tests/base/time.h new file mode 100644 index 000000000..cf22e2014 --- /dev/null +++ b/fixincludes/tests/base/time.h @@ -0,0 +1,27 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/time.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VXWORKS_NEEDS_VXTYPES_CHECK ) +unsigned int _clocks_per_sec; +#endif /* VXWORKS_NEEDS_VXTYPES_CHECK */ + + +#if defined( VXWORKS_TIME_CHECK ) +#ifndef __gcc_VOIDFUNCPTR_defined +#ifdef __cplusplus +typedef void (*__gcc_VOIDFUNCPTR) (...); +#else +typedef void (*__gcc_VOIDFUNCPTR) (); +#endif +#define __gcc_VOIDFUNCPTR_defined +#endif +#define VOIDFUNCPTR __gcc_VOIDFUNCPTR +#endif /* VXWORKS_TIME_CHECK */ diff --git a/fixincludes/tests/base/tinfo.h b/fixincludes/tests/base/tinfo.h new file mode 100644 index 000000000..46bc611e4 --- /dev/null +++ b/fixincludes/tests/base/tinfo.h @@ -0,0 +1,16 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/tinfo.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( TINFO_CPLUSPLUS_CHECK ) +#ifdef __cplusplus +int bogus; +#endif +#endif /* TINFO_CPLUSPLUS_CHECK */ diff --git a/fixincludes/tests/base/types/vxTypesBase.h b/fixincludes/tests/base/types/vxTypesBase.h new file mode 100644 index 000000000..76a9338d9 --- /dev/null +++ b/fixincludes/tests/base/types/vxTypesBase.h @@ -0,0 +1,30 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/types/vxTypesBase.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( VXWORKS_GCC_PROBLEM_CHECK ) +#if 1 +#ifndef _GCC_SIZE_T +#define _GCC_SIZE_T +typedef unsigned int size_t; +#endif +#ifndef _GCC_PTRDIFF_T +#define _GCC_PTRDIFF_T +typedef long ptrdiff_t; +#endif +#ifndef __cplusplus +#ifndef _GCC_WCHAR_T +#define _GCC_WCHAR_T +typedef unsigned short wchar_t; +#endif +#endif +#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */ + +#endif /* VXWORKS_GCC_PROBLEM_CHECK */ diff --git a/fixincludes/tests/base/unistd.h b/fixincludes/tests/base/unistd.h new file mode 100644 index 000000000..756451d83 --- /dev/null +++ b/fixincludes/tests/base/unistd.h @@ -0,0 +1,14 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/unistd.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( ALPHA_SBRK_CHECK ) +extern void *sbrk(ptrdiff_t increment); +#endif /* ALPHA_SBRK_CHECK */ |