[= autogen template -*- Mode: C -*-
-x =]
+x=fixincl.x =]
/*
* DO NOT EDIT THIS FILE - it has been generated
*
*
* See README-fixinc for more information.
*
- * inclhack copyright (c) [=_eval "date +%Y" _shell
- =] The Free Software Foundation, Inc.
+ * inclhack copyright (c) 1998, 1999, 2000
+ * The Free Software Foundation, Inc.
*
[=_eval inclhack "# * " _gpl=]
- *[=_EVAL "re_ct=0" _shell=][=
+ */
+[= _SETENV re_ct 0 =][= _SETENV max_mach 0 =][=
_FOR fix =]
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description [=_eval _index 1 + "#%3d -" _printf=] [=hackname _Cap=] fix
- */
+ * Description of [=hackname _cap=] fix
+ */[=
+
+# Note that this is not just for debugging purposes, but in case
+ some C fix wishes to refer to the regexps it is paired with.
+ See commentary at the top of fixfixes.c.
+=]
+#define [=hackname _up #_FIXIDX + #%-32s _printf=] [=_eval _index=]
tSCC z[=hackname _cap=]Name[] =
- [=hackname _cap _krstr=];
+ [=hackname _krstr=];
+
/*
* File name selection pattern
*/[=
_IF mach _exist=]
tSCC* apz[=hackname _cap=]Machs[] = {[=
+ _SETENV this_mach 0 =][=
+
_FOR mach =]
[=mach _krstr=],[=
- /mach=]
+ _SETENV this_mach mach _len this_mach _env _val 5 + +
+ =][= /mach=]
(const char*)NULL };[=
+ _SETENV max_mach _mark this_mach _env _val max_mach _env _val _max =][=
+
_ELSE =]
#define apz[=hackname _cap=]Machs (const char**)NULL[=
_ENDIF "files _exist" =][=
- _IF exesel _exist=]
-
-/*
- * content selection pattern - do fix if pattern found
- * This is a special pattern that not all egrep commands
- * are capable of coping with. We use the GNU library, tho :)
- */[=
- _FOR exesel =]
-tSCC z[=hackname _cap=]Select[=_eval _index=][] =
- [=exesel _krstr=];[=
- /exesel =][=
-
- _ELIF select _exist=]
+ _IF select _exist=]
/*
* content selection pattern - do fix if pattern found
/test =][=
_ENDIF =][=
+ _IF c_test _exist=]
+
+/*
+ * perform the C function call test
+ */[=
+ _FOR c_test =]
+tSCC z[=hackname _cap=]FTst[=_eval _index=][] = "[=c_test=]";[=
+ /c_test =][=
+ _ENDIF =][=
+
# Build the array of test descriptions for this fix: =][=
- _IF exesel _exist
- select _exist |
- bypass _exist |
- test _exist |
+ _IF select _exist
+ bypass _exist |
+ test _exist |
+ c_test _exist |
=]
#define [=hackname _up =]_TEST_CT [=
- _IF exesel _exist =][=
- _eval exesel _count
- bypass _count +
- test _count + =][=
- _ELSE =][=
_eval select _count
- bypass _count +
- test _count + =][=
- _ENDIF =]
-#define [=hackname _up =]_RE_CT [=
- _IF exesel _exist =][=
- _eval exesel _count bypass _count
- "#2$ct=`expr %d + %d` ; re_ct=`expr $ct + $re_ct` ; echo $ct"
- _printf _shell =][=
- _ELSE =][=
- _eval select _count bypass _count
- "#2$ct=`expr %d + %d` ; re_ct=`expr $ct + $re_ct` ; echo $ct"
- _printf _shell =][=
- _ENDIF =]
-tTestDesc a[=hackname _cap=]Tests[] = {[=
+ bypass _count +
+ test _count +
+ c_test _count + =][=
+_SETENV re_ct
+ re_ct _env _val
+ select _count +
+ bypass _count + =]
+static tTestDesc a[=hackname _cap=]Tests[] = {[=
_FOR test =]
- { TT_TEST, z[=hackname _cap=]Test[=_eval _index=], 0 /* unused */ },[=
+ { TT_TEST, z[=hackname _cap=]Test[=_eval _index=], 0 /* unused */ },[=
/test =][=
+ _FOR c_test =]
+ { TT_FUNCTION, z[=hackname _cap=]FTst[=_eval _index=], 0 /* unused */ },[=
+ /c_test =][=
+
_FOR bypass =]
- { TT_NEGREP, z[=hackname _cap=]Bypass[=_eval _index=], (regex_t*)NULL },[=
+ { TT_NEGREP, z[=hackname _cap=]Bypass[=_eval _index=], (regex_t*)NULL },[=
/bypass =][=
- # IF there is an exesel, then use that (those) selection
- expressions, instead of the regular select expressions
- =][=
- _IF exesel _exist =][=
- _FOR exesel =]
- { TT_EGREP, z[=hackname _cap=]Select[=_eval _index=], (regex_t*)NULL },[=
- /exesel =][=
-
- _ELSE =][=
_FOR select =]
- { TT_EGREP, z[=hackname _cap=]Select[=_eval _index=], (regex_t*)NULL },[=
- /select =][=
- _ENDIF =] };[=
+ { TT_EGREP, z[=hackname _cap=]Select[=_eval _index=], (regex_t*)NULL },[=
+ /select =] };[=
_ELSE =]
#define [=hackname _up=]_TEST_CT 0
-#define [=hackname _up=]_RE_CT 0
#define a[=hackname _cap=]Tests (tTestDesc*)NULL[=
_ENDIF =]
/*
* Fix Command Arguments for [=hackname _cap=]
*/
-const char* apz[=hackname _cap=]Patch[] = {[=
- _IF sed _exist =] "sed"[=_FOR sed=],
- "-e", [=sed _krstr=][=/sed=][=
+static const char* apz[=hackname _cap=]Patch[] = {[=
+ _IF sed _exist =] "sed"[=
+ _FOR sed=],
+ "-e", [=sed _krstr=][=
+ /sed=],[=
+
_ELIF shell _exist =] "sh", "-c",
- [=shell _krstr=][=
- _ENDIF=],
+ [=shell _krstr=],[=
+
+ _ELIF c_fix _exist =]
+ [=
+ c_fix _krstr=],[=
+
+ _FOR c_fix_arg =]
+ [=c_fix_arg _krstr=],[=
+ /c_fix_arg =][=
+
+ _ELIF replace _len =]
+[=replace _krstr=],[=
+
+ _ENDIF=]
(char*)NULL };
+[=/fix=]
-/* * * * * * * * * * * * * * * * * * * * * * * * * *[=
-/fix=]
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* List of all fixes
- */
-#define REGEX_COUNT [=_eval "echo $re_ct" _shell =]
-#define FIX_COUNT [=_eval fix _count =]
+ */[=
+# as of this writing, 49 bytes are needed by the case statement format.
+ We also must allow for the size of the target machine machine name.
+ This allows for a 79 byte machine name. Better be enough.
+=]
+#define REGEX_COUNT [= _eval re_ct _env =]
+#define MACH_LIST_SIZE_LIMIT [= _eval max_mach _env _val 128 + =]
+#define FIX_COUNT [= _eval fix _count =]
+
tFixDesc fixDescList[ FIX_COUNT ] = {[=
_FOR fix ",\n" =]
{ z[=hackname _cap=]Name, z[=hackname _cap=]List,
- apz[=hackname _cap=]Machs, (regex_t*)NULL,
+ apz[=hackname _cap=]Machs,
[=hackname _up=]_TEST_CT, [=
_IF not_machine _exist =]FD_MACH_IFNOT[=
_ELSE =]FD_MACH_ONLY[=
_ENDIF =][=
- _IF shell _exist =] | FD_SHELL_SCRIPT[=
+ _IF shell _exist =] | FD_SHELL_SCRIPT[=
+ _ELIF c_fix _exist =] | FD_SUBROUTINE[=
+ _ELIF replace _exist =] | FD_REPLACEMENT[=
_ENDIF =],
- a[=hackname _cap=]Tests, apz[=hackname _cap=]Patch }[=
+ a[=hackname _cap=]Tests, apz[=hackname _cap=]Patch, 0 }[=
/fix=]
};