OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [fixincludes/] [inclhack.def] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
/* -*- Mode: C -*-  */
/* -*- Mode: C -*-  */
autogen definitions fixincl;
autogen definitions fixincl;
/* Define all the fixes we know about for repairing damaged headers.
/* Define all the fixes we know about for repairing damaged headers.
   Please see the README before adding or changing entries in this file.
   Please see the README before adding or changing entries in this file.
   This is the sort command:
   This is the sort command:
   blocksort output=inclhack.sorted \
   blocksort output=inclhack.sorted \
          pattern='^/\*$' \
          pattern='^/\*$' \
          trailer='^/\*EOF\*[/]' \
          trailer='^/\*EOF\*[/]' \
          input=inclhack.def \
          input=inclhack.def \
          key='hackname[        ]*=[    ]*(.*);'
          key='hackname[        ]*=[    ]*(.*);'
   Set up a debug test so we can make the templates emit special
   Set up a debug test so we can make the templates emit special
   code while debugging these fixes:  */
   code while debugging these fixes:  */
#ifdef DEBUG
#ifdef DEBUG
FIXINC_DEBUG = yes;
FIXINC_DEBUG = yes;
#endif
#endif
/*
/*
 *  On Mac OS 10.3.9, the 'long double' functions are available in
 *  On Mac OS 10.3.9, the 'long double' functions are available in
 *  libSystem, but are not prototyped in math.h.
 *  libSystem, but are not prototyped in math.h.
 */
 */
fix = {
fix = {
  hackname  = AAB_darwin7_9_long_double_funcs;
  hackname  = AAB_darwin7_9_long_double_funcs;
  mach      = "*-*-darwin7.9*";
  mach      = "*-*-darwin7.9*";
  files     = architecture/ppc/math.h;
  files     = architecture/ppc/math.h;
  bypass    = "powl";
  bypass    = "powl";
  replace = <<- _EndOfHeader_
  replace = <<- _EndOfHeader_
/* This file prototypes the long double functions available on Mac OS
/* This file prototypes the long double functions available on Mac OS
   10.3.9.  */
   10.3.9.  */
#ifndef __MATH__
#ifndef __MATH__
# undef __APPLE_CC__
# undef __APPLE_CC__
# define __APPLE_CC__  1345
# define __APPLE_CC__  1345
# include_next 
# include_next 
# undef __APPLE_CC__
# undef __APPLE_CC__
# define __APPLE_CC__ 1
# define __APPLE_CC__ 1
# ifndef __LIBMLDBL_COMPAT
# ifndef __LIBMLDBL_COMPAT
#  ifdef __LONG_DOUBLE_128__
#  ifdef __LONG_DOUBLE_128__
#   define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128")
#   define __LIBMLDBL_COMPAT(sym) __asm("_" #sym "$LDBL128")
#  else
#  else
#   define __LIBMLDBL_COMPAT(sym)
#   define __LIBMLDBL_COMPAT(sym)
#  endif /* __LONG_DOUBLE_128__ */
#  endif /* __LONG_DOUBLE_128__ */
# endif /* __LIBMLDBL_COMPAT */
# endif /* __LIBMLDBL_COMPAT */
# ifdef __cplusplus
# ifdef __cplusplus
   extern "C" {
   extern "C" {
# endif
# endif
  extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl);
  extern long double acosl( long double ) __LIBMLDBL_COMPAT(acosl);
  extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl);
  extern long double asinl( long double ) __LIBMLDBL_COMPAT(asinl);
  extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl);
  extern long double atanl( long double ) __LIBMLDBL_COMPAT(atanl);
  extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l);
  extern long double atan2l( long double, long double ) __LIBMLDBL_COMPAT(atan2l);
  extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl);
  extern long double cosl( long double ) __LIBMLDBL_COMPAT(cosl);
  extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl);
  extern long double sinl( long double ) __LIBMLDBL_COMPAT(sinl);
  extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl);
  extern long double tanl( long double ) __LIBMLDBL_COMPAT(tanl);
  extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl);
  extern long double acoshl( long double ) __LIBMLDBL_COMPAT(acoshl);
  extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl);
  extern long double asinhl( long double ) __LIBMLDBL_COMPAT(asinhl);
  extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl);
  extern long double atanhl( long double ) __LIBMLDBL_COMPAT(atanhl);
  extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl);
  extern long double coshl( long double ) __LIBMLDBL_COMPAT(coshl);
  extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl);
  extern long double sinhl( long double ) __LIBMLDBL_COMPAT(sinhl);
  extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl);
  extern long double tanhl( long double ) __LIBMLDBL_COMPAT(tanhl);
  extern long double expl( long double ) __LIBMLDBL_COMPAT(expl);
  extern long double expl( long double ) __LIBMLDBL_COMPAT(expl);
  extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l);
  extern long double exp2l( long double ) __LIBMLDBL_COMPAT(exp2l);
  extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l);
  extern long double expm1l( long double ) __LIBMLDBL_COMPAT(expm1l);
  extern long double logl( long double ) __LIBMLDBL_COMPAT(logl);
  extern long double logl( long double ) __LIBMLDBL_COMPAT(logl);
  extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l);
  extern long double log10l( long double ) __LIBMLDBL_COMPAT(log10l);
  extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l);
  extern long double log2l( long double ) __LIBMLDBL_COMPAT(log2l);
  extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl);
  extern long double log1pl( long double ) __LIBMLDBL_COMPAT(log1pl);
  extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl);
  extern long double logbl( long double ) __LIBMLDBL_COMPAT(logbl);
  extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl);
  extern long double modfl( long double, long double * ) __LIBMLDBL_COMPAT(modfl);
  extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl);
  extern long double ldexpl( long double, int ) __LIBMLDBL_COMPAT(ldexpl);
  extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl);
  extern long double frexpl( long double, int * ) __LIBMLDBL_COMPAT(frexpl);
  extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl);
  extern int ilogbl( long double ) __LIBMLDBL_COMPAT(ilogbl);
  extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl);
  extern long double scalbnl( long double, int ) __LIBMLDBL_COMPAT(scalbnl);
  extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl);
  extern long double scalblnl( long double, long int ) __LIBMLDBL_COMPAT(scalblnl);
  extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl);
  extern long double fabsl( long double ) __LIBMLDBL_COMPAT(fabsl);
  extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl);
  extern long double cbrtl( long double ) __LIBMLDBL_COMPAT(cbrtl);
  extern long double hypotl( long double, long double ) __LIBMLDBL_COMPAT(hypotl);
  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 powl( long double, long double ) __LIBMLDBL_COMPAT(powl);
  extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl);
  extern long double sqrtl( long double ) __LIBMLDBL_COMPAT(sqrtl);
  extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl);
  extern long double erfl( long double ) __LIBMLDBL_COMPAT(erfl);
  extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl);
  extern long double erfcl( long double ) __LIBMLDBL_COMPAT(erfcl);
  extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal);
  extern long double lgammal( long double ) __LIBMLDBL_COMPAT(lgammal);
  extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal);
  extern long double tgammal( long double ) __LIBMLDBL_COMPAT(tgammal);
  extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill);
  extern long double ceill( long double ) __LIBMLDBL_COMPAT(ceill);
  extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl);
  extern long double floorl( long double ) __LIBMLDBL_COMPAT(floorl);
  extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl);
  extern long double nearbyintl( long double ) __LIBMLDBL_COMPAT(nearbyintl);
  extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl);
  extern long double rintl( long double ) __LIBMLDBL_COMPAT(rintl);
  extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl);
  extern long int lrintl( long double ) __LIBMLDBL_COMPAT(lrintl);
  extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl);
  extern long long int llrintl( long double ) __LIBMLDBL_COMPAT(llrintl);
  extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl);
  extern long double roundl( long double ) __LIBMLDBL_COMPAT(roundl);
  extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl);
  extern long int lroundl( long double ) __LIBMLDBL_COMPAT(lroundl);
  extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl);
  extern long long int llroundl( long double ) __LIBMLDBL_COMPAT(llroundl);
  extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl);
  extern long double truncl( long double ) __LIBMLDBL_COMPAT(truncl);
  extern long double fmodl( long double, long double) __LIBMLDBL_COMPAT(fmodl);
  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 remainderl( long double, long double ) __LIBMLDBL_COMPAT(remainderl);
  extern long double remquol( long double, long double, int * ) __LIBMLDBL_COMPAT(remquol);
  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 copysignl( long double, long double ) __LIBMLDBL_COMPAT(copysignl);
  extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl);
  extern long double nanl( const char * ) __LIBMLDBL_COMPAT(nanl);
  extern long double nextafterl( long double, long double ) __LIBMLDBL_COMPAT(nextafterl);
  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 nexttowardl( long double, long double ) __LIBMLDBL_COMPAT(nexttowardl);
  extern long double fdiml( long double, long double ) __LIBMLDBL_COMPAT(fdiml);
  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 fmaxl( long double, long double ) __LIBMLDBL_COMPAT(fmaxl);
  extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl);
  extern long double fminl( long double, long double ) __LIBMLDBL_COMPAT(fminl);
  extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal);
  extern long double fmal( long double, long double, long double ) __LIBMLDBL_COMPAT(fmal);
# ifdef __cplusplus
# ifdef __cplusplus
   }
   }
# endif
# endif
#endif /* __MATH__ */
#endif /* __MATH__ */
_EndOfHeader_;
_EndOfHeader_;
};
};
/*
/*
 *  ... and for the previous fix to be useful, you have to not use ""
 *  ... and for the previous fix to be useful, you have to not use ""
 *  includes.
 *  includes.
 */
 */
fix = {
fix = {
  hackname  = AAB_darwin7_9_long_double_funcs_2;
  hackname  = AAB_darwin7_9_long_double_funcs_2;
  mach      = "*-*-darwin7.9*";
  mach      = "*-*-darwin7.9*";
  files     = math.h;
  files     = math.h;
  select    = '#include[ \t]+\"';
  select    = '#include[ \t]+\"';
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = "%1<%2.h>";
  c_fix_arg = "%1<%2.h>";
  c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
  c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"';
  test_text = '#include "architecture/ppc/math.h"';
  test_text = '#include "architecture/ppc/math.h"';
};
};
/*
/*
 *  This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
 *  This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
 */
 */
fix = {
fix = {
    hackname = AAB_fd_zero_asm_posix_types_h;
    hackname = AAB_fd_zero_asm_posix_types_h;
    files    = asm/posix_types.h;
    files    = asm/posix_types.h;
    mach     = 'i[34567]86-*-linux*';
    mach     = 'i[34567]86-*-linux*';
    bypass   = '} while';
    bypass   = '} while';
    /*
    /*
     * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
     * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
     * the start, so that if #include_next gets another instance of
     * the start, so that if #include_next gets another instance of
     * the wrapper, this will follow the #include_next chain until
     * the wrapper, this will follow the #include_next chain until
     * we arrive at the real .
     * we arrive at the real .
     */
     */
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        /* This file fixes a bug in the __FD_ZERO macro
        /* This file fixes a bug in the __FD_ZERO macro
           for older versions of the Linux kernel. */
           for older versions of the Linux kernel. */
        #ifndef _POSIX_TYPES_H_WRAPPER
        #ifndef _POSIX_TYPES_H_WRAPPER
        #include 
        #include 
         #include_next 
         #include_next 
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #undef __FD_ZERO
        #undef __FD_ZERO
        #define __FD_ZERO(fdsetp) \
        #define __FD_ZERO(fdsetp) \
          do { \
          do { \
            int __d0, __d1; \
            int __d0, __d1; \
                        __asm__ __volatile__("cld ; rep ; stosl" \
                        __asm__ __volatile__("cld ; rep ; stosl" \
                                : "=&c" (__d0), "=&D" (__d1) \
                                : "=&c" (__d0), "=&D" (__d1) \
                                : "a" (0), "0" (__FDSET_LONGS), \
                                : "a" (0), "0" (__FDSET_LONGS), \
                                  "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
                                  "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
          } while (0)
          } while (0)
        #endif
        #endif
        #define _POSIX_TYPES_H_WRAPPER
        #define _POSIX_TYPES_H_WRAPPER
        #endif /* _POSIX_TYPES_H_WRAPPER */
        #endif /* _POSIX_TYPES_H_WRAPPER */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  This fixes __FD_ZERO bug for glibc-1.x
 *  This fixes __FD_ZERO bug for glibc-1.x
 */
 */
fix = {
fix = {
    hackname = AAB_fd_zero_gnu_types_h;
    hackname = AAB_fd_zero_gnu_types_h;
    files    = gnu/types.h;
    files    = gnu/types.h;
    mach     = 'i[34567]86-*-linux*';
    mach     = 'i[34567]86-*-linux*';
    /*
    /*
     * Define _TYPES_H_WRAPPER at the end of the wrapper, not
     * Define _TYPES_H_WRAPPER at the end of the wrapper, not
     * the start, so that if #include_next gets another instance of
     * the start, so that if #include_next gets another instance of
     * the wrapper, this will follow the #include_next chain until
     * the wrapper, this will follow the #include_next chain until
     * we arrive at the real .
     * we arrive at the real .
     */
     */
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 1.x. */
        #ifndef _TYPES_H_WRAPPER
        #ifndef _TYPES_H_WRAPPER
        #include 
        #include 
        #include_next 
        #include_next 
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #if defined(__FD_ZERO) && !defined(__GLIBC__)
        #undef __FD_ZERO
        #undef __FD_ZERO
        # define __FD_ZERO(fdsetp) \
        # define __FD_ZERO(fdsetp) \
          do { \
          do { \
            int __d0, __d1; \
            int __d0, __d1; \
                __asm__ __volatile__("cld ; rep ; stosl" \
                __asm__ __volatile__("cld ; rep ; stosl" \
                : "=&c" (__d0), "=&D" (__d1) \
                : "=&c" (__d0), "=&D" (__d1) \
                : "a" (0), "0" (__FDSET_LONGS), \
                : "a" (0), "0" (__FDSET_LONGS), \
                  "1" ((__fd_set *) (fdsetp)) :"memory"); \
                  "1" ((__fd_set *) (fdsetp)) :"memory"); \
          } while (0)
          } while (0)
        #endif
        #endif
        #define _TYPES_H_WRAPPER
        #define _TYPES_H_WRAPPER
        #endif /* _TYPES_H_WRAPPER */
        #endif /* _TYPES_H_WRAPPER */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  This fixes __FD_ZERO bug for glibc-2.0.x
 *  This fixes __FD_ZERO bug for glibc-2.0.x
 */
 */
fix = {
fix = {
    hackname = AAB_fd_zero_selectbits_h;
    hackname = AAB_fd_zero_selectbits_h;
    files    = selectbits.h;
    files    = selectbits.h;
    mach     = 'i[34567]86-*-linux*';
    mach     = 'i[34567]86-*-linux*';
    /*
    /*
     * Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
     * Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
     * the start, so that if #include_next gets another instance of
     * the start, so that if #include_next gets another instance of
     * the wrapper, this will follow the #include_next chain until
     * the wrapper, this will follow the #include_next chain until
     * we arrive at the real .
     * we arrive at the real .
     */
     */
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */
        /* This file fixes a bug in the __FD_ZERO macro present in glibc 2.0.x. */
        #ifndef _SELECTBITS_H_WRAPPER
        #ifndef _SELECTBITS_H_WRAPPER
          #include 
          #include 
          #include_next 
          #include_next 
          #if defined(__FD_ZERO) && defined(__GLIBC__) \\
          #if defined(__FD_ZERO) && defined(__GLIBC__) \\
          && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\
          && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 \\
          && __GLIBC_MINOR__ == 0
          && __GLIBC_MINOR__ == 0
             #undef __FD_ZERO
             #undef __FD_ZERO
             #define __FD_ZERO(fdsetp) \\
             #define __FD_ZERO(fdsetp) \\
             do { \\
             do { \\
                int __d0, __d1; \\
                int __d0, __d1; \\
              __asm__ __volatile__ ("cld; rep; stosl" \\
              __asm__ __volatile__ ("cld; rep; stosl" \\
                        : "=&c" (__d0), "=&D" (__d1) \\
                        : "=&c" (__d0), "=&D" (__d1) \\
                        : "a" (0), "0" (sizeof (__fd_set) \\
                        : "a" (0), "0" (sizeof (__fd_set) \\
                                        / sizeof (__fd_mask)), \\
                                        / sizeof (__fd_mask)), \\
                          "1" ((__fd_mask *) (fdsetp)) \\
                          "1" ((__fd_mask *) (fdsetp)) \\
                        : "memory"); \\
                        : "memory"); \\
              } while (0)
              } while (0)
          #endif
          #endif
          #define _SELECTBITS_H_WRAPPER
          #define _SELECTBITS_H_WRAPPER
        #endif /* _SELECTBITS_H_WRAPPER */
        #endif /* _SELECTBITS_H_WRAPPER */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 * Solaris  is a DDK (aka kernel-land) header providing
 * Solaris  is a DDK (aka kernel-land) header providing
 * the same interface as .  No idea why they couldn't have just
 * the same interface as .  No idea why they couldn't have just
 * used the standard header.
 * used the standard header.
 */
 */
fix = {
fix = {
    hackname = AAB_solaris_sys_varargs_h;
    hackname = AAB_solaris_sys_varargs_h;
    files    = "sys/varargs.h";
    files    = "sys/varargs.h";
    mach     = '*-*-solaris*';
    mach     = '*-*-solaris*';
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        #ifdef __STDC__
        #ifdef __STDC__
          #include 
          #include 
        #else
        #else
          #include 
          #include 
        #endif
        #endif
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  Fix non-ANSI memcpy declaration that conflicts with gcc's builtin
 *  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
 *  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.
 *  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.
 *  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 also on sysV68 R3V7.1 (head/memory.h\t50.1\t )
 */
 */
fix = {
fix = {
    hackname = AAB_sun_memcpy;
    hackname = AAB_sun_memcpy;
    files    = memory.h;
    files    = memory.h;
    select   = "/\\*\t@\\(#\\)"
    select   = "/\\*\t@\\(#\\)"
             "(head/memory.h\t50.1\t "
             "(head/memory.h\t50.1\t "
             "|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
             "|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
    replace = <<-  _EndOfHeader_
    replace = <<-  _EndOfHeader_
        /* This file was generated by fixincludes */
        /* This file was generated by fixincludes */
        #ifndef __memory_h__
        #ifndef __memory_h__
          #define __memory_h__
          #define __memory_h__
          #ifdef __STDC__
          #ifdef __STDC__
            extern void *memccpy();
            extern void *memccpy();
            extern void *memchr();
            extern void *memchr();
            extern void *memcpy();
            extern void *memcpy();
            extern void *memset();
            extern void *memset();
          #else
          #else
            extern char *memccpy();
            extern char *memccpy();
            extern char *memchr();
            extern char *memchr();
            extern char *memcpy();
            extern char *memcpy();
            extern char *memset();
            extern char *memset();
          #endif /* __STDC__ */
          #endif /* __STDC__ */
          extern int memcmp();
          extern int memcmp();
        #endif /* __memory_h__ */
        #endif /* __memory_h__ */
        _EndOfHeader;
        _EndOfHeader;
};
};
/*
/*
 *  Completely replace  with a file that includes gcc's
 *  Completely replace  with a file that includes gcc's
 *  stdarg.h or varargs.h files as appropriate.
 *  stdarg.h or varargs.h files as appropriate.
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = AAB_svr4_no_varargs;
    hackname = AAB_svr4_no_varargs;
    files    = sys/varargs.h;
    files    = sys/varargs.h;
    replace  = "/* This file was generated by fixincludes.  */\n"
    replace  = "/* This file was generated by fixincludes.  */\n"
               "#ifndef _SYS_VARARGS_H\n"
               "#ifndef _SYS_VARARGS_H\n"
               "#define _SYS_VARARGS_H\n\n"
               "#define _SYS_VARARGS_H\n\n"
               "#ifdef __STDC__\n"
               "#ifdef __STDC__\n"
               "#include \n"
               "#include \n"
               "#else\n"
               "#else\n"
               "#include \n"
               "#include \n"
               "#endif\n\n"
               "#endif\n\n"
               "#endif  /* _SYS_VARARGS_H */\n";
               "#endif  /* _SYS_VARARGS_H */\n";
};
};
#endif
#endif
/*
/*
 *  Completely replace  with a file that implements gcc's
 *  Completely replace  with a file that implements gcc's
 *  optimized byteswapping.  (The original probably implemented some
 *  optimized byteswapping.  (The original probably implemented some
 *  incompatible optimized byteswapping.)
 *  incompatible optimized byteswapping.)
 */
 */
fix = {
fix = {
    hackname = AAB_svr4_replace_byteorder;
    hackname = AAB_svr4_replace_byteorder;
    mach     = "*-*-sysv4*";
    mach     = "*-*-sysv4*";
    mach     = "i[34567]86-*-sysv5*";
    mach     = "i[34567]86-*-sysv5*";
    mach     = "i[34567]86-*-sco3.2v5*";
    mach     = "i[34567]86-*-sco3.2v5*";
    mach     = "i[34567]86-*-udk*";
    mach     = "i[34567]86-*-udk*";
    mach     = "i[34567]86-*-solaris2.[0-4]";
    mach     = "i[34567]86-*-solaris2.[0-4]";
    mach     = "powerpcle-*-solaris2.[0-4]";
    mach     = "powerpcle-*-solaris2.[0-4]";
    mach     = "sparc-*-solaris2.[0-4]";
    mach     = "sparc-*-solaris2.[0-4]";
    mach     = "i[34567]86-sequent-ptx*";
    mach     = "i[34567]86-sequent-ptx*";
    files    = sys/byteorder.h;
    files    = sys/byteorder.h;
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        #ifndef _SYS_BYTEORDER_H
        #ifndef _SYS_BYTEORDER_H
        #define _SYS_BYTEORDER_H
        #define _SYS_BYTEORDER_H
        /* Functions to convert `short' and `long' quantities from host byte order
        /* Functions to convert `short' and `long' quantities from host byte order
           to (internet) network byte order (i.e. big-endian).
           to (internet) network byte order (i.e. big-endian).
           Written by Ron Guilmette (rfg@ncd.com).
           Written by Ron Guilmette (rfg@ncd.com).
           This isn't actually used by GCC.  It is installed by fixinc.svr4.
           This isn't actually used by GCC.  It is installed by fixinc.svr4.
           For big-endian machines these functions are essentially no-ops.
           For big-endian machines these functions are essentially no-ops.
           For little-endian machines, we define the functions using specialized
           For little-endian machines, we define the functions using specialized
           asm sequences in cases where doing so yields better code (e.g. i386).  */
           asm sequences in cases where doing so yields better code (e.g. i386).  */
        #if !defined (__GNUC__) && !defined (__GNUG__)
        #if !defined (__GNUC__) && !defined (__GNUG__)
          #error You lose!  This file is only useful with GNU compilers.
          #error You lose!  This file is only useful with GNU compilers.
        #endif
        #endif
        #ifndef __BYTE_ORDER__
        #ifndef __BYTE_ORDER__
          /* Byte order defines.  These are as defined on UnixWare 1.1, but with
          /* Byte order defines.  These are as defined on UnixWare 1.1, but with
             double underscores added at the front and back.  */
             double underscores added at the front and back.  */
          #define __LITTLE_ENDIAN__   1234
          #define __LITTLE_ENDIAN__   1234
          #define __BIG_ENDIAN__      4321
          #define __BIG_ENDIAN__      4321
          #define __PDP_ENDIAN__      3412
          #define __PDP_ENDIAN__      3412
        #endif
        #endif
        #ifdef __STDC__
        #ifdef __STDC__
          static __inline__ unsigned long htonl (unsigned long);
          static __inline__ unsigned long htonl (unsigned long);
          static __inline__ unsigned short htons (unsigned int);
          static __inline__ unsigned short htons (unsigned int);
          static __inline__ unsigned long ntohl (unsigned long);
          static __inline__ unsigned long ntohl (unsigned long);
          static __inline__ unsigned short ntohs (unsigned int);
          static __inline__ unsigned short ntohs (unsigned int);
        #endif /* defined (__STDC__) */
        #endif /* defined (__STDC__) */
        #if defined (__i386__)
        #if defined (__i386__)
          #ifndef __BYTE_ORDER__
          #ifndef __BYTE_ORDER__
            #define __BYTE_ORDER__ __LITTLE_ENDIAN__
            #define __BYTE_ORDER__ __LITTLE_ENDIAN__
          #endif
          #endif
          /* Convert a host long to a network long.  */
          /* Convert a host long to a network long.  */
          /* We must use a new-style function definition, so that this will also
          /* We must use a new-style function definition, so that this will also
             be valid for C++.  */
             be valid for C++.  */
          static __inline__ unsigned long
          static __inline__ unsigned long
          htonl (unsigned long __arg)
          htonl (unsigned long __arg)
          {
          {
            register unsigned long __result;
            register unsigned long __result;
            __asm__ ("xchg%B0 %b0,%h0
            __asm__ ("xchg%B0 %b0,%h0
                  ror%L0 $16,%0
                  ror%L0 $16,%0
                  xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
                  xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
            return __result;
            return __result;
          }
          }
          /* Convert a host short to a network short.  */
          /* Convert a host short to a network short.  */
          static __inline__ unsigned short
          static __inline__ unsigned short
          htons (unsigned int __arg)
          htons (unsigned int __arg)
          {
          {
            register unsigned short __result;
            register unsigned short __result;
            __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
            __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
            return __result;
            return __result;
          }
          }
        #elif (defined (__ns32k__) || defined (__vax__) || defined (__arm__))
        #elif (defined (__ns32k__) || defined (__vax__) || defined (__arm__))
          #ifndef __BYTE_ORDER__
          #ifndef __BYTE_ORDER__
            #define __BYTE_ORDER__ __LITTLE_ENDIAN__
            #define __BYTE_ORDER__ __LITTLE_ENDIAN__
          #endif
          #endif
          /* For other little-endian machines, using C code is just as efficient as
          /* For other little-endian machines, using C code is just as efficient as
             using assembly code.  */
             using assembly code.  */
          /* Convert a host long to a network long.  */
          /* Convert a host long to a network long.  */
          static __inline__ unsigned long
          static __inline__ unsigned long
          htonl (unsigned long __arg)
          htonl (unsigned long __arg)
          {
          {
            register unsigned long __result;
            register unsigned long __result;
            __result = (__arg >> 24) & 0x000000ff;
            __result = (__arg >> 24) & 0x000000ff;
            __result |= (__arg >> 8) & 0x0000ff00;
            __result |= (__arg >> 8) & 0x0000ff00;
            __result |= (__arg << 8) & 0x00ff0000;
            __result |= (__arg << 8) & 0x00ff0000;
            __result |= (__arg << 24) & 0xff000000;
            __result |= (__arg << 24) & 0xff000000;
            return __result;
            return __result;
          }
          }
          /* Convert a host short to a network short.  */
          /* Convert a host short to a network short.  */
          static __inline__ unsigned short
          static __inline__ unsigned short
          htons (unsigned int __arg)
          htons (unsigned int __arg)
          {
          {
            register unsigned short __result;
            register unsigned short __result;
            __result = (__arg << 8) & 0xff00;
            __result = (__arg << 8) & 0xff00;
            __result |= (__arg >> 8) & 0x00ff;
            __result |= (__arg >> 8) & 0x00ff;
            return __result;
            return __result;
          }
          }
        #else /* must be a big-endian machine */
        #else /* must be a big-endian machine */
          #ifndef __BYTE_ORDER__
          #ifndef __BYTE_ORDER__
            #define __BYTE_ORDER__ __BIG_ENDIAN__
            #define __BYTE_ORDER__ __BIG_ENDIAN__
          #endif
          #endif
          /* Convert a host long to a network long.  */
          /* Convert a host long to a network long.  */
          static __inline__ unsigned long
          static __inline__ unsigned long
          htonl (unsigned long __arg)
          htonl (unsigned long __arg)
          {
          {
            return __arg;
            return __arg;
          }
          }
          /* Convert a host short to a network short.  */
          /* Convert a host short to a network short.  */
          static __inline__ unsigned short
          static __inline__ unsigned short
          htons (unsigned int __arg)
          htons (unsigned int __arg)
          {
          {
            return __arg;
            return __arg;
          }
          }
        #endif /* big-endian */
        #endif /* big-endian */
        /* Convert a network long to a host long.  */
        /* Convert a network long to a host long.  */
        static __inline__ unsigned long
        static __inline__ unsigned long
        ntohl (unsigned long __arg)
        ntohl (unsigned long __arg)
        {
        {
          return htonl (__arg);
          return htonl (__arg);
        }
        }
        /* Convert a network short to a host short.  */
        /* Convert a network short to a host short.  */
        static __inline__ unsigned short
        static __inline__ unsigned short
        ntohs (unsigned int __arg)
        ntohs (unsigned int __arg)
        {
        {
          return htons (__arg);
          return htons (__arg);
        }
        }
        #endif
        #endif
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  Cancel out ansi_compat.h on Ultrix.  Replace it with an empty file.
 *  Cancel out ansi_compat.h on Ultrix.  Replace it with an empty file.
 */
 */
fix = {
fix = {
    hackname = AAB_ultrix_ansi_compat;
    hackname = AAB_ultrix_ansi_compat;
    files    = ansi_compat.h;
    files    = ansi_compat.h;
    select   = ULTRIX;
    select   = ULTRIX;
    replace  = "/* This file intentionally left blank.  */\n";
    replace  = "/* This file intentionally left blank.  */\n";
};
};
/*
/*
 *  The Ultrix 4.3 file limits.h is a symbolic link to sys/limits.h.
 *  The Ultrix 4.3 file limits.h is a symbolic link to sys/limits.h.
 *  Replace limits.h with a file that includes sys/limits.h.
 *  Replace limits.h with a file that includes sys/limits.h.
 */
 */
fix = {
fix = {
    hackname = AAB_ultrix_limits;
    hackname = AAB_ultrix_limits;
    files    = limits.h;
    files    = limits.h;
    mach     = "*-*-ultrix4.3";
    mach     = "*-*-ultrix4.3";
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        #ifndef _LIMITS_INCLUDED
        #ifndef _LIMITS_INCLUDED
          #define _LIMITS_INCLUDED
          #define _LIMITS_INCLUDED
          #include 
          #include 
        #endif /* _LIMITS_INCLUDED */
        #endif /* _LIMITS_INCLUDED */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  The ULTRIX 4.3 version of memory.h duplicates definitions
 *  The ULTRIX 4.3 version of memory.h duplicates definitions
 *  present in strings.h.  Replace memory.h with a file that includes
 *  present in strings.h.  Replace memory.h with a file that includes
 *  strings.h to prevent problems from multiple inclusion.
 *  strings.h to prevent problems from multiple inclusion.
 */
 */
fix = {
fix = {
    hackname = AAB_ultrix_memory;
    hackname = AAB_ultrix_memory;
    files    = memory.h;
    files    = memory.h;
    mach     = "*-*-ultrix4.3";
    mach     = "*-*-ultrix4.3";
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        #ifndef _MEMORY_INCLUDED
        #ifndef _MEMORY_INCLUDED
          #define _MEMORY_INCLUDED
          #define _MEMORY_INCLUDED
          #include 
          #include 
        #endif /* _MEMORY_INCLUDED */
        #endif /* _MEMORY_INCLUDED */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  The Ultrix 4.3 file string.h is a symbolic link to strings.h.
 *  The Ultrix 4.3 file string.h is a symbolic link to strings.h.
 *  Replace string.h link with a file that includes strings.h to prevent
 *  Replace string.h link with a file that includes strings.h to prevent
 *  problems from multiple inclusion.
 *  problems from multiple inclusion.
 */
 */
fix = {
fix = {
    hackname = AAB_ultrix_string;
    hackname = AAB_ultrix_string;
    files    = string.h;
    files    = string.h;
    mach     = "*-*-ultrix4.3";
    mach     = "*-*-ultrix4.3";
    replace  = <<-  _EndOfHeader_
    replace  = <<-  _EndOfHeader_
        #ifndef _STRING_INCLUDED
        #ifndef _STRING_INCLUDED
          #define _STRING_INCLUDED
          #define _STRING_INCLUDED
          #include 
          #include 
        #endif /* _STRING_INCLUDED */
        #endif /* _STRING_INCLUDED */
        _EndOfHeader_;
        _EndOfHeader_;
};
};
/*
/*
 *  pthread.h on AIX 4.3.3 tries to define a macro without whitspace
 *  pthread.h on AIX 4.3.3 tries to define a macro without whitspace
 *  which violates a requirement of ISO C.
 *  which violates a requirement of ISO C.
 */
 */
fix = {
fix = {
    hackname  = aix_pthread;
    hackname  = aix_pthread;
    files     = "pthread.h";
    files     = "pthread.h";
    select    = "(#define [A-Za-z_0-9]+)(\\\\\n[^A-Za-z_0-9 \t\n(])";
    select    = "(#define [A-Za-z_0-9]+)(\\\\\n[^A-Za-z_0-9 \t\n(])";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 %2";
    c_fix_arg = "%1 %2";
    test_text = "#define PTHREAD_MUTEX_INITIALIZER\\\\\n"
    test_text = "#define PTHREAD_MUTEX_INITIALIZER\\\\\n"
                "{...init stuff...}";
                "{...init stuff...}";
};
};
/*
/*
 *  sys/machine.h on AIX 4.3.3 puts whitespace between a \ and a newline
 *  sys/machine.h on AIX 4.3.3 puts whitespace between a \ and a newline
 *  in an otherwise harmless (and #ifed out) macro definition
 *  in an otherwise harmless (and #ifed out) macro definition
 */
 */
fix = {
fix = {
    hackname  = aix_sysmachine;
    hackname  = aix_sysmachine;
    files     = sys/machine.h;
    files     = sys/machine.h;
    select    = "\\\\ +\n";
    select    = "\\\\ +\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "\\\n";
    c_fix_arg = "\\\n";
    test_text = "#define FOO \\\n"
    test_text = "#define FOO \\\n"
    " bar \\ \n baz \\ \n bat";
    " bar \\ \n baz \\ \n bat";
};
};
/*
/*
 *  sys/wait.h on AIX 3.2.5 puts the declaration of wait3 before the
 *  sys/wait.h on AIX 3.2.5 puts the declaration of wait3 before the
 *  definition of struct rusage, so the prototype added by fixproto fails.
 *  definition of struct rusage, so the prototype added by fixproto fails.
 */
 */
fix = {
fix = {
    hackname  = aix_syswait;
    hackname  = aix_syswait;
    files     = sys/wait.h;
    files     = sys/wait.h;
    select    = "^extern pid_t wait3\\(\\);\n";
    select    = "^extern pid_t wait3\\(\\);\n";
    select    = "bos325,";
    select    = "bos325,";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct rusage;\n%0";
    c_fix_arg = "struct rusage;\n%0";
    test_text = "/* bos325, */\n"
    test_text = "/* bos325, */\n"
    "extern pid_t wait3();\n"
    "extern pid_t wait3();\n"
    "\t/* pid_t wait3(int *, int, struct rusage *); */";
    "\t/* pid_t wait3(int *, int, struct rusage *); */";
};
};
/*
/*
 *  sys/wait.h on AIX 5.2 defines macros that have both signed and
 *  sys/wait.h on AIX 5.2 defines macros that have both signed and
 *  unsigned types in conditional expressions.
 *  unsigned types in conditional expressions.
 */
 */
fix = {
fix = {
    hackname  = aix_syswait_2;
    hackname  = aix_syswait_2;
    files     = sys/wait.h;
    files     = sys/wait.h;
    select    = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)';
    select    = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "? (int)%1";
    c_fix_arg = "? (int)%1";
    test_text = "#define WSTOPSIG(__x)    (int)(WIFSTOPPED(__x) ? ((((unsigned int)__x) >> 8) & 0xff) : -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
 *  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
 *  sig_atomic_t, which causes gcc to generate a warning about duplicate
 *  volatile when a sig_atomic_t variable is declared volatile, as
 *  volatile when a sig_atomic_t variable is declared volatile, as
 *  required by ANSI C.
 *  required by ANSI C.
 */
 */
fix = {
fix = {
    hackname  = aix_volatile;
    hackname  = aix_volatile;
    files     = sys/signal.h;
    files     = sys/signal.h;
    select    = "typedef volatile int sig_atomic_t";
    select    = "typedef volatile int sig_atomic_t";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "typedef int sig_atomic_t";
    c_fix_arg = "typedef int sig_atomic_t";
    test_text = "typedef volatile int sig_atomic_t;";
    test_text = "typedef volatile int sig_atomic_t;";
};
};
/*
/*
 *  Fix __assert declaration in assert.h on Alpha OSF/1.
 *  Fix __assert declaration in assert.h on Alpha OSF/1.
 */
 */
fix = {
fix = {
    hackname  = alpha___assert;
    hackname  = alpha___assert;
    files     = "assert.h";
    files     = "assert.h";
    select    = '__assert\(char \*, char \*, int\)';
    select    = '__assert\(char \*, char \*, int\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__assert(const char *, const char *, int)";
    c_fix_arg = "__assert(const char *, const char *, int)";
    test_text = 'extern void __assert(char *, char *, int);';
    test_text = 'extern void __assert(char *, char *, int);';
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 headers.
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 headers.
 */
 */
fix = {
fix = {
    hackname  = alpha___extern_prefix;
    hackname  = alpha___extern_prefix;
    select    = "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n(#[ \t]*pragma[ \t]*extern_prefix.*)";
    select    = "(.*)(defined\\(__DECC\\)|def[ \t]*__DECC)[ \t]*\n(#[ \t]*pragma[ \t]*extern_prefix.*)";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n%3";
    c_fix_arg = "%1 (defined(__DECC) || defined(__PRAGMA_EXTERN_PREFIX))\n%3";
    test_text = "#ifdef  __DECC\n"
    test_text = "#ifdef  __DECC\n"
                "#pragma extern_prefix \"_P\"\n"
                "#pragma extern_prefix \"_P\"\n"
                "#   if defined(__DECC)\n"
                "#   if defined(__DECC)\n"
                "#     pragma extern_prefix \"_E\"\n"
                "#     pragma extern_prefix \"_E\"\n"
                "# if !defined(_LIBC_POLLUTION_H_) && defined(__DECC)\n"
                "# if !defined(_LIBC_POLLUTION_H_) && defined(__DECC)\n"
                "#  pragma extern_prefix \"\"";
                "#  pragma extern_prefix \"\"";
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 .
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V4/5 .
 */
 */
fix = {
fix = {
    hackname  = alpha___extern_prefix_standards;
    hackname  = alpha___extern_prefix_standards;
    files     = standards.h;
    files     = standards.h;
    select    = ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)";
    select    = ".*!defined\\(_LIBC_POLLUTION_H_\\) && !defined\\(__DECC\\)";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0 && !defined(__PRAGMA_EXTERN_PREFIX)";
    c_fix_arg = "%0 && !defined(__PRAGMA_EXTERN_PREFIX)";
    test_text = "#if (_ISO_C_SOURCE>=19990L) && !defined(_LIBC_POLLUTION_H_) && !defined(__DECC)";
    test_text = "#if (_ISO_C_SOURCE>=19990L) && !defined(_LIBC_POLLUTION_H_) && !defined(__DECC)";
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5  and
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX V5  and
 *  .  The tests for __DECC are special in various ways, so
 *  .  The tests for __DECC are special in various ways, so
 *  alpha__extern_prefix cannot be used.
 *  alpha__extern_prefix cannot be used.
 */
 */
fix = {
fix = {
    hackname  = alpha___extern_prefix_sys_stat;
    hackname  = alpha___extern_prefix_sys_stat;
    files     = sys/stat.h;
    files     = sys/stat.h;
    files     = sys/mount.h;
    files     = sys/mount.h;
    select    = "#[ \t]*if[ \t]*defined\\(__DECC\\)";
    select    = "#[ \t]*if[ \t]*defined\\(__DECC\\)";
    mach      = "alpha*-dec-osf5*";
    mach      = "alpha*-dec-osf5*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0 || defined(__PRAGMA_EXTERN_PREFIX)";
    c_fix_arg = "%0 || defined(__PRAGMA_EXTERN_PREFIX)";
    test_text = "#   if defined(__DECC)";
    test_text = "#   if defined(__DECC)";
};
};
/*
/*
 *  Fix assert macro in assert.h on Alpha OSF/1.
 *  Fix assert macro in assert.h on Alpha OSF/1.
 *  The superfluous int cast breaks C++.
 *  The superfluous int cast breaks C++.
 */
 */
fix = {
fix = {
    hackname  = alpha_assert;
    hackname  = alpha_assert;
    files     = "assert.h";
    files     = "assert.h";
    select    = '(#define assert\(EX\).*)\(\(int\) \(EX\)\)';
    select    = '(#define assert\(EX\).*)\(\(int\) \(EX\)\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1(EX)";
    c_fix_arg = "%1(EX)";
    test_text = '#define assert(EX) (((int) (EX)) ? (void)0 : __assert(#EX, __FILE__, __LINE__))';
    test_text = '#define assert(EX) (((int) (EX)) ? (void)0 : __assert(#EX, __FILE__, __LINE__))';
};
};
/*
/*
 *  Fix #defines under Alpha OSF/1:
 *  Fix #defines under Alpha OSF/1:
 *  The following files contain '#pragma extern_prefix "_FOO"' followed by
 *  The following files contain '#pragma extern_prefix "_FOO"' followed by
 *  a '#define something(x,y,z) _FOOsomething(x,y,z)'.  The intent of these
 *  a '#define something(x,y,z) _FOOsomething(x,y,z)'.  The intent of these
 *  statements is to reduce namespace pollution.  While these macros work
 *  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
 *  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
 *  "something" being modified.  To get around this limitation, change these
 *  statements to be of the form '#define something _FOOsomething'.
 *  statements to be of the form '#define something _FOOsomething'.
 *
 *
 *  sed ain't egrep, lesson 2463:  sed can use self-referential
 *  sed ain't egrep, lesson 2463:  sed can use self-referential
 *  regular expressions.  In the substitute expression below,
 *  regular expressions.  In the substitute expression below,
 *  "\\1" and "\\2" refer to subexpressions found earlier in the
 *  "\\1" and "\\2" refer to subexpressions found earlier in the
 *  same match.  So, we continue to use sed.  "extern_prefix" will
 *  same match.  So, we continue to use sed.  "extern_prefix" will
 *  be a rare match anyway...
 *  be a rare match anyway...
 */
 */
fix = {
fix = {
    hackname = alpha_bad_lval;
    hackname = alpha_bad_lval;
    select   = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
    select   = "^[ \t]*#[ \t]*pragma[ \t]+extern_prefix";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    sed      =
    sed      =
        "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
        "s/^[ \t]*#[ \t]*define[ \t][ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
               "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
               "\\(_.*\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
    test_text = '#pragma extern_prefix "_FOO"'"\n"
    test_text = '#pragma extern_prefix "_FOO"'"\n"
                "#define something(x,y,z) _FOOsomething(x,y,z)\n"
                "#define something(x,y,z) _FOOsomething(x,y,z)\n"
                "#define mumble _FOOmumble";
                "#define mumble _FOOmumble";
};
};
/*
/*
 *  Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
 *  Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
 */
 */
fix = {
fix = {
    hackname  = alpha_getopt;
    hackname  = alpha_getopt;
    files     = "stdio.h";
    files     = "stdio.h";
    files     = "stdlib.h";
    files     = "stdlib.h";
    select    = 'getopt\(int, char \*\[\], *char \*\)';
    select    = 'getopt\(int, char \*\[\], *char \*\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "getopt(int, char *const[], const char *)";
    c_fix_arg = "getopt(int, char *const[], const char *)";
    test_text = 'extern int getopt(int, char *[], char *);';
    test_text = 'extern int getopt(int, char *[], char *);';
};
};
/*
/*
 * Remove erroneous parentheses in sym.h on Alpha OSF/1.
 * Remove erroneous parentheses in sym.h on Alpha OSF/1.
 */
 */
fix = {
fix = {
    hackname  = alpha_parens;
    hackname  = alpha_parens;
    files     = sym.h;
    files     = sym.h;
    select    = '#ifndef\(__mips64\)';
    select    = '#ifndef\(__mips64\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __mips64";
    c_fix_arg = "#ifndef __mips64";
    test_text = "#ifndef(__mips64) /* bogus */\nextern int foo;\n#endif";
    test_text = "#ifndef(__mips64) /* bogus */\nextern int foo;\n#endif";
};
};
/*
/*
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX .
 *  Obey __PRAGMA_EXTERN_PREFIX for Tru64 UNIX .
 */
 */
fix = {
fix = {
    hackname  = alpha_pthread;
    hackname  = alpha_pthread;
    files     = pthread.h;
    files     = pthread.h;
    select    = "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)|def _PTHREAD_ENV_DECC)(.*))\n"
    select    = "((#[ \t]*if)([ \t]*defined[ \t]*\\(_PTHREAD_ENV_DECC\\)|def _PTHREAD_ENV_DECC)(.*))\n"
                "(#[ \t]*define _PTHREAD_USE_PTDNAM_)";
                "(#[ \t]*define _PTHREAD_USE_PTDNAM_)";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%2 defined (_PTHREAD_ENV_DECC)%4 || defined (__PRAGMA_EXTERN_PREFIX)\n%5";
    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"
    test_text = "#  if defined (_PTHREAD_ENV_DECC) || defined (_PTHREAD_ENV_EPCC)\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#  endif\n"
                "#  endif\n"
                "#  ifdef _PTHREAD_ENV_DECC\n"
                "#  ifdef _PTHREAD_ENV_DECC\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#   define _PTHREAD_USE_PTDNAM_\n"
                "#  endif";
                "#  endif";
};
};
/*
/*
 *  Recognize GCC in Tru64 UNIX V5.1B .
 *  Recognize GCC in Tru64 UNIX V5.1B .
 */
 */
fix = {
fix = {
    hackname  = alpha_pthread_gcc;
    hackname  = alpha_pthread_gcc;
    files     = pthread.h;
    files     = pthread.h;
    select    = "#else\n# error : unrecognized compiler.";
    select    = "#else\n# error : unrecognized compiler.";
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#elif defined (__GNUC__)\n"
    c_fix_arg = "#elif defined (__GNUC__)\n"
                "# define _PTHREAD_ENV_GCC\n"
                "# define _PTHREAD_ENV_GCC\n"
                "%0";
                "%0";
    test_text = "# define _PTHREAD_ENV_INTELC\n"
    test_text = "# define _PTHREAD_ENV_INTELC\n"
                "#else\n"
                "#else\n"
                "# error : unrecognized compiler.\n"
                "# error : unrecognized compiler.\n"
                "#endif";
                "#endif";
};
};
/*
/*
 * Compaq Tru64 v5.1 defines all of its PTHREAD_*_INITIALIZER macros
 * Compaq Tru64 v5.1 defines all of its PTHREAD_*_INITIALIZER macros
 * incorrectly, specifying less fields in the initializers than are
 * incorrectly, specifying less fields in the initializers than are
 * defined in the corresponding structure types.  Use of these macros
 * defined in the corresponding structure types.  Use of these macros
 * in user code results in spurious warnings.
 * in user code results in spurious warnings.
 */
 */
fix = {
fix = {
    hackname  = alpha_pthread_init;
    hackname  = alpha_pthread_init;
    files     = pthread.h;
    files     = pthread.h;
    select    = ' \* @\(#\).RCSfile: pthread\.h,v \$'
    select    = ' \* @\(#\).RCSfile: pthread\.h,v \$'
                ' .Revision: 1\.1\.33\.21 \$ \(DEC\)'
                ' .Revision: 1\.1\.33\.21 \$ \(DEC\)'
                ' .Date: 2000/08/15 15:30:13 \$';
                ' .Date: 2000/08/15 15:30:13 \$';
    mach      = "alpha*-dec-osf*";
    mach      = "alpha*-dec-osf*";
    sed       = "s@MVALID\\(.*\\)A}@MVALID\\1A, 0, 0, 0, 0, 0, 0 }@\n"
    sed       = "s@MVALID\\(.*\\)A}@MVALID\\1A, 0, 0, 0, 0, 0, 0 }@\n"
                "s@MVALID\\(.*\\)_}@MVALID\\1_, 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\\(.*\\)A}@CVALID\\1A, 0, 0, 0, 0 }@\n"
                "s@CVALID\\(.*\\)_}@CVALID\\1_, 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\\(.*\\)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";
                "s@WVALID\\(.*\\)_}@WVALID\\1_, 0, 0, 0, 0, 0, 0, 0 }@\n";
    test_text = "/*\n"
    test_text = "/*\n"
                " * @(#)_RCSfile: pthread.h,v \\$ "
                " * @(#)_RCSfile: pthread.h,v \\$ "
                "_Revision: 1.1.33.21 \\$ (DEC) "
                "_Revision: 1.1.33.21 \\$ (DEC) "
                "_Date: 2000/08/15 15:30:13 \\$\n"
                "_Date: 2000/08/15 15:30:13 \\$\n"
                " */\n"
                " */\n"
"#ifndef _PTHREAD_NOMETER_STATIC\n"
"#ifndef _PTHREAD_NOMETER_STATIC\n"
"# define PTHREAD_MUTEX_INITIALIZER \\\n"
"# define PTHREAD_MUTEX_INITIALIZER \\\n"
"    {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA}\n"
"    {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA}\n"
"# define PTHREAD_COND_INITIALIZER \\\n"
"# define PTHREAD_COND_INITIALIZER \\\n"
"    {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA}\n"
"    {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA}\n"
"# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \\\n"
"# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \\\n"
"    {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}\n"
"    {_PTHREAD_MSTATE_CONFIG, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}\n"
"# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \\\n"
"# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \\\n"
"    {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}\n"
"    {_PTHREAD_CSTATE_SLOW, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}\n"
"#else\n"
"#else\n"
"# define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA}\n"
"# define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA}\n"
"# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \\\n"
"# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) \\\n"
"    {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}\n"
"    {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_}\n"
"# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \\\n"
"# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) \\\n"
"    {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}\n"
"    {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_}\n"
"#endif\n\n"
"#endif\n\n"
"#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA}\n"
"#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA}\n"
"#define PTHREAD_RWLOCK_INITWITHNAME_NP(_n_,_a_) \\\n"
"#define PTHREAD_RWLOCK_INITWITHNAME_NP(_n_,_a_) \\\n"
"        {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, _n_, _a_}\n";
"        {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, _n_, _a_}\n";
};
};
/*
/*
 *  Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
 *  Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
 *  And OpenBSD.
 *  And OpenBSD.
 */
 */
fix = {
fix = {
    hackname = alpha_sbrk;
    hackname = alpha_sbrk;
    files    = unistd.h;
    files    = unistd.h;
    select   = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
    select   = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "void *sbrk(";
    c_fix_arg = "void *sbrk(";
    test_text = "extern char* sbrk(ptrdiff_t increment);";
    test_text = "extern char* sbrk(ptrdiff_t increment);";
};
};
/*
/*
 *  Change external names of wcstok/wcsftime via asm instead of macros on
 *  Change external names of wcstok/wcsftime via asm instead of macros on
 *  Tru64 UNIX V4.0.
 *  Tru64 UNIX V4.0.
 */
 */
fix = {
fix = {
    hackname = alpha_wchar;
    hackname = alpha_wchar;
    files    = wchar.h;
    files    = wchar.h;
    mach     = "alpha*-dec-osf4*";
    mach     = "alpha*-dec-osf4*";
    select   = "#define wcstok wcstok_r";
    select   = "#define wcstok wcstok_r";
    sed      = "s@#define wcstok wcstok_r@extern wchar_t *wcstok __((wchar_t *, const wchar_t *, wchar_t **)) __asm__(\"wcstok_r\");@";
    sed      = "s@#define wcstok wcstok_r@extern wchar_t *wcstok __((wchar_t *, const wchar_t *, wchar_t **)) __asm__(\"wcstok_r\");@";
    sed      = "s@#define wcsftime __wcsftime_isoc@extern size_t   wcsftime __((wchar_t *, size_t, const wchar_t *, const struct tm *)) __asm__(\"__wcsftime_isoc\");@";
    sed      = "s@#define wcsftime __wcsftime_isoc@extern size_t   wcsftime __((wchar_t *, size_t, const wchar_t *, const struct tm *)) __asm__(\"__wcsftime_isoc\");@";
    test_text = "#define wcstok wcstok_r\n"
    test_text = "#define wcstok wcstok_r\n"
                "#define wcsftime __wcsftime_isoc";
                "#define wcsftime __wcsftime_isoc";
};
};
/*
/*
 *  For C++, avoid any typedef or macro definition of bool,
 *  For C++, avoid any typedef or macro definition of bool,
 *  and use the built in type instead.
 *  and use the built in type instead.
 *  HP/UX 10.20 also has it in curses_colr/curses.h.
 *  HP/UX 10.20 also has it in curses_colr/curses.h.
 */
 */
fix = {
fix = {
    hackname  = avoid_bool_define;
    hackname  = avoid_bool_define;
    files     = curses.h;
    files     = curses.h;
    files     = curses_colr/curses.h;
    files     = curses_colr/curses.h;
    files     = term.h;
    files     = term.h;
    files     = tinfo.h;
    files     = tinfo.h;
    select    = "#[ \t]*define[ \t]+bool[ \t]";
    select    = "#[ \t]*define[ \t]+bool[ \t]";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*";
    c_fix_arg = "^[ \t]*#[ \t]*define[ \t]+bool[ \t].*";
    test_text = "# define bool\t char \n";
    test_text = "# define bool\t char \n";
};
};
fix = {
fix = {
    hackname = avoid_bool_type;
    hackname = avoid_bool_type;
    files    = curses.h;
    files    = curses.h;
    files    = curses_colr/curses.h;
    files    = curses_colr/curses.h;
    files    = term.h;
    files    = term.h;
    files    = tinfo.h;
    files    = tinfo.h;
    select    = "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;";
    select    = "^[ \t]*typedef[ \t].*[ \t]bool[ \t]*;";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    test_text = "typedef unsigned int\tbool \t; /* bool\n type */";
    test_text = "typedef unsigned int\tbool \t; /* bool\n type */";
};
};
/*
/*
 *  For C++, avoid any typedef definition of wchar_t,
 *  For C++, avoid any typedef definition of wchar_t,
 *  and use the built in type instead.
 *  and use the built in type instead.
 *  Don't do this for headers that are smart enough to do the right
 *  Don't do this for headers that are smart enough to do the right
 *  thing (recent [n]curses.h and Xlib.h).
 *  thing (recent [n]curses.h and Xlib.h).
 *  Don't do it for  which is never used from C++ anyway,
 *  Don't do it for  which is never used from C++ anyway,
 *  and will be broken by the edit.
 *  and will be broken by the edit.
 */
 */
fix = {
fix = {
    hackname = avoid_wchar_t_type;
    hackname = avoid_wchar_t_type;
    select    = "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;";
    select    = "^[ \t]*typedef[ \t].*[ \t]wchar_t[ \t]*;";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    bypass    = "_LINUX_NLS_H";
    bypass    = "_LINUX_NLS_H";
    bypass    = "XFree86: xc/lib/X11/Xlib\\.h";
    bypass    = "XFree86: xc/lib/X11/Xlib\\.h";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    test_text = "typedef unsigned short\twchar_t \t; /* wchar_t\n type */";
    test_text = "typedef unsigned short\twchar_t \t; /* wchar_t\n type */";
};
};
/*
/*
 *  Fix `typedef struct term;' on hppa1.1-hp-hpux9.
 *  Fix `typedef struct term;' on hppa1.1-hp-hpux9.
 */
 */
fix = {
fix = {
    hackname  = bad_struct_term;
    hackname  = bad_struct_term;
    files     = curses.h;
    files     = curses.h;
    select    = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
    select    = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct term;";
    c_fix_arg = "struct term;";
    test_text = 'typedef struct term;';
    test_text = 'typedef struct term;';
};
};
/*
/*
 *  Fix one other error in this file:
 *  Fix one other error in this file:
 *  a mismatched quote not inside a C comment.
 *  a mismatched quote not inside a C comment.
 */
 */
fix = {
fix = {
    hackname  = badquote;
    hackname  = badquote;
    files     = sundev/vuid_event.h;
    files     = sundev/vuid_event.h;
    select    = "doesn't";
    select    = "doesn't";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "does not";
    c_fix_arg = "does not";
    test_text = "/* doesn't have matched single quotes */";
    test_text = "/* doesn't have matched single quotes */";
};
};
/*
/*
 *  check for broken assert.h that needs stdio.h
 *  check for broken assert.h that needs stdio.h
 */
 */
fix = {
fix = {
    hackname  = broken_assert_stdio;
    hackname  = broken_assert_stdio;
    files     = assert.h;
    files     = assert.h;
    select    = stderr;
    select    = stderr;
    bypass    = "include.*stdio\\.h";
    bypass    = "include.*stdio\\.h";
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#include \n";
    c_fix_arg = "#include \n";
    test_text = "extern FILE* stderr;";
    test_text = "extern FILE* stderr;";
};
};
/*
/*
 *  check for broken assert.h that needs stdlib.h
 *  check for broken assert.h that needs stdlib.h
 */
 */
fix = {
fix = {
    hackname  = broken_assert_stdlib;
    hackname  = broken_assert_stdlib;
    files     = assert.h;
    files     = assert.h;
    select    = 'exit *\(|abort *\(';
    select    = 'exit *\(|abort *\(';
    bypass    = "include.*stdlib\\.h";
    bypass    = "include.*stdlib\\.h";
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "#include \n"
                "#include \n"
                "#endif\n";
                "#endif\n";
    test_text = "extern void exit ( int );";
    test_text = "extern void exit ( int );";
};
};
/*
/*
 *  Remove `extern double cabs' declarations from math.h.
 *  Remove `extern double cabs' declarations from math.h.
 *  This conflicts with C99.  Discovered on AIX.
 *  This conflicts with C99.  Discovered on AIX.
 *  IRIX 5 and IRIX 6 before 6.5.18 (where C99 support was introduced)
 *  IRIX 5 and IRIX 6 before 6.5.18 (where C99 support was introduced)
 *  declares cabs() to take a struct __cabs_s argument.
 *  declares cabs() to take a struct __cabs_s argument.
 *  SunOS4 has its cabs() declaration followed by a comment which
 *  SunOS4 has its cabs() declaration followed by a comment which
 *  terminates on the following line.
 *  terminates on the following line.
 *  Darwin hides its broken cabs in architecture-specific subdirs.
 *  Darwin hides its broken cabs in architecture-specific subdirs.
 */
 */
fix = {
fix = {
    hackname = broken_cabs;
    hackname = broken_cabs;
    files    = "math.h";
    files    = "math.h";
    files    = "architecture/ppc/math.h";
    files    = "architecture/ppc/math.h";
    files    = "architecture/i386/math.h";
    files    = "architecture/i386/math.h";
    select   = "^extern[ \t]+double[ \t]+cabs";
    select   = "^extern[ \t]+double[ \t]+cabs";
    sed       = "s/^extern[ \t]*double[ \t]*cabs[ \t]*\([^\\\)]*\);//";
    sed       = "s/^extern[ \t]*double[ \t]*cabs[ \t]*\([^\\\)]*\);//";
    sed       = "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*\([^\\\)]*\);//";
    sed       = "s/^extern[ \t]*long[ \t]*double[ \t]*cabsl[ \t]*\([^\\\)]*\);//";
    test_text = "#ifdef __STDC__\n"
    test_text = "#ifdef __STDC__\n"
                "extern     double   cabs(struct dbl_hypot);\n"
                "extern     double   cabs(struct dbl_hypot);\n"
                "#else\n"
                "#else\n"
                "extern     double   cabs();\n"
                "extern     double   cabs();\n"
                "#endif\n"
                "#endif\n"
                "extern double cabs ( _Complex z );\n"
                "extern double cabs ( _Complex z );\n"
                "extern double cabs(); /* This is a comment\n"
                "extern double cabs(); /* This is a comment\n"
                "                         and it ends here. */\n"
                "                         and it ends here. */\n"
                "extern double  cabs(struct __cabs_s);\n"
                "extern double  cabs(struct __cabs_s);\n"
                "extern long double cabsl( struct __cabsl_s );";
                "extern long double cabsl( struct __cabsl_s );";
};
};
/*
/*
 * Fixup Darwin's broken check for __builtin_nanf.
 * Fixup Darwin's broken check for __builtin_nanf.
 */
 */
fix = {
fix = {
    hackname  = broken_nan;
    hackname  = broken_nan;
    files     = "architecture/ppc/math.h";
    files     = "architecture/ppc/math.h";
    files     = "architecture/i386/math.h";
    files     = "architecture/i386/math.h";
    select    = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
    select    = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
    bypass    = "powl";
    bypass    = "powl";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if 1";
    c_fix_arg = "#if 1";
    test_text = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
    test_text = "#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 1345)";
};
};
/*
/*
 *  Various systems derived from BSD4.4 contain a macro definition
 *  Various systems derived from BSD4.4 contain a macro definition
 *  for vfscanf that interacts badly with requirements of builtin-attrs.def.
 *  for vfscanf that interacts badly with requirements of builtin-attrs.def.
 *  Known to be fixed in FreeBSD 5 system headers.
 *  Known to be fixed in FreeBSD 5 system headers.
 */
 */
fix = {
fix = {
    hackname  = bsd_stdio_attrs_conflict;
    hackname  = bsd_stdio_attrs_conflict;
    mach      = *-*-*bsd*;
    mach      = *-*-*bsd*;
    mach      = *-*-*darwin*;
    mach      = *-*-*darwin*;
    files     = stdio.h;
    files     = stdio.h;
    select    = "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$";
    select    = "^#define[ \t]*vfscanf[ \t]*__svfscanf[ \t]*$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)' "\n"
    c_fix_arg = '#define _BSD_STRING(_BSD_X) _BSD_STRINGX(_BSD_X)' "\n"
                '#define _BSD_STRINGX(_BSD_X) #_BSD_X' "\n"
                '#define _BSD_STRINGX(_BSD_X) #_BSD_X' "\n"
                'int vfscanf(FILE *, const char *, __builtin_va_list) '
                'int vfscanf(FILE *, const char *, __builtin_va_list) '
                '__asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf");';
                '__asm__ (_BSD_STRING(__USER_LABEL_PREFIX__) "__svfscanf");';
    test_text = '#define  vfscanf       __svfscanf';
    test_text = '#define  vfscanf       __svfscanf';
};
};
/*
/*
 *  Fix various macros used to define ioctl numbers.
 *  Fix various macros used to define ioctl numbers.
 *  The traditional syntax was:
 *  The traditional syntax was:
 *
 *
 *    #define _CTRL(n, x) (('n'<<8)+x)
 *    #define _CTRL(n, x) (('n'<<8)+x)
 *    #define TCTRLCFOO _CTRL(T, 1)
 *    #define TCTRLCFOO _CTRL(T, 1)
 *
 *
 *  but this does not work with the C standard, which disallows macro
 *  but this does not work with the C standard, which disallows macro
 *  expansion inside strings.  We have to rewrite it thus:
 *  expansion inside strings.  We have to rewrite it thus:
 *
 *
 *    #define _CTRL(n, x) ((n<<8)+x)
 *    #define _CTRL(n, x) ((n<<8)+x)
 *    #define TCTRLCFOO  _CTRL('T', 1)
 *    #define TCTRLCFOO  _CTRL('T', 1)
 *
 *
 *  The select expressions match too much, but the c_fix code is cautious.
 *  The select expressions match too much, but the c_fix code is cautious.
 *
 *
 *  CTRL might be: CTRL _CTRL ISCTRL BSD43_CTRL ...
 *  CTRL might be: CTRL _CTRL ISCTRL BSD43_CTRL ...
 */
 */
fix = {
fix = {
    hackname  = ctrl_quotes_def;
    hackname  = ctrl_quotes_def;
    select    = "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]";
    select    = "define[ \t]+[A-Z0-9_]+CTRL\\([a-zA-Z][,)]";
    c_fix     = char_macro_def;
    c_fix     = char_macro_def;
    c_fix_arg = "CTRL";
    c_fix_arg = "CTRL";
    /*
    /*
     *  This is two tests in order to ensure that the "CTRL(c)" can
     *  This is two tests in order to ensure that the "CTRL(c)" can
     *  be selected in isolation from the multi-arg format
     *  be selected in isolation from the multi-arg format
     */
     */
    test_text = "#define BSD43_CTRL(n, x) (('n'<<8)+x)\n";
    test_text = "#define BSD43_CTRL(n, x) (('n'<<8)+x)\n";
    test_text = "#define _CTRL(c) ('c'&037)";
    test_text = "#define _CTRL(c) ('c'&037)";
};
};
fix = {
fix = {
    hackname  = ctrl_quotes_use;
    hackname  = ctrl_quotes_use;
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']";
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+CTRL[ \t]*\\( *[^,']";
    c_fix     = char_macro_use;
    c_fix     = char_macro_use;
    c_fix_arg = "CTRL";
    c_fix_arg = "CTRL";
    test_text = "#define TCTRLFOO BSD43_CTRL(T, 1)";
    test_text = "#define TCTRLFOO BSD43_CTRL(T, 1)";
};
};
/*
/*
 *  sys/mman.h on HP/UX is not C++ ready,
 *  sys/mman.h on HP/UX is not C++ ready,
 *  even though NO_IMPLICIT_EXTERN_C is defined on HP/UX.
 *  even though NO_IMPLICIT_EXTERN_C is defined on HP/UX.
 *
 *
 *  rpc/types.h on OSF1/2.0 is not C++ ready,
 *  rpc/types.h on OSF1/2.0 is not C++ ready,
 *  even though NO_IMPLICIT_EXTERN_C is defined for the alpha.
 *  even though NO_IMPLICIT_EXTERN_C is defined for the alpha.
 *
 *
 *  The problem is the declaration of malloc.
 *  The problem is the declaration of malloc.
 */
 */
fix = {
fix = {
    hackname = cxx_unready;
    hackname = cxx_unready;
    files    = sys/mman.h;
    files    = sys/mman.h;
    files    = rpc/types.h;
    files    = rpc/types.h;
    select   = '[^#]+malloc.*;';  /* Catch any form of declaration
    select   = '[^#]+malloc.*;';  /* Catch any form of declaration
                                     not within a macro.  */
                                     not within a macro.  */
    bypass   = '"C"|__BEGIN_DECLS';
    bypass   = '"C"|__BEGIN_DECLS';
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "extern \"C\" {\n"
                "extern \"C\" {\n"
                "#endif\n";
                "#endif\n";
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "}\n"
                "}\n"
                "#endif\n";
                "#endif\n";
    test_text = "extern void* malloc( size_t );";
    test_text = "extern void* malloc( size_t );";
};
};
/*
/*
 * AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of
 * AvailabilityMacros.h on Darwin breaks with GCC 4.0, because of
 * bad __GNUC__ tests.
 * bad __GNUC__ tests.
 */
 */
fix = {
fix = {
  hackname  = darwin_gcc4_breakage;
  hackname  = darwin_gcc4_breakage;
  mach      = "*-*-darwin*";
  mach      = "*-*-darwin*";
  files     = AvailabilityMacros.h;
  files     = AvailabilityMacros.h;
  select    = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
  select    = "\\(__GNUC__ >= 3\\) && \\(__GNUC_MINOR__ >= 1\\)";
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))";
  c_fix_arg = "((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))";
  test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && "
  test_text = "#if defined(__GNUC__) && (__GNUC__ >= 3) && "
              "(__GNUC_MINOR__ >= 1)\n";
              "(__GNUC_MINOR__ >= 1)\n";
};
};
/*
/*
 *  __private_extern__ doesn't exist in FSF GCC.  Even if it did,
 *  __private_extern__ doesn't exist in FSF GCC.  Even if it did,
 *  why would you ever put it in a system header file?
 *  why would you ever put it in a system header file?
 */
 */
fix = {
fix = {
  hackname  = darwin_private_extern;
  hackname  = darwin_private_extern;
  mach      = "*-*-darwin*";
  mach      = "*-*-darwin*";
  files     = mach-o/dyld.h;
  files     = mach-o/dyld.h;
  select    = "__private_extern__ [a-z_]+ _dyld_";
  select    = "__private_extern__ [a-z_]+ _dyld_";
  c_fix     = format;
  c_fix     = format;
  c_fix_arg = "extern";
  c_fix_arg = "extern";
  c_fix_arg = "__private_extern__";
  c_fix_arg = "__private_extern__";
  test_text = "__private_extern__ int _dyld_func_lookup(\n"
  test_text = "__private_extern__ int _dyld_func_lookup(\n"
              "const char *dyld_func_name,\n"
              "const char *dyld_func_name,\n"
              "unsigned long *address);\n";
              "unsigned long *address);\n";
};
};
/*
/*
 *  Fix  on Digital UNIX V4.0:
 *  Fix  on Digital UNIX V4.0:
 *  It contains a prototype for a DEC C internal asm() function,
 *  It contains a prototype for a DEC C internal asm() function,
 *  clashing with gcc's asm keyword.  So protect this with __DECC.
 *  clashing with gcc's asm keyword.  So protect this with __DECC.
 */
 */
fix = {
fix = {
    hackname = dec_intern_asm;
    hackname = dec_intern_asm;
    files    = c_asm.h;
    files    = c_asm.h;
    sed = "/^[ \t]*float[ \t]*fasm/i\\\n#ifdef __DECC\n";
    sed = "/^[ \t]*float[ \t]*fasm/i\\\n#ifdef __DECC\n";
    sed = "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n"
    sed = "/^[ \t]*#[ \t]*pragma[ \t]*intrinsic([ \t]*dasm/a\\\n"
          "#endif\n";
          "#endif\n";
    test_text =
    test_text =
    "float fasm {\n"
    "float fasm {\n"
    "    ... asm stuff ...\n"
    "    ... asm stuff ...\n"
    "};\n#pragma intrinsic( dasm )\n/* END ASM TEST*/";
    "};\n#pragma intrinsic( dasm )\n/* END ASM TEST*/";
};
};
/*
/*
 * Fix typo in  on DJGPP 2.03.
 * Fix typo in  on DJGPP 2.03.
 */
 */
fix = {
fix = {
    hackname  = djgpp_wchar_h;
    hackname  = djgpp_wchar_h;
    file      = wchar.h;
    file      = wchar.h;
    select    = "__DJ_wint_t";
    select    = "__DJ_wint_t";
    bypass    = "sys/djtypes.h";
    bypass    = "sys/djtypes.h";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n#include ";
    c_fix_arg = "%0\n#include ";
    c_fix_arg = "#include ";
    c_fix_arg = "#include ";
    test_text = "#include \n"
    test_text = "#include \n"
                "extern __DJ_wint_t x;\n";
                "extern __DJ_wint_t x;\n";
};
};
/*
/*
 * Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
 * Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
 */
 */
fix = {
fix = {
    hackname  = ecd_cursor;
    hackname  = ecd_cursor;
    files     = "sunwindow/win_lock.h";
    files     = "sunwindow/win_lock.h";
    files     = "sunwindow/win_cursor.h";
    files     = "sunwindow/win_cursor.h";
    select    = 'ecd\.cursor';
    select    = 'ecd\.cursor';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'ecd_cursor';
    c_fix_arg = 'ecd_cursor';
    test_text = "#ifdef ecd.cursor\n#error bogus\n#endif /* ecd+cursor */";
    test_text = "#ifdef ecd.cursor\n#error bogus\n#endif /* ecd+cursor */";
};
};
/*
/*
 *  math.h on SunOS 4 puts the declaration of matherr before the definition
 *  math.h on SunOS 4 puts the declaration of matherr before the definition
 *  of struct exception, so the prototype (added by fixproto) causes havoc.
 *  of struct exception, so the prototype (added by fixproto) causes havoc.
 *  This must appear before the math_exception fix.
 *  This must appear before the math_exception fix.
 */
 */
fix = {
fix = {
    hackname  = exception_structure;
    hackname  = exception_structure;
    files     = math.h;
    files     = math.h;
    /*  If matherr has a prototype already, the header needs no fix.  */
    /*  If matherr has a prototype already, the header needs no fix.  */
    bypass    = 'matherr.*(struct exception|__MATH_EXCEPTION|[ \t]*__FP_EXCEPTION[ \t]*\*[ \t]*)';
    bypass    = 'matherr.*(struct exception|__MATH_EXCEPTION|[ \t]*__FP_EXCEPTION[ \t]*\*[ \t]*)';
    select    = matherr;
    select    = matherr;
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "struct exception;\n";
    c_fix_arg = "struct exception;\n";
    test_text = "extern int matherr();";
    test_text = "extern int matherr();";
};
};
/*
/*
 *  Between 8/24/1998 and 2/17/2001, FreeBSD system headers presume
 *  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
 *  neither the existence of GCC 3 nor its exact feature set yet break
 *  (by design?) when __GNUC__ is set beyond 2.
 *  (by design?) when __GNUC__ is set beyond 2.
 */
 */
fix = {
fix = {
    hackname  = freebsd_gcc3_breakage;
    hackname  = freebsd_gcc3_breakage;
    mach      = *-*-freebsd*;
    mach      = *-*-freebsd*;
    files     = sys/cdefs.h;
    files     = sys/cdefs.h;
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$';
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7$';
    bypass    = '__GNUC__[ \t]*([>=]=[ \t]*[3-9]|>[ \t]*2)';
    bypass    = '__GNUC__[ \t]*([>=]=[ \t]*[3-9]|>[ \t]*2)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '%0 || __GNUC__ >= 3';
    c_fix_arg = '%0 || __GNUC__ >= 3';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7';
};
};
/*
/*
 *  Some releases of FreeBSD 4 and FreeBSD 5.0 and 5.1 system headers presume
 *  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
 *  neither the existence of GCC 4 nor its exact feature set yet break
 *  (by design?) when __GNUC__ is set beyond 3.
 *  (by design?) when __GNUC__ is set beyond 3.
 */
 */
fix = {
fix = {
    hackname  = freebsd_gcc4_breakage;
    hackname  = freebsd_gcc4_breakage;
    mach      = *-*-freebsd*;
    mach      = *-*-freebsd*;
    files     = sys/cdefs.h;
    files     = sys/cdefs.h;
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \|\| __GNUC__ == 3$';
    select    = '^#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 \|\| __GNUC__ == 3$';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3';
    c_fix_arg = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3';
    test_text = '#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ == 3';
};
};
/*  glibc-2.3.5 defines pthread mutex initializers incorrectly,
/*  glibc-2.3.5 defines pthread mutex initializers incorrectly,
 *  so we replace them with versions that correspond to the
 *  so we replace them with versions that correspond to the
 *  definition.
 *  definition.
 */
 */
fix = {
fix = {
    hackname = glibc_mutex_init;
    hackname = glibc_mutex_init;
    files    = pthread.h;
    files    = pthread.h;
    select   = '\{ *\{ *0, *\} *\}';
    select   = '\{ *\{ *0, *\} *\}';
    sed      = "/define[ \t]\\+PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/,+1"
    sed      = "/define[ \t]\\+PTHREAD_MUTEX_INITIALIZER[ \t]*\\\\/,+1"
               "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/";
               "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/";
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_\\(RECURSIVE\\|ERRORCHECK\\|ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/";
    sed      = "s/{ \\(0, 0, 0, 0, PTHREAD_MUTEX_\\(RECURSIVE\\|ERRORCHECK\\|ADAPTIVE\\)_NP\\) }/{ \\1, 0 }/";
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_\\(RECURSIVE\\|ERRORCHECK\\|ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
    sed      = "s/{ \\(0, 0, 0, PTHREAD_MUTEX_\\(RECURSIVE\\|ERRORCHECK\\|ADAPTIVE\\)_NP\\) }/{ \\1, 0, 0 }/";
    sed      = "/define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/"
    sed      = "/define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\/"
               "N;s/^[ \t]*#[ \t]*"
               "N;s/^[ \t]*#[ \t]*"
               "\\(define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n"
               "\\(define[ \t]\\+PTHREAD_RWLOCK_INITIALIZER[ \t]*\\\\\\)\\n"
               "[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\n"
               "[ \t]*{ { 0, } }/# if __WORDSIZE == 64\\n"
               "#  \\1\\n"
               "#  \\1\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }\\n"
               "# else\\n"
               "# else\\n"
               "#  \\1\\n"
               "#  \\1\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\n"
               "  { { 0, 0, 0, 0, 0, 0, 0, 0 } }\\n"
               "# endif/";
               "# endif/";
    sed      = "s/{ \\(0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/";
    sed      = "s/{ \\(0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP\\) }/{ \\1, 0 }/";
    sed      = "/define[ \t]\\+PTHREAD_COND_INITIALIZER/"
    sed      = "/define[ \t]\\+PTHREAD_COND_INITIALIZER/"
               "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/";
               "s/{ { 0, } }/{ { 0, 0, 0, 0, 0, (void *) 0, 0, 0 } }/";
    test_text = <<- _EOText_
    test_text = <<- _EOText_
#define PTHREAD_MUTEX_INITIALIZER \\
#define PTHREAD_MUTEX_INITIALIZER \\
  { { 0, } }
  { { 0, } }
#ifdef __USE_GNU
#ifdef __USE_GNU
# if __WORDSIZE == 64
# if __WORDSIZE == 64
#  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
#  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
  { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
  { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
#  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
#  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
  { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
  { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
#  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
#  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
  { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
  { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
# else
# else
#  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
#  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \\
  { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
  { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP } }
#  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
#  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \\
  { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
  { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP } }
#  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
#  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \\
  { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
  { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP } }
# endif
# endif
#endif
#endif
# define PTHREAD_RWLOCK_INITIALIZER \\
# define PTHREAD_RWLOCK_INITIALIZER \\
  { { 0, } }
  { { 0, } }
# ifdef __USE_GNU
# ifdef __USE_GNU
#  if __WORDSIZE == 64
#  if __WORDSIZE == 64
#   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
#   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,                                           \\
  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,                                           \\
      PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
      PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
#  else
#  else
#   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
#   define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \\
  { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
  { { 0, 0, 0, 0, 0, 0, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
#  endif
#  endif
# endif
# endif
#define PTHREAD_COND_INITIALIZER { { 0, } }
#define PTHREAD_COND_INITIALIZER { { 0, } }
_EOText_;
_EOText_;
};
};
/*
/*
 * Fix these files to use the types we think they should for
 * Fix these files to use the types we think they should for
 * ptrdiff_t, size_t, and wchar_t.
 * ptrdiff_t, size_t, and wchar_t.
 *
 *
 * This defines the types in terms of macros predefined by our 'cpp'.
 * This defines the types in terms of macros predefined by our 'cpp'.
 * This is supposedly necessary for glibc's handling of these types.
 * This is supposedly necessary for glibc's handling of these types.
 * It's probably not necessary for anyone else, but it doesn't hurt.
 * It's probably not necessary for anyone else, but it doesn't hurt.
 */
 */
fix = {
fix = {
    hackname  = gnu_types;
    hackname  = gnu_types;
    files  = "sys/types.h";
    files  = "sys/types.h";
    files  = "stdlib.h";
    files  = "stdlib.h";
    files  = "sys/stdtypes.h";
    files  = "sys/stdtypes.h";
    files  = "stddef.h";
    files  = "stddef.h";
    files  = "memory.h";
    files  = "memory.h";
    files  = "unistd.h";
    files  = "unistd.h";
    bypass    = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
    bypass    = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
    select    = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
    select    = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
    c_fix     = gnu_type;
    c_fix     = gnu_type;
    /* The Solaris 10 headers already define these types correctly.  */
    /* The Solaris 10 headers already define these types correctly.  */
    mach   = '*-*-solaris2.1[0-9]*';
    mach   = '*-*-solaris2.1[0-9]*';
    not_machine = true;
    not_machine = true;
    test_text = "typedef long int ptrdiff_t; /* long int */\n"
    test_text = "typedef long int ptrdiff_t; /* long int */\n"
                "typedef uint_t size_t; /* uint_t */\n"
                "typedef uint_t size_t; /* uint_t */\n"
                "typedef ushort_t wchar_t; /* ushort_t */";
                "typedef ushort_t wchar_t; /* ushort_t */";
};
};
/*
/*
 *  Fix HP & Sony's use of "../machine/xxx.h"
 *  Fix HP & Sony's use of "../machine/xxx.h"
 *  to refer to:  
 *  to refer to:  
 */
 */
fix = {
fix = {
    hackname  = hp_inline;
    hackname  = hp_inline;
    files     = sys/spinlock.h;
    files     = sys/spinlock.h;
    files     = machine/machparam.h;
    files     = machine/machparam.h;
    select    = "[ \t]*#[ \t]*include[ \t]+"  '"\.\./machine/';
    select    = "[ \t]*#[ \t]*include[ \t]+"  '"\.\./machine/';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1";
    c_fix_arg = "%1";
    c_fix_arg = "([ \t]*#[ \t]*include[ \t]+)"  '"\.\./machine/'
    c_fix_arg = "([ \t]*#[ \t]*include[ \t]+)"  '"\.\./machine/'
                '([a-z]+)\.h"';
                '([a-z]+)\.h"';
    test_text = ' # include "../machine/mumble.h"';
    test_text = ' # include "../machine/mumble.h"';
};
};
/*
/*
 *  Check for (...) in C++ code in HP/UX sys/file.h.
 *  Check for (...) in C++ code in HP/UX sys/file.h.
 */
 */
fix = {
fix = {
    hackname  = hp_sysfile;
    hackname  = hp_sysfile;
    files     = sys/file.h;
    files     = sys/file.h;
    select    = "HPUX_SOURCE";
    select    = "HPUX_SOURCE";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "(struct file *, ...)";
    c_fix_arg = "(struct file *, ...)";
    c_fix_arg = '\(\.\.\.\)';
    c_fix_arg = '\(\.\.\.\)';
    test_text = "extern void foo(...); /* HPUX_SOURCE - bad varargs */";
    test_text = "extern void foo(...); /* HPUX_SOURCE - bad varargs */";
};
};
/*
/*
 * Delete C++ double pow (double, int) inline function from HP-UX 10 & 11
 * 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.
 * math.h to prevent clash with define in c_std/bits/std_cmath.h.
 */
 */
fix = {
fix = {
    hackname  = hpux10_cpp_pow_inline;
    hackname  = hpux10_cpp_pow_inline;
    files     = fixinc-test-limits.h, math.h;
    files     = fixinc-test-limits.h, math.h;
    select    = <<-     END_POW_INLINE
    select    = <<-     END_POW_INLINE
        ^# +ifdef +__cplusplus
        ^# +ifdef +__cplusplus
         +\}
         +\}
         +inline +double +pow\(double +__d,int +__expon\) +\{
         +inline +double +pow\(double +__d,int +__expon\) +\{
        [       ]+return +pow\(__d,\(double\)__expon\);
        [       ]+return +pow\(__d,\(double\)__expon\);
         +\}
         +\}
         +extern +"C" +\{
         +extern +"C" +\{
        #else
        #else
        # +endif
        # +endif
        END_POW_INLINE;
        END_POW_INLINE;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "";
    c_fix_arg = "";
    test_text =
    test_text =
        "#    ifdef __cplusplus\n"
        "#    ifdef __cplusplus\n"
        "     }\n"
        "     }\n"
        "     inline double pow(double __d,int __expon) {\n"
        "     inline double pow(double __d,int __expon) {\n"
        "\t return pow(__d,(double)__expon);\n"
        "\t return pow(__d,(double)__expon);\n"
        "     }\n"
        "     }\n"
        '     extern "C"' " {\n"
        '     extern "C"' " {\n"
        "#else\n"
        "#else\n"
        "#    endif";
        "#    endif";
};
};
fix = {
fix = {
     hackname  = hpux11_cpp_pow_inline;
     hackname  = hpux11_cpp_pow_inline;
     files     = math.h;
     files     = math.h;
     select    = " +inline double pow\\(double d,int expon\\) \\{\n"
     select    = " +inline double pow\\(double d,int expon\\) \\{\n"
                 " +return pow\\(d, \\(double\\)expon\\);\n"
                 " +return pow\\(d, \\(double\\)expon\\);\n"
                 " +\\}\n";
                 " +\\}\n";
     c_fix     = format;
     c_fix     = format;
     c_fix_arg = "";
     c_fix_arg = "";
     test_text =
     test_text =
            "   inline double pow(double d,int expon) {\n"
            "   inline double pow(double d,int expon) {\n"
            "     return pow(d, (double)expon);\n"
            "     return pow(d, (double)expon);\n"
            "   }\n";
            "   }\n";
};
};
/*
/*
 *  Fix hpux 10.X missing ctype declarations 1
 *  Fix hpux 10.X missing ctype declarations 1
 */
 */
fix = {
fix = {
    hackname = hpux10_ctype_declarations1;
    hackname = hpux10_ctype_declarations1;
    files    = ctype.h;
    files    = ctype.h;
    select   = "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)";
    select   = "^#[ \t]*define _toupper\\(__c\\)[ \t]*__toupper\\(__c\\)";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\(";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*__tolower[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef _PROTOTYPES\n"
    c_fix_arg = "#ifdef _PROTOTYPES\n"
                "extern int __tolower(int);\n"
                "extern int __tolower(int);\n"
                "extern int __toupper(int);\n"
                "extern int __toupper(int);\n"
                "#else /* NOT _PROTOTYPES */\n"
                "#else /* NOT _PROTOTYPES */\n"
                "extern int __tolower();\n"
                "extern int __tolower();\n"
                "extern int __toupper();\n"
                "extern int __toupper();\n"
                "#endif /* _PROTOTYPES */\n\n"
                "#endif /* _PROTOTYPES */\n\n"
                "%0\n";
                "%0\n";
    test_text = "#  define _toupper(__c)         __toupper(__c)\n";
    test_text = "#  define _toupper(__c)         __toupper(__c)\n";
};
};
/*
/*
 *  Fix hpux 10.X missing ctype declarations 2
 *  Fix hpux 10.X missing ctype declarations 2
 */
 */
fix = {
fix = {
    hackname = hpux10_ctype_declarations2;
    hackname = hpux10_ctype_declarations2;
    files    = ctype.h;
    files    = ctype.h;
    select   = "^#  if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)";
    select   = "^#  if defined\\(_SB_CTYPE_MACROS\\) && \\!defined\\(__lint\\)";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\(";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*_isalnum[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n\n"
    c_fix_arg = "%0\n\n"
                "#ifdef _PROTOTYPES\n"
                "#ifdef _PROTOTYPES\n"
                "     extern int _isalnum(int);\n"
                "     extern int _isalnum(int);\n"
                "     extern int _isalpha(int);\n"
                "     extern int _isalpha(int);\n"
                "     extern int _iscntrl(int);\n"
                "     extern int _iscntrl(int);\n"
                "     extern int _isdigit(int);\n"
                "     extern int _isdigit(int);\n"
                "     extern int _isgraph(int);\n"
                "     extern int _isgraph(int);\n"
                "     extern int _islower(int);\n"
                "     extern int _islower(int);\n"
                "     extern int _isprint(int);\n"
                "     extern int _isprint(int);\n"
                "     extern int _ispunct(int);\n"
                "     extern int _ispunct(int);\n"
                "     extern int _isspace(int);\n"
                "     extern int _isspace(int);\n"
                "     extern int _isupper(int);\n"
                "     extern int _isupper(int);\n"
                "     extern int _isxdigit(int);\n"
                "     extern int _isxdigit(int);\n"
                "#  else /* not _PROTOTYPES */\n"
                "#  else /* not _PROTOTYPES */\n"
                "     extern int _isalnum();\n"
                "     extern int _isalnum();\n"
                "     extern int _isalpha();\n"
                "     extern int _isalpha();\n"
                "     extern int _iscntrl();\n"
                "     extern int _iscntrl();\n"
                "     extern int _isdigit();\n"
                "     extern int _isdigit();\n"
                "     extern int _isgraph();\n"
                "     extern int _isgraph();\n"
                "     extern int _islower();\n"
                "     extern int _islower();\n"
                "     extern int _isprint();\n"
                "     extern int _isprint();\n"
                "     extern int _ispunct();\n"
                "     extern int _ispunct();\n"
                "     extern int _isspace();\n"
                "     extern int _isspace();\n"
                "     extern int _isupper();\n"
                "     extern int _isupper();\n"
                "     extern int _isxdigit();\n"
                "     extern int _isxdigit();\n"
                "#endif /* _PROTOTYPES */\n";
                "#endif /* _PROTOTYPES */\n";
    test_text = "#  if defined(_SB_CTYPE_MACROS) && !defined(__lint)\n"
    test_text = "#  if defined(_SB_CTYPE_MACROS) && !defined(__lint)\n"
                "     extern unsigned int *__SB_masks;\n";
                "     extern unsigned int *__SB_masks;\n";
};
};
/*
/*
 *  Fix hpux 10.X missing stdio declarations
 *  Fix hpux 10.X missing stdio declarations
 */
 */
fix = {
fix = {
    hackname = hpux10_stdio_declarations;
    hackname = hpux10_stdio_declarations;
    files    = stdio.h;
    files    = stdio.h;
    select   = "^#[ \t]*define _iob[ \t]*__iob";
    select   = "^#[ \t]*define _iob[ \t]*__iob";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
    bypass   = "^[ \t]*extern[ \t]*int[ \t]*vsnprintf[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n\n"
    c_fix_arg = "%0\n\n"
        "#  if defined(__STDC__) || defined(__cplusplus)\n"
        "#  if defined(__STDC__) || defined(__cplusplus)\n"
        "     extern int snprintf(char *, size_t, const char *, ...);\n"
        "     extern int snprintf(char *, size_t, const char *, ...);\n"
        "     extern int vsnprintf(char *, size_t, const char *, __va_list);\n"
        "     extern int vsnprintf(char *, size_t, const char *, __va_list);\n"
        "#  else /* not __STDC__) || __cplusplus */\n"
        "#  else /* not __STDC__) || __cplusplus */\n"
        "     extern int snprintf();\n"
        "     extern int snprintf();\n"
        "     extern int vsnprintf();\n"
        "     extern int vsnprintf();\n"
        "#  endif /* __STDC__) || __cplusplus */\n";
        "#  endif /* __STDC__) || __cplusplus */\n";
    test_text = "#  define _iob __iob\n";
    test_text = "#  define _iob __iob\n";
};
};
/*
/*
 *  Make sure hpux defines abs in header.
 *  Make sure hpux defines abs in header.
 */
 */
fix = {
fix = {
    hackname  = hpux11_abs;
    hackname  = hpux11_abs;
    mach      = ia64-hp-hpux11*;
    mach      = ia64-hp-hpux11*;
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "ifndef _MATH_INCLUDED";
    select    = "ifndef _MATH_INCLUDED";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "if !defined(_MATH_INCLUDED) || defined(__GNUG__)";
    c_fix_arg = "if !defined(_MATH_INCLUDED) || defined(__GNUG__)";
//  sed       = "s/ifndef _MATH_INCLUDED/if !defined(_MATH_INCLUDED) || defined(__GNUG__)/";
//  sed       = "s/ifndef _MATH_INCLUDED/if !defined(_MATH_INCLUDED) || defined(__GNUG__)/";
    test_text = "#ifndef _MATH_INCLUDED";
    test_text = "#ifndef _MATH_INCLUDED";
};
};
/*
/*
 *  Keep HP-UX 11 from stomping on C++ math namespace
 *  Keep HP-UX 11 from stomping on C++ math namespace
 *  with defines for fabsf.
 *  with defines for fabsf.
 */
 */
fix = {
fix = {
    hackname  = hpux11_fabsf;
    hackname  = hpux11_fabsf;
    files     = math.h;
    files     = math.h;
    select    = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
    select    = "^[ \t]*#[ \t]*define[ \t]+fabsf\\(.*";
    bypass    = "__cplusplus";
    bypass    = "__cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    test_text =
    test_text =
    "#ifdef _PA_RISC\n"
    "#ifdef _PA_RISC\n"
    "#  define fabsf(x) ((float)fabs((double)(float)(x)))\n"
    "#  define fabsf(x) ((float)fabs((double)(float)(x)))\n"
    "#endif";
    "#endif";
};
};
/*
/*
 * Prevent HP-UX 11 from defining __size_t and preventing size_t from
 * Prevent HP-UX 11 from defining __size_t and preventing size_t from
 * being defined by having it define _hpux_size_t instead.
 * being defined by having it define _hpux_size_t instead.
 */
 */
fix = {
fix = {
    hackname  = hpux11_size_t;
    hackname  = hpux11_size_t;
    mach      = "*-hp-hpux11*";
    mach      = "*-hp-hpux11*";
    select    = "__size_t";
    select    = "__size_t";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "_hpux_size_t";
    c_fix_arg = "_hpux_size_t";
    test_text =
    test_text =
    "#define __size_t size_t\n"
    "#define __size_t size_t\n"
    "       extern int getpwuid_r( char *, __size_t, struct passwd **);\n";
    "       extern int getpwuid_r( char *, __size_t, struct passwd **);\n";
};
};
/*
/*
 *  Fix hpux 11.00 broken snprintf declaration
 *  Fix hpux 11.00 broken snprintf declaration
 *  (third argument is char *, needs to be const char * to prevent
 *  (third argument is char *, needs to be const char * to prevent
 *  spurious warnings with -Wwrite-strings or in C++).
 *  spurious warnings with -Wwrite-strings or in C++).
 */
 */
fix = {
fix = {
    hackname = hpux11_snprintf;
    hackname = hpux11_snprintf;
    files    = stdio.h;
    files    = stdio.h;
    select   = '(extern int snprintf *\(char *\*, *(|__|_hpux_)size_t,)'
    select   = '(extern int snprintf *\(char *\*, *(|__|_hpux_)size_t,)'
                                    ' *(char *\*, *\.\.\.\);)';
                                    ' *(char *\*, *\.\.\.\);)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '%1 const %3';
    c_fix_arg = '%1 const %3';
    test_text = "extern int snprintf(char *, size_t, char *, ...);\n"
    test_text = "extern int snprintf(char *, size_t, char *, ...);\n"
                "extern int snprintf(char *, __size_t, char *, ...);\n"
                "extern int snprintf(char *, __size_t, char *, ...);\n"
                "extern int snprintf(char *, _hpux_size_t, char *, ...);";
                "extern int snprintf(char *, _hpux_size_t, char *, ...);";
};
};
/*
/*
 * In inttypes.h on HPUX 11, the use of __CONCAT__ in the definition
 * In inttypes.h on HPUX 11, the use of __CONCAT__ in the definition
 * of UINT32_C has undefined behavior according to ISO/ANSI:
 * of UINT32_C has undefined behavior according to ISO/ANSI:
 * the arguments to __CONCAT__ are not macro expanded before the
 * the arguments to __CONCAT__ are not macro expanded before the
 * concatination happens so the trailing ')' in the first argument
 * concatination happens so the trailing ')' in the first argument
 * is concatinated with the 'l' in the second argument creating an
 * is concatinated with the 'l' in the second argument creating an
 * invalid pp token.  The behavior of invalid pp tokens is undefined.
 * invalid pp token.  The behavior of invalid pp tokens is undefined.
 * GCC does not handle these invalid tokens the way the HP compiler does.
 * GCC does not handle these invalid tokens the way the HP compiler does.
 * This problem will potentially occur anytime macros are used in the
 * This problem will potentially occur anytime macros are used in the
 * arguments to __CONCAT__.  A general solution to this problem would be to
 * arguments to __CONCAT__.  A general solution to this problem would be to
 * insert another layer of macro between __CONCAT__ and its use
 * insert another layer of macro between __CONCAT__ and its use
 * in UINT32_C.  An example of this solution can be found in the C standard.
 * in UINT32_C.  An example of this solution can be found in the C standard.
 * A more specific solution, the one used here, is to change the UINT32_C
 * A more specific solution, the one used here, is to change the UINT32_C
 * macro to not used macros in the arguments to __CONCAT__.
 * macro to not used macros in the arguments to __CONCAT__.
 */
 */
fix = {
fix = {
    hackname = hpux11_uint32_c;
    hackname = hpux11_uint32_c;
    files    = inttypes.h;
    files    = inttypes.h;
    select   = "^#define UINT32_C\\(__c\\)[ \t]*"
    select   = "^#define UINT32_C\\(__c\\)[ \t]*"
                         "__CONCAT__\\(__CONCAT_U__\\(__c\\),l\\)";
                         "__CONCAT__\\(__CONCAT_U__\\(__c\\),l\\)";
    c_fix    = format;
    c_fix    = format;
    c_fix_arg = '#define UINT32_C(__c) __CONCAT__(__c,ul)';
    c_fix_arg = '#define UINT32_C(__c) __CONCAT__(__c,ul)';
    test_text =
    test_text =
    "#define CONCAT_U__(__c)\t__CONCAT__(__c,u)\n"
    "#define CONCAT_U__(__c)\t__CONCAT__(__c,u)\n"
    "#define UINT32_C(__c)\t__CONCAT__(__CONCAT_U__(__c),l)";
    "#define UINT32_C(__c)\t__CONCAT__(__CONCAT_U__(__c),l)";
};
};
/*
/*
 *  Fix hpux 11.00 broken vsnprintf declaration
 *  Fix hpux 11.00 broken vsnprintf declaration
 */
 */
fix = {
fix = {
    hackname = hpux11_vsnprintf;
    hackname = hpux11_vsnprintf;
    files    = stdio.h;
    files    = stdio.h;
    select   = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, '
    select   = '(extern int vsnprintf\(char \*, _[hpux]*_size_t, '
                                     'const char \*,) __va__list\);';
                                     'const char \*,) __va__list\);';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 __va_list);";
    c_fix_arg = "%1 __va_list);";
    test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,'
    test_text = 'extern int vsnprintf(char *, _hpux_size_t, const char *,'
                                     ' __va__list);';
                                     ' __va__list);';
};
};
/*
/*
 *  get rid of bogus inline definitions in HP-UX 8.0
 *  get rid of bogus inline definitions in HP-UX 8.0
 */
 */
fix = {
fix = {
    hackname = hpux8_bogus_inlines;
    hackname = hpux8_bogus_inlines;
    files    = math.h;
    files    = math.h;
    select   = inline;
    select   = inline;
    bypass   = "__GNUG__";
    bypass   = "__GNUG__";
    sed = "s@inline int abs(int [a-z][a-z]*) {.*}"
    sed = "s@inline int abs(int [a-z][a-z]*) {.*}"
           "@extern \"C\" int abs(int);@";
           "@extern \"C\" int abs(int);@";
    sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@";
    sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@";
    sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@";
    sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@";
    sed = "s@inline double sqr(double [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"
    test_text = "inline int abs(int v) { return (v>=0)?v:-v; }\n"
                "inline double sqr(double v) { return v**0.5; }";
                "inline double sqr(double v) { return v**0.5; }";
};
};
/*
/*
 *  Fix hpux broken ctype macros
 *  Fix hpux broken ctype macros
 */
 */
fix = {
fix = {
    hackname = hpux_ctype_macros;
    hackname = hpux_ctype_macros;
    files    = ctype.h;
    files    = ctype.h;
    select   = '((: |\()__SB_masks \? )'
    select   = '((: |\()__SB_masks \? )'
               '(__SB_masks\[__(alnum|c)\] & _IS)';
               '(__SB_masks\[__(alnum|c)\] & _IS)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1(int)%3";
    c_fix_arg = "%1(int)%3";
    test_text = ": __SB_masks ? __SB_masks[__alnum] & _ISCNTRL\n"
    test_text = ": __SB_masks ? __SB_masks[__alnum] & _ISCNTRL\n"
                "# define isalpha(__c) (__SB_masks ? __SB_masks[__c] & _IS\n";
                "# define isalpha(__c) (__SB_masks ? __SB_masks[__c] & _IS\n";
};
};
/*
/*
 *  Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
 *  Fix hpux broken #ifndef _XOPEN_SOURCE_EXTENDED conditional on htonl etc.
 */
 */
fix = {
fix = {
    hackname = hpux_htonl;
    hackname = hpux_htonl;
    files    = netinet/in.h;
    files    = netinet/in.h;
    select   = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
    select   = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
               "(/\\*\n"
               "(/\\*\n"
               " \\* Macros for number representation conversion\\.\n"
               " \\* Macros for number representation conversion\\.\n"
               " \\*/\n"
               " \\*/\n"
               "#ifndef ntohl)";
               "#ifndef ntohl)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if 1\n%1";
    c_fix_arg = "#if 1\n%1";
    test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
    test_text = "#ifndef _XOPEN_SOURCE_EXTENDED\n"
                "/*\n"
                "/*\n"
                " * Macros for number representation conversion.\n"
                " * Macros for number representation conversion.\n"
                " */\n"
                " */\n"
                "#ifndef ntohl\n"
                "#ifndef ntohl\n"
                "#define ntohl(x)        (x)\n"
                "#define ntohl(x)        (x)\n"
                "#define ntohs(x)        (x)\n"
                "#define ntohs(x)        (x)\n"
                "#define htonl(x)        (x)\n"
                "#define htonl(x)        (x)\n"
                "#define htons(x)        (x)\n"
                "#define htons(x)        (x)\n"
                "#endif\n"
                "#endif\n"
                "#endif  /* ! _XOPEN_SOURCE_EXTENDED */";
                "#endif  /* ! _XOPEN_SOURCE_EXTENDED */";
};
};
/*
/*
 * HP-UX long_double
 * HP-UX long_double
 */
 */
fix = {
fix = {
    hackname  = hpux_long_double;
    hackname  = hpux_long_double;
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "extern[ \t]long_double[ \t]strtold";
    select    = "extern[ \t]long_double[ \t]strtold";
    bypass    = "long_double_t";
    bypass    = "long_double_t";
    sed       = "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D";
    sed       = "/^#[ \t]*ifndef _LONG_DOUBLE/,/\\/\\* _LONG_DOUBLE \\*\\//D";
    sed       = "s/long_double/long double/g";
    sed       = "s/long_double/long double/g";
    test_text = "#  ifndef _LONG_DOUBLE\n"
    test_text = "#  ifndef _LONG_DOUBLE\n"
                "#    define _LONG_DOUBLE\n"
                "#    define _LONG_DOUBLE\n"
                "     typedef struct {\n"
                "     typedef struct {\n"
                "       unsigned int word1, word2, word3, word4;\n"
                "       unsigned int word1, word2, word3, word4;\n"
                "     } long_double;\n"
                "     } long_double;\n"
                "#  endif /* _LONG_DOUBLE */\n"
                "#  endif /* _LONG_DOUBLE */\n"
                "extern long_double strtold(const char *, char **);\n";
                "extern long_double strtold(const char *, char **);\n";
};
};
/*
/*
 *  Fix hpux10.20  to avoid invalid forward decl
 *  Fix hpux10.20  to avoid invalid forward decl
 */
 */
fix = {
fix = {
    hackname = hpux_systime;
    hackname = hpux_systime;
    files    = sys/time.h;
    files    = sys/time.h;
    select   = "^extern struct sigevent;";
    select   = "^extern struct sigevent;";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct sigevent;";
    c_fix_arg = "struct sigevent;";
    test_text = 'extern struct sigevent;';
    test_text = 'extern struct sigevent;';
};
};
/*
/*
 *  Wrap spu_info in ifdef _KERNEL.  GCC cannot handle an array of unknown
 *  Wrap spu_info in ifdef _KERNEL.  GCC cannot handle an array of unknown
 *  type and mpinfou is only defined when _KERNEL is set.
 *  type and mpinfou is only defined when _KERNEL is set.
 */
 */
fix = {
fix = {
    hackname = hpux_spu_info;
    hackname = hpux_spu_info;
    mach     = "*-hp-hpux*";
    mach     = "*-hp-hpux*";
    files    = ia64/sys/getppdp.h;
    files    = ia64/sys/getppdp.h;
    select   = "^.*extern.*spu_info.*";
    select   = "^.*extern.*spu_info.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef _KERNEL\n%0\n#endif";
    c_fix_arg = "#ifdef _KERNEL\n%0\n#endif";
    test_text = "extern union mpinfou spu_info[];";
    test_text = "extern union mpinfou spu_info[];";
};
};
fix = {
fix = {
    hackname  = hpux11_extern_sendfile;
    hackname  = hpux11_extern_sendfile;
    mach      = "*-hp-hpux11.[12]*";
    mach      = "*-hp-hpux11.[12]*";
    files     = sys/socket.h;
    files     = sys/socket.h;
    select    = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
    select    = "^[ \t]*extern sbsize_t sendfile.*\n.*, int\\)\\);\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
    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";
    test_text = "   extern sbsize_t sendfile __((int, int, off_t, bsize_t,\n                               const struct iovec *, int));\n";
};
};
fix = {
fix = {
    hackname  = hpux11_extern_sendpath;
    hackname  = hpux11_extern_sendpath;
    mach      = "*-hp-hpux11.[12]*";
    mach      = "*-hp-hpux11.[12]*";
    files     = sys/socket.h;
    files     = sys/socket.h;
    select    = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
    select    = "^[ \t]*extern sbsize_t sendpath.*\n.*, int\\)\\);\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef _APP32_64BIT_OFF_T\n%0#endif\n";
    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";
    test_text = "   extern sbsize_t sendpath __((int, int, off_t, bsize_t,\n                               const struct iovec *, int));\n";
};
};
fix = {
fix = {
    hackname  = hpux_extern_errno;
    hackname  = hpux_extern_errno;
    mach      = "*-hp-hpux10.*";
    mach      = "*-hp-hpux10.*";
    mach      = "*-hp-hpux11.[0-2]*";
    mach      = "*-hp-hpux11.[0-2]*";
    files     = errno.h;
    files     = errno.h;
    select    = "^[ \t]*extern int errno;$";
    select    = "^[ \t]*extern int errno;$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef __cplusplus\nextern \"C\" {\n#endif\n%0\n#ifdef __cplusplus\n}\n#endif";
    c_fix_arg = "#ifdef __cplusplus\nextern \"C\" {\n#endif\n%0\n#ifdef __cplusplus\n}\n#endif";
    test_text = "   extern int errno;\n";
    test_text = "   extern int errno;\n";
};
};
/*
/*
 *  Add missing braces to pthread initializer defines.
 *  Add missing braces to pthread initializer defines.
 */
 */
fix = {
fix = {
    hackname  = hpux_pthread_initializers;
    hackname  = hpux_pthread_initializers;
    mach      = "*-hp-hpux11.[0-3]*";
    mach      = "*-hp-hpux11.[0-3]*";
    files     = sys/pthread.h;
    files     = sys/pthread.h;
    sed       = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
    sed       = "s@^[ \t]*1, 1, 1, 1,[ \t]*\\\\"
                 "@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
                 "@\t{ 1, 1, 1, 1 },\t\t\t\t\t\t\t\\\\@";
    sed       = "s@^[ \t]*1,[ \t]*\\\\"
    sed       = "s@^[ \t]*1,[ \t]*\\\\"
                 "@\t{ 1, 0 }@";
                 "@\t{ 1, 0 }@";
    sed       = "/^[ \t]*0$/d";
    sed       = "/^[ \t]*0$/d";
    sed       = "s@__PTHREAD_MUTEX_VALID, 0"
    sed       = "s@__PTHREAD_MUTEX_VALID, 0"
                 "@{ __PTHREAD_MUTEX_VALID, 0 }@";
                 "@{ __PTHREAD_MUTEX_VALID, 0 }@";
    sed       = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
    sed       = "s@^[ \t]*0, 0, -1, 0,[ \t]*\\\\"
                 "@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
                 "@\t{ 0, 0, -1, 0 },\t\t\t\t\t\t\\\\@";
    sed       = "s@0, __LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \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\\\\@";
                 "@{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
    sed       = "s@^[ \t]*__LWP_MTX_VALID, 0, 1, 1, 1, 1,[ \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\\\\@";
                 "@\t{ 0, __LWP_MTX_VALID }, { 0, 1, 1, 1, 1 },\t\t\t\\\\@";
    sed       = "s@^[ \t]*0, 0[ \t]*\\\\"
    sed       = "s@^[ \t]*0, 0[ \t]*\\\\"
                 "@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
                 "@\t{ 0, 0 }\t\t\t\t\t\t\t\\\\@";
    sed       = "s@__PTHREAD_COND_VALID, 0"
    sed       = "s@__PTHREAD_COND_VALID, 0"
                 "@{ __PTHREAD_COND_VALID, 0 }@";
                 "@{ __PTHREAD_COND_VALID, 0 }@";
    sed       = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
    sed       = "s@__LWP_COND_VALID, 0,[ \t]*\\\\"
                 "@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
                 "@{ __LWP_COND_VALID, 0 },\t\t\t\t\t\\\\@";
    sed       = "s@__PTHREAD_RWLOCK_VALID, 0"
    sed       = "s@__PTHREAD_RWLOCK_VALID, 0"
                 "@{ __PTHREAD_RWLOCK_VALID, 0 }@";
                 "@{ __PTHREAD_RWLOCK_VALID, 0 }@";
    sed       = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
    sed       = "s@__LWP_RWLOCK_VALID, 0,[ \t]*\\\\"
                 "@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
                 "@{ __LWP_RWLOCK_VALID, 0 },\t\t\t\t\t\\\\@";
    sed       = "s@^[ \t]*0, 0, 0, 0, 0, 0, 0[ \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\\\\@";
                 "@\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"
    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_VALID, 0,\t\t\t\t\t\\\\\n"
                "\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
                "\t(PTHREAD_MUTEX_DEFAULT | PTHREAD_PROCESS_PRIVATE),\t\t\\\\\n"
                "\t__SPNLCK_INITIALIZER,\t\t\t\t\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, 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, __LWP_MTX_VALID, 0, 1, 1, 1, 1,\t\t\t\t\\\\\n"
                "\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
                "\t0, 0\t\t\t\t\t\t\t\t\\\\\n"
                "}\n";
                "}\n";
};
};
/*
/*
 *  Fix glibc definition of HUGE_VAL in terms of hex floating point constant
 *  Fix glibc definition of HUGE_VAL in terms of hex floating point constant
 */
 */
fix = {
fix = {
    hackname  = huge_val_hex;
    hackname  = huge_val_hex;
    files     = bits/huge_val.h;
    files     = bits/huge_val.h;
    select    = "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*";
    select    = "^#[ \t]*define[ \t]*HUGE_VAL[ \t].*0x1\\.0p.*";
    bypass    = "__builtin_huge_val";
    bypass    = "__builtin_huge_val";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define HUGE_VAL (__builtin_huge_val())\n";
    c_fix_arg = "#define HUGE_VAL (__builtin_huge_val())\n";
    test_text = "# define HUGE_VAL\t(__extension__ 0x1.0p2047)";
    test_text = "# define HUGE_VAL\t(__extension__ 0x1.0p2047)";
};
};
/*
/*
 *  Fix glibc definition of HUGE_VALF in terms of hex floating point constant
 *  Fix glibc definition of HUGE_VALF in terms of hex floating point constant
 */
 */
fix = {
fix = {
    hackname  = huge_valf_hex;
    hackname  = huge_valf_hex;
    files     = bits/huge_val.h;
    files     = bits/huge_val.h;
    select    = "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*";
    select    = "^#[ \t]*define[ \t]*HUGE_VALF[ \t].*0x1\\.0p.*";
    bypass    = "__builtin_huge_valf";
    bypass    = "__builtin_huge_valf";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define HUGE_VALF (__builtin_huge_valf())\n";
    c_fix_arg = "#define HUGE_VALF (__builtin_huge_valf())\n";
    test_text = "#  define HUGE_VALF (__extension__ 0x1.0p255f)";
    test_text = "#  define HUGE_VALF (__extension__ 0x1.0p255f)";
};
};
/*
/*
 *  Fix glibc definition of HUGE_VALL in terms of hex floating point constant
 *  Fix glibc definition of HUGE_VALL in terms of hex floating point constant
 */
 */
fix = {
fix = {
    hackname  = huge_vall_hex;
    hackname  = huge_vall_hex;
    files     = bits/huge_val.h;
    files     = bits/huge_val.h;
    select    = "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*";
    select    = "^#[ \t]*define[ \t]*HUGE_VALL[ \t].*0x1\\.0p.*";
    bypass    = "__builtin_huge_vall";
    bypass    = "__builtin_huge_vall";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define HUGE_VALL (__builtin_huge_vall())\n";
    c_fix_arg = "#define HUGE_VALL (__builtin_huge_vall())\n";
    test_text = "#  define HUGE_VALL (__extension__ 0x1.0p32767L)";
    test_text = "#  define HUGE_VALL (__extension__ 0x1.0p32767L)";
};
};
/*
/*
 *  Fix return type of abort and free
 *  Fix return type of abort and free
 */
 */
fix = {
fix = {
    hackname  = int_abort_free_and_exit;
    hackname  = int_abort_free_and_exit;
    files     = stdlib.h;
    files     = stdlib.h;
    select    = "int[ \t]+(abort|free|exit)[ \t]*\\(";
    select    = "int[ \t]+(abort|free|exit)[ \t]*\\(";
    bypass    = "_CLASSIC_ANSI_TYPES";
    bypass    = "_CLASSIC_ANSI_TYPES";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "void\t%1(";
    c_fix_arg = "void\t%1(";
    test_text = "extern int abort(int);\n"
    test_text = "extern int abort(int);\n"
                "extern int free(void*);\n"
                "extern int free(void*);\n"
                "extern int exit(void*);";
                "extern int exit(void*);";
};
};
/*
/*
 *  Fix various macros used to define ioctl numbers.
 *  Fix various macros used to define ioctl numbers.
 *  The traditional syntax was:
 *  The traditional syntax was:
 *
 *
 *    #define _IO(n, x) (('n'<<8)+x)
 *    #define _IO(n, x) (('n'<<8)+x)
 *    #define TIOCFOO _IO(T, 1)
 *    #define TIOCFOO _IO(T, 1)
 *
 *
 *  but this does not work with the C standard, which disallows macro
 *  but this does not work with the C standard, which disallows macro
 *  expansion inside strings.  We have to rewrite it thus:
 *  expansion inside strings.  We have to rewrite it thus:
 *
 *
 *    #define _IO(n, x) ((n<<8)+x)
 *    #define _IO(n, x) ((n<<8)+x)
 *    #define TIOCFOO  _IO('T', 1)
 *    #define TIOCFOO  _IO('T', 1)
 *
 *
 *  The select expressions match too much, but the c_fix code is cautious.
 *  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.
 *  _IO might be: _IO DESIO BSD43__IO with W, R, WR, C, ... suffixes.
 */
 */
fix = {
fix = {
    hackname  = io_quotes_def;
    hackname  = io_quotes_def;
    select    = "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]";
    select    = "define[ \t]+[A-Z0-9_]+IO[A-Z]*\\([a-zA-Z][,)]";
    c_fix     = char_macro_def;
    c_fix     = char_macro_def;
    c_fix_arg = "IO";
    c_fix_arg = "IO";
    test_text =
    test_text =
    "#define BSD43__IOWR(n, x) (('n'<<8)+x)\n"
    "#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 _IOWN(x,y,t)  (_IOC_IN|(((t)&_IOCPARM_MASK)<<16)|('x'<<8)|y)\n"
    "#define _IO(x,y)      ('x'<<8|y)";
    "#define _IO(x,y)      ('x'<<8|y)";
    test_text =
    test_text =
    "#define XX_IO(x)        ('x'<<8|256)";
    "#define XX_IO(x)        ('x'<<8|256)";
};
};
fix = {
fix = {
    hackname  = io_quotes_use;
    hackname  = io_quotes_use;
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*"
    select    = "define[ \t]+[A-Z0-9_]+[ \t]+[A-Z0-9_]+IO[A-Z]*[ \t]*"
                "\\( *[^,']";
                "\\( *[^,']";
    c_fix     = char_macro_use;
    c_fix     = char_macro_use;
    c_fix_arg = "IO";
    c_fix_arg = "IO";
    test_text = "#define TIOCFOO BSD43__IOWR(T, 1)\n"
    test_text = "#define TIOCFOO BSD43__IOWR(T, 1)\n"
                "#define TIOCFOO \\\\\n"
                "#define TIOCFOO \\\\\n"
                "BSD43__IOWR(T, 1) /* Some are multi-line */";
                "BSD43__IOWR(T, 1) /* Some are multi-line */";
};
};
/*
/*
 *  Check for missing ';' in struct
 *  Check for missing ';' in struct
 */
 */
fix = {
fix = {
    hackname = ip_missing_semi;
    hackname = ip_missing_semi;
    files    = netinet/ip.h;
    files    = netinet/ip.h;
    select   = "}$";
    select   = "}$";
    sed      = "/^struct/,/^};/s/}$/};/";
    sed      = "/^struct/,/^};/s/}$/};/";
    test_text=
    test_text=
    "struct mumble {\n"
    "struct mumble {\n"
    "  union {\n"
    "  union {\n"
    "    int x;\n"
    "    int x;\n"
    "  }\n"
    "  }\n"
    "}; /* mumbled struct */\n";
    "}; /* mumbled struct */\n";
};
};
/*
/*
 *  IRIX 6.5.1[89]  unconditionally defines
 *  IRIX 6.5.1[89]  unconditionally defines
 *  __restrict as restrict iff __c99.  This is wrong for C++, which
 *  __restrict as restrict iff __c99.  This is wrong for C++, which
 *  needs many C99 features, but only supports __restrict.
 *  needs many C99 features, but only supports __restrict.
 */
 */
fix = {
fix = {
    hackname  = irix___restrict;
    hackname  = irix___restrict;
    files     = internal/sgimacros.h;
    files     = internal/sgimacros.h;
    select    = "(#ifdef __c99\n)(#[ \t]*define __restrict restrict)";
    select    = "(#ifdef __c99\n)(#[ \t]*define __restrict restrict)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1"
    c_fix_arg = "%1"
                "#  ifndef __cplusplus\n%2\n#  endif";
                "#  ifndef __cplusplus\n%2\n#  endif";
    test_text = "#ifdef __c99\n#  define __restrict restrict";
    test_text = "#ifdef __c99\n#  define __restrict restrict";
};
};
/*
/*
 * IRIX 6.5.22  uses the SGI c99 __generic() intrinsic
 * IRIX 6.5.22  uses the SGI c99 __generic() intrinsic
 * to define the fpclasify, isfinite, isinf, isnan, isnormal and signbit
 * to define the fpclasify, isfinite, isinf, isnan, isnormal and signbit
 * functions.
 * functions.
 *
 *
 * This was probably introduced around IRIX 6.5.18
 * This was probably introduced around IRIX 6.5.18
 */
 */
fix = {
fix = {
    hackname  = irix___generic1;
    hackname  = irix___generic1;
    files     = internal/math_core.h;
    files     = internal/math_core.h;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    select    = "#define ([a-z]+)\\(x\\) *__generic.*";
    select    = "#define ([a-z]+)\\(x\\) *__generic.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern int %1(double);\n"
    c_fix_arg = "extern int %1(double);\n"
                "extern int %1f(float);\n"
                "extern int %1f(float);\n"
                "extern int %1l(long double);\n"
                "extern int %1l(long double);\n"
                "#define %1(x) (sizeof(x) == sizeof(double) ? _%1(x) \\\n"
                "#define %1(x) (sizeof(x) == sizeof(double) ? _%1(x) \\\n"
                "               : sizeof(x) == sizeof(float) ? _%1f(x) \\\n"
                "               : sizeof(x) == sizeof(float) ? _%1f(x) \\\n"
                "               : _%1l(x))\n";
                "               : _%1l(x))\n";
    test_text =
    test_text =
      "#define isnan(x) __generic(x,,, _isnan, _isnanf, _isnanl,,,)(x)\n";
      "#define isnan(x) __generic(x,,, _isnan, _isnanf, _isnanl,,,)(x)\n";
};
};
/* Likewise  on IRIX 6.5.19 and later uses the SGI
/* Likewise  on IRIX 6.5.19 and later uses the SGI
   compiler's __generic intrinsic to define isgreater, isgreaterequal,
   compiler's __generic intrinsic to define isgreater, isgreaterequal,
   isless, islessequal, islessgreater and isunordered functions.  */
   isless, islessequal, islessgreater and isunordered functions.  */
fix = {
fix = {
    hackname  = irix___generic2;
    hackname  = irix___generic2;
    files     = internal/math_core.h;
    files     = internal/math_core.h;
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    select    = "#define ([a-z]+)\\(x,y\\) *__generic.*";
    select    = "#define ([a-z]+)\\(x,y\\) *__generic.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define %1(x,y) \\\n"
    c_fix_arg = "#define %1(x,y) \\\n"
                "  ((sizeof(x)<=4 && sizeof(y)<=4) ? _%1f(x,y) \\\n"
                "  ((sizeof(x)<=4 && sizeof(y)<=4) ? _%1f(x,y) \\\n"
                "   : (sizeof(x)<=8 && sizeof(y)<=8) ? _%1(x,y) \\\n"
                "   : (sizeof(x)<=8 && sizeof(y)<=8) ? _%1(x,y) \\\n"
                "   : _%1l(x,y))\n";
                "   : _%1l(x,y))\n";
    test_text =
    test_text =
      "#define isless(x,y)         __generic(x,y,, _isless, _islessf, _islessl,,,)(x,y)";
      "#define isless(x,y)         __generic(x,y,, _isless, _islessf, _islessl,,,)(x,y)";
};
};
/*
/*
 *  IRIX 5.2's  contains an asm comment with a contraction
 *  IRIX 5.2's  contains an asm comment with a contraction
 *  that causes the assembly preprocessor to complain about an
 *  that causes the assembly preprocessor to complain about an
 *  unterminated character constant.
 *  unterminated character constant.
 */
 */
fix = {
fix = {
    hackname  = irix_asm_apostrophe;
    hackname  = irix_asm_apostrophe;
    files     = sys/asm.h;
    files     = sys/asm.h;
    select    = "^[ \t]*#.*[Ww]e're";
    select    = "^[ \t]*#.*[Ww]e're";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 are";
    c_fix_arg = "%1 are";
    c_fix_arg = "^([ \t]*#.*[Ww]e)'re";
    c_fix_arg = "^([ \t]*#.*[Ww]e)'re";
    test_text = "\t# and we're on vacation";
    test_text = "\t# and we're on vacation";
};
};
/*
/*
 *  Non-traditional "const" declaration in Irix's limits.h.
 *  Non-traditional "const" declaration in Irix's limits.h.
 */
 */
fix = {
fix = {
    hackname    = irix_limits_const;
    hackname    = irix_limits_const;
    files       = fixinc-test-limits.h, limits.h;
    files       = fixinc-test-limits.h, limits.h;
    select      = "^extern const ";
    select      = "^extern const ";
    c_fix       = format;
    c_fix       = format;
    c_fix_arg   = "extern __const ";
    c_fix_arg   = "extern __const ";
    test_text   = "extern const char limit; /* test limits */";
    test_text   = "extern const char limit; /* test limits */";
};
};
/*
/*
 *  IRIX 6.5.1[78]  has a broken definition of socklen_t.
 *  IRIX 6.5.1[78]  has a broken definition of socklen_t.
 *  Various socket function prototypes use different types instead,
 *  Various socket function prototypes use different types instead,
 *  depending on the API in use (BSD, XPG4/5), but the socklen_t
 *  depending on the API in use (BSD, XPG4/5), but the socklen_t
 *  definition doesn't reflect this (SGI Bug Id 864477, fixed in
 *  definition doesn't reflect this (SGI Bug Id 864477, fixed in
 *  IRIX 6.5.19).
 *  IRIX 6.5.19).
 */
 */
fix = {
fix = {
    hackname  = irix_socklen_t;
    hackname  = irix_socklen_t;
    files     = sys/socket.h;
    files     = sys/socket.h;
    select    = "(#define _SOCKLEN_T\n)(typedef u_int32_t socklen_t;)";
    select    = "(#define _SOCKLEN_T\n)(typedef u_int32_t socklen_t;)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1"
    c_fix_arg = "%1"
                "#if _NO_XOPEN4 && _NO_XOPEN5\n"
                "#if _NO_XOPEN4 && _NO_XOPEN5\n"
                "typedef int socklen_t;\n"
                "typedef int socklen_t;\n"
                "#else\n"
                "#else\n"
                "%2\n"
                "%2\n"
                "#endif /* _NO_XOPEN4 && _NO_XOPEN5 */";
                "#endif /* _NO_XOPEN4 && _NO_XOPEN5 */";
    test_text = "#define _SOCKLEN_T\ntypedef u_int32_t socklen_t;";
    test_text = "#define _SOCKLEN_T\ntypedef u_int32_t socklen_t;";
};
};
/*
/*
 *  IRIX 6.5  only works with ISO C99 and errors out
 *  IRIX 6.5  only works with ISO C99 and errors out
 *  otherwise.
 *  otherwise.
 */
 */
fix = {
fix = {
    hackname  = irix_stdint_c99;
    hackname  = irix_stdint_c99;
    files     = stdint.h;
    files     = stdint.h;
    select = "(#ifndef __c99\n)(#error This header file is to be used only for c99 mode compilations)";
    select = "(#ifndef __c99\n)(#error This header file is to be used only for c99 mode compilations)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix  = format;
    c_fix  = format;
    c_fix_arg = "#if 0\n"
    c_fix_arg = "#if 0\n"
                "%2";
                "%2";
    test_text =
    test_text =
    "#ifndef __c99\n#error This header file is to be used only for c99 mode compilations\n#else";
    "#ifndef __c99\n#error This header file is to be used only for c99 mode compilations\n#else";
};
};
/*
/*
 *  IRIX 5.x's stdio.h and IRIX 6.5's internal/stdio_core.h declare
 *  IRIX 5.x's stdio.h and IRIX 6.5's internal/stdio_core.h declare
 *  some functions that take a va_list as
 *  some functions that take a va_list as
 *  taking char *.  However, GCC uses void * for va_list, so
 *  taking char *.  However, GCC uses void * for va_list, so
 *  calling vfprintf with a va_list fails in C++.  */
 *  calling vfprintf with a va_list fails in C++.  */
fix = {
fix = {
    hackname  = irix_stdio_va_list;
    hackname  = irix_stdio_va_list;
    files     = stdio.h;
    files     = stdio.h;
    files     = internal/stdio_core.h;
    files     = internal/stdio_core.h;
    select = '/\* va_list \*/ char \*';
    select = '/\* va_list \*/ char \*';
    c_fix  = format;
    c_fix  = format;
    c_fix_arg = "__gnuc_va_list";
    c_fix_arg = "__gnuc_va_list";
    test_text =
    test_text =
    "extern int printf( const char *, /* va_list */ char * );";
    "extern int printf( const char *, /* va_list */ char * );";
};
};
/*
/*
 *  IRIX 6.5.19  provides the XPG4 variant of
 *  IRIX 6.5.19  provides the XPG4 variant of
 *  wcsftime by default.  ISO C99 requires the XPG5 variant instead.
 *  wcsftime by default.  ISO C99 requires the XPG5 variant instead.
 */
 */
fix = {
fix = {
    hackname  = irix_wcsftime;
    hackname  = irix_wcsftime;
    files     = internal/wchar_core.h;
    files     = internal/wchar_core.h;
    select    = "#if _NO_XOPEN5\n(extern size_t[ \t]+wcsftime.*const char \*.*)";
    select    = "#if _NO_XOPEN5\n(extern size_t[ \t]+wcsftime.*const char \*.*)";
    mach      = "mips-sgi-irix6.5";
    mach      = "mips-sgi-irix6.5";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if _NO_XOPEN5 && !defined(__c99)\n%1";
    c_fix_arg = "#if _NO_XOPEN5 && !defined(__c99)\n%1";
    test_text = "#if _NO_XOPEN5\n"
    test_text = "#if _NO_XOPEN5\n"
                "extern size_t          wcsftime(wchar_t *, __SGI_LIBC_NAMESPACE_QUALIFIER size_t, const char *, const struct tm *);";
                "extern size_t          wcsftime(wchar_t *, __SGI_LIBC_NAMESPACE_QUALIFIER size_t, const char *, const struct tm *);";
};
};
/*
/*
 * Fixing ISC fmod declaration
 * Fixing ISC fmod declaration
 */
 */
fix = {
fix = {
    hackname  = isc_fmod;
    hackname  = isc_fmod;
    files     = math.h;
    files     = math.h;
    select    = 'fmod\(double\)';
    select    = 'fmod\(double\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "fmod(double, double)";
    c_fix_arg = "fmod(double, double)";
    test_text = "extern double  fmod(double);";
    test_text = "extern double  fmod(double);";
};
};
/*
/*
 *  On Interactive Unix 2.2, certain traditional Unix definitions
 *  On Interactive Unix 2.2, certain traditional Unix definitions
 *  (notably getc and putc in stdio.h) are omitted if __STDC__ is
 *  (notably getc and putc in stdio.h) are omitted if __STDC__ is
 *  defined, not just if _POSIX_SOURCE is defined.  This makes it
 *  defined, not just if _POSIX_SOURCE is defined.  This makes it
 *  impossible to compile any nontrivial program except with -posix.
 *  impossible to compile any nontrivial program except with -posix.
 */
 */
fix = {
fix = {
    hackname = isc_omits_with_stdc;
    hackname = isc_omits_with_stdc;
    files     = "stdio.h";
    files     = "stdio.h";
    files     = "math.h";
    files     = "math.h";
    files     = "ctype.h";
    files     = "ctype.h";
    files     = "sys/limits.h";
    files     = "sys/limits.h";
    files     = "sys/fcntl.h";
    files     = "sys/fcntl.h";
    files     = "sys/dirent.h";
    files     = "sys/dirent.h";
    select    = '!defined\(__STDC__\) && !defined\(_POSIX_SOURCE\)';
    select    = '!defined\(__STDC__\) && !defined\(_POSIX_SOURCE\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '!defined(_POSIX_SOURCE)';
    c_fix_arg = '!defined(_POSIX_SOURCE)';
    test_text = "#if !defined(__STDC__) && !defined(_POSIX_SOURCE) /* ? ! */"
    test_text = "#if !defined(__STDC__) && !defined(_POSIX_SOURCE) /* ? ! */"
                "\nint foo;\n#endif";
                "\nint foo;\n#endif";
};
};
/*
/*
 * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3
 * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3
 * use / * * / to concatenate tokens.
 * use / * * / to concatenate tokens.
 */
 */
fix = {
fix = {
    hackname = kandr_concat;
    hackname = kandr_concat;
    files  = "sparc/asm_linkage.h";
    files  = "sparc/asm_linkage.h";
    files  = "sun3/asm_linkage.h";
    files  = "sun3/asm_linkage.h";
    files  = "sun3x/asm_linkage.h";
    files  = "sun3x/asm_linkage.h";
    files  = "sun4/asm_linkage.h";
    files  = "sun4/asm_linkage.h";
    files  = "sun4c/asm_linkage.h";
    files  = "sun4c/asm_linkage.h";
    files  = "sun4m/asm_linkage.h";
    files  = "sun4m/asm_linkage.h";
    files  = "sun4c/debug/asm_linkage.h";
    files  = "sun4c/debug/asm_linkage.h";
    files  = "sun4m/debug/asm_linkage.h";
    files  = "sun4m/debug/asm_linkage.h";
    files  = "arm/as_support.h";
    files  = "arm/as_support.h";
    files  = "arm/mc_type.h";
    files  = "arm/mc_type.h";
    files  = "arm/xcb.h";
    files  = "arm/xcb.h";
    files  = "dev/chardefmac.h";
    files  = "dev/chardefmac.h";
    files  = "dev/ps_irq.h";
    files  = "dev/ps_irq.h";
    files  = "dev/screen.h";
    files  = "dev/screen.h";
    files  = "dev/scsi.h";
    files  = "dev/scsi.h";
    files  = "sys/tty.h";
    files  = "sys/tty.h";
    files  = "Xm.acorn/XmP.h";
    files  = "Xm.acorn/XmP.h";
    files  = bsd43/bsd43_.h;
    files  = bsd43/bsd43_.h;
    select = '/\*\*/';
    select = '/\*\*/';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '##';
    c_fix_arg = '##';
    test_text = "#define __CONCAT__(a,b) a/**/b";
    test_text = "#define __CONCAT__(a,b) a/**/b";
};
};
/*
/*
 *  Fix libc1 _G_va_list definition, used in declarations of several
 *  Fix libc1 _G_va_list definition, used in declarations of several
 *  more-or-less standard functions, for example vasprintf.
 *  more-or-less standard functions, for example vasprintf.
 */
 */
fix = {
fix = {
    hackname = libc1_G_va_list;
    hackname = libc1_G_va_list;
    files    = _G_config.h;
    files    = _G_config.h;
    mach     = '*-*-linux*libc1';
    mach     = '*-*-linux*libc1';
    select   = 'typedef void \* _G_va_list;';
    select   = 'typedef void \* _G_va_list;';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "typedef __builtin_va_list _G_va_list;";
    c_fix_arg = "typedef __builtin_va_list _G_va_list;";
    test_text = 'typedef void * _G_va_list;';
    test_text = 'typedef void * _G_va_list;';
};
};
/*
/*
 *  GNU libc1 string.h does not prototype memcpy and memcmp for gcc
 *  GNU libc1 string.h does not prototype memcpy and memcmp for gcc
 *  versions > 1.  This fix will open up the declaration for all
 *  versions > 1.  This fix will open up the declaration for all
 *  versions of GCC and for g++.
 *  versions of GCC and for g++.
 */
 */
fix = {
fix = {
    hackname  = libc1_ifdefd_memx;
    hackname  = libc1_ifdefd_memx;
    /* The string.h result is overwritten by AAB_ultrix_string when doing
    /* The string.h result is overwritten by AAB_ultrix_string when doing
       "make check" and will fail.  Therefore, we add the following kludgery
       "make check" and will fail.  Therefore, we add the following kludgery
       to insert the test_text into the special testing header.  :-}  */
       to insert the test_text into the special testing header.  :-}  */
    files     = testing.h;
    files     = testing.h;
    files     = string.h;
    files     = string.h;
    c_fix     = format;
    c_fix     = format;
    select    = "' is a built-in function for gcc 2\\.x\\. \\*/";
    select    = "' is a built-in function for gcc 2\\.x\\. \\*/";
    bypass    = __cplusplus;
    bypass    = __cplusplus;
    c_fix_arg = "%1";
    c_fix_arg = "%1";
    c_fix_arg =
    c_fix_arg =
       '/\* `mem...\' is a built-in function for gcc 2\.x\. \*/' "\n"
       '/\* `mem...\' is a built-in function for gcc 2\.x\. \*/' "\n"
       '#if defined\(__STDC__\) && __GNUC__ < 2'                 "\n"
       '#if defined\(__STDC__\) && __GNUC__ < 2'                 "\n"
       "(/\\* .* \\*/\n"
       "(/\\* .* \\*/\n"
       "extern [a-z_]+ mem.*(\n[^#].*)*;)\n"
       "extern [a-z_]+ mem.*(\n[^#].*)*;)\n"
       "#endif";
       "#endif";
    test_text =
    test_text =
    "/* \\`memcpy' is a built-in function for gcc 2.x. */\n"
    "/* \\`memcpy' is a built-in function for gcc 2.x. */\n"
    "#if defined(__STDC__) && __GNUC__ < 2\n"
    "#if defined(__STDC__) && __GNUC__ < 2\n"
    "/* Copy N bytes of SRC to DEST.  */\n"
    "/* Copy N bytes of SRC to DEST.  */\n"
    "extern __ptr_t memcpy __P ((__ptr_t __dest, __const __ptr_t __src,\n"
    "extern __ptr_t memcpy __P ((__ptr_t __dest, __const __ptr_t __src,\n"
    "                         size_t __n));\n"
    "                         size_t __n));\n"
    "#endif";
    "#endif";
};
};
/* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines
/* 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
 * an _SC_GR0_OFFSET macro using an idiom that isn't a compile time
 * constant on recent versions of g++.
 * constant on recent versions of g++.
 */
 */
fix = {
fix = {
    hackname = linux_ia64_ucontext;
    hackname = linux_ia64_ucontext;
    files = "sys/ucontext.h";
    files = "sys/ucontext.h";
    mach = "ia64-*-linux*";
    mach = "ia64-*-linux*";
    select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)'
    select = '\(\(\(char \*\) &\(\(struct sigcontext \*\) 0\)'
             '->sc_gr\[0\]\) - \(char \*\) 0\)';
             '->sc_gr\[0\]\) - \(char \*\) 0\)';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)";
    c_fix_arg = "__builtin_offsetof \(struct sigcontext, sc_gr[0]\)";
    test_text = "# define _SC_GR0_OFFSET\t\\\\\n"
    test_text = "# define _SC_GR0_OFFSET\t\\\\\n"
        "\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n";
        "\t(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)\n";
};
};
/*
/*
 * Apparently some SVR4 systems typedef longlong_t to long ?
 * Apparently some SVR4 systems typedef longlong_t to long ?
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname  = longlong_t;
    hackname  = longlong_t;
    select    = "typedef[ \t]+(unsigned[ \t]+)?long[ \t]+(u_)?longlong_t";
    select    = "typedef[ \t]+(unsigned[ \t]+)?long[ \t]+(u_)?longlong_t";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "typedef %1long long %2longlong_t";
    c_fix_arg = "typedef %1long long %2longlong_t";
    test_text = "typedef long longlong_t\n"
    test_text = "typedef long longlong_t\n"
                "typedef unsigned long u_longlong_t";
                "typedef unsigned long u_longlong_t";
};
};
#endif
#endif
/*
/*
 *  Remove header file warning from sys/time.h.  Autoconf's
 *  Remove header file warning from sys/time.h.  Autoconf's
 *  AC_HEADER_TIME recommends to include both sys/time.h and time.h
 *  AC_HEADER_TIME recommends to include both sys/time.h and time.h
 *  which causes warning on LynxOS.  Remove the warning.
 *  which causes warning on LynxOS.  Remove the warning.
 */
 */
fix = {
fix = {
    hackname  = lynxos_no_warning_in_sys_time_h;
    hackname  = lynxos_no_warning_in_sys_time_h;
    files     = sys/time.h;
    files     = sys/time.h;
    select    = "#warning[ \t]+Using  instead of ";
    select    = "#warning[ \t]+Using  instead of ";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "";
    c_fix_arg = "";
    test_text = "#warning Using  instead of ";
    test_text = "#warning Using  instead of ";
};
};
/*
/*
 *  Add missing declaration for putenv.
 *  Add missing declaration for putenv.
 */
 */
fix = {
fix = {
    hackname  = lynxos_missing_putenv;
    hackname  = lynxos_missing_putenv;
    mach      = '*-*-lynxos*';
    mach      = '*-*-lynxos*';
    files     = stdlib.h;
    files     = stdlib.h;
    bypass    = 'putenv[ \t]*\\(';
    bypass    = 'putenv[ \t]*\\(';
    select    = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    select    = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n"
    c_fix_arg = "%0\n"
        "extern int putenv                              _AP((char *));";
        "extern int putenv                              _AP((char *));";
    c_fix_arg = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    c_fix_arg = "extern char \\*getenv[ \t]*_AP\\(\\(const char \\*\\)\\);";
    test_text = "extern char *getenv    _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_.
 * 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
 * On NetBSD, machine is a symbolic link to an architecture specific
 * directory name, so we can't match a specific file name here.
 * directory name, so we can't match a specific file name here.
 */
 */
fix = {
fix = {
    hackname = machine_ansi_h_va_list;
    hackname = machine_ansi_h_va_list;
    select   = "define[ \t]+_BSD_VA_LIST_[ \t]";
    select   = "define[ \t]+_BSD_VA_LIST_[ \t]";
    bypass   = '__builtin_va_list';
    bypass   = '__builtin_va_list';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1__builtin_va_list";
    c_fix_arg = "%1__builtin_va_list";
    c_fix_arg = "(define[ \t]+_BSD_VA_LIST_[ \t]+).*";
    c_fix_arg = "(define[ \t]+_BSD_VA_LIST_[ \t]+).*";
    test_text = " # define _BSD_VA_LIST_\tchar**";
    test_text = " # define _BSD_VA_LIST_\tchar**";
};
};
/*
/*
 *  Fix non-ansi machine name defines
 *  Fix non-ansi machine name defines
 */
 */
fix = {
fix = {
    hackname  = machine_name;
    hackname  = machine_name;
    c_test    = machine_name;
    c_test    = machine_name;
    c_fix     = machine_name;
    c_fix     = machine_name;
    test_text = "/* MACH_DIFF: */\n"
    test_text = "/* MACH_DIFF: */\n"
    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
    "\n/* no uniform test, so be careful  :-) */";
    "\n/* no uniform test, so be careful  :-) */";
};
};
/*
/*
 *  Some math.h files define struct exception (it's in the System V
 *  Some math.h files define struct exception (it's in the System V
 *  Interface Definition), which conflicts with the class exception defined
 *  Interface Definition), which conflicts with the class exception defined
 *  in the C++ file std/stdexcept.h.  We redefine it to __math_exception.
 *  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
 *  This is not a great fix, but I haven't been able to think of anything
 *  better.  Note that we have to put the #ifdef/#endif blocks at beginning
 *  better.  Note that we have to put the #ifdef/#endif blocks at beginning
 *  and end of file, because fixproto runs after us and may insert
 *  and end of file, because fixproto runs after us and may insert
 *  additional references to struct exception.
 *  additional references to struct exception.
 */
 */
fix = {
fix = {
    hackname  = math_exception;
    hackname  = math_exception;
    files     = math.h;
    files     = math.h;
    select    = "struct exception";
    select    = "struct exception";
    /*
    /*
     * This should be bypassed on __cplusplus, but some supposedly C++ C++
     * This should be bypassed on __cplusplus, but some supposedly C++ C++
     * aware headers, such as Solaris 8 and 9, don't wrap their struct
     * 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
     * exception either.  So currently we bypass only for glibc, based on a
     * comment in the fixed glibc header.  Ick.
     * 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';
    bypass    = 'We have a problem when using C\+\+|for C\+\+, _[a-z0-9A-Z_]+_exception; for C, exception';
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "#define exception __math_exception\n"
                "#define exception __math_exception\n"
                "#endif\n";
                "#endif\n";
    c_fix_arg = "#ifdef __cplusplus\n"
    c_fix_arg = "#ifdef __cplusplus\n"
                "#undef exception\n"
                "#undef exception\n"
                "#endif\n";
                "#endif\n";
    test_text = "typedef struct exception t_math_exception;";
    test_text = "typedef struct exception t_math_exception;";
};
};
/*
/*
 *  This looks pretty broken to me.  ``dbl_max_def'' will contain
 *  This looks pretty broken to me.  ``dbl_max_def'' will contain
 *  "define DBL_MAX " at the start, when what we really want is just
 *  "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
 *  the value portion.  Can't figure out how to write a test case
 *  for this either  :-(
 *  for this either  :-(
 */
 */
fix = {
fix = {
    hackname = math_huge_val_from_dbl_max;
    hackname = math_huge_val_from_dbl_max;
    files    = math.h;
    files    = math.h;
    /*
    /*
     * IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined
     * IF HUGE_VAL is defined to be DBL_MAX *and* DBL_MAX is _not_ defined
     * in math.h, this fix applies.
     * in math.h, this fix applies.
     */
     */
    select   = "define[ \t]+HUGE_VAL[ \t]+DBL_MAX";
    select   = "define[ \t]+HUGE_VAL[ \t]+DBL_MAX";
    bypass   = "define[ \t]+DBL_MAX";
    bypass   = "define[ \t]+DBL_MAX";
    shell    =
    shell    =
    /*
    /*
     *  See if we have a definition for DBL_MAX in float.h.
     *  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.
     *  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 "
    "\tdbl_max_def=`egrep 'define[ \t]+DBL_MAX[ \t]+.*' float.h "
                   "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
                   "| sed 's/.*DBL_MAX[ \t]*//' 2>/dev/null`\n\n"
    "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
    "\tif ( test -n \"${dbl_max_def}\" ) > /dev/null 2>&1\n"
    "\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/"
    "\tthen sed -e '/define[ \t]*HUGE_VAL[ \t]*DBL_MAX/"
                        "s@DBL_MAX@'\"$dbl_max_def@\"\n"
                        "s@DBL_MAX@'\"$dbl_max_def@\"\n"
    "\telse cat\n"
    "\telse cat\n"
    "\tfi";
    "\tfi";
    test_text =
    test_text =
    "`echo '#define DBL_MAX\t3.1415e+9 /* really big */' >> float.h`\n"
    "`echo '#define DBL_MAX\t3.1415e+9 /* really big */' >> float.h`\n"
    "#define HUGE_VAL DBL_MAX";
    "#define HUGE_VAL DBL_MAX";
};
};
/*
/*
 *  nested comment
 *  nested comment
 */
 */
fix = {
fix = {
    hackname  = nested_auth_des;
    hackname  = nested_auth_des;
    files     = rpc/rpc.h;
    files     = rpc/rpc.h;
    select    = '(/\*.*rpc/auth_des\.h>.*)/\*';
    select    = '(/\*.*rpc/auth_des\.h>.*)/\*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1*/ /*";
    c_fix_arg = "%1*/ /*";
    test_text = "/*#include  /* skip this */";
    test_text = "/*#include  /* skip this */";
};
};
/*
/*
 * Fix nested comments in Motorola's  and 
 * Fix nested comments in Motorola's  and 
 */
 */
fix = {
fix = {
    hackname = nested_motorola;
    hackname = nested_motorola;
    mach     = "m68k-motorola-sysv*";
    mach     = "m68k-motorola-sysv*";
    files    = sys/limits.h;
    files    = sys/limits.h;
    files    = limits.h;
    files    = limits.h;
    select   = "max # bytes atomic in write|error value returned by Math lib";
    select   = "max # bytes atomic in write|error value returned by Math lib";
    sed = "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*"
    sed = "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*"
                   "/\\* max # bytes atomic in write to a\\)$@\\1 */@";
                   "/\\* max # bytes atomic in write to a\\)$@\\1 */@";
    sed = "s@\\(/\\*#define\tHUGE_VAL\t3.[0-9e+]* \\)"
    sed = "s@\\(/\\*#define\tHUGE_VAL\t3.[0-9e+]* \\)"
          "\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@";
          "\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@";
    test_text =
    test_text =
    "#undef PIPE_BUF /* max # bytes atomic in write to a\n"
    "#undef PIPE_BUF /* max # bytes atomic in write to a\n"
    "\t\t/* PIPE */\n"
    "\t\t/* PIPE */\n"
    "/*#define\tHUGE_VAL\t3.9e+9 /*error value returned by Math lib*/";
    "/*#define\tHUGE_VAL\t3.9e+9 /*error value returned by Math lib*/";
};
};
/*
/*
 * Fixing nested comments in ISC 
 * Fixing nested comments in ISC 
 */
 */
fix = {
fix = {
    hackname = nested_sys_limits;
    hackname = nested_sys_limits;
    files  = sys/limits.h;
    files  = sys/limits.h;
    select = CHILD_MAX;
    select = CHILD_MAX;
    sed    = "/CHILD_MAX/s,/\\* Max, Max,";
    sed    = "/CHILD_MAX/s,/\\* Max, Max,";
    sed    = "/OPEN_MAX/s,/\\* Max, Max,";
    sed    = "/OPEN_MAX/s,/\\* Max, Max,";
    test_text = "/*\n#define CHILD_MAX 20 /* Max, Max, ... */ /*\n"
    test_text = "/*\n#define CHILD_MAX 20 /* Max, Max, ... */ /*\n"
                "#define OPEN_MAX  20 /* Max, Max, ... */\n";
                "#define OPEN_MAX  20 /* Max, Max, ... */\n";
};
};
/*
/*
 * NetBSD has a semicolon after the ending '}' for some extern "C".
 * NetBSD has a semicolon after the ending '}' for some extern "C".
 */
 */
fix = {
fix = {
    hackname  = netbsd_extra_semicolon;
    hackname  = netbsd_extra_semicolon;
    mach      = *-*-netbsd*;
    mach      = *-*-netbsd*;
    files     = sys/cdefs.h;
    files     = sys/cdefs.h;
    select    = "#define[ \t]*__END_DECLS[ \t]*};";
    select    = "#define[ \t]*__END_DECLS[ \t]*};";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define __END_DECLS }";
    c_fix_arg = "#define __END_DECLS }";
    test_text = "#define __END_DECLS };";
    test_text = "#define __END_DECLS };";
};
};
/*
/*
 *  NeXT 3.2 adds const prefix to some math functions.
 *  NeXT 3.2 adds const prefix to some math functions.
 *  These conflict with the built-in functions.
 *  These conflict with the built-in functions.
 */
 */
fix = {
fix = {
    hackname  = next_math_prefix;
    hackname  = next_math_prefix;
    files     = ansi/math.h;
    files     = ansi/math.h;
    select    = "^extern[ \t]+double[ \t]+__const__[ \t]";
    select    = "^extern[ \t]+double[ \t]+__const__[ \t]";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern double %1(";
    c_fix_arg = "extern double %1(";
    c_fix_arg = "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(";
    c_fix_arg = "^extern[ \t]+double[ \t]+__const__[ \t]+([a-z]+)\\(";
    test_text = "extern\tdouble\t__const__\tmumble();";
    test_text = "extern\tdouble\t__const__\tmumble();";
};
};
/*
/*
 *  NeXT 3.2 uses the word "template" as a parameter for some
 *  NeXT 3.2 uses the word "template" as a parameter for some
 *  functions. GCC reports an invalid use of a reserved key word
 *  functions. GCC reports an invalid use of a reserved key word
 *  with the built-in functions.
 *  with the built-in functions.
 */
 */
fix = {
fix = {
    hackname = next_template;
    hackname = next_template;
    files    = bsd/libc.h;
    files    = bsd/libc.h;
    select   = "[ \t]template\\)";
    select   = "[ \t]template\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "(%1)";
    c_fix_arg = "(%1)";
    c_fix_arg = "\\(([^)]*)[ \t]template\\)";
    c_fix_arg = "\\(([^)]*)[ \t]template\\)";
    test_text = "extern mumble( char * template); /* fix */";
    test_text = "extern mumble( char * template); /* fix */";
};
};
/*
/*
 *  NeXT 3.2 includes the keyword volatile in the abort() and  exit()
 *  NeXT 3.2 includes the keyword volatile in the abort() and  exit()
 *  function prototypes. That conflicts with the  built-in functions.
 *  function prototypes. That conflicts with the  built-in functions.
 */
 */
fix = {
fix = {
    hackname = next_volitile;
    hackname = next_volitile;
    files    = ansi/stdlib.h;
    files    = ansi/stdlib.h;
    select   = "^extern[ \t]+volatile[ \t]+void[ \t]";
    select   = "^extern[ \t]+volatile[ \t]+void[ \t]";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern void %1(";
    c_fix_arg = "extern void %1(";
    c_fix_arg = "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(";
    c_fix_arg = "^extern[ \t]+volatile[ \t]+void[ \t]+(exit|abort)\\(";
    test_text = "extern\tvolatile\tvoid\tabort();";
    test_text = "extern\tvolatile\tvoid\tabort();";
};
};
/*
/*
 *  NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
 *  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,
 *  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
 *  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.
 *  conditional, so it doesn't need this fix.  So everything is okay.
 */
 */
fix = {
fix = {
    hackname  = next_wait_union;
    hackname  = next_wait_union;
    files     = sys/wait.h;
    files     = sys/wait.h;
    select    = 'wait\(union wait';
    select    = 'wait\(union wait';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "wait(void";
    c_fix_arg = "wait(void";
    test_text = "extern pid_d wait(union wait*);";
    test_text = "extern pid_d wait(union wait*);";
};
};
/*
/*
 *  a missing semi-colon at the end of the nodeent structure definition.
 *  a missing semi-colon at the end of the nodeent structure definition.
 */
 */
fix = {
fix = {
    hackname  = nodeent_syntax;
    hackname  = nodeent_syntax;
    files     = netdnet/dnetdb.h;
    files     = netdnet/dnetdb.h;
    select    = "char[ \t]*\\*na_addr[ \t]*$";
    select    = "char[ \t]*\\*na_addr[ \t]*$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0;";
    c_fix_arg = "%0;";
    test_text = "char *na_addr\t";
    test_text = "char *na_addr\t";
};
};
/*
/*
 *  obstack.h used casts as lvalues.
 *  obstack.h used casts as lvalues.
 *
 *
 *  We need to change postincrements of casted pointers (which are
 *  We need to change postincrements of casted pointers (which are
 *  then dereferenced and assigned into) of the form
 *  then dereferenced and assigned into) of the form
 *
 *
 *    *((TYPE*)PTRVAR)++ = (VALUE)
 *    *((TYPE*)PTRVAR)++ = (VALUE)
 *
 *
 *  into expressions like
 *  into expressions like
 *
 *
 *    ((*((TYPE*)PTRVAR) = (VALUE)), (PTRVAR += sizeof (TYPE)))
 *    ((*((TYPE*)PTRVAR) = (VALUE)), (PTRVAR += sizeof (TYPE)))
 *
 *
 *  which is correct for the cases used in obstack.h since PTRVAR is
 *  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.
 *  of type char * and the value of the expression is not used.
 */
 */
fix = {
fix = {
    hackname  = obstack_lvalue_cast;
    hackname  = obstack_lvalue_cast;
    files     = obstack.h;
    files     = obstack.h;
    select    = '\*\(\(([^()]*)\*\)(.*)\)\+\+ = \(([^()]*)\)';
    select    = '\*\(\(([^()]*)\*\)(.*)\)\+\+ = \(([^()]*)\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))";
    c_fix_arg = "((*((%1*)%2) = (%3)), (%2 += sizeof (%1)))";
    test_text = "*((void **) (h)->next_free)++ = (aptr)";
    test_text = "*((void **) (h)->next_free)++ = (aptr)";
};
};
/*
/*
 *  sys/lc_core.h on some versions of OSF1/4.x pollutes the namespace by
 *  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
 *  defining regex.h related types.  This causes libg++ build and usage
 *  failures.  Fixing this correctly requires checking and modifying 3 files.
 *  failures.  Fixing this correctly requires checking and modifying 3 files.
 */
 */
fix = {
fix = {
    hackname = osf_namespace_a;
    hackname = osf_namespace_a;
    files    = reg_types.h;
    files    = reg_types.h;
    files    = sys/lc_core.h;
    files    = sys/lc_core.h;
    test     = " -r reg_types.h";
    test     = " -r reg_types.h";
    test     = " -r sys/lc_core.h";
    test     = " -r sys/lc_core.h";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__%0";
    c_fix_arg = "__%0";
    c_fix_arg = "reg(ex|off|match)_t";
    c_fix_arg = "reg(ex|off|match)_t";
    test_text = "`touch sys/lc_core.h`"
    test_text = "`touch sys/lc_core.h`"
    "typedef struct {\n  int stuff, mo_suff;\n} regex_t;\n"
    "typedef struct {\n  int stuff, mo_suff;\n} regex_t;\n"
    "extern regex_t    re;\n"
    "extern regex_t    re;\n"
    "extern regoff_t   ro;\n"
    "extern regoff_t   ro;\n"
    "extern regmatch_t rm;\n";
    "extern regmatch_t rm;\n";
};
};
fix = {
fix = {
    hackname = osf_namespace_c;
    hackname = osf_namespace_c;
    files    = regex.h;
    files    = regex.h;
    test     = " -r reg_types.h";
    test     = " -r reg_types.h";
    test     = " -r sys/lc_core.h";
    test     = " -r sys/lc_core.h";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -n \"`grep '} regex_t;' reg_types.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    test     = " -z \"`grep __regex_t regex.h`\"";
    select    = "#include .*";
    select    = "#include .*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n"
    c_fix_arg = "%0\n"
                "typedef __regex_t\tregex_t;\n"
                "typedef __regex_t\tregex_t;\n"
                "typedef __regoff_t\tregoff_t;\n"
                "typedef __regoff_t\tregoff_t;\n"
                "typedef __regmatch_t\tregmatch_t;";
                "typedef __regmatch_t\tregmatch_t;";
    test_text = "#include ";
    test_text = "#include ";
};
};
/*
/*
 *  Fix __page_size* declarations in pthread.h AIX 4.1.[34].
 *  Fix __page_size* declarations in pthread.h AIX 4.1.[34].
 *  The original ones fail if uninitialized externs are not common.
 *  The original ones fail if uninitialized externs are not common.
 *  This is the default for all ANSI standard C++ compilers.
 *  This is the default for all ANSI standard C++ compilers.
 */
 */
fix = {
fix = {
    hackname  = pthread_page_size;
    hackname  = pthread_page_size;
    files     = pthread.h;
    files     = pthread.h;
    select    = "^int __page_size";
    select    = "^int __page_size";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern %0";
    c_fix_arg = "extern %0";
    test_text = "int __page_size;";
    test_text = "int __page_size;";
};
};
/*
/*
 * On broken glibc-2.3.3 systems an array of incomplete structures is
 * On broken glibc-2.3.3 systems an array of incomplete structures is
 * passed to __sigsetjmp.  Fix that to take a pointer instead.
 * passed to __sigsetjmp.  Fix that to take a pointer instead.
 */
 */
fix = {
fix = {
    hackname  = pthread_incomplete_struct_argument;
    hackname  = pthread_incomplete_struct_argument;
    files     = pthread.h;
    files     = pthread.h;
    select    = "struct __jmp_buf_tag";
    select    = "struct __jmp_buf_tag";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 *%2%3";
    c_fix_arg = "%1 *%2%3";
    c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) (__env)\\[1\\](.*)$";
    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);";
    test_text = "extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask);";
};
};
/*
/*
 * On DYNIX/ptx, sys/mc_param.h has an embedded asm for the cpuid instruction
 * On DYNIX/ptx, sys/mc_param.h has an embedded asm for the cpuid instruction
 * on the P5. This is not used by anything else so we ifdef it out.
 * on the P5. This is not used by anything else so we ifdef it out.
 * Current GCC doesn't seem to complain about the asm, though.
 * Current GCC doesn't seem to complain about the asm, though.
 */
 */
#ifdef PTX
#ifdef PTX
fix = {
fix = {
    hackname  = ptx_sys_mc_param_h;
    hackname  = ptx_sys_mc_param_h;
    files     = sys/mc_param.h;
    files     = sys/mc_param.h;
    sed       = "/__asm/,/}/{"
    sed       = "/__asm/,/}/{"
                  "/__asm/i\\\n"
                  "/__asm/i\\\n"
                  "#if !defined (__GNUC__) && !defined (__GNUG__)\n"
                  "#if !defined (__GNUC__) && !defined (__GNUG__)\n"
                  "/}/a\\\n"
                  "/}/a\\\n"
                  "#endif\n"
                  "#endif\n"
                "}";
                "}";
    test_text = "__asm\n"
    test_text = "__asm\n"
                "int _CPUID()\n"
                "int _CPUID()\n"
                "{\n"
                "{\n"
                "   non-GNU assembly here\n"
                "   non-GNU assembly here\n"
                "}";
                "}";
};
};
#endif
#endif
/*
/*
 *  Fix return type of fread and fwrite on sysV68
 *  Fix return type of fread and fwrite on sysV68
 */
 */
fix = {
fix = {
    hackname = read_ret_type;
    hackname = read_ret_type;
    files    = stdio.h;
    files    = stdio.h;
    select   = "extern int\t.*, fread\\(\\), fwrite\\(\\)";
    select   = "extern int\t.*, fread\\(\\), fwrite\\(\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "extern unsigned int fread(), fwrite();\n%1%2";
    c_fix_arg = "extern unsigned int fread(), fwrite();\n%1%2";
    c_fix_arg = "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)";
    c_fix_arg = "(extern int\t.*), fread\\(\\), fwrite\\(\\)(.*)";
    test_text = "extern int\tfclose(), fflush(), fread(), fwrite(), foo();";
    test_text = "extern int\tfclose(), fflush(), fread(), fwrite(), foo();";
};
};
/*
/*
 *  Fix casts as lvalues in glibc's .
 *  Fix casts as lvalues in glibc's .
 */
 */
fix = {
fix = {
    hackname  = rpc_xdr_lvalue_cast_a;
    hackname  = rpc_xdr_lvalue_cast_a;
    files     = rpc/xdr.h;
    files     = rpc/xdr.h;
    select    = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*";
    select    = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))";
    c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))";
    test_text = "#define IXDR_GET_LONG(buf) \\\\\n"
    test_text = "#define IXDR_GET_LONG(buf) \\\\\n"
                "\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))";
                "\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))";
};
};
fix = {
fix = {
    hackname  = rpc_xdr_lvalue_cast_b;
    hackname  = rpc_xdr_lvalue_cast_b;
    files     = rpc/xdr.h;
    files     = rpc/xdr.h;
    select    = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*";
    select    = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))";
    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"
    test_text = "#define IXDR_PUT_LONG(buf, v) \\\\\n"
                "\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))";
                "\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))";
};
};
/*
/*
 *  function class(double x) conflicts with C++ keyword on rs/6000
 *  function class(double x) conflicts with C++ keyword on rs/6000
 */
 */
fix = {
fix = {
    hackname  = rs6000_double;
    hackname  = rs6000_double;
    files     = math.h;
    files     = math.h;
    select    = '[^a-zA-Z_]class\(';
    select    = '[^a-zA-Z_]class\(';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = "#ifndef __cplusplus\n%0\n#endif";
    c_fix_arg = '^.*[^a-zA-Z_]class\(.*';
    c_fix_arg = '^.*[^a-zA-Z_]class\(.*';
    test_text = "extern int class();";
    test_text = "extern int class();";
};
};
/*
/*
 *  Wrong fchmod prototype on RS/6000.
 *  Wrong fchmod prototype on RS/6000.
 */
 */
fix = {
fix = {
    hackname  = rs6000_fchmod;
    hackname  = rs6000_fchmod;
    files     = sys/stat.h;
    files     = sys/stat.h;
    select    = 'fchmod\(char \*';
    select    = 'fchmod\(char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "fchmod(int";
    c_fix_arg = "fchmod(int";
    test_text = "extern int fchmod(char *, mode_t);";
    test_text = "extern int fchmod(char *, mode_t);";
};
};
/*
/*
 *  parameters conflict with C++ new on rs/6000
 *  parameters conflict with C++ new on rs/6000
 */
 */
fix = {
fix = {
    hackname  = rs6000_param;
    hackname  = rs6000_param;
    files     = "stdio.h";
    files     = "stdio.h";
    files     = "unistd.h";
    files     = "unistd.h";
    select    = 'rename\(const char \*old, const char \*new\)';
    select    = 'rename\(const char \*old, const char \*new\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'rename(const char *_old, const char *_new)';
    c_fix_arg = 'rename(const char *_old, const char *_new)';
    test_text = 'extern int rename(const char *old, const char *new);';
    test_text = 'extern int rename(const char *old, const char *new);';
};
};
/*
/*
 *  On OpenServer and on UnixWare 7,  uses the native compiler
 *  On OpenServer and on UnixWare 7,  uses the native compiler
 *  __builtin_generic. We fix that usage to use the GCC equivalent.
 *  __builtin_generic. We fix that usage to use the GCC equivalent.
 * It also has a plethora of inline functions that conflict with libstdc++.
 * It also has a plethora of inline functions that conflict with libstdc++.
 */
 */
fix = {
fix = {
    hackname = sco_math;
    hackname = sco_math;
    files    = math.h;
    files    = math.h;
    files    = ansi/math.h;
    files    = ansi/math.h;
    files    = posix/math.h;
    files    = posix/math.h;
    files    = xpg4/math.h;
    files    = xpg4/math.h;
    files    = xpg4v2/math.h;
    files    = xpg4v2/math.h;
    files    = xpg4plus/math.h;
    files    = xpg4plus/math.h;
    files    = ods_30_compat/math.h;
    files    = ods_30_compat/math.h;
    files    = oldstyle/math.h;
    files    = oldstyle/math.h;
    select   = "inline double abs";
    select   = "inline double abs";
    bypass   = "__GNUG__";
    bypass   = "__GNUG__";
    sed      = "/#define.*__fp_class(a) \\\\/i\\\n"
    sed      = "/#define.*__fp_class(a) \\\\/i\\\n"
               "#ifndef __GNUC__\n";
               "#ifndef __GNUC__\n";
    sed      =
    sed      =
"/.*__builtin_generic/a\\\n"
"/.*__builtin_generic/a\\\n"
"#else\\\n"
"#else\\\n"
"#define __fp_class(a) \\\\\\\n"
"#define __fp_class(a) \\\\\\\n"
"  __builtin_choose_expr(__builtin_types_compatible_p(typeof(a),long double),\\\\\\\n"
"  __builtin_choose_expr(__builtin_types_compatible_p(typeof(a),long double),\\\\\\\n"
"   __fpclassifyl(a), \\\\\\\n"
"   __fpclassifyl(a), \\\\\\\n"
"    __builtin_choose_expr(__builtin_types_compatible_p(typeof(a), float), \\\\\\\n"
"    __builtin_choose_expr(__builtin_types_compatible_p(typeof(a), float), \\\\\\\n"
"      __fpclassifyf(a),__fpclassify(a)))\\\n"
"      __fpclassifyf(a),__fpclassify(a)))\\\n"
"#endif";
"#endif";
    sed      = "/extern \"C\\+\\+\"/N;"
    sed      = "/extern \"C\\+\\+\"/N;"
               "/inline double abs/i\\\n"
               "/inline double abs/i\\\n"
               "#ifndef __GNUC__\n";
               "#ifndef __GNUC__\n";
    sed      = "/inline long double trunc/N;"
    sed      = "/inline long double trunc/N;"
               "/inline long double trunc.*}.*extern \"C\\+\\+\"/a\\\n"
               "/inline long double trunc.*}.*extern \"C\\+\\+\"/a\\\n"
               "#endif /* ! __GNUC__ */";
               "#endif /* ! __GNUC__ */";
    test_text =
    test_text =
    "#define __fp_class(a) \\\\\n"
    "#define __fp_class(a) \\\\\n"
    " __builtin_generic(a,\"ld:__fplcassifyl;f:__fpclassifyf;:__fpclassify\")\n";
    " __builtin_generic(a,\"ld:__fplcassifyl;f:__fpclassifyf;:__fpclassify\")\n";
};
};
/*
/*
 *  On SCO OpenServer prior to 5.0.7UP1,  and 
 *  On SCO OpenServer prior to 5.0.7UP1,  and 
 *  have a clash on struct _fpstate and struct fpstate.
 *  have a clash on struct _fpstate and struct fpstate.
 */
 */
fix = {
fix = {
    hackname = sco_regset;
    hackname = sco_regset;
    files    = sys/regset.h;
    files    = sys/regset.h;
    mach     = "*-*-sco3.2v5*";
    mach     = "*-*-sco3.2v5*";
    select   = "(struct[ \t]+.*)fpstate";
    select   = "(struct[ \t]+.*)fpstate";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1rsfpstate";
    c_fix_arg = "%1rsfpstate";
    test_text =
    test_text =
    "union u_fps {\n"
    "union u_fps {\n"
    "    struct\tfpstate\n"
    "    struct\tfpstate\n"
    "    {\n"
    "    {\n"
    "       int whatever;\n"
    "       int whatever;\n"
    "    }\n"
    "    }\n"
    "};\n"
    "};\n"
    "union _u_fps {\n"
    "union _u_fps {\n"
    "    struct _fpstate\n"
    "    struct _fpstate\n"
    "    {\n"
    "    {\n"
    "       int whatever;\n"
    "       int whatever;\n"
    "    }\n"
    "    }\n"
    "};\n";
    "};\n";
};
};
/*
/*
 *  The static functions lstat() and fchmod() in 
 *  The static functions lstat() and fchmod() in 
 *  cause G++ grief since they're not wrapped in "if __cplusplus".
 *  cause G++ grief since they're not wrapped in "if __cplusplus".
 *
 *
 *  On SCO OpenServer 5.0.0 through (at least) 5.0.5  contains
 *  On SCO OpenServer 5.0.0 through (at least) 5.0.5  contains
 *  tiny static wrappers that aren't C++ safe.
 *  tiny static wrappers that aren't C++ safe.
 */
 */
fix = {
fix = {
    hackname = sco_static_func;
    hackname = sco_static_func;
    files    = sys/stat.h;
    files    = sys/stat.h;
    mach     = "i?86-*-sco3.2*";
    mach     = "i?86-*-sco3.2*";
    select   = "^static int";
    select   = "^static int";
    sed      = "/^static int/i\\\n"
    sed      = "/^static int/i\\\n"
               "#if __cplusplus\\\n"
               "#if __cplusplus\\\n"
               "extern \"C\" {\\\n"
               "extern \"C\" {\\\n"
               "#endif /* __cplusplus */";
               "#endif /* __cplusplus */";
    sed      = "/^}$/a\\\n"
    sed      = "/^}$/a\\\n"
               "#if __cplusplus\\\n"
               "#if __cplusplus\\\n"
               " }\\\n"
               " }\\\n"
               "#endif /* __cplusplus */";
               "#endif /* __cplusplus */";
    test_text =
    test_text =
    "#ifdef __STDC__\n"
    "#ifdef __STDC__\n"
    "static int\tstat(const char *__f, struct stat *__p) {\n"
    "static int\tstat(const char *__f, struct stat *__p) {\n"
    "\treturn __stat32(__f, __p);\n"
    "\treturn __stat32(__f, __p);\n"
    "}\n\n#  else /* !__STDC__ THIS FAILS ON BSD SYSTEMS */\n"
    "}\n\n#  else /* !__STDC__ THIS FAILS ON BSD SYSTEMS */\n"
    "static int\tstat(__f, __p)\n"
    "static int\tstat(__f, __p)\n"
    "\tchar *__f;\n"
    "\tchar *__f;\n"
    "\tstruct stat *__p;\n"
    "\tstruct stat *__p;\n"
    "{\n"
    "{\n"
    "\treturn __stat32(__f, __p);\n"
    "\treturn __stat32(__f, __p);\n"
    "}\n"
    "}\n"
    "#endif";
    "#endif";
};
};
/*
/*
 *  Fix prototype declaration of utime in sys/times.h.
 *  Fix prototype declaration of utime in sys/times.h.
 *  In 3.2v4.0 the const is missing.
 *  In 3.2v4.0 the const is missing.
 */
 */
fix = {
fix = {
    hackname  = sco_utime;
    hackname  = sco_utime;
    files     = sys/times.h;
    files     = sys/times.h;
    mach      = "i?86-*-sco3.2v4*";
    mach      = "i?86-*-sco3.2v4*";
    select    = '\(const char \*, struct utimbuf \*\);';
    select    = '\(const char \*, struct utimbuf \*\);';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '(const char *, const struct utimbuf *);';
    c_fix_arg = '(const char *, const struct utimbuf *);';
    test_text = "extern int utime(const char *, struct utimbuf *);";
    test_text = "extern int utime(const char *, struct utimbuf *);";
};
};
/*
/*
 * Sun Solaris 10 defines several C99 math macros in terms of
 * Sun Solaris 10 defines several C99 math macros in terms of
 * builtins specific to the Studio compiler, in particular not
 * builtins specific to the Studio compiler, in particular not
 * compatible with the GNU compiler.
 * compatible with the GNU compiler.
 */
 */
fix = {
fix = {
    hackname = solaris_math_1;
    hackname = solaris_math_1;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())";
    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]+)";
    c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     HUGE_VAL\n"
    "#undef     HUGE_VAL\n"
    "#define    HUGE_VAL        __builtin_huge_val\n"
    "#define    HUGE_VAL        __builtin_huge_val\n"
    "#undef     HUGE_VALF\n"
    "#undef     HUGE_VALF\n"
    "#define    HUGE_VALF       __builtin_huge_valf\n"
    "#define    HUGE_VALF       __builtin_huge_valf\n"
    "#undef     HUGE_VALL\n"
    "#undef     HUGE_VALL\n"
    "#define    HUGE_VALL       __builtin_huge_vall";
    "#define    HUGE_VALL       __builtin_huge_vall";
};
};
fix = {
fix = {
    hackname = solaris_math_2;
    hackname = solaris_math_2;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
    c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
    c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
    c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     INFINITY\n"
    "#undef     INFINITY\n"
    "#define    INFINITY        __builtin_infinity";
    "#define    INFINITY        __builtin_infinity";
};
};
fix = {
fix = {
    hackname = solaris_math_3;
    hackname = solaris_math_3;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
    c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
    c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
    c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     NAN\n"
    "#undef     NAN\n"
    "#define    NAN     __builtin_nan";
    "#define    NAN     __builtin_nan";
};
};
fix = {
fix = {
    hackname = solaris_math_4;
    hackname = solaris_math_4;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tfpclassify(x) \\\n"
    c_fix_arg = "#define\tfpclassify(x) \\\n"
                "  __extension__ ({ const __typeof(x) __x_fp = (x); \\\n"
                "  __extension__ ({ const __typeof(x) __x_fp = (x); \\\n"
                "\t\t   isnan(__x_fp) \\\n"
                "\t\t   isnan(__x_fp) \\\n"
                "\t\t     ? FP_NAN \\\n"
                "\t\t     ? FP_NAN \\\n"
                "\t\t     : isinf(__x_fp) \\\n"
                "\t\t     : isinf(__x_fp) \\\n"
                "\t\t       ? FP_INFINITE \\\n"
                "\t\t       ? FP_INFINITE \\\n"
                "\t\t       : isnormal(__x_fp) \\\n"
                "\t\t       : isnormal(__x_fp) \\\n"
                "\t\t\t ? FP_NORMAL \\\n"
                "\t\t\t ? FP_NORMAL \\\n"
                "\t\t\t : __x_fp == 0.0 \\\n"
                "\t\t\t : __x_fp == 0.0 \\\n"
                "\t\t\t   ? FP_ZERO \\\n"
                "\t\t\t   ? FP_ZERO \\\n"
                "\t\t\t   : FP_SUBNORMAL; })";
                "\t\t\t   : FP_SUBNORMAL; })";
    c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
    c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     fpclassify\n"
    "#undef     fpclassify\n"
    "#define    fpclassify(x)   __builtin_fpclassify(x)";
    "#define    fpclassify(x)   __builtin_fpclassify(x)";
};
};
fix = {
fix = {
    hackname = solaris_math_5;
    hackname = solaris_math_5;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tisfinite(x) \\\n"
    c_fix_arg = "#define\tisfinite(x) \\\n"
                "  __extension__ ({ const __typeof (x) __x_f = (x); \\\n"
                "  __extension__ ({ const __typeof (x) __x_f = (x); \\\n"
                "\t\t    __builtin_expect(sizeof(__x_f) == sizeof(float) \\\n"
                "\t\t    __builtin_expect(sizeof(__x_f) == sizeof(float) \\\n"
                "\t\t\t  ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \\\n"
                "\t\t\t  ? islessequal(__builtin_fabsf(__x_f),__FLT_MAX__) \\\n"
                "\t\t\t  : sizeof(__x_f) == sizeof(long double) \\\n"
                "\t\t\t  : sizeof(__x_f) == sizeof(long double) \\\n"
                "\t\t\t    ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \\\n"
                "\t\t\t    ? islessequal(__builtin_fabsl(__x_f),__LDBL_MAX__) \\\n"
                "\t\t\t    : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })";
                "\t\t\t    : islessequal(__builtin_fabs(__x_f),__DBL_MAX__), 1); })";
    c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
    c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     isfinite\n"
    "#undef     isfinite\n"
    "#define    isfinite(x)     __builtin_isfinite(x)";
    "#define    isfinite(x)     __builtin_isfinite(x)";
};
};
fix = {
fix = {
    hackname = solaris_math_6;
    hackname = solaris_math_6;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tisinf(x) \\\n"
    c_fix_arg = "#define\tisinf(x) \\\n"
                "  __extension__ ({ const __typeof (x) __x_i = (x); \\\n"
                "  __extension__ ({ const __typeof (x) __x_i = (x); \\\n"
                "\t\t    __builtin_expect(sizeof(__x_i) == sizeof(float) \\\n"
                "\t\t    __builtin_expect(sizeof(__x_i) == sizeof(float) \\\n"
                "\t\t\t  ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \\\n"
                "\t\t\t  ? isgreater(__builtin_fabsf(__x_i),__FLT_MAX__) \\\n"
                "\t\t\t  : sizeof(__x_i) == sizeof(long double) \\\n"
                "\t\t\t  : sizeof(__x_i) == sizeof(long double) \\\n"
                "\t\t\t    ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \\\n"
                "\t\t\t    ? isgreater(__builtin_fabsl(__x_i),__LDBL_MAX__) \\\n"
                "\t\t\t    : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })";
                "\t\t\t    : isgreater(__builtin_fabs(__x_i),__DBL_MAX__), 0); })";
    c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
    c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     isinf\n"
    "#undef     isinf\n"
    "#define    isinf(x)        __builtin_isinf(x)";
    "#define    isinf(x)        __builtin_isinf(x)";
};
};
fix = {
fix = {
    hackname = solaris_math_7;
    hackname = solaris_math_7;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tisnormal(x) \\\n"
    c_fix_arg = "#define\tisnormal(x) \\\n"
                "  __extension__ ({ const __typeof(x) __x_n = (x); \\\n"
                "  __extension__ ({ const __typeof(x) __x_n = (x); \\\n"
                "\t\t   __builtin_expect(isfinite(__x_n) \\\n"
                "\t\t   __builtin_expect(isfinite(__x_n) \\\n"
                "\t\t\t\t    && (sizeof(__x_n) == sizeof(float) \\\n"
                "\t\t\t\t    && (sizeof(__x_n) == sizeof(float) \\\n"
                "\t\t\t\t\t  ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \\\n"
                "\t\t\t\t\t  ? isgreaterequal(__builtin_fabsf(__x_n),__FLT_MIN__) \\\n"
                "\t\t\t\t\t  : sizeof(__x_n) == sizeof(long double) \\\n"
                "\t\t\t\t\t  : sizeof(__x_n) == sizeof(long double) \\\n"
                "\t\t\t\t\t    ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \\\n"
                "\t\t\t\t\t    ? isgreaterequal(__builtin_fabsl(__x_n),__LDBL_MIN__) \\\n"
                "\t\t\t\t\t    : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })";
                "\t\t\t\t\t    : isgreaterequal(__builtin_fabs(__x_n),__DBL_MIN__)), 1); })";
    c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
    c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     isnormal\n"
    "#undef     isnormal\n"
    "#define    isnormal(x)     __builtin_isnormal(x)";
    "#define    isnormal(x)     __builtin_isnormal(x)";
};
};
fix = {
fix = {
    hackname = solaris_math_8;
    hackname = solaris_math_8;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n"
    c_fix_arg = "#define\tsignbit(x)\t(sizeof(x) == sizeof(float) \\\n"
                "\t\t\t   ? __builtin_signbitf(x) \\\n"
                "\t\t\t   ? __builtin_signbitf(x) \\\n"
                "\t\t\t   : sizeof(x) == sizeof(long double) \\\n"
                "\t\t\t   : sizeof(x) == sizeof(long double) \\\n"
                "\t\t\t     ? __builtin_signbitl(x) \\\n"
                "\t\t\t     ? __builtin_signbitl(x) \\\n"
                "\t\t\t     : __builtin_signbit(x))";
                "\t\t\t     : __builtin_signbit(x))";
    c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
    c_fix_arg = "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     signbit\n"
    "#undef     signbit\n"
    "#define    signbit(x)      __builtin_signbit(x)";
    "#define    signbit(x)      __builtin_signbit(x)";
};
};
fix = {
fix = {
    hackname = solaris_math_9;
    hackname = solaris_math_9;
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    bypass = "__GNUC__";
    bypass = "__GNUC__";
    files = iso/math_c99.h;
    files = iso/math_c99.h;
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
    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\\)\\)";
    c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)";
    test_text =
    test_text =
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    '#ident     "@(#)math_c99.h 1.9     04/11/01 SMI"'"\n"
    "#undef     isgreater\n"
    "#undef     isgreater\n"
    "#define    isgreater(x, y)         ((x) __builtin_isgreater(y))\n"
    "#define    isgreater(x, y)         ((x) __builtin_isgreater(y))\n"
    "#undef     isgreaterequal\n"
    "#undef     isgreaterequal\n"
    "#define    isgreaterequal(x, y)    ((x) __builtin_isgreaterequal(y))\n"
    "#define    isgreaterequal(x, y)    ((x) __builtin_isgreaterequal(y))\n"
    "#undef     isless\n"
    "#undef     isless\n"
    "#define    isless(x, y)            ((x) __builtin_isless(y))\n"
    "#define    isless(x, y)            ((x) __builtin_isless(y))\n"
    "#undef     islessequal\n"
    "#undef     islessequal\n"
    "#define    islessequal(x, y)       ((x) __builtin_islessequal(y))\n"
    "#define    islessequal(x, y)       ((x) __builtin_islessequal(y))\n"
    "#undef     islessgreater\n"
    "#undef     islessgreater\n"
    "#define    islessgreater(x, y)     ((x) __builtin_islessgreater(y))\n"
    "#define    islessgreater(x, y)     ((x) __builtin_islessgreater(y))\n"
    "#undef     isunordered\n"
    "#undef     isunordered\n"
    "#define    isunordered(x, y)       ((x) __builtin_isunordered(y))";
    "#define    isunordered(x, y)       ((x) __builtin_isunordered(y))";
};
};
/*
/*
 *  Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
 *  Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
 *  incorrectly, so we replace them with versions that correspond to
 *  incorrectly, so we replace them with versions that correspond to
 *  the definition.  We also explicitly name this fix "1" and the next
 *  the definition.  We also explicitly name this fix "1" and the next
 *  fix "2" because this one does not deal with the last field.  This
 *  fix "2" because this one does not deal with the last field.  This
 *  fix needs to run before the next.
 *  fix needs to run before the next.
 */
 */
fix = {
fix = {
    hackname = solaris_mutex_init_1;
    hackname = solaris_mutex_init_1;
    select = '@\(#\)pthread.h' "[ \t]+1.1[0-9][ \t]+9[567]/[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.1[0-9][ \t]+9[567]/[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    sed   = "/define[ \t]*PTHREAD_MUTEX_INI/s/{0, 0,/{{{0}, 0}, {{{0}}},/\n"
    sed   = "/define[ \t]*PTHREAD_MUTEX_INI/s/{0, 0,/{{{0}, 0}, {{{0}}},/\n"
            "/define[ \t]*PTHREAD_COND_INI/s/{0,/{{{0},0},/";
            "/define[ \t]*PTHREAD_COND_INI/s/{0,/{{{0},0},/";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.16    97/05/05 SMI"'"\n"
    '#ident "@(#)pthread.h  1.16    97/05/05 SMI"'"\n"
    "#define PTHREAD_MUTEX_INITIALIZER\t{0, 0, 0}\n"
    "#define PTHREAD_MUTEX_INITIALIZER\t{0, 0, 0}\n"
    "#define PTHREAD_COND_INITIALIZER\t{0, 0} /* */\n";
    "#define PTHREAD_COND_INITIALIZER\t{0, 0} /* */\n";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing
 * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing
 * "0" for the last field of the pthread_mutex_t structure, which is
 * "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
 * 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
 * __STDC__ defined (e.g. by -ansi) it is a union. So change the
 * initializer to "{0}" instead
 * initializer to "{0}" instead
 */
 */
fix = {
fix = {
    hackname = solaris_mutex_init_2;
    hackname = solaris_mutex_init_2;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    /*
    /*
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * always defined correctly regardless of the definition of the
     * always defined correctly regardless of the definition of the
     * __STDC__ macro.  The first "mach" pattern matches up to
     * __STDC__ macro.  The first "mach" pattern matches up to
     * solaris9.  The second "mach" pattern will not match any two (or
     * solaris9.  The second "mach" pattern will not match any two (or
     * more) digit solaris version, but it will match e.g. 2.5.1.
     * more) digit solaris version, but it will match e.g. 2.5.1.
     */
     */
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                "%0\n"
                "%0\n"
                "#else\n"
                "#else\n"
                "%1, {0}}%4\n"
                "%1, {0}}%4\n"
                "#endif";
                "#endif";
    c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+"
    c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+"
                "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)"
                "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)"
                ",[ \t]*0\\}" "(|[ \t].*)$";
                ",[ \t]*0\\}" "(|[ \t].*)$";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n"
    "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n"
    "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n"
    "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n"
    "#define    PTHREAD_MUTEX_INITIALIZER               /* = DEFAULTMUTEX */    \\\\\n"
    "#define    PTHREAD_MUTEX_INITIALIZER               /* = DEFAULTMUTEX */    \\\\\n"
    "   {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n"
    "   {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n"
    "#define    PTHREAD_COND_INITIALIZER                /* = DEFAULTCV */       \\\\\n"
    "#define    PTHREAD_COND_INITIALIZER                /* = DEFAULTCV */       \\\\\n"
    "   {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}";
    "   {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
 * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some
 *  fields of the pthread_rwlock_t structure, which are of type
 *  fields of the pthread_rwlock_t structure, which are of type
 *  upad64_t, which itself is typedef'd to int64_t, but with __STDC__
 *  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
 *  defined (e.g. by -ansi) it is a union. So change the initializer
 *  to "{0}" instead.
 *  to "{0}" instead.
 */
 */
fix = {
fix = {
    hackname = solaris_rwlock_init_1;
    hackname = solaris_rwlock_init_1;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    mach = '*-*-solaris*';
    mach = '*-*-solaris*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                "%0\n"
                "%0\n"
                "#else\n"
                "#else\n"
                "%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
                "%1{0, 0, 0, {{0}, {0}, {0}}, {{0}, {0}}, {{0}, {0}}}\n"
                "#endif";
                "#endif";
    c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
    c_fix_arg = "(^#define[ \t]+PTHREAD_RWLOCK_INITIALIZER[ \t]+)"
                "\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
                "\\{0, 0, 0, \\{0, 0, 0\\}, \\{0, 0\\}, \\{0, 0\\}\\}[ \t]*$";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    '#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}}";
    "#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
 * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a
 * structure.  As such, it need two levels of brackets, but only
 * structure.  As such, it need two levels of brackets, but only
 * contains one.  Wrap the macro definition in an extra layer.
 * contains one.  Wrap the macro definition in an extra layer.
 */
 */
fix = {
fix = {
    hackname = solaris_once_init_1;
    hackname = solaris_once_init_1;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    mach = '*-*-solaris*';
    mach = '*-*-solaris*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "%1{%2}%3";
    c_fix_arg = "%1{%2}%3";
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$";
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{)([^}]+)(\\})[ \t]*$";
    test_text =
    test_text =
    '#pragma ident      "@(#)pthread.h  1.37    04/09/28 SMI"'"\n"
    '#pragma ident      "@(#)pthread.h  1.37    04/09/28 SMI"'"\n"
    "#define PTHREAD_ONCE_INIT\t{0, 0, 0, PTHREAD_ONCE_NOTDONE}";
    "#define PTHREAD_ONCE_INIT\t{0, 0, 0, PTHREAD_ONCE_NOTDONE}";
};
};
/*
/*
 * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some
 * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some
 *  fields of the pthread_once_t structure, which are of type
 *  fields of the pthread_once_t structure, which are of type
 *  upad64_t, which itself is typedef'd to int64_t, but with __STDC__
 *  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
 *  defined (e.g. by -ansi) it is a union. So change the initializer
 *  to "{0}" instead.  This test relies on solaris_once_init_1.
 *  to "{0}" instead.  This test relies on solaris_once_init_1.
 */
 */
fix = {
fix = {
    hackname = solaris_once_init_2;
    hackname = solaris_once_init_2;
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
    files = pthread.h;
    files = pthread.h;
    /*
    /*
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * On Solaris 10, this fix is unnecessary because upad64_t is
     * always defined correctly regardless of the definition of the
     * always defined correctly regardless of the definition of the
     * __STDC__ macro.  The first "mach" pattern matches up to
     * __STDC__ macro.  The first "mach" pattern matches up to
     * solaris9.  The second "mach" pattern will not match any two (or
     * solaris9.  The second "mach" pattern will not match any two (or
     * more) digit solaris version, but it will match e.g. 2.5.1.
     * more) digit solaris version, but it will match e.g. 2.5.1.
     */
     */
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
    c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                "%0\n"
                "%0\n"
                "#else\n"
                "#else\n"
                "%1{0}, {0}, {0}, {%3}%4\n"
                "%1{0}, {0}, {0}, {%3}%4\n"
                "#endif";
                "#endif";
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)"
    c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)"
                "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$";
                "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$";
    test_text =
    test_text =
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
    "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n";
    "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n";
};
};
/*
/*
 * Solaris 2.5.1 and 2.6 use an outdated prototype for send & recv
 * Solaris 2.5.1 and 2.6 use an outdated prototype for send & recv
 * in sys/socket.h.  This is corrected in Solaris 7 and up.
 * in sys/socket.h.  This is corrected in Solaris 7 and up.
 */
 */
fix = {
fix = {
    hackname = solaris_socket;
    hackname = solaris_socket;
    files = sys/socket.h;
    files = sys/socket.h;
    select = '@\(#\)socket.h' "[ \t]+1.[123][0-9][ \t]+9[567]/[0-9/]+ SMI";
    select = '@\(#\)socket.h' "[ \t]+1.[123][0-9][ \t]+9[567]/[0-9/]+ SMI";
    c_fix = format;
    c_fix = format;
    c_fix_arg = "extern int %1(int, %2void *, int, int);";
    c_fix_arg = "extern int %1(int, %2void *, int, int);";
    c_fix_arg = '^extern int (recv|send)\(int,'
    c_fix_arg = '^extern int (recv|send)\(int,'
                ' (const )*char '
                ' (const )*char '
                '\*, int, int\);';
                '\*, int, int\);';
    test_text = '#ident   "@(#)socket.h   1.30    97/01/20 SMI"'"\n"
    test_text = '#ident   "@(#)socket.h   1.30    97/01/20 SMI"'"\n"
                "extern int recv(int, char *, int, int);\n"
                "extern int recv(int, char *, int, int);\n"
                "extern int send(int, const char *, int, int);";
                "extern int send(int, const char *, int, int);";
};
};
/*
/*
 * Solaris 2.8 has what appears to be some gross workaround for
 * Solaris 2.8 has what appears to be some gross workaround for
 * some old version of their c++ compiler.  G++ doesn't want it
 * some old version of their c++ compiler.  G++ doesn't want it
 * either, but doesn't want to be tied to SunPRO version numbers.
 * either, but doesn't want to be tied to SunPRO version numbers.
 */
 */
fix = {
fix = {
    hackname = solaris_stdio_tag;
    hackname = solaris_stdio_tag;
    files    = stdio_tag.h;
    files    = stdio_tag.h;
    select   = '__cplusplus < 54321L';
    select   = '__cplusplus < 54321L';
    /* In Solaris 10, the code in stdio_tag.h is conditionalized on
    /* In Solaris 10, the code in stdio_tag.h is conditionalized on
       "!defined(__GNUC__)" so we no longer need to fix it.  */
       "!defined(__GNUC__)" so we no longer need to fix it.  */
    bypass   = '__GNUC__';
    bypass   = '__GNUC__';
    sed      = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
    sed      = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
    test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
    test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
};
};
/*
/*
 * Sun Solaris 2.5.1 doesn't define 'getpagesize' in , as is done
 * Sun Solaris 2.5.1 doesn't define 'getpagesize' in , as is done
 * on Solaris 2.6 and up.
 * on Solaris 2.6 and up.
 */
 */
fix = {
fix = {
    hackname  = solaris_unistd;
    hackname  = solaris_unistd;
    files = unistd.h;
    files = unistd.h;
    select = '@\(#\)unistd.h' "[ \t]+1.3[0-9][ \t]+9[567]/[0-9/]+ SMI";
    select = '@\(#\)unistd.h' "[ \t]+1.3[0-9][ \t]+9[567]/[0-9/]+ SMI";
    bypass = "getpagesize";
    bypass = "getpagesize";
    c_fix = format;
    c_fix = format;
    c_fix_arg = "extern int getpagesize();\n%0";
    c_fix_arg = "extern int getpagesize();\n%0";
    c_fix_arg = '^extern (pid_t|int) getpgid\(.*\);';
    c_fix_arg = '^extern (pid_t|int) getpgid\(.*\);';
    test_text = '#ident "@(#)unistd.h   1.33    95/08/28 SMI"'"\n"
    test_text = '#ident "@(#)unistd.h   1.33    95/08/28 SMI"'"\n"
                "extern pid_t getpgid(pid_t);\n"
                "extern pid_t getpgid(pid_t);\n"
                "extern int getpgid();";
                "extern int getpgid();";
};
};
/*
/*
 *  until Solaris 2.5.1 defines macros for a couple of 
 *  until Solaris 2.5.1 defines macros for a couple of 
 * functions, breaking their prototypes if that file is included afterwards.
 * functions, breaking their prototypes if that file is included afterwards.
 * Include  early to avoid this issue, as is done on Solaris 2.6
 * Include  early to avoid this issue, as is done on Solaris 2.6
 * and up.
 * and up.
 */
 */
fix = {
fix = {
    hackname  = solaris_widec;
    hackname  = solaris_widec;
    files     = widec.h;
    files     = widec.h;
    mach      = '*-*-solaris2.[0-5]';
    mach      = '*-*-solaris2.[0-5]';
    mach      = '*-*-solaris2.[0-5].*';
    mach      = '*-*-solaris2.[0-5].*';
    bypass    = "include.*wchar\\.h";
    bypass    = "include.*wchar\\.h";
    select    = "#include ";
    select    = "#include ";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n#include ";
    c_fix_arg = "%0\n#include ";
    test_text = "#include ";
    test_text = "#include ";
};
};
/*
/*
 *  a missing semi-colon at the end of the statsswtch structure definition.
 *  a missing semi-colon at the end of the statsswtch structure definition.
 */
 */
fix = {
fix = {
    hackname  = statsswtch;
    hackname  = statsswtch;
    files     = rpcsvc/rstat.h;
    files     = rpcsvc/rstat.h;
    select    = "boottime$";
    select    = "boottime$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "boottime;";
    c_fix_arg = "boottime;";
    test_text = "struct statswtch {\n  int boottime\n};";
    test_text = "struct statswtch {\n  int boottime\n};";
};
};
/*
/*
 *  Arrange for stdio.h to use stdarg.h to define __gnuc_va_list.
 *  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
 *  On 4BSD-derived systems, stdio.h defers to machine/ansi.h; that's
 *  OK too.
 *  OK too.
 */
 */
fix = {
fix = {
    hackname = stdio_stdarg_h;
    hackname = stdio_stdarg_h;
    files    = stdio.h;
    files    = stdio.h;
    bypass   = "include.*(stdarg\.h|machine/ansi\.h)";
    bypass   = "include.*(stdarg\.h|machine/ansi\.h)";
    /*
    /*
     * On Solaris 10, this fix is unncessary;  includes
     * On Solaris 10, this fix is unncessary;  includes
     * , which includes .
     * , which includes .
      */
      */
    mach     = '*-*-solaris2.1[0-9]*';
    mach     = '*-*-solaris2.1[0-9]*';
    not_machine = true;
    not_machine = true;
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#define __need___va_list\n#include \n";
    c_fix_arg = "#define __need___va_list\n#include \n";
    test_text = "";
    test_text = "";
};
};
/*
/*
 *  Don't use or define the name va_list in stdio.h.  This is for
 *  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
 *  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
 *  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,
 *  indicate that the header knows what it's doing -- under SUSv2,
 *  stdio.h is required to define va_list, and we shouldn't break
 *  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
 *  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
 *  definition of va_list from stdio.h.  Since this doesn't happen any
 *  longer, use __gnuc_va_list there, too.
 *  longer, use __gnuc_va_list there, too.
 */
 */
fix = {
fix = {
    hackname = stdio_va_list;
    hackname = stdio_va_list;
    files    = stdio.h;
    files    = stdio.h;
    files    = internal/stdio_core.h;
    files    = internal/stdio_core.h;
    files    = internal/wchar_core.h;
    files    = internal/wchar_core.h;
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    /*
    /*
     * On Solaris 10, the definition in
     * On Solaris 10, the definition in
     *  is guarded appropriately by the _XPG4 feature macro;
     *  is guarded appropriately by the _XPG4 feature macro;
     * there is therefore no need for this fix there.
     * there is therefore no need for this fix there.
     */
     */
    mach = '*-*-solaris2.1[0-9]*';
    mach = '*-*-solaris2.1[0-9]*';
    not_machine = true;
    not_machine = true;
    /*
    /*
     * Use __gnuc_va_list in arg types in place of va_list.
     * 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
     * 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
     * use __gnuc_va_list instead of __VA_LIST__.  We're hoping the
     * trailing parentheses and semicolon save all other systems from this.
     * trailing parentheses and semicolon save all other systems from this.
     * Define __not_va_list__ (something harmless and unused)
     * Define __not_va_list__ (something harmless and unused)
     * instead of va_list.
     * instead of va_list.
     * Don't claim to have defined va_list.
     * Don't claim to have defined va_list.
     */
     */
    sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n"
    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_));@ __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@*__not_va_list__@\n"
          "s@\\*va_list@*__not_va_list__@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
           "@typedef \\1 __not_va_list__;@\n"
           "@typedef \\1 __not_va_list__;@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@_Va_LIST@_VA_LIST@";
          "s@_Va_LIST@_VA_LIST@";
    test_text = "extern void mumble( va_list);";
    test_text = "extern void mumble( va_list);";
};
};
/*
/*
 *  Fix headers that use va_list from stdio.h to use the updated
 *  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
 *  va_list from the stdio_va_list change.  Note _BSD_VA_LIST_ is
 *  dealt with elsewhere.  The presence of __gnuc_va_list,
 *  dealt with elsewhere.  The presence of __gnuc_va_list,
 *  __DJ_va_list, or _G_va_list is taken to indicate that the header
 *  __DJ_va_list, or _G_va_list is taken to indicate that the header
 *  knows what it's doing.
 *  knows what it's doing.
 */
 */
fix = {
fix = {
    hackname = stdio_va_list_clients;
    hackname = stdio_va_list_clients;
    files    = com_err.h;
    files    = com_err.h;
    files    = cps.h;
    files    = cps.h;
    files    = curses.h;
    files    = curses.h;
    files    = krb5.h;
    files    = krb5.h;
    files    = lc_core.h;
    files    = lc_core.h;
    files    = pfmt.h;
    files    = pfmt.h;
    files    = wchar.h;
    files    = wchar.h;
    files    = curses_colr/curses.h;
    files    = curses_colr/curses.h;
    bypass   = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
    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
    /* Don't fix, if we use va_list from stdarg.h, or if the use is
       otherwise protected.  */
       otherwise protected.  */
    bypass   = 'include |#ifdef va_start';
    bypass   = 'include |#ifdef va_start';
    /*
    /*
     * Use __gnuc_va_list in arg types in place of va_list.
     * 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
     * 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
     * use __gnuc_va_list instead of __VA_LIST__.  We're hoping the
     * trailing parentheses and semicolon save all other systems from this.
     * trailing parentheses and semicolon save all other systems from this.
     * Define __not_va_list__ (something harmless and unused)
     * Define __not_va_list__ (something harmless and unused)
     * instead of va_list.
     * instead of va_list.
     * Don't claim to have defined va_list.
     * Don't claim to have defined va_list.
     */
     */
    sed = "s@[ \t]va_list\\([ \t)]\\)@ __gnuc_va_list\\1@\n"
    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_));@ __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@*__not_va_list__@\n"
          "s@\\*va_list@*__not_va_list__@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@ __va_list)@ __gnuc_va_list)@\n"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
          "s@typedef[ \t]\\(.*\\)[ \t]va_list[ \t]*;"
           "@typedef \\1 __not_va_list__;@\n"
           "@typedef \\1 __not_va_list__;@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@typedef[ \t]*__va_list__@typedef __gnuc_va_list@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@GNUC_VA_LIST@GNUC_Va_LIST@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_VA_LIST_DEFINED@_Va_LIST_DEFINED@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@_NEED___VA_LIST@_NEED___Va_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@VA_LIST@DUMMY_VA_LIST@\n"
          "s@_Va_LIST@_VA_LIST@";
          "s@_Va_LIST@_VA_LIST@";
    test_text = "extern void mumble( va_list);";
    test_text = "extern void mumble( va_list);";
};
};
/*
/*
 *  "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0"
 *  "!__STDC__" or "__STDC__==0" or "__STDC__!=1" or "__STDC__-0==0"
 *  is "!defined( __STRICT_ANSI__ )"
 *  is "!defined( __STRICT_ANSI__ )"
 */
 */
fix = {
fix = {
    hackname = strict_ansi_not;
    hackname = strict_ansi_not;
    select   = "^([ \t]*#[ \t]*if.*)"
    select   = "^([ \t]*#[ \t]*if.*)"
               "(!__STDC__"
               "(!__STDC__"
               "|__STDC__[ \t]*==[ \t]*0"
               "|__STDC__[ \t]*==[ \t]*0"
               "|__STDC__[ \t]*!=[ \t]*1"
               "|__STDC__[ \t]*!=[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)";
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*0)";
    /* Tru64 UNIX V4.0F/V5.1  supports GCC usage of __STDC__. */
    /* Tru64 UNIX V4.0F/V5.1  supports GCC usage of __STDC__. */
    bypass = 'GNU and MIPS C compilers define __STDC__ differently';
    bypass = 'GNU and MIPS C compilers define __STDC__ differently';
    /* GNU gmp.h uses "__STDC__ != 1" only if __SCO_VERSION__, which
    /* GNU gmp.h uses "__STDC__ != 1" only if __SCO_VERSION__, which
       is not defined by GCC, so it is safe.  */
       is not defined by GCC, so it is safe.  */
    bypass = '__SCO_VERSION__.*__STDC__ != 1';
    bypass = '__SCO_VERSION__.*__STDC__ != 1';
    c_test   = stdc_0_in_system_headers;
    c_test   = stdc_0_in_system_headers;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    test_text = "#if !__STDC__ \n"
    test_text = "#if !__STDC__ \n"
                "#if __STDC__ == 0\n"
                "#if __STDC__ == 0\n"
                "#if __STDC__ != 1\n"
                "#if __STDC__ != 1\n"
                "#if __STDC__ - 0 == 0"
                "#if __STDC__ - 0 == 0"
               "/* not std C */\nint foo;\n"
               "/* not std C */\nint foo;\n"
               "\n#end-end-end-end-if :-)";
               "\n#end-end-end-end-if :-)";
};
};
/*
/*
 *  "__STDC__-0==0"
 *  "__STDC__-0==0"
 *  is "!defined( __STRICT_ANSI__ )" on continued #if-s
 *  is "!defined( __STRICT_ANSI__ )" on continued #if-s
 */
 */
fix = {
fix = {
    hackname = strict_ansi_not_ctd;
    hackname = strict_ansi_not_ctd;
    files    = math.h, limits.h, stdio.h, signal.h,
    files    = math.h, limits.h, stdio.h, signal.h,
               stdlib.h, sys/signal.h, time.h;
               stdlib.h, sys/signal.h, time.h;
    /*
    /*
     * Starting at the beginning of a line, skip white space and
     * Starting at the beginning of a line, skip white space and
     * a leading "(" or "&&" or "||".  One of those must be found.
     * a leading "(" or "&&" or "||".  One of those must be found.
     * Then, zero, one or more copies of a "defined(_FOO_BAR_) &&"
     * Then, zero, one or more copies of a "defined(_FOO_BAR_) &&"
     * expression.  If these are nested, then they must accumulate
     * expression.  If these are nested, then they must accumulate
     * because we won't match any closing parentheses.  Finally,
     * because we won't match any closing parentheses.  Finally,
     * after skipping over all that, we must then match our suspect
     * after skipping over all that, we must then match our suspect
     * phrase:  "__STDC__-0==0" with or without white space.
     * phrase:  "__STDC__-0==0" with or without white space.
     */
     */
    select   = "^([ \t]*" '(\(|&&|\|\|)'
    select   = "^([ \t]*" '(\(|&&|\|\|)'
               "([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*"
               "([ \t(]*!*[ \t]*defined\\([a-zA-Z_0-9]+\\)[ \t]*[|&][|&])*"
               "[ \t(]*)"
               "[ \t(]*)"
               "(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)";
               "(__STDC__[ \t]*(|-[ \t]*0[ \t]*)==[ \t]*0)";
    c_test   = stdc_0_in_system_headers;
    c_test   = stdc_0_in_system_headers;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    c_fix_arg = "%1 !defined(__STRICT_ANSI__)";
    test_text = "#if 1 && \\\\\n"
    test_text = "#if 1 && \\\\\n"
               "&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n"
               "&& defined(mumbling) |& (__STDC__ - 0 == 0) \\\\\n"
               "( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n"
               "( __STDC__ == 0 && !defined(_XOPEN_SOURCE) \\\\\n"
               "|| __STDC__ - 0 == 0 ) /* not std C */\n"
               "|| __STDC__ - 0 == 0 ) /* not std C */\n"
               "int foo;\n#endif";
               "int foo;\n#endif";
};
};
/*
/*
 *  "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1"
 *  "__STDC__!=0" or "__STDC__==1" or "__STDC__-0==1"
 *  is "defined( __STRICT_ANSI__ )"
 *  is "defined( __STRICT_ANSI__ )"
 */
 */
fix = {
fix = {
    hackname = strict_ansi_only;
    hackname = strict_ansi_only;
    select   = "^([ \t]*#[ \t]*if.*)"
    select   = "^([ \t]*#[ \t]*if.*)"
               "(__STDC__[ \t]*!=[ \t]*0"
               "(__STDC__[ \t]*!=[ \t]*0"
               "|__STDC__[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*==[ \t]*1"
               "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)";
               "|__STDC__[ \t]*-[ \t]*0[ \t]*!=[ \t]*0)";
    c_test   = stdc_0_in_system_headers;
    c_test   = stdc_0_in_system_headers;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 defined(__STRICT_ANSI__)";
    c_fix_arg = "%1 defined(__STRICT_ANSI__)";
    test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif";
    test_text = "#if __STDC__ == 1 /* is std C\n */\nint foo;\n#endif";
};
};
/*
/*
 *  IRIX 4.0.5  uses struct __file_s
 *  IRIX 4.0.5  uses struct __file_s
 *  in prototype without previous definition.
 *  in prototype without previous definition.
 */
 */
fix = {
fix = {
    hackname  = struct_file;
    hackname  = struct_file;
    files     = rpc/xdr.h;
    files     = rpc/xdr.h;
    select    = '^.*xdrstdio_create.*struct __file_s';
    select    = '^.*xdrstdio_create.*struct __file_s';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct __file_s;\n%0";
    c_fix_arg = "struct __file_s;\n%0";
    test_text = "extern void xdrstdio_create( struct __file_s* );";
    test_text = "extern void xdrstdio_create( struct __file_s* );";
};
};
/*
/*
 *  IRIX 4.0.5  uses struct sockaddr
 *  IRIX 4.0.5  uses struct sockaddr
 *  in prototype without previous definition.
 *  in prototype without previous definition.
 *
 *
 *  Don't fix OpenBSD, which uses struct sockaddr_in prototyping the same
 *  Don't fix OpenBSD, which uses struct sockaddr_in prototyping the same
 *  function, and does define it.
 *  function, and does define it.
 */
 */
fix = {
fix = {
    hackname  = struct_sockaddr;
    hackname  = struct_sockaddr;
    files     = rpc/auth.h;
    files     = rpc/auth.h;
    select    = "^.*authdes_create.*struct sockaddr[^_]";
    select    = "^.*authdes_create.*struct sockaddr[^_]";
    bypass    = "";
    bypass    = "";
    bypass    = "struct sockaddr;\n";
    bypass    = "struct sockaddr;\n";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct sockaddr;\n%0";
    c_fix_arg = "struct sockaddr;\n%0";
    test_text = "extern AUTH* authdes_create( struct sockaddr* );";
    test_text = "extern AUTH* authdes_create( struct sockaddr* );";
};
};
/*
/*
 *  Apply fix this to all OSs since this problem seems to effect
 *  Apply fix this to all OSs since this problem seems to effect
 *  more than just SunOS.
 *  more than just SunOS.
 */
 */
fix = {
fix = {
    hackname = sun_auth_proto;
    hackname = sun_auth_proto;
    files    = rpc/auth.h;
    files    = rpc/auth.h;
    files    = rpc/clnt.h;
    files    = rpc/clnt.h;
    files    = rpc/svc.h;
    files    = rpc/svc.h;
    files    = rpc/xdr.h;
    files    = rpc/xdr.h;
    bypass   = "__cplusplus";
    bypass   = "__cplusplus";
    /*
    /*
     *  Select those files containing '(*name)()'.
     *  Select those files containing '(*name)()'.
     */
     */
    select    = '\(\*[a-z][a-z_]*\)\(\)';
    select    = '\(\*[a-z][a-z_]*\)\(\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef __cplusplus\n%1(...);%2\n"
    c_fix_arg = "#ifdef __cplusplus\n%1(...);%2\n"
                "#else\n%1();%2\n#endif";
                "#else\n%1();%2\n#endif";
    c_fix_arg = '(.*\(\*[a-z][a-z_]*\))\(\);(.*)';
    c_fix_arg = '(.*\(\*[a-z][a-z_]*\))\(\);(.*)';
    test_text =
    test_text =
    "struct auth_t {\n"
    "struct auth_t {\n"
    "    int (*name)(); /* C++ bad */\n"
    "    int (*name)(); /* C++ bad */\n"
    "};";
    "};";
};
};
/*
/*
 *  Fix bogus #ifdef on SunOS 4.1.
 *  Fix bogus #ifdef on SunOS 4.1.
 */
 */
fix = {
fix = {
    hackname  = sun_bogus_ifdef;
    hackname  = sun_bogus_ifdef;
    files     = "hsfs/hsfs_spec.h";
    files     = "hsfs/hsfs_spec.h";
    files     = "hsfs/iso_spec.h";
    files     = "hsfs/iso_spec.h";
    select    = '#ifdef(.*\|\|.*)';
    select    = '#ifdef(.*\|\|.*)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if%1";
    c_fix_arg = "#if%1";
    test_text = "#ifdef  __i386__ || __vax__ || __sun4c__";
    test_text = "#ifdef  __i386__ || __vax__ || __sun4c__";
};
};
/*
/*
 *  Fix the CAT macro in SunOS memvar.h.
 *  Fix the CAT macro in SunOS memvar.h.
 */
 */
fix = {
fix = {
    hackname  = sun_catmacro;
    hackname  = sun_catmacro;
    files     = pixrect/memvar.h;
    files     = pixrect/memvar.h;
    select    = "^#define[ \t]+CAT\\(a,b\\).*";
    select    = "^#define[ \t]+CAT\\(a,b\\).*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
    "#ifdef __STDC__\n"
    "#ifdef __STDC__\n"
    "#  define CAT(a,b) a##b\n"
    "#  define CAT(a,b) a##b\n"
    "#else\n%0\n#endif";
    "#else\n%0\n#endif";
    test_text =
    test_text =
    "#define CAT(a,b)\ta/**/b";
    "#define CAT(a,b)\ta/**/b";
};
};
/*
/*
 *  Fix return type of free and {c,m,re}alloc in  on SunOS 4.1.
 *  Fix return type of free and {c,m,re}alloc in  on SunOS 4.1.
 *  Also fix return type of {m,re}alloc in  on sysV68
 *  Also fix return type of {m,re}alloc in  on sysV68
 */
 */
fix = {
fix = {
    hackname = sun_malloc;
    hackname = sun_malloc;
    files    = malloc.h;
    files    = malloc.h;
    bypass   = "_CLASSIC_ANSI_TYPES";
    bypass   = "_CLASSIC_ANSI_TYPES";
    sed   = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g";
    sed   = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g";
    sed   = "s/int[ \t][ \t]*free/void\tfree/g";
    sed   = "s/int[ \t][ \t]*free/void\tfree/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g";
    sed   = "s/char\\([ \t]*\\*[ \t]*calloc\\)/void\\1/g";
    test_text =
    test_text =
    "typedef char *\tmalloc_t;\n"
    "typedef char *\tmalloc_t;\n"
    "int \tfree();\n"
    "int \tfree();\n"
    "char*\tmalloc();\n"
    "char*\tmalloc();\n"
    "char*\tcalloc();\n"
    "char*\tcalloc();\n"
    "char*\trealloc();";
    "char*\trealloc();";
};
};
/*
/*
 *  Check for yet more missing ';' in struct (in SunOS 4.0.x)
 *  Check for yet more missing ';' in struct (in SunOS 4.0.x)
 */
 */
fix = {
fix = {
    hackname = sun_rusers_semi;
    hackname = sun_rusers_semi;
    files    = rpcsvc/rusers.h;
    files    = rpcsvc/rusers.h;
    select   = "_cnt$";
    select   = "_cnt$";
    sed      = "/^struct/,/^};/s/_cnt$/_cnt;/";
    sed      = "/^struct/,/^};/s/_cnt$/_cnt;/";
    test_text = "struct mumble\n  int _cnt\n};";
    test_text = "struct mumble\n  int _cnt\n};";
};
};
/*
/*
 *  signal.h on SunOS defines signal using (),
 *  signal.h on SunOS defines signal using (),
 *  which causes trouble when compiling with g++ -pedantic.
 *  which causes trouble when compiling with g++ -pedantic.
 */
 */
fix = {
fix = {
    hackname = sun_signal;
    hackname = sun_signal;
    files    = sys/signal.h;
    files    = sys/signal.h;
    files    = signal.h;
    files    = signal.h;
    select   = "^void\t" '\(\*signal\(\)\)\(\);.*';
    select   = "^void\t" '\(\*signal\(\)\)\(\);.*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
          "#ifdef __cplusplus\n"
          "#ifdef __cplusplus\n"
          "void\t(*signal(...))(...);\n"
          "void\t(*signal(...))(...);\n"
          "#else\n%0\n#endif";
          "#else\n%0\n#endif";
    test_text = "void\t(*signal())();";
    test_text = "void\t(*signal())();";
};
};
/*
/*
 *  Correct the return type for strlen in strings.h in SunOS 4.
 *  Correct the return type for strlen in strings.h in SunOS 4.
 */
 */
fix = {
fix = {
    hackname = sunos_strlen;
    hackname = sunos_strlen;
    files    = strings.h;
    files    = strings.h;
    select   = "int[ \t]*strlen\\(\\);(.*)";
    select   = "int[ \t]*strlen\\(\\);(.*)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__SIZE_TYPE__ strlen();%1";
    c_fix_arg = "__SIZE_TYPE__ strlen();%1";
    test_text = " int\tstrlen(); /* string length */";
    test_text = " int\tstrlen(); /* string length */";
};
};
/*
/*
 *  Disable apparent native compiler optimization cruft in SVR4.2 
 *  Disable apparent native compiler optimization cruft in SVR4.2 
 *  that is visible to any ANSI compiler using this include.  Simply
 *  that is visible to any ANSI compiler using this include.  Simply
 *  delete the lines that #define some string functions to internal forms.
 *  delete the lines that #define some string functions to internal forms.
 */
 */
fix = {
fix = {
    hackname = svr4_disable_opt;
    hackname = svr4_disable_opt;
    files    = string.h;
    files    = string.h;
    select   = '#define.*__std_hdr_';
    select   = '#define.*__std_hdr_';
    sed      = '/#define.*__std_hdr_/d';
    sed      = '/#define.*__std_hdr_/d';
    test_text = "#define strlen __std_hdr_strlen\n";
    test_text = "#define strlen __std_hdr_strlen\n";
};
};
/*
/*
 *  Conditionalize some of  on __GNUC__ and __GNUG__.
 *  Conditionalize some of  on __GNUC__ and __GNUG__.
 *  On some systems (UnixWare 2, UnixWare 7), the file is byteorder.h
 *  On some systems (UnixWare 2, UnixWare 7), the file is byteorder.h
 *  but we still "hijack" it and redirect it to the GNU byteorder.h..
 *  but we still "hijack" it and redirect it to the GNU byteorder.h..
 */
 */
#ifdef SVR5
#ifdef SVR5
fix = {
fix = {
    hackname = svr4_endian;
    hackname = svr4_endian;
    files    = sys/endian.h;
    files    = sys/endian.h;
#ifdef LATER
#ifdef LATER
    /*
    /*
     * since we emit our own sys/byteorder.h,
     * since we emit our own sys/byteorder.h,
     * this fix can never be applied to that file.
     * this fix can never be applied to that file.
     */
     */
    files    = sys/byteorder.h;
    files    = sys/byteorder.h;
#endif
#endif
    bypass   = '__GNUC__';
    bypass   = '__GNUC__';
    sed      = "/#\tifdef\t__STDC__/i\\\n"
    sed      = "/#\tifdef\t__STDC__/i\\\n"
               "#   if !defined (__GNUC__) && !defined (__GNUG__)\n";
               "#   if !defined (__GNUC__) && !defined (__GNUG__)\n";
    sed      = "/#\t\tinclude\t/s/\t\t/   /";
    sed      = "/#\t\tinclude\t/s/\t\t/   /";
    sed      = "/#   include\t/i\\\n"
    sed      = "/#   include\t/i\\\n"
               "#   endif /* !defined (__GNUC__) && !defined (__GNUG__) */\n";
               "#   endif /* !defined (__GNUC__) && !defined (__GNUG__) */\n";
};
};
#endif /* SVR5 */
#endif /* SVR5 */
/*
/*
 *  Remove useless extern keyword from struct forward declarations
 *  Remove useless extern keyword from struct forward declarations
 *  in  and 
 *  in  and 
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_extern_struct;
    hackname = svr4_extern_struct;
    files    = sys/stream.h;
    files    = sys/stream.h;
    files    = sys/strsubr.h;
    files    = sys/strsubr.h;
    select   = 'extern struct [a-z_]*;';
    select   = 'extern struct [a-z_]*;';
    sed      = 's/extern struct \([a-z][a-z_]*\)/struct \1/';
    sed      = 's/extern struct \([a-z][a-z_]*\)/struct \1/';
};
};
#endif
#endif
/*
/*
 *  Fix declarations of `ftw' and `nftw' in .  On some/most SVR4
 *  Fix declarations of `ftw' and `nftw' in .  On some/most SVR4
 *  systems the file  contains extern declarations of these
 *  systems the file  contains extern declarations of these
 *  functions followed by explicitly `static' definitions of these
 *  functions followed by explicitly `static' definitions of these
 *  functions... and that's not allowed according to ANSI C.  (Note
 *  functions... and that's not allowed according to ANSI C.  (Note
 *  however that on Solaris, this header file glitch has been pre-fixed by
 *  however that on Solaris, this header file glitch has been pre-fixed by
 *  Sun.  In the Solaris version of  there are no static
 *  Sun.  In the Solaris version of  there are no static
 *  definitions of any function so we don't need to do any of this stuff
 *  definitions of any function so we don't need to do any of this stuff
 *  when on Solaris.
 *  when on Solaris.
 */
 */
#ifdef SVR4
#ifdef SVR4
#ifndef SOLARIS
#ifndef SOLARIS
fix = {
fix = {
    hackname = svr4_ftw;
    hackname = svr4_ftw;
    files    = ftw.h;
    files    = ftw.h;
    select   = '^extern int ftw\(const';
    select   = '^extern int ftw\(const';
    sed = '/^extern int ftw(const/i' "\\\n"
    sed = '/^extern int ftw(const/i' "\\\n"
            "#if !defined(_STYPES)\\\n"
            "#if !defined(_STYPES)\\\n"
            "static\\\n"
            "static\\\n"
            "#else\\\n"
            "#else\\\n"
            "extern\\\n"
            "extern\\\n"
            "#endif";
            "#endif";
    sed = 's/extern \(int ftw(const.*\)$/\1/';
    sed = 's/extern \(int ftw(const.*\)$/\1/';
    sed = "/^extern int nftw/i\\\n"
    sed = "/^extern int nftw/i\\\n"
            "#if defined(_STYPES)\\\n"
            "#if defined(_STYPES)\\\n"
            "static\\\n"
            "static\\\n"
            "#else\\\n"
            "#else\\\n"
            "extern\\\n"
            "extern\\\n"
            "#endif";
            "#endif";
    sed = 's/extern \(int nftw.*\)$/\1/';
    sed = 's/extern \(int nftw.*\)$/\1/';
    sed = "/^extern int ftw(),/c\\\n"
    sed = "/^extern int ftw(),/c\\\n"
            "#if !defined(_STYPES)\\\n"
            "#if !defined(_STYPES)\\\n"
            "static\\\n"
            "static\\\n"
            "#else\\\n"
            "#else\\\n"
            "extern\\\n"
            "extern\\\n"
            "#endif\\\n"
            "#endif\\\n"
            "  int ftw();\\\n"
            "  int ftw();\\\n"
            "#if defined(_STYPES)\\\n"
            "#if defined(_STYPES)\\\n"
            "static\\\n"
            "static\\\n"
            "#else\\\n"
            "#else\\\n"
            "extern\\\n"
            "extern\\\n"
            "#endif\\\n"
            "#endif\\\n"
            "  int nftw();";
            "  int nftw();";
};
};
#endif
#endif
#endif
#endif
/*
/*
 *   Fix broken decl of getcwd present on some svr4 systems.
 *   Fix broken decl of getcwd present on some svr4 systems.
 */
 */
fix = {
fix = {
    hackname = svr4_getcwd;
    hackname = svr4_getcwd;
    files    = stdlib.h;
    files    = stdlib.h;
    files    = unistd.h;
    files    = unistd.h;
    files    = prototypes.h;
    files    = prototypes.h;
    select   = 'getcwd\(char \*, int\)';
    select   = 'getcwd\(char \*, int\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "getcwd(char *, size_t)";
    c_fix_arg = "getcwd(char *, size_t)";
    test_text = "extern char* getcwd(char *, int);";
    test_text = "extern char* getcwd(char *, int);";
};
};
/*
/*
 *  Wrap some files on System V r4 and DYNIX/ptx systems with
 *  Wrap some files on System V r4 and DYNIX/ptx systems with
 *  #ifdef _KERNEL, presumably to prevent kernel headers from
 *  #ifdef _KERNEL, presumably to prevent kernel headers from
 *  leaking into userspace.  This may not be necessary at all,
 *  leaking into userspace.  This may not be necessary at all,
 *  but it was in the old scripts, so it seems safest to keep it for now.
 *  but it was in the old scripts, so it seems safest to keep it for now.
 */
 */
fix = {
fix = {
    /* Can't name this with _kernel, or the test case will hit the bypass! */
    /* Can't name this with _kernel, or the test case will hit the bypass! */
    hackname = svr4_krnl;
    hackname = svr4_krnl;
    /* Since I'm rather unsure about the validity of this, limit it
    /* Since I'm rather unsure about the validity of this, limit it
     * to the specific systems it was operating on before.  It should
     * to the specific systems it was operating on before.  It should
     * also be bypassed for i?86-*-sysv4.3uw2, by that rule, but I didn't
     * also be bypassed for i?86-*-sysv4.3uw2, by that rule, but I didn't
     * see an easy way to do that.  Hopefully it will be harmless
     * see an easy way to do that.  Hopefully it will be harmless
     * in any case. -- Nathanael */
     * in any case. -- Nathanael */
    mach     = '*-*-sysv4*';
    mach     = '*-*-sysv4*';
    mach     = 'i?86-sequent-ptx*';
    mach     = 'i?86-sequent-ptx*';
    files    = fs/rfs/rf_cache.h;
    files    = fs/rfs/rf_cache.h;
    files    = sys/erec.h;
    files    = sys/erec.h;
    files    = sys/err.h;
    files    = sys/err.h;
    files    = sys/char.h;
    files    = sys/char.h;
    files    = sys/getpages.h;
    files    = sys/getpages.h;
    files    = sys/map.h;
    files    = sys/map.h;
    files    = sys/cmn_err.h;
    files    = sys/cmn_err.h;
    files    = sys/kdebugger.h;
    files    = sys/kdebugger.h;
    /* This bypass will match _KERNEL, __KERNEL, __KERNEL__, etc.
    /* This bypass will match _KERNEL, __KERNEL, __KERNEL__, etc.
     * It will also match SVR4_KERNEL_CHECK, which means that the
     * It will also match SVR4_KERNEL_CHECK, which means that the
     * testsuite case will always be bypassed.  Which is fine with me. */
     * testsuite case will always be bypassed.  Which is fine with me. */
    bypass   = '_KERNEL';
    bypass   = '_KERNEL';
    c_fix     = wrap;
    c_fix     = wrap;
    c_fix_arg = "#ifdef _KERNEL\n";
    c_fix_arg = "#ifdef _KERNEL\n";
    c_fix_arg = "#endif /* _KERNEL */\n";
    c_fix_arg = "#endif /* _KERNEL */\n";
    /* There's no reasonable test for this given that we don't know exactly
    /* There's no reasonable test for this given that we don't know exactly
     * what problem inspired it in the first place. */
     * what problem inspired it in the first place. */
    test_text = "";
    test_text = "";
};
};
/*
/*
 *  Delete any #defines of `__i386' which may be present in .  They
 *  Delete any #defines of `__i386' which may be present in .  They
 *  tend to conflict with the compiler's own definition of this symbol.  (We
 *  tend to conflict with the compiler's own definition of this symbol.  (We
 *  will use the compiler's definition.)
 *  will use the compiler's definition.)
 *  Likewise __sparc, for Solaris, and __i860, and a few others
 *  Likewise __sparc, for Solaris, and __i860, and a few others
 *  (guessing it is necessary for all of them).
 *  (guessing it is necessary for all of them).
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_mach_defines;
    hackname = svr4_mach_defines;
    files    = ieeefp.h;
    files    = ieeefp.h;
    select   = "#define[ \t]*__(i386|mips|sparc|m88k|m68k)[ \t]";
    select   = "#define[ \t]*__(i386|mips|sparc|m88k|m68k)[ \t]";
    sed      = "/#define[ \t]*__\\(i386|mips|sparc|m88k|m68k\\)[ \t]/d";
    sed      = "/#define[ \t]*__\\(i386|mips|sparc|m88k|m68k\\)[ \t]/d";
};
};
#endif
#endif
/*
/*
 *  Fix declarations of `makedev', `major', and `minor' in .
 *  Fix declarations of `makedev', `major', and `minor' in .
 *  They are declared as non-static then immediately redeclared as static.
 *  They are declared as non-static then immediately redeclared as static.
 */
 */
#ifdef SVR5
#ifdef SVR5
fix = {
fix = {
    hackname = svr4_mkdev;
    hackname = svr4_mkdev;
    files    = sys/mkdev.h;
    files    = sys/mkdev.h;
    select   = '^static';
    select   = '^static';
    sed      = "/^dev_t makedev(/s/^/static /";
    sed      = "/^dev_t makedev(/s/^/static /";
    sed      = "/^major_t major(/s/^/static /";
    sed      = "/^major_t major(/s/^/static /";
    sed      = "/^minor_t minor(/s/^/static /";
    sed      = "/^minor_t minor(/s/^/static /";
};
};
#endif /* SVR5 */
#endif /* SVR5 */
/*
/*
 *  Fix reference to NC_NPI_RAW in .
 *  Fix reference to NC_NPI_RAW in .
 *  Also fix types of array initializers.
 *  Also fix types of array initializers.
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_netcspace;
    hackname = svr4_netcspace;
    files    = sys/netcspace.h;
    files    = sys/netcspace.h;
    select   = 'NC_NPI_RAW';
    select   = 'NC_NPI_RAW';
    sed      = 's/NC_NPI_RAW/NC_TPI_RAW/g';
    sed      = 's/NC_NPI_RAW/NC_TPI_RAW/g';
    sed      = 's/NC_/(unsigned long) NC_/';
    sed      = 's/NC_/(unsigned long) NC_/';
};
};
#endif
#endif
/*
/*
 *  Fix reference to NMSZ in .
 *  Fix reference to NMSZ in .
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_nmsz;
    hackname = svr4_nmsz;
    files    = sys/adv.h;
    files    = sys/adv.h;
    select   = '\[NMSZ\]';
    select   = '\[NMSZ\]';
    sed      = 's/\[NMSZ\]/\[RFS_NMSZ\]/g';
    sed      = 's/\[NMSZ\]/\[RFS_NMSZ\]/g';
};
};
#endif
#endif
/*
/*
 * Some SVR4 systems supposedly use these non-ANSI preprocessor directives.
 * Some SVR4 systems supposedly use these non-ANSI preprocessor directives.
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname  = svr4_preproc_lint_on;
    hackname  = svr4_preproc_lint_on;
    select    = '#lint\(on\)';
    select    = '#lint\(on\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'defined(lint)';
    c_fix_arg = 'defined(lint)';
    test_text = "#if #lint(on)";
    test_text = "#if #lint(on)";
};
};
fix = {
fix = {
    hackname  = svr4_preproc_lint_off;
    hackname  = svr4_preproc_lint_off;
    select    = '#lint\(off\)';
    select    = '#lint\(off\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = '!defined(lint)';
    c_fix_arg = '!defined(lint)';
    test_text = "#if #lint(off)";
    test_text = "#if #lint(off)";
};
};
fix = {
fix = {
    hackname  = svr4_preproc_machine;
    hackname  = svr4_preproc_machine;
    select    = '#(machine|system|cpu)\(([^)]*)\)';
    select    = '#(machine|system|cpu)\(([^)]*)\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'defined(__%1__)';
    c_fix_arg = 'defined(__%1__)';
    test_text = "#if #machine(i386) || #system(vax) || #cpu(sparc)";
    test_text = "#if #machine(i386) || #system(vax) || #cpu(sparc)";
};
};
#endif
#endif
/*
/*
 *   Fix broken decl of profil present on some svr4 systems.
 *   Fix broken decl of profil present on some svr4 systems.
 */
 */
fix = {
fix = {
    hackname = svr4_profil;
    hackname = svr4_profil;
    files    = stdlib.h;
    files    = stdlib.h;
    files    = unistd.h;
    files    = unistd.h;
    select    =
    select    =
    'profil\(unsigned short \*, unsigned int, unsigned int, unsigned int\)';
    'profil\(unsigned short \*, unsigned int, unsigned int, unsigned int\)';
    /* The fix is wrong on IRIX 5/6 and creates a conflict with another
    /* The fix is wrong on IRIX 5/6 and creates a conflict with another
       prototype in .  */
       prototype in .  */
    bypass    = 'Silicon Graphics';
    bypass    = 'Silicon Graphics';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = 'profil(unsigned short *, size_t, int, unsigned int)';
    c_fix_arg = 'profil(unsigned short *, size_t, int, unsigned int)';
    test_text =
    test_text =
    'profil(unsigned short *, unsigned int, unsigned int, unsigned int);';
    'profil(unsigned short *, unsigned int, unsigned int, unsigned int);';
};
};
/*
/*
 *  Convert functions to prototype form, and fix arg names in .
 *  Convert functions to prototype form, and fix arg names in .
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_proto_form;
    hackname = svr4_proto_form;
    files    = sys/stat.h;
    files    = sys/stat.h;
    select   = 'const extern';
    select   = 'const extern';
    sed      = "/^stat([ \t]*[^c]/ {\nN\nN\n"
    sed      = "/^stat([ \t]*[^c]/ {\nN\nN\n"
                   "s/(.*)\\n/( /\n"
                   "s/(.*)\\n/( /\n"
                   "s/;\\n/, /\n"
                   "s/;\\n/, /\n"
                   "s/;$/)/\n"  "}";
                   "s/;$/)/\n"  "}";
    sed      = "/^lstat([ \t]*[^c]/ {\nN\nN\n"
    sed      = "/^lstat([ \t]*[^c]/ {\nN\nN\n"
                   "s/(.*)\\n/( /\n"
                   "s/(.*)\\n/( /\n"
                   "s/;\\n/, /\n"
                   "s/;\\n/, /\n"
                   "s/;$/)/\n"  "}";
                   "s/;$/)/\n"  "}";
    sed      = "/^fstat([ \t]*[^i]/ {\nN\nN\n"
    sed      = "/^fstat([ \t]*[^i]/ {\nN\nN\n"
                   "s/(.*)\\n/( /\n"
                   "s/(.*)\\n/( /\n"
                   "s/;\\n/, /\n"
                   "s/;\\n/, /\n"
                   "s/;$/)/\n"  "}";
                   "s/;$/)/\n"  "}";
    sed      = "/^mknod([ \t]*[^c]/{\nN\nN\nN\n"
    sed      = "/^mknod([ \t]*[^c]/{\nN\nN\nN\n"
                   "s/(.*)\\n/( /\n"
                   "s/(.*)\\n/( /\n"
                   "s/;\\n/, /g\n"
                   "s/;\\n/, /g\n"
                   "s/;$/)/\n"  "}";
                   "s/;$/)/\n"  "}";
    sed      = "1,$s/\\([^A-Za-z]\\)path\\([^A-Za-z]\\)/\\1__path\\2/g";
    sed      = "1,$s/\\([^A-Za-z]\\)path\\([^A-Za-z]\\)/\\1__path\\2/g";
    sed      = "1,$s/\\([^A-Za-z]\\)buf\\([^A-Za-z]\\)/\\1__buf\\2/g";
    sed      = "1,$s/\\([^A-Za-z]\\)buf\\([^A-Za-z]\\)/\\1__buf\\2/g";
    sed      = "1,$s/\\([^A-Za-z]\\)fd\\([^A-Za-z]\\)/\\1__fd\\2/g";
    sed      = "1,$s/\\([^A-Za-z]\\)fd\\([^A-Za-z]\\)/\\1__fd\\2/g";
    sed      = "1,$s/ret\\([^u]\\)/__ret\\1/g";
    sed      = "1,$s/ret\\([^u]\\)/__ret\\1/g";
    sed      = "1,$s/\\([^_]\\)mode\\([^_]\\)/\\1__mode\\2/g";
    sed      = "1,$s/\\([^_]\\)mode\\([^_]\\)/\\1__mode\\2/g";
    sed      = "1,$s/\\([^_r]\\)dev\\([^_]\\)/\\1__dev\\2/g";
    sed      = "1,$s/\\([^_r]\\)dev\\([^_]\\)/\\1__dev\\2/g";
};
};
#endif
#endif
/*
/*
 *  Add a prototyped declaration of mmap to .
 *  Add a prototyped declaration of mmap to .
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_proto_mmap;
    hackname = svr4_proto_mmap;
    files    = sys/mman.h;
    files    = sys/mman.h;
    select   = '^extern caddr_t mmap();$';
    select   = '^extern caddr_t mmap();$';
    sed = '/^extern caddr_t mmap();$/c' "\\\n"
    sed = '/^extern caddr_t mmap();$/c' "\\\n"
          "#ifdef __STDC__\\\n"
          "#ifdef __STDC__\\\n"
          "extern caddr_t mmap (caddr_t, size_t, int, int, int, off_t);\\\n"
          "extern caddr_t mmap (caddr_t, size_t, int, int, int, off_t);\\\n"
          "#else /* !defined(__STDC__) */\\\n"
          "#else /* !defined(__STDC__) */\\\n"
          "extern caddr_t mmap ();\\\n"
          "extern caddr_t mmap ();\\\n"
          "#endif /* !defined(__STDC__) */\\\n";
          "#endif /* !defined(__STDC__) */\\\n";
};
};
#endif
#endif
/*
/*
 *  Add a #define of _SIGACTION_ into .
 *  Add a #define of _SIGACTION_ into .
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_sigaction;
    hackname = svr4_sigaction;
    files    = sys/signal.h;
    files    = sys/signal.h;
    sed      = "/^struct sigaction {/i\\\n"
    sed      = "/^struct sigaction {/i\\\n"
               "#define _SIGACTION_";
               "#define _SIGACTION_";
    sed      = 's/(void *(\*)())/(void (*)(int))/';
    sed      = 's/(void *(\*)())/(void (*)(int))/';
};
};
#endif
#endif
/*
/*
 * Correct types for signal handler constants like SIG_DFL; they might be
 * Correct types for signal handler constants like SIG_DFL; they might be
 * void (*) (), and should be void (*) (int).  C++ doesn't like the
 * void (*) (), and should be void (*) (int).  C++ doesn't like the
 * old style.
 * old style.
 */
 */
fix = {
fix = {
    hackname = svr4_sighandler_type;
    hackname = svr4_sighandler_type;
    files = sys/signal.h;
    files = sys/signal.h;
    select = 'void *\(\*\)\(\)';
    select = 'void *\(\*\)\(\)';
    c_fix = format;
    c_fix = format;
    c_fix_arg = "void (*)(int)";
    c_fix_arg = "void (*)(int)";
    test_text = "#define SIG_DFL (void(*)())0\n"
    test_text = "#define SIG_DFL (void(*)())0\n"
                "#define SIG_IGN (void (*)())0\n";
                "#define SIG_IGN (void (*)())0\n";
};
};
/*
/*
 *  Put storage class at start of decl, to avoid warning.
 *  Put storage class at start of decl, to avoid warning.
 */
 */
#ifdef SVR4
#ifdef SVR4
fix = {
fix = {
    hackname = svr4_storage_class;
    hackname = svr4_storage_class;
    files    = rpc/types.h;
    files    = rpc/types.h;
    select   = 'const extern';
    select   = 'const extern';
    sed      = 's/const extern/extern const/g';
    sed      = 's/const extern/extern const/g';
};
};
#endif
#endif
/*
/*
 *  Some SysV r4 systems, including Sequent's DYNIX/ptx, use the local
 *  Some SysV r4 systems, including Sequent's DYNIX/ptx, use the local
 *  function 'getrnge' in  before they declare it.  For these
 *  function 'getrnge' in  before they declare it.  For these
 *  systems add a 'static int' declaration of 'getrnge' into 
 *  systems add a 'static int' declaration of 'getrnge' into 
 *  early on.
 *  early on.
 *
 *
 *  'getrnge' traditionally manipulates a file-scope global called 'size',
 *  'getrnge' traditionally manipulates a file-scope global called 'size',
 *  so put the declaration right after the declaration of 'size'.
 *  so put the declaration right after the declaration of 'size'.
 *
 *
 *  Don't do this if there is already a `static void getrnge' declaration
 *  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
 *  present, since this would cause a redeclaration error.  Solaris 2.x has
 *  such a declaration.
 *  such a declaration.
 */
 */
fix = {
fix = {
    hackname  = svr4_undeclared_getrnge;
    hackname  = svr4_undeclared_getrnge;
    files     = regexp.h;
    files     = regexp.h;
    select    = "getrnge";
    select    = "getrnge";
    bypass    = "static void getrnge";
    bypass    = "static void getrnge";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%0\n"
    c_fix_arg = "%0\n"
                "static int getrnge ();";
                "static int getrnge ();";
    c_fix_arg = "^static int[ \t]+size;";
    c_fix_arg = "^static int[ \t]+size;";
    test_text = "static int size;\n"
    test_text = "static int size;\n"
                "/* stuff which calls getrnge() */\n"
                "/* stuff which calls getrnge() */\n"
                "static getrnge()\n"
                "static getrnge()\n"
                "{}";
                "{}";
};
};
/*
/*
 *  Like svr4_mach_defines, but with newfangled syntax.
 *  Like svr4_mach_defines, but with newfangled syntax.
 *  Source lines are of #define __i386 #machine(i386).   Delete them.
 *  Source lines are of #define __i386 #machine(i386).   Delete them.
 */
 */
#ifdef SVR5
#ifdef SVR5
fix = {
fix = {
    hackname = svr5_mach_defines;
    hackname = svr5_mach_defines;
    files    = ieeefp.h;
    files    = ieeefp.h;
    select   = "#define[ \t]*__i386.*\(i386\)";
    select   = "#define[ \t]*__i386.*\(i386\)";
    sed      = "/#define[ \t]*__i386.*/d";
    sed      = "/#define[ \t]*__i386.*/d";
};
};
#endif /*  SVR5 */
#endif /*  SVR5 */
/*
/*
 *  Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
 *  Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
 *  in string.h on sysV68
 *  in string.h on sysV68
 *  Correct the return type for strlen in string.h on Lynx.
 *  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.
 *  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.
 *  Add missing const for strdup on OSF/1 V3.0.
 *  On sysV88 layout is slightly different.
 *  On sysV88 layout is slightly different.
 */
 */
fix = {
fix = {
    hackname = sysv68_string;
    hackname = sysv68_string;
    files    = testing.h;
    files    = testing.h;
    files    = string.h;
    files    = string.h;
    bypass   = "_CLASSIC_ANSI_TYPES";
    bypass   = "_CLASSIC_ANSI_TYPES";
    sed = "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/";
    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/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/";
    sed = "s/strdup(char \\*s1);/strdup(const char *s1);/";
    sed = "s/strdup(char \\*s1);/strdup(const char *s1);/";
    sed = "/^extern char$/N";
    sed = "/^extern char$/N";
    sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/";
    sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/";
    sed = "/^extern int$/N";
    sed = "/^extern int$/N";
    sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/";
    sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/";
    sed = "/^\tstrncmp(),$/N";
    sed = "/^\tstrncmp(),$/N";
    sed = 's/^\(' "\t" 'strncmp()\),\n\(' "\t" 'strlen(),\)$/'
    sed = 's/^\(' "\t" 'strncmp()\),\n\(' "\t" 'strlen(),\)$/'
            '\1;' "\\\nextern unsigned int\\\n\\2/";
            '\1;' "\\\nextern unsigned int\\\n\\2/";
    test_text =
    test_text =
    "extern int strlen();\n"
    "extern int strlen();\n"
    "extern int ffs(long);\n"
    "extern int ffs(long);\n"
    "extern char\n"
    "extern char\n"
    "\t*memccpy(),\n"
    "\t*memccpy(),\n"
    "\tmemcpy();\n"
    "\tmemcpy();\n"
    "extern int\n"
    "extern int\n"
    "\tstrcmp(),\n"
    "\tstrcmp(),\n"
    "\tstrncmp(),\n"
    "\tstrncmp(),\n"
    "\tstrlen(),\n"
    "\tstrlen(),\n"
    "\tstrspn();\n"
    "\tstrspn();\n"
    "extern int\n"
    "extern int\n"
    "\tstrlen(), strspn();";
    "\tstrlen(), strspn();";
};
};
/*
/*
 *  Fix return type of calloc, malloc, realloc, bsearch and exit
 *  Fix return type of calloc, malloc, realloc, bsearch and exit
 */
 */
fix = {
fix = {
    hackname = sysz_stdlib_for_sun;
    hackname = sysz_stdlib_for_sun;
    files    = stdlib.h;
    files    = stdlib.h;
    bypass   = "_CLASSIC_ANSI_TYPES";
    bypass   = "_CLASSIC_ANSI_TYPES";
    select    = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
    select    = "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "void *\t%1(";
    c_fix_arg = "void *\t%1(";
    test_text =
    test_text =
    "extern char*\tcalloc(size_t);\n"
    "extern char*\tcalloc(size_t);\n"
    "extern char*\tmalloc(size_t);\n"
    "extern char*\tmalloc(size_t);\n"
    "extern char*\trealloc(void*,size_t);\n"
    "extern char*\trealloc(void*,size_t);\n"
    "extern char*\tbsearch(void*,size_t,size_t);\n";
    "extern char*\tbsearch(void*,size_t,size_t);\n";
};
};
/*
/*
 * __thread is now a keyword.
 * __thread is now a keyword.
 */
 */
fix = {
fix = {
    hackname  = thread_keyword;
    hackname  = thread_keyword;
    files     = "pthread.h";
    files     = "pthread.h";
    files     = "bits/sigthread.h";
    files     = "bits/sigthread.h";
    select    = "([* ])__thread([,)])";
    select    = "([* ])__thread([,)])";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1__thr%2";
    c_fix_arg = "%1__thr%2";
    test_text =
    test_text =
        "extern int pthread_create (pthread_t *__restrict __thread,\n"
        "extern int pthread_create (pthread_t *__restrict __thread,\n"
        "extern int pthread_kill (pthread_t __thread, int __signo);\n"
        "extern int pthread_kill (pthread_t __thread, int __signo);\n"
        "extern int pthread_cancel (pthread_t __thread);";
        "extern int pthread_cancel (pthread_t __thread);";
};
};
/*
/*
 *  if the #if says _cplusplus, not the double underscore __cplusplus
 *  if the #if says _cplusplus, not the double underscore __cplusplus
 *  that it should be
 *  that it should be
 */
 */
fix = {
fix = {
    hackname = tinfo_cplusplus;
    hackname = tinfo_cplusplus;
    files    = tinfo.h;
    files    = tinfo.h;
    select   = "[ \t]_cplusplus";
    select   = "[ \t]_cplusplus";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = " __cplusplus";
    c_fix_arg = " __cplusplus";
    test_text = "#ifdef _cplusplus\nint bogus;\n#endif";
    test_text = "#ifdef _cplusplus\nint bogus;\n#endif";
};
};
/*
/*
 *  function parameter to atexit is missing "void" on VAX Ultrix 4.3.
 *  function parameter to atexit is missing "void" on VAX Ultrix 4.3.
 */
 */
fix = {
fix = {
    hackname = ultrix_atexit_param;
    hackname = ultrix_atexit_param;
    files    = stdlib.h;
    files    = stdlib.h;
    select   = 'atexit\(.*\(\)';
    select   = 'atexit\(.*\(\)';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "atexit( void (*__func)( void )";
    c_fix_arg = "atexit( void (*__func)( void )";
    test_text = "int atexit( void (*__func)() );\n";
    test_text = "int atexit( void (*__func)() );\n";
};
};
/*
/*
 *  parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R.
 *  parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R.
 */
 */
fix = {
fix = {
    hackname = ultrix_atof_param;
    hackname = ultrix_atof_param;
    files    = math.h;
    files    = math.h;
    select   = "atof\\([ \t]*char";
    select   = "atof\\([ \t]*char";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "atof(const char";
    c_fix_arg = "atof(const char";
    test_text = "extern double atof( char *__nptr);\n";
    test_text = "extern double atof( char *__nptr);\n";
};
};
/*
/*
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 */
 */
fix = {
fix = {
    hackname  = ultrix_const;
    hackname  = ultrix_const;
    files     = stdio.h;
    files     = stdio.h;
    select    = 'perror\( char \*';
    select    = 'perror\( char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 const %3 *__";
    c_fix_arg = "%1 const %3 *__";
    c_fix_arg = "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)"
    c_fix_arg = "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)"
                "[ \t]+(char|void) \\*__";
                "[ \t]+(char|void) \\*__";
    test_text =
    test_text =
    "extern void perror( char *__s );\n"
    "extern void perror( char *__s );\n"
    "extern int fputs( char *__s, FILE *);\n"
    "extern int fputs( char *__s, FILE *);\n"
    "extern size_t fwrite( void *__ptr, size_t, size_t, FILE *);\n"
    "extern size_t fwrite( void *__ptr, size_t, size_t, FILE *);\n"
    "extern int fscanf( FILE *__stream, char *__format, ...);\n"
    "extern int fscanf( FILE *__stream, char *__format, ...);\n"
    "extern int scanf( char *__format, ...);\n";
    "extern int scanf( char *__format, ...);\n";
};
};
/*
/*
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 *  parameters not const on DECstation Ultrix V4.0 and OSF/1.
 */
 */
fix = {
fix = {
    hackname  = ultrix_const2;
    hackname  = ultrix_const2;
    files     = stdio.h;
    files     = stdio.h;
    select    = '\*fopen\( char \*';
    select    = '\*fopen\( char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1( const char *%3, const char *";
    c_fix_arg = "%1( const char *%3, const char *";
    c_fix_arg = "([ \t*](fopen|sscanf|popen|tempnam))\\("
    c_fix_arg = "([ \t*](fopen|sscanf|popen|tempnam))\\("
               "[ \t]*char[ \t]*\\*([^,]*),"
               "[ \t]*char[ \t]*\\*([^,]*),"
               "[ \t]*char[ \t]*\\*[ \t]*";
               "[ \t]*char[ \t]*\\*[ \t]*";
    test_text =
    test_text =
    "extern FILE *fopen( char *__filename, char *__type );\n"
    "extern FILE *fopen( char *__filename, char *__type );\n"
    "extern int sscanf( char *__s, char *__format, ...);\n"
    "extern int sscanf( char *__s, char *__format, ...);\n"
    "extern FILE *popen(char *, char *);\n"
    "extern FILE *popen(char *, char *);\n"
    "extern char *tempnam(char*,char*);\n";
    "extern char *tempnam(char*,char*);\n";
};
};
/*
/*
 *  parameters not const on Ultrix V4.3.
 *  parameters not const on Ultrix V4.3.
 */
 */
fix = {
fix = {
    hackname  = ultrix_const3;
    hackname  = ultrix_const3;
    files     = stdio.h;
    files     = stdio.h;
    select    = 'fdopen\( .*, char \*';
    select    = 'fdopen\( .*, char \*';
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1 const %3 *__";
    c_fix_arg = "%1 const %3 *__";
    c_fix_arg = "([ \t*](fdopen)\\(.*)"
    c_fix_arg = "([ \t*](fdopen)\\(.*)"
                "[ \t]+(char|void) \\*__";
                "[ \t]+(char|void) \\*__";
    test_text =
    test_text =
    "extern FILE *      fdopen( int __filedes, char *__type );\n";
    "extern FILE *      fdopen( int __filedes, char *__type );\n";
};
};
/*
/*
 * Ultrix V4.[35] puts the declaration of uname before the definition
 * Ultrix V4.[35] puts the declaration of uname before the definition
 * of struct utsname, so the prototype (added by fixproto) causes havoc.
 * of struct utsname, so the prototype (added by fixproto) causes havoc.
 */
 */
fix = {
fix = {
    hackname = ultrix_fix_fixproto;
    hackname = ultrix_fix_fixproto;
    files    = sys/utsname.h;
    files    = sys/utsname.h;
    select   = ULTRIX;
    select   = ULTRIX;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "struct utsname;\n%0";
    c_fix_arg = "struct utsname;\n%0";
    c_fix_arg = "^[ \t]*extern[ \t]*int[ \t]*uname\\(\\);";
    c_fix_arg = "^[ \t]*extern[ \t]*int[ \t]*uname\\(\\);";
    test_text =
    test_text =
    "/* ULTRIX's uname */\nextern\tint\tuname();";
    "/* ULTRIX's uname */\nextern\tint\tuname();";
};
};
/*
/*
 *  Check for bad #ifdef line (in Ultrix 4.1)
 *  Check for bad #ifdef line (in Ultrix 4.1)
 */
 */
fix = {
fix = {
    hackname = ultrix_ifdef;
    hackname = ultrix_ifdef;
    select   = "^#ifdef KERNEL[ \t]+&&";
    select   = "^#ifdef KERNEL[ \t]+&&";
    files    = sys/file.h;
    files    = sys/file.h;
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#if defined(KERNEL) &&";
    c_fix_arg = "#if defined(KERNEL) &&";
    test_text =
    test_text =
    "#ifdef KERNEL\t&& defined( mumbojumbo )\nint oops;\n#endif";
    "#ifdef KERNEL\t&& defined( mumbojumbo )\nint oops;\n#endif";
};
};
/*
/*
 *  Add once-only latch to Ultrix V4.3 locale.h.
 *  Add once-only latch to Ultrix V4.3 locale.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_locale;
    hackname = ultrix_locale;
    files  = locale.h;
    files  = locale.h;
    select = "@\\(#\\)locale\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)locale\\.h.*6\\.1.*\\(ULTRIX\\)";
    c_fix  = wrap;
    c_fix  = wrap;
    test_text =
    test_text =
    "@(#)locale.h   6.1     (ULTRIX)\n";
    "@(#)locale.h   6.1     (ULTRIX)\n";
};
};
/*
/*
 * Strip "|| CC$gfloat" from Ultrix math headers.
 * Strip "|| CC$gfloat" from Ultrix math headers.
 */
 */
fix = {
fix = {
    hackname  = ultrix_math_ifdef;
    hackname  = ultrix_math_ifdef;
    files     = sys/limits.h;
    files     = sys/limits.h;
    files     = float.h;
    files     = float.h;
    files     = math.h;
    files     = math.h;
    select    = "^(#if.*)\\|\\|[ \t]+CC\\$[a-z]+";
    select    = "^(#if.*)\\|\\|[ \t]+CC\\$[a-z]+";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1";
    c_fix_arg = "%1";
    test_text = '#if     defined(__GFLOAT) || CC\$gfloat';
    test_text = '#if     defined(__GFLOAT) || CC\$gfloat';
};
};
/*
/*
 *  Avoid nested comments on Ultrix 4.3.
 *  Avoid nested comments on Ultrix 4.3.
 */
 */
fix = {
fix = {
    hackname = ultrix_nested_ioctl;
    hackname = ultrix_nested_ioctl;
    files    = sys/ioctl.h;
    files    = sys/ioctl.h;
    select   = "^/\\* #define SIOCSCREEN";
    select   = "^/\\* #define SIOCSCREEN";
    sed      = "/^\\/\\* #define SIOCSCREEN/s@/\\* screend@*//* screend@";
    sed      = "/^\\/\\* #define SIOCSCREEN/s@/\\* screend@*//* screend@";
    test_text =
    test_text =
    "/* #define SIOCSCREENON _IOWR('i', 49, int)"
    "/* #define SIOCSCREENON _IOWR('i', 49, int)"
    "/* screend, net/gw_screen.h */\n";
    "/* screend, net/gw_screen.h */\n";
};
};
fix = {
fix = {
    hackname = ultrix_nested_svc;
    hackname = ultrix_nested_svc;
    files    = rpc/svc.h;
    files    = rpc/svc.h;
    select   = "^ \\*[ \t]*int protocol;  */\\*";
    select   = "^ \\*[ \t]*int protocol;  */\\*";
    sed      = "s@^\\( \\*\tint protocol;  \\)/\\*@\\1*/ /*@";
    sed      = "s@^\\( \\*\tint protocol;  \\)/\\*@\\1*/ /*@";
    test_text =
    test_text =
    " *\tint protocol;  /* like TCP or UDP\n";
    " *\tint protocol;  /* like TCP or UDP\n";
};
};
/*
/*
 *  Add missing prototype for lstat and define for S_ISLNK
 *  Add missing prototype for lstat and define for S_ISLNK
 *  in Ultrix V4.3 sys/stat.h.
 *  in Ultrix V4.3 sys/stat.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_stat;
    hackname = ultrix_stat;
    files  = sys/stat.h;
    files  = sys/stat.h;
    select = "@\\(#\\)stat\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)stat\\.h.*6\\.1.*\\(ULTRIX\\)";
    sed    = "/^#define[ \t]S_IFPORT[ \t]*S_IFIFO$/a\\\n"
    sed    = "/^#define[ \t]S_IFPORT[ \t]*S_IFIFO$/a\\\n"
                "\\\n"
                "\\\n"
                "/* macro to test for symbolic link */\\\n"
                "/* macro to test for symbolic link */\\\n"
                "#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)\\\n"
                "#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)\\\n"
                "\n";
                "\n";
    sed    = "/^[ \t]*fstat(),$/a\\\n"
    sed    = "/^[ \t]*fstat(),$/a\\\n"
                "\tlstat(),\n";
                "\tlstat(),\n";
    test_text =
    test_text =
    "@(#)stat.h      6.1     (ULTRIX)\n"
    "@(#)stat.h      6.1     (ULTRIX)\n"
    "#define S_IFPORT S_IFIFO\n"
    "#define S_IFPORT S_IFIFO\n"
    "\tfstat(),\n/* THE INSERTION LINE FAILS ON BSD SYSTEMS */";
    "\tfstat(),\n/* THE INSERTION LINE FAILS ON BSD SYSTEMS */";
};
};
/*
/*
 *  Check for superfluous `static' (in Ultrix 4.2)
 *  Check for superfluous `static' (in Ultrix 4.2)
 *  On Ultrix 4.3, includes of other files (r3_cpu.h,r4_cpu.h) is broken.
 *  On Ultrix 4.3, includes of other files (r3_cpu.h,r4_cpu.h) is broken.
 */
 */
fix = {
fix = {
    hackname = ultrix_static;
    hackname = ultrix_static;
    files  = machine/cpu.h;
    files  = machine/cpu.h;
    select = '#include "r[34]_cpu';
    select = '#include "r[34]_cpu';
    sed    = "s/^static struct tlb_pid_state/struct tlb_pid_state/";
    sed    = "s/^static struct tlb_pid_state/struct tlb_pid_state/";
    sed    = 's/^#include "r3_cpu\.h"$/#include /';
    sed    = 's/^#include "r3_cpu\.h"$/#include /';
    sed    = 's/^#include "r4_cpu\.h"$/#include /';
    sed    = 's/^#include "r4_cpu\.h"$/#include /';
    test_text =
    test_text =
    "static struct tlb_pid_state {\n"
    "static struct tlb_pid_state {\n"
    "#include \"r3_cpu.h\"\n";
    "#include \"r3_cpu.h\"\n";
};
};
/*
/*
 *  Add missing declarations to Ultrix V4.3 stdlib.h.
 *  Add missing declarations to Ultrix V4.3 stdlib.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_stdlib;
    hackname = ultrix_stdlib;
    files  = stdlib.h;
    files  = stdlib.h;
    select = "@\\(#\\)stdlib\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)stdlib\\.h.*6\\.1.*\\(ULTRIX\\)";
    sed    = "/^char.*getenv( const char .* );.*$/a\\\n"
    sed    = "/^char.*getenv( const char .* );.*$/a\\\n"
    "int\t\tsetenv( const char *__name, const char *__val, int __ovrwrt );\\\n"
    "int\t\tsetenv( const char *__name, const char *__val, int __ovrwrt );\\\n"
    "void\t\tunsetenv( const char *__name );\\\n"
    "void\t\tunsetenv( const char *__name );\\\n"
    "int\t\tputenv( char *__s );\n";
    "int\t\tputenv( char *__s );\n";
    sed    = "/^char.*getenv();.*$/a\\\n"
    sed    = "/^char.*getenv();.*$/a\\\n"
    "int\tsetenv();\\\n"
    "int\tsetenv();\\\n"
    "void\tunsetenv();\\\n"
    "void\tunsetenv();\\\n"
    "int\tputenv();\n";
    "int\tputenv();\n";
    test_text =
    test_text =
    "@(#)stdlib.h      6.1     (ULTRIX)\n"
    "@(#)stdlib.h      6.1     (ULTRIX)\n"
    "char *             getenv( const char *__name );\n"
    "char *             getenv( const char *__name );\n"
    "char       *getenv();\n";
    "char       *getenv();\n";
};
};
/*
/*
 *  Add once-only latch to Ultrix V4.3 strings.h.
 *  Add once-only latch to Ultrix V4.3 strings.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_strings;
    hackname = ultrix_strings;
    files  = strings.h;
    files  = strings.h;
    select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
    c_fix  = wrap;
    c_fix  = wrap;
    test_text =
    test_text =
    "@(#)strings.h   6.1     (ULTRIX)\n";
    "@(#)strings.h   6.1     (ULTRIX)\n";
};
};
/*
/*
 *  Add missing declarations to Ultrix V4.3 strings.h.
 *  Add missing declarations to Ultrix V4.3 strings.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_strings2;
    hackname = ultrix_strings2;
    files  = strings.h;
    files  = strings.h;
    select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
    sed    = "/^.*strncmp( const .* );.*/a\\\n"
    sed    = "/^.*strncmp( const .* );.*/a\\\n"
    "\\\n"
    "\\\n"
    "extern int\\\n"
    "extern int\\\n"
    "\tstrcasecmp( const char *__s1, const char *__s2),\\\n"
    "\tstrcasecmp( const char *__s1, const char *__s2),\\\n"
    "\tstrncasecmp( const char *__s1, const char *__s2, size_t __n );\n";
    "\tstrncasecmp( const char *__s1, const char *__s2, size_t __n );\n";
    sed    = "/^.*strncmp();.*/a\\\n"
    sed    = "/^.*strncmp();.*/a\\\n"
    "extern int\\\n"
    "extern int\\\n"
    "\tstrcasecmp(),\\\n"
    "\tstrcasecmp(),\\\n"
    "\tstrncasecmp();\n";
    "\tstrncasecmp();\n";
    test_text =
    test_text =
    "@(#)strings.h      6.1     (ULTRIX)\n"
    "@(#)strings.h      6.1     (ULTRIX)\n"
    "\tstrncmp( const char *__s1, const char *__s2, size_t __n );\n"
    "\tstrncmp( const char *__s1, const char *__s2, size_t __n );\n"
    "\tstrncmp();\n";
    "\tstrncmp();\n";
};
};
/*
/*
 *  Add missing declarations to Ultrix V4.3 sys/time.h.
 *  Add missing declarations to Ultrix V4.3 sys/time.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_sys_time;
    hackname = ultrix_sys_time;
    files  = sys/time.h;
    files  = sys/time.h;
    select = "@\\(#\\)time\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)time\\.h.*6\\.1.*\\(ULTRIX\\)";
    sed    = "/^extern.*time_t.*time( time_t .* );.*$/a\\\n"
    sed    = "/^extern.*time_t.*time( time_t .* );.*$/a\\\n"
    "\\\n"
    "\\\n"
    "extern int adjtime(struct timeval *, struct timeval *);\\\n"
    "extern int adjtime(struct timeval *, struct timeval *);\\\n"
    "extern int getitimer(int, struct itimerval *);\\\n"
    "extern int getitimer(int, struct itimerval *);\\\n"
    "extern int setitimer(int, struct itimerval *, struct itimerval *);\\\n"
    "extern int setitimer(int, struct itimerval *, struct itimerval *);\\\n"
    "extern int gettimeofday(struct timeval *, struct timezone *);\\\n"
    "extern int gettimeofday(struct timeval *, struct timezone *);\\\n"
    "extern int settimeofday(struct timeval *, struct timezone *);\\\n"
    "extern int settimeofday(struct timeval *, struct timezone *);\\\n"
    "extern void profil(const void *, size_t, size_t, unsigned int);\\\n"
    "extern void profil(const void *, size_t, size_t, unsigned int);\\\n"
    "extern int stime(const time_t *);\\\n"
    "extern int stime(const time_t *);\\\n"
    "extern int utimes(const char *, const struct timeval[2]);\\\n"
    "extern int utimes(const char *, const struct timeval[2]);\\\n"
    "extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);\n";
    "extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);\n";
    sed    = "/^extern.*double.*difftime();.*$/a\\\n"
    sed    = "/^extern.*double.*difftime();.*$/a\\\n"
    "extern\tint adjtime();\\\n"
    "extern\tint adjtime();\\\n"
    "extern\tint getitimer();\\\n"
    "extern\tint getitimer();\\\n"
    "extern\tint setitimer();\\\n"
    "extern\tint setitimer();\\\n"
    "extern\tint gettimeofday();\\\n"
    "extern\tint gettimeofday();\\\n"
    "extern\tint settimeofday();\\\n"
    "extern\tint settimeofday();\\\n"
    "extern\tvoid profil();\\\n"
    "extern\tvoid profil();\\\n"
    "extern\tint stime();\\\n"
    "extern\tint stime();\\\n"
    "extern\tint utimes();\\\n"
    "extern\tint utimes();\\\n"
    "extern\tint select();\n";
    "extern\tint select();\n";
    test_text =
    test_text =
    "@(#)time.h      6.1     (ULTRIX)\n"
    "@(#)time.h      6.1     (ULTRIX)\n"
    "extern time_t              time( time_t *__tloc );\n"
    "extern time_t              time( time_t *__tloc );\n"
    "extern double difftime();\n";
    "extern double difftime();\n";
};
};
/*
/*
 *  Add missing declarations to Ultrix V4.3 unistd.h.
 *  Add missing declarations to Ultrix V4.3 unistd.h.
 */
 */
fix = {
fix = {
    hackname = ultrix_unistd;
    hackname = ultrix_unistd;
    files  = unistd.h;
    files  = unistd.h;
    select = "@\\(#\\)unistd\\.h.*6\\.1.*\\(ULTRIX\\)";
    select = "@\\(#\\)unistd\\.h.*6\\.1.*\\(ULTRIX\\)";
    sed    = "/^[ \t]*getgroups(),.*$/a\\\n"
    sed    = "/^[ \t]*getgroups(),.*$/a\\\n"
    "\tgetpagesize(),\n";
    "\tgetpagesize(),\n";
    sed    = "/^[ \t]*fork(),.*$/a\\\n"
    sed    = "/^[ \t]*fork(),.*$/a\\\n"
    "\tvfork(),\n";
    "\tvfork(),\n";
    test_text =
    test_text =
    "@(#)unistd.h      6.1     (ULTRIX)\n"
    "@(#)unistd.h      6.1     (ULTRIX)\n"
    "\tgetgroups(),\n"
    "\tgetgroups(),\n"
    "\tfork(),\n";
    "\tfork(),\n";
};
};
/*
/*
 * On Cray Unicos/Mk some standard headers use the C99 keyword "restrict"
 * On Cray Unicos/Mk some standard headers use the C99 keyword "restrict"
 * which must be replaced by __restrict__ for GCC.
 * which must be replaced by __restrict__ for GCC.
 */
 */
fix = {
fix = {
    hackname = unicosmk_restrict;
    hackname = unicosmk_restrict;
    files    = stdio.h;
    files    = stdio.h;
    files    = stdlib.h;
    files    = stdlib.h;
    files    = wchar.h;
    files    = wchar.h;
    mach     = "*-*-unicosmk*";
    mach     = "*-*-unicosmk*";
    select   = "(\\*[ \t]*)restrict([ \t]+)";
    select   = "(\\*[ \t]*)restrict([ \t]+)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "%1__restrict__%2";
    c_fix_arg = "%1__restrict__%2";
    test_text = "void f (char * restrict x);";
    test_text = "void f (char * restrict x);";
};
};
/*
/*
 * If arpa/inet.h prototypes are incompatible with the ones we just
 * If arpa/inet.h prototypes are incompatible with the ones we just
 * installed in , just remove the protos.
 * installed in , just remove the protos.
 * Because of this close association, this patch must be applied only
 * Because of this close association, this patch must be applied only
 * on those systems where the replacement byteorder header is installed.
 * on those systems where the replacement byteorder header is installed.
 */
 */
fix = {
fix = {
    hackname = uw7_byteorder_fix;
    hackname = uw7_byteorder_fix;
    files    = arpa/inet.h;
    files    = arpa/inet.h;
    select   = "in_port_t";
    select   = "in_port_t";
    test     = "-f sys/byteorder.h";
    test     = "-f sys/byteorder.h";
#ifndef SVR5
#ifndef SVR5
        mach = "*-*-sysv4*";
        mach = "*-*-sysv4*";
        mach = "i?86-*-sysv5*";
        mach = "i?86-*-sysv5*";
        mach = "i?86-*-udk*";
        mach = "i?86-*-udk*";
        mach = "i?86-*-solaris2.[0-4]";
        mach = "i?86-*-solaris2.[0-4]";
        mach = "powerpcle-*-solaris2.[0-4]";
        mach = "powerpcle-*-solaris2.[0-4]";
        mach = "sparc-*-solaris2.[0-4]";
        mach = "sparc-*-solaris2.[0-4]";
#endif /* SVR5 */
#endif /* SVR5 */
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "";
    c_fix_arg = "";
    c_fix_arg = "^extern.*[ \t](htons|ntohs).*\\(in_port_t\\).*;";
    c_fix_arg = "^extern.*[ \t](htons|ntohs).*\\(in_port_t\\).*;";
    test_text = "extern in_port_t\thtons __P((in_port_t));\n"
    test_text = "extern in_port_t\thtons __P((in_port_t));\n"
                "extern in_port_t\tntohs __P((in_port_t));"
                "extern in_port_t\tntohs __P((in_port_t));"
                "`[ ! -d $DESTDIR/sys ] && mkdir $DESTDIR/sys\n"
                "`[ ! -d $DESTDIR/sys ] && mkdir $DESTDIR/sys\n"
                "echo '/* DUMMY */' >> sys/byteorder.h`";
                "echo '/* DUMMY */' >> sys/byteorder.h`";
};
};
/*
/*
 *  Fix definitions of macros used by va-i960.h in VxWorks header file.
 *  Fix definitions of macros used by va-i960.h in VxWorks header file.
 */
 */
fix = {
fix = {
    hackname  = va_i960_macro;
    hackname  = va_i960_macro;
    files     = arch/i960/archI960.h;
    files     = arch/i960/archI960.h;
    select    = "__(vsiz|vali|vpad|alignof__)";
    select    = "__(vsiz|vali|vpad|alignof__)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "__vx%1";
    c_fix_arg = "__vx%1";
    test_text =
    test_text =
    "extern int __vsiz vsiz;\n"
    "extern int __vsiz vsiz;\n"
    "extern int __vali vali;\n"
    "extern int __vali vali;\n"
    "extern int __vpad vpad;\n"
    "extern int __vpad vpad;\n"
    "#define __alignof__(x) ...";
    "#define __alignof__(x) ...";
};
};
/*
/*
 *  AIX and Interix headers define NULL to be cast to a void pointer,
 *  AIX and Interix headers define NULL to be cast to a void pointer,
 *  which is illegal in ANSI C++.
 *  which is illegal in ANSI C++.
 */
 */
fix = {
fix = {
    hackname  = void_null;
    hackname  = void_null;
    files     = curses.h;
    files     = curses.h;
    files     = dbm.h;
    files     = dbm.h;
    files     = locale.h;
    files     = locale.h;
    files     = stdio.h;
    files     = stdio.h;
    files     = stdlib.h;
    files     = stdlib.h;
    files     = string.h;
    files     = string.h;
    files     = time.h;
    files     = time.h;
    files     = unistd.h;
    files     = unistd.h;
    files     = sys/dir.h;
    files     = sys/dir.h;
    files     = sys/param.h;
    files     = sys/param.h;
    files     = sys/types.h;
    files     = sys/types.h;
    /* avoid changing C++ friendly NULL */
    /* avoid changing C++ friendly NULL */
    bypass    = __cplusplus;
    bypass    = __cplusplus;
    select    = "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)";
    select    = "^#[ \t]*define[ \t]+NULL[ \t]+\\(\\(void[ \t]*\\*\\)0\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#define NULL 0";
    c_fix_arg = "#define NULL 0";
    test_text = "# define\tNULL \t((void *)0)  /* typed NULL */";
    test_text = "# define\tNULL \t((void *)0)  /* typed NULL */";
};
};
/*
/*
 *  Make VxWorks header which is almost gcc ready fully gcc ready.
 *  Make VxWorks header which is almost gcc ready fully gcc ready.
 */
 */
fix = {
fix = {
    hackname = vxworks_gcc_problem;
    hackname = vxworks_gcc_problem;
    files    = types/vxTypesBase.h;
    files    = types/vxTypesBase.h;
    select   = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
    select   = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
    sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/"
    sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/"
          "#if 1/";
          "#if 1/";
    sed = "/[ \t]size_t/i\\\n"
    sed = "/[ \t]size_t/i\\\n"
        "#ifndef _GCC_SIZE_T\\\n"
        "#ifndef _GCC_SIZE_T\\\n"
        "#define _GCC_SIZE_T\n";
        "#define _GCC_SIZE_T\n";
    sed = "/[ \t]size_t/a\\\n"
    sed = "/[ \t]size_t/a\\\n"
        "#endif\n";
        "#endif\n";
    sed = "/[ \t]ptrdiff_t/i\\\n"
    sed = "/[ \t]ptrdiff_t/i\\\n"
        "#ifndef _GCC_PTRDIFF_T\\\n"
        "#ifndef _GCC_PTRDIFF_T\\\n"
        "#define _GCC_PTRDIFF_T\n";
        "#define _GCC_PTRDIFF_T\n";
    sed = "/[ \t]ptrdiff_t/a\\\n"
    sed = "/[ \t]ptrdiff_t/a\\\n"
        "#endif\n";
        "#endif\n";
    sed = "/[ \t]wchar_t/i\\\n"
    sed = "/[ \t]wchar_t/i\\\n"
        "#ifndef _GCC_WCHAR_T\\\n"
        "#ifndef _GCC_WCHAR_T\\\n"
        "#define _GCC_WCHAR_T\n";
        "#define _GCC_WCHAR_T\n";
    sed = "/[ \t]wchar_t/a\\\n"
    sed = "/[ \t]wchar_t/a\\\n"
        "#endif\n";
        "#endif\n";
    test_text =
    test_text =
    "#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__\n"
    "#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__\n"
    "typedef unsigned int size_t;\n"
    "typedef unsigned int size_t;\n"
    "typedef long ptrdiff_t;\n"
    "typedef long ptrdiff_t;\n"
    "typedef unsigned short wchar_t;\n"
    "typedef unsigned short wchar_t;\n"
    "#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n";
    "#endif /* __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__ */\n";
};
};
/*
/*
 *  Fix VxWorks  to not require including .
 *  Fix VxWorks  to not require including .
 */
 */
fix = {
fix = {
    hackname  = vxworks_needs_vxtypes;
    hackname  = vxworks_needs_vxtypes;
    files     = time.h;
    files     = time.h;
    select    = "uint_t([ \t]+_clocks_per_sec)";
    select    = "uint_t([ \t]+_clocks_per_sec)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "unsigned int%1";
    c_fix_arg = "unsigned int%1";
    test_text = "uint_t\t_clocks_per_sec;";
    test_text = "uint_t\t_clocks_per_sec;";
};
};
/*
/*
 *  Fix VxWorks  to not require including .
 *  Fix VxWorks  to not require including .
 */
 */
fix = {
fix = {
    hackname = vxworks_needs_vxworks;
    hackname = vxworks_needs_vxworks;
    files    = sys/stat.h;
    files    = sys/stat.h;
    test     = " -r types/vxTypesOld.h";
    test     = " -r types/vxTypesOld.h";
    test     = " -n \"`egrep '#include' $file`\"";
    test     = " -n \"`egrep '#include' $file`\"";
    test     = " -n \"`egrep ULONG $file`\"";
    test     = " -n \"`egrep ULONG $file`\"";
    select   = "#[ \t]define[ \t]+__INCstath";
    select   = "#[ \t]define[ \t]+__INCstath";
    sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
    sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
          "#include \n";
          "#include \n";
    test_text = "`touch types/vxTypesOld.h`"
    test_text = "`touch types/vxTypesOld.h`"
    "#include  /* ULONG */\n"
    "#include  /* ULONG */\n"
    "# define\t__INCstath ";
    "# define\t__INCstath ";
};
};
/*
/*
 *  Another bad dependency in VxWorks 5.2 .
 *  Another bad dependency in VxWorks 5.2 .
 */
 */
fix = {
fix = {
    hackname = vxworks_time;
    hackname = vxworks_time;
    files    = time.h;
    files    = time.h;
    test     = " -r vxWorks.h";
    test     = " -r vxWorks.h";
    select    = "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*";
    select    = "#[ \t]*define[ \t]+VOIDFUNCPTR[ \t].*";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg =
    c_fix_arg =
    "#ifndef __gcc_VOIDFUNCPTR_defined\n"
    "#ifndef __gcc_VOIDFUNCPTR_defined\n"
    "#ifdef __cplusplus\n"
    "#ifdef __cplusplus\n"
    "typedef void (*__gcc_VOIDFUNCPTR) (...);\n"
    "typedef void (*__gcc_VOIDFUNCPTR) (...);\n"
    "#else\n"
    "#else\n"
    "typedef void (*__gcc_VOIDFUNCPTR) ();\n"
    "typedef void (*__gcc_VOIDFUNCPTR) ();\n"
    "#endif\n"
    "#endif\n"
    "#define __gcc_VOIDFUNCPTR_defined\n"
    "#define __gcc_VOIDFUNCPTR_defined\n"
    "#endif\n"
    "#endif\n"
    "#define VOIDFUNCPTR __gcc_VOIDFUNCPTR";
    "#define VOIDFUNCPTR __gcc_VOIDFUNCPTR";
    test_text = "`touch vxWorks.h`"
    test_text = "`touch vxWorks.h`"
                "#define VOIDFUNCPTR (void(*)())";
                "#define VOIDFUNCPTR (void(*)())";
};
};
/*
/*
 * WindISS math.h headers include bogus extern declarations of
 * WindISS math.h headers include bogus extern declarations of
 * numerous math functions that conflict with libstdc++-v3.
 * numerous math functions that conflict with libstdc++-v3.
 */
 */
fix = {
fix = {
    hackname  = windiss_math1;
    hackname  = windiss_math1;
    files     = math.h;
    files     = math.h;
    mach      = "*-*-windiss";
    mach      = "*-*-windiss";
    sed       = "s|inline long double cosl.*|#ifndef __GNUC__|";
    sed       = "s|inline long double cosl.*|#ifndef __GNUC__|";
    test_text = "inline long double cosl(long double);";
    test_text = "inline long double cosl(long double);";
};
};
fix = {
fix = {
    hackname  = windiss_math2;
    hackname  = windiss_math2;
    files     = math.h;
    files     = math.h;
    mach      = "*-*-windiss";
    mach      = "*-*-windiss";
    sed       = "s|/\\* long double declarations \\*/|"
    sed       = "s|/\\* long double declarations \\*/|"
                  "#endif /* __GNUC__ */|";
                  "#endif /* __GNUC__ */|";
    test_text = "/* long double declarations */";
    test_text = "/* long double declarations */";
};
};
/*
/*
 * WindISS headers include "diab/va_list.h" instead of "stdarg.h"
 * WindISS headers include "diab/va_list.h" instead of "stdarg.h"
 */
 */
fix = {
fix = {
    select    = '(#include.*)diab/va_list.h';
    select    = '(#include.*)diab/va_list.h';
    hackname  = windiss_valist;
    hackname  = windiss_valist;
    sed       = "s|diab/va_list.h|stdarg.h|";
    sed       = "s|diab/va_list.h|stdarg.h|";
    mach      = "*-*-windiss";
    mach      = "*-*-windiss";
    test_text = "#include ";
    test_text = "#include ";
};
};
/*
/*
 *  There are several name conflicts with C++ reserved words in X11 header
 *  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
 *  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.
 *  we find __cplusplus in the file.  These were found on the RS/6000.
 */
 */
fix = {
fix = {
    hackname  = x11_class;
    hackname  = x11_class;
    files     = X11/ShellP.h;
    files     = X11/ShellP.h;
    bypass    = __cplusplus;
    bypass    = __cplusplus;
    select    = "^([ \t]*char \\*)class;(.*)";
    select    = "^([ \t]*char \\*)class;(.*)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifdef __cplusplus\n%1c_class;%2\n"
    c_fix_arg = "#ifdef __cplusplus\n%1c_class;%2\n"
                "#else\n%1class;%2\n#endif";
                "#else\n%1class;%2\n#endif";
    test_text =
    test_text =
    "struct {\n"
    "struct {\n"
    "   char *class;\n"
    "   char *class;\n"
    "} mumble;\n";
    "} mumble;\n";
};
};
/*
/*
 *  class in Xm/BaseClassI.h
 *  class in Xm/BaseClassI.h
 */
 */
fix = {
fix = {
    hackname = x11_class_usage;
    hackname = x11_class_usage;
    files    = Xm/BaseClassI.h;
    files    = Xm/BaseClassI.h;
    bypass   = "__cplusplus";
    bypass   = "__cplusplus";
    select    = " class\\)";
    select    = " class\\)";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = " c_class)";
    c_fix_arg = " c_class)";
    test_text = "extern mumble (int  class);\n";
    test_text = "extern mumble (int  class);\n";
};
};
/*
/*
 *  new in Xm/Traversal.h
 *  new in Xm/Traversal.h
 */
 */
fix = {
fix = {
    hackname = x11_new;
    hackname = x11_new;
    files    = Xm/Traversal.h;
    files    = Xm/Traversal.h;
    bypass   = __cplusplus;
    bypass   = __cplusplus;
    sed      = "/Widget\told, new;/i\\\n"
    sed      = "/Widget\told, new;/i\\\n"
                   "#ifdef __cplusplus\\\n"
                   "#ifdef __cplusplus\\\n"
                   "\tWidget\told, c_new;\\\n"
                   "\tWidget\told, c_new;\\\n"
                   "#else\n";
                   "#else\n";
    sed      = "/Widget\told, new;/a\\\n"
    sed      = "/Widget\told, new;/a\\\n"
                   "#endif\n";
                   "#endif\n";
    sed      = "s/Widget new,/Widget c_new,/g";
    sed      = "s/Widget new,/Widget c_new,/g";
    test_text =
    test_text =
    "struct wedge {\n"
    "struct wedge {\n"
    "   Widget\told, new; /* fixinc check FAILS ON BSD */\n"
    "   Widget\told, new; /* fixinc check FAILS ON BSD */\n"
    "};\nextern Wedged( Widget new, Widget old );";
    "};\nextern Wedged( Widget new, Widget old );";
};
};
/*
/*
 *  Incorrect sprintf declaration in X11/Xmu.h
 *  Incorrect sprintf declaration in X11/Xmu.h
 */
 */
fix = {
fix = {
    hackname = x11_sprintf;
    hackname = x11_sprintf;
    files    = X11/Xmu.h;
    files    = X11/Xmu.h;
    files    = X11/Xmu/Xmu.h;
    files    = X11/Xmu/Xmu.h;
    select   = "^extern char \\*\tsprintf\\(\\);$";
    select   = "^extern char \\*\tsprintf\\(\\);$";
    c_fix     = format;
    c_fix     = format;
    c_fix_arg = "#ifndef __STDC__\n%0\n#endif /* !defined __STDC__ */";
    c_fix_arg = "#ifndef __STDC__\n%0\n#endif /* !defined __STDC__ */";
    test_text = "extern char *\tsprintf();";
    test_text = "extern char *\tsprintf();";
};
};
/*EOF*/
/*EOF*/
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.