/*
 * DO NOT EDIT THIS FILE   (fixincl.x)
 * 
 * It has been autogen-ed  Tuesday June 02, 1998 at 06:45:43 AM PDT
 * From the definitions    inclhack.def
 * and the template file   fixincl.tpl
 *
 * Install modified versions of certain ANSI-incompatible system header
 * files which are fixed to work correctly with ANSI C and placed in a
 * directory that GNU C will search.
 *
 * This script contains 108 fixup scripts.
 *
 * See README-fixinc for more information.
 *
 *  inclhack is free software.
 *  
 *  You may redistribute it and/or modify it under the terms of the
 *  GNU General Public License, as published by the Free Software
 *  Foundation; either version 2, or (at your option) any later version.
 *  
 *  inclhack is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See the GNU General Public License for more details.
 *  
 *  You should have received a copy of the GNU General Public License
 *  along with inclhack.  See the file "COPYING".  If not,
 *  write to:  The Free Software Foundation, Inc.,
 *             59 Temple Place - Suite 330,
 *             Boston,  MA  02111-1307, USA.
 *
 *
 *  Description   1 - Aix_Syswait fix
 */
tSCC zAix_SyswaitName[] =
     "Aix_Syswait";
/*
 *  File name selection pattern
 */
tSCC zAix_SyswaitList[] =
        "|" "sys/wait.h" "|";

/*
 *  content selection pattern
 */
tSCC zAix_SyswaitSelect0[] =
       "bos325,";

#define    AIX_SYSWAIT_TEST_CT  1
tTestDesc aAix_SyswaitTests[] = {
    { TT_EGREP,  zAix_SyswaitSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Aix_Syswait
 */
const char* apzAix_SyswaitPatch[] = { "sed",
    "-e" "/^extern pid_t wait3();$/i\\\n"
       "struct rusage;\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   2 - Aix_Volatile fix
 */
tSCC zAix_VolatileName[] =
     "Aix_Volatile";
/*
 *  File name selection pattern
 */
tSCC zAix_VolatileList[] =
        "|" "sys/signal.h" "|";

/*
 *  content selection pattern
 */
tSCC zAix_VolatileSelect0[] =
       "typedef volatile int sig_atomic_t";

#define    AIX_VOLATILE_TEST_CT  1
tTestDesc aAix_VolatileTests[] = {
    { TT_EGREP,  zAix_VolatileSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Aix_Volatile
 */
const char* apzAix_VolatilePatch[] = { "sed",
    "-e" "s/typedef volatile int sig_atomic_t/typedef int sig_atomic_t/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   3 - Alpha_Getopt fix
 */
tSCC zAlpha_GetoptName[] =
     "Alpha_Getopt";
/*
 *  File name selection pattern
 */
tSCC zAlpha_GetoptList[] =
        "|" "stdio.h"
        "|" "stdlib.h" "|";

/*
 *  content selection pattern
 */
tSCC zAlpha_GetoptSelect0[] =
       "getopt\\(int, char \\*\\[";

#define    ALPHA_GETOPT_TEST_CT  1
tTestDesc aAlpha_GetoptTests[] = {
    { TT_EGREP,  zAlpha_GetoptSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Alpha_Getopt
 */
const char* apzAlpha_GetoptPatch[] = { "sed",
    "-e" "s/getopt(int, char \\*\\[\\],[ ]*char \\*)/getopt(int, char *const[], const char *)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   4 - Alpha_Parens fix
 */
tSCC zAlpha_ParensName[] =
     "Alpha_Parens";
/*
 *  File name selection pattern
 */
tSCC zAlpha_ParensList[] =
        "|" "sym.h" "|";

/*
 *  content selection pattern
 */
tSCC zAlpha_ParensSelect0[] =
       "#ifndef\\(__mips64\\)";

#define    ALPHA_PARENS_TEST_CT  1
tTestDesc aAlpha_ParensTests[] = {
    { TT_EGREP,  zAlpha_ParensSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Alpha_Parens
 */
const char* apzAlpha_ParensPatch[] = { "sed",
    "-e" "s/#ifndef(__mips64)/#ifndef __mips64/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   5 - Alpha_Sbrk fix
 */
tSCC zAlpha_SbrkName[] =
     "Alpha_Sbrk";
/*
 *  File name selection pattern
 */
tSCC zAlpha_SbrkList[] =
        "|" "unistd.h" "|";

/*
 *  content selection pattern
 */
tSCC zAlpha_SbrkSelect0[] =
       "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";

#define    ALPHA_SBRK_TEST_CT  1
tTestDesc aAlpha_SbrkTests[] = {
    { TT_EGREP,  zAlpha_SbrkSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Alpha_Sbrk
 */
const char* apzAlpha_SbrkPatch[] = { "sed",
    "-e" "s/char\\([ \t]*\\*[\t ]*sbrk[ \t]*(\\)/void\\1/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   6 - Arm_Norcroft_Hint fix
 */
tSCC zArm_Norcroft_HintName[] =
     "Arm_Norcroft_Hint";
/*
 *  File name selection pattern
 */
tSCC zArm_Norcroft_HintList[] =
        "|" "X11/Intrinsic.h" "|";
#define ARM_NORCROFT_HINT_TEST_CT  0
#define aArm_Norcroft_HintTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Arm_Norcroft_Hint
 */
const char* apzArm_Norcroft_HintPatch[] = { "sed",
    "-e" "s/___type p_type/p_type/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   7 - Arm_Wchar fix
 */
tSCC zArm_WcharName[] =
     "Arm_Wchar";
/*
 *  File name selection pattern
 */
tSCC zArm_WcharList[] =
        "|" "stdlib.h" "|";

/*
 *  content selection pattern
 */
tSCC zArm_WcharSelect0[] =
       "#[ \t]*define[ \t]*__wchar_t";

#define    ARM_WCHAR_TEST_CT  1
tTestDesc aArm_WcharTests[] = {
    { TT_EGREP,  zArm_WcharSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Arm_Wchar
 */
const char* apzArm_WcharPatch[] = { "sed",
    "-e" "s/\\(#[ \t]*ifndef[ \t]*\\)__wchar_t/\\1_GCC_WCHAR_T/",
    "-e" "s/\\(#[ \t]*define[ \t]*\\)__wchar_t/\\1_GCC_WCHAR_T/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   8 - Aux_Asm fix
 */
tSCC zAux_AsmName[] =
     "Aux_Asm";
/*
 *  File name selection pattern
 */
tSCC zAux_AsmList[] =
        "|" "sys/param.h" "|";

/*
 *  content selection pattern
 */
tSCC zAux_AsmSelect0[] =
       "#ifndef NOINLINE";

#define    AUX_ASM_TEST_CT  1
tTestDesc aAux_AsmTests[] = {
    { TT_EGREP,  zAux_AsmSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Aux_Asm
 */
const char* apzAux_AsmPatch[] = { "sed",
    "-e" "s|#ifndef NOINLINE|#if !defined(NOINLINE) \\&\\& !defined(__GNUC__)|",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description   9 - Avoid_Bool fix
 */
tSCC zAvoid_BoolName[] =
     "Avoid_Bool";
/*
 *  File name selection pattern
 */
tSCC zAvoid_BoolList[] =
        "|" "curses.h" "|";
#define AVOID_BOOL_TEST_CT  0
#define aAvoid_BoolTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Avoid_Bool
 */
const char* apzAvoid_BoolPatch[] = { "sed",
    "-e" "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/i\\\n"
       "#ifndef __cplusplus\n",
    "-e" "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/a\\\n"
       "#endif\n",
    "-e" "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/i\\\n"
       "#ifndef __cplusplus\n",
    "-e" "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  10 - Bad_Malloc_Decl fix
 */
tSCC zBad_Malloc_DeclName[] =
     "Bad_Malloc_Decl";
/*
 *  File name selection pattern
 */
tSCC zBad_Malloc_DeclList[] =
        "|" "rpc/types.h" "|";

/*
 *  content bypass pattern
 */
tSCC zBad_Malloc_DeclBypass0[] =
       "\"C\"";

#define    BAD_MALLOC_DECL_TEST_CT  1
tTestDesc aBad_Malloc_DeclTests[] = {
    { TT_NEGREP, zBad_Malloc_DeclBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for Bad_Malloc_Decl
 */
const char* apzBad_Malloc_DeclPatch[] = { "sed",
    "-e" "1i\\\n"
       "#ifdef __cplusplus\\\n"
       "extern \"C\" {\\\n"
       "#endif\\\n"
       "\n",
    "-e" "$a\\\n"
       "#ifdef __cplusplus\\\n"
       "}\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  11 - Bad_Struct_Term fix
 */
tSCC zBad_Struct_TermName[] =
     "Bad_Struct_Term";
/*
 *  File name selection pattern
 */
tSCC zBad_Struct_TermList[] =
        "|" "curses.h" "|";

/*
 *  content selection pattern
 */
tSCC zBad_Struct_TermSelect0[] =
       "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";

#define    BAD_STRUCT_TERM_TEST_CT  1
tTestDesc aBad_Struct_TermTests[] = {
    { TT_EGREP,  zBad_Struct_TermSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Bad_Struct_Term
 */
const char* apzBad_Struct_TermPatch[] = { "sed",
    "-e" "s/^[ \t]*typedef[ \t][ \t]*\\(struct[ \t][ \t]*term[ \t]*;[ \t]*\\)$/\\1/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  12 - Badquote fix
 */
tSCC zBadquoteName[] =
     "Badquote";
/*
 *  File name selection pattern
 */
tSCC zBadquoteList[] =
        "|" "sundev/vuid_event.h" "|";
#define BADQUOTE_TEST_CT  0
#define aBadquoteTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Badquote
 */
const char* apzBadquotePatch[] = { "sed",
    "-e" "s/doesn't/does not/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  13 - Bad_Lval fix
 */
tSCC zBad_LvalName[] =
     "Bad_Lval";
/*
 *  File name selection pattern
 */
tSCC zBad_LvalList[] =
        "|" "libgen.h"
        "|" "dirent.h"
        "|" "ftw.h"
        "|" "grp.h"
        "|" "ndbm.h"
        "|" "pthread.h"
        "|" "pwd.h"
        "|" "signal.h"
        "|" "standards.h"
        "|" "stdlib.h"
        "|" "string.h"
        "|" "stropts.h"
        "|" "time.h"
        "|" "unistd.h" "|";

/*
 *  content selection pattern
 */
tSCC zBad_LvalSelect0[] =
       "^[ \t]*#[ \t]*pragma[ \t]extern_prefix";

#define    BAD_LVAL_TEST_CT  1
tTestDesc aBad_LvalTests[] = {
    { TT_EGREP,  zBad_LvalSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Bad_Lval
 */
const char* apzBad_LvalPatch[] = { "sed",
    "-e" "s/^[ \t]*#[ \t]*define[ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*\\(_.\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  14 - Broken_Assert_Stdio fix
 */
tSCC zBroken_Assert_StdioName[] =
     "Broken_Assert_Stdio";
/*
 *  File name selection pattern
 */
tSCC zBroken_Assert_StdioList[] =
        "|" "assert.h" "|";

/*
 *  content selection pattern
 */
tSCC zBroken_Assert_StdioSelect0[] =
       "stderr";

/*
 *  content bypass pattern
 */
tSCC zBroken_Assert_StdioBypass0[] =
       "include.*stdio.h";

#define    BROKEN_ASSERT_STDIO_TEST_CT  2
tTestDesc aBroken_Assert_StdioTests[] = {
    { TT_NEGREP, zBroken_Assert_StdioBypass0, (regex_t*)NULL },
    { TT_EGREP,  zBroken_Assert_StdioSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Broken_Assert_Stdio
 */
const char* apzBroken_Assert_StdioPatch[] = { "sed",
    "-e" "1i\\\n"
       "#include <stdio.h>\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  15 - Broken_Assert_Stdlib fix
 */
tSCC zBroken_Assert_StdlibName[] =
     "Broken_Assert_Stdlib";
/*
 *  File name selection pattern
 */
tSCC zBroken_Assert_StdlibList[] =
        "|" "assert.h" "|";

/*
 *  content selection pattern
 */
tSCC zBroken_Assert_StdlibSelect0[] =
       "exit *\\(|abort *\\(";

/*
 *  content bypass pattern
 */
tSCC zBroken_Assert_StdlibBypass0[] =
       "include.*stdlib.h";

#define    BROKEN_ASSERT_STDLIB_TEST_CT  2
tTestDesc aBroken_Assert_StdlibTests[] = {
    { TT_NEGREP, zBroken_Assert_StdlibBypass0, (regex_t*)NULL },
    { TT_EGREP,  zBroken_Assert_StdlibSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Broken_Assert_Stdlib
 */
const char* apzBroken_Assert_StdlibPatch[] = { "sed",
    "-e" "1i\\\n"
       "#ifdef __cplusplus\\\n"
       "#include <stdlib.h>\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  16 - Bsd43_Io_Macros fix
 */
tSCC zBsd43_Io_MacrosName[] =
     "Bsd43_Io_Macros";
/*
 *  File name selection pattern
 */
#define zBsd43_Io_MacrosList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zBsd43_Io_MacrosSelect0[] =
       "BSD43__IO";

#define    BSD43_IO_MACROS_TEST_CT  1
tTestDesc aBsd43_Io_MacrosTests[] = {
    { TT_EGREP,  zBsd43_Io_MacrosSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Bsd43_Io_Macros
 */
const char* apzBsd43_Io_MacrosPatch[] = { "sed",
    "-e" "/[ \t]BSD43__IO[A-Z]*[ \t]*(/s/(\\(.\\),/('\\1',/",
    "-e" "/#[ \t]*define[ \t]*[ \t]BSD43__IO/s/'\\([cgx]\\)'/\\1/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  17 - Cxx_Cmnt_Hpux fix
 */
tSCC zCxx_Cmnt_HpuxName[] =
     "Cxx_Cmnt_Hpux";
/*
 *  File name selection pattern
 */
tSCC zCxx_Cmnt_HpuxList[] =
        "|" "sys/pci.h" "|";

/*
 *  content selection pattern
 */
tSCC zCxx_Cmnt_HpuxSelect0[] =
       "System Private Structures";

#define    CXX_CMNT_HPUX_TEST_CT  1
tTestDesc aCxx_Cmnt_HpuxTests[] = {
    { TT_EGREP,  zCxx_Cmnt_HpuxSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Cxx_Cmnt_Hpux
 */
const char* apzCxx_Cmnt_HpuxPatch[] = { "sed",
    "-e" "s|//.*$||g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  18 - Cxx_Cmnt_Irix fix
 */
tSCC zCxx_Cmnt_IrixName[] =
     "Cxx_Cmnt_Irix";
/*
 *  File name selection pattern
 */
tSCC zCxx_Cmnt_IrixList[] =
        "|" "fam.h" "|";

/*
 *  content selection pattern
 */
tSCC zCxx_Cmnt_IrixSelect0[] =
       "indigo.esd";

#define    CXX_CMNT_IRIX_TEST_CT  1
tTestDesc aCxx_Cmnt_IrixTests[] = {
    { TT_EGREP,  zCxx_Cmnt_IrixSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Cxx_Cmnt_Irix
 */
const char* apzCxx_Cmnt_IrixPatch[] = { "sed",
    "-e" "s|//.*$||g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  19 - Cxx_Cmnt_Sunos fix
 */
tSCC zCxx_Cmnt_SunosName[] =
     "Cxx_Cmnt_Sunos";
/*
 *  File name selection pattern
 */
tSCC zCxx_Cmnt_SunosList[] =
        "|" "sbusdev/audiovar.h"
        "|" "sys/audiovar.h" "|";
#define CXX_CMNT_SUNOS_TEST_CT  0
#define aCxx_Cmnt_SunosTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Cxx_Cmnt_Sunos
 */
const char* apzCxx_Cmnt_SunosPatch[] = { "sed",
    "-e" "s|//.*$||g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  20 - Cxx_Cmnt_Vxworks fix
 */
tSCC zCxx_Cmnt_VxworksName[] =
     "Cxx_Cmnt_Vxworks";
/*
 *  File name selection pattern
 */
tSCC zCxx_Cmnt_VxworksList[] =
        "|" "drv/netif/if_med.h" "|";

/*
 *  content selection pattern
 */
tSCC zCxx_Cmnt_VxworksSelect0[] =
       "Wind River";

#define    CXX_CMNT_VXWORKS_TEST_CT  1
tTestDesc aCxx_Cmnt_VxworksTests[] = {
    { TT_EGREP,  zCxx_Cmnt_VxworksSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Cxx_Cmnt_Vxworks
 */
const char* apzCxx_Cmnt_VxworksPatch[] = { "sed",
    "-e" "s|//.*$||g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  21 - Ecd_Cursor fix
 */
tSCC zEcd_CursorName[] =
     "Ecd_Cursor";
/*
 *  File name selection pattern
 */
tSCC zEcd_CursorList[] =
        "|" "sunwindow/win_lock.h"
        "|" "sunwindow/win_cursor.h" "|";
#define ECD_CURSOR_TEST_CT  0
#define aEcd_CursorTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Ecd_Cursor
 */
const char* apzEcd_CursorPatch[] = { "sed",
    "-e" "s/ecd.cursor/ecd_cursor/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  22 - Else_Label fix
 */
tSCC zElse_LabelName[] =
     "Else_Label";
/*
 *  File name selection pattern
 */
#define zElse_LabelList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zElse_LabelSelect0[] =
       "^[ \t]*#[ \t]*else[ \t]+[!-.0-~]";

#define    ELSE_LABEL_TEST_CT  1
tTestDesc aElse_LabelTests[] = {
    { TT_EGREP,  zElse_LabelSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Else_Label
 */
const char* apzElse_LabelPatch[] = { "sed",
    "-e" ":loop\n"
       "/\\\\$/N\n"
       "s/\\\\$/\\\\+++fixinc_eol+++/\n"
       "/\\\\$/b loop\n"
       "s/\\\\+++fixinc_eol+++/\\\\/g\n"
       "s%^\\([ \t]*#[ \t]*else\\)[ \t]*/[^*].*%\\1%\n"
       "s%^\\([ \t]*#[ \t]*else\\)[ \t]*[^/ \t].*%\\1%",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  23 - Endif_Label fix
 */
tSCC zEndif_LabelName[] =
     "Endif_Label";
/*
 *  File name selection pattern
 */
#define zEndif_LabelList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zEndif_LabelSelect0[] =
       "^[ \t]*#[ \t]*endif[ \t]+[!-.0-z{|}~]";

#define    ENDIF_LABEL_TEST_CT  1
tTestDesc aEndif_LabelTests[] = {
    { TT_EGREP,  zEndif_LabelSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Endif_Label
 */
const char* apzEndif_LabelPatch[] = { "sed",
    "-e" ":loop\n"
       "/\\\\$/N\n"
       "s/\\\\$/\\\\+++fixinc_eol+++/\n"
       "/\\\\$/b loop\n"
       "s/\\\\+++fixinc_eol+++/\\\\/g\n"
       "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*/[^*].*%\\1%\n"
       "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*\\*[^/].*%\\1%\n"
       "s%^\\([ \t]*#[ \t]*endif\\)[ \t]*[^/* \t].*%\\1%",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  24 - Hp_Inline fix
 */
tSCC zHp_InlineName[] =
     "Hp_Inline";
/*
 *  File name selection pattern
 */
tSCC zHp_InlineList[] =
        "|" "sys/spinlock.h" "|";

/*
 *  content selection pattern
 */
tSCC zHp_InlineSelect0[] =
       "include.*\"\\.\\./machine/";

#define    HP_INLINE_TEST_CT  1
tTestDesc aHp_InlineTests[] = {
    { TT_EGREP,  zHp_InlineSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Hp_Inline
 */
const char* apzHp_InlinePatch[] = { "sed",
    "-e" "s,\"../machine/inline.h\",<machine/inline.h>,",
    "-e" "s,\"../machine/psl.h\",<machine/psl.h>,",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  25 - Hp_Sysfile fix
 */
tSCC zHp_SysfileName[] =
     "Hp_Sysfile";
/*
 *  File name selection pattern
 */
tSCC zHp_SysfileList[] =
        "|" "sys/file.h" "|";

/*
 *  content selection pattern
 */
tSCC zHp_SysfileSelect0[] =
       "HPUX_SOURCE";

#define    HP_SYSFILE_TEST_CT  1
tTestDesc aHp_SysfileTests[] = {
    { TT_EGREP,  zHp_SysfileSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Hp_Sysfile
 */
const char* apzHp_SysfilePatch[] = { "sed",
    "-e" "s/(\\.\\.\\.)/(struct file * ...)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  26 - Hpux_Cxx_Unready fix
 */
tSCC zHpux_Cxx_UnreadyName[] =
     "Hpux_Cxx_Unready";
/*
 *  File name selection pattern
 */
tSCC zHpux_Cxx_UnreadyList[] =
        "|" "sys/mman.h" "|";

/*
 *  content bypass pattern
 */
tSCC zHpux_Cxx_UnreadyBypass0[] =
       "\"C\"|__BEGIN_DECLS";

#define    HPUX_CXX_UNREADY_TEST_CT  1
tTestDesc aHpux_Cxx_UnreadyTests[] = {
    { TT_NEGREP, zHpux_Cxx_UnreadyBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for Hpux_Cxx_Unready
 */
const char* apzHpux_Cxx_UnreadyPatch[] = { "sed",
    "-e" "1i\\\n"
       "#ifdef __cplusplus\\\n"
       "extern \"C\" {\\\n"
       "#endif\\\n"
       "\n",
    "-e" "$a\\\n"
       "#ifdef __cplusplus\\\n"
       "}\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  27 - Hpux_Maxint fix
 */
tSCC zHpux_MaxintName[] =
     "Hpux_Maxint";
/*
 *  File name selection pattern
 */
tSCC zHpux_MaxintList[] =
        "|" "sys/param.h" "|";
#define HPUX_MAXINT_TEST_CT  0
#define aHpux_MaxintTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Hpux_Maxint
 */
const char* apzHpux_MaxintPatch[] = { "sed",
    "-e" "/^#[ \t]*define[ \t]*MAXINT[ \t]/i\\\n"
       "#ifndef MAXINT\n",
    "-e" "/^#[ \t]*define[ \t]*MAXINT[ \t]/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  28 - Hpux_Systime fix
 */
tSCC zHpux_SystimeName[] =
     "Hpux_Systime";
/*
 *  File name selection pattern
 */
tSCC zHpux_SystimeList[] =
        "|" "sys/time.h" "|";

/*
 *  content selection pattern
 */
tSCC zHpux_SystimeSelect0[] =
       "^extern struct sigevent;";

#define    HPUX_SYSTIME_TEST_CT  1
tTestDesc aHpux_SystimeTests[] = {
    { TT_EGREP,  zHpux_SystimeSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Hpux_Systime
 */
const char* apzHpux_SystimePatch[] = { "sed",
    "-e" "s/^extern struct sigevent;/struct sigevent;/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  29 - Interactv_Add1 fix
 */
tSCC zInteractv_Add1Name[] =
     "Interactv_Add1";
/*
 *  File name selection pattern
 */
tSCC zInteractv_Add1List[] =
        "|" "stdio.h"
        "|" "math.h"
        "|" "ctype.h"
        "|" "sys/limits.h"
        "|" "sys/fcntl.h"
        "|" "sys/dirent.h" "|";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zInteractv_Add1Test0[] =
       "-d /etc/conf/kconfig.d";
tSCC zInteractv_Add1Test1[] =
       "-n \"`grep _POSIX_VERSION /usr/include/sys/unistd.h`\"";

#define    INTERACTV_ADD1_TEST_CT  2
tTestDesc aInteractv_Add1Tests[] = {
    { TT_TEST,   zInteractv_Add1Test0, 0 /* unused */ },
    { TT_TEST,   zInteractv_Add1Test1, 0 /* unused */ }, };

/*
 *  Fix Command Arguments for Interactv_Add1
 */
const char* apzInteractv_Add1Patch[] = { "sed",
    "-e" "s/!defined(__STDC__) && !defined(_POSIX_SOURCE)/!defined(_POSIX_SOURCE)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  30 - Interactv_Add2 fix
 */
tSCC zInteractv_Add2Name[] =
     "Interactv_Add2";
/*
 *  File name selection pattern
 */
tSCC zInteractv_Add2List[] =
        "|" "math.h" "|";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zInteractv_Add2Test0[] =
       "-d /etc/conf/kconfig.d";
tSCC zInteractv_Add2Test1[] =
       "-n \"`grep _POSIX_VERSION /usr/include/sys/unistd.h`\"";

#define    INTERACTV_ADD2_TEST_CT  2
tTestDesc aInteractv_Add2Tests[] = {
    { TT_TEST,   zInteractv_Add2Test0, 0 /* unused */ },
    { TT_TEST,   zInteractv_Add2Test1, 0 /* unused */ }, };

/*
 *  Fix Command Arguments for Interactv_Add2
 */
const char* apzInteractv_Add2Patch[] = { "sed",
    "-e" "s/fmod(double)/fmod(double, double)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  31 - Interactv_Add3 fix
 */
tSCC zInteractv_Add3Name[] =
     "Interactv_Add3";
/*
 *  File name selection pattern
 */
tSCC zInteractv_Add3List[] =
        "|" "sys/limits.h" "|";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zInteractv_Add3Test0[] =
       "-d /etc/conf/kconfig.d";
tSCC zInteractv_Add3Test1[] =
       "-n \"`grep _POSIX_VERSION /usr/include/sys/unistd.h`\"";

#define    INTERACTV_ADD3_TEST_CT  2
tTestDesc aInteractv_Add3Tests[] = {
    { TT_TEST,   zInteractv_Add3Test0, 0 /* unused */ },
    { TT_TEST,   zInteractv_Add3Test1, 0 /* unused */ }, };

/*
 *  Fix Command Arguments for Interactv_Add3
 */
const char* apzInteractv_Add3Patch[] = { "sed",
    "-e" "/CHILD_MAX/s,/\\* Max, Max,",
    "-e" "/OPEN_MAX/s,/\\* Max, Max,",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  32 - Io_Def_Quotes fix
 */
tSCC zIo_Def_QuotesName[] =
     "Io_Def_Quotes";
/*
 *  File name selection pattern
 */
#define zIo_Def_QuotesList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zIo_Def_QuotesSelect0[] =
       "[ \t]_IO[A-Z]*[ \t]*\\([A-Za-z]";

#define    IO_DEF_QUOTES_TEST_CT  1
tTestDesc aIo_Def_QuotesTests[] = {
    { TT_EGREP,  zIo_Def_QuotesSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Io_Def_Quotes
 */
const char* apzIo_Def_QuotesPatch[] = { "sed",
    "-e" "s/\\([ \t]_IO[A-Z]*[ \t]*(\\)\\([A-Za-z]\\),/\\1'\\2',/",
    "-e" "/#[ \t]*define[ \t]*[ \t]_IO/s/'\\([cgxtf]\\)'/\\1/g",
    "-e" "/#[ \t]*define[ \t]*[ \t]DESIOC/s/'\\([cdgx]\\)'/\\1/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  33 - Ioctl_Fix_Ctrl fix
 */
tSCC zIoctl_Fix_CtrlName[] =
     "Ioctl_Fix_Ctrl";
/*
 *  File name selection pattern
 */
#define zIoctl_Fix_CtrlList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zIoctl_Fix_CtrlSelect0[] =
       "CTRL[ \t]";

#define    IOCTL_FIX_CTRL_TEST_CT  1
tTestDesc aIoctl_Fix_CtrlTests[] = {
    { TT_EGREP,  zIoctl_Fix_CtrlSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Ioctl_Fix_Ctrl
 */
const char* apzIoctl_Fix_CtrlPatch[] = { "sed",
    "-e" "/[^A-Z0-9_]CTRL[ \t]*(/s/\\([^']\\))/'\\1')/",
    "-e" "/[^A-Z0-9]_CTRL[ \t]*(/s/\\([^']\\))/'\\1')/",
    "-e" "/#[ \t]*define[ \t]*[ \t]CTRL/s/'\\([cgx]\\)'/\\1/g",
    "-e" "/#[ \t]*define[ \t]*[ \t]_CTRL/s/'\\([cgx]\\)'/\\1/g",
    "-e" "/#[ \t]*define[ \t]*[ \t]BSD43_CTRL/s/'\\([cgx]\\)'/\\1/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  34 - Ip_Missing_Semi fix
 */
tSCC zIp_Missing_SemiName[] =
     "Ip_Missing_Semi";
/*
 *  File name selection pattern
 */
tSCC zIp_Missing_SemiList[] =
        "|" "netinet/ip.h" "|";
#define IP_MISSING_SEMI_TEST_CT  0
#define aIp_Missing_SemiTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Ip_Missing_Semi
 */
const char* apzIp_Missing_SemiPatch[] = { "sed",
    "-e" "/^struct/,/^};/s/}$/};/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  35 - Irix_Bogus_Cxx_Cmnt fix
 */
tSCC zIrix_Bogus_Cxx_CmntName[] =
     "Irix_Bogus_Cxx_Cmnt";
/*
 *  File name selection pattern
 */
tSCC zIrix_Bogus_Cxx_CmntList[] =
        "|" "elf_abi.h"
        "|" "elf.h" "|";
#define IRIX_BOGUS_CXX_CMNT_TEST_CT  0
#define aIrix_Bogus_Cxx_CmntTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Irix_Bogus_Cxx_Cmnt
 */
const char* apzIrix_Bogus_Cxx_CmntPatch[] = { "sed",
    "-e" "s@\"/\\*\"\\*/@\"//\"@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  36 - Irix_Multiline_Cmnt fix
 */
tSCC zIrix_Multiline_CmntName[] =
     "Irix_Multiline_Cmnt";
/*
 *  File name selection pattern
 */
tSCC zIrix_Multiline_CmntList[] =
        "|" "sys/types.h" "|";
#define IRIX_MULTILINE_CMNT_TEST_CT  0
#define aIrix_Multiline_CmntTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Irix_Multiline_Cmnt
 */
const char* apzIrix_Multiline_CmntPatch[] = { "sed",
    "-e" "s@type of the result@type of the result */@",
    "-e" "s@of the sizeof@/* of the sizeof@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  37 - Irix_Sockaddr fix
 */
tSCC zIrix_SockaddrName[] =
     "Irix_Sockaddr";
/*
 *  File name selection pattern
 */
tSCC zIrix_SockaddrList[] =
        "|" "rpc/auth.h" "|";

/*
 *  content selection pattern
 */
tSCC zIrix_SockaddrSelect0[] =
       "authdes_create.*struct sockaddr";

#define    IRIX_SOCKADDR_TEST_CT  1
tTestDesc aIrix_SockaddrTests[] = {
    { TT_EGREP,  zIrix_SockaddrSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Irix_Sockaddr
 */
const char* apzIrix_SockaddrPatch[] = { "sed",
    "-e" "/authdes_create.*struct sockaddr/i\\\n"
       "struct sockaddr;\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  38 - Irix_Struct__File fix
 */
tSCC zIrix_Struct__FileName[] =
     "Irix_Struct__File";
/*
 *  File name selection pattern
 */
tSCC zIrix_Struct__FileList[] =
        "|" "rpc/xdr.h" "|";
#define IRIX_STRUCT__FILE_TEST_CT  0
#define aIrix_Struct__FileTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Irix_Struct__File
 */
const char* apzIrix_Struct__FilePatch[] = { "sed",
    "-e" "/xdrstdio_create.*struct __file_s/i\\\n"
       "struct __file_s;\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  39 - Isc_Fmod fix
 */
tSCC zIsc_FmodName[] =
     "Isc_Fmod";
/*
 *  File name selection pattern
 */
tSCC zIsc_FmodList[] =
        "|" "math.h" "|";

/*
 *  content selection pattern
 */
tSCC zIsc_FmodSelect0[] =
       "fmod\\(double\\)";

#define    ISC_FMOD_TEST_CT  1
tTestDesc aIsc_FmodTests[] = {
    { TT_EGREP,  zIsc_FmodSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Isc_Fmod
 */
const char* apzIsc_FmodPatch[] = { "sed",
    "-e" "s/fmod(double)/fmod(double, double)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  40 - Motorola_Nested fix
 */
tSCC zMotorola_NestedName[] =
     "Motorola_Nested";
/*
 *  File name selection pattern
 */
tSCC zMotorola_NestedList[] =
        "|" "limits.h"
        "|" "sys/limits.h" "|";
#define MOTOROLA_NESTED_TEST_CT  0
#define aMotorola_NestedTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Motorola_Nested
 */
const char* apzMotorola_NestedPatch[] = { "sed",
    "-e" "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*/\\* max # bytes atomic in write to a\\)$@\\1 */@",
    "-e" "s@\\(/\\*#define\tHUGE_VAL\t3.40282346638528860e+38 \\)\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  41 - Isc_Sys_Limits fix
 */
tSCC zIsc_Sys_LimitsName[] =
     "Isc_Sys_Limits";
/*
 *  File name selection pattern
 */
tSCC zIsc_Sys_LimitsList[] =
        "|" "sys/limits.h" "|";

/*
 *  content selection pattern
 */
tSCC zIsc_Sys_LimitsSelect0[] =
       "CHILD_MAX";

#define    ISC_SYS_LIMITS_TEST_CT  1
tTestDesc aIsc_Sys_LimitsTests[] = {
    { TT_EGREP,  zIsc_Sys_LimitsSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Isc_Sys_Limits
 */
const char* apzIsc_Sys_LimitsPatch[] = { "sed",
    "-e" "/CHILD_MAX/s,/\\* Max, Max,",
    "-e" "/OPEN_MAX/s,/\\* Max, Max,",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  42 - Kandr_Concat fix
 */
tSCC zKandr_ConcatName[] =
     "Kandr_Concat";
/*
 *  File name selection pattern
 */
tSCC zKandr_ConcatList[] =
        "|" "sparc/asm_linkage.h"
        "|" "sun3/asm_linkage.h"
        "|" "sun3x/asm_linkage.h"
        "|" "sun4/asm_linkage.h"
        "|" "sun4c/asm_linkage.h"
        "|" "sun4m/asm_linkage.h"
        "|" "sun4c/debug/asm_linkage.h"
        "|" "sun4m/debug/asm_linkage.h"
        "|" "arm/as_support.h"
        "|" "arm/mc_type.h"
        "|" "arm/xcb.h"
        "|" "dev/chardefmac.h"
        "|" "dev/ps_irq.h"
        "|" "dev/screen.h"
        "|" "dev/scsi.h"
        "|" "sys/tty.h"
        "|" "Xm.acorn/XmP.h"
        "|" "bsd43/bsd43_.h" "|";

/*
 *  content selection pattern
 */
tSCC zKandr_ConcatSelect0[] =
       "/\\*\\*/";

#define    KANDR_CONCAT_TEST_CT  1
tTestDesc aKandr_ConcatTests[] = {
    { TT_EGREP,  zKandr_ConcatSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Kandr_Concat
 */
const char* apzKandr_ConcatPatch[] = { "sed",
    "-e" "s|/\\*\\*/| ## |g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  43 - Limits_Ifndefs fix
 */
tSCC zLimits_IfndefsName[] =
     "Limits_Ifndefs";
/*
 *  File name selection pattern
 */
tSCC zLimits_IfndefsList[] =
        "|" "limits.h" "|";

/*
 *  content bypass pattern
 */
tSCC zLimits_IfndefsBypass0[] =
       "ifndef[ \t]+FLT_MIN";

#define    LIMITS_IFNDEFS_TEST_CT  1
tTestDesc aLimits_IfndefsTests[] = {
    { TT_NEGREP, zLimits_IfndefsBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for Limits_Ifndefs
 */
const char* apzLimits_IfndefsPatch[] = { "sed",
    "-e" "/[ \t]FLT_MIN[ \t]/i\\\n"
       "#ifndef FLT_MIN\n",
    "-e" "/[ \t]FLT_MIN[ \t]/a\\\n"
       "#endif\n",
    "-e" "/[ \t]FLT_MAX[ \t]/i\\\n"
       "#ifndef FLT_MAX\n",
    "-e" "/[ \t]FLT_MAX[ \t]/a\\\n"
       "#endif\n",
    "-e" "/[ \t]FLT_DIG[ \t]/i\\\n"
       "#ifndef FLT_DIG\n",
    "-e" "/[ \t]FLT_DIG[ \t]/a\\\n"
       "#endif\n",
    "-e" "/[ \t]DBL_MIN[ \t]/i\\\n"
       "#ifndef DBL_MIN\n",
    "-e" "/[ \t]DBL_MIN[ \t]/a\\\n"
       "#endif\n",
    "-e" "/[ \t]DBL_MAX[ \t]/i\\\n"
       "#ifndef DBL_MAX\n",
    "-e" "/[ \t]DBL_MAX[ \t]/a\\\n"
       "#endif\n",
    "-e" "/[ \t]DBL_DIG[ \t]/i\\\n"
       "#ifndef DBL_DIG\n",
    "-e" "/[ \t]DBL_DIG[ \t]/a\\\n"
       "#endif\n",
    "-e" "/^\\(\\/\\*#define\tHUGE_VAL\t3\\.[0-9e+]* *\\)\\/\\*/s//\\1/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  44 - Lynx_Void_Int fix
 */
tSCC zLynx_Void_IntName[] =
     "Lynx_Void_Int";
/*
 *  File name selection pattern
 */
tSCC zLynx_Void_IntList[] =
        "|" "curses.h" "|";

/*
 *  content selection pattern
 */
tSCC zLynx_Void_IntSelect0[] =
       "#[ \t]*define[ \t]+void[ \t]+int";

#define    LYNX_VOID_INT_TEST_CT  1
tTestDesc aLynx_Void_IntTests[] = {
    { TT_EGREP,  zLynx_Void_IntSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Lynx_Void_Int
 */
const char* apzLynx_Void_IntPatch[] = { "sed",
    "-e" "/#[ \t]*define[ \t][ \t]*void[ \t]int/d",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  45 - Lynxos_Fcntl_Proto fix
 */
tSCC zLynxos_Fcntl_ProtoName[] =
     "Lynxos_Fcntl_Proto";
/*
 *  File name selection pattern
 */
tSCC zLynxos_Fcntl_ProtoList[] =
        "|" "fcntl.h" "|";
#define LYNXOS_FCNTL_PROTO_TEST_CT  0
#define aLynxos_Fcntl_ProtoTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Lynxos_Fcntl_Proto
 */
const char* apzLynxos_Fcntl_ProtoPatch[] = { "sed",
    "-e" "s/\\(fcntl.*(int, int, \\)int)/\\1...)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  46 - M88k_Bad_Hypot_Opt fix
 */
tSCC zM88k_Bad_Hypot_OptName[] =
     "M88k_Bad_Hypot_Opt";
/*
 *  File name selection pattern
 */
tSCC zM88k_Bad_Hypot_OptList[] =
        "|" "math.h" "|";
#define M88K_BAD_HYPOT_OPT_TEST_CT  0
#define aM88k_Bad_Hypot_OptTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for M88k_Bad_Hypot_Opt
 */
const char* apzM88k_Bad_Hypot_OptPatch[] = { "sed",
    "-e" "s/extern double floor(), ceil(), fmod(), fabs();/extern double floor(), ceil(), fmod(), fabs _PARAMS((double));/",
    "-e" "/^extern double hypot();$/a\\\n"
       "\\/* Workaround a stupid Motorola optimization if one\\\n"
       "   of x or y is 0.0 and the other is negative!  *\\/\\\n"
       "#ifdef __STDC__\\\n"
       "static __inline__ double fake_hypot (double x, double y)\\\n"
       "#else\\\n"
       "static __inline__ double fake_hypot (x, y)\\\n"
       "\tdouble x, y;\\\n"
       "#endif\\\n"
       "{\\\n"
       "\treturn fabs (hypot (x, y));\\\n"
       "}\\\n"
       "#define hypot\tfake_hypot\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  47 - M88k_Bad_S_If fix
 */
tSCC zM88k_Bad_S_IfName[] =
     "M88k_Bad_S_If";
/*
 *  File name selection pattern
 */
tSCC zM88k_Bad_S_IfList[] =
        "|" "sys/stat.h" "|";

/*
 *  content selection pattern
 */
tSCC zM88k_Bad_S_IfSelect0[] =
       "#define[ \t]+S_IS[A-Z]*(m)[ \t]";

#define    M88K_BAD_S_IF_TEST_CT  1
tTestDesc aM88k_Bad_S_IfTests[] = {
    { TT_EGREP,  zM88k_Bad_S_IfSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for M88k_Bad_S_If
 */
const char* apzM88k_Bad_S_IfPatch[] = { "sed",
    "-e" "s/^\\(#define[ \t]*S_IS[A-Z]*(m)\\)[ \t]*(m[ \t]*&[ \t]*\\(S_IF[A-Z][A-Z][A-Z][A-Z]*\\)[ \t]*)/\\1 (((m)\\&S_IFMT)==\\2)/",
    "-e" "s/^\\(#define[ \t]*S_IS[A-Z]*(m)\\)[ \t]*(m[ \t]*&[ \t]*\\(0[0-9]*\\)[ \t]*)/\\1 (((m)\\&S_IFMT)==\\2)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  48 - M88k_Multi_Incl fix
 */
tSCC zM88k_Multi_InclName[] =
     "M88k_Multi_Incl";
/*
 *  File name selection pattern
 */
tSCC zM88k_Multi_InclList[] =
        "|" "time.h" "|";

/*
 *  content bypass pattern
 */
tSCC zM88k_Multi_InclBypass0[] =
       "#ifndef";

#define    M88K_MULTI_INCL_TEST_CT  1
tTestDesc aM88k_Multi_InclTests[] = {
    { TT_NEGREP, zM88k_Multi_InclBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for M88k_Multi_Incl
 */
const char* apzM88k_Multi_InclPatch[] = { "sh", "-c",
    "echo Fixing $file, to protect against multiple inclusion. >&2\n"
       "      cpp_wrapper=`echo $file | sed -e 's,\\.,_,g' -e 's,/,_,g'`\n"
       "      sed -e \"1i\\\n"
       "#ifndef __GCC_GOT_${cpp_wrapper}_\\\n"
       "#define __GCC_GOT_${cpp_wrapper}_\\\n"
       "\" \\\n"
       "\t-e \"$a\\\n"
       "#endif /* ! __GCC_GOT_${cpp_wrapper}_ */\n"
       "\"",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  49 - Machine_Name fix
 */
tSCC zMachine_NameName[] =
     "Machine_Name";
/*
 *  File name selection pattern
 */
#define zMachine_NameList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zMachine_NameSelect0[] =
       "^#[ \t]*(if|elif).*[^a-zA-Z0-9_](M32|_*(MIPSE[LB]|SYSTYPE_[A-Z0-9]|[Rr][34]000|host_mips|i386|mips)($|[^a-zA-Z0-9_])|bsd4|is68k|m[68]8k|mc680|news|ns32000|pdp11|pyr|sel|sony_news|sparc|sun|tahoe|tower|u370|u3b|unix|vax)";

#define    MACHINE_NAME_TEST_CT  1
tTestDesc aMachine_NameTests[] = {
    { TT_EGREP,  zMachine_NameSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Machine_Name
 */
const char* apzMachine_NamePatch[] = { "sed",
    "-e" ":loop\n"
       "/\\\\$/N\n"
       "s/\\\\$/\\\\+++fixinc_eol+++/\n"
       "/\\\\$/b loop\n"
       "s/\\\\+++fixinc_eol+++/\\\\/g\n"
       "/#[\t ]*[el]*if/ {\n"
       "\ts/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g\n"
       "\ts/ M32 / __M32__ /g\n"
       "\ts/ _*MIPSE\\([LB]\\) / __MIPSE\\1__ /g\n"
       "\ts/ _*SYSTYPE_\\([A-Z0-9]*\\) / __SYSTYPE_\\1__ /g\n"
       "\ts/ _*\\([Rr][34]\\)000 / __\\1000__ /g\n"
       "\ts/ _*host_mips / __host_mips__ /g\n"
       "\ts/ _*i386 / __i386__ /g\n"
       "\ts/ _*mips / __mips__ /g\n"
       "\ts/ bsd4\\([0-9]\\) / __bsd4\\1__ /g\n"
       "\ts/ is68k / __is68k__ /g\n"
       "\ts/ m68k / __m68k__ /g\n"
       "\ts/ m88k / __m88k__ /g\n"
       "\ts/ mc680\\([0-9]\\)0 / __mc680\\10__ /g\n"
       "\ts/ news\\([0-9]*\\) / __news\\1__ /g\n"
       "\ts/ ns32000 / __ns32000__ /g\n"
       "\ts/ pdp11 / __pdp11__ /g\n"
       "\ts/ pyr / __pyr__ /g\n"
       "\ts/ sel / __sel__ /g\n"
       "\ts/ sony_news / __sony_news__ /g\n"
       "\ts/ sparc / __sparc__ /g\n"
       "\ts/ sun\\([a-z0-9]*\\) / __sun\\1__ /g\n"
       "\ts/ tahoe / __tahoe__ /g\n"
       "\ts/ tower\\([_0-9]*\\) / __tower\\1__ /g\n"
       "\ts/ u370 / __u370__ /g\n"
       "\ts/ u3b\\([0-9]*\\) / __u3b\\1__ /g\n"
       "\ts/ unix / __unix__ /g\n"
       "\ts/ vax / __vax__ /g\n"
       "\ts/ \\([a-zA-Z0-9_][a-zA-Z0-9_]*\\) /\\1/g\n"
       "\t}",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  50 - Math_Exception fix
 */
tSCC zMath_ExceptionName[] =
     "Math_Exception";
/*
 *  File name selection pattern
 */
tSCC zMath_ExceptionList[] =
        "|" "math.h" "|";

/*
 *  content selection pattern
 */
tSCC zMath_ExceptionSelect0[] =
       "struct exception";

#define    MATH_EXCEPTION_TEST_CT  1
tTestDesc aMath_ExceptionTests[] = {
    { TT_EGREP,  zMath_ExceptionSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Math_Exception
 */
const char* apzMath_ExceptionPatch[] = { "sed",
    "-e" "/struct exception/i\\\n"
       "#ifdef __cplusplus\\\n"
       "#define exception __math_exception\\\n"
       "#endif\n",
    "-e" "/struct exception/a\\\n"
       "#ifdef __cplusplus\\\n"
       "#undef exception\\\n"
       "#endif\n",
    "-e" "/matherr/i\\\n"
       "#ifdef __cplusplus\\\n"
       "#define exception __math_exception\\\n"
       "#endif\n",
    "-e" "/matherr/a\\\n"
       "#ifdef __cplusplus\\\n"
       "#undef exception\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  51 - Math_Gcc_Ifndefs fix
 */
tSCC zMath_Gcc_IfndefsName[] =
     "Math_Gcc_Ifndefs";
/*
 *  File name selection pattern
 */
tSCC zMath_Gcc_IfndefsList[] =
        "|" "math.h" "|";
#define MATH_GCC_IFNDEFS_TEST_CT  0
#define aMath_Gcc_IfndefsTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Math_Gcc_Ifndefs
 */
const char* apzMath_Gcc_IfndefsPatch[] = { "sh", "-c",
    " dbl_max_def=\"`egrep 'define[ \t]+DBL_MAX[ \t]+.*' ${SRCDIR}/float.h 2>/dev/null`\"\n"
       "\n"
       "\tif ( test -n \"${dbl_max_def}\" \\\n"
       "\t\t-a -n \"`egrep '#define[ \t]*HUGE_VAL[ \t]+DBL_MAX' $file`\" \\\n"
       "\t\t-a -z \"`egrep '#define[ \t]+DBL_MAX[ \t]+' $file`\"\n"
       "\t   ) > /dev/null 2>&1\n"
       "\tthen sed -e '/define[ \t]HUGE_VAL[ \t]/i\\\n"
       "#ifndef HUGE_VAL\n"
       "' \\\n"
       "\t-e '/define[ \t]HUGE_VAL[ \t]/a\\\n"
       "#endif\n"
       "'\\\n"
       "\t-e \"/define[ \t]HUGE_VAL[ \t]DBL_MAX/s/DBL_MAX/$dbl_max_def/\"\n"
       "\telse sed -e '/define[ \t]HUGE_VAL[ \t]/i\\\n"
       "#ifndef HUGE_VAL\n"
       "' \\\n"
       "\t-e '/define[ \t]HUGE_VAL[ \t]/a\\\n"
       "#endif\n"
       "'\n"
       "\tfi",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  52 - Motorola_Stupid_Opt fix
 */
tSCC zMotorola_Stupid_OptName[] =
     "Motorola_Stupid_Opt";
/*
 *  File name selection pattern
 */
tSCC zMotorola_Stupid_OptList[] =
        "|" "math.h" "|";

/*
 *  content selection pattern
 */
tSCC zMotorola_Stupid_OptSelect0[] =
       "^extern double hypot();$";

#define    MOTOROLA_STUPID_OPT_TEST_CT  1
tTestDesc aMotorola_Stupid_OptTests[] = {
    { TT_EGREP,  zMotorola_Stupid_OptSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Motorola_Stupid_Opt
 */
const char* apzMotorola_Stupid_OptPatch[] = { "sed",
    "-e" "/^extern double hypot();$/a\\\n"
       "\\/* Workaround a stupid Motorola optimization if one\\\n"
       "   of x or y is 0.0 and the other is negative!  *\\/\\\n"
       "#ifdef __STDC__\\\n"
       "static __inline__ double fake_hypot (double x, double y)\\\n"
       "#else\\\n"
       "static __inline__ double fake_hypot (x, y)\\\n"
       "\tdouble x, y;\\\n"
       "#endif\\\n"
       "{\\\n"
       "\treturn fabs (hypot (x, y));\\\n"
       "}\\\n"
       "#define hypot\tfake_hypot\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  53 - Nested_Comment fix
 */
tSCC zNested_CommentName[] =
     "Nested_Comment";
/*
 *  File name selection pattern
 */
tSCC zNested_CommentList[] =
        "|" "rpc/rpc.h" "|";
#define NESTED_COMMENT_TEST_CT  0
#define aNested_CommentTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Nested_Comment
 */
const char* apzNested_CommentPatch[] = { "sed",
    "-e" "s@^\\(/\\*.*rpc/auth_des.h>.*\\)/\\*@\\1*/ /*@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  54 - News_Os_Recursion fix
 */
tSCC zNews_Os_RecursionName[] =
     "News_Os_Recursion";
/*
 *  File name selection pattern
 */
tSCC zNews_Os_RecursionList[] =
        "|" "stdlib.h" "|";

/*
 *  content selection pattern
 */
tSCC zNews_Os_RecursionSelect0[] =
       "#include <stdlib.h>";

#define    NEWS_OS_RECURSION_TEST_CT  1
tTestDesc aNews_Os_RecursionTests[] = {
    { TT_EGREP,  zNews_Os_RecursionSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for News_Os_Recursion
 */
const char* apzNews_Os_RecursionPatch[] = { "sed",
    "-e" "/^#include <stdlib.h>/i\\\n"
       "#ifdef BOGUS_RECURSION\n",
    "-e" "/^#include <stdlib.h>/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  55 - Next_Math_Prefix fix
 */
tSCC zNext_Math_PrefixName[] =
     "Next_Math_Prefix";
/*
 *  File name selection pattern
 */
tSCC zNext_Math_PrefixList[] =
        "|" "ansi/math.h" "|";

/*
 *  content selection pattern
 */
tSCC zNext_Math_PrefixSelect0[] =
       "^extern.*double.*__const__.*";

#define    NEXT_MATH_PREFIX_TEST_CT  1
tTestDesc aNext_Math_PrefixTests[] = {
    { TT_EGREP,  zNext_Math_PrefixSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Next_Math_Prefix
 */
const char* apzNext_Math_PrefixPatch[] = { "sed",
    "-e" "/^extern.*double.*__const__.*sqrt(/s/__const__//",
    "-e" "/^extern.*double.*__const__.*fabs(/s/__const__//",
    "-e" "/^extern.*double.*__const__.*cos(/s/__const__//",
    "-e" "/^extern.*double.*__const__.*hypot(/s/__const__//",
    "-e" "/^extern.*double.*__const__.*sin(/s/__const__//",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  56 - Next_Template fix
 */
tSCC zNext_TemplateName[] =
     "Next_Template";
/*
 *  File name selection pattern
 */
tSCC zNext_TemplateList[] =
        "|" "bsd/libc.h" "|";

/*
 *  content selection pattern
 */
tSCC zNext_TemplateSelect0[] =
       "template";

#define    NEXT_TEMPLATE_TEST_CT  1
tTestDesc aNext_TemplateTests[] = {
    { TT_EGREP,  zNext_TemplateSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Next_Template
 */
const char* apzNext_TemplatePatch[] = { "sed",
    "-e" "/\\(.*template\\)/s/template//",
    "-e" "/extern.*volatile.*void.*abort/s/volatile//",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  57 - Next_Volitile fix
 */
tSCC zNext_VolitileName[] =
     "Next_Volitile";
/*
 *  File name selection pattern
 */
tSCC zNext_VolitileList[] =
        "|" "ansi/stdlib.h" "|";

/*
 *  content selection pattern
 */
tSCC zNext_VolitileSelect0[] =
       "volatile";

#define    NEXT_VOLITILE_TEST_CT  1
tTestDesc aNext_VolitileTests[] = {
    { TT_EGREP,  zNext_VolitileSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Next_Volitile
 */
const char* apzNext_VolitilePatch[] = { "sed",
    "-e" "/extern.*volatile.*void.*exit/s/volatile//",
    "-e" "/extern.*volatile.*void.*abort/s/volatile//",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  58 - Next_Wait_Union fix
 */
tSCC zNext_Wait_UnionName[] =
     "Next_Wait_Union";
/*
 *  File name selection pattern
 */
tSCC zNext_Wait_UnionList[] =
        "|" "sys/wait.h" "|";

/*
 *  content selection pattern
 */
tSCC zNext_Wait_UnionSelect0[] =
       "wait\\(union wait";

#define    NEXT_WAIT_UNION_TEST_CT  1
tTestDesc aNext_Wait_UnionTests[] = {
    { TT_EGREP,  zNext_Wait_UnionSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Next_Wait_Union
 */
const char* apzNext_Wait_UnionPatch[] = { "sed",
    "-e" "s@wait(union wait@wait(void@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  59 - No_Double_Slash fix
 */
tSCC zNo_Double_SlashName[] =
     "No_Double_Slash";
/*
 *  File name selection pattern
 */
#define zNo_Double_SlashList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zNo_Double_SlashSelect0[] =
       "//[^*]";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zNo_Double_SlashTest0[] =
       "-z \"`echo ${file}|egrep '++|\\.hh$|\\.H$'`\"";

#define    NO_DOUBLE_SLASH_TEST_CT  2
tTestDesc aNo_Double_SlashTests[] = {
    { TT_TEST,   zNo_Double_SlashTest0, 0 /* unused */ },
    { TT_EGREP,  zNo_Double_SlashSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for No_Double_Slash
 */
const char* apzNo_Double_SlashPatch[] = { "sed",
    "-e" "/\\/\\/[^*]/s|//\\(.*\\)$|/* \\1 */|",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  60 - Nodeent_Syntax fix
 */
tSCC zNodeent_SyntaxName[] =
     "Nodeent_Syntax";
/*
 *  File name selection pattern
 */
tSCC zNodeent_SyntaxList[] =
        "|" "netdnet/dnetdb.h" "|";
#define NODEENT_SYNTAX_TEST_CT  0
#define aNodeent_SyntaxTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Nodeent_Syntax
 */
const char* apzNodeent_SyntaxPatch[] = { "sed",
    "-e" "s/char.*na_addr *$/char *na_addr;/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  61 - Osf_Namespace_A fix
 */
tSCC zOsf_Namespace_AName[] =
     "Osf_Namespace_A";
/*
 *  File name selection pattern
 */
tSCC zOsf_Namespace_AList[] =
        "|" "reg_types.h"
        "|" "sys/lc_core.h" "|";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zOsf_Namespace_ATest0[] =
       "-r reg_types.h-a -r sys/lc_core.h-a -n \"`grep '} regex_t;' reg_types.h`\"-a -z \"`grep __regex_t regex.h`\"";

#define    OSF_NAMESPACE_A_TEST_CT  1
tTestDesc aOsf_Namespace_ATests[] = {
    { TT_TEST,   zOsf_Namespace_ATest0, 0 /* unused */ }, };

/*
 *  Fix Command Arguments for Osf_Namespace_A
 */
const char* apzOsf_Namespace_APatch[] = { "sed",
    "-e" "s/regex_t/__regex_t/g",
    "-e" "s/regoff_t/__regoff_t/g",
    "-e" "s/regmatch_t/__regmatch_t/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  62 - Osf_Namespace_B fix
 */
tSCC zOsf_Namespace_BName[] =
     "Osf_Namespace_B";
/*
 *  File name selection pattern
 */
tSCC zOsf_Namespace_BList[] =
        "|" "regex.h" "|";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zOsf_Namespace_BTest0[] =
       "-r reg_types.h-a -r sys/lc_core.h-a -n \"`grep '} regex_t;' reg_types.h`\"-a -z \"`grep __regex_t regex.h`\"";

#define    OSF_NAMESPACE_B_TEST_CT  1
tTestDesc aOsf_Namespace_BTests[] = {
    { TT_TEST,   zOsf_Namespace_BTest0, 0 /* unused */ }, };

/*
 *  Fix Command Arguments for Osf_Namespace_B
 */
const char* apzOsf_Namespace_BPatch[] = { "sed",
    "-e" "/#include <reg_types.h>/a\\\n"
       "typedef __regex_t\tregex_t;\\\n"
       "typedef __regoff_t\tregoff_t;\\\n"
       "typedef __regmatch_t\tregmatch_t;\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  63 - Pthread_Page_Size fix
 */
tSCC zPthread_Page_SizeName[] =
     "Pthread_Page_Size";
/*
 *  File name selection pattern
 */
tSCC zPthread_Page_SizeList[] =
        "|" "pthread.h" "|";

/*
 *  content selection pattern
 */
tSCC zPthread_Page_SizeSelect0[] =
       "^int __page_size";

#define    PTHREAD_PAGE_SIZE_TEST_CT  1
tTestDesc aPthread_Page_SizeTests[] = {
    { TT_EGREP,  zPthread_Page_SizeSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Pthread_Page_Size
 */
const char* apzPthread_Page_SizePatch[] = { "sed",
    "-e" "s/^int __page_size/extern int __page_size/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  64 - Rs6000_Double fix
 */
tSCC zRs6000_DoubleName[] =
     "Rs6000_Double";
/*
 *  File name selection pattern
 */
tSCC zRs6000_DoubleList[] =
        "|" "math.h" "|";

/*
 *  content selection pattern
 */
tSCC zRs6000_DoubleSelect0[] =
       "[^a-zA-Z_]class\\(";

#define    RS6000_DOUBLE_TEST_CT  1
tTestDesc aRs6000_DoubleTests[] = {
    { TT_EGREP,  zRs6000_DoubleSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Rs6000_Double
 */
const char* apzRs6000_DoublePatch[] = { "sed",
    "-e" "/class[(]/i\\\n"
       "#ifndef __cplusplus\n",
    "-e" "/class[(]/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  65 - Rs6000_Fchmod fix
 */
tSCC zRs6000_FchmodName[] =
     "Rs6000_Fchmod";
/*
 *  File name selection pattern
 */
tSCC zRs6000_FchmodList[] =
        "|" "sys/stat.h" "|";

/*
 *  content selection pattern
 */
tSCC zRs6000_FchmodSelect0[] =
       "fchmod\\(char";

#define    RS6000_FCHMOD_TEST_CT  1
tTestDesc aRs6000_FchmodTests[] = {
    { TT_EGREP,  zRs6000_FchmodSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Rs6000_Fchmod
 */
const char* apzRs6000_FchmodPatch[] = { "sed",
    "-e" "s/fchmod(char \\*/fchmod(int/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  66 - Rs6000_Param fix
 */
tSCC zRs6000_ParamName[] =
     "Rs6000_Param";
/*
 *  File name selection pattern
 */
tSCC zRs6000_ParamList[] =
        "|" "stdio.h"
        "|" "unistd.h" "|";
#define RS6000_PARAM_TEST_CT  0
#define aRs6000_ParamTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Rs6000_Param
 */
const char* apzRs6000_ParamPatch[] = { "sed",
    "-e" "s@rename(const char \\*old, const char \\*new)@rename(const char *_old, const char *_new)@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  67 - Sony_Include fix
 */
tSCC zSony_IncludeName[] =
     "Sony_Include";
/*
 *  File name selection pattern
 */
tSCC zSony_IncludeList[] =
        "|" "machine/machparam.h" "|";

/*
 *  content selection pattern
 */
tSCC zSony_IncludeSelect0[] =
       "\"\\.\\./machine/endian.h\"";

#define    SONY_INCLUDE_TEST_CT  1
tTestDesc aSony_IncludeTests[] = {
    { TT_EGREP,  zSony_IncludeSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sony_Include
 */
const char* apzSony_IncludePatch[] = { "sed",
    "-e" "s@\"../machine/endian.h\"@<machine/endian.h>@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  68 - Statsswtch fix
 */
tSCC zStatsswtchName[] =
     "Statsswtch";
/*
 *  File name selection pattern
 */
tSCC zStatsswtchList[] =
        "|" "rpcsvc/rstat.h" "|";

/*
 *  content selection pattern
 */
tSCC zStatsswtchSelect0[] =
       "boottime$";

#define    STATSSWTCH_TEST_CT  1
tTestDesc aStatsswtchTests[] = {
    { TT_EGREP,  zStatsswtchSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Statsswtch
 */
const char* apzStatsswtchPatch[] = { "sed",
    "-e" "s/boottime$/boottime;/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  69 - Stdio_Va_List fix
 */
tSCC zStdio_Va_ListName[] =
     "Stdio_Va_List";
/*
 *  File name selection pattern
 */
tSCC zStdio_Va_ListList[] =
        "|" "stdio.h" "|";
#define STDIO_VA_LIST_TEST_CT  0
#define aStdio_Va_ListTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Stdio_Va_List
 */
const char* apzStdio_Va_ListPatch[] = { "sh", "-c",
    "if ( egrep \"__need___va_list\" $file ) > /dev/null 2>&1 ; then\n"
       "    :\n"
       "  else\n"
       "    echo \"#define __need___va_list\"\n"
       "    echo \"#include <stdarg.h>\"\n"
       "  fi\n"
       "\n"
       "  sed -e 's@ va_list @ __gnuc_va_list @' \\\n"
       "      -e 's@ va_list)@ __gnuc_va_list)@' \\\n"
       "      -e 's@ _BSD_VA_LIST_));@ __gnuc_va_list));@' \\\n"
       "      -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \\\n"
       "      -e 's@ va_list@ __va_list__@' \\\n"
       "      -e 's@\\*va_list@*__va_list__@' \\\n"
       "      -e 's@ __va_list)@ __gnuc_va_list)@' \\\n"
       "      -e 's@GNUC_VA_LIST@GNUC_Va_LIST@' \\\n"
       "      -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \\\n"
       "      -e 's@VA_LIST@DUMMY_VA_LIST@' \\\n"
       "      -e 's@_Va_LIST@_VA_LIST@'",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  70 - Sun_Bogus_Ifdef fix
 */
tSCC zSun_Bogus_IfdefName[] =
     "Sun_Bogus_Ifdef";
/*
 *  File name selection pattern
 */
tSCC zSun_Bogus_IfdefList[] =
        "|" "hsfs/hsfs_spec.h"
        "|" "hsfs/iso_spec.h" "|";

/*
 *  content selection pattern
 */
tSCC zSun_Bogus_IfdefSelect0[] =
       "#ifdef __i386__ || __vax__";

#define    SUN_BOGUS_IFDEF_TEST_CT  1
tTestDesc aSun_Bogus_IfdefTests[] = {
    { TT_EGREP,  zSun_Bogus_IfdefSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sun_Bogus_Ifdef
 */
const char* apzSun_Bogus_IfdefPatch[] = { "sed",
    "-e" "s/\\#ifdef __i386__ || __vax__/\\#if __i386__ || __vax__/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  71 - Sun_Bogus_Ifdef_Sun4c fix
 */
tSCC zSun_Bogus_Ifdef_Sun4cName[] =
     "Sun_Bogus_Ifdef_Sun4c";
/*
 *  File name selection pattern
 */
tSCC zSun_Bogus_Ifdef_Sun4cList[] =
        "|" "hsfs/hsnode.h" "|";

/*
 *  content selection pattern
 */
tSCC zSun_Bogus_Ifdef_Sun4cSelect0[] =
       "#ifdef __i386__ || __sun4c__";

#define    SUN_BOGUS_IFDEF_SUN4C_TEST_CT  1
tTestDesc aSun_Bogus_Ifdef_Sun4cTests[] = {
    { TT_EGREP,  zSun_Bogus_Ifdef_Sun4cSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sun_Bogus_Ifdef_Sun4c
 */
const char* apzSun_Bogus_Ifdef_Sun4cPatch[] = { "sed",
    "-e" "s/\\#ifdef __i386__ || __sun4c__/\\#if __i386__ || __sun4c__/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  72 - Sun_Catmacro fix
 */
tSCC zSun_CatmacroName[] =
     "Sun_Catmacro";
/*
 *  File name selection pattern
 */
tSCC zSun_CatmacroList[] =
        "|" "pixrect/memvar.h" "|";

/*
 *  content selection pattern
 */
tSCC zSun_CatmacroSelect0[] =
       "^#define[ \t]+CAT(a,b)";

#define    SUN_CATMACRO_TEST_CT  1
tTestDesc aSun_CatmacroTests[] = {
    { TT_EGREP,  zSun_CatmacroSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sun_Catmacro
 */
const char* apzSun_CatmacroPatch[] = { "sed",
    "-e" "/^#define[ \t]CAT(a,b)/ i\\\n"
       "#ifdef __STDC__ \\\n"
       "#define CAT(a,b) a##b\\\n"
       "#else\n",
    "-e" "/^#define[ \t]CAT(a,b)/ a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  73 - Sun_Malloc fix
 */
tSCC zSun_MallocName[] =
     "Sun_Malloc";
/*
 *  File name selection pattern
 */
tSCC zSun_MallocList[] =
        "|" "malloc.h" "|";
#define SUN_MALLOC_TEST_CT  0
#define aSun_MallocTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sun_Malloc
 */
const char* apzSun_MallocPatch[] = { "sed",
    "-e" "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g",
    "-e" "s/int[ \t][ \t]*free/void\tfree/g",
    "-e" "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g",
    "-e" "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  74 - Sun_Memcpy fix
 */
tSCC zSun_MemcpyName[] =
     "Sun_Memcpy";
/*
 *  File name selection pattern
 */
tSCC zSun_MemcpyList[] =
        "|" "memory.h" "|";

/*
 *  content selection pattern
 */
tSCC zSun_MemcpySelect0[] =
       "/\\*\t@\\(#\\)(head/memory.h\t50.1\t |memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";

#define    SUN_MEMCPY_TEST_CT  1
tTestDesc aSun_MemcpyTests[] = {
    { TT_EGREP,  zSun_MemcpySelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sun_Memcpy
 */
const char* apzSun_MemcpyPatch[] = { "sed",
    "-e" "1i\\\n"
       "/* This file was generated by fixincludes */\\\n"
       "#ifndef __memory_h__\\\n"
       "#define __memory_h__\\\n"
       "\\\n"
       "#ifdef __STDC__\\\n"
       "extern void *memccpy();\\\n"
       "extern void *memchr();\\\n"
       "extern void *memcpy();\\\n"
       "extern void *memset();\\\n"
       "#else\\\n"
       "extern char *memccpy();\\\n"
       "extern char *memchr();\\\n"
       "extern char *memcpy();\\\n"
       "extern char *memset();\\\n"
       "#endif /* __STDC__ */\\\n"
       "\\\n"
       "extern int memcmp();\\\n"
       "\\\n"
       "#endif /* __memory_h__ */\n",
    "-e" "1,$d",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  75 - Sun_Rusers_Semi fix
 */
tSCC zSun_Rusers_SemiName[] =
     "Sun_Rusers_Semi";
/*
 *  File name selection pattern
 */
tSCC zSun_Rusers_SemiList[] =
        "|" "rpcsvc/rusers.h" "|";

/*
 *  content selection pattern
 */
tSCC zSun_Rusers_SemiSelect0[] =
       "_cnt$";

#define    SUN_RUSERS_SEMI_TEST_CT  1
tTestDesc aSun_Rusers_SemiTests[] = {
    { TT_EGREP,  zSun_Rusers_SemiSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sun_Rusers_Semi
 */
const char* apzSun_Rusers_SemiPatch[] = { "sed",
    "-e" "/^struct/,/^};/s/_cnt$/_cnt;/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  76 - Sun_Signal fix
 */
tSCC zSun_SignalName[] =
     "Sun_Signal";
/*
 *  File name selection pattern
 */
tSCC zSun_SignalList[] =
        "|" "sys/signal.h"
        "|" "signal.h" "|";

/*
 *  content selection pattern
 */
tSCC zSun_SignalSelect0[] =
       "^void\t\\(\\*signal\\(\\)\\)\\(\\);";

#define    SUN_SIGNAL_TEST_CT  1
tTestDesc aSun_SignalTests[] = {
    { TT_EGREP,  zSun_SignalSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Sun_Signal
 */
const char* apzSun_SignalPatch[] = { "sed",
    "-e" "/^void\t(\\*signal())();$/i\\\n"
       "#ifdef __cplusplus\\\n"
       "void\t(*signal(...))(...);\\\n"
       "#else\n",
    "-e" "/^void\t(\\*signal())();$/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  77 - Sun_Xdr_Proto fix
 */
tSCC zSun_Xdr_ProtoName[] =
     "Sun_Xdr_Proto";
/*
 *  File name selection pattern
 */
tSCC zSun_Xdr_ProtoList[] =
        "|" "rpc/xdr.h" "|";
#define SUN_XDR_PROTO_TEST_CT  0
#define aSun_Xdr_ProtoTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sun_Xdr_Proto
 */
const char* apzSun_Xdr_ProtoPatch[] = { "sed",
    "-e" "s/^\\(.*\\)\\*\\(x_.*\\)();\\(.*\\)/\\\n"
       "#ifdef __cplusplus\\\n"
       "\\1*\\2(...);\\3\\\n"
       "#else\\\n"
       "\\1*\\2();\\3\\\n"
       "#endif/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  78 - Sunos_Large_Macro fix
 */
tSCC zSunos_Large_MacroName[] =
     "Sunos_Large_Macro";
/*
 *  File name selection pattern
 */
tSCC zSunos_Large_MacroList[] =
        "|" "sundev/ipi_error.h" "|";
#define SUNOS_LARGE_MACRO_TEST_CT  0
#define aSunos_Large_MacroTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sunos_Large_Macro
 */
const char* apzSunos_Large_MacroPatch[] = { "sh", "-c",
    "echo \"Removing incorrect fix to SunOS <sundev/ipi_error.h>\" >&2\n"
       "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\n"
       "cat > /dev/null",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  79 - Sunos_Matherr_Decl fix
 */
tSCC zSunos_Matherr_DeclName[] =
     "Sunos_Matherr_Decl";
/*
 *  File name selection pattern
 */
tSCC zSunos_Matherr_DeclList[] =
        "|" "math.h" "|";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zSunos_Matherr_DeclTest0[] =
       "\"`fgrep 'struct exception' $file | line`\" != 'struct exception {'";

#define    SUNOS_MATHERR_DECL_TEST_CT  1
tTestDesc aSunos_Matherr_DeclTests[] = {
    { TT_TEST,   zSunos_Matherr_DeclTest0, 0 /* unused */ }, };

/*
 *  Fix Command Arguments for Sunos_Matherr_Decl
 */
const char* apzSunos_Matherr_DeclPatch[] = { "sed",
    "-e" "/matherr/i\\\n"
       "struct exception;\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  80 - Sunos_Strlen fix
 */
tSCC zSunos_StrlenName[] =
     "Sunos_Strlen";
/*
 *  File name selection pattern
 */
tSCC zSunos_StrlenList[] =
        "|" "strings.h" "|";
#define SUNOS_STRLEN_TEST_CT  0
#define aSunos_StrlenTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sunos_Strlen
 */
const char* apzSunos_StrlenPatch[] = { "sed",
    "-e" "s/int[ \t]*strlen();/__SIZE_TYPE__ strlen();/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  81 - Systypes fix
 */
tSCC zSystypesName[] =
     "Systypes";
/*
 *  File name selection pattern
 */
tSCC zSystypesList[] =
        "|" "sys/types.h"
        "|" "stdlib.h"
        "|" "sys/stdtypes.h"
        "|" "stddef.h"
        "|" "memory.h"
        "|" "unistd.h" "|";

/*
 *  content selection pattern
 */
tSCC zSystypesSelect0[] =
       "typedef[ \t]+[a-z_][ \ta-z_]*[ \t](size|ptrdiff|wchar)_t";

#define    SYSTYPES_TEST_CT  1
tTestDesc aSystypesTests[] = {
    { TT_EGREP,  zSystypesSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Systypes
 */
const char* apzSystypesPatch[] = { "sed",
    "-e" "/^[ \t]**[ \t]*typedef unsigned int size_t;/N",
    "-e" "s/^\\([ \t]*\\*[ \t]*typedef unsigned int size_t;\\n[ \t]*\\*\\/\\)/\\1\\\n"
       "#ifndef __SIZE_TYPE__\\\n"
       "#define __SIZE_TYPE__ long unsigned int\\\n"
       "#endif\\\n"
       "typedef __SIZE_TYPE__ size_t;\\\n"
       "/",
    "-e" "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]size_t/i\\\n"
       "#ifndef __SIZE_TYPE__\\\n"
       "#define __SIZE_TYPE__ long unsigned int\\\n"
       "#endif\n",
    "-e" "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]size_t/typedef __SIZE_TYPE__ size_t/",
    "-e" "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/i\\\n"
       "#ifndef __PTRDIFF_TYPE__\\\n"
       "#define __PTRDIFF_TYPE__ long int\\\n"
       "#endif\n",
    "-e" "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/",
    "-e" "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/i\\\n"
       "#ifndef __WCHAR_TYPE__\\\n"
       "#define __WCHAR_TYPE__ int\\\n"
       "#endif\\\n"
       "#ifndef __cplusplus\n",
    "-e" "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/a\\\n"
       "#endif\n",
    "-e" "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/typedef __WCHAR_TYPE__ wchar_t/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  82 - Systypes_For_Aix fix
 */
tSCC zSystypes_For_AixName[] =
     "Systypes_For_Aix";
/*
 *  File name selection pattern
 */
tSCC zSystypes_For_AixList[] =
        "|" "sys/types.h" "|";

/*
 *  content selection pattern
 */
tSCC zSystypes_For_AixSelect0[] =
       "typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t";

/*
 *  content bypass pattern
 */
tSCC zSystypes_For_AixBypass0[] =
       "_GCC_SIZE_T";

#define    SYSTYPES_FOR_AIX_TEST_CT  2
tTestDesc aSystypes_For_AixTests[] = {
    { TT_NEGREP, zSystypes_For_AixBypass0, (regex_t*)NULL },
    { TT_EGREP,  zSystypes_For_AixSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Systypes_For_Aix
 */
const char* apzSystypes_For_AixPatch[] = { "sed",
    "-e" "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/i\\\n"
       "#ifndef _GCC_SIZE_T\\\n"
       "#define _GCC_SIZE_T\n",
    "-e" "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  83 - Sysv68_String fix
 */
tSCC zSysv68_StringName[] =
     "Sysv68_String";
/*
 *  File name selection pattern
 */
tSCC zSysv68_StringList[] =
        "|" "string.h" "|";
#define SYSV68_STRING_TEST_CT  0
#define aSysv68_StringTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sysv68_String
 */
const char* apzSysv68_StringPatch[] = { "sed",
    "-e" "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/",
    "-e" "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/",
    "-e" "s/strdup(char \\*s1);/strdup(const char *s1);/",
    "-e" "/^extern char$/N",
    "-e" "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/",
    "-e" "/^\tstrncmp(),$/N",
    "-e" "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n"
       "extern unsigned int\\\n"
       "\\2/",
    "-e" "/^extern int$/N",
    "-e" "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  84 - Sysz_Stdlib_For_Sun fix
 */
tSCC zSysz_Stdlib_For_SunName[] =
     "Sysz_Stdlib_For_Sun";
/*
 *  File name selection pattern
 */
tSCC zSysz_Stdlib_For_SunList[] =
        "|" "stdlib.h" "|";
#define SYSZ_STDLIB_FOR_SUN_TEST_CT  0
#define aSysz_Stdlib_For_SunTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sysz_Stdlib_For_Sun
 */
const char* apzSysz_Stdlib_For_SunPatch[] = { "sed",
    "-e" "s/int\tabort/void\tabort/g",
    "-e" "s/int\tfree/void\tfree/g",
    "-e" "s/char[ \t]*\\*[ \t]*calloc/void \\*\tcalloc/g",
    "-e" "s/char[ \t]*\\*[ \t]*malloc/void \\*\tmalloc/g",
    "-e" "s/char[ \t]*\\*[ \t]*realloc/void \\*\trealloc/g",
    "-e" "s/int[ \t][ \t]*exit/void\texit/g",
    "-e" "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/i\\\n"
       "#ifndef _GCC_SIZE_T\\\n"
       "#define _GCC_SIZE_T\n",
    "-e" "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  85 - Sysz_Stdtypes_For_Sun fix
 */
tSCC zSysz_Stdtypes_For_SunName[] =
     "Sysz_Stdtypes_For_Sun";
/*
 *  File name selection pattern
 */
tSCC zSysz_Stdtypes_For_SunList[] =
        "|" "sys/stdtypes.h" "|";
#define SYSZ_STDTYPES_FOR_SUN_TEST_CT  0
#define aSysz_Stdtypes_For_SunTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Sysz_Stdtypes_For_Sun
 */
const char* apzSysz_Stdtypes_For_SunPatch[] = { "sed",
    "-e" "/[\t ]size_t.*;/i\\\n"
       "#ifndef _GCC_SIZE_T\\\n"
       "#define _GCC_SIZE_T\n",
    "-e" "/[\t ]size_t.*;/a\\\n"
       "#endif\n",
    "-e" "/[\t ]ptrdiff_t.*;/i\\\n"
       "#ifndef _GCC_PTRDIFF_T\\\n"
       "#define _GCC_PTRDIFF_T\n",
    "-e" "/[\t ]ptrdiff_t.*;/a\\\n"
       "#endif\n",
    "-e" "/[\t ]wchar_t.*;/i\\\n"
       "#ifndef _GCC_WCHAR_T\\\n"
       "#define _GCC_WCHAR_T\n",
    "-e" "/[\t ]wchar_t.*;/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  86 - Tinfo_Cplusplus fix
 */
tSCC zTinfo_CplusplusName[] =
     "Tinfo_Cplusplus";
/*
 *  File name selection pattern
 */
tSCC zTinfo_CplusplusList[] =
        "|" "tinfo.h" "|";
#define TINFO_CPLUSPLUS_TEST_CT  0
#define aTinfo_CplusplusTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Tinfo_Cplusplus
 */
const char* apzTinfo_CplusplusPatch[] = { "sed",
    "-e" "s/[ \t]_cplusplus/ __cplusplus/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  87 - Ultrix_Ansi_Compat fix
 */
tSCC zUltrix_Ansi_CompatName[] =
     "Ultrix_Ansi_Compat";
/*
 *  File name selection pattern
 */
tSCC zUltrix_Ansi_CompatList[] =
        "|" "ansi_compat.h" "|";

/*
 *  content selection pattern
 */
tSCC zUltrix_Ansi_CompatSelect0[] =
       "ULTRIX";

#define    ULTRIX_ANSI_COMPAT_TEST_CT  1
tTestDesc aUltrix_Ansi_CompatTests[] = {
    { TT_EGREP,  zUltrix_Ansi_CompatSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Ultrix_Ansi_Compat
 */
const char* apzUltrix_Ansi_CompatPatch[] = { "sed",
    "-e" "1i\\\n"
       "/* This file intentionally left blank. */\n",
    "-e" "1,$d",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  88 - Ultrix_Atof_Param fix
 */
tSCC zUltrix_Atof_ParamName[] =
     "Ultrix_Atof_Param";
/*
 *  File name selection pattern
 */
tSCC zUltrix_Atof_ParamList[] =
        "|" "math.h" "|";
#define ULTRIX_ATOF_PARAM_TEST_CT  0
#define aUltrix_Atof_ParamTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Ultrix_Atof_Param
 */
const char* apzUltrix_Atof_ParamPatch[] = { "sed",
    "-e" "s@atof(\\([ \t]*char[ \t]*\\*[^)]*\\))@atof(const \\1)@",
    "-e" "s@inline int abs(int [a-z][a-z]*) {.*}@extern \"C\" int abs(int);@",
    "-e" "s@inline double abs(double [a-z][a-z]*) {.*}@@",
    "-e" "s@inline int sqr(int [a-z][a-z]*) {.*}@@",
    "-e" "s@inline double sqr(double [a-z][a-z]*) {.*}@@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  89 - Ultrix_Const fix
 */
tSCC zUltrix_ConstName[] =
     "Ultrix_Const";
/*
 *  File name selection pattern
 */
tSCC zUltrix_ConstList[] =
        "|" "stdio.h" "|";
#define ULTRIX_CONST_TEST_CT  0
#define aUltrix_ConstTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Ultrix_Const
 */
const char* apzUltrix_ConstPatch[] = { "sed",
    "-e" "s@perror( char \\*__s );@perror( const char *__s );@",
    "-e" "s@fputs( char \\*__s,@fputs( const char *__s,@",
    "-e" "s@fopen( char \\*__filename, char \\*__type );@fopen( const char *__filename, const char *__type );@",
    "-e" "s@fwrite( void \\*__ptr,@fwrite( const void *__ptr,@",
    "-e" "s@fscanf( FILE \\*__stream, char \\*__format,@fscanf( FILE *__stream, const char *__format,@",
    "-e" "s@scanf( char \\*__format,@scanf( const char *__format,@",
    "-e" "s@sscanf( char \\*__s, char \\*__format,@sscanf( const char *__s, const char *__format,@",
    "-e" "s@popen(char \\*, char \\*);@popen(const char *, const char *);@",
    "-e" "s@tempnam(char\\*,char\\*);@tempnam(const char*,const char*);@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  90 - Ultrix_Ifdef fix
 */
tSCC zUltrix_IfdefName[] =
     "Ultrix_Ifdef";
/*
 *  File name selection pattern
 */
tSCC zUltrix_IfdefList[] =
        "|" "sys/file.h" "|";

/*
 *  content selection pattern
 */
tSCC zUltrix_IfdefSelect0[] =
       "#ifdef KERNEL";

#define    ULTRIX_IFDEF_TEST_CT  1
tTestDesc aUltrix_IfdefTests[] = {
    { TT_EGREP,  zUltrix_IfdefSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Ultrix_Ifdef
 */
const char* apzUltrix_IfdefPatch[] = { "sed",
    "-e" "s/#ifdef KERNEL/#if defined(KERNEL)/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  91 - Ultrix_Nested_Cmnt fix
 */
tSCC zUltrix_Nested_CmntName[] =
     "Ultrix_Nested_Cmnt";
/*
 *  File name selection pattern
 */
tSCC zUltrix_Nested_CmntList[] =
        "|" "rpc/svc.h" "|";
#define ULTRIX_NESTED_CMNT_TEST_CT  0
#define aUltrix_Nested_CmntTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for Ultrix_Nested_Cmnt
 */
const char* apzUltrix_Nested_CmntPatch[] = { "sed",
    "-e" "s@^\\( \\*\tint protocol;  \\)/\\*@\\1*/ /*@",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  92 - Ultrix_Static fix
 */
tSCC zUltrix_StaticName[] =
     "Ultrix_Static";
/*
 *  File name selection pattern
 */
tSCC zUltrix_StaticList[] =
        "|" "machine/cpu.h" "|";

/*
 *  content selection pattern
 */
tSCC zUltrix_StaticSelect0[] =
       "#include \"r[34]_cpu";

#define    ULTRIX_STATIC_TEST_CT  1
tTestDesc aUltrix_StaticTests[] = {
    { TT_EGREP,  zUltrix_StaticSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Ultrix_Static
 */
const char* apzUltrix_StaticPatch[] = { "sed",
    "-e" "s/^static struct tlb_pid_state/struct tlb_pid_state/",
    "-e" "s/^#include \"r3_cpu\\.h\"$/#include <machine\\/r3_cpu\\.h>/",
    "-e" "s/^#include \"r4_cpu\\.h\"$/#include <machine\\/r4_cpu\\.h>/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  93 - Undefine_Null fix
 */
tSCC zUndefine_NullName[] =
     "Undefine_Null";
/*
 *  File name selection pattern
 */
#define zUndefine_NullList (char*)NULL

/*
 *  content selection pattern
 */
tSCC zUndefine_NullSelect0[] =
       "^#[ \t]*define[ \t]*[ \t]NULL[ \t]";

/*
 *  content bypass pattern
 */
tSCC zUndefine_NullBypass0[] =
       "#[ \t]*(ifn|un)def[ \t]*[ \t]NULL($|[ \t])";

#define    UNDEFINE_NULL_TEST_CT  2
tTestDesc aUndefine_NullTests[] = {
    { TT_NEGREP, zUndefine_NullBypass0, (regex_t*)NULL },
    { TT_EGREP,  zUndefine_NullSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Undefine_Null
 */
const char* apzUndefine_NullPatch[] = { "sed",
    "-e" "/^#[ \t]*define[ \t][ \t]*NULL[ \t]/i\\\n"
       "#undef NULL\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  94 - Va_I960_Macro fix
 */
tSCC zVa_I960_MacroName[] =
     "Va_I960_Macro";
/*
 *  File name selection pattern
 */
tSCC zVa_I960_MacroList[] =
        "|" "arch/i960/archI960.h" "|";

/*
 *  content selection pattern
 */
tSCC zVa_I960_MacroSelect0[] =
       "__(vsiz|vali|vpad|alignof__)";

#define    VA_I960_MACRO_TEST_CT  1
tTestDesc aVa_I960_MacroTests[] = {
    { TT_EGREP,  zVa_I960_MacroSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Va_I960_Macro
 */
const char* apzVa_I960_MacroPatch[] = { "sed",
    "-e" "s/__vsiz/__vxvsiz/",
    "-e" "s/__vali/__vxvali/",
    "-e" "s/__vpad/__vxvpad/",
    "-e" "s/__alignof__/__vxalignof__/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  95 - Void_Null fix
 */
tSCC zVoid_NullName[] =
     "Void_Null";
/*
 *  File name selection pattern
 */
tSCC zVoid_NullList[] =
        "|" "curses.h"
        "|" "dbm.h"
        "|" "locale.h"
        "|" "stdio.h"
        "|" "stdlib.h"
        "|" "string.h"
        "|" "time.h"
        "|" "unistd.h"
        "|" "sys/dir.h"
        "|" "sys/param.h"
        "|" "sys/types.h" "|";

/*
 *  content selection pattern
 */
tSCC zVoid_NullSelect0[] =
       "#[ \t]*define[ \t][ \t]*NULL[ \t].*void";

#define    VOID_NULL_TEST_CT  1
tTestDesc aVoid_NullTests[] = {
    { TT_EGREP,  zVoid_NullSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Void_Null
 */
const char* apzVoid_NullPatch[] = { "sed",
    "-e" "s/^#[ \t]*define[ \t]*NULL[ \t]*((void[ \t]*\\*)0)/#define NULL 0/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  96 - Vxworks_Gcc_Problem fix
 */
tSCC zVxworks_Gcc_ProblemName[] =
     "Vxworks_Gcc_Problem";
/*
 *  File name selection pattern
 */
tSCC zVxworks_Gcc_ProblemList[] =
        "|" "types/vxTypesBase.h" "|";

/*
 *  content selection pattern
 */
tSCC zVxworks_Gcc_ProblemSelect0[] =
       "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";

#define    VXWORKS_GCC_PROBLEM_TEST_CT  1
tTestDesc aVxworks_Gcc_ProblemTests[] = {
    { TT_EGREP,  zVxworks_Gcc_ProblemSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Vxworks_Gcc_Problem
 */
const char* apzVxworks_Gcc_ProblemPatch[] = { "sed",
    "-e" "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/#if 1/",
    "-e" "/[ \t]size_t/i\\\n"
       "#ifndef _GCC_SIZE_T\\\n"
       "#define _GCC_SIZE_T\n",
    "-e" "/[ \t]size_t/a\\\n"
       "#endif\n",
    "-e" "/[ \t]ptrdiff_t/i\\\n"
       "#ifndef _GCC_PTRDIFF_T\\\n"
       "#define _GCC_PTRDIFF_T\n",
    "-e" "/[ \t]ptrdiff_t/a\\\n"
       "#endif\n",
    "-e" "/[ \t]wchar_t/i\\\n"
       "#ifndef _GCC_WCHAR_T\\\n"
       "#define _GCC_WCHAR_T\n",
    "-e" "/[ \t]wchar_t/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  97 - Vxworks_Needs_Vxtypes fix
 */
tSCC zVxworks_Needs_VxtypesName[] =
     "Vxworks_Needs_Vxtypes";
/*
 *  File name selection pattern
 */
tSCC zVxworks_Needs_VxtypesList[] =
        "|" "time.h" "|";

/*
 *  content selection pattern
 */
tSCC zVxworks_Needs_VxtypesSelect0[] =
       "uint_t[ \t][ \t]*_clocks_per_sec";

#define    VXWORKS_NEEDS_VXTYPES_TEST_CT  1
tTestDesc aVxworks_Needs_VxtypesTests[] = {
    { TT_EGREP,  zVxworks_Needs_VxtypesSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Vxworks_Needs_Vxtypes
 */
const char* apzVxworks_Needs_VxtypesPatch[] = { "sed",
    "-e" "s/uint_t/unsigned int/",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  98 - Vxworks_Needs_Vxworks fix
 */
tSCC zVxworks_Needs_VxworksName[] =
     "Vxworks_Needs_Vxworks";
/*
 *  File name selection pattern
 */
tSCC zVxworks_Needs_VxworksList[] =
        "|" "sys/stat.h" "|";

/*
 *  content selection pattern
 */
tSCC zVxworks_Needs_VxworksSelect0[] =
       "#[ \t]define[ \t][ \t]*__INCstath";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zVxworks_Needs_VxworksTest0[] =
       "-r types/vxTypesOld.h";
tSCC zVxworks_Needs_VxworksTest1[] =
       "-n \"`fgrep '#include' $file`\"";
tSCC zVxworks_Needs_VxworksTest2[] =
       "-n \"`fgrep ULONG $file`\"";

#define    VXWORKS_NEEDS_VXWORKS_TEST_CT  4
tTestDesc aVxworks_Needs_VxworksTests[] = {
    { TT_TEST,   zVxworks_Needs_VxworksTest0, 0 /* unused */ },
    { TT_TEST,   zVxworks_Needs_VxworksTest1, 0 /* unused */ },
    { TT_TEST,   zVxworks_Needs_VxworksTest2, 0 /* unused */ },
    { TT_EGREP,  zVxworks_Needs_VxworksSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Vxworks_Needs_Vxworks
 */
const char* apzVxworks_Needs_VxworksPatch[] = { "sed",
    "-e" "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
       "#include <types/vxTypesOld.h>\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description  99 - Vxworks_Time fix
 */
tSCC zVxworks_TimeName[] =
     "Vxworks_Time";
/*
 *  File name selection pattern
 */
tSCC zVxworks_TimeList[] =
        "|" "time.h" "|";

/*
 *  content selection pattern
 */
tSCC zVxworks_TimeSelect0[] =
       "VOIDFUNCPTR";

/*
 *  content test pattern.  A shell will deal with it later.
 */
tSCC zVxworks_TimeTest0[] =
       "-r vxWorks.h";

#define    VXWORKS_TIME_TEST_CT  2
tTestDesc aVxworks_TimeTests[] = {
    { TT_TEST,   zVxworks_TimeTest0, 0 /* unused */ },
    { TT_EGREP,  zVxworks_TimeSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Vxworks_Time
 */
const char* apzVxworks_TimePatch[] = { "sed",
    "-e" "/VOIDFUNCPTR/i\\\n"
       "#ifndef __gcc_VOIDFUNCPTR_defined\\\n"
       "#ifdef __cplusplus\\\n"
       "typedef void (*__gcc_VOIDFUNCPTR) (...);\\\n"
       "#else\\\n"
       "typedef void (*__gcc_VOIDFUNCPTR) ();\\\n"
       "#endif\\\n"
       "#define __gcc_VOIDFUNCPTR_defined\\\n"
       "#endif\n",
    "-e" "s/VOIDFUNCPTR/__gcc_VOIDFUNCPTR/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 100 - X11_Class fix
 */
tSCC zX11_ClassName[] =
     "X11_Class";
/*
 *  File name selection pattern
 */
tSCC zX11_ClassList[] =
        "|" "X11/ShellP.h" "|";

/*
 *  content bypass pattern
 */
tSCC zX11_ClassBypass0[] =
       "__cplusplus";

#define    X11_CLASS_TEST_CT  1
tTestDesc aX11_ClassTests[] = {
    { TT_NEGREP, zX11_ClassBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for X11_Class
 */
const char* apzX11_ClassPatch[] = { "sed",
    "-e" "/char \\*class;/i\\\n"
       "#ifdef __cplusplus\\\n"
       "\tchar *c_class;\\\n"
       "#else\n",
    "-e" "/char \\*class;/a\\\n"
       "#endif\n",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 101 - X11_Class_Usage fix
 */
tSCC zX11_Class_UsageName[] =
     "X11_Class_Usage";
/*
 *  File name selection pattern
 */
tSCC zX11_Class_UsageList[] =
        "|" "Xm/BaseClassI.h" "|";

/*
 *  content bypass pattern
 */
tSCC zX11_Class_UsageBypass0[] =
       "__cplusplus";

#define    X11_CLASS_USAGE_TEST_CT  1
tTestDesc aX11_Class_UsageTests[] = {
    { TT_NEGREP, zX11_Class_UsageBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for X11_Class_Usage
 */
const char* apzX11_Class_UsagePatch[] = { "sed",
    "-e" "s/ class[)]/ c_class)/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 102 - X11_New fix
 */
tSCC zX11_NewName[] =
     "X11_New";
/*
 *  File name selection pattern
 */
tSCC zX11_NewList[] =
        "|" "Xm/Traversal.h" "|";

/*
 *  content bypass pattern
 */
tSCC zX11_NewBypass0[] =
       "__cplusplus";

#define    X11_NEW_TEST_CT  1
tTestDesc aX11_NewTests[] = {
    { TT_NEGREP, zX11_NewBypass0, (regex_t*)NULL }, };

/*
 *  Fix Command Arguments for X11_New
 */
const char* apzX11_NewPatch[] = { "sed",
    "-e" "/Widget\told, new;/i\\\n"
       "#ifdef __cplusplus\\\n"
       "\tWidget\told, c_new;\\\n"
       "#else\n",
    "-e" "/Widget\told, new;/a\\\n"
       "#endif\n",
    "-e" "s/Widget new,/Widget c_new,/g",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 103 - X11_Sprintf fix
 */
tSCC zX11_SprintfName[] =
     "X11_Sprintf";
/*
 *  File name selection pattern
 */
tSCC zX11_SprintfList[] =
        "|" "X11*/Xmu.h" "|";
#define X11_SPRINTF_TEST_CT  0
#define aX11_SprintfTests   (tTestDesc*)NULL

/*
 *  Fix Command Arguments for X11_Sprintf
 */
const char* apzX11_SprintfPatch[] = { "sed",
    "-e" "s,^extern char \\*\tsprintf();$,#ifndef __STDC__\\\n"
       "extern char *\tsprintf();\\\n"
       "#endif /* !defined __STDC__ */,",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 104 - Zzz_Ki_Iface fix
 */
tSCC zZzz_Ki_IfaceName[] =
     "Zzz_Ki_Iface";
/*
 *  File name selection pattern
 */
tSCC zZzz_Ki_IfaceList[] =
        "|" "sys/ki_iface.h" "|";

/*
 *  content selection pattern
 */
tSCC zZzz_Ki_IfaceSelect0[] =
       "These definitions are for HP Internal developers";

#define    ZZZ_KI_IFACE_TEST_CT  1
tTestDesc aZzz_Ki_IfaceTests[] = {
    { TT_EGREP,  zZzz_Ki_IfaceSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Zzz_Ki_Iface
 */
const char* apzZzz_Ki_IfacePatch[] = { "sh", "-c",
    "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
       "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\n"
       "cat > /dev/null",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 105 - Zzz_Ki fix
 */
tSCC zZzz_KiName[] =
     "Zzz_Ki";
/*
 *  File name selection pattern
 */
tSCC zZzz_KiList[] =
        "|" "sys/ki.h" "|";

/*
 *  content selection pattern
 */
tSCC zZzz_KiSelect0[] =
       "11.00 HP-UX LP64";

#define    ZZZ_KI_TEST_CT  1
tTestDesc aZzz_KiTests[] = {
    { TT_EGREP,  zZzz_KiSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Zzz_Ki
 */
const char* apzZzz_KiPatch[] = { "sh", "-c",
    "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
       "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\n"
       "cat > /dev/null",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 106 - Zzz_Ki_Calls fix
 */
tSCC zZzz_Ki_CallsName[] =
     "Zzz_Ki_Calls";
/*
 *  File name selection pattern
 */
tSCC zZzz_Ki_CallsList[] =
        "|" "sys/ki_calls.h" "|";

/*
 *  content selection pattern
 */
tSCC zZzz_Ki_CallsSelect0[] =
       "KI_MAX_PROCS is an arbitrary number";

#define    ZZZ_KI_CALLS_TEST_CT  1
tTestDesc aZzz_Ki_CallsTests[] = {
    { TT_EGREP,  zZzz_Ki_CallsSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Zzz_Ki_Calls
 */
const char* apzZzz_Ki_CallsPatch[] = { "sh", "-c",
    "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
       "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\n"
       "cat > /dev/null",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 107 - Zzz_Ki_Defs fix
 */
tSCC zZzz_Ki_DefsName[] =
     "Zzz_Ki_Defs";
/*
 *  File name selection pattern
 */
tSCC zZzz_Ki_DefsList[] =
        "|" "sys/ki_defs.h" "|";

/*
 *  content selection pattern
 */
tSCC zZzz_Ki_DefsSelect0[] =
       "Kernel Instrumentation Definitions";

#define    ZZZ_KI_DEFS_TEST_CT  1
tTestDesc aZzz_Ki_DefsTests[] = {
    { TT_EGREP,  zZzz_Ki_DefsSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Zzz_Ki_Defs
 */
const char* apzZzz_Ki_DefsPatch[] = { "sh", "-c",
    "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
       "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\n"
       "cat > /dev/null",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  Description 108 - Zzz_Time fix
 */
tSCC zZzz_TimeName[] =
     "Zzz_Time";
/*
 *  File name selection pattern
 */
tSCC zZzz_TimeList[] =
        "|" "sys/time.h" "|";

/*
 *  content selection pattern
 */
tSCC zZzz_TimeSelect0[] =
       "For CASPEC, look in";

#define    ZZZ_TIME_TEST_CT  1
tTestDesc aZzz_TimeTests[] = {
    { TT_EGREP,  zZzz_TimeSelect0, (regex_t*)NULL } };

/*
 *  Fix Command Arguments for Zzz_Time
 */
const char* apzZzz_TimePatch[] = { "sh", "-c",
    "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
       "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\n"
       "cat > /dev/null",
    (char*)NULL };

/* * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *  List of all fixes
 */
#define  REGEX_COUNT  76
#define  FIX_COUNT    108
tFixDesc fixDescList[ 108 ] = {
  {  zAix_SyswaitName,    zAix_SyswaitList, (regex_t*)NULL,
     AIX_SYSWAIT_TEST_CT, aAix_SyswaitTests,
     apzAix_SyswaitPatch },

  {  zAix_VolatileName,    zAix_VolatileList, (regex_t*)NULL,
     AIX_VOLATILE_TEST_CT, aAix_VolatileTests,
     apzAix_VolatilePatch },

  {  zAlpha_GetoptName,    zAlpha_GetoptList, (regex_t*)NULL,
     ALPHA_GETOPT_TEST_CT, aAlpha_GetoptTests,
     apzAlpha_GetoptPatch },

  {  zAlpha_ParensName,    zAlpha_ParensList, (regex_t*)NULL,
     ALPHA_PARENS_TEST_CT, aAlpha_ParensTests,
     apzAlpha_ParensPatch },

  {  zAlpha_SbrkName,    zAlpha_SbrkList, (regex_t*)NULL,
     ALPHA_SBRK_TEST_CT, aAlpha_SbrkTests,
     apzAlpha_SbrkPatch },

  {  zArm_Norcroft_HintName,    zArm_Norcroft_HintList, (regex_t*)NULL,
     ARM_NORCROFT_HINT_TEST_CT, aArm_Norcroft_HintTests,
     apzArm_Norcroft_HintPatch },

  {  zArm_WcharName,    zArm_WcharList, (regex_t*)NULL,
     ARM_WCHAR_TEST_CT, aArm_WcharTests,
     apzArm_WcharPatch },

  {  zAux_AsmName,    zAux_AsmList, (regex_t*)NULL,
     AUX_ASM_TEST_CT, aAux_AsmTests,
     apzAux_AsmPatch },

  {  zAvoid_BoolName,    zAvoid_BoolList, (regex_t*)NULL,
     AVOID_BOOL_TEST_CT, aAvoid_BoolTests,
     apzAvoid_BoolPatch },

  {  zBad_Malloc_DeclName,    zBad_Malloc_DeclList, (regex_t*)NULL,
     BAD_MALLOC_DECL_TEST_CT, aBad_Malloc_DeclTests,
     apzBad_Malloc_DeclPatch },

  {  zBad_Struct_TermName,    zBad_Struct_TermList, (regex_t*)NULL,
     BAD_STRUCT_TERM_TEST_CT, aBad_Struct_TermTests,
     apzBad_Struct_TermPatch },

  {  zBadquoteName,    zBadquoteList, (regex_t*)NULL,
     BADQUOTE_TEST_CT, aBadquoteTests,
     apzBadquotePatch },

  {  zBad_LvalName,    zBad_LvalList, (regex_t*)NULL,
     BAD_LVAL_TEST_CT, aBad_LvalTests,
     apzBad_LvalPatch },

  {  zBroken_Assert_StdioName,    zBroken_Assert_StdioList, (regex_t*)NULL,
     BROKEN_ASSERT_STDIO_TEST_CT, aBroken_Assert_StdioTests,
     apzBroken_Assert_StdioPatch },

  {  zBroken_Assert_StdlibName,    zBroken_Assert_StdlibList, (regex_t*)NULL,
     BROKEN_ASSERT_STDLIB_TEST_CT, aBroken_Assert_StdlibTests,
     apzBroken_Assert_StdlibPatch },

  {  zBsd43_Io_MacrosName,    zBsd43_Io_MacrosList, (regex_t*)NULL,
     BSD43_IO_MACROS_TEST_CT, aBsd43_Io_MacrosTests,
     apzBsd43_Io_MacrosPatch },

  {  zCxx_Cmnt_HpuxName,    zCxx_Cmnt_HpuxList, (regex_t*)NULL,
     CXX_CMNT_HPUX_TEST_CT, aCxx_Cmnt_HpuxTests,
     apzCxx_Cmnt_HpuxPatch },

  {  zCxx_Cmnt_IrixName,    zCxx_Cmnt_IrixList, (regex_t*)NULL,
     CXX_CMNT_IRIX_TEST_CT, aCxx_Cmnt_IrixTests,
     apzCxx_Cmnt_IrixPatch },

  {  zCxx_Cmnt_SunosName,    zCxx_Cmnt_SunosList, (regex_t*)NULL,
     CXX_CMNT_SUNOS_TEST_CT, aCxx_Cmnt_SunosTests,
     apzCxx_Cmnt_SunosPatch },

  {  zCxx_Cmnt_VxworksName,    zCxx_Cmnt_VxworksList, (regex_t*)NULL,
     CXX_CMNT_VXWORKS_TEST_CT, aCxx_Cmnt_VxworksTests,
     apzCxx_Cmnt_VxworksPatch },

  {  zEcd_CursorName,    zEcd_CursorList, (regex_t*)NULL,
     ECD_CURSOR_TEST_CT, aEcd_CursorTests,
     apzEcd_CursorPatch },

  {  zElse_LabelName,    zElse_LabelList, (regex_t*)NULL,
     ELSE_LABEL_TEST_CT, aElse_LabelTests,
     apzElse_LabelPatch },

  {  zEndif_LabelName,    zEndif_LabelList, (regex_t*)NULL,
     ENDIF_LABEL_TEST_CT, aEndif_LabelTests,
     apzEndif_LabelPatch },

  {  zHp_InlineName,    zHp_InlineList, (regex_t*)NULL,
     HP_INLINE_TEST_CT, aHp_InlineTests,
     apzHp_InlinePatch },

  {  zHp_SysfileName,    zHp_SysfileList, (regex_t*)NULL,
     HP_SYSFILE_TEST_CT, aHp_SysfileTests,
     apzHp_SysfilePatch },

  {  zHpux_Cxx_UnreadyName,    zHpux_Cxx_UnreadyList, (regex_t*)NULL,
     HPUX_CXX_UNREADY_TEST_CT, aHpux_Cxx_UnreadyTests,
     apzHpux_Cxx_UnreadyPatch },

  {  zHpux_MaxintName,    zHpux_MaxintList, (regex_t*)NULL,
     HPUX_MAXINT_TEST_CT, aHpux_MaxintTests,
     apzHpux_MaxintPatch },

  {  zHpux_SystimeName,    zHpux_SystimeList, (regex_t*)NULL,
     HPUX_SYSTIME_TEST_CT, aHpux_SystimeTests,
     apzHpux_SystimePatch },

  {  zInteractv_Add1Name,    zInteractv_Add1List, (regex_t*)NULL,
     INTERACTV_ADD1_TEST_CT, aInteractv_Add1Tests,
     apzInteractv_Add1Patch },

  {  zInteractv_Add2Name,    zInteractv_Add2List, (regex_t*)NULL,
     INTERACTV_ADD2_TEST_CT, aInteractv_Add2Tests,
     apzInteractv_Add2Patch },

  {  zInteractv_Add3Name,    zInteractv_Add3List, (regex_t*)NULL,
     INTERACTV_ADD3_TEST_CT, aInteractv_Add3Tests,
     apzInteractv_Add3Patch },

  {  zIo_Def_QuotesName,    zIo_Def_QuotesList, (regex_t*)NULL,
     IO_DEF_QUOTES_TEST_CT, aIo_Def_QuotesTests,
     apzIo_Def_QuotesPatch },

  {  zIoctl_Fix_CtrlName,    zIoctl_Fix_CtrlList, (regex_t*)NULL,
     IOCTL_FIX_CTRL_TEST_CT, aIoctl_Fix_CtrlTests,
     apzIoctl_Fix_CtrlPatch },

  {  zIp_Missing_SemiName,    zIp_Missing_SemiList, (regex_t*)NULL,
     IP_MISSING_SEMI_TEST_CT, aIp_Missing_SemiTests,
     apzIp_Missing_SemiPatch },

  {  zIrix_Bogus_Cxx_CmntName,    zIrix_Bogus_Cxx_CmntList, (regex_t*)NULL,
     IRIX_BOGUS_CXX_CMNT_TEST_CT, aIrix_Bogus_Cxx_CmntTests,
     apzIrix_Bogus_Cxx_CmntPatch },

  {  zIrix_Multiline_CmntName,    zIrix_Multiline_CmntList, (regex_t*)NULL,
     IRIX_MULTILINE_CMNT_TEST_CT, aIrix_Multiline_CmntTests,
     apzIrix_Multiline_CmntPatch },

  {  zIrix_SockaddrName,    zIrix_SockaddrList, (regex_t*)NULL,
     IRIX_SOCKADDR_TEST_CT, aIrix_SockaddrTests,
     apzIrix_SockaddrPatch },

  {  zIrix_Struct__FileName,    zIrix_Struct__FileList, (regex_t*)NULL,
     IRIX_STRUCT__FILE_TEST_CT, aIrix_Struct__FileTests,
     apzIrix_Struct__FilePatch },

  {  zIsc_FmodName,    zIsc_FmodList, (regex_t*)NULL,
     ISC_FMOD_TEST_CT, aIsc_FmodTests,
     apzIsc_FmodPatch },

  {  zMotorola_NestedName,    zMotorola_NestedList, (regex_t*)NULL,
     MOTOROLA_NESTED_TEST_CT, aMotorola_NestedTests,
     apzMotorola_NestedPatch },

  {  zIsc_Sys_LimitsName,    zIsc_Sys_LimitsList, (regex_t*)NULL,
     ISC_SYS_LIMITS_TEST_CT, aIsc_Sys_LimitsTests,
     apzIsc_Sys_LimitsPatch },

  {  zKandr_ConcatName,    zKandr_ConcatList, (regex_t*)NULL,
     KANDR_CONCAT_TEST_CT, aKandr_ConcatTests,
     apzKandr_ConcatPatch },

  {  zLimits_IfndefsName,    zLimits_IfndefsList, (regex_t*)NULL,
     LIMITS_IFNDEFS_TEST_CT, aLimits_IfndefsTests,
     apzLimits_IfndefsPatch },

  {  zLynx_Void_IntName,    zLynx_Void_IntList, (regex_t*)NULL,
     LYNX_VOID_INT_TEST_CT, aLynx_Void_IntTests,
     apzLynx_Void_IntPatch },

  {  zLynxos_Fcntl_ProtoName,    zLynxos_Fcntl_ProtoList, (regex_t*)NULL,
     LYNXOS_FCNTL_PROTO_TEST_CT, aLynxos_Fcntl_ProtoTests,
     apzLynxos_Fcntl_ProtoPatch },

  {  zM88k_Bad_Hypot_OptName,    zM88k_Bad_Hypot_OptList, (regex_t*)NULL,
     M88K_BAD_HYPOT_OPT_TEST_CT, aM88k_Bad_Hypot_OptTests,
     apzM88k_Bad_Hypot_OptPatch },

  {  zM88k_Bad_S_IfName,    zM88k_Bad_S_IfList, (regex_t*)NULL,
     M88K_BAD_S_IF_TEST_CT, aM88k_Bad_S_IfTests,
     apzM88k_Bad_S_IfPatch },

  {  zM88k_Multi_InclName,    zM88k_Multi_InclList, (regex_t*)NULL,
     M88K_MULTI_INCL_TEST_CT, aM88k_Multi_InclTests,
     apzM88k_Multi_InclPatch },

  {  zMachine_NameName,    zMachine_NameList, (regex_t*)NULL,
     MACHINE_NAME_TEST_CT, aMachine_NameTests,
     apzMachine_NamePatch },

  {  zMath_ExceptionName,    zMath_ExceptionList, (regex_t*)NULL,
     MATH_EXCEPTION_TEST_CT, aMath_ExceptionTests,
     apzMath_ExceptionPatch },

  {  zMath_Gcc_IfndefsName,    zMath_Gcc_IfndefsList, (regex_t*)NULL,
     MATH_GCC_IFNDEFS_TEST_CT, aMath_Gcc_IfndefsTests,
     apzMath_Gcc_IfndefsPatch },

  {  zMotorola_Stupid_OptName,    zMotorola_Stupid_OptList, (regex_t*)NULL,
     MOTOROLA_STUPID_OPT_TEST_CT, aMotorola_Stupid_OptTests,
     apzMotorola_Stupid_OptPatch },

  {  zNested_CommentName,    zNested_CommentList, (regex_t*)NULL,
     NESTED_COMMENT_TEST_CT, aNested_CommentTests,
     apzNested_CommentPatch },

  {  zNews_Os_RecursionName,    zNews_Os_RecursionList, (regex_t*)NULL,
     NEWS_OS_RECURSION_TEST_CT, aNews_Os_RecursionTests,
     apzNews_Os_RecursionPatch },

  {  zNext_Math_PrefixName,    zNext_Math_PrefixList, (regex_t*)NULL,
     NEXT_MATH_PREFIX_TEST_CT, aNext_Math_PrefixTests,
     apzNext_Math_PrefixPatch },

  {  zNext_TemplateName,    zNext_TemplateList, (regex_t*)NULL,
     NEXT_TEMPLATE_TEST_CT, aNext_TemplateTests,
     apzNext_TemplatePatch },

  {  zNext_VolitileName,    zNext_VolitileList, (regex_t*)NULL,
     NEXT_VOLITILE_TEST_CT, aNext_VolitileTests,
     apzNext_VolitilePatch },

  {  zNext_Wait_UnionName,    zNext_Wait_UnionList, (regex_t*)NULL,
     NEXT_WAIT_UNION_TEST_CT, aNext_Wait_UnionTests,
     apzNext_Wait_UnionPatch },

  {  zNo_Double_SlashName,    zNo_Double_SlashList, (regex_t*)NULL,
     NO_DOUBLE_SLASH_TEST_CT, aNo_Double_SlashTests,
     apzNo_Double_SlashPatch },

  {  zNodeent_SyntaxName,    zNodeent_SyntaxList, (regex_t*)NULL,
     NODEENT_SYNTAX_TEST_CT, aNodeent_SyntaxTests,
     apzNodeent_SyntaxPatch },

  {  zOsf_Namespace_AName,    zOsf_Namespace_AList, (regex_t*)NULL,
     OSF_NAMESPACE_A_TEST_CT, aOsf_Namespace_ATests,
     apzOsf_Namespace_APatch },

  {  zOsf_Namespace_BName,    zOsf_Namespace_BList, (regex_t*)NULL,
     OSF_NAMESPACE_B_TEST_CT, aOsf_Namespace_BTests,
     apzOsf_Namespace_BPatch },

  {  zPthread_Page_SizeName,    zPthread_Page_SizeList, (regex_t*)NULL,
     PTHREAD_PAGE_SIZE_TEST_CT, aPthread_Page_SizeTests,
     apzPthread_Page_SizePatch },

  {  zRs6000_DoubleName,    zRs6000_DoubleList, (regex_t*)NULL,
     RS6000_DOUBLE_TEST_CT, aRs6000_DoubleTests,
     apzRs6000_DoublePatch },

  {  zRs6000_FchmodName,    zRs6000_FchmodList, (regex_t*)NULL,
     RS6000_FCHMOD_TEST_CT, aRs6000_FchmodTests,
     apzRs6000_FchmodPatch },

  {  zRs6000_ParamName,    zRs6000_ParamList, (regex_t*)NULL,
     RS6000_PARAM_TEST_CT, aRs6000_ParamTests,
     apzRs6000_ParamPatch },

  {  zSony_IncludeName,    zSony_IncludeList, (regex_t*)NULL,
     SONY_INCLUDE_TEST_CT, aSony_IncludeTests,
     apzSony_IncludePatch },

  {  zStatsswtchName,    zStatsswtchList, (regex_t*)NULL,
     STATSSWTCH_TEST_CT, aStatsswtchTests,
     apzStatsswtchPatch },

  {  zStdio_Va_ListName,    zStdio_Va_ListList, (regex_t*)NULL,
     STDIO_VA_LIST_TEST_CT, aStdio_Va_ListTests,
     apzStdio_Va_ListPatch },

  {  zSun_Bogus_IfdefName,    zSun_Bogus_IfdefList, (regex_t*)NULL,
     SUN_BOGUS_IFDEF_TEST_CT, aSun_Bogus_IfdefTests,
     apzSun_Bogus_IfdefPatch },

  {  zSun_Bogus_Ifdef_Sun4cName,    zSun_Bogus_Ifdef_Sun4cList, (regex_t*)NULL,
     SUN_BOGUS_IFDEF_SUN4C_TEST_CT, aSun_Bogus_Ifdef_Sun4cTests,
     apzSun_Bogus_Ifdef_Sun4cPatch },

  {  zSun_CatmacroName,    zSun_CatmacroList, (regex_t*)NULL,
     SUN_CATMACRO_TEST_CT, aSun_CatmacroTests,
     apzSun_CatmacroPatch },

  {  zSun_MallocName,    zSun_MallocList, (regex_t*)NULL,
     SUN_MALLOC_TEST_CT, aSun_MallocTests,
     apzSun_MallocPatch },

  {  zSun_MemcpyName,    zSun_MemcpyList, (regex_t*)NULL,
     SUN_MEMCPY_TEST_CT, aSun_MemcpyTests,
     apzSun_MemcpyPatch },

  {  zSun_Rusers_SemiName,    zSun_Rusers_SemiList, (regex_t*)NULL,
     SUN_RUSERS_SEMI_TEST_CT, aSun_Rusers_SemiTests,
     apzSun_Rusers_SemiPatch },

  {  zSun_SignalName,    zSun_SignalList, (regex_t*)NULL,
     SUN_SIGNAL_TEST_CT, aSun_SignalTests,
     apzSun_SignalPatch },

  {  zSun_Xdr_ProtoName,    zSun_Xdr_ProtoList, (regex_t*)NULL,
     SUN_XDR_PROTO_TEST_CT, aSun_Xdr_ProtoTests,
     apzSun_Xdr_ProtoPatch },

  {  zSunos_Large_MacroName,    zSunos_Large_MacroList, (regex_t*)NULL,
     SUNOS_LARGE_MACRO_TEST_CT, aSunos_Large_MacroTests,
     apzSunos_Large_MacroPatch },

  {  zSunos_Matherr_DeclName,    zSunos_Matherr_DeclList, (regex_t*)NULL,
     SUNOS_MATHERR_DECL_TEST_CT, aSunos_Matherr_DeclTests,
     apzSunos_Matherr_DeclPatch },

  {  zSunos_StrlenName,    zSunos_StrlenList, (regex_t*)NULL,
     SUNOS_STRLEN_TEST_CT, aSunos_StrlenTests,
     apzSunos_StrlenPatch },

  {  zSystypesName,    zSystypesList, (regex_t*)NULL,
     SYSTYPES_TEST_CT, aSystypesTests,
     apzSystypesPatch },

  {  zSystypes_For_AixName,    zSystypes_For_AixList, (regex_t*)NULL,
     SYSTYPES_FOR_AIX_TEST_CT, aSystypes_For_AixTests,
     apzSystypes_For_AixPatch },

  {  zSysv68_StringName,    zSysv68_StringList, (regex_t*)NULL,
     SYSV68_STRING_TEST_CT, aSysv68_StringTests,
     apzSysv68_StringPatch },

  {  zSysz_Stdlib_For_SunName,    zSysz_Stdlib_For_SunList, (regex_t*)NULL,
     SYSZ_STDLIB_FOR_SUN_TEST_CT, aSysz_Stdlib_For_SunTests,
     apzSysz_Stdlib_For_SunPatch },

  {  zSysz_Stdtypes_For_SunName,    zSysz_Stdtypes_For_SunList, (regex_t*)NULL,
     SYSZ_STDTYPES_FOR_SUN_TEST_CT, aSysz_Stdtypes_For_SunTests,
     apzSysz_Stdtypes_For_SunPatch },

  {  zTinfo_CplusplusName,    zTinfo_CplusplusList, (regex_t*)NULL,
     TINFO_CPLUSPLUS_TEST_CT, aTinfo_CplusplusTests,
     apzTinfo_CplusplusPatch },

  {  zUltrix_Ansi_CompatName,    zUltrix_Ansi_CompatList, (regex_t*)NULL,
     ULTRIX_ANSI_COMPAT_TEST_CT, aUltrix_Ansi_CompatTests,
     apzUltrix_Ansi_CompatPatch },

  {  zUltrix_Atof_ParamName,    zUltrix_Atof_ParamList, (regex_t*)NULL,
     ULTRIX_ATOF_PARAM_TEST_CT, aUltrix_Atof_ParamTests,
     apzUltrix_Atof_ParamPatch },

  {  zUltrix_ConstName,    zUltrix_ConstList, (regex_t*)NULL,
     ULTRIX_CONST_TEST_CT, aUltrix_ConstTests,
     apzUltrix_ConstPatch },

  {  zUltrix_IfdefName,    zUltrix_IfdefList, (regex_t*)NULL,
     ULTRIX_IFDEF_TEST_CT, aUltrix_IfdefTests,
     apzUltrix_IfdefPatch },

  {  zUltrix_Nested_CmntName,    zUltrix_Nested_CmntList, (regex_t*)NULL,
     ULTRIX_NESTED_CMNT_TEST_CT, aUltrix_Nested_CmntTests,
     apzUltrix_Nested_CmntPatch },

  {  zUltrix_StaticName,    zUltrix_StaticList, (regex_t*)NULL,
     ULTRIX_STATIC_TEST_CT, aUltrix_StaticTests,
     apzUltrix_StaticPatch },

  {  zUndefine_NullName,    zUndefine_NullList, (regex_t*)NULL,
     UNDEFINE_NULL_TEST_CT, aUndefine_NullTests,
     apzUndefine_NullPatch },

  {  zVa_I960_MacroName,    zVa_I960_MacroList, (regex_t*)NULL,
     VA_I960_MACRO_TEST_CT, aVa_I960_MacroTests,
     apzVa_I960_MacroPatch },

  {  zVoid_NullName,    zVoid_NullList, (regex_t*)NULL,
     VOID_NULL_TEST_CT, aVoid_NullTests,
     apzVoid_NullPatch },

  {  zVxworks_Gcc_ProblemName,    zVxworks_Gcc_ProblemList, (regex_t*)NULL,
     VXWORKS_GCC_PROBLEM_TEST_CT, aVxworks_Gcc_ProblemTests,
     apzVxworks_Gcc_ProblemPatch },

  {  zVxworks_Needs_VxtypesName,    zVxworks_Needs_VxtypesList, (regex_t*)NULL,
     VXWORKS_NEEDS_VXTYPES_TEST_CT, aVxworks_Needs_VxtypesTests,
     apzVxworks_Needs_VxtypesPatch },

  {  zVxworks_Needs_VxworksName,    zVxworks_Needs_VxworksList, (regex_t*)NULL,
     VXWORKS_NEEDS_VXWORKS_TEST_CT, aVxworks_Needs_VxworksTests,
     apzVxworks_Needs_VxworksPatch },

  {  zVxworks_TimeName,    zVxworks_TimeList, (regex_t*)NULL,
     VXWORKS_TIME_TEST_CT, aVxworks_TimeTests,
     apzVxworks_TimePatch },

  {  zX11_ClassName,    zX11_ClassList, (regex_t*)NULL,
     X11_CLASS_TEST_CT, aX11_ClassTests,
     apzX11_ClassPatch },

  {  zX11_Class_UsageName,    zX11_Class_UsageList, (regex_t*)NULL,
     X11_CLASS_USAGE_TEST_CT, aX11_Class_UsageTests,
     apzX11_Class_UsagePatch },

  {  zX11_NewName,    zX11_NewList, (regex_t*)NULL,
     X11_NEW_TEST_CT, aX11_NewTests,
     apzX11_NewPatch },

  {  zX11_SprintfName,    zX11_SprintfList, (regex_t*)NULL,
     X11_SPRINTF_TEST_CT, aX11_SprintfTests,
     apzX11_SprintfPatch },

  {  zZzz_Ki_IfaceName,    zZzz_Ki_IfaceList, (regex_t*)NULL,
     ZZZ_KI_IFACE_TEST_CT, aZzz_Ki_IfaceTests,
     apzZzz_Ki_IfacePatch },

  {  zZzz_KiName,    zZzz_KiList, (regex_t*)NULL,
     ZZZ_KI_TEST_CT, aZzz_KiTests,
     apzZzz_KiPatch },

  {  zZzz_Ki_CallsName,    zZzz_Ki_CallsList, (regex_t*)NULL,
     ZZZ_KI_CALLS_TEST_CT, aZzz_Ki_CallsTests,
     apzZzz_Ki_CallsPatch },

  {  zZzz_Ki_DefsName,    zZzz_Ki_DefsList, (regex_t*)NULL,
     ZZZ_KI_DEFS_TEST_CT, aZzz_Ki_DefsTests,
     apzZzz_Ki_DefsPatch },

  {  zZzz_TimeName,    zZzz_TimeList, (regex_t*)NULL,
     ZZZ_TIME_TEST_CT, aZzz_TimeTests,
     apzZzz_TimePatch }
};
