summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-02-08 20:37:34 -0800
committerYamaArashi <shadow962@live.com>2016-02-08 20:37:34 -0800
commita38b952671192d96d107b0ef007d6424dc30525e (patch)
treec1dcf067e7bb2869d4debcf8b3d034054f6ae015 /gcc
parentb5fb6c8ffb25d2057ab7316c218eb67fe538340b (diff)
remove fixinc, protoize, and gcov
Diffstat (limited to 'gcc')
-rwxr-xr-xgcc/Makefile.in333
-rwxr-xr-xgcc/fix-header.c1437
-rwxr-xr-xgcc/fixinc-nt.sed5
-rwxr-xr-xgcc/fixinc.dgux185
-rwxr-xr-xgcc/fixinc.irix225
-rwxr-xr-xgcc/fixinc.math53
-rwxr-xr-xgcc/fixinc.ptx257
-rwxr-xr-xgcc/fixinc.sco427
-rwxr-xr-xgcc/fixinc.svr41726
-rwxr-xr-xgcc/fixinc.winnt232
-rwxr-xr-xgcc/fixinc.wrap86
-rwxr-xr-xgcc/fixinc.x86-linux-gnu136
-rwxr-xr-xgcc/fixinc/Makefile.in132
-rwxr-xr-xgcc/fixinc/README47
-rwxr-xr-xgcc/fixinc/fixinc.dgux200
-rwxr-xr-xgcc/fixinc/fixinc.irix243
-rwxr-xr-xgcc/fixinc/fixinc.ptx274
-rwxr-xr-xgcc/fixinc/fixinc.sco445
-rwxr-xr-xgcc/fixinc/fixinc.svr41744
-rwxr-xr-xgcc/fixinc/fixinc.winnt240
-rwxr-xr-xgcc/fixinc/fixinc.wrap115
-rwxr-xr-xgcc/fixinc/fixinc.x86-linux-gnu140
-rwxr-xr-xgcc/fixinc/fixincl.c834
-rwxr-xr-xgcc/fixinc/fixincl.sh389
-rwxr-xr-xgcc/fixinc/fixincl.tpl169
-rwxr-xr-xgcc/fixinc/fixincl.x4295
-rwxr-xr-xgcc/fixinc/hackshell.tpl186
-rwxr-xr-xgcc/fixinc/inclhack.def2340
-rwxr-xr-xgcc/fixinc/inclhack.sh3086
-rwxr-xr-xgcc/fixinc/inclhack.tpl391
-rwxr-xr-xgcc/fixinc/mkfixinc.sh116
-rwxr-xr-xgcc/fixinc/regex.c5059
-rwxr-xr-xgcc/fixinc/regex.h504
-rwxr-xr-xgcc/fixinc/server.c464
-rwxr-xr-xgcc/fixinc/server.h94
-rwxr-xr-xgcc/fixincludes3214
-rwxr-xr-xgcc/fixproto294
-rwxr-xr-xgcc/gcov.c1373
-rwxr-xr-xgcc/gcov.texi344
-rwxr-xr-xgcc/proto-man904
-rwxr-xr-xgcc/protoize.c4673
-rwxr-xr-xgcc/scan-decls.c253
-rwxr-xr-xgcc/scan.c241
-rwxr-xr-xgcc/scan.h75
-rwxr-xr-xgcc/sys-protos.h1354
-rwxr-xr-xgcc/unprotoize.c2
46 files changed, 17 insertions, 39319 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index ec9e239..6fe3738 100755
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -19,7 +19,7 @@
#Boston MA 02111-1307, USA.
# The targets for external use include:
-# all, doc, proto, install, install-cross, install-cross-rest,
+# all, doc, install, install-cross, install-cross-rest,
# uninstall, TAGS, mostlyclean, clean, distclean, maintainer-clean,
# stage1, stage2, stage3, stage4.
@@ -40,7 +40,7 @@ SUBDIRS =@subdirs@
# Selection of languages to be made.
# This is overridden by configure.
CONFIG_LANGUAGES = @all_languages@
-LANGUAGES = c proto gcov$(exeext) $(CONFIG_LANGUAGES)
+LANGUAGES = c $(CONFIG_LANGUAGES)
# Selection of languages to be made during stage1 build.
# This is overridden by configure.
@@ -216,9 +216,6 @@ RANLIB_TEST_FOR_TARGET = \
# Dir to search for system headers. Overridden by cross-make.
SYSTEM_HEADER_DIR = /usr/include
-# Control whether to run fixproto.
-STMP_FIXPROTO = stmp-fixproto
-
# Test to see whether <limits.h> exists in the system header files.
LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
@@ -393,18 +390,6 @@ INSTALL_HEADERS=install-headers
# Options for tar when copying trees. So HPUX can override it.
TAROUTOPTS = xpBf
-# Select which version of fixincludes to use (I.E. regular versus SVR4)
-# This value is overridden directly by configure.
-FIXINCLUDES = @fixincludes@
-
-# Additional directories of header files to run fixincludes on.
-# These should be directories searched automatically by default
-# just as /usr/include is.
-# *Do not* use this for directories that happen to contain
-# header files, but are not searched automatically by default.
-# On most systems, this is empty.
-OTHER_FIXINCLUDES_DIRS=
-
# A list of all the language-specific executables.
# This is overridden by configure.
COMPILERS = cc1$(exeext) @all_compilers@
@@ -446,13 +431,9 @@ HOST_DOPRINT=$(DOPRINT)
# Actual name to use when installing a native compiler.
GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed -e $$t`
-PROTOIZE_INSTALL_NAME = `t='$(program_transform_name)'; echo protoize | sed -e $$t`
-UNPROTOIZE_INSTALL_NAME = `t='$(program_transform_name)'; echo unprotoize | sed -e $$t`
# Actual name to use when installing a cross-compiler.
GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed -e $$t`
-PROTOIZE_CROSS_NAME = `t='$(program_transform_cross_name)'; echo protoize | sed -e $$t`
-UNPROTOIZE_CROSS_NAME = `t='$(program_transform_cross_name)'; echo unprotoize | sed -e $$t`
# Choose the real default target.
ALL=all.internal
@@ -470,9 +451,6 @@ RUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \
else echo runtest; fi`
RUNTESTFLAGS =
-# Extra symbols for fixproto to define when parsing headers.
-FIXPROTO_DEFINES =
-
# End of variables for you to override.
# Definition of `all' is here so that new rules inserted by sed
@@ -660,9 +638,7 @@ STAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \
xgcc$(exeext) cc1$(exeext) cpp$(exeext) $(EXTRA_PASSES) \
$(EXTRA_PROGRAMS) gcc-cross$(exeext) \
$(CCCP)$(exeext) cc1obj$(exeext) enquire$(exeext) \
- protoize$(exeext) unprotoize$(exeext) \
specs underscore.c \
- gcov$(exeext) *.bp \
$(CYGNUS-LOCAL-range) *.range \
*.greg *.lreg *.combine *.flow *.cse *.jump *.rtl *.tree *.loop \
*.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack *.gcse \
@@ -797,14 +773,14 @@ all.internal: start.encap rest.encap
# This is what to compile if making a cross-compiler.
# Note that we can compile enquire using the cross-compiler just built,
# although we can't run it on this machine.
-all.cross: native gcc-cross specs stmp-headers $(STMP_FIXPROTO) $(LIBGCC) \
+all.cross: native gcc-cross specs stmp-headers $(LIBGCC) \
$(LIBGCC1_TEST) lang.all.cross
# This is what to compile if making gcc with a cross-compiler.
all.build: native xgcc$(exeext) lang.all.build
# This is what must be made before installing GCC and converting libraries.
start.encap: native xgcc$(exeext) specs $(LIBGCC1) xlimits.h lang.start.encap
# These can't be made until after GCC can run.
-rest.encap: stmp-headers $(STMP_FIXPROTO) $(LIBGCC) lang.rest.encap
+rest.encap: stmp-headers $(LIBGCC) lang.rest.encap
# This is what is made with the host's compiler
# whether making a cross compiler or not.
native: config.status auto-host.h cpp$(exeext) $(LANGUAGES) \
@@ -812,10 +788,9 @@ native: config.status auto-host.h cpp$(exeext) $(LANGUAGES) \
# Define the names for selecting languages in LANGUAGES.
C c: cc1$(exeext)
-PROTO: proto
# Tell GNU make these are phony targets.
-.PHONY: C c PROTO proto
+.PHONY: C c
# On the target machine, finish building a cross compiler.
# This does the things that can't be done on the host machine.
@@ -997,7 +972,7 @@ libgcc1.S: libgcc1.c $(CONFIG_H) config.status
# Compiling libgcc2.a requires making sure that cc1, etc. have been compiled.
# But recompiling cc1 should not force recompilation of libgcc2.a.
# If you want to force recompilation, delete libgcc2.a.
-libgcc2.ready: $(GCC_PASSES) $(LIBGCC2_DEPS) stmp-int-hdrs $(STMP_FIXPROTO)
+libgcc2.ready: $(GCC_PASSES) $(LIBGCC2_DEPS) stmp-int-hdrs
-if [ -f libgcc2.ready ] ; then \
true; \
else \
@@ -1443,7 +1418,7 @@ resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h system.h \
lcm.o : lcm.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
real.h insn-config.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H)
profile.o : profile.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-flags.h \
- gcov-io.h $(TREE_H) output.h $(REGS_H) toplev.h insn-config.h
+ $(TREE_H) output.h $(REGS_H) toplev.h insn-config.h
loop.o : loop.c $(CONFIG_H) system.h $(RTL_H) flags.h loop.h insn-config.h \
insn-flags.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) real.h \
toplev.h varray.h
@@ -1829,7 +1804,7 @@ $(HOST_PREFIX_1):
touch $(HOST_PREFIX_1)
#
-# Remake cpp and protoize.
+# Remake cpp.
# Making the preprocessor
cpp$(exeext): $(CCCP)$(exeext)
@@ -1897,42 +1872,6 @@ cppalloc.o: cppalloc.c $(CONFIG_H) cpplib.h machmode.h system.h
# Note for the stamp targets, we run the program `true' instead of
# having an empty command (nothing following the semicolon).
-proto: config.status protoize$(exeext) unprotoize$(exeext) SYSCALLS.c.X
-
-protoize$(exeext): protoize.o getopt.o getopt1.o getpwd.o version.o \
- pexecute.o choose-temp.o mkstemp.o $(LIBDEPS)
- $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
- protoize.o getopt.o getopt1.o getpwd.o version.o \
- pexecute.o choose-temp.o mkstemp.o $(LIBS)
-
-unprotoize$(exeext): unprotoize.o getopt.o getopt1.o getpwd.o version.o \
- pexecute.o choose-temp.o mkstemp.o $(LIBDEPS)
- $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
- unprotoize.o getopt.o getopt1.o getpwd.o version.o \
- pexecute.o choose-temp.o mkstemp.o $(LIBS)
-
-protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) system.h \
- Makefile
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
- -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
- -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
- -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \
- -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
- -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
- -DSTD_PROTO_DIR=\"$(libsubdir)\" \
- $(srcdir)/protoize.c
-
-unprotoize.o: unprotoize.c protoize.c $(srcdir)/../include/getopt.h \
- $(CONFIG_H) system.h Makefile
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
- -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
- -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
- -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \
- -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
- -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
- -DSTD_PROTO_DIR=\"$(libsubdir)\" \
- $(srcdir)/unprotoize.c
-
getopt.o: $(srcdir)/../libiberty/getopt.c $(srcdir)/../include/getopt.h
rm -f getopt.c
$(LN_S) $(srcdir)/../libiberty/getopt.c getopt.c
@@ -1952,56 +1891,19 @@ SYSCALLS.c.X: $(srcdir)/sys-types.h $(srcdir)/sys-protos.h $(GCC_PASSES) \
-aux-info $@ -S -o tmp-SYSCALLS.s SYSCALLS.c
-rm -f SYSCALLS.c tmp-SYSCALLS.s
-
-test-protoize-simple: ./protoize ./unprotoize $(GCC_PASSES)
- -rm -f tmp-proto.[cso]
- cp $(srcdir)/protoize.c tmp-proto.c
- chmod u+w tmp-proto.c
- ./protoize -N -B ./ -x getopt.h -c "-B./ -Wall -Wwrite-strings \
- $(CFLAGS) $(INCLUDES) \
- -DGCC_INCLUDE_DIR=0 \
- -DGPLUSPLUS_INCLUDE_DIR=0 \
- -DCROSS_INCLUDE_DIR=0 \
- -DTOOL_INCLUDE_DIR=0 \
- -DSTD_PROTO_DIR=0" tmp-proto.c
- @echo '**********' Expect 400 lines of differences.
- -diff $(srcdir)/protoize.c tmp-proto.c > tmp-proto.diff
- -wc -l tmp-proto.diff
- ./unprotoize -N -x getopt.h -c "-B./ -Wall -Wwrite-strings \
- $(CFLAGS) $(INCLUDES) \
- -DGCC_INCLUDE_DIR=0 \
- -DGPLUSPLUS_INCLUDE_DIR=0 \
- -DCROSS_INCLUDE_DIR=0 \
- -DTOOL_INCLUDE_DIR=0 \
- -DSTD_PROTO_DIR=0" tmp-proto.c
- @echo Expect zero differences.
- diff $(srcdir)/protoize.c tmp-proto.c | cat
- -rm -f tmp-proto.[cs] tmp-proto$(objext)
-
-gcov.o: gcov.c gcov-io.h system.h
-
-# Only one of 'gcov' or 'gcov.exe' is actually built, depending
-# upon whether $(exeext) is empty or not.
-gcov$(exeext): gcov.o $(LIBDEPS)
- $(CC) $(ALL_CFLAGS) $(LDFLAGS) gcov.o $(LIBS) -o $@
-#
# Build the include directory. The stamp files are stmp-* rather than
# s-* so that mostlyclean does not force the include directory to
# be rebuilt.
# Build the include directory including float.h (which no longer depends upon
# enquire).
-stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h
+stmp-int-hdrs: $(USER_H) xlimits.h
# Copy in the headers provided with gcc.
-# The sed command gets just the last file name component;
-# this is necessary because VPATH could add a dirname.
-# Using basename would be simpler, but some systems don't have it.
-# The touch command is here to workaround an AIX/Linux NFS bug.
+ rm -rf include
+ mkdir include
for file in .. $(USER_H); do \
if [ X$$file != X.. ]; then \
- realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
- touch include/$$realfile; \
- rm -f include/$$realfile; \
+ realfile=`basename $$file`; \
cp $$file include; \
chmod a+r include/$$realfile; \
fi; \
@@ -2013,149 +1915,12 @@ stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h
if [ x$(FLOAT_H) != xMakefile.in ]; then \
cp $(srcdir)/config/$(FLOAT_H) include/float.h && \
chmod a+r include/float.h; \
- else :; fi
-# Install the README
- rm -f include/README
- cp $(srcdir)/README-fixinc include/README
- chmod a+r include/README
- touch $@
+ fi
# Now that float.h no longer depends upon enquire, this is actually a no-op.
stmp-headers:
touch $@
-fixinc.sh :
- DEST=`cd $(srcdir) ; pwd`/$@ CC=$(CC) MAKE=$(MAKE) CFLAGS="$(CFLAGS)" \
- export DEST CC MAKE CFLAGS ; \
- echo DEST=$$DEST CC=$$CC MAKE=$$MAKE CFLAGS=$$CFLAGS ; \
- cd ../contrib/fixinc ; \
- $(SHELL) mkfixinc.sh $(target) $$DEST
-
-# Build fixed copies of system files.
-stmp-fixinc: $(FIXINCLUDES) gsyslimits.h
- rm -rf include
- mkdir include
- if [ x$(FIXINCLUDES) != xMakefile.in ]; \
- then \
- for dir in $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS); do \
- if [ -d $$dir ]; \
- then \
- $(SHELL) $(srcdir)/$(FIXINCLUDES) include $$dir; \
- else true; fi; \
- done; \
- if [ x$(INSTALL_ASSERT_H) != x ] ; \
- then \
- rm -f include/assert.h; \
- cp $(srcdir)/assert.h include/assert.h; \
- chmod a+r include/assert.h; \
- fi \
- else true; \
- fi
- rm -f include/syslimits.h
- if [ -f include/limits.h ]; then \
- mv include/limits.h include/syslimits.h; \
- else \
- cp $(srcdir)/gsyslimits.h include/syslimits.h; \
- fi
- chmod a+r include/syslimits.h
-# If $(SYSTEM_HEADER_DIR) is $(gcc_tooldir)/sys-include, and
-# that directory exists, then make sure that $(libsubdir) exists.
-# This is because cpp is compiled to find $(gcc_tooldir)/include via
-# $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir)
-# exists.
- if [ "$(SYSTEM_HEADER_DIR)" = "$(gcc_tooldir)/sys-include" ] \
- && [ -d $(gcc_tooldir)/sys-include ]; then \
- if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi; \
- if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib; fi; \
- if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \
- if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version) ; fi; \
- else true; fi
-
- touch stmp-fixinc
-
-# Files related to the fixproto script.
-
-deduced.h: $(GCC_PASSES) $(srcdir)/scan-types.sh stmp-int-hdrs
- if [ -d $(SYSTEM_HEADER_DIR) ]; \
- then \
- CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -Iinclude -I${SYSTEM_HEADER_DIR}"; \
- export CC; \
- $(SHELL) $(srcdir)/scan-types.sh "$(srcdir)" >tmp-deduced.h; \
- mv tmp-deduced.h deduced.h; \
- else \
- touch deduced.h; \
- fi
-
-gen-protos: gen-protos.o scan.o cppalloc.o $(HOST_LIBDEPS)
- ${HOST_CC} $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
- gen-protos.o scan.o cppalloc.o $(HOST_LIBS)
-
-gen-protos.o: gen-protos.c scan.h $(build_xm_file) system.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gen-protos.c
-
-scan.o: scan.c scan.h $(build_xm_file) system.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan.c
-
-xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos Makefile
- cat deduced.h $(srcdir)/sys-protos.h > tmp-fixtmp.c
- mv tmp-fixtmp.c fixtmp.c
- $(GCC_FOR_TARGET) fixtmp.c -w -U__SIZE_TYPE__ -U__PTRDIFF_TYPE__ -U__WCHAR_TYPE__ -E \
- | sed -e 's/ / /g' -e 's/ *(/ (/g' -e 's/ [ ]*/ /g' -e 's/( )/()/' \
- | ./gen-protos >xsys-protos.hT
- mv xsys-protos.hT xsys-protos.h
- rm -rf fixtmp.c
-
-fix-header: fix-header.o scan-decls.o scan.o xsys-protos.h $(HOST_LIBDEPS) \
- libcpp.a
- $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ fix-header.o \
- scan-decls.o scan.o libcpp.a $(HOST_LIBS)
-
-fix-header.o: fix-header.c $(srcdir)/../include/obstack.h scan.h \
- xsys-protos.h $(build_xm_file) system.h cpplib.h machmode.h cpphash.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/fix-header.c
-
-# CYGNUS LOCAL: binary installation
-fixproto-defines:
- rm -f fixproto-defines; \
- echo "#!/bin/sh" > fixproto-defines ; \
- echo "# Print FIXPROTO_DEFINES needed by fixproto." >> fixproto-defines ; \
- echo "echo '$(FIXPROTO_DEFINES)'" >> fixproto-defines ; \
- chmod +x fixproto-defines
-# END CYGNUS LOCAL
-
-scan-decls.o: scan-decls.c scan.h cpplib.h machmode.h $(build_xm_file) system.h
- $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan-decls.c
-
-
-# stmp-fixproto depends on this, not on fix-header directly.
-# The idea is to make sure fix-header gets built,
-# but not rerun fixproto after each stage
-# just because fix-header's mtime has changed.
-# CYGNUS LOCAL: binary installation
-fixhdr.ready: fix-header fixproto-defines
- -if [ -f fixhdr.ready ] ; then \
- true; \
- else \
- touch fixhdr.ready; \
- fi
-
-# stmp-headers is to make sure fixincludes has already finished.
-# The if statement is so that we don't run fixproto a second time
-# if it has already been run on the files in `include'.
-stmp-fixproto: fixhdr.ready fixproto stmp-headers
- @echo "Various warnings and error messages from fixproto are normal"
- -if [ -d include ] ; then true; else mkdir include; fi
- -if [ -f include/fixed ] ; then true; \
- else \
- : This line works around a 'make' bug in BSDI 1.1.; \
- FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"; export FIXPROTO_DEFINES; \
- if [ -d $(SYSTEM_HEADER_DIR) ] ; then \
- $(SHELL) ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR); \
- else true; fi; \
- touch include/fixed; \
- fi
- touch stmp-fixproto
-#
# Remake the info files.
# CYGNUS LOCAL: built in build directory
@@ -2166,12 +1931,12 @@ cpp.info: $(srcdir)/cpp.texi
$(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi
gcc.info: $(srcdir)/gcc.texi extend.texi install.texi invoke.texi \
- md.texi rtl.texi tm.texi gcov.texi
+ md.texi rtl.texi tm.texi
$(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi
dvi: gcc.dvi cpp.dvi lang.dvi
-gcc.dvi: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi $(srcdir)/tm.texi $(srcdir)/gcov.texi
+gcc.dvi: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi $(srcdir)/tm.texi
TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex gcc.texi
texindex gcc.??
TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex gcc.texi
@@ -2182,7 +1947,7 @@ cpp.dvi: $(srcdir)/cpp.texi
TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex cpp.texi
# CYGNUS LOCAL doc
-usegcc.dvi: usegcc.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/gcov.texi
+usegcc.dvi: usegcc.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi $(srcdir)/md.texi
TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex usegcc.texi
texindex usegcc.??
TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex usegcc.texi
@@ -2195,7 +1960,7 @@ usegcc.texi: $(srcdir)/gcc.texi
$(srcdir)/gcc.texi > usegcc.texi
-usegcc.info: usegcc.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi $(srcdir)/gcov.texi
+usegcc.info: usegcc.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi
$(MAKEINFO) -I$(srcdir) -o usegcc.info usegcc.texi
# CYGNUS LOCAL: don't rebuild gcc/INSTALL, ever.
@@ -2241,10 +2006,7 @@ mostlyclean: lang.mostlyclean
# Delete some files made during installation.
-rm -f specs float.h-* enquire SYSCALLS.c.X SYSCALLS.c
-rm -f collect mips-tfile mips-tdump alloca.s
-# Delete files generated for fixproto
# CYGNUS LOCAL: binary installation
- -rm -rf fix-header xsys-protos.h deduced.h tmp-deduced.h \
- fixproto-defines gen-protos fixproto.list fixtmp.* fixhdr.ready
# Delete unwanted output files from TeX.
-rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg
-rm -f */*.toc */*.log */*.vr */*.fn */*.cp */*.tp */*.ky */*.pg
@@ -2426,51 +2188,6 @@ install-common: native installdirs lang.install-common
$(INSTALL_DATA) specs $(libsubdir)/specs; \
chmod a-x $(libsubdir)/specs; \
fi
-# Install protoize if it was compiled.
- -if [ -f protoize$(exeext) ]; \
- then \
- if [ -f gcc-cross$(exeext) ] ; then \
- rm -f $(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
- $(INSTALL_PROGRAM) protoize$(exeext) $(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
- rm -f $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
- $(INSTALL_PROGRAM) unprotoize$(exeext) $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
- else \
- rm -f $(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
- $(INSTALL_PROGRAM) protoize$(exeext) $(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
- rm -f $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
- $(INSTALL_PROGRAM) unprotoize$(exeext) $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
- fi ; \
- rm -f $(libsubdir)/SYSCALLS.c.X; \
- $(INSTALL_DATA) SYSCALLS.c.X $(libsubdir)/SYSCALLS.c.X; \
- chmod a-x $(libsubdir)/SYSCALLS.c.X; \
- fi
- -rm -f $(libsubdir)/cpp$(exeext)
- $(INSTALL_PROGRAM) cpp$(exeext) $(libsubdir)/cpp$(exeext)
-# Install gcov if it was compiled.
- -if [ -f gcov$(exeext) ]; \
- then \
- rm -f $(bindir)/gcov$(exeext); \
- $(INSTALL_PROGRAM) gcov$(exeext) $(bindir)/gcov$(exeext); \
- chmod a+x $(bindir)/gcov$(exeext); \
- fi
-# CYGNUS LOCAL: binary installation
-# This is for the sake of binary installation.
-# If newlib exists, then we don't want to run fixincludes or fix-header.
-# Otherwise, install them if they exist and should be run.
- if [ -d $(objdir)/../$(target_alias)/newlib ] ; then \
- true ; \
- else \
- if [ -d $(gcc_tooldir)/install-tools ] ; then true ; else mkdir $(gcc_tooldir)/install-tools ; fi ; \
- if [ x$(FIXINCLUDES) != xMakefile.in ] ; then \
- $(INSTALL_PROGRAM) $(srcdir)/$(FIXINCLUDES) $(gcc_tooldir)/install-tools/fixincludes ; \
- else true; fi; \
- if [ -f fix-header ] ; then \
- $(INSTALL_PROGRAM) fix-header $(gcc_tooldir)/install-tools/fix-header ; \
- $(INSTALL_PROGRAM) $(srcdir)/fixproto $(gcc_tooldir)/install-tools/fixproto ; \
- $(INSTALL_PROGRAM) fixproto-defines $(gcc_tooldir)/install-tools/fixproto-defines ; \
- else true; fi; \
- fi
-# END CYGNUS LOCAL
# Install the driver program as $(target_alias)-gcc
# and also as either gcc (if native) or $(gcc_tooldir)/bin/gcc.
@@ -2490,17 +2207,6 @@ install-driver: xgcc$(exeext)
mv $(bindir)/$(target_alias)-gcc-1$(exeext) $(bindir)/$(target_alias)-gcc$(exeext); \
fi
-# CYGNUS LOCAL: compile-man-sysv
-# Some system V machines don't come with nroff so we'll work out the
-# pages here for them.
-compile-man-sysv:
- for i in gcc cccp protoize unprotoize ; do \
- nroff -man $$i.1 | col -b > $$i.t ; \
- pack $$i.t ; rm -f $$i.t; \
- mv $$i.t.z $$i.z ;\
- done
-# END CYGNUS LOCAL
-
# Install the info files.
# $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
# to do the install. The sed rule was copied from stmp-int-hdrs.
@@ -2629,14 +2335,9 @@ uninstall: lang.uninstall
-rm -rf $(libsubdir)
-rm -rf $(bindir)/$(GCC_INSTALL_NAME)$(exeext)
-rm -rf $(bindir)/$(GCC_CROSS_NAME)$(exeext)
- -rm -rf $(bindir)/protoize$(exeext)
- -rm -rf $(bindir)/unprotoize$(exeext)
- -rm -rf $(bindir)/gcov$(exeext)
-rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(manext)
-rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(manext)
-rm -rf $(man1dir)/cccp$(manext)
- -rm -rf $(man1dir)/protoize$(manext)
- -rm -rf $(man1dir)/unprotoize$(manext)
# CYGNUS LOCAL: We install cpp.1.
-rm -rf $(man1dir)/cpp$(manext)
-rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
diff --git a/gcc/fix-header.c b/gcc/fix-header.c
deleted file mode 100755
index 5ac167f..0000000
--- a/gcc/fix-header.c
+++ /dev/null
@@ -1,1437 +0,0 @@
-/* fix-header.c - Make C header file suitable for C++.
- Copyright (C) 1993, 94-97, 1998 Free Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-/* This program massages a system include file (such as stdio.h),
- into a form that is compatible with GNU C and GNU C++.
-
- * extern "C" { ... } braces are added (inside #ifndef __cplusplus),
- if they seem to be needed. These prevent C++ compilers from name
- mangling the functions inside the braces.
-
- * If an old-style incomplete function declaration is seen (without
- an argument list), and it is a "standard" function listed in
- the file sys-protos.h (and with a non-empty argument list), then
- the declaration is converted to a complete prototype by replacing
- the empty parameter list with the argument list from sys-protos.h.
-
- * The program can be given a list of (names of) required standard
- functions (such as fclose for stdio.h). If a required function
- is not seen in the input, then a prototype for it will be
- written to the output.
-
- * If all of the non-comment code of the original file is protected
- against multiple inclusion:
- #ifndef FOO
- #define FOO
- <body of include file>
- #endif
- then extra matter added to the include file is placed inside the <body>.
-
- * If the input file is OK (nothing needs to be done);
- the output file is not written (nor removed if it exists).
-
- There are also some special actions that are done for certain
- well-known standard include files:
-
- * If argv[1] is "sys/stat.h", the Posix.1 macros
- S_ISBLK, S_ISCHR, S_ISDIR, S_ISFIFO, S_ISLNK, S_ISREG are added if
- they were missing, and the corresponding "traditional" S_IFxxx
- macros were defined.
-
- * If argv[1] is "errno.h", errno is declared if it was missing.
-
- * TODO: The input file should be read complete into memory, because:
- a) it needs to be scanned twice anyway, and
- b) it would be nice to allow update in place.
-
- Usage:
- fix-header FOO.H INFILE.H OUTFILE.H [OPTIONS]
- where:
- * FOO.H is the relative file name of the include file,
- as it would be #include'd by a C file. (E.g. stdio.h)
- * INFILE.H is a full pathname for the input file (e.g. /usr/include/stdio.h)
- * OUTFILE.H is the full pathname for where to write the output file,
- if anything needs to be done. (e.g. ./include/stdio.h)
- * OPTIONS are such as you would pass to cpp.
-
- Written by Per Bothner <bothner@cygnus.com>, July 1993. */
-
-#include "hconfig.h"
-#include "system.h"
-#include "obstack.h"
-#include "scan.h"
-#include "cpplib.h"
-#include "cpphash.h"
-
-static void v_fatal PROTO ((const char *, va_list)) ATTRIBUTE_NORETURN;
-void fatal PVPROTO ((const char *, ...)) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
-
-sstring buf;
-
-int verbose = 0;
-int partial_count = 0;
-int warnings = 0;
-
-/* We no longer need to add extern "C", because cpp implicitly
- forces the standard include files to be treated as C. */
-/*#define ADD_MISSING_EXTERN_C 1 */
-
-#if ADD_MISSING_EXTERN_C
-int missing_extern_C_count = 0;
-#endif
-
-#include "xsys-protos.h"
-
-#ifdef FIXPROTO_IGNORE_LIST
-/* This is a currently unused feature. */
-
-/* List of files and directories to ignore.
- A directory name (ending in '/') means ignore anything in that
- directory. (It might be more efficient to do directory pruning
- earlier in fixproto, but this is simpler and easier to customize.) */
-
-static char *files_to_ignore[] = {
- "X11/",
- FIXPROTO_IGNORE_LIST
- 0
-};
-#endif
-
-char *inf_buffer;
-char *inf_limit;
-char *inf_ptr;
-
-/* Certain standard files get extra treatment */
-
-enum special_file
-{
- no_special,
-#ifdef errno_h
-#undef errno_h
-#endif
- errno_h,
-#ifdef stdio_h
-#undef stdio_h
-#endif
- stdio_h,
-#ifdef stdlib_h
-#undef stdlib_h
-#endif
- stdlib_h,
-#ifdef sys_stat_h
-#undef sys_stat_h
-#endif
- sys_stat_h
-};
-
-/* A NAMELIST is a sequence of names, separated by '\0', and terminated
- by an empty name (i.e. by "\0\0"). */
-
-typedef const char *namelist;
-
-/* The following macros provide the bits for symbol_flags. */
-typedef int symbol_flags;
-
-/* Used to mark names defined in the ANSI/ISO C standard. */
-#define ANSI_SYMBOL 1
-
-/* We no longer massage include files for POSIX or XOPEN symbols,
- as there are now several versions of the POSIX and XOPEN standards,
- and it would be a maintenance nightmare for us to track them all.
- Better to be compatible with the system include files. */
-/*#define ADD_MISSING_POSIX 1 */
-/*#define ADD_MISSING_XOPEN 1 */
-
-#if ADD_MISSING_POSIX
-/* Used to mark names defined in the Posix.1 or Posix.2 standard. */
-#define POSIX1_SYMBOL 2
-#define POSIX2_SYMBOL 4
-#else
-#define POSIX1_SYMBOL 0
-#define POSIX2_SYMBOL 0
-#endif
-
-#if ADD_MISSING_XOPEN
-/* Used to mark names defined in X/Open Portability Guide. */
-#define XOPEN_SYMBOL 8
-/* Used to mark names defined in X/Open UNIX Extensions. */
-#define XOPEN_EXTENDED_SYMBOL 16
-#else
-#define XOPEN_SYMBOL 0
-#define XOPEN_EXTENDED_SYMBOL 0
-#endif
-
-/* Used to indicate names that are not functions */
-#define MACRO_SYMBOL 512
-
-struct symbol_list {
- symbol_flags flags;
- namelist names;
-};
-
-#define SYMBOL_TABLE_SIZE 10
-struct symbol_list symbol_table[SYMBOL_TABLE_SIZE];
-int cur_symbol_table_size;
-
-void
-add_symbols (flags, names)
- symbol_flags flags;
- namelist names;
-{
- symbol_table[cur_symbol_table_size].flags = flags;
- symbol_table[cur_symbol_table_size].names = names;
- cur_symbol_table_size++;
- if (cur_symbol_table_size >= SYMBOL_TABLE_SIZE)
- fatal ("too many calls to add_symbols");
- symbol_table[cur_symbol_table_size].names = NULL; /* Termination. */
-}
-
-struct std_include_entry {
- const char *name;
- symbol_flags flags;
- namelist names;
-};
-
-const char NONE[] = ""; /* The empty namelist. */
-
-/* Special name to indicate a continuation line in std_include_table. */
-const char CONTINUED[] = "";
-
-struct std_include_entry *include_entry;
-
-struct std_include_entry std_include_table [] = {
- { "ctype.h", ANSI_SYMBOL,
- "isalnum\0isalpha\0iscntrl\0isdigit\0isgraph\0islower\0\
-isprint\0ispunct\0isspace\0isupper\0isxdigit\0tolower\0toupper\0" },
-
- { "dirent.h", POSIX1_SYMBOL, "closedir\0opendir\0readdir\0rewinddir\0"},
-
- { "errno.h", ANSI_SYMBOL|MACRO_SYMBOL, "errno\0" },
-
- /* ANSI_SYMBOL is wrong, but ... */
- { "curses.h", ANSI_SYMBOL, "box\0delwin\0endwin\0getcurx\0getcury\0initscr\0\
-mvcur\0mvwprintw\0mvwscanw\0newwin\0overlay\0overwrite\0\
-scroll\0subwin\0touchwin\0waddstr\0wclear\0wclrtobot\0wclrtoeol\0\
-waddch\0wdelch\0wdeleteln\0werase\0wgetch\0wgetstr\0winsch\0winsertln\0\
-wmove\0wprintw\0wrefresh\0wscanw\0wstandend\0wstandout\0" },
-
- { "fcntl.h", POSIX1_SYMBOL, "creat\0fcntl\0open\0" },
-
- /* Maybe also "getgrent fgetgrent setgrent endgrent" */
- { "grp.h", POSIX1_SYMBOL, "getgrgid\0getgrnam\0" },
-
-/*{ "limit.h", ... provided by gcc }, */
-
- { "locale.h", ANSI_SYMBOL, "localeconv\0setlocale\0" },
-
- { "math.h", ANSI_SYMBOL,
- "acos\0asin\0atan\0atan2\0ceil\0cos\0cosh\0exp\0\
-fabs\0floor\0fmod\0frexp\0ldexp\0log10\0log\0modf\0pow\0sin\0sinh\0sqrt\0\
-tan\0tanh\0" },
-
- { CONTINUED, ANSI_SYMBOL|MACRO_SYMBOL, "HUGE_VAL\0" },
-
- { "pwd.h", POSIX1_SYMBOL, "getpwnam\0getpwuid\0" },
-
- /* Left out siglongjmp sigsetjmp - these depend on sigjmp_buf. */
- { "setjmp.h", ANSI_SYMBOL, "longjmp\0setjmp\0" },
-
- /* Left out signal() - its prototype is too complex for us!
- Also left out "sigaction sigaddset sigdelset sigemptyset
- sigfillset sigismember sigpending sigprocmask sigsuspend"
- because these need sigset_t or struct sigaction.
- Most systems that provide them will also declare them. */
- { "signal.h", ANSI_SYMBOL, "kill\0raise\0" },
-
- { "stdio.h", ANSI_SYMBOL,
- "clearerr\0fclose\0feof\0ferror\0fflush\0fgetc\0fgetpos\0\
-fgets\0fopen\0fprintf\0fputc\0fputs\0fread\0freopen\0fscanf\0fseek\0\
-fsetpos\0ftell\0fwrite\0getc\0getchar\0gets\0perror\0\
-printf\0putc\0putchar\0puts\0remove\0rename\0rewind\0scanf\0setbuf\0\
-setvbuf\0sprintf\0sscanf\0vprintf\0vsprintf\0vfprintf\0tmpfile\0\
-tmpnam\0ungetc\0" },
- { CONTINUED, POSIX1_SYMBOL, "fdopen\0fileno\0" },
- { CONTINUED, POSIX2_SYMBOL, "pclose\0popen\0" }, /* I think ... */
-/* Should perhaps also handle NULL, EOF, ... ? */
-
- /* "div ldiv", - ignored because these depend on div_t, ldiv_t
- ignore these: "mblen mbstowcs mbstowc wcstombs wctomb"
- Left out getgroups, because SunOS4 has incompatible BSD and SVR4 versions.
- Should perhaps also add NULL */
- { "stdlib.h", ANSI_SYMBOL,
- "abort\0abs\0atexit\0atof\0atoi\0atol\0bsearch\0calloc\0\
-exit\0free\0getenv\0labs\0malloc\0putenv\0qsort\0rand\0realloc\0\
-srand\0strtod\0strtol\0strtoul\0system\0" },
- { CONTINUED, ANSI_SYMBOL|MACRO_SYMBOL, "EXIT_FAILURE\0EXIT_SUCCESS\0" },
-
- { "string.h", ANSI_SYMBOL, "memchr\0memcmp\0memcpy\0memmove\0memset\0\
-strcat\0strchr\0strcmp\0strcoll\0strcpy\0strcspn\0strerror\0\
-strlen\0strncat\0strncmp\0strncpy\0strpbrk\0strrchr\0strspn\0strstr\0\
-strtok\0strxfrm\0" },
-/* Should perhaps also add NULL and size_t */
-
- { "strings.h", XOPEN_EXTENDED_SYMBOL,
- "bcmp\0bcopy\0bzero\0ffs\0index\0rindex\0strcasecmp\0strncasecmp\0" },
-
- { "strops.h", XOPEN_EXTENDED_SYMBOL, "ioctl\0" },
-
- /* Actually, XPG4 does not seem to have <sys/ioctl.h>, but defines
- ioctl in <strops.h>. However, many systems have it is sys/ioctl.h,
- and many systems do have <sys/ioctl.h> but not <strops.h>. */
- { "sys/ioctl.h", XOPEN_EXTENDED_SYMBOL, "ioctl\0" },
-
- { "sys/socket.h", XOPEN_EXTENDED_SYMBOL, "socket\0" },
-
- { "sys/stat.h", POSIX1_SYMBOL,
- "chmod\0fstat\0mkdir\0mkfifo\0stat\0lstat\0umask\0" },
- { CONTINUED, POSIX1_SYMBOL|MACRO_SYMBOL,
- "S_ISDIR\0S_ISBLK\0S_ISCHR\0S_ISFIFO\0S_ISREG\0S_ISLNK\0S_IFDIR\0\
-S_IFBLK\0S_IFCHR\0S_IFIFO\0S_IFREG\0S_IFLNK\0" },
- { CONTINUED, XOPEN_EXTENDED_SYMBOL, "fchmod\0" },
-
-#if 0
-/* How do we handle fd_set? */
- { "sys/time.h", XOPEN_EXTENDED_SYMBOL, "select\0" },
- { "sys/select.h", XOPEN_EXTENDED_SYMBOL /* fake */, "select\0" },
-#endif
-
- { "sys/times.h", POSIX1_SYMBOL, "times\0" },
- /* "sys/types.h" add types (not in old g++-include) */
-
- { "sys/utsname.h", POSIX1_SYMBOL, "uname\0" },
-
- { "sys/wait.h", POSIX1_SYMBOL, "wait\0waitpid\0" },
- { CONTINUED, POSIX1_SYMBOL|MACRO_SYMBOL,
- "WEXITSTATUS\0WIFEXITED\0WIFSIGNALED\0WIFSTOPPED\0WSTOPSIG\0\
-WTERMSIG\0WNOHANG\0WNOTRACED\0" },
-
- { "tar.h", POSIX1_SYMBOL, NONE },
-
- { "termios.h", POSIX1_SYMBOL,
- "cfgetispeed\0cfgetospeed\0cfsetispeed\0cfsetospeed\0tcdrain\0tcflow\0tcflush\0tcgetattr\0tcsendbreak\0tcsetattr\0" },
-
- { "time.h", ANSI_SYMBOL,
- "asctime\0clock\0ctime\0difftime\0gmtime\0localtime\0mktime\0strftime\0time\0tzset\0" },
-
- { "unistd.h", POSIX1_SYMBOL,
- "_exit\0access\0alarm\0chdir\0chown\0close\0ctermid\0cuserid\0\
-dup\0dup2\0execl\0execle\0execlp\0execv\0execve\0execvp\0fork\0fpathconf\0\
-getcwd\0getegid\0geteuid\0getgid\0getlogin\0getpgrp\0getpid\0\
-getppid\0getuid\0isatty\0link\0lseek\0pathconf\0pause\0pipe\0read\0rmdir\0\
-setgid\0setpgid\0setsid\0setuid\0sleep\0sysconf\0tcgetpgrp\0tcsetpgrp\0\
-ttyname\0unlink\0write\0" },
- { CONTINUED, POSIX2_SYMBOL, "getopt\0" },
- { CONTINUED, XOPEN_EXTENDED_SYMBOL,
- "lockf\0gethostid\0gethostname\0readlink\0symlink\0" },
-
- { "utime.h", POSIX1_SYMBOL, "utime\0" },
-
- { NULL, 0, NONE }
-};
-
-enum special_file special_file_handling = no_special;
-
-/* They are set if the corresponding macro has been seen. */
-/* The following are only used when handling sys/stat.h */
-int seen_S_IFBLK = 0, seen_S_ISBLK = 0;
-int seen_S_IFCHR = 0, seen_S_ISCHR = 0;
-int seen_S_IFDIR = 0, seen_S_ISDIR = 0;
-int seen_S_IFIFO = 0, seen_S_ISFIFO = 0;
-int seen_S_IFLNK = 0, seen_S_ISLNK = 0;
-int seen_S_IFREG = 0, seen_S_ISREG = 0;
-/* The following are only used when handling errno.h */
-int seen_errno = 0;
-/* The following are only used when handling stdlib.h */
-int seen_EXIT_FAILURE = 0, seen_EXIT_SUCCESS = 0;
-
-/* Wrapper around free, to avoid prototype clashes. */
-
-void
-xfree (ptr)
- char *ptr;
-{
- free (ptr);
-}
-
-/* Avoid error if config defines abort as fancy_abort.
- It's not worth "really" implementing this because ordinary
- compiler users never run fix-header. */
-
-void
-fancy_abort ()
-{
- abort ();
-}
-
-#define obstack_chunk_alloc xmalloc
-#define obstack_chunk_free xfree
-struct obstack scan_file_obstack;
-
-/* NOTE: If you edit this, also edit gen-protos.c !! */
-
-struct fn_decl *
-lookup_std_proto (name, name_length)
- const char *name;
- int name_length;
-{
- int i = hashf (name, name_length, HASH_SIZE);
- int i0 = i;
- for (;;)
- {
- struct fn_decl *fn;
- if (hash_tab[i] == 0)
- return NULL;
- fn = &std_protos[hash_tab[i]];
- if ((int) strlen (fn->fname) == name_length
- && strncmp (fn->fname, name, name_length) == 0)
- return fn;
- i = (i+1) % HASH_SIZE;
- if (i == i0)
- abort ();
- }
-}
-
-char *inc_filename;
-int inc_filename_length;
-char *progname = "fix-header";
-FILE *outf;
-sstring line;
-
-int lbrac_line, rbrac_line;
-
-int required_unseen_count = 0;
-int required_other = 0;
-
-void
-write_lbrac ()
-{
-
-#if ADD_MISSING_EXTERN_C
- if (missing_extern_C_count + required_unseen_count > 0)
- fprintf (outf, "#ifdef __cplusplus\nextern \"C\" {\n#endif\n");
-#endif
-
- if (partial_count)
- {
- fprintf (outf, "#ifndef _PARAMS\n");
- fprintf (outf, "#if defined(__STDC__) || defined(__cplusplus)\n");
- fprintf (outf, "#define _PARAMS(ARGS) ARGS\n");
- fprintf (outf, "#else\n");
- fprintf (outf, "#define _PARAMS(ARGS) ()\n");
- fprintf (outf, "#endif\n#endif /* _PARAMS */\n");
- }
-}
-
-struct partial_proto
-{
- struct partial_proto *next;
- char *fname; /* name of function */
- char *rtype; /* return type */
- struct fn_decl *fn;
- int line_seen;
-};
-
-struct partial_proto *partial_proto_list = NULL;
-
-struct partial_proto required_dummy_proto, seen_dummy_proto;
-#define REQUIRED(FN) ((FN)->partial == &required_dummy_proto)
-#define SET_REQUIRED(FN) ((FN)->partial = &required_dummy_proto)
-#define SET_SEEN(FN) ((FN)->partial = &seen_dummy_proto)
-#define SEEN(FN) ((FN)->partial == &seen_dummy_proto)
-
-void
-recognized_macro (fname)
- char *fname;
-{
- /* The original include file defines fname as a macro. */
- struct fn_decl *fn = lookup_std_proto (fname, strlen (fname));
-
- /* Since fname is a macro, don't require a prototype for it. */
- if (fn)
- {
- if (REQUIRED (fn))
- required_unseen_count--;
- SET_SEEN (fn);
- }
-
- switch (special_file_handling)
- {
- case errno_h:
- if (strcmp (fname, "errno") == 0 && !seen_errno)
- seen_errno = 1, required_other--;
- break;
- case stdlib_h:
- if (strcmp (fname, "EXIT_FAILURE") == 0 && !seen_EXIT_FAILURE)
- seen_EXIT_FAILURE = 1, required_other--;
- if (strcmp (fname, "EXIT_SUCCESS") == 0 && !seen_EXIT_SUCCESS)
- seen_EXIT_SUCCESS = 1, required_other--;
- break;
- case sys_stat_h:
- if (fname[0] == 'S' && fname[1] == '_')
- {
- if (strcmp (fname, "S_IFBLK") == 0) seen_S_IFBLK++;
- else if (strcmp (fname, "S_ISBLK") == 0) seen_S_ISBLK++;
- else if (strcmp (fname, "S_IFCHR") == 0) seen_S_IFCHR++;
- else if (strcmp (fname, "S_ISCHR") == 0) seen_S_ISCHR++;
- else if (strcmp (fname, "S_IFDIR") == 0) seen_S_IFDIR++;
- else if (strcmp (fname, "S_ISDIR") == 0) seen_S_ISDIR++;
- else if (strcmp (fname, "S_IFIFO") == 0) seen_S_IFIFO++;
- else if (strcmp (fname, "S_ISFIFO") == 0) seen_S_ISFIFO++;
- else if (strcmp (fname, "S_IFLNK") == 0) seen_S_IFLNK++;
- else if (strcmp (fname, "S_ISLNK") == 0) seen_S_ISLNK++;
- else if (strcmp (fname, "S_IFREG") == 0) seen_S_IFREG++;
- else if (strcmp (fname, "S_ISREG") == 0) seen_S_ISREG++;
- }
- break;
-
- default:
- break;
- }
-}
-
-void
-recognized_extern (name, name_length, type, type_length)
- char *name;
- char *type;
- int name_length, type_length;
-{
- switch (special_file_handling)
- {
- case errno_h:
- if (name_length == 5 && strncmp (name, "errno", 5) == 0 && !seen_errno)
- seen_errno = 1, required_other--;
- break;
-
- default:
- break;
- }
-}
-
-/* Called by scan_decls if it saw a function definition for a function
- named FNAME, with return type RTYPE, and argument list ARGS,
- in source file FILE_SEEN on line LINE_SEEN.
- KIND is 'I' for an inline function;
- 'F' if a normal function declaration preceded by 'extern "C"'
- (or nested inside 'extern "C"' braces); or
- 'f' for other function declarations. */
-
-void
-recognized_function (fname, fname_length,
- kind, rtype, rtype_length,
- have_arg_list, file_seen, line_seen)
- char *fname;
- int fname_length;
- int kind; /* One of 'f' 'F' or 'I' */
- char *rtype;
- int rtype_length;
- int have_arg_list;
- char *file_seen;
- int line_seen;
-{
- struct partial_proto *partial;
- int i;
- struct fn_decl *fn;
-#if ADD_MISSING_EXTERN_C
- if (kind == 'f')
- missing_extern_C_count++;
-#endif
-
- fn = lookup_std_proto (fname, fname_length);
-
- /* Remove the function from the list of required function. */
- if (fn)
- {
- if (REQUIRED (fn))
- required_unseen_count--;
- SET_SEEN (fn);
- }
-
- /* If we have a full prototype, we're done. */
- if (have_arg_list)
- return;
-
- if (kind == 'I') /* don't edit inline function */
- return;
-
- /* If the partial prototype was included from some other file,
- we don't need to patch it up (in this run). */
- i = strlen (file_seen);
- if (i < inc_filename_length
- || strcmp (inc_filename, file_seen + (i - inc_filename_length)) != 0)
- return;
-
- if (fn == NULL)
- return;
- if (fn->params[0] == '\0' || strcmp (fn->params, "void") == 0)
- return;
-
- /* We only have a partial function declaration,
- so remember that we have to add a complete prototype. */
- partial_count++;
- partial = (struct partial_proto *)
- obstack_alloc (&scan_file_obstack, sizeof (struct partial_proto));
- partial->fname = obstack_alloc (&scan_file_obstack, fname_length + 1);
- bcopy (fname, partial->fname, fname_length);
- partial->fname[fname_length] = 0;
- partial->rtype = obstack_alloc (&scan_file_obstack, rtype_length + 1);
- sprintf (partial->rtype, "%.*s", rtype_length, rtype);
- partial->line_seen = line_seen;
- partial->fn = fn;
- fn->partial = partial;
- partial->next = partial_proto_list;
- partial_proto_list = partial;
- if (verbose)
- {
- fprintf (stderr, "(%s: %s non-prototype function declaration.)\n",
- inc_filename, partial->fname);
- }
-}
-
-/* For any name in NAMES that is defined as a macro,
- call recognized_macro on it. */
-
-void
-check_macro_names (pfile, names)
- cpp_reader *pfile;
- namelist names;
-{
- while (*names)
- {
- if (cpp_lookup (pfile, names, -1, -1))
- recognized_macro (names);
- names += strlen (names) + 1;
- }
-}
-
-void
-read_scan_file (in_fname, argc, argv)
- char *in_fname;
- int argc;
- char **argv;
-{
- cpp_reader scan_in;
- cpp_options scan_options;
- struct fn_decl *fn;
- int i;
- register struct symbol_list *cur_symbols;
-
- obstack_init (&scan_file_obstack);
-
- cpp_reader_init (&scan_in);
- scan_in.opts = &scan_options;
- cpp_options_init (&scan_options);
- i = cpp_handle_options (&scan_in, argc, argv);
- if (i < argc && ! CPP_FATAL_ERRORS (&scan_in))
- cpp_fatal (&scan_in, "Invalid option `%s'", argv[i]);
- if (CPP_FATAL_ERRORS (&scan_in))
- exit (FATAL_EXIT_CODE);
-
- if (! cpp_start_read (&scan_in, in_fname))
- exit (FATAL_EXIT_CODE);
- CPP_OPTIONS (&scan_in)->no_line_commands = 1;
-
- scan_decls (&scan_in, argc, argv);
- for (cur_symbols = &symbol_table[0]; cur_symbols->names; cur_symbols++)
- check_macro_names (&scan_in, cur_symbols->names);
-
- if (verbose && (scan_in.errors + warnings) > 0)
- fprintf (stderr, "(%s: %d errors and %d warnings from cpp)\n",
- inc_filename, scan_in.errors, warnings);
- if (scan_in.errors)
- exit (SUCCESS_EXIT_CODE);
-
- /* Traditionally, getc and putc are defined in terms of _filbuf and _flsbuf.
- If so, those functions are also required. */
- if (special_file_handling == stdio_h
- && (fn = lookup_std_proto ("_filbuf", 7)) != NULL)
- {
- static char getchar_call[] = "getchar();";
- cpp_buffer *buf
- = cpp_push_buffer (&scan_in, getchar_call, sizeof(getchar_call) - 1);
- int old_written = CPP_WRITTEN (&scan_in);
- int seen_filbuf = 0;
-
- /* Scan the macro expansion of "getchar();". */
- for (;;)
- {
- enum cpp_token token = cpp_get_token (&scan_in);
- int length = CPP_WRITTEN (&scan_in) - old_written;
- CPP_SET_WRITTEN (&scan_in, old_written);
- if (token == CPP_EOF) /* Should not happen ... */
- break;
- if (token == CPP_POP && CPP_BUFFER (&scan_in) == buf)
- {
- cpp_pop_buffer (&scan_in);
- break;
- }
- if (token == CPP_NAME && length == 7
- && strcmp ("_filbuf", scan_in.token_buffer + old_written) == 0)
- seen_filbuf++;
- }
- if (seen_filbuf)
- {
- int need_filbuf = !SEEN (fn) && !REQUIRED (fn);
- struct fn_decl *flsbuf_fn = lookup_std_proto ("_flsbuf", 7);
- int need_flsbuf
- = flsbuf_fn && !SEEN (flsbuf_fn) && !REQUIRED (flsbuf_fn);
-
- /* Append "_filbuf" and/or "_flsbuf" to the required functions. */
- if (need_filbuf + need_flsbuf)
- {
- char *new_list;
- if (need_filbuf)
- SET_REQUIRED (fn);
- if (need_flsbuf)
- SET_REQUIRED (flsbuf_fn);
- if (need_flsbuf + need_filbuf == 2)
- new_list = "_filbuf\0_flsbuf\0";
- else if (need_flsbuf)
- new_list = "_flsbuf\0";
- else /* if (need_flsbuf) */
- new_list = "_filbuf\0";
- add_symbols (ANSI_SYMBOL, new_list);
- required_unseen_count += need_filbuf + need_flsbuf;
- }
- }
- }
-
- if (required_unseen_count + partial_count + required_other
-#if ADD_MISSING_EXTERN_C
- + missing_extern_C_count
-#endif
- == 0)
- {
- if (verbose)
- fprintf (stderr, "%s: OK, nothing needs to be done.\n", inc_filename);
- exit (SUCCESS_EXIT_CODE);
- }
- if (!verbose)
- fprintf (stderr, "%s: fixing %s\n", progname, inc_filename);
- else
- {
- if (required_unseen_count)
- fprintf (stderr, "%s: %d missing function declarations.\n",
- inc_filename, required_unseen_count);
- if (partial_count)
- fprintf (stderr, "%s: %d non-prototype function declarations.\n",
- inc_filename, partial_count);
-#if ADD_MISSING_EXTERN_C
- if (missing_extern_C_count)
- fprintf (stderr,
- "%s: %d declarations not protected by extern \"C\".\n",
- inc_filename, missing_extern_C_count);
-#endif
- }
-}
-
-void
-write_rbrac ()
-{
- struct fn_decl *fn;
- const char *cptr;
- register struct symbol_list *cur_symbols;
-
- if (required_unseen_count)
- {
-#ifdef NO_IMPLICIT_EXTERN_C
- fprintf (outf, "#ifdef __cplusplus\nextern \"C\" {\n#endif\n");
-#endif
- }
-
- /* Now we print out prototypes for those functions that we haven't seen. */
- for (cur_symbols = &symbol_table[0]; cur_symbols->names; cur_symbols++)
- {
- int if_was_emitted = 0;
- int name_len;
- cptr = cur_symbols->names;
- for ( ; (name_len = strlen (cptr)) != 0; cptr+= name_len + 1)
- {
- int macro_protect = 0;
-
- if (cur_symbols->flags & MACRO_SYMBOL)
- continue;
-
- fn = lookup_std_proto (cptr, name_len);
- if (fn == NULL || !REQUIRED (fn))
- continue;
-
- if (!if_was_emitted)
- {
-/* what about curses. ??? or _flsbuf/_filbuf ??? */
- if (cur_symbols->flags & ANSI_SYMBOL)
- fprintf (outf,
- "#if defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus) || defined (__STRICT_ANSI__)\n");
- else if (cur_symbols->flags & (POSIX1_SYMBOL|POSIX2_SYMBOL))
- fprintf (outf,
- "#if defined(__USE_FIXED_PROTOTYPES__) || (defined(__cplusplus) \\\n\
- ? (!defined(__STRICT_ANSI__) || defined(_POSIX_SOURCE)) \\\n\
- : (defined(__STRICT_ANSI__) && defined(_POSIX_SOURCE)))\n");
- else if (cur_symbols->flags & XOPEN_SYMBOL)
- {
- fprintf (outf,
- "#if defined(__USE_FIXED_PROTOTYPES__) \\\n\
- || (defined(__STRICT_ANSI__) && defined(_XOPEN_SOURCE))\n");
- }
- else if (cur_symbols->flags & XOPEN_EXTENDED_SYMBOL)
- {
- fprintf (outf,
- "#if defined(__USE_FIXED_PROTOTYPES__) \\\n\
- || (defined(__STRICT_ANSI__) && defined(_XOPEN_EXTENDED_SOURCE))\n");
- }
- else
- {
- fatal ("internal error for function %s", fn->fname);
- }
- if_was_emitted = 1;
- }
-
- /* In the case of memmove, protect in case the application
- defines it as a macro before including the header. */
- if (!strcmp (fn->fname, "memmove")
- || !strcmp (fn->fname, "vprintf")
- || !strcmp (fn->fname, "vfprintf")
- || !strcmp (fn->fname, "vsprintf")
- || !strcmp (fn->fname, "rewinddir")
- || !strcmp (fn->fname, "abort"))
- macro_protect = 1;
-
- if (macro_protect)
- fprintf (outf, "#ifndef %s\n", fn->fname);
- fprintf (outf, "extern %s %s (%s);\n",
- fn->rtype, fn->fname, fn->params);
- if (macro_protect)
- fprintf (outf, "#endif\n");
- }
- if (if_was_emitted)
- fprintf (outf,
- "#endif /* defined(__USE_FIXED_PROTOTYPES__) || ... */\n");
- }
- if (required_unseen_count)
- {
-#ifdef NO_IMPLICIT_EXTERN_C
- fprintf (outf, "#ifdef __cplusplus\n}\n#endif\n");
-#endif
- }
-
- switch (special_file_handling)
- {
- case errno_h:
- if (!seen_errno)
- fprintf (outf, "extern int errno;\n");
- break;
- case stdlib_h:
- if (!seen_EXIT_FAILURE)
- fprintf (outf, "#define EXIT_FAILURE 1\n");
- if (!seen_EXIT_SUCCESS)
- fprintf (outf, "#define EXIT_SUCCESS 0\n");
- break;
- case sys_stat_h:
- if (!seen_S_ISBLK && seen_S_IFBLK)
- fprintf (outf,
- "#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)\n");
- if (!seen_S_ISCHR && seen_S_IFCHR)
- fprintf (outf,
- "#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)\n");
- if (!seen_S_ISDIR && seen_S_IFDIR)
- fprintf (outf,
- "#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)\n");
- if (!seen_S_ISFIFO && seen_S_IFIFO)
- fprintf (outf,
- "#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)\n");
- if (!seen_S_ISLNK && seen_S_IFLNK)
- fprintf (outf,
- "#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)\n");
- if (!seen_S_ISREG && seen_S_IFREG)
- fprintf (outf,
- "#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)\n");
- break;
-
- default:
- break;
- }
-
-
-#if ADD_MISSING_EXTERN_C
- if (missing_extern_C_count + required_unseen_count > 0)
- fprintf (outf, "#ifdef __cplusplus\n}\n#endif\n");
-#endif
-}
-
-/* Returns 1 iff the file is properly protected from multiple inclusion:
- #ifndef PROTECT_NAME
- #define PROTECT_NAME
- #endif
-
- */
-
-#define INF_GET() (inf_ptr < inf_limit ? *(unsigned char *) inf_ptr++ : EOF)
-#define INF_UNGET(c) ((c)!=EOF && inf_ptr--)
-
-int
-inf_skip_spaces (c)
- int c;
-{
- for (;;)
- {
- if (c == ' ' || c == '\t')
- c = INF_GET ();
- else if (c == '/')
- {
- c = INF_GET ();
- if (c != '*')
- {
- (void) INF_UNGET (c);
- return '/';
- }
- c = INF_GET ();
- for (;;)
- {
- if (c == EOF)
- return EOF;
- else if (c != '*')
- {
- if (c == '\n')
- source_lineno++, lineno++;
- c = INF_GET ();
- }
- else if ((c = INF_GET ()) == '/')
- return INF_GET ();
- }
- }
- else
- break;
- }
- return c;
-}
-
-/* Read into STR from inf_buffer upto DELIM. */
-
-int
-inf_read_upto (str, delim)
- sstring *str;
- int delim;
-{
- int ch;
- for (;;)
- {
- ch = INF_GET ();
- if (ch == EOF || ch == delim)
- break;
- SSTRING_PUT (str, ch);
- }
- MAKE_SSTRING_SPACE (str, 1);
- *str->ptr = 0;
- return ch;
-}
-
-int
-inf_scan_ident (s, c)
- register sstring *s;
- int c;
-{
- s->ptr = s->base;
- if (ISALPHA (c) || c == '_')
- {
- for (;;)
- {
- SSTRING_PUT (s, c);
- c = INF_GET ();
- if (c == EOF || !(ISALNUM (c) || c == '_'))
- break;
- }
- }
- MAKE_SSTRING_SPACE (s, 1);
- *s->ptr = 0;
- return c;
-}
-
-/* Returns 1 if the file is correctly protected against multiple
- inclusion, setting *ifndef_line to the line number of the initial #ifndef
- and setting *endif_line to the final #endif.
- Otherwise return 0. */
-
-int
-check_protection (ifndef_line, endif_line)
- int *ifndef_line, *endif_line;
-{
- int c;
- int if_nesting = 1; /* Level of nesting of #if's */
- char *protect_name = NULL; /* Identifier following initial #ifndef */
- int define_seen = 0;
-
- /* Skip initial white space (including comments). */
- for (;; lineno++)
- {
- c = inf_skip_spaces (' ');
- if (c == EOF)
- return 0;
- if (c != '\n')
- break;
- }
- if (c != '#')
- return 0;
- c = inf_scan_ident (&buf, inf_skip_spaces (' '));
- if (SSTRING_LENGTH (&buf) == 0 || strcmp (buf.base, "ifndef") != 0)
- return 0;
-
- /* So far so good: We've seen an initial #ifndef. */
- *ifndef_line = lineno;
- c = inf_scan_ident (&buf, inf_skip_spaces (c));
- if (SSTRING_LENGTH (&buf) == 0 || c == EOF)
- return 0;
- protect_name = xstrdup (buf.base);
-
- (void) INF_UNGET (c);
- c = inf_read_upto (&buf, '\n');
- if (c == EOF)
- return 0;
- lineno++;
-
- for (;;)
- {
- c = inf_skip_spaces (' ');
- if (c == EOF)
- return 0;
- if (c == '\n')
- {
- lineno++;
- continue;
- }
- if (c != '#')
- goto skip_to_eol;
- c = inf_scan_ident (&buf, inf_skip_spaces (' '));
- if (SSTRING_LENGTH (&buf) == 0)
- ;
- else if (!strcmp (buf.base, "ifndef")
- || !strcmp (buf.base, "ifdef") || !strcmp (buf.base, "if"))
- {
- if_nesting++;
- }
- else if (!strcmp (buf.base, "endif"))
- {
- if_nesting--;
- if (if_nesting == 0)
- break;
- }
- else if (!strcmp (buf.base, "else"))
- {
- if (if_nesting == 1)
- return 0;
- }
- else if (!strcmp (buf.base, "define"))
- {
- if (if_nesting != 1)
- goto skip_to_eol;
- c = inf_skip_spaces (c);
- c = inf_scan_ident (&buf, c);
- if (buf.base[0] > 0 && strcmp (buf.base, protect_name) == 0)
- define_seen = 1;
- }
- skip_to_eol:
- for (;;)
- {
- if (c == '\n' || c == EOF)
- break;
- c = INF_GET ();
- }
- if (c == EOF)
- return 0;
- lineno++;
- }
-
- if (!define_seen)
- return 0;
- *endif_line = lineno;
- /* Skip final white space (including comments). */
- for (;;)
- {
- c = inf_skip_spaces (' ');
- if (c == EOF)
- break;
- if (c != '\n')
- return 0;
- }
-
- return 1;
-}
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int inf_fd;
- struct stat sbuf;
- int c;
-#ifdef FIXPROTO_IGNORE_LIST
- int i;
-#endif
- const char *cptr;
- int ifndef_line;
- int endif_line;
- long to_read;
- long int inf_size;
- register struct symbol_list *cur_symbols;
-
- if (argv[0] && argv[0][0])
- {
- register char *p;
-
- progname = 0;
- for (p = argv[0]; *p; p++)
- if (*p == '/')
- progname = p;
- progname = progname ? progname+1 : argv[0];
- }
-
- if (argc < 4)
- {
- fprintf (stderr, "%s: Usage: foo.h infile.h outfile.h options\n",
- progname);
- exit (FATAL_EXIT_CODE);
- }
-
- inc_filename = argv[1];
- inc_filename_length = strlen (inc_filename);
-
-#ifdef FIXPROTO_IGNORE_LIST
- for (i = 0; files_to_ignore[i] != NULL; i++)
- {
- char *ignore_name = files_to_ignore[i];
- int ignore_len = strlen (ignore_name);
- if (strncmp (inc_filename, ignore_name, ignore_len) == 0)
- {
- if (ignore_name[ignore_len-1] == '/'
- || inc_filename[ignore_len] == '\0')
- {
- if (verbose)
- fprintf (stderr, "%s: ignoring %s\n", progname, inc_filename);
- exit (SUCCESS_EXIT_CODE);
- }
- }
-
- }
-#endif
-
- if (strcmp (inc_filename, "sys/stat.h") == 0)
- special_file_handling = sys_stat_h;
- else if (strcmp (inc_filename, "errno.h") == 0)
- special_file_handling = errno_h, required_other++;
- else if (strcmp (inc_filename, "stdlib.h") == 0)
- special_file_handling = stdlib_h, required_other+=2;
- else if (strcmp (inc_filename, "stdio.h") == 0)
- special_file_handling = stdio_h;
- include_entry = std_include_table;
- while (include_entry->name != NULL
- && (include_entry->name == CONTINUED
- || strcmp (inc_filename, include_entry->name) != 0))
- include_entry++;
-
- if (include_entry->name != NULL)
- {
- struct std_include_entry *entry;
- cur_symbol_table_size = 0;
- for (entry = include_entry; ;)
- {
- if (entry->flags)
- add_symbols (entry->flags, entry->names);
- entry++;
- if (entry->name != CONTINUED)
- break;
- }
- }
- else
- symbol_table[0].names = NULL;
-
- /* Count and mark the prototypes required for this include file. */
- for (cur_symbols = &symbol_table[0]; cur_symbols->names; cur_symbols++)
- {
- int name_len;
- if (cur_symbols->flags & MACRO_SYMBOL)
- continue;
- cptr = cur_symbols->names;
- for ( ; (name_len = strlen (cptr)) != 0; cptr+= name_len + 1)
- {
- struct fn_decl *fn = lookup_std_proto (cptr, name_len);
- required_unseen_count++;
- if (fn == NULL)
- fprintf (stderr, "Internal error: No prototype for %s\n", cptr);
- else
- SET_REQUIRED (fn);
- }
- }
-
- read_scan_file (argv[2], argc - 4, argv + 4);
-
- inf_fd = open (argv[2], O_RDONLY, 0666);
- if (inf_fd < 0)
- {
- fprintf (stderr, "%s: Cannot open '%s' for reading -",
- progname, argv[2]);
- perror (NULL);
- exit (FATAL_EXIT_CODE);
- }
- if (fstat (inf_fd, &sbuf) < 0)
- {
- fprintf (stderr, "%s: Cannot get size of '%s' -", progname, argv[2]);
- perror (NULL);
- exit (FATAL_EXIT_CODE);
- }
- inf_size = sbuf.st_size;
- inf_buffer = (char *) xmalloc (inf_size + 2);
- inf_buffer[inf_size] = '\n';
- inf_buffer[inf_size + 1] = '\0';
- inf_limit = inf_buffer + inf_size;
- inf_ptr = inf_buffer;
-
- to_read = inf_size;
- while (to_read > 0)
- {
- long i = read (inf_fd, inf_buffer + inf_size - to_read, to_read);
- if (i < 0)
- {
- fprintf (stderr, "%s: Failed to read '%s' -", progname, argv[2]);
- perror (NULL);
- exit (FATAL_EXIT_CODE);
- }
- if (i == 0)
- {
- inf_size -= to_read;
- break;
- }
- to_read -= i;
- }
-
- close (inf_fd);
-
- /* If file doesn't end with '\n', add one. */
- if (inf_limit > inf_buffer && inf_limit[-1] != '\n')
- inf_limit++;
-
- unlink (argv[3]);
- outf = fopen (argv[3], "w");
- if (outf == NULL)
- {
- fprintf (stderr, "%s: Cannot open '%s' for writing -",
- progname, argv[3]);
- perror (NULL);
- exit (FATAL_EXIT_CODE);
- }
-
- lineno = 1;
-
- if (check_protection (&ifndef_line, &endif_line))
- {
- lbrac_line = ifndef_line+1;
- rbrac_line = endif_line;
- }
- else
- {
- lbrac_line = 1;
- rbrac_line = -1;
- }
-
- /* Reset input file. */
- inf_ptr = inf_buffer;
- lineno = 1;
-
- for (;;)
- {
- if (lineno == lbrac_line)
- write_lbrac ();
- if (lineno == rbrac_line)
- write_rbrac ();
- for (;;)
- {
- struct fn_decl *fn;
- c = INF_GET ();
- if (c == EOF)
- break;
- if (ISALPHA (c) || c == '_')
- {
- c = inf_scan_ident (&buf, c);
- (void) INF_UNGET (c);
- fputs (buf.base, outf);
- fn = lookup_std_proto (buf.base, strlen (buf.base));
- /* We only want to edit the declaration matching the one
- seen by scan-decls, as there can be multiple
- declarations, selected by #ifdef __STDC__ or whatever. */
- if (fn && fn->partial && fn->partial->line_seen == lineno)
- {
- c = inf_skip_spaces (' ');
- if (c == EOF)
- break;
- if (c == '(')
- {
- c = inf_skip_spaces (' ');
- if (c == ')')
- {
- fprintf (outf, " _PARAMS((%s))", fn->params);
- }
- else
- {
- putc ('(', outf);
- (void) INF_UNGET (c);
- }
- }
- else
- fprintf (outf, " %c", c);
- }
- }
- else
- {
- putc (c, outf);
- if (c == '\n')
- break;
- }
- }
- if (c == EOF)
- break;
- lineno++;
- }
- if (rbrac_line < 0)
- write_rbrac ();
-
- fclose (outf);
-
- return 0;
-}
-
-/* Stub error functions. These replace cpperror.c,
- because we want to suppress error messages. */
-
-void
-cpp_file_line_for_message (pfile, filename, line, column)
- cpp_reader * pfile ATTRIBUTE_UNUSED;
- char *filename;
- int line, column;
-{
- if (!verbose)
- return;
- if (column > 0)
- fprintf (stderr, "%s:%d:%d: ", filename, line, column);
- else
- fprintf (stderr, "%s:%d: ", filename, line);
-}
-
-void
-cpp_print_containing_files (pfile)
- cpp_reader *pfile ATTRIBUTE_UNUSED;
-{
-}
-
-/* IS_ERROR is 2 for fatal error, 1 for error, 0 for warning */
-
-void
-v_cpp_message (pfile, is_error, msg, ap)
- cpp_reader *pfile;
- int is_error;
- const char *msg;
- va_list ap;
-{
- if (is_error == 1)
- pfile->errors++;
- else if (is_error > 1)
- pfile->errors = CPP_FATAL_LIMIT;
- if (!verbose)
- return;
- if (!is_error)
- fprintf (stderr, "warning: ");
- vfprintf (stderr, msg, ap);
- fprintf (stderr, "\n");
-}
-
-void
-cpp_message VPROTO ((cpp_reader *pfile, int is_error, const char *msg, ...))
-{
-#ifndef ANSI_PROTOTYPES
- cpp_reader *pfile;
- int is_error;
- const char *msg;
-#endif
- va_list ap;
-
- VA_START (ap, msg);
-
-#ifndef ANSI_PROTOTYPES
- pfile = va_arg (ap, cpp_reader *);
- is_error = va_arg (ap, const int);
- msg = va_arg (ap, const char *);
-#endif
-
- v_cpp_message(pfile, is_error, msg, ap);
- va_end(ap);
-}
-
-static void
-v_fatal (str, ap)
- const char * str;
- va_list ap;
-{
- fprintf (stderr, "%s: %s: ", progname, inc_filename);
- vfprintf (stderr, str, ap);
- fprintf (stderr, "\n");
-
- exit (FATAL_EXIT_CODE);
-}
-
-void
-fatal VPROTO ((const char *str, ...))
-{
-#ifndef ANSI_PROTOTYPES
- const char *str;
-#endif
- va_list ap;
-
- VA_START(ap, str);
-
-#ifndef ANSI_PROTOTYPES
- str = va_arg (ap, const char *);
-#endif
-
- v_fatal(str, ap);
- va_end(ap);
-}
-
-void
-cpp_fatal VPROTO ((cpp_reader * pfile ATTRIBUTE_UNUSED, const char *str, ...))
-{
-#ifndef ANSI_PROTOTYPES
- cpp_reader * pfile;
- const char *str;
-#endif
- va_list ap;
-
- VA_START(ap, str);
-
-#ifndef ANSI_PROTOTYPES
- pfile = va_arg (ap, cpp_reader *);
- str = va_arg (ap, const char *);
-#endif
-
- v_fatal(str, ap);
- va_end(ap);
-}
-
-void
-cpp_pfatal_with_name (pfile, name)
- cpp_reader *pfile;
- const char *name;
-{
- cpp_perror_with_name (pfile, name);
- exit (FATAL_EXIT_CODE);
-}
diff --git a/gcc/fixinc-nt.sed b/gcc/fixinc-nt.sed
deleted file mode 100755
index a8119b9..0000000
--- a/gcc/fixinc-nt.sed
+++ /dev/null
@@ -1,5 +0,0 @@
-s/!__STDC__/!defined (__STRICT_ANSI__)/g
-s/getcwd(char \*, int)/getcwd(char *, size_t)/
-s/Format\[\]/Format\[1\]/
-s/^#if !defined (__cplusplus)/#if 0/
-s/^#define DECLSPEC_IMPORT __declspec(dllimport)/#define DECLSPEC_IMPORT/
diff --git a/gcc/fixinc.dgux b/gcc/fixinc.dgux
deleted file mode 100755
index 422ba5f..0000000
--- a/gcc/fixinc.dgux
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/bin/sh
-#
-# modified for dgux by hassey@dg-rtp.dg.com based on
-#
-# fixinc.svr4 written by Ron Guilmette (rfg@ncd.com).
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-#
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-INPUT=${2-${INPUT-/usr/include}}
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-cd ${INPUT}
-if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making internal symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`pwd`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`pwd`
- # If link leads back into ${INPUT},
- # make a similar link here.
- if expr $x : "${INPUT}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${INPUT}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to outside ${INPUT},
- # treat this directory as if it actually contained the files.
-# This line used to have $dest instead of $x.
-# $dest seemed to be wrong for links found in subdirectories
-# of ${INPUT}. Does this change break anything?
- treetops="$treetops $x ${LIB}/$file"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-# Completely replace <_int_varargs.h> with a file that defines
-# va_list and gnuc_va_list
-
-file=_int_varargs.h
-if [ -r ${INPUT}/$file ]; then
- echo Replacing $file
- cat > ${LIB}/$file << EOF
-/* This file was generated by fixinc.dgux. */
-#ifndef __INT_VARARGS_H
-#define __INT_VARARGS_H
-
-#if defined(__m88k__) && defined (__DGUX__)
-#ifndef __GNUC_VA_LIST
-#define __GNUC_VA_LIST
-typedef struct
-{
- int __va_arg; /* argument number */
- int *__va_stk; /* start of args passed on stack */
- int *__va_reg; /* start of args passed in regs */
-} __gnuc_va_list;
-#endif /* not __GNUC_VA_LIST */
-#endif /* 88k && dgux */
-
-#ifndef _VA_LIST_
-#define _VA_LIST_
-typedef __gnuc_va_list va_list;
-#endif /* _VA_LIST_ */
-
-#endif /* __INT_VARARGS_H */
-
-EOF
- chmod a+r ${LIB}/$file
-fi
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-if $LINKS; then
- echo 'Making internal symbolic non-directory links'
- cd ${INPUT}
- files=`find . -type l -print`
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
- if [ -f $target ]; then
- ln -s $dest ${LIB}/$file >/dev/null 2>&1
- fi
- fi
- done
-fi
-
-cd ${ORIG_DIR}
-
-exit 0
-
diff --git a/gcc/fixinc.irix b/gcc/fixinc.irix
deleted file mode 100755
index d29228a..0000000
--- a/gcc/fixinc.irix
+++ /dev/null
@@ -1,225 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain problematic Irix include files.
-# If possible, create a wrapper (see fixinc.wrap) instead of copying files.
-#
-# Copyright (C) 1997, 1998 Free Software Foundation, Inc.
-# Contributed by Brendan Kehoe (brendan@cygnus.com).
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-INPUT=${2-${INPUT-/usr/include}}
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- LIB=$ORIG_DIR/$LIB
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-#
-# Note: For Irix, we deliberately don't try to create the directory trees,
-# since we only modify math.h, limits.h and unistd.h. If we
-# ADD ANY OTHERS, the "Making directories:" and symlinks code from
-# fixinc.svr4 may have to go back in.
-
-# This math.h fix is copied from fixinc.wrap. We want to avoid copying
-# math.h because both math.h and stdlib.h have a declaration for initstate,
-# and this declaration changed between Irix 6.2 and Irix 6.3. If we copy this
-# file, then the same toolchain can't be shared between 6.2 and 6.3+.
-
-# Some math.h files define struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- if grep 'struct exception' $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _MATH_H_WRAPPER
-#ifdef __cplusplus
-# define exception __math_exception
-#endif
-#include_next <math.h>
-#ifdef __cplusplus
-# undef exception
-#endif
-#define _MATH_H_WRAPPER
-#endif /* _MATH_H_WRAPPER */
-__EOF__
- # Define _MATH_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <math.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-# Avoid the definition of the bool type in curses.h when using
-# g++, since it's now an official type in the C++ language.
-
-# This is also from fixinc.wrap.
-
-file=curses.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- w='[ ]'
- if grep "typedef$w$w*char$w$w*bool$w*;" $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _CURSES_H_WRAPPER
-#ifdef __cplusplus
-# define bool __curses_bool_t
-#endif
-#include_next <curses.h>
-#ifdef __cplusplus
-# undef bool
-#endif
-#define _CURSES_H_WRAPPER
-#endif /* _CURSES_H_WRAPPER */
-__EOF__
- # Define _CURSES_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <curses.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-# In limits.h, put #ifndefs around things that are supposed to be defined
-# in float.h to avoid redefinition errors if float.h is included first.
-
-file=limits.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/[ ]FLT_MIN[ ]/i\
-#ifndef FLT_MIN
-'\
- -e '/[ ]FLT_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_MAX[ ]/i\
-#ifndef FLT_MAX
-'\
- -e '/[ ]FLT_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_DIG[ ]/i\
-#ifndef FLT_DIG
-'\
- -e '/[ ]FLT_DIG[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MIN[ ]/i\
-#ifndef DBL_MIN
-'\
- -e '/[ ]DBL_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MAX[ ]/i\
-#ifndef DBL_MAX
-'\
- -e '/[ ]DBL_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_DIG[ ]/i\
-#ifndef DBL_DIG
-'\
- -e '/[ ]DBL_DIG[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# The Irix unistd.h will introduce a call to __vfork in its libc, but the
-# function is never actually prototyped.
-file=unistd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/__vfork/i\
-extern pid_t __vfork(void);'\
- $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-exit 0
diff --git a/gcc/fixinc.math b/gcc/fixinc.math
deleted file mode 100755
index a8a9fe7..0000000
--- a/gcc/fixinc.math
+++ /dev/null
@@ -1,53 +0,0 @@
-#! /bin/sh
-# Fix struct exception in /usr/include/math.h.
-#
-# We expect several systems which did not need fixincludes in the past
-# to need to fix just math.h. So we created a separate fixinc.math
-# script to fix just that problem.
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-# (This was named INCLUDES, but that conflicts with a name in Makefile.in.)
-INPUT=${2-${INPUT-/usr/include}}
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-echo Building fixed headers in ${LIB}
-
-# Some math.h files define struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- if grep 'struct exception' $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _MATH_H_WRAPPER
-#ifdef __cplusplus
-# define exception __math_exception
-#endif
-#include_next <math.h>
-#ifdef __cplusplus
-# undef exception
-#endif
-#define _MATH_H_WRAPPER
-#endif /* _MATH_H_WRAPPER */
-__EOF__
- # Define _MATH_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <math.h>.
- chmod a+r $LIB/$file
- fi
-fi
-exit 0
diff --git a/gcc/fixinc.ptx b/gcc/fixinc.ptx
deleted file mode 100755
index 93a8f2c..0000000
--- a/gcc/fixinc.ptx
+++ /dev/null
@@ -1,257 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain ANSI-incompatible
-# native Sequent DYNIX/ptx System V Release 3.2 system include files.
-# Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
-# Contributed by Bill Burton <billb@progress.com>
-# Portions adapted from fixinc.svr4 and fixincludes.
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with DYNIX/ptx
-# so as to remove things which are violations of the ANSI C standard.
-# This is done by first running fixinc.svr4 which does most of the
-# work. A few includes have fixes made to them afterwards by this
-# script. Once munged, the resulting new system include files are
-# placed in a directory that GNU C will search *before* searching the
-# /usr/include directory. This script should work properly for most
-# DYNIX/ptx systems. For other types of systems, you should use the
-# `fixincludes' script instead.
-#
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-INPUT=${2-${INPUT-/usr/include}}
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- LIB=$ORIG_DIR/$LIB
- ;;
-esac
-
-echo 'Running fixinc.svr4'
-# DYNIX/ptx has dirname so this is no problem
-`dirname $0`/fixinc.svr4 $*
-echo 'Finished fixinc.svr4'
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Copied from fixincludes.
-# Don't use or define the name va_list in stdio.h.
-# This is for ANSI and also to interoperate properly with gcc's varargs.h.
-file=stdio.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, use of va_list
- # Arrange for stdio.h to use stdarg.h to define __gnuc_va_list
- (echo "#define __need___va_list"
- echo "#include <stdarg.h>") > ${LIB}/${file}.sed
- # Use __gnuc_va_list in arg types in place of va_list.
- # On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the
- # trailing parentheses and semicolon save all other systems from this.
- # Define __va_list__ (something harmless and unused) instead of va_list.
- # Don't claim to have defined va_list.
- sed -e 's@ va_list @ __gnuc_va_list @' \
- -e 's@ va_list)@ __gnuc_va_list)@' \
- -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \
- -e 's@ va_list@ __va_list__@' \
- -e 's@\*va_list@*__va_list__@' \
- -e 's@ __va_list)@ __gnuc_va_list)@' \
- -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \
- -e 's@VA_LIST@DUMMY_VA_LIST@' \
- -e 's@_NEED___Va_LIST@_NEED___VA_LIST@' \
- ${LIB}/$file >> ${LIB}/${file}.sed
-
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
-fi
-
-# In pwd.h, PTX 1.x needs stdio.h included since FILE * was added in a
-# prototype later on in the file.
-file=pwd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep stdio $file_to_fix > /dev/null; then
- true
- else
- sed -e '/#include <sys\/types\.h>/a\
-\
-#if defined(__STDC__) || defined(__cplusplus)\
-#include <stdio.h>\
-#endif /* __STDC__ */
-' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# Copied from fixincludes.
-# math.h puts the declaration of matherr before the definition
-# of struct exception, so the prototype (added by fixproto) causes havoc.
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, matherr declaration
- sed -e '/^struct exception/,$b' \
- -e '/matherr/i\
-struct exception;
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
-fi
-
-# In netinet/in.h, the network byte swapping asm functions supported by the
-# native cc compiler on PTX 1.x and 2.x is not supported in gcc. Instead,
-# include <sys/byteorder.h> written out by the fixinc.svr4 script which has
-# these same routines written in an asm format supported by gcc.
-file=netinet/in.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/#define NETSWAP/a\
-\
-#if defined (__GNUC__) || defined (__GNUG__)\
-#include <sys/byteorder.h>\
-#else /* not __GNUC__ */
-' \
- -e '/#endif[ ]*\/\* NETSWAP \*\//i\
-#endif /* not __GNUC__ */
-' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# /usr/include/sys/mc_param.h has an embedded asm for the cpuid instruction
-# on the P5. This is not used by anything else so we ifdef it out.
-file=sys/mc_param.h
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/__asm/,/}/{
-/__asm/i\
-#if !defined (__GNUC__) && !defined (__GNUG__)
-/}/a\
-#endif
-}' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# /usr/include/sys/mc_param.h has an embedded asm for the cpuid instruction
-# on the P5. This is not used by anything else so we ifdef it out.
-file=sys/mc_param.h
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/__asm/,/}/{
-/__asm/i\
-#if !defined (__GNUC__) && !defined (__GNUG__)
-/}/a\
-#endif
-}' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-exit 0
-
diff --git a/gcc/fixinc.sco b/gcc/fixinc.sco
deleted file mode 100755
index 6e63c67..0000000
--- a/gcc/fixinc.sco
+++ /dev/null
@@ -1,427 +0,0 @@
-#! /bin/sh
-#
-# fixinc.sco -- Install modified versions of SCO system include
-# files.
-#
-# Based on fixinc.svr4 script by Ron Guilmette (rfg@ncd.com) (SCO
-# modifications by Ian Lance Taylor (ian@airs.com)).
-#
-# Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with SCO
-# 3.2v4 systems so as to provide a reasonable namespace when
-# compiling with gcc. The header files by default do not
-# provide many essential definitions and declarations if
-# __STDC__ is 1. This script modifies the header files to check
-# for __STRICT_ANSI__ being defined instead. Once munged, the
-# resulting new system include files are placed in a directory
-# that GNU C will search *before* searching the /usr/include
-# directory. This script should work properly for most SCO
-# 3.2v4 systems. For other types of systems, you should use the
-# `fixincludes' or the `fixinc.svr4' script instead.
-#
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-INPUT=${2-${INPUT-/usr/include}}
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-cd ${INPUT}
-if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making internal symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`pwd`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`pwd`
- # If link leads back into ${INPUT},
- # make a similar link here.
- if expr $x : "${INPUT}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${INPUT}/&&p"`
- echo $file '->' $y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s ${LIB}/$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to outside ${INPUT},
- # treat this directory as if it actually contained the files.
-# This line used to have $dest instead of $x.
-# $dest seemed to be wrong for links found in subdirectories
-# of ${INPUT}. Does this change break anything?
- treetops="$treetops $x ${LIB}/$file"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-set - $treetops
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- echo "Finding header files in $1:"
- cd ${INPUT}
- cd $1
- files=`find . -name '*.h' -type f -print`
- echo 'Checking header files:'
- for file in $files; do
- if egrep '!__STDC__' $file >/dev/null; then
- if [ -r $file ]; then
- cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w $2/$file
- chmod a+r $2/$file
-
-# The following have been removed from the sed command below
-# because it is more useful to leave these things in.
-# The only reason to remove them was for -pedantic,
-# which isn't much of a reason. -- rms.
-# /^[ ]*#[ ]*ident/d
-
- sed -e '
- s/!__STDC__/!defined (__STRICT_ANSI__)/g
- ' $2/$file > $2/$file.sed
- mv $2/$file.sed $2/$file
- if cmp $file $2/$file >/dev/null 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- fi
- fi
- fi
- done
- shift; shift
-done
-
-# We shouldn't stay in the directory we just copied.
-cd ${INPUT}
-
-# Fix first broken decl of getcwd present on some svr4 systems.
-
-file=stdlib.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \{0,\}\*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix second broken decl of getcwd present on some svr4 systems. Also
-# fix the incorrect decl of profil present on some svr4 systems.
-
-file=unistd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
- | sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix third broken decl of getcwd on SCO. Also fix incorrect decl of
-# link.
-file=prototypes.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
- | sed -e 's/const int link(const char \*, char \*)/extern int link(const char *, const char *)/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix an error in this file: the #if says _cplusplus, not the double
-# underscore __cplusplus that it should be
-file=tinfo.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpcsvc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, __cplusplus macro
- sed -e 's/[ ]_cplusplus/ __cplusplus/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- fi
-fi
-
-# Fix prototype declaration of utime in sys/times.h. In 3.2v4.0 the
-# const is missing.
-file=sys/times.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, utime prototype
- sed -e 's/(const char \*, struct utimbuf \*);/(const char *, const struct utimbuf *);/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- fi
-fi
-
-# This function is borrowed from fixinclude.svr4
-# The OpenServer math.h defines struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-#
-# OpenServer's math.h declares abs as inline int abs... Unfortunately,
-# we blow over that one (with C++ linkage) and stick a new one in stdlib.h
-# with C linkage. So we eat the one out of math.h.
-file=math.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/struct exception/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif'\
- -e '/struct exception/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif' \
- -e 's@inline int abs(int [a-z][a-z]*) {.*}@extern "C" int abs(int);@' \
- $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-#
-# Also, the static functions lstat() and fchmod() in <sys/stat.h>
-# cause G++ grief since they're not wrapped in "if __cplusplus".
-# Fix that up now.
-#
-file=sys/stat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, static definitions not C++-aware.
- sed -e '/^static int[ ]*/i\
-#if __cplusplus\
-extern "C"\
-{\
-#endif /* __cplusplus */ \
-' \
--e '/^}$/a\
-#if __cplusplus\
-}\
-#endif /* __cplusplus */ \
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
-fi
-
-# This fix has the regex modified from the from fixinc.wrap
-# Avoid the definition of the bool type in the following files when using
-# g++, since it's now an official type in the C++ language.
-for file in term.h tinfo.h
-do
- if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- w='[ ]'
- if grep "typedef$w.*char$w.*bool$w*;" $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat << __EOF__ >$LIB/$file
-#ifndef _CURSES_H_WRAPPER
-#ifdef __cplusplus
-# define bool __curses_bool_t
-#endif
-#include_next <$file>
-#ifdef __cplusplus
-# undef bool
-#endif
-#define _CURSES_H_WRAPPER
-#endif /* _CURSES_H_WRAPPER */
-__EOF__
- # Define _CURSES_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real system include file.
- chmod a+r $LIB/$file
- fi
- fi
-done
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-if $LINKS; then
- echo 'Making internal symbolic non-directory links'
- cd ${INPUT}
- files=`find . -type l -print`
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
- if [ -f $target ]; then
- ln -s $dest ${LIB}/$file >/dev/null 2>&1
- fi
- fi
- done
-fi
-
-exit 0
diff --git a/gcc/fixinc.svr4 b/gcc/fixinc.svr4
deleted file mode 100755
index 9b86f4c..0000000
--- a/gcc/fixinc.svr4
+++ /dev/null
@@ -1,1726 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain ANSI-incompatible
-# native System V Release 4 system include files.
-# Copyright (C) 1994, 1996, 1997, 1998 Free Software Foundation, Inc.
-# Contributed by Ron Guilmette (rfg@monkeys.com).
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with System V
-# Release 4 systems so as to remove things which are violations of the
-# ANSI C standard. Once munged, the resulting new system include files
-# are placed in a directory that GNU C will search *before* searching
-# the /usr/include directory. This script should work properly for most
-# System V Release 4 systems. For other types of systems, you should
-# use the `fixincludes' script instead.
-#
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-INPUT=${2-${INPUT-/usr/include}}
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- LIB=$ORIG_DIR/$LIB
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-cd ${INPUT}
-if $LINKS; then
- files=`find . -follow -type d -print 2>/dev/null | sed '/^.$/d'`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making internal symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`pwd`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- rwd=`pwd`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`pwd`
- # If link leads back into ${INPUT},
- # make a similar link here.
- if expr "$dest" : '[^/][^/]*' >/dev/null && [ ! -h $dest ]; then
- echo $file '->' $dest': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dest ${LIB}/$file > /dev/null 2>&1
- elif expr $x : "${INPUT}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${INPUT}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- elif expr $x : "${rwd}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to the directory where the link is.
- y=`echo $x | sed -n "s&${rwd}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to outside ${INPUT},
- # treat this directory as if it actually contained the files.
-# This line used to have $dest instead of $x.
-# $dest seemed to be wrong for links found in subdirectories
-# of ${INPUT}. Does this change break anything?
- treetops="$treetops $x ${LIB}/$file"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-set - $treetops
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- echo "Finding header files in $1:"
- cd ${INPUT}
- cd $1
- files=`find . -name '*.h' -type f -print`
- echo 'Checking header files:'
- for file in $files; do
- if [ -r $file ]; then
- cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w $2/$file
- chmod a+r $2/$file
-
-# The following have been removed from the sed command below
-# because it is more useful to leave these things in.
-# The only reason to remove them was for -pedantic,
-# which isn't much of a reason. -- rms.
-# /^[ ]*#[ ]*ident/d
-
-# This code makes Solaris SCSI fail, because it changes the
-# alignment within some critical structures. See <sys/scsi/impl/commands.h>.
-# s/u_char\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# Disable these also, since they probably aren't safe either.
-# s/u_short\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# s/ushort\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# s/evcm_t\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# s/Pbyte\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*SEQSIZ\)/unsigned int\1/
-
-# The change of u_char, etc, to u_int
-# applies to bit fields.
- sed -e '
- s%^\([ ]*#[ ]*else\)[ ]*/[^*].*%\1%
- s%^\([ ]*#[ ]*else\)[ ]*[^/ ].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*/[^*].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*[^/ ].*%\1%
- s/#lint(on)/defined(lint)/g
- s/#lint(off)/!defined(lint)/g
- s/#machine(\([^)]*\))/defined(__\1__)/g
- s/#system(\([^)]*\))/defined(__\1__)/g
- s/#cpu(\([^)]*\))/defined(__\1__)/g
- /#[a-z]*if.*[ (]m68k/ s/\([^_]\)m68k/\1__m68k__/g
- /#[a-z]*if.*[ (]__i386\([^_]\)/ s/__i386/__i386__/g
- /#[a-z]*if.*[ (]i386/ s/\([^_]\)i386/\1__i386__/g
- /#[a-z]*if.*[ (!]__i860\([^_]\)/ s/__i860/__i860__/g
- /#[a-z]*if.*[ (!]i860/ s/\([^_]\)i860/\1__i860__/g
- /#[a-z]*if.*[ (]sparc/ s/\([^_]\)sparc/\1__sparc__/g
- /#[a-z]*if.*[ (]mc68000/ s/\([^_]\)mc68000/\1__mc68000__/g
- /#[a-z]*if.*[ (]vax/ s/\([^_]\)vax/\1__vax__/g
- /#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)\([^a-z0-9_]\)/\1__\2__\3/g
- /#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)$/\1__\2__/g
- /#[a-z]*if.*[ (]ns32000/ s/\([^_]\)ns32000/\1__ns32000__/g
- /#[a-z]*if.*[ (]pyr/ s/\([^_]\)pyr/\1__pyr__/g
- /#[a-z]*if.*[ (]is68k/ s/\([^_]\)is68k/\1__is68k__/g
- s/__STDC__[ ][ ]*==[ ][ ]*0/!defined (__STRICT_ANSI__)/g
- s/__STDC__[ ][ ]*==[ ][ ]*1/defined (__STRICT_ANSI__)/g
- s/__STDC__[ ][ ]*!=[ ][ ]*0/defined (__STRICT_ANSI__)/g
- s/__STDC__[ ][ ]*!=[ ][ ]*1/!defined (__STRICT_ANSI__)/g
- s/__STDC__ - 0 == 0/!defined (__STRICT_ANSI__)/g
- s/__STDC__ - 0 == 1/defined (__STRICT_ANSI__)/g
- /^typedef[ ][ ]*[unsigned ]*long[ ][ ]*[u_]*longlong_t;/s/long/long long/
- ' $2/$file > $2/$file.sed
- mv $2/$file.sed $2/$file
- if cmp $file $2/$file >/dev/null 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- fi
- fi
- done
- shift; shift
-done
-
-# Install the proper definition of the three standard types in header files
-# that they come from.
-for file in sys/types.h stdlib.h sys/stdtypes.h stddef.h memory.h unistd.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing size_t, ptrdiff_t and wchar_t in $file
- sed \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/i\
-#ifndef __SIZE_TYPE__\
-#define __SIZE_TYPE__ long unsigned int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/typedef __SIZE_TYPE__ size_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/i\
-#ifndef __PTRDIFF_TYPE__\
-#define __PTRDIFF_TYPE__ long int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/i\
-#ifndef __WCHAR_TYPE__\
-#define __WCHAR_TYPE__ int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/typedef __WCHAR_TYPE__ wchar_t/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- fi
- fi
-done
-
-# Fix first broken decl of getcwd present on some svr4 systems.
-
-file=stdlib.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix second broken decl of getcwd present on some svr4 systems. Also
-# fix the incorrect decl of profil present on some svr4 systems.
-
-file=unistd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
- | sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix the definition of NULL in <sys/param.h> so that it is conditional
-# and so that it is correct for both C and C++.
-
-file=sys/param.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- chmod a+r /tmp/$base
- sed -e '/^#define[ ]*NULL[ ]*0$/c\
-#ifndef NULL\
-#ifdef __cplusplus\
-#define __NULL_TYPE\
-#else /* !defined(__cplusplus) */\
-#define __NULL_TYPE (void *)\
-#endif /* !defined(__cplusplus) */\
-#define NULL (__NULL_TYPE 0)\
-#endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Likewise fix the definition of NULL in <stdio.h> so that it is conditional
-# and so that it is correct for both C and C++.
-
-file=stdio.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^#define[ ]*NULL[ ]*0$/c\
-#ifdef __cplusplus\
-#define __NULL_TYPE\
-#else /* !defined(__cplusplus) */\
-#define __NULL_TYPE (void *)\
-#endif /* !defined(__cplusplus) */\
-#define NULL (__NULL_TYPE 0)' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Likewise fix the definition of NULL in <dbm.h> so that it is conditional
-# and so that it is correct for both C and C++.
-
-file=dbm.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^#define[ ]*NULL[ ]*((char \*) 0)$/c\
-#ifndef NULL\
-#ifdef __cplusplus\
-#define __NULL_TYPE\
-#else /* !defined(__cplusplus) */\
-#define __NULL_TYPE (void *)\
-#endif /* !defined(__cplusplus) */\
-#define NULL (__NULL_TYPE 0)\
-#endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Add a prototyped declaration of mmap to <sys/mman.h>.
-
-file=sys/mman.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^extern caddr_t mmap();$/c\
-#ifdef __STDC__\
-extern caddr_t mmap (caddr_t, size_t, int, int, int, off_t);\
-#else /* !defined(__STDC__) */\
-extern caddr_t mmap ();\
-#endif /* !defined(__STDC__) */' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Fix declarations of `ftw' and `nftw' in <ftw.h>. On some/most SVR4 systems
-# the file <ftw.h> contains extern declarations of these functions followed
-# by explicitly `static' definitions of these functions... and that's not
-# allowed according to ANSI C. (Note however that on Solaris, this header
-# file glitch has been pre-fixed by Sun. In the Solaris version of <ftw.h>
-# there are no static definitions of any function so we don't need to do
-# any of this stuff when on Solaris.
-
-file=ftw.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if test -z "$file_to_fix" || grep 'define ftw' $file_to_fix > /dev/null; then
-# Either we have no <ftw.h> file at all, or else we have the pre-fixed Solaris
-# one. Either way, we don't have to do anything.
- true
-else
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^extern int ftw(const/i\
-#if !defined(_STYPES)\
-static\
-#else\
-extern\
-#endif
-'\
- -e 's/extern \(int ftw(const.*\)$/\1/' \
- -e '/^extern int nftw/i\
-#if defined(_STYPES)\
-static\
-#else\
-extern\
-#endif
-'\
- -e 's/extern \(int nftw.*\)$/\1/' \
- -e '/^extern int ftw(),/c\
-#if !defined(_STYPES)\
-static\
-#else\
-extern\
-#endif\
- int ftw();\
-#if defined(_STYPES)\
-static\
-#else\
-extern\
-#endif\
- int nftw();' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Avoid the definition of the bool type in the Solaris 2.x curses.h when using
-# g++, since it's now an official type in the C++ language.
-file=curses.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e 's,^typedef[ ]char[ ]bool;$,#ifndef __cplusplus\
-typedef char bool;\
-#endif /* !defined __cplusplus */,' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Add a `static' declaration of `getrnge' into <regexp.h>.
-
-# Don't do this if there is already a `static void getrnge' declaration
-# present, since this would cause a redeclaration error. Solaris 2.x has
-# such a declaration.
-
-file=regexp.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep "static void getrnge" $file_to_fix > /dev/null; then
- true
- else
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^static int[ ]*size;/c\
-static int size ;\
-\
-static int getrnge ();' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
-# that is visible to any ANSI compiler using this include. Simply
-# delete the lines that #define some string functions to internal forms.
-
-file=string.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/#define.*__std_hdr_/d' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Delete any #defines of `__i386' which may be present in <ieeefp.h>. They
-# tend to conflict with the compiler's own definition of this symbol. (We
-# will use the compiler's definition.)
-# Likewise __sparc, for Solaris, and __i860, and a few others
-# (guessing it is necessary for all of them).
-
-file=ieeefp.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/#define[ ]*__i386 /d' -e '/#define[ ]*__sparc /d' \
- -e '/#define[ ]*__i860 /d' -e '/#define[ ]*__m88k /d' \
- -e '/#define[ ]*__mips /d' -e '/#define[ ]*__m68k /d' \
- /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Add a #define of _SIGACTION_ into <sys/signal.h>.
-# Also fix types of SIG_DFL, SIG_ERR, SIG_IGN, and SIG_HOLD.
-
-file=sys/signal.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^struct sigaction {/c\
-#define _SIGACTION_\
-struct sigaction {' \
- -e '1,$s/(void *(\*)())/(void (*)(int))/' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Fix declarations of `makedev', `major', and `minor' in <sys/mkdev.h>.
-
-file=sys/mkdev.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^dev_t makedev(const/c\
-static dev_t makedev(const major_t, const minor_t);' \
- -e '/^dev_t makedev()/c\
-static dev_t makedev();' \
- -e '/^major_t major(const/c\
-static major_t major(const dev_t);' \
- -e '/^major_t major()/c\
-static major_t major();' \
- -e '/^minor_t minor(const/c\
-static minor_t minor(const dev_t);' \
- -e '/^minor_t minor()/c\
-static minor_t minor();' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Fix reference to NMSZ in <sys/adv.h>.
-
-file=sys/adv.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed 's/\[NMSZ\]/\[RFS_NMSZ\]/g' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix reference to NC_NPI_RAW in <sys/netcspace.h>. Also fix types of
-# array initializers.
-
-file=sys/netcspace.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed 's/NC_NPI_RAW/NC_TPI_RAW/g' $file_to_fix \
- | sed 's/NC_/(unsigned long) NC_/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Conditionalize all of <fs/rfs/rf_cache.h> on _KERNEL being defined.
-
-file=fs/rfs/rf_cache.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/erec.h> on _KERNEL being defined.
-
-file=sys/erec.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/err.h> on _KERNEL being defined.
-
-file=sys/err.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/char.h> on _KERNEL being defined.
-
-file=sys/char.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/getpages.h> on _KERNEL being defined.
-
-file=sys/getpages.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/map.h> on _KERNEL being defined.
-
-file=sys/map.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/cmn_err.h> on _KERNEL being defined.
-
-file=sys/cmn_err.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/kdebugger.h> on _KERNEL being defined.
-
-file=sys/kdebugger.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize some of <netinet/in.h> on _KERNEL being defined.
-# This has been taken out because it breaks on some versions of
-# DYNIX/ptx, and it does not seem to do much good on any system.
-# file=netinet/in.h
-# base=`basename $file`
-# if [ -r ${LIB}/$file ]; then
-# file_to_fix=${LIB}/$file
-# else
-# if [ -r ${INPUT}/$file ]; then
-# file_to_fix=${INPUT}/$file
-# else
-# file_to_fix=""
-# fi
-# fi
-# if [ \! -z "$file_to_fix" ]; then
-# echo Checking $file_to_fix
-# if grep _KERNEL $file_to_fix > /dev/null; then
-# true
-# else
-# sed -e '/#ifdef INKERNEL/i\
-# #ifdef _KERNEL
-# ' \
-# -e '/#endif[ ]*\/\* INKERNEL \*\//a\
-# #endif /* _KERNEL */
-# ' \
-# $file_to_fix > ${LIB}/${file}.sed
-# rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
-# echo Fixed $file_to_fix
-# fi
-# fi
-
-# Conditionalize some of <sys/endian.h> on __GNUC__ and __GNUG__.
-
-file=sys/endian.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/# ifdef __STDC__/i\
-# if !defined (__GNUC__) && !defined (__GNUG__)
-' \
- -e '/# include <sys\/byteorder.h>/s/ / /'\
- -e '/# include <sys\/byteorder.h>/i\
-# endif /* !defined (__GNUC__) && !defined (__GNUG__) */
-'\
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# Commented out because tmcconne@sedona.intel.com says we don't clearly need it
-# and the text in types.h is not erroneous.
-## In sys/types.h, don't name the enum for booleans.
-#
-#file=sys/types.h
-#base=`basename $file`
-#if [ -r ${LIB}/$file ]; then
-# file_to_fix=${LIB}/$file
-#else
-# if [ -r ${INPUT}/$file ]; then
-# file_to_fix=${INPUT}/$file
-# else
-# file_to_fix=""
-# fi
-#fi
-#if [ \! -z "$file_to_fix" ]; then
-# echo Checking $file_to_fix
-# if grep "enum boolean" $file_to_fix > /dev/null; then
-# sed -e 's/enum boolean/enum/' ${LIB}/$file > ${LIB}/${file}.sed
-# rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
-# echo Fixed $file_to_fix
-# else
-# true
-# fi
-#fi
-
-# Remove useless extern keyword from struct forward declarations in
-# <sys/stream.h> and <sys/strsubr.h>
-
-file=sys/stream.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/extern struct stdata;/struct stdata;/g
- s/extern struct strevent;/struct strevent;/g
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-file=sys/strsubr.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/extern struct strbuf;/struct strbuf;/g
- s/extern struct uio;/struct uio;/g
- s/extern struct thread;/struct thread;/g
- s/extern struct proc;/struct proc;/g
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Put storage class at start of decl, to avoid warning.
-file=rpc/types.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/const extern/extern const/g
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Convert functions to prototype form, and fix arg names in <sys/stat.h>.
-
-file=sys/stat.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^stat([ ]*[^c]/{
-N
-N
-s/(.*)\n/( /
-s/;\n/, /
-s/;$/)/
-}' \
- -e '/^lstat([ ]*[^c]/{
-N
-N
-s/(.*)\n/( /
-s/;\n/, /
-s/;$/)/
-}' \
- -e '/^fstat([ ]*[^i]/{
-N
-N
-s/(.*)\n/( /
-s/;\n/, /
-s/;$/)/
-}' \
- -e '/^mknod([ ]*[^c]/{
-N
-N
-N
-s/(.*)\n/( /
-s/;\n/, /g
-s/;$/)/
-}' \
- -e '1,$s/\([^A-Za-z]\)path\([^A-Za-z]\)/\1__path\2/g' \
- -e '1,$s/\([^A-Za-z]\)buf\([^A-Za-z]\)/\1__buf\2/g' \
- -e '1,$s/\([^A-Za-z]\)fd\([^A-Za-z]\)/\1__fd\2/g' \
- -e '1,$s/ret\([^u]\)/__ret\1/g' \
- -e '1,$s/\([^_]\)mode\([^_]\)/\1__mode\2/g' \
- -e '1,$s/\([^_r]\)dev\([^_]\)/\1__dev\2/g' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Sony NEWSOS 5.0 does not support the complete ANSI C standard.
-
-if [ -x /bin/sony ]; then
- if /bin/sony; then
-
- # Change <stdio.h> to not define __filbuf, __flsbuf, and __iob
-
- file=stdio.h
- base=`basename $file`
- if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
- else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
- fi
- if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '
- s/__filbuf/_filbuf/g
- s/__flsbuf/_flsbuf/g
- s/__iob/_iob/g
- ' /tmp/$base > /tmp/$base.sed
- mv /tmp/$base.sed /tmp/$base
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
- fi
-
- # Change <ctype.h> to not define __ctype
-
- file=ctype.h
- base=`basename $file`
- if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
- else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
- fi
- if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '
- s/__ctype/_ctype/g
- ' /tmp/$base > /tmp/$base.sed
- mv /tmp/$base.sed /tmp/$base
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
- fi
- fi
-fi
-
-# In limits.h, put #ifndefs around things that are supposed to be defined
-# in float.h to avoid redefinition errors if float.h is included first.
-# Solaris 2.1 has this problem.
-
-file=limits.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/[ ]FLT_MIN[ ]/i\
-#ifndef FLT_MIN
-'\
- -e '/[ ]FLT_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_MAX[ ]/i\
-#ifndef FLT_MAX
-'\
- -e '/[ ]FLT_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_DIG[ ]/i\
-#ifndef FLT_DIG
-'\
- -e '/[ ]FLT_DIG[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MIN[ ]/i\
-#ifndef DBL_MIN
-'\
- -e '/[ ]DBL_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MAX[ ]/i\
-#ifndef DBL_MAX
-'\
- -e '/[ ]DBL_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_DIG[ ]/i\
-#ifndef DBL_DIG
-'\
- -e '/[ ]DBL_DIG[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Completely replace <sys/varargs.h> with a file that includes gcc's
-# stdarg.h or varargs.h files as appropriate.
-
-file=sys/varargs.h
-if [ -r ${INPUT}/$file ]; then
- echo Replacing $file
- cat > ${LIB}/$file << EOF
-/* This file was generated by fixincludes. */
-#ifndef _SYS_VARARGS_H
-#define _SYS_VARARGS_H
-
-#ifdef __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#endif /* _SYS_VARARGS_H */
-EOF
- chmod a+r ${LIB}/$file
-fi
-
-# In math.h, put #ifndefs around things that might be defined in a gcc
-# specific math-*.h file.
-
-file=math.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/define[ ]HUGE_VAL[ ]/i\
-#ifndef HUGE_VAL
-'\
- -e '/define[ ]HUGE_VAL[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Solaris math.h and floatingpoint.h define __P without protection,
-# which conflicts with the fixproto definition. The fixproto
-# definition and the Solaris definition are used the same way.
-for file in math.h floatingpoint.h; do
- base=`basename $file`
- if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
- else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
- fi
- if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/^#define[ ]*__P/i\
-#ifndef __P
-'\
- -e '/^#define[ ]*__P/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
- fi
-done
-
-# The Solaris math.h defines struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/struct exception/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif'\
- -e '/struct exception/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-if $LINKS; then
- echo 'Making internal symbolic non-directory links'
- cd ${INPUT}
- files=`find . -type l -print`
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo $file | sed "s|[^/]*\$|$dest|"`
- if [ -f $target ]; then
- ln -s $dest ${LIB}/$file >/dev/null 2>&1
- fi
- fi
- done
-fi
-
-cd ${ORIG_DIR}
-
-echo 'Replacing <sys/byteorder.h>'
-if [ \! -d $LIB/sys ]; then
- mkdir $LIB/sys
-fi
-rm -f ${LIB}/sys/byteorder.h
-cat <<'__EOF__' >${LIB}/sys/byteorder.h
-#ifndef _SYS_BYTEORDER_H
-#define _SYS_BYTEORDER_H
-
-/* Functions to convert `short' and `long' quantities from host byte order
- to (internet) network byte order (i.e. big-endian).
-
- Written by Ron Guilmette (rfg@ncd.com).
-
- This isn't actually used by GCC. It is installed by fixinc.svr4.
-
- For big-endian machines these functions are essentially no-ops.
-
- For little-endian machines, we define the functions using specialized
- asm sequences in cases where doing so yields better code (e.g. i386). */
-
-#if !defined (__GNUC__) && !defined (__GNUG__)
-#error You lose! This file is only useful with GNU compilers.
-#endif
-
-#ifndef __BYTE_ORDER__
-/* Byte order defines. These are as defined on UnixWare 1.1, but with
- double underscores added at the front and back. */
-#define __LITTLE_ENDIAN__ 1234
-#define __BIG_ENDIAN__ 4321
-#define __PDP_ENDIAN__ 3412
-#endif
-
-#ifdef __STDC__
-static __inline__ unsigned long htonl (unsigned long);
-static __inline__ unsigned short htons (unsigned int);
-static __inline__ unsigned long ntohl (unsigned long);
-static __inline__ unsigned short ntohs (unsigned int);
-#endif /* defined (__STDC__) */
-
-#if defined (__i386__)
-
-#ifndef __BYTE_ORDER__
-#define __BYTE_ORDER__ __LITTLE_ENDIAN__
-#endif
-
-/* Convert a host long to a network long. */
-
-/* We must use a new-style function definition, so that this will also
- be valid for C++. */
-static __inline__ unsigned long
-htonl (unsigned long __arg)
-{
- register unsigned long __result;
-
- __asm__ ("xchg%B0 %b0,%h0\n\
- ror%L0 $16,%0\n\
- xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
- return __result;
-}
-
-/* Convert a host short to a network short. */
-
-static __inline__ unsigned short
-htons (unsigned int __arg)
-{
- register unsigned short __result;
-
- __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
- return __result;
-}
-
-#elif ((defined (__i860__) && !defined (__i860_big_endian__)) \
- || defined (__ns32k__) || defined (__vax__) \
- || defined (__spur__) || defined (__arm__))
-
-#ifndef __BYTE_ORDER__
-#define __BYTE_ORDER__ __LITTLE_ENDIAN__
-#endif
-
-/* For other little-endian machines, using C code is just as efficient as
- using assembly code. */
-
-/* Convert a host long to a network long. */
-
-static __inline__ unsigned long
-htonl (unsigned long __arg)
-{
- register unsigned long __result;
-
- __result = (__arg >> 24) & 0x000000ff;
- __result |= (__arg >> 8) & 0x0000ff00;
- __result |= (__arg << 8) & 0x00ff0000;
- __result |= (__arg << 24) & 0xff000000;
- return __result;
-}
-
-/* Convert a host short to a network short. */
-
-static __inline__ unsigned short
-htons (unsigned int __arg)
-{
- register unsigned short __result;
-
- __result = (__arg << 8) & 0xff00;
- __result |= (__arg >> 8) & 0x00ff;
- return __result;
-}
-
-#else /* must be a big-endian machine */
-
-#ifndef __BYTE_ORDER__
-#define __BYTE_ORDER__ __BIG_ENDIAN__
-#endif
-
-/* Convert a host long to a network long. */
-
-static __inline__ unsigned long
-htonl (unsigned long __arg)
-{
- return __arg;
-}
-
-/* Convert a host short to a network short. */
-
-static __inline__ unsigned short
-htons (unsigned int __arg)
-{
- return __arg;
-}
-
-#endif /* big-endian */
-
-/* Convert a network long to a host long. */
-
-static __inline__ unsigned long
-ntohl (unsigned long __arg)
-{
- return htonl (__arg);
-}
-
-/* Convert a network short to a host short. */
-
-static __inline__ unsigned short
-ntohs (unsigned int __arg)
-{
- return htons (__arg);
-}
-
-__EOF__
-
-if [ -r ${INPUT}/sys/byteorder.h ]; then
- if grep BYTE_ORDER ${INPUT}/sys/byteorder.h >/dev/null 2>/dev/null; then
- cat <<'__EOF__' >>${LIB}/sys/byteorder.h
-#ifndef BYTE_ORDER
-#define LITTLE_ENDIAN __LITTLE_ENDIAN__
-#define BIG_ENDIAN __BIG_ENDIAN__
-#define PDP_ENDIAN __PDP_ENDIAN__
-#define BYTE_ORDER __BYTE_ORDER__
-#endif
-
-__EOF__
- fi
-fi
-
-cat <<'__EOF__' >>${LIB}/sys/byteorder.h
-#endif /* !defined (_SYS_BYTEORDER_H) */
-__EOF__
-
-chmod a+r ${LIB}/sys/byteorder.h
-
-exit 0
-
diff --git a/gcc/fixinc.winnt b/gcc/fixinc.winnt
deleted file mode 100755
index 915ac72..0000000
--- a/gcc/fixinc.winnt
+++ /dev/null
@@ -1,232 +0,0 @@
-#! sh
-#
-# fixinc.winnt -- Install modified versions of Windows NT system include
-# files.
-#
-# Based on fixinc.sco script by Ian Lance Taylor (ian@airs.com)).
-# Modifications by Douglas Rupp (drupp@cs.washington.edu)
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with Windows NT
-# 3.5 SDK systems so as to provide a reasonable namespace when
-# compiling with gcc. The header files by default do not
-# provide many essential definitions and declarations if
-# __STDC__ is 1. This script modifies the header files to check
-# for __STRICT_ANSI__ being defined instead. Once munged, the
-# resulting new system include files are placed in a directory
-# that GNU C will search *before* searching the Include
-# directory.
-#
-# See README-fixinc for more information.
-
-ORIG_DIR=`pwd`
-
-# Directory containing the original header files.
-cd $2; SEDFILE=`${PWDCMD-pwd}`/fixinc-nt.sed
-echo $SEDFILE
-if [ ! -f $SEDFILE ]
-then echo fixincludes: sed script 'fixinc-nt.sed' not found
-exit 1
-fi
-echo 'Using sed script: ' ${SEDFILE}
-
-cd $ORIG_DIR
-
-INPUT=${INCLUDE}
-echo 'Using the Include environment variable to find header files to fix'
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>NUL; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-cd ${INPUT}
-if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-set - $treetops
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- echo "Finding header files in $1:"
- cd ${INPUT}
- cd $1
- files=`find . -name '*.[hH]' -type f -print`
- echo 'Checking header files:'
- for file in $files; do
- echo $file
- if egrep "!__STDC__" $file >NUL; then
- if [ -r $file ]; then
- cp $file $2/$file >NUL 2>&1 || echo "Can't copy $file"
- chmod +w,a+r $2/$file
-
-# The following have been removed from the sed command below
-# because it is more useful to leave these things in.
-# The only reason to remove them was for -pedantic,
-# which isn't much of a reason. -- rms.
-# /^[ ]*#[ ]*ident/d
-
- sed -e '
- s/!__STDC__/!defined (__STRICT_ANSI__)/g
- ' $2/$file > $2/$file.sed
- mv $2/$file.sed $2/$file
- if cmp $file $2/$file >NUL 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- fi
- fi
- fi
- done
- shift; shift
-done
-
-# Fix first broken decl of getcwd present on some svr4 systems.
-
-file=direct.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-file=rpcndr.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/Format\[\]/Format\[1\]/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-file=winnt.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/^#if !defined (__cplusplus)/#if 0/
- s/^#define DECLSPEC_IMPORT __declspec(dllimport)/#define DECLSPEC_IMPORT/
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > NUL 2>&1
-done
-
-exit 0
diff --git a/gcc/fixinc.wrap b/gcc/fixinc.wrap
deleted file mode 100755
index 406c87e..0000000
--- a/gcc/fixinc.wrap
+++ /dev/null
@@ -1,86 +0,0 @@
-#! /bin/sh
-# Create wrappers for include files instead of replacing them.
-#
-# This script is designed for systems whose include files can be fixed
-# by creating small wrappers around them.
-# An advantage of this method is that if the system include files are changed
-# (e.g. by OS upgrade), you need not re-run fixincludes.
-#
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-# (This was named INCLUDES, but that conflicts with a name in Makefile.in.)
-INPUT=${2-${INPUT-/usr/include}}
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-echo Building fixed headers in ${LIB}
-
-# Some math.h files define struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- if grep 'struct exception' $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _MATH_H_WRAPPER
-#ifdef __cplusplus
-# define exception __math_exception
-#endif
-#include_next <math.h>
-#ifdef __cplusplus
-# undef exception
-#endif
-#define _MATH_H_WRAPPER
-#endif /* _MATH_H_WRAPPER */
-__EOF__
- # Define _MATH_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <math.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-# Avoid the definition of the bool type in the Solaris 2.x curses.h when using
-# g++, since it's now an official type in the C++ language.
-file=curses.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- w='[ ]'
- if grep "typedef$w$w*char$w$w*bool$w*;" $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _CURSES_H_WRAPPER
-#ifdef __cplusplus
-# define bool __curses_bool_t
-#endif
-#include_next <curses.h>
-#ifdef __cplusplus
-# undef bool
-#endif
-#define _CURSES_H_WRAPPER
-#endif /* _CURSES_H_WRAPPER */
-__EOF__
- # Define _CURSES_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <curses.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-exit 0
diff --git a/gcc/fixinc.x86-linux-gnu b/gcc/fixinc.x86-linux-gnu
deleted file mode 100755
index ac2b947..0000000
--- a/gcc/fixinc.x86-linux-gnu
+++ /dev/null
@@ -1,136 +0,0 @@
-#! /bin/sh
-#
-# The script is created for Cygnus by vmakarov@cygnus.com and based on
-# fixinc.wrap
-#
-# This script is designed for x86 with gnulibc of version 2.0 and less
-# for solution of problems with invalid asm-statements by creating
-# small wrappers around the include files containg the asm-statements.
-#
-# See README-fixinc for more information.
-
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo Building fixed headers in ${LIB}
-
-file=selectbits.h
-echo Fixed $file for glibc-2.0.x
-rm -f $LIB/$file
-cat <<'__EOF__' >$LIB/$file
-/* This file fixes __FD_ZERO bug for glibc-2.0.x. */
-#ifndef _SELECTBITS_H_WRAPPER
-#include <features.h>
-#include_next <selectbits.h>
-
-#if defined(__FD_ZERO) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 && __GLIBC_MINOR__ == 0
-#undef __FD_ZERO
-#define __FD_ZERO(fdsetp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__ ("cld; rep; stosl" \
- : "=&c" (__d0), "=&D" (__d1) \
- : "a" (0), "0" (sizeof (__fd_set) \
- / sizeof (__fd_mask)), \
- "1" ((__fd_mask *) (fdsetp)) \
- : "memory"); \
- } while (0)
-#endif
-
-#define _SELECTBITS_H_WRAPPER
-#endif /* _SELECTBITS_H_WRAPPER */
-__EOF__
-# Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
-# the start, so that if #include_next gets another instance of
-# the wrapper, this will follow the #include_next chain until
-# we arrive at the real <selectbits.h>.
-chmod a+r $LIB/$file
-
-# asm/posix_types.h for libc version 1.x
-file=asm/posix_types.h
-echo Fixed $file for glibc-1.x
-rm -f $LIB/$file
-dir=`dirname $LIB/$file`
-if [ ! -d $dir ]; then
- mkdir -p $dir || exit 1
-fi
-cat <<'__EOF__' >$LIB/$file
-/* This file fixes __FD_ZERO bug for glibc-1.x. */
-#ifndef _POSIX_TYPES_H_WRAPPER
-#include <features.h>
-#include_next <asm/posix_types.h>
-
-#if defined(__FD_ZERO) && !defined(__GLIBC__)
-#undef __FD_ZERO
-#define __FD_ZERO(fdsetp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__("cld ; rep ; stosl" \
- : "=&c" (__d0), "=&D" (__d1) \
- : "a" (0), "0" (__FDSET_LONGS), \
- "1" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
- } while (0)
-#endif
-
-#define _POSIX_TYPES_H_WRAPPER
-#endif /* _POSIX_TYPES_H_WRAPPER */
-__EOF__
-# Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
-# the start, so that if #include_next gets another instance of
-# the wrapper, this will follow the #include_next chain until
-# we arrive at the real <asm/posix_types.h>.
-chmod a+r $LIB/$file
-
-# gnu/types.h for libc version 1.x
-file=gnu/types.h
-echo Fixed $file for glibc-1.x
-rm -f $LIB/$file
-dir=`dirname $LIB/$file`
-if [ ! -d $dir ]; then
- mkdir -p $dir || exit 1
-fi
-cat <<'__EOF__' >$LIB/$file
-/* This file fixes __FD_ZERO bug for glibc-1.x. */
-#ifndef _TYPES_H_WRAPPER
-#include <features.h>
-#include_next <gnu/types.h>
-
-#if defined(__FD_ZERO) && !defined(__GLIBC__)
-#undef __FD_ZERO
-# define __FD_ZERO(fdsetp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__("cld ; rep ; stosl" \
- : "=&c" (__d0), "=&D" (__d1) \
- : "a" (0), "0" (__FDSET_LONGS), \
- "1" ((__fd_set *) (fdsetp)) :"memory"); \
- } while (0)
-#endif
-
-#define _TYPES_H_WRAPPER
-#endif /* _TYPES_H_WRAPPER */
-__EOF__
-# Define _TYPES_H_WRAPPER at the end of the wrapper, not the start,
-# so that if #include_next gets another instance of the wrapper,
-# this will follow the #include_next chain until we arrive at
-# the real <gnu/types.h>.
-chmod a+r $LIB/$file
-
-exit 0
-
diff --git a/gcc/fixinc/Makefile.in b/gcc/fixinc/Makefile.in
deleted file mode 100755
index b348f30..0000000
--- a/gcc/fixinc/Makefile.in
+++ /dev/null
@@ -1,132 +0,0 @@
-# Makefile for GNU C++ compiler.
-# Copyright (C) 1987, 88, 90-5, 1998 Free Software Foundation, Inc.
-
-#This file is part of GNU CC.
-
-#GNU CC is free software; you can redistribute it and/or modify
-#it under the terms of the GNU General Public License as published by
-#the Free Software Foundation; either version 2, or (at your option)
-#any later version.
-
-#GNU CC 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 GNU CC; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330,
-#Boston, MA 02111-1307, USA.
-
-# The makefile built from this file lives in the fixinc subdirectory.
-# Its purpose is to build the any-platforms fixinc.sh script.
-
-CFLAGS = -g
-
-CC = @CC@
-SHELL = /bin/sh
-
-target=@target@
-# Directory where sources are, from where we are.
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# End of variables for you to override.
-
-default : gen
-
-# Now figure out from those variables how to compile and link.
-
-# Specify the directories to be searched for header files.
-# Both . and srcdir are used, in that order.
-INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config
-
-# Always use -I$(srcdir)/config when compiling.
-.c.o:
- $(CC) -c $(CFLAGS) $(CPPFLAGS) $(INCLUDES) $<
-
-# The only suffixes we want for implicit rules are .c and .o.
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-#
-
-## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-##
-## Makefile for constructing the "best" include fixer we can
-##
-## $Id: Makefile.in,v 1.2 1999/01/13 22:56:21 law Exp $
-##
-## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-OBJ = fixincl.o server.o regex.o
-HDR = server.h regex.h
-
-SH_TARGET = inclhack.sh fixincl.sh
-BIN_TARGET = fixincl
-AG_TEXT = $(SH_TARGET) fixincl.x \
- inclhack.def inclhack.tpl hackshell.tpl fixincl.tpl
-TARGETS = $(SH_TARGET) $(BIN_TARGET)
-
-all : $(TARGETS)
-sh : $(SH_TARGET)
-gen : $(SH_TARGET) fixincl.x
-
-$(OBJ): $(HDR)
-
-fixincl: $(OBJ)
- @echo $(CC) -o $@ $(OBJ) $(LIB) ; \
- if $(CC) -o $@ $(OBJ) $(LIB) ; then : ; else \
- rm -f $@ ; (echo "#! /bin/sh" ; echo exit 1 ) > $@ ; \
- chmod 777 $@ ; fi
-
-regex.o: regex.c
- -$(CC) $(CFLAGS) -DSTDC_HEADERS=1 -c regex.c
-
-fixincl.o : fixincl.x fixincl.c
-server.o : server.c server.h
-
-fixincl.x: fixincl.tpl inclhack.def
- @if ( autogen --help > /dev/null 2>&1 ) ; then \
- echo autogen -T fixincl.tpl -b fixincl inclhack.def ; \
- autogen -T $(srcdir)/fixincl.tpl -b fixincl \
- $(srcdir)/inclhack.def ; \
- else echo You need to install autogen ; \
- $(CP) $(srcdir)/$@ . ; fi
-
-inclhack.sh: inclhack.def inclhack.tpl hackshell.tpl
- @if ( autogen --help > /dev/null 2>&1 ) ; then \
- echo autogen inclhack.def ; \
- autogen inclhack.def ; \
- else echo You need to install autogen ; \
- $(CP) $(srcdir)/$@ . ; fi
-
-fixincl.sh: inclhack.def inclhack.tpl
- @if ( autogen --help > /dev/null 2>&1 ) ; then \
- echo autogen -DPROGRAM=1 -b fixincl inclhack.def ; \
- autogen -DPROGRAM=1 -b fixincl inclhack.def ; touch $@ ; \
- else echo You need to install autogen ; \
- $(CP) $(srcdir)/$@ . ; fi
-
-clean:
- rm -f *.o $(TARGETS) fixincl.x
-
-# Ensure all the targets are built. If the program "fixincl"
-# failed to compile, link or load, then we install the
-# "inclhack.sh" script. Otherwise, we install that program
-# plus the wrapper script, "fixincl.sh".
-#
-install: $(TARGETS)
- @rm -f ../fixinc.sh ; \
- if ( ./fixincl -v > /dev/null 2>&1 ) ; then \
- echo cp fixincl.sh ../fixinc.sh ; \
- cp fixincl.sh ../fixinc.sh ; \
- chmod 555 ../fixinc.sh ; \
- rm -f ../fixincl ; \
- echo cp fixincl .. ; \
- cp fixincl .. ; \
- chmod 555 ../fixincl ; \
- else \
- echo cp inclhack.sh ../fixinc.sh ; \
- cp inclhack.sh ../fixinc.sh ; \
- fi
diff --git a/gcc/fixinc/README b/gcc/fixinc/README
deleted file mode 100755
index d061cd6..0000000
--- a/gcc/fixinc/README
+++ /dev/null
@@ -1,47 +0,0 @@
-
-The fast-fixincludes system now, to the best of our collective belief,
-correctly implements exactly the same functionality as the previous
-fixincludes/fixinc.* shell scripts. On most systems where many fixes
-are required, this is accomplished by putting most of the functionality
-into a binary executable. On systems that had dedicated fixinc.* shell
-scripts, those scripts are still used by default until they can be
-converted.
-
-KNOWN PROBLEMS
-
-There may be some systems on which the fixinc binary program appears
-to be functional, but fails to work. Current thinking is that this
-is due to some new process limitations (fork() calls) on those
-systems. If you are experiencing this problem, then copy the script
-${src}/gcc/fixinc/inclhack.sh into ${builddir}/gcc/fixinc.sh and run
-make again.
-
-Oh, yes, please also report the problem with a description of
-the failure mode (symptoms) and the output from:
-
- egcs/config.guess
-
-TO DO
-
-* fixincl needs to be converted to use gcc's system.h, libiberty, and
- other portability frameworks.
-
-* FIXME: XXX needs to have tests for file descriptors > 10 or 12 added
- to detect/solve XXX.
-
-*
-
-
-
-THEORY OF OPS
-
-inclhack.def contains a list of potential fixes to be applied to the
-system headers. This file is processed by autogen to make both a
-shell script and a binary to apply those fixes to your headers.
-If the binary cannot be built, the shell version will be used instead.
-
-If mkfixinc.sh determines that your system needs machine-specific
-fixes that have not yet been applied to inclhack.def, it will install
-and use the current fixinc.* for that system instead.
-
-
diff --git a/gcc/fixinc/fixinc.dgux b/gcc/fixinc/fixinc.dgux
deleted file mode 100755
index b70e3ec..0000000
--- a/gcc/fixinc/fixinc.dgux
+++ /dev/null
@@ -1,200 +0,0 @@
-# !/bin/sh
-#
-# modified for dgux by hassey@dg-rtp.dg.com based on
-#
-# fixinc.svr4 written by Ron Guilmette (rfg@ncd.com).
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-#
-# See README-fixinc for more information.
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`${PWDCMD-pwd}`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-# Directory containing the original header files.
-shift
-if [ $# -eq 0 ] ; then
- set /usr/include
-fi
-
-INLIST="$@"
-
-for INPUT in ${INLIST} ; do
-cd ${ORIG_DIR}
-cd ${INPUT}
-
-if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making internal symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`pwd`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`pwd`
- # If link leads back into ${INPUT},
- # make a similar link here.
- if expr $x : "${INPUT}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${INPUT}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to outside ${INPUT},
- # treat this directory as if it actually contained the files.
-# This line used to have $dest instead of $x.
-# $dest seemed to be wrong for links found in subdirectories
-# of ${INPUT}. Does this change break anything?
- treetops="$treetops $x ${LIB}/$file"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-# Completely replace <_int_varargs.h> with a file that defines
-# va_list and gnuc_va_list
-
-file=_int_varargs.h
-if [ -r ${INPUT}/$file ]; then
- echo Replacing $file
- cat > ${LIB}/$file << EOF
-/* This file was generated by fixinc.dgux. */
-#ifndef __INT_VARARGS_H
-#define __INT_VARARGS_H
-
-#if defined(__m88k__) && defined (__DGUX__)
-#ifndef __GNUC_VA_LIST
-#define __GNUC_VA_LIST
-typedef struct
-{
- int __va_arg; /* argument number */
- int *__va_stk; /* start of args passed on stack */
- int *__va_reg; /* start of args passed in regs */
-} __gnuc_va_list;
-#endif /* not __GNUC_VA_LIST */
-#endif /* 88k && dgux */
-
-#ifndef _VA_LIST_
-#define _VA_LIST_
-typedef __gnuc_va_list va_list;
-#endif /* _VA_LIST_ */
-
-#endif /* __INT_VARARGS_H */
-
-EOF
- chmod a+r ${LIB}/$file
-fi
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-if $LINKS; then
- echo 'Making internal symbolic non-directory links'
- cd ${INPUT}
- files=`find . -type l -print`
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
- if [ -f $target ]; then
- ln -s $dest ${LIB}/$file >/dev/null 2>&1
- fi
- fi
- done
-fi
-
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.irix b/gcc/fixinc/fixinc.irix
deleted file mode 100755
index 58e1585..0000000
--- a/gcc/fixinc/fixinc.irix
+++ /dev/null
@@ -1,243 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain problematic Irix include files.
-# If possible, create a wrapper (see fixinc.wrap) instead of copying files.
-#
-# Copyright (C) 1997 Free Software Foundation, Inc.
-# Contributed by Brendan Kehoe (brendan@cygnus.com).
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# See README-fixinc for more information.
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`${PWDCMD-pwd}`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-# Directory containing the original header files.
-shift
-if [ $# -eq 0 ] ; then
- set /usr/include
-fi
-
-INLIST="$@"
-
-for INPUT in ${INLIST} ; do
-cd ${ORIG_DIR}
-cd ${INPUT}
-
-#
-# Note: For Irix, we deliberately don't try to create the directory trees,
-# since we only modify math.h, limits.h and unistd.h. If we
-# ADD ANY OTHERS, the "Making directories:" and symlinks code from
-# fixinc.svr4 may have to go back in.
-
-# This math.h fix is copied from fixinc.wrap. We want to avoid copying
-# math.h because both math.h and stdlib.h have a declaration for initstate,
-# and this declaration changed between Irix 6.2 and Irix 6.3. If we copy this
-# file, then the same toolchain can't be shared between 6.2 and 6.3+.
-
-# Some math.h files define struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- if grep 'struct exception' $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _MATH_H_WRAPPER
-#ifdef __cplusplus
-# define exception __math_exception
-#endif
-#include_next <math.h>
-#ifdef __cplusplus
-# undef exception
-#endif
-#define _MATH_H_WRAPPER
-#endif /* _MATH_H_WRAPPER */
-__EOF__
- # Define _MATH_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <math.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-# Avoid the definition of the bool type in curses.h when using
-# g++, since it's now an official type in the C++ language.
-
-# This is also from fixinc.wrap.
-
-file=curses.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- w='[ ]'
- if grep "typedef$w$w*char$w$w*bool$w*;" $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _CURSES_H_WRAPPER
-#ifdef __cplusplus
-# define bool __curses_bool_t
-#endif
-#include_next <curses.h>
-#ifdef __cplusplus
-# undef bool
-#endif
-#define _CURSES_H_WRAPPER
-#endif /* _CURSES_H_WRAPPER */
-__EOF__
- # Define _CURSES_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <curses.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-# In limits.h, put #ifndefs around things that are supposed to be defined
-# in float.h to avoid redefinition errors if float.h is included first.
-
-file=limits.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/[ ]FLT_MIN[ ]/i\
-#ifndef FLT_MIN
-'\
- -e '/[ ]FLT_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_MAX[ ]/i\
-#ifndef FLT_MAX
-'\
- -e '/[ ]FLT_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_DIG[ ]/i\
-#ifndef FLT_DIG
-'\
- -e '/[ ]FLT_DIG[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MIN[ ]/i\
-#ifndef DBL_MIN
-'\
- -e '/[ ]DBL_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MAX[ ]/i\
-#ifndef DBL_MAX
-'\
- -e '/[ ]DBL_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_DIG[ ]/i\
-#ifndef DBL_DIG
-'\
- -e '/[ ]DBL_DIG[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# The Irix unistd.h will introduce a call to __vfork in its libc, but the
-# function is never actually prototyped.
-file=unistd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/__vfork/i\
-extern pid_t __vfork(void);'\
- $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.ptx b/gcc/fixinc/fixinc.ptx
deleted file mode 100755
index ac8478a..0000000
--- a/gcc/fixinc/fixinc.ptx
+++ /dev/null
@@ -1,274 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain ANSI-incompatible
-# native Sequent DYNIX/ptx System V Release 3.2 system include files.
-# Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
-# Contributed by Bill Burton <billb@progress.com>
-# Portions adapted from fixinc.svr4 and fixincludes.
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with DYNIX/ptx
-# so as to remove things which are violations of the ANSI C standard.
-# This is done by first running fixinc.svr4 which does most of the
-# work. A few includes have fixes made to them afterwards by this
-# script. Once munged, the resulting new system include files are
-# placed in a directory that GNU C will search *before* searching the
-# /usr/include directory. This script should work properly for most
-# DYNIX/ptx systems. For other types of systems, you should use the
-# `fixincludes' script instead.
-#
-# See README-fixinc for more information.
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`${PWDCMD-pwd}`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Running fixinc.svr4'
-# DYNIX/ptx has dirname so this is no problem
-`dirname $0`/fixinc.svr4 $*
-echo 'Finished fixinc.svr4'
-
-echo 'Building fixincludes in ' ${LIB}
-# Directory containing the original header files.
-shift
-if [ $# -eq 0 ] ; then
- set /usr/include
-fi
-
-INLIST="$@"
-
-for INPUT in ${INLIST} ; do
-cd ${ORIG_DIR}
-cd ${INPUT}
-
-# Copied from fixincludes.
-# Don't use or define the name va_list in stdio.h.
-# This is for ANSI and also to interoperate properly with gcc's varargs.h.
-file=stdio.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, use of va_list
- # Arrange for stdio.h to use stdarg.h to define __gnuc_va_list
- (echo "#define __need___va_list"
- echo "#include <stdarg.h>") > ${LIB}/${file}.sed
- # Use __gnuc_va_list in arg types in place of va_list.
- # On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the
- # trailing parentheses and semicolon save all other systems from this.
- # Define __va_list__ (something harmless and unused) instead of va_list.
- # Don't claim to have defined va_list.
- sed -e 's@ va_list @ __gnuc_va_list @' \
- -e 's@ va_list)@ __gnuc_va_list)@' \
- -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \
- -e 's@ va_list@ __va_list__@' \
- -e 's@\*va_list@*__va_list__@' \
- -e 's@ __va_list)@ __gnuc_va_list)@' \
- -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \
- -e 's@VA_LIST@DUMMY_VA_LIST@' \
- -e 's@_NEED___Va_LIST@_NEED___VA_LIST@' \
- ${LIB}/$file >> ${LIB}/${file}.sed
-
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
-fi
-
-# In pwd.h, PTX 1.x needs stdio.h included since FILE * was added in a
-# prototype later on in the file.
-file=pwd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep stdio $file_to_fix > /dev/null; then
- true
- else
- sed -e '/#include <sys\/types\.h>/a\
-\
-#if defined(__STDC__) || defined(__cplusplus)\
-#include <stdio.h>\
-#endif /* __STDC__ */
-' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# Copied from fixincludes.
-# math.h puts the declaration of matherr before the definition
-# of struct exception, so the prototype (added by fixproto) causes havoc.
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, matherr declaration
- sed -e '/^struct exception/,$b' \
- -e '/matherr/i\
-struct exception;
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
-fi
-
-# In netinet/in.h, the network byte swapping asm functions supported by the
-# native cc compiler on PTX 1.x and 2.x is not supported in gcc. Instead,
-# include <sys/byteorder.h> written out by the fixinc.svr4 script which has
-# these same routines written in an asm format supported by gcc.
-file=netinet/in.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/#define NETSWAP/a\
-\
-#if defined (__GNUC__) || defined (__GNUG__)\
-#include <sys/byteorder.h>\
-#else /* not __GNUC__ */
-' \
- -e '/#endif[ ]*\/\* NETSWAP \*\//i\
-#endif /* not __GNUC__ */
-' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# /usr/include/sys/mc_param.h has an embedded asm for the cpuid instruction
-# on the P5. This is not used by anything else so we ifdef it out.
-file=sys/mc_param.h
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/__asm/,/}/{
-/__asm/i\
-#if !defined (__GNUC__) && !defined (__GNUG__)
-/}/a\
-#endif
-}' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# /usr/include/sys/mc_param.h has an embedded asm for the cpuid instruction
-# on the P5. This is not used by anything else so we ifdef it out.
-file=sys/mc_param.h
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/__asm/,/}/{
-/__asm/i\
-#if !defined (__GNUC__) && !defined (__GNUG__)
-/}/a\
-#endif
-}' \
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.sco b/gcc/fixinc/fixinc.sco
deleted file mode 100755
index 6718902..0000000
--- a/gcc/fixinc/fixinc.sco
+++ /dev/null
@@ -1,445 +0,0 @@
-#! /bin/sh
-#
-# fixinc.sco -- Install modified versions of SCO system include
-# files.
-#
-# Based on fixinc.svr4 script by Ron Guilmette (rfg@ncd.com) (SCO
-# modifications by Ian Lance Taylor (ian@airs.com)).
-#
-# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with SCO
-# 3.2v4 systems so as to provide a reasonable namespace when
-# compiling with gcc. The header files by default do not
-# provide many essential definitions and declarations if
-# __STDC__ is 1. This script modifies the header files to check
-# for __STRICT_ANSI__ being defined instead. Once munged, the
-# resulting new system include files are placed in a directory
-# that GNU C will search *before* searching the /usr/include
-# directory. This script should work properly for most SCO
-# 3.2v4 systems. For other types of systems, you should use the
-# `fixincludes' or the `fixinc.svr4' script instead.
-#
-# See README-fixinc for more information.
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`${PWDCMD-pwd}`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-# Directory containing the original header files.
-shift
-if [ $# -eq 0 ] ; then
- set /usr/include
-fi
-
-INLIST="$@"
-
-for INPUT in ${INLIST} ; do
-cd ${ORIG_DIR}
-cd ${INPUT}
-
-if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making internal symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`pwd`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`pwd`
- # If link leads back into ${INPUT},
- # make a similar link here.
- if expr $x : "${INPUT}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${INPUT}/&&p"`
- echo $file '->' $y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s ${LIB}/$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to outside ${INPUT},
- # treat this directory as if it actually contained the files.
-# This line used to have $dest instead of $x.
-# $dest seemed to be wrong for links found in subdirectories
-# of ${INPUT}. Does this change break anything?
- treetops="$treetops $x ${LIB}/$file"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-set - $treetops
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- echo "Finding header files in $1:"
- cd ${INPUT}
- cd $1
- files=`find . -name '*.h' -type f -print`
- echo 'Checking header files:'
- for file in $files; do
- if egrep '!__STDC__' $file >/dev/null; then
- if [ -r $file ]; then
- cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w $2/$file
- chmod a+r $2/$file
-
-# The following have been removed from the sed command below
-# because it is more useful to leave these things in.
-# The only reason to remove them was for -pedantic,
-# which isn't much of a reason. -- rms.
-# /^[ ]*#[ ]*ident/d
-
- sed -e '
- s/!__STDC__/!defined (__STRICT_ANSI__)/g
- ' $2/$file > $2/$file.sed
- mv $2/$file.sed $2/$file
- if cmp $file $2/$file >/dev/null 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- fi
- fi
- fi
- done
- shift; shift
-done
-
-# We shouldn't stay in the directory we just copied.
-cd ${INPUT}
-
-# Fix first broken decl of getcwd present on some svr4 systems.
-
-file=stdlib.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \{0,\}\*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix second broken decl of getcwd present on some svr4 systems. Also
-# fix the incorrect decl of profil present on some svr4 systems.
-
-file=unistd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
- | sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix third broken decl of getcwd on SCO. Also fix incorrect decl of
-# link.
-file=prototypes.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
- | sed -e 's/const int link(const char \*, char \*)/extern int link(const char *, const char *)/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix an error in this file: the #if says _cplusplus, not the double
-# underscore __cplusplus that it should be
-file=tinfo.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpcsvc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, __cplusplus macro
- sed -e 's/[ ]_cplusplus/ __cplusplus/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- fi
-fi
-
-# Fix prototype declaration of utime in sys/times.h. In 3.2v4.0 the
-# const is missing.
-file=sys/times.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, utime prototype
- sed -e 's/(const char \*, struct utimbuf \*);/(const char *, const struct utimbuf *);/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- fi
-fi
-
-# This function is borrowed from fixinclude.svr4
-# The OpenServer math.h defines struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-#
-# OpenServer's math.h declares abs as inline int abs... Unfortunately,
-# we blow over that one (with C++ linkage) and stick a new one in stdlib.h
-# with C linkage. So we eat the one out of math.h.
-file=math.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/struct exception/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif'\
- -e '/struct exception/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif' \
- -e 's@inline int abs(int [a-z][a-z]*) {.*}@extern "C" int abs(int);@' \
- $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-#
-# Also, the static functions lstat() and fchmod() in <sys/stat.h>
-# cause G++ grief since they're not wrapped in "if __cplusplus".
-# Fix that up now.
-#
-file=sys/stat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, static definitions not C++-aware.
- sed -e '/^static int[ ]*/i\
-#if __cplusplus\
-extern "C"\
-{\
-#endif /* __cplusplus */ \
-' \
--e '/^}$/a\
-#if __cplusplus\
-}\
-#endif /* __cplusplus */ \
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
-fi
-
-# This fix has the regex modified from the from fixinc.wrap
-# Avoid the definition of the bool type in the following files when using
-# g++, since it's now an official type in the C++ language.
-for file in term.h tinfo.h
-do
- if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- w='[ ]'
- if grep "typedef$w.*char$w.*bool$w*;" $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<__EOF__ >$LIB/$file
-#ifndef _CURSES_H_WRAPPER
-#ifdef __cplusplus
-# define bool __curses_bool_t
-#endif
-#include_next <$file>
-#ifdef __cplusplus
-# undef bool
-#endif
-#define _CURSES_H_WRAPPER
-#endif /* _CURSES_H_WRAPPER */
-__EOF__
- # Define _CURSES_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <curses.h>.
- chmod a+r $LIB/$file
- fi
- fi
-done
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-if $LINKS; then
- echo 'Making internal symbolic non-directory links'
- cd ${INPUT}
- files=`find . -type l -print`
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
- if [ -f $target ]; then
- ln -s $dest ${LIB}/$file >/dev/null 2>&1
- fi
- fi
- done
-fi
-
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.svr4 b/gcc/fixinc/fixinc.svr4
deleted file mode 100755
index 46dec85..0000000
--- a/gcc/fixinc/fixinc.svr4
+++ /dev/null
@@ -1,1744 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain ANSI-incompatible
-# native System V Release 4 system include files.
-# Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
-# Contributed by Ron Guilmette (rfg@monkeys.com).
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with System V
-# Release 4 systems so as to remove things which are violations of the
-# ANSI C standard. Once munged, the resulting new system include files
-# are placed in a directory that GNU C will search *before* searching
-# the /usr/include directory. This script should work properly for most
-# System V Release 4 systems. For other types of systems, you should
-# use the `fixincludes' script instead.
-#
-# See README-fixinc for more information.
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`${PWDCMD-pwd}`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-
-# Directory containing the original header files.
-shift
-if [ $# -eq 0 ] ; then
- set /usr/include
-fi
-
-INLIST="$@"
-
-for INPUT in ${INLIST} ; do
-cd ${ORIG_DIR}
-cd ${INPUT}
-
-if $LINKS; then
- files=`find . -follow -type d -print 2>/dev/null | sed '/^.$/d'`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making internal symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`pwd`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- rwd=`pwd`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`pwd`
- # If link leads back into ${INPUT},
- # make a similar link here.
- if expr "$dest" : '[^/][^/]*' >/dev/null && [ ! -h $dest ]; then
- echo $file '->' $dest': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dest ${LIB}/$file > /dev/null 2>&1
- elif expr $x : "${INPUT}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${INPUT}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- elif expr $x : "${rwd}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to the directory where the link is.
- y=`echo $x | sed -n "s&${rwd}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to outside ${INPUT},
- # treat this directory as if it actually contained the files.
-# This line used to have $dest instead of $x.
-# $dest seemed to be wrong for links found in subdirectories
-# of ${INPUT}. Does this change break anything?
- treetops="$treetops $x ${LIB}/$file"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-set - $treetops
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- echo "Finding header files in $1:"
- cd ${INPUT}
- cd $1
- files=`find . -name '*.h' -type f -print`
- echo 'Checking header files:'
- for file in $files; do
- if [ -r $file ]; then
- cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w $2/$file
- chmod a+r $2/$file
-
-# The following have been removed from the sed command below
-# because it is more useful to leave these things in.
-# The only reason to remove them was for -pedantic,
-# which isn't much of a reason. -- rms.
-# /^[ ]*#[ ]*ident/d
-
-# This code makes Solaris SCSI fail, because it changes the
-# alignment within some critical structures. See <sys/scsi/impl/commands.h>.
-# s/u_char\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# Disable these also, since they probably aren't safe either.
-# s/u_short\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# s/ushort\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# s/evcm_t\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
-# s/Pbyte\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*SEQSIZ\)/unsigned int\1/
-
-# The change of u_char, etc, to u_int
-# applies to bit fields.
- sed -e '
- s%^\([ ]*#[ ]*else\)[ ]*/[^*].*%\1%
- s%^\([ ]*#[ ]*else\)[ ]*[^/ ].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*/[^*].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*[^/ ].*%\1%
- s/#lint(on)/defined(lint)/g
- s/#lint(off)/!defined(lint)/g
- s/#machine(\([^)]*\))/defined(__\1__)/g
- s/#system(\([^)]*\))/defined(__\1__)/g
- s/#cpu(\([^)]*\))/defined(__\1__)/g
- /#[a-z]*if.*[ (]m68k/ s/\([^_]\)m68k/\1__m68k__/g
- /#[a-z]*if.*[ (]__i386\([^_]\)/ s/__i386/__i386__/g
- /#[a-z]*if.*[ (]i386/ s/\([^_]\)i386/\1__i386__/g
- /#[a-z]*if.*[ (!]__i860\([^_]\)/ s/__i860/__i860__/g
- /#[a-z]*if.*[ (!]i860/ s/\([^_]\)i860/\1__i860__/g
- /#[a-z]*if.*[ (]sparc/ s/\([^_]\)sparc/\1__sparc__/g
- /#[a-z]*if.*[ (]mc68000/ s/\([^_]\)mc68000/\1__mc68000__/g
- /#[a-z]*if.*[ (]vax/ s/\([^_]\)vax/\1__vax__/g
- /#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)\([^a-z0-9_]\)/\1__\2__\3/g
- /#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)$/\1__\2__/g
- /#[a-z]*if.*[ (]ns32000/ s/\([^_]\)ns32000/\1__ns32000__/g
- /#[a-z]*if.*[ (]pyr/ s/\([^_]\)pyr/\1__pyr__/g
- /#[a-z]*if.*[ (]is68k/ s/\([^_]\)is68k/\1__is68k__/g
- s/__STDC__[ ][ ]*==[ ][ ]*0/!defined (__STRICT_ANSI__)/g
- s/__STDC__[ ][ ]*==[ ][ ]*1/defined (__STRICT_ANSI__)/g
- s/__STDC__[ ][ ]*!=[ ][ ]*0/defined (__STRICT_ANSI__)/g
- s/__STDC__[ ][ ]*!=[ ][ ]*1/!defined (__STRICT_ANSI__)/g
- s/__STDC__ - 0 == 0/!defined (__STRICT_ANSI__)/g
- s/__STDC__ - 0 == 1/defined (__STRICT_ANSI__)/g
- /^typedef[ ][ ]*[unsigned ]*long[ ][ ]*[u_]*longlong_t;/s/long/long long/
- ' $2/$file > $2/$file.sed
- mv $2/$file.sed $2/$file
- if cmp $file $2/$file >/dev/null 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- fi
- fi
- done
- shift; shift
-done
-
-# Install the proper definition of the three standard types in header files
-# that they come from.
-for file in sys/types.h stdlib.h sys/stdtypes.h stddef.h memory.h unistd.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing size_t, ptrdiff_t and wchar_t in $file
- sed \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/i\
-#ifndef __SIZE_TYPE__\
-#define __SIZE_TYPE__ long unsigned int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/typedef __SIZE_TYPE__ size_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/i\
-#ifndef __PTRDIFF_TYPE__\
-#define __PTRDIFF_TYPE__ long int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/i\
-#ifndef __WCHAR_TYPE__\
-#define __WCHAR_TYPE__ int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/typedef __WCHAR_TYPE__ wchar_t/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- fi
- fi
-done
-
-# Fix first broken decl of getcwd present on some svr4 systems.
-
-file=stdlib.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix second broken decl of getcwd present on some svr4 systems. Also
-# fix the incorrect decl of profil present on some svr4 systems.
-
-file=unistd.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
- | sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix the definition of NULL in <sys/param.h> so that it is conditional
-# and so that it is correct for both C and C++.
-
-file=sys/param.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- chmod a+r /tmp/$base
- sed -e '/^#define[ ]*NULL[ ]*0$/c\
-#ifndef NULL\
-#ifdef __cplusplus\
-#define __NULL_TYPE\
-#else /* !defined(__cplusplus) */\
-#define __NULL_TYPE (void *)\
-#endif /* !defined(__cplusplus) */\
-#define NULL (__NULL_TYPE 0)\
-#endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Likewise fix the definition of NULL in <stdio.h> so that it is conditional
-# and so that it is correct for both C and C++.
-
-file=stdio.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^#define[ ]*NULL[ ]*0$/c\
-#ifdef __cplusplus\
-#define __NULL_TYPE\
-#else /* !defined(__cplusplus) */\
-#define __NULL_TYPE (void *)\
-#endif /* !defined(__cplusplus) */\
-#define NULL (__NULL_TYPE 0)' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Likewise fix the definition of NULL in <dbm.h> so that it is conditional
-# and so that it is correct for both C and C++.
-
-file=dbm.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^#define[ ]*NULL[ ]*((char \*) 0)$/c\
-#ifndef NULL\
-#ifdef __cplusplus\
-#define __NULL_TYPE\
-#else /* !defined(__cplusplus) */\
-#define __NULL_TYPE (void *)\
-#endif /* !defined(__cplusplus) */\
-#define NULL (__NULL_TYPE 0)\
-#endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Add a prototyped declaration of mmap to <sys/mman.h>.
-
-file=sys/mman.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^extern caddr_t mmap();$/c\
-#ifdef __STDC__\
-extern caddr_t mmap (caddr_t, size_t, int, int, int, off_t);\
-#else /* !defined(__STDC__) */\
-extern caddr_t mmap ();\
-#endif /* !defined(__STDC__) */' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Fix declarations of `ftw' and `nftw' in <ftw.h>. On some/most SVR4 systems
-# the file <ftw.h> contains extern declarations of these functions followed
-# by explicitly `static' definitions of these functions... and that's not
-# allowed according to ANSI C. (Note however that on Solaris, this header
-# file glitch has been pre-fixed by Sun. In the Solaris version of <ftw.h>
-# there are no static definitions of any function so we don't need to do
-# any of this stuff when on Solaris.
-
-file=ftw.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if test -z "$file_to_fix" || grep 'define ftw' $file_to_fix > /dev/null; then
-# Either we have no <ftw.h> file at all, or else we have the pre-fixed Solaris
-# one. Either way, we don't have to do anything.
- true
-else
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^extern int ftw(const/i\
-#if !defined(_STYPES)\
-static\
-#else\
-extern\
-#endif
-'\
- -e 's/extern \(int ftw(const.*\)$/\1/' \
- -e '/^extern int nftw/i\
-#if defined(_STYPES)\
-static\
-#else\
-extern\
-#endif
-'\
- -e 's/extern \(int nftw.*\)$/\1/' \
- -e '/^extern int ftw(),/c\
-#if !defined(_STYPES)\
-static\
-#else\
-extern\
-#endif\
- int ftw();\
-#if defined(_STYPES)\
-static\
-#else\
-extern\
-#endif\
- int nftw();' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Avoid the definition of the bool type in the Solaris 2.x curses.h when using
-# g++, since it's now an official type in the C++ language.
-file=curses.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e 's,^typedef[ ]char[ ]bool;$,#ifndef __cplusplus\
-typedef char bool;\
-#endif /* !defined __cplusplus */,' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Add a `static' declaration of `getrnge' into <regexp.h>.
-
-# Don't do this if there is already a `static void getrnge' declaration
-# present, since this would cause a redeclaration error. Solaris 2.x has
-# such a declaration.
-
-file=regexp.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep "static void getrnge" $file_to_fix > /dev/null; then
- true
- else
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^static int[ ]*size;/c\
-static int size ;\
-\
-static int getrnge ();' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
-# that is visible to any ANSI compiler using this include. Simply
-# delete the lines that #define some string functions to internal forms.
-
-file=string.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/#define.*__std_hdr_/d' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Delete any #defines of `__i386' which may be present in <ieeefp.h>. They
-# tend to conflict with the compiler's own definition of this symbol. (We
-# will use the compiler's definition.)
-# Likewise __sparc, for Solaris, and __i860, and a few others
-# (guessing it is necessary for all of them).
-
-file=ieeefp.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/#define[ ]*__i386 /d' -e '/#define[ ]*__sparc /d' \
- -e '/#define[ ]*__i860 /d' -e '/#define[ ]*__m88k /d' \
- -e '/#define[ ]*__mips /d' -e '/#define[ ]*__m68k /d' \
- /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Add a #define of _SIGACTION_ into <sys/signal.h>.
-# Also fix types of SIG_DFL, SIG_ERR, SIG_IGN, and SIG_HOLD.
-
-file=sys/signal.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^struct sigaction {/c\
-#define _SIGACTION_\
-struct sigaction {' \
- -e '1,$s/(void *(\*)())/(void (*)(int))/' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Fix declarations of `makedev', `major', and `minor' in <sys/mkdev.h>.
-
-file=sys/mkdev.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^dev_t makedev(const/c\
-static dev_t makedev(const major_t, const minor_t);' \
- -e '/^dev_t makedev()/c\
-static dev_t makedev();' \
- -e '/^major_t major(const/c\
-static major_t major(const dev_t);' \
- -e '/^major_t major()/c\
-static major_t major();' \
- -e '/^minor_t minor(const/c\
-static minor_t minor(const dev_t);' \
- -e '/^minor_t minor()/c\
-static minor_t minor();' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Fix reference to NMSZ in <sys/adv.h>.
-
-file=sys/adv.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed 's/\[NMSZ\]/\[RFS_NMSZ\]/g' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Fix reference to NC_NPI_RAW in <sys/netcspace.h>. Also fix types of
-# array initializers.
-
-file=sys/netcspace.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed 's/NC_NPI_RAW/NC_TPI_RAW/g' $file_to_fix \
- | sed 's/NC_/(unsigned long) NC_/' > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Conditionalize all of <fs/rfs/rf_cache.h> on _KERNEL being defined.
-
-file=fs/rfs/rf_cache.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/erec.h> on _KERNEL being defined.
-
-file=sys/erec.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/err.h> on _KERNEL being defined.
-
-file=sys/err.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/char.h> on _KERNEL being defined.
-
-file=sys/char.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/getpages.h> on _KERNEL being defined.
-
-file=sys/getpages.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/map.h> on _KERNEL being defined.
-
-file=sys/map.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/cmn_err.h> on _KERNEL being defined.
-
-file=sys/cmn_err.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize all of <sys/kdebugger.h> on _KERNEL being defined.
-
-file=sys/kdebugger.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep _KERNEL $file_to_fix > /dev/null; then
- true
- else
- echo '#ifdef _KERNEL' > /tmp/$base
- cat $file_to_fix >> /tmp/$base
- echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- rm -f /tmp/$base
- fi
-fi
-
-# Conditionalize some of <netinet/in.h> on _KERNEL being defined.
-# This has been taken out because it breaks on some versions of
-# DYNIX/ptx, and it does not seem to do much good on any system.
-# file=netinet/in.h
-# base=`basename $file`
-# if [ -r ${LIB}/$file ]; then
-# file_to_fix=${LIB}/$file
-# else
-# if [ -r ${INPUT}/$file ]; then
-# file_to_fix=${INPUT}/$file
-# else
-# file_to_fix=""
-# fi
-# fi
-# if [ \! -z "$file_to_fix" ]; then
-# echo Checking $file_to_fix
-# if grep _KERNEL $file_to_fix > /dev/null; then
-# true
-# else
-# sed -e '/#ifdef INKERNEL/i\
-# #ifdef _KERNEL
-# ' \
-# -e '/#endif[ ]*\/\* INKERNEL \*\//a\
-# #endif /* _KERNEL */
-# ' \
-# $file_to_fix > ${LIB}/${file}.sed
-# rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
-# echo Fixed $file_to_fix
-# fi
-# fi
-
-# Conditionalize some of <sys/endian.h> on __GNUC__ and __GNUG__.
-
-file=sys/endian.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- if grep __GNUC__ $file_to_fix > /dev/null; then
- true
- else
- sed -e '/# ifdef __STDC__/i\
-# if !defined (__GNUC__) && !defined (__GNUG__)
-' \
- -e '/# include <sys\/byteorder.h>/s/ / /'\
- -e '/# include <sys\/byteorder.h>/i\
-# endif /* !defined (__GNUC__) && !defined (__GNUG__) */
-'\
- $file_to_fix > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- echo Fixed $file_to_fix
- fi
-fi
-
-# Commented out because tmcconne@sedona.intel.com says we don't clearly need it
-# and the text in types.h is not erroneous.
-## In sys/types.h, don't name the enum for booleans.
-#
-#file=sys/types.h
-#base=`basename $file`
-#if [ -r ${LIB}/$file ]; then
-# file_to_fix=${LIB}/$file
-#else
-# if [ -r ${INPUT}/$file ]; then
-# file_to_fix=${INPUT}/$file
-# else
-# file_to_fix=""
-# fi
-#fi
-#if [ \! -z "$file_to_fix" ]; then
-# echo Checking $file_to_fix
-# if grep "enum boolean" $file_to_fix > /dev/null; then
-# sed -e 's/enum boolean/enum/' ${LIB}/$file > ${LIB}/${file}.sed
-# rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
-# echo Fixed $file_to_fix
-# else
-# true
-# fi
-#fi
-
-# Remove useless extern keyword from struct forward declarations in
-# <sys/stream.h> and <sys/strsubr.h>
-
-file=sys/stream.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/extern struct stdata;/struct stdata;/g
- s/extern struct strevent;/struct strevent;/g
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-file=sys/strsubr.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/extern struct strbuf;/struct strbuf;/g
- s/extern struct uio;/struct uio;/g
- s/extern struct thread;/struct thread;/g
- s/extern struct proc;/struct proc;/g
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Put storage class at start of decl, to avoid warning.
-file=rpc/types.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/const extern/extern const/g
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Convert functions to prototype form, and fix arg names in <sys/stat.h>.
-
-file=sys/stat.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '/^stat([ ]*[^c]/{
-N
-N
-s/(.*)\n/( /
-s/;\n/, /
-s/;$/)/
-}' \
- -e '/^lstat([ ]*[^c]/{
-N
-N
-s/(.*)\n/( /
-s/;\n/, /
-s/;$/)/
-}' \
- -e '/^fstat([ ]*[^i]/{
-N
-N
-s/(.*)\n/( /
-s/;\n/, /
-s/;$/)/
-}' \
- -e '/^mknod([ ]*[^c]/{
-N
-N
-N
-s/(.*)\n/( /
-s/;\n/, /g
-s/;$/)/
-}' \
- -e '1,$s/\([^A-Za-z]\)path\([^A-Za-z]\)/\1__path\2/g' \
- -e '1,$s/\([^A-Za-z]\)buf\([^A-Za-z]\)/\1__buf\2/g' \
- -e '1,$s/\([^A-Za-z]\)fd\([^A-Za-z]\)/\1__fd\2/g' \
- -e '1,$s/ret\([^u]\)/__ret\1/g' \
- -e '1,$s/\([^_]\)mode\([^_]\)/\1__mode\2/g' \
- -e '1,$s/\([^_r]\)dev\([^_]\)/\1__dev\2/g' /tmp/$base > /tmp/$base.sed
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base.sed ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base /tmp/$base.sed
-fi
-
-# Sony NEWSOS 5.0 does not support the complete ANSI C standard.
-
-if [ -x /bin/sony ]; then
- if /bin/sony; then
-
- # Change <stdio.h> to not define __filbuf, __flsbuf, and __iob
-
- file=stdio.h
- base=`basename $file`
- if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
- else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
- fi
- if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '
- s/__filbuf/_filbuf/g
- s/__flsbuf/_flsbuf/g
- s/__iob/_iob/g
- ' /tmp/$base > /tmp/$base.sed
- mv /tmp/$base.sed /tmp/$base
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
- fi
-
- # Change <ctype.h> to not define __ctype
-
- file=ctype.h
- base=`basename $file`
- if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
- else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
- fi
- if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- cp $file_to_fix /tmp/$base
- chmod +w /tmp/$base
- sed -e '
- s/__ctype/_ctype/g
- ' /tmp/$base > /tmp/$base.sed
- mv /tmp/$base.sed /tmp/$base
- if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
- fi
- fi
-fi
-
-# In limits.h, put #ifndefs around things that are supposed to be defined
-# in float.h to avoid redefinition errors if float.h is included first.
-# Solaris 2.1 has this problem.
-
-file=limits.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/[ ]FLT_MIN[ ]/i\
-#ifndef FLT_MIN
-'\
- -e '/[ ]FLT_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_MAX[ ]/i\
-#ifndef FLT_MAX
-'\
- -e '/[ ]FLT_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_DIG[ ]/i\
-#ifndef FLT_DIG
-'\
- -e '/[ ]FLT_DIG[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MIN[ ]/i\
-#ifndef DBL_MIN
-'\
- -e '/[ ]DBL_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MAX[ ]/i\
-#ifndef DBL_MAX
-'\
- -e '/[ ]DBL_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_DIG[ ]/i\
-#ifndef DBL_DIG
-'\
- -e '/[ ]DBL_DIG[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Completely replace <sys/varargs.h> with a file that includes gcc's
-# stdarg.h or varargs.h files as appropriate.
-
-file=sys/varargs.h
-if [ -r ${INPUT}/$file ]; then
- echo Replacing $file
- cat > ${LIB}/$file << EOF
-/* This file was generated by fixincludes. */
-#ifndef _SYS_VARARGS_H
-#define _SYS_VARARGS_H
-
-#ifdef __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#endif /* _SYS_VARARGS_H */
-EOF
- chmod a+r ${LIB}/$file
-fi
-
-# In math.h, put #ifndefs around things that might be defined in a gcc
-# specific math-*.h file.
-
-file=math.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/define[ ]HUGE_VAL[ ]/i\
-#ifndef HUGE_VAL
-'\
- -e '/define[ ]HUGE_VAL[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-# Solaris math.h and floatingpoint.h define __P without protection,
-# which conflicts with the fixproto definition. The fixproto
-# definition and the Solaris definition are used the same way.
-for file in math.h floatingpoint.h; do
- base=`basename $file`
- if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
- else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
- fi
- if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/^#define[ ]*__P/i\
-#ifndef __P
-'\
- -e '/^#define[ ]*__P/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
- fi
-done
-
-# The Solaris math.h defines struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/struct exception/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif'\
- -e '/struct exception/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-if $LINKS; then
- echo 'Making internal symbolic non-directory links'
- cd ${INPUT}
- files=`find . -type l -print`
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if expr "$dest" : '[^/].*' > /dev/null; then
- target=${LIB}/`echo $file | sed "s|[^/]*\$|$dest|"`
- if [ -f $target ]; then
- ln -s $dest ${LIB}/$file >/dev/null 2>&1
- fi
- fi
- done
-fi
-
-cd ${ORIG_DIR}
-
-echo 'Replacing <sys/byteorder.h>'
-if [ \! -d $LIB/sys ]; then
- mkdir $LIB/sys
-fi
-rm -f ${LIB}/sys/byteorder.h
-cat <<'__EOF__' >${LIB}/sys/byteorder.h
-#ifndef _SYS_BYTEORDER_H
-#define _SYS_BYTEORDER_H
-
-/* Functions to convert `short' and `long' quantities from host byte order
- to (internet) network byte order (i.e. big-endian).
-
- Written by Ron Guilmette (rfg@ncd.com).
-
- This isn't actually used by GCC. It is installed by fixinc.svr4.
-
- For big-endian machines these functions are essentially no-ops.
-
- For little-endian machines, we define the functions using specialized
- asm sequences in cases where doing so yields better code (e.g. i386). */
-
-#if !defined (__GNUC__) && !defined (__GNUG__)
-#error You lose! This file is only useful with GNU compilers.
-#endif
-
-#ifndef __BYTE_ORDER__
-/* Byte order defines. These are as defined on UnixWare 1.1, but with
- double underscores added at the front and back. */
-#define __LITTLE_ENDIAN__ 1234
-#define __BIG_ENDIAN__ 4321
-#define __PDP_ENDIAN__ 3412
-#endif
-
-#ifdef __STDC__
-static __inline__ unsigned long htonl (unsigned long);
-static __inline__ unsigned short htons (unsigned int);
-static __inline__ unsigned long ntohl (unsigned long);
-static __inline__ unsigned short ntohs (unsigned int);
-#endif /* defined (__STDC__) */
-
-#if defined (__i386__)
-
-#ifndef __BYTE_ORDER__
-#define __BYTE_ORDER__ __LITTLE_ENDIAN__
-#endif
-
-/* Convert a host long to a network long. */
-
-/* We must use a new-style function definition, so that this will also
- be valid for C++. */
-static __inline__ unsigned long
-htonl (unsigned long __arg)
-{
- register unsigned long __result;
-
- __asm__ ("xchg%B0 %b0,%h0\n\
- ror%L0 $16,%0\n\
- xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
- return __result;
-}
-
-/* Convert a host short to a network short. */
-
-static __inline__ unsigned short
-htons (unsigned int __arg)
-{
- register unsigned short __result;
-
- __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
- return __result;
-}
-
-#elif ((defined (__i860__) && !defined (__i860_big_endian__)) \
- || defined (__ns32k__) || defined (__vax__) \
- || defined (__spur__) || defined (__arm__))
-
-#ifndef __BYTE_ORDER__
-#define __BYTE_ORDER__ __LITTLE_ENDIAN__
-#endif
-
-/* For other little-endian machines, using C code is just as efficient as
- using assembly code. */
-
-/* Convert a host long to a network long. */
-
-static __inline__ unsigned long
-htonl (unsigned long __arg)
-{
- register unsigned long __result;
-
- __result = (__arg >> 24) & 0x000000ff;
- __result |= (__arg >> 8) & 0x0000ff00;
- __result |= (__arg << 8) & 0x00ff0000;
- __result |= (__arg << 24) & 0xff000000;
- return __result;
-}
-
-/* Convert a host short to a network short. */
-
-static __inline__ unsigned short
-htons (unsigned int __arg)
-{
- register unsigned short __result;
-
- __result = (__arg << 8) & 0xff00;
- __result |= (__arg >> 8) & 0x00ff;
- return __result;
-}
-
-#else /* must be a big-endian machine */
-
-#ifndef __BYTE_ORDER__
-#define __BYTE_ORDER__ __BIG_ENDIAN__
-#endif
-
-/* Convert a host long to a network long. */
-
-static __inline__ unsigned long
-htonl (unsigned long __arg)
-{
- return __arg;
-}
-
-/* Convert a host short to a network short. */
-
-static __inline__ unsigned short
-htons (unsigned int __arg)
-{
- return __arg;
-}
-
-#endif /* big-endian */
-
-/* Convert a network long to a host long. */
-
-static __inline__ unsigned long
-ntohl (unsigned long __arg)
-{
- return htonl (__arg);
-}
-
-/* Convert a network short to a host short. */
-
-static __inline__ unsigned short
-ntohs (unsigned int __arg)
-{
- return htons (__arg);
-}
-
-__EOF__
-
-if [ -r ${INPUT}/sys/byteorder.h ]; then
- if grep BYTE_ORDER ${INPUT}/sys/byteorder.h >/dev/null 2>/dev/null; then
- cat <<'__EOF__' >>${LIB}/sys/byteorder.h
-#ifndef BYTE_ORDER
-#define LITTLE_ENDIAN __LITTLE_ENDIAN__
-#define BIG_ENDIAN __BIG_ENDIAN__
-#define PDP_ENDIAN __PDP_ENDIAN__
-#define BYTE_ORDER __BYTE_ORDER__
-#endif
-
-__EOF__
- fi
-fi
-
-cat <<'__EOF__' >>${LIB}/sys/byteorder.h
-#endif /* !defined (_SYS_BYTEORDER_H) */
-__EOF__
-
-chmod a+r ${LIB}/sys/byteorder.h
-
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.winnt b/gcc/fixinc/fixinc.winnt
deleted file mode 100755
index 7b8fe9e..0000000
--- a/gcc/fixinc/fixinc.winnt
+++ /dev/null
@@ -1,240 +0,0 @@
-#! sh
-#
-# fixinc.winnt -- Install modified versions of Windows NT system include
-# files.
-#
-# Based on fixinc.sco script by Ian Lance Taylor (ian@airs.com)).
-# Modifications by Douglas Rupp (drupp@cs.washington.edu)
-#
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# This script munges the native include files provided with Windows NT
-# 3.5 SDK systems so as to provide a reasonable namespace when
-# compiling with gcc. The header files by default do not
-# provide many essential definitions and declarations if
-# __STDC__ is 1. This script modifies the header files to check
-# for __STRICT_ANSI__ being defined instead. Once munged, the
-# resulting new system include files are placed in a directory
-# that GNU C will search *before* searching the Include
-# directory.
-#
-# See README-fixinc for more information.
-
-ORIG_DIR=`pwd`
-
-# Directory containing the original header files.
-cd $2; SEDFILE=`${PWDCMD-pwd}`/fixinc-nt.sed
-echo $SEDFILE
-if [ ! -f $SEDFILE ]
-then echo fixincludes: sed script 'fixinc-nt.sed' not found
-exit 1
-fi
-echo 'Using sed script: ' ${SEDFILE}
-
-cd $ORIG_DIR
-
-INPUT=${INCLUDE}
-echo 'Using the Include environment variable to find header files to fix'
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`pwd`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo 'Building fixincludes in ' ${LIB}
-
-# Determine whether this filesystem has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>NUL; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo 'Making directories:'
-cd ${INPUT}
-if $LINKS; then
- files=`ls -LR | sed -n s/:$//p`
-else
- files=`find . -type d -print | sed '/^.$/d'`
-fi
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-set - $treetops
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- echo "Finding header files in $1:"
- cd ${INPUT}
- cd $1
- files=`find . -name '*.[hH]' -type f -print`
- echo 'Checking header files:'
- for file in $files; do
- echo $file
- if egrep "!__STDC__" $file >NUL; then
- if [ -r $file ]; then
- cp $file $2/$file >NUL 2>&1 || echo "Can't copy $file"
- chmod +w,a+r $2/$file
-
-# The following have been removed from the sed command below
-# because it is more useful to leave these things in.
-# The only reason to remove them was for -pedantic,
-# which isn't much of a reason. -- rms.
-# /^[ ]*#[ ]*ident/d
-
- sed -e '
- s/!__STDC__/!defined (__STRICT_ANSI__)/g
- ' $2/$file > $2/$file.sed
- mv $2/$file.sed $2/$file
- if cmp $file $2/$file >NUL 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- fi
- fi
- fi
- done
- shift; shift
-done
-
-# Fix first broken decl of getcwd present on some svr4 systems.
-
-file=direct.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-file=rpcndr.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e 's/Format\[\]/Format\[1\]/' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-file=winnt.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '
- s/^#if !defined (__cplusplus)/#if 0/
- s/^#define DECLSPEC_IMPORT __declspec(dllimport)/#define DECLSPEC_IMPORT/
- ' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >NUL 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- fi
- rm -f /tmp/$base
-fi
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > NUL 2>&1
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.wrap b/gcc/fixinc/fixinc.wrap
deleted file mode 100755
index 4be9f13..0000000
--- a/gcc/fixinc/fixinc.wrap
+++ /dev/null
@@ -1,115 +0,0 @@
-#! /bin/sh
-# Create wrappers for include files instead of replacing them.
-#
-# This script is designed for systems whose include files can be fixed
-# by creating small wrappers around them.
-# An advantage of this method is that if the system include files are changed
-# (e.g. by OS upgrade), you need not re-run fixincludes.
-#
-# See README-fixinc for more information.
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-ORIG_DIR=`${PWDCMD-pwd}`
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo Building fixed headers in ${LIB}
-# Directory containing the original header files.
-shift
-if [ $# -eq 0 ] ; then
- set /usr/include
-fi
-
-INLIST="$@"
-
-for INPUT in ${INLIST} ; do
-cd ${ORIG_DIR}
-cd ${INPUT}
-
-# Some math.h files define struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- if grep 'struct exception' $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _MATH_H_WRAPPER
-#ifdef __cplusplus
-# define exception __math_exception
-#endif
-#include_next <math.h>
-#ifdef __cplusplus
-# undef exception
-#endif
-#define _MATH_H_WRAPPER
-#endif /* _MATH_H_WRAPPER */
-__EOF__
- # Define _MATH_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <math.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-# Avoid the definition of the bool type in the Solaris 2.x curses.h when using
-# g++, since it's now an official type in the C++ language.
-file=curses.h
-if [ -r $INPUT/$file ]; then
- echo Checking $INPUT/$file
- w='[ ]'
- if grep "typedef$w$w*char$w$w*bool$w*;" $INPUT/$file >/dev/null
- then
- echo Fixed $file
- rm -f $LIB/$file
- cat <<'__EOF__' >$LIB/$file
-#ifndef _CURSES_H_WRAPPER
-#ifdef __cplusplus
-# define bool __curses_bool_t
-#endif
-#include_next <curses.h>
-#ifdef __cplusplus
-# undef bool
-#endif
-#define _CURSES_H_WRAPPER
-#endif /* _CURSES_H_WRAPPER */
-__EOF__
- # Define _CURSES_H_WRAPPER at the end of the wrapper, not the start,
- # so that if #include_next gets another instance of the wrapper,
- # this will follow the #include_next chain until we arrive at
- # the real <curses.h>.
- chmod a+r $LIB/$file
- fi
-fi
-
-done
-
-if [ x${INSTALL_ASSERT_H} != x ] ;
-then
- cd ${ORIG_DIR}
- rm -f include/assert.h;
- cp $(srcdir)/assert.h include/assert.h;
- chmod a+r include/assert.h;
-fi
-
-exit 0
diff --git a/gcc/fixinc/fixinc.x86-linux-gnu b/gcc/fixinc/fixinc.x86-linux-gnu
deleted file mode 100755
index 9e32586..0000000
--- a/gcc/fixinc/fixinc.x86-linux-gnu
+++ /dev/null
@@ -1,140 +0,0 @@
-#! /bin/sh
-#
-# The script is created for Cygnus by vmakarov@cygnus.com and based on
-# fixinc.wrap
-#
-# This script is designed for x86 with gnulibc of version 2.0 and less
-# for solution of problems with invalid asm-statements by creating
-# small wrappers around the include files containg the asm-statements.
-#
-# See README-fixinc for more information.
-
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-# Make LIB absolute if it is relative.
-# Don't do this if not necessary, since may screw up automounters.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD-pwd}`
- ;;
-esac
-
-echo Building fixed headers in ${LIB}
-
-file=selectbits.h
-echo Fixed $file for glibc-2.0.x
-rm -f $LIB/$file
-cat <<'__EOF__' >$LIB/$file
-/* This file fixes __FD_ZERO bug for glibc-2.0.x. */
-#ifndef _SELECTBITS_H_WRAPPER
-#include <features.h>
-#include_next <selectbits.h>
-
-#if defined(__FD_ZERO) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && __GLIBC__ == 2 && __GLIBC_MINOR__ == 0
-#undef __FD_ZERO
-#define __FD_ZERO(fdsetp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__ ("cld; rep; stosl" \
- : "=m" (((__fd_mask *) \
- (fdsetp))[__FDELT (__FD_SETSIZE)]), \
- "=&c" (__d0), "=&D" (__d1) \
- : "a" (0), "1" (sizeof (__fd_set) \
- / sizeof (__fd_mask)), \
- "2" ((__fd_mask *) (fdsetp)) \
- : "memory"); \
- } while (0)
-#endif
-
-#define _SELECTBITS_H_WRAPPER
-#endif /* _SELECTBITS_H_WRAPPER */
-__EOF__
-# Define _SELECTBITS_H_WRAPPER at the end of the wrapper, not
-# the start, so that if #include_next gets another instance of
-# the wrapper, this will follow the #include_next chain until
-# we arrive at the real <selectbits.h>.
-chmod a+r $LIB/$file
-
-# asm/posix_types.h for libc version 1.x
-file=asm/posix_types.h
-echo Fixed $file for glibc-1.x
-rm -f $LIB/$file
-dir=`dirname $LIB/$file`
-if [ ! -d $dir ]; then
- mkdir -p $dir || exit 1
-fi
-cat <<'__EOF__' >$LIB/$file
-/* This file fixes __FD_ZERO bug for glibc-1.x. */
-#ifndef _POSIX_TYPES_H_WRAPPER
-#include <features.h>
-#include_next <asm/posix_types.h>
-
-#if defined(__FD_ZERO) && !defined(__GLIBC__)
-#undef __FD_ZERO
-#define __FD_ZERO(fdsetp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__("cld ; rep ; stosl" \
- : "=m" (*(__kernel_fd_set *) (fdsetp)), \
- "=&c" (__d0), "=&D" (__d1) \
- : "a" (0), "1" (__FDSET_LONGS), \
- "2" ((__kernel_fd_set *) (fdsetp)) :"memory"); \
- } while (0)
-#endif
-
-#define _POSIX_TYPES_H_WRAPPER
-#endif /* _POSIX_TYPES_H_WRAPPER */
-__EOF__
-# Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not
-# the start, so that if #include_next gets another instance of
-# the wrapper, this will follow the #include_next chain until
-# we arrive at the real <asm/posix_types.h>.
-chmod a+r $LIB/$file
-
-# gnu/types.h for libc version 1.x
-file=gnu/types.h
-echo Fixed $file for glibc-1.x
-rm -f $LIB/$file
-dir=`dirname $LIB/$file`
-if [ ! -d $dir ]; then
- mkdir -p $dir || exit 1
-fi
-cat <<'__EOF__' >$LIB/$file
-/* This file fixes __FD_ZERO bug for glibc-1.x. */
-#ifndef _TYPES_H_WRAPPER
-#include <features.h>
-#include_next <gnu/types.h>
-
-#if defined(__FD_ZERO) && !defined(__GLIBC__)
-#undef __FD_ZERO
-# define __FD_ZERO(fdsetp) \
- do { \
- int __d0, __d1; \
- __asm__ __volatile__("cld ; rep ; stosl" \
- : "=m" (*(__fd_set *) (fdsetp)), \
- "=&c" (__d0), "=&D" (__d1) \
- : "a" (0), "1" (__FDSET_LONGS), \
- "2" ((__fd_set *) (fdsetp)) :"memory"); \
- } while (0)
-#endif
-
-#define _TYPES_H_WRAPPER
-#endif /* _TYPES_H_WRAPPER */
-__EOF__
-# Define _TYPES_H_WRAPPER at the end of the wrapper, not the start,
-# so that if #include_next gets another instance of the wrapper,
-# this will follow the #include_next chain until we arrive at
-# the real <gnu/types.h>.
-chmod a+r $LIB/$file
-
-exit 0
-
diff --git a/gcc/fixinc/fixincl.c b/gcc/fixinc/fixincl.c
deleted file mode 100755
index 4344537..0000000
--- a/gcc/fixinc/fixincl.c
+++ /dev/null
@@ -1,834 +0,0 @@
-/*
- * $Id: fixincl.c,v 1.2 1999/01/13 22:56:21 law Exp $
- *
- * 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.
- *
- * See README-fixinc for more information.
- *
- * fixincl 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.
- *
- * fixincl 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 fixincl. See the file "COPYING". If not,
- * write to: The Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <signal.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <fcntl.h>
-#include <ctype.h>
-
-#include "regex.h"
-#include "server.h"
-
-#define tSCC static const char
-#define tCC const char
-#define tSC static char
-
-typedef int tSuccess;
-
-#define FAILURE ((tSuccess)-1)
-#define SUCCESS ((tSuccess) 0)
-#define PROBLEM ((tSuccess) 1)
-
-#define SUCCEEDED( p ) ((p) == SUCCESS)
-#define SUCCESSFUL( p ) SUCCEEDED( p )
-#define FAILED( p ) ((p) < SUCCESS)
-#define HADGLITCH( p ) ((p) > SUCCESS)
-
-#define NUL '\0'
-
-typedef enum
- {
- TT_TEST, TT_EGREP, TT_NEGREP
- }
-teTestType;
-
-typedef struct test_desc tTestDesc;
-
-struct test_desc
- {
- teTestType type;
- const char *pzTest;
- regex_t *pTestRegex;
- };
-
-typedef struct patch_desc tPatchDesc;
-
-#define FD_MACH_ONLY 0x0000
-#define FD_MACH_IFNOT 0x0001
-#define FD_SKIP_TEST 0x8000
-
-typedef struct fix_desc tFixDesc;
-struct fix_desc
- {
- const char* pzFixName; /* Name of the fix */
- const char* pzFileList; /* List of files it applies to */
- const char** papzMachs; /* List of machine/os-es it applies to */
- regex_t* pListRegex;
- int testCt;
- int fdFlags;
- tTestDesc* pTestDesc;
- const char** papzPatchArgs;
- };
-
-char *pzDestDir = (char *) NULL;
-char *pzSrcDir = (char *) NULL;
-char *pzMachine = (char *) NULL;
-
-pid_t chainHead = (pid_t) - 1;
-
-const char zInclQuote[] = "^[ \t]*#[ \t]*include[ \t]*\"[^/]";
-regex_t inclQuoteRegex;
-
-char zFileNameBuf[0x8000];
-
-char *loadFile (const char *pzFile);
-void process (char *data, const char *dir, const char *file);
-void runCompiles (void);
-
-#include "fixincl.x"
-
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- static const char zGnuLib[] =
- "This file is part of the GNU C Library";
- static const char zVarNotFound[] =
- "fixincl ERROR: %s environment variable not defined\n";
-
-#ifndef NO_BOGOSITY_LIMITS
-# define BOGUS_LIMIT 256
- size_t loopCt;
-#endif
-
- char *apzNames[BOGUS_LIMIT];
- size_t fileNameCt;
-
- if (argc != 1)
- {
- if (argc != 2)
- {
- fputs ("fixincl ERROR: too many command line arguments\n", stderr);
- exit (EXIT_FAILURE);
- }
-
- if (strcmp (argv[1], "-v") == 0)
- {
- fputs ("$Id: fixincl.c,v 1.2 1999/01/13 22:56:21 law Exp $\n", stderr);
- exit (EXIT_SUCCESS);
- }
-
- freopen (argv[1], "r", stdin);
- }
-
- {
- static const char zVar[] = "TARGET_MACHINE";
- pzMachine = getenv( zVar );
- if (pzMachine == (char *)NULL)
- {
- fprintf( stderr, zVarNotFound, zVar );
- exit (EXIT_FAILURE);
- }
- }
-
- {
- static const char zVar[] = "DESTDIR";
- pzDestDir = getenv( zVar );
- if (pzDestDir == (char *)NULL)
- {
- fprintf( stderr, zVarNotFound, zVar );
- exit (EXIT_FAILURE);
- }
- }
-
- {
- static const char zVar[] = "SRCDIR";
- pzSrcDir = getenv( zVar );
- if (pzSrcDir == (char *)NULL)
- {
- fprintf( stderr, zVarNotFound, zVar );
- exit (EXIT_FAILURE);
- }
- }
-
- runCompiles ();
-
- signal ( SIGQUIT, SIG_IGN );
- signal ( SIGIOT, SIG_IGN );
- signal ( SIGPIPE, SIG_IGN );
- signal ( SIGALRM, SIG_IGN );
- signal ( SIGTERM, SIG_IGN );
- signal ( SIGCHLD, SIG_IGN );
-
-#ifndef NO_BOGOSITY_LIMITS
- for (;;)
- {
- char *pzBuf;
- pid_t child;
-
- /*
- * Only the parent process can read from stdin without
- * confusing the world. (How does the child tell the
- * parent to skip forward? Pipes and files behave differently.)
- */
- for (fileNameCt = 0, pzBuf = zFileNameBuf;
- (fileNameCt < BOGUS_LIMIT)
- && (pzBuf
- < (zFileNameBuf + sizeof (zFileNameBuf) - MAXPATHLEN));
- )
- {
-
- if (fgets (pzBuf, MAXPATHLEN, stdin) == (char *) NULL)
- break;
- while (isspace (*pzBuf))
- pzBuf++;
- apzNames[fileNameCt++] = pzBuf;
- pzBuf += strlen (pzBuf);
- while (isspace (pzBuf[-1]))
- pzBuf--;
- *pzBuf++ = '\0';
- }
-
- if (fileNameCt == 0)
- return EXIT_SUCCESS;
-
- child = fork ();
- if (child == NULLPROCESS)
- break;
-
- if (child == NOPROCESS)
- {
- fprintf (stderr, "Error %d (%s) forking in main\n",
- errno, strerror (errno));
- exit (EXIT_FAILURE);
- }
-
- waitpid (child, (int *) NULL, 0);
- }
-#else
-#error "NON-BOGUS LIMITS NOT SUPPORTED?!?!"
-#endif
-
- /*
- * For every file specified in stdandard in
- * (except as throttled for bogus reasons)...
- */
- for (loopCt = 0; loopCt < fileNameCt; loopCt++)
- {
- char *pzData;
- char *pzFile = apzNames[loopCt];
-
- if (access (pzFile, R_OK) != 0)
- {
- int erno = errno;
- fprintf (stderr, "Cannot access %s from %s\n\terror %d (%s)\n",
- pzFile, getcwd ((char *) NULL, MAXPATHLEN),
- erno, strerror (erno));
- }
- else if (pzData = loadFile (pzFile),
- (pzData != (char *) NULL))
- {
-
- if (strstr (pzData, zGnuLib) == (char *) NULL)
- process (pzData, pzDestDir, pzFile);
-
- free ((void *) pzData);
- }
- }
-
- return EXIT_SUCCESS;
-}
-
-
-char *
-loadFile (pzFile)
- const char *pzFile;
-{
- char *pzDta;
- size_t fileSize;
-
- {
- struct stat stbf;
- if (stat (pzFile, &stbf) != 0)
- {
- fprintf (stderr, "error %d (%s) stat-ing %s\n",
- errno, strerror (errno), pzFile);
- return (char *) NULL;
- }
- fileSize = stbf.st_size;
- }
- if (fileSize == 0)
- return (char *) NULL;
-
- pzDta = (char *) malloc ((fileSize + 16) & ~0x00F);
- if (pzDta == (char *) NULL)
- {
- fprintf (stderr, "error: could not malloc %d bytes\n",
- fileSize);
- exit (EXIT_FAILURE);
- }
-
- {
- FILE *fp = fopen (pzFile, "r");
- size_t sizeLeft = fileSize;
- char *readPtr = pzDta;
-
- if (fp == (FILE *) NULL)
- {
- fprintf (stderr, "error %d (%s) opening %s\n", errno,
- strerror (errno), pzFile);
- free ((void *) pzDta);
- return (char *) NULL;
- }
-
- do
- {
- size_t sizeRead = fread ((void *) readPtr, 1, sizeLeft, fp);
-
- if (sizeRead == 0)
- {
- if (feof (fp))
- break;
-
- if (ferror (fp))
- {
- fprintf (stderr, "error %d (%s) reading %s\n", errno,
- strerror (errno), pzFile);
- free ((void *) pzDta);
- fclose (fp);
- return (char *) NULL;
- }
- }
-
- readPtr += sizeRead;
- sizeLeft -= sizeRead;
- }
- while (sizeLeft != 0);
-
- *readPtr = '\0';
- fclose (fp);
- return pzDta;
- }
-}
-
-
-void
-runCompiles ()
-{
- tSCC zBadComp[] = "fixincl ERROR: cannot compile %s regex for %s\n"
- "\texpr = `%s'\n" "\terror %s\n";
- tFixDesc *pFD = fixDescList;
- int fixCt = FIX_COUNT;
- tTestDesc *pTD;
- int tstCt;
- int reCt = REGEX_COUNT;
- const char *pzErr;
- regex_t *pRegex = (regex_t *) malloc (REGEX_COUNT * sizeof (regex_t));
-
- if (pRegex == (regex_t *) NULL)
- {
- fprintf (stderr, "fixincl ERROR: cannot allocate %d bytes for regex\n",
- REGEX_COUNT * sizeof (regex_t));
- exit (EXIT_FAILURE);
- }
-
- re_set_syntax (RE_SYNTAX_EGREP);
- pzErr = re_compile_pattern (zInclQuote, strlen (zInclQuote),
- &inclQuoteRegex);
- if (pzErr != (char *) NULL)
- {
- fprintf (stderr, zBadComp, "quoted include", "runCompiles",
- zInclQuote, pzErr);
- exit (EXIT_FAILURE);
- }
-
- /*
- * FOR every fixup, ...
- */
- do
- {
- pTD = pFD->pTestDesc;
- tstCt = pFD->testCt;
-
- if (pFD->papzMachs != (const char**)NULL) {
- const char** papzMachs = pFD->papzMachs;
- char* pz = zFileNameBuf;
- char* pzSep = "";
- tCC* pzIfTrue;
- tCC* pzIfFalse;
- tSCC zSkip[] = "skip";
- tSCC zRun[] = "run";
-
- sprintf( pz, "case %s in\n", pzMachine );
- pz += strlen( pz );
-
- if (pFD->fdFlags & FD_MACH_IFNOT) {
- pzIfTrue = zSkip;
- pzIfFalse = zRun;
- } else {
- pzIfTrue = zRun;
- pzIfFalse = zSkip;
- }
-
- for (;;) {
- const char* pzMach = *(papzMachs++);
- if (pzMach == (const char*)NULL)
- break;
- sprintf( pz, "%s %s", pzSep, pzMach );
- pz += strlen( pz );
- pzSep = " | \\\n";
- }
- sprintf( pz, " )\n echo %s ;;\n * )\n echo %s ;;\nesac",
- pzIfTrue, pzIfFalse );
- pz = runShell( zFileNameBuf );
- if (*pz == 's') {
- pFD->fdFlags |= FD_SKIP_TEST;
- continue;
- }
- }
-
- /*
- * FOR every test for the fixup, ...
- */
- while (--tstCt >= 0)
- {
- switch (pTD->type)
- {
- case TT_EGREP:
- case TT_NEGREP:
- if (--reCt < 0)
- {
- fputs ("out of RE's\n", stderr);
- exit (EXIT_FAILURE);
- }
-
- pTD->pTestRegex = pRegex++;
- pzErr = re_compile_pattern (pTD->pzTest,
- strlen (pTD->pzTest),
- pTD->pTestRegex);
- if (pzErr != (char *) NULL)
- {
- fprintf (stderr, zBadComp, "select test", pFD->pzFixName,
- pTD->pzTest, pzErr);
- exit (EXIT_FAILURE);
- }
- }
- pTD++;
- }
- }
- while (pFD++, --fixCt > 0);
-}
-
-
-FILE *
-createFile (pzFile)
- const char *pzFile;
-{
- int fd;
- FILE *pf;
- char fname[MAXPATHLEN];
-
- sprintf (fname, "%s/%s", pzDestDir, pzFile);
- unlink (fname);
-
- fd = open (fname, O_WRONLY | O_CREAT);
-
- if ((fd < 0) && (errno == ENOENT))
- {
- char *pzDir = strchr (fname + 1, '/');
- struct stat stbf;
-
- while (pzDir != (char *) NULL)
- {
- *pzDir = NUL;
- if (stat (fname, &stbf) < 0)
- {
- mkdir (fname, S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP
- | S_IROTH | S_IXOTH);
- }
-
- *pzDir = '/';
- pzDir = strchr (pzDir + 1, '/');
- }
- fd = open (fname, O_WRONLY | O_CREAT);
- }
- if (fd < 0)
- {
- fprintf (stderr, "Error %d (%s) creating %s\n",
- errno, strerror (errno), fname);
- exit (EXIT_FAILURE);
- }
- fprintf (stderr, "Fixed: %s\n", pzFile);
- pf = fdopen (fd, "w");
-
-#ifdef LATER
- {
- static const char zHdr[] =
- "/*\n"
- " * DO NOT EDIT THIS FILE.\n"
- " *\n"
- " * It has been auto-edited by fixincludes from /usr/include/%s\n"
- " * This had to be done to correct non-standard usages in the\n"
- " * original, manufacturer supplied header file.\n"
- " */\n\n";
-
- fprintf (pf, zHdr, pzFile);
- }
-#endif
- return pf;
-}
-
-tSuccess
-testTest (pTest, pzFile)
- tTestDesc *pTest;
- char* pzFile;
-{
- char *pzRes;
- tSuccess res = FAILURE;
-
- static char zCmdBuf[4096];
- tSCC zCmdFmt[] = "file=%s\nif ( test %s ) > /dev/null 2>&1\n"
- "then echo TRUE\n" "else echo FALSE\n" "fi";
-
- sprintf (zCmdBuf, zCmdFmt, pzFile, pTest->pzTest);
- pzRes = runShell (zCmdBuf);
- if (*pzRes == 'T')
- res = SUCCESS;
- free ((void *) pzRes);
- return res;
-}
-
-
-tSuccess
-egrepTest (pzDta, pTest)
- char *pzDta;
- tTestDesc *pTest;
-{
- regmatch_t match;
-#ifndef NO_BOGOSITY
- if (pTest->pTestRegex == 0)
- fprintf (stderr, "fixincl ERROR RE not compiled: `%s'\n", pTest->pzTest);
-#endif
- if (regexec (pTest->pTestRegex, pzDta, 1, &match, 0) == 0)
- return SUCCESS;
- return FAILURE;
-}
-
-
-
-void
-extractQuotedFiles (pzDta, pzFile, pMatch)
- char *pzDta;
- const char *pzFile;
- regmatch_t *pMatch;
-{
- char *pzDirEnd = strrchr (pzFile, '/');
- char *pzInclQuot = pzDta;
-
- fprintf (stderr, "Quoted includes in %s\n", pzFile);
-
- /*
- * Set "pzFile" to point to the containing subdirectory of the source
- * If there is none, then it is in our current direcory, ".".
- */
- if (pzDirEnd == (char *) NULL)
- pzFile = ".";
- else
- *pzDirEnd = '\0';
-
- for (;;)
- {
- pzInclQuot += pMatch->rm_so;
-
- /*
- * Skip forward to the included file name
- */
- while (isspace (*pzInclQuot))
- pzInclQuot++;
- while (isspace (*++pzInclQuot));
- pzInclQuot += sizeof ("include") - 1;
- while (*pzInclQuot++ != '"');
-
- /*
- * Print the source directory and the subdirectory of the file
- * in question.
- */
- printf ("%s %s/", pzSrcDir, pzFile);
- pzDirEnd = pzInclQuot;
-
- /*
- * Append to the directory the relative path of the desired file
- */
- while (*pzInclQuot != '"')
- putc (*pzInclQuot++, stdout);
-
- /*
- * Now print the destination directory appended with the relative
- * path of the desired file
- */
- printf (" %s/%s/", pzDestDir, pzFile);
- while (*pzDirEnd != '"')
- putc (*pzDirEnd++, stdout);
-
- /*
- * End of entry
- */
- putc ('\n', stdout);
-
- /*
- * Find the next entry
- */
- if (regexec (&inclQuoteRegex, pzInclQuot, 1, pMatch, 0) != 0)
- break;
- }
-}
-
-
-/*
- * Process the potential fixes for a particular include file
- */
-void
-process (pzDta, pzDir, pzFile)
- char *pzDta;
- const char *pzDir;
- const char *pzFile;
-{
- static char zEnvFile[1024] =
- {"file="};
- tFixDesc *pFD = fixDescList;
- int todoCt = FIX_COUNT;
- tFdPair fdp =
- {-1, -1};
-
- /*
- * IF this is the first time through,
- * THEN put the 'file' environment variable into the environment.
- * This is used by some of the subject shell scripts and tests.
- */
- if (zEnvFile[5] == NUL)
- putenv (zEnvFile);
-
- /*
- * Ghastly as it is, this actually updates the value of the variable:
- *
- * putenv(3C) C Library Functions putenv(3C)
- *
- * DESCRIPTION
- * putenv() makes the value of the environment variable name
- * equal to value by altering an existing variable or creating
- * a new one. In either case, the string pointed to by string
- * becomes part of the environment, so altering the string will
- * change the environment. string points to a string of the
- * form ``name=value.'' The space used by string is no longer
- * used once a new string-defining name is passed to putenv().
- */
- strcpy (zEnvFile + 5, pzFile);
- chainHead = NOPROCESS;
-
- /*
- * For every fix in our fix list, ...
- */
- for (; todoCt > 0; pFD++, todoCt--)
- {
- tTestDesc *pTD;
- int tstCt;
- tSuccess egrepRes;
-
- if (pFD->fdFlags & FD_SKIP_TEST)
- continue;
-
- /*
- * IF there is a file name restriction,
- * THEN ensure the current file name matches one in the pattern
- */
- if (pFD->pzFileList != (char *) NULL)
- {
- const char *pzFil = pzFile;
- const char *pzScn = pFD->pzFileList;
- size_t nmLen;
-
- while ((pzFil[0] == '.') && (pzFil[1] == '/'))
- pzFil += 2;
- nmLen = strlen (pzFil);
-
- for (;;)
- {
- pzScn = strstr (pzScn + 1, pzFil);
- if (pzScn == (char *) NULL)
- goto nextFix;
-
- if ((pzScn[-1] == '|') && (pzScn[nmLen] == '|'))
- break;
- }
- }
-
- egrepRes = PROBLEM;
-
- /*
- * IF there are no tests
- * THEN we always run the fixup
- */
- for (pTD = pFD->pTestDesc, tstCt = pFD->testCt;
- tstCt-- > 0;
- pTD++)
- {
- switch (pTD->type)
- {
- case TT_TEST:
- /*
- * IF *any* of the shell tests fail,
- * THEN do not process the fix.
- */
- if (!SUCCESSFUL (testTest (pTD, pzFile)))
- goto nextFix;
- break;
-
- case TT_EGREP:
- /*
- * IF we have not had a successful egrep test
- * *AND* this test does not pass,
- * THEN mark the egrep test as failing. It starts
- * out as a "PROBLEM", meaning that if we do not
- * encounter any egrep tests, then we will let it pass.
- */
- if ((!SUCCESSFUL (egrepRes))
- && (!SUCCESSFUL (egrepTest (pzDta, pTD))))
-
- egrepRes = FAILURE;
-
- break;
-
- case TT_NEGREP:
- /*
- * IF *any* of the negative egrep tests fail,
- * THEN do not process the fix.
- */
- if (SUCCESSFUL (egrepTest (pzDta, pTD)))
- goto nextFix;
- break;
- }
- }
-
- /*
- * IF there were no egrep tests *OR* at least one passed, ...
- */
- if (!FAILED (egrepRes))
- {
- fprintf (stderr, "Applying %-32s to %s\n",
- pFD->pzFixName, pzFile);
-
- if (fdp.readFd == -1)
- {
- fdp.readFd = open (pzFile, O_RDONLY);
- if (fdp.readFd < 0)
- {
- fprintf (stderr, "Error %d (%s) opening %s\n", errno,
- strerror (errno), pzFile);
- exit (EXIT_FAILURE);
- }
- }
-
- for (;;)
- {
- int newFd = chainOpen (fdp.readFd,
- (tpChar *) pFD->papzPatchArgs,
- (chainHead == -1)
- ? &chainHead : (pid_t *) NULL);
- if (newFd != -1)
- {
- fdp.readFd = newFd;
- break;
- }
-
- fprintf (stderr, "Error %d (%s) starting filter process "
- "for %s\n", errno, strerror (errno),
- pFD->pzFixName);
-
- if (errno != EAGAIN)
- exit (EXIT_FAILURE);
- sleep (1);
- }
- }
-
- nextFix:;
- }
-
- /*
- * IF after all the tests we did not start any patch programs,
- * THEN quit now.
- */
- if (fdp.readFd < 0)
- return;
-
- {
- FILE *inFp = fdopen (fdp.readFd, "r");
- FILE *oFp = (FILE *) NULL;
- char *pzCmp = pzDta;
-
- for (;;)
- {
- int ch;
-
- ch = getc (inFp);
- if (ch == EOF)
- break;
-
- if (oFp != (FILE *) NULL)
- putc (ch, oFp);
-
- else if (ch != *pzCmp)
- {
- oFp = createFile (pzFile);
- if (pzCmp != pzDta)
- {
- char c = *pzCmp;
- *pzCmp = NUL;
- fputs (pzDta, oFp);
- *pzCmp = c;
- }
- putc (ch, oFp);
-
- }
- else
- pzCmp++;
- }
-
- if (oFp != (FILE *) NULL)
- {
- regmatch_t match;
-
- fchmod (fileno (oFp), S_IRUSR | S_IRGRP | S_IROTH);
- fclose (oFp);
- if (regexec (&inclQuoteRegex, pzDta, 1, &match, 0) == 0)
- extractQuotedFiles (pzDta, pzFile, &match);
- }
-
- fclose (inFp);
- }
-
- close (fdp.readFd);
-}
diff --git a/gcc/fixinc/fixincl.sh b/gcc/fixinc/fixincl.sh
deleted file mode 100755
index b6c8484..0000000
--- a/gcc/fixinc/fixincl.sh
+++ /dev/null
@@ -1,389 +0,0 @@
-#!/bin/sh
-#
-# DO NOT EDIT THIS FILE (fixincl.sh)
-#
-# It has been autogen-ed Friday October 16, 1998 at 07:29:49 AM PDT
-# From the definitions inclhack.def
-# and the template file inclhack.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 104 fixup scripts.
-#
-# See README-fixinc for more information.
-#
-# fixincludes is free software.
-#
-# You may redistribute it and/or modify it under the terms of the
-# GNU General Public License, as published by the Free Software
-# Foundation; either version 2, or (at your option) any later version.
-#
-# fixincludes is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with fixincludes. See the file "COPYING". If not,
-# write to: The Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Directory in which to store the results.
-# Fail if no arg to specify a directory for the output.
-if [ "x$1" = "x" ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-LIB=${1}
-shift
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || {
- echo fixincludes: output dir '`'$LIB"' cannot be created"
- exit 1
- }
-else
- ( \cd $LIB && touch DONE && rm DONE ) || {
- echo fixincludes: output dir '`'$LIB"' is an invalid directory"
- exit 1
- }
-fi
-
-# Define what target system we're fixing.
-#
-if test -r ./Makefile; then
- target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`"
-fi
-
-# If not from the Makefile, then try config.guess
-#
-if test -z "${target_canonical}" ; then
- if test -x ./config.guess ; then
- target_canonical="`config.guess`" ; fi
- test -z "${target_canonical}" && target_canonical=unknown
-fi
-export target_canonical
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Define PWDCMD as a command to use to get the working dir
-# in the form that we want.
-PWDCMD=pwd
-
-case "`$PWDCMD`" in
-//*)
- # On an Apollo, discard everything before `/usr'.
- PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'"
- ;;
-esac
-
-# Original directory.
-ORIGDIR=`${PWDCMD}`
-FIXINCL=${ORIGDIR}/fixincl
-export FIXINCL
-
-# Make LIB absolute only if needed to avoid problems with the amd.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD}`
- ;;
-esac
-
-echo Fixing headers into ${LIB} for ${target_canonical} target
-
-# Determine whether this system has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
- rm -f /tmp/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Search each input directory for broken header files.
-# This loop ends near the end of the file.
-#
-if test $# -eq 0
-then
- INPUTLIST="/usr/include"
-else
- INPUTLIST="$@"
-fi
-
-for INPUT in ${INPUTLIST} ; do
-
-cd ${ORIGDIR}
-
-cd ${INPUT} || {
- echo 'fixincludes: input dir `'$INPUT"' is an invalid directory"
- exit 1
-}
-
-#
-# # # # # # # # # # # # # # # # # # # # #
-#
-echo Finding directories and links to directories
-
-# Find all directories and all symlinks that point to directories.
-# Put the list in $files.
-# Each time we find a symlink, add it to newdirs
-# so that we do another find within the dir the link points to.
-# Note that $files may have duplicates in it;
-# later parts of this file are supposed to ignore them.
-dirs="."
-levels=2
-while [ -n "$dirs" ] && [ $levels -gt 0 ]
-do
- levels=`expr $levels - 1`
- newdirs=
- for d in $dirs
- do
- echo " Searching $INPUT/$d"
-
- # Find all directories under $d, relative to $d, excluding $d itself.
- # (The /. is needed after $d in case $d is a symlink.)
- files="$files `find $d/. -type d -print | \
- sed -e '/\/\.$/d' -e 's@/./@/@g'`"
- # Find all links to directories.
- # Using `-exec test -d' in find fails on some systems,
- # and trying to run test via sh fails on others,
- # so this is the simplest alternative left.
- # First find all the links, then test each one.
- theselinks=
- $LINKS && \
- theselinks=`find $d/. -type l -print | sed -e 's@/./@/@g'`
- for d1 in $theselinks --dummy--
- do
- # If the link points to a directory,
- # add that dir to $newdirs
- if [ -d $d1 ]
- then
- files="$files $d1"
- if [ "`ls -ld $d1 | sed -n 's/.*-> //p'`" != "." ]
- then
- newdirs="$newdirs $d1"
- fi
- fi
- done
- done
-
- dirs="$newdirs"
-done
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-dirs=
-echo "All directories (including links to directories):"
-echo $files
-
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-mkdir $LIB/root
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`${PWDCMD}`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`${PWDCMD}`
- # Canonicalize ${INPUT} now to minimize the time an
- # automounter has to change the result of ${PWDCMD}.
- cinput=`cd ${INPUT}; ${PWDCMD}`
- # If a link points to ., make a similar link to .
- if [ $x = ${cinput} ]; then
- echo $file '->' . ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s . ${LIB}/$file > /dev/null 2>&1
- # If link leads back into ${INPUT},
- # make a similar link here.
- elif expr $x : "${cinput}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${cinput}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to a dir $target outside ${INPUT},
- # repoint the link at ${INPUT}/root$target
- # and process $target into ${INPUT}/root$target
- # treat this directory as if it actually contained the files.
- echo $file '->' root$x ': Making link'
- if [ -d $LIB/root$x ]
- then true
- else
- dirname=root$x/
- dirmade=.
- cd $LIB
- while [ x$dirname != x ]; do
- component=`echo $dirname | sed -e 's|/.*$||'`
- mkdir $component >/dev/null 2>&1
- cd $component
- dirmade=$dirmade/$component
- dirname=`echo $dirname | sed -e 's|[^/]*/||'`
- done
- fi
- # Duplicate directory structure created in ${LIB}/$file in new
- # root area.
- for file2 in $files; do
- case $file2 in
- $file/*)
- dupdir=${LIB}/root$x/`echo $file2 | sed -n "s|^${file}/||p"`
- echo "Duplicating ${file}'s ${dupdir}"
- if [ -d ${dupdir} ]
- then true
- else
- mkdir ${dupdir}
- fi
- ;;
- *)
- ;;
- esac
- done
- # Get the path from ${LIB} to $file, accounting for symlinks.
- parent=`echo "$file" | sed -e 's@/[^/]*$@@'`
- libabs=`cd ${LIB}; ${PWDCMD}`
- file2=`cd ${LIB}; cd $parent; ${PWDCMD} | sed -e "s@^${libabs}@@"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file2" | sed -e 's@/[^/]*@../@g'`
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s ${dots}root$x ${LIB}/$file > /dev/null 2>&1
- treetops="$treetops $x ${LIB}/root$x"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-required=
-set x $treetops
-shift
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- #
- SRCDIR=`cd ${INPUT} ; cd $1 ; ${PWDCMD}`
- export SRCDIR
- shift
-
- DESTDIR=`cd $1;${PWDCMD}`
- export DESTDIR
- shift
-
- # The same dir can appear more than once in treetops.
- # There's no need to scan it more than once.
- #
- if [ -f ${DESTDIR}/DONE ]
- then continue ; fi
-
- touch ${DESTDIR}/DONE
- echo Fixing directory ${SRCDIR} into ${DESTDIR}
-
- # Check .h files which are symlinks as well as those which are files.
- # A link to a header file will not be processed by anything but this.
- #
- cd ${SRCDIR}
-
- required="$required `if $LINKS; then
- find . -name '*.h' \( -type f -o -type l \) -print
- else
- find . -name '*.h' -type f -print
- fi | ${FIXINCL}`"
-done
-
-## Make sure that any include files referenced using double quotes
-## exist in the fixed directory. This comes last since otherwise
-## we might end up deleting some of these files "because they don't
-## need any change."
-set x `echo $required`
-shift
-while [ $# != 0 ]; do
- newreq=
- while [ $# != 0 ]; do
- # $1 is the directory to copy from,
- # $2 is the unfixed file,
- # $3 is the fixed file name.
- #
- cd ${INPUT}
- cd $1
- if [ -r $2 ] && [ ! -r $3 ]; then
- cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" >&2
- chmod +w $3 2>/dev/null
- chmod a+r $3 2>/dev/null
- echo Copied $2
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 |
- sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`
- do
- dir=`echo $2 | sed -e s'|/[^/]*$||'`
- dir2=`echo $3 | sed -e s'|/[^/]*$||'`
- newreq="$newreq $1 $dir/$include $dir2/$include"
- done
- fi
- shift; shift; shift
- done
- set x $newreq
- shift
-done
-
-echo 'Cleaning up DONE files.'
-cd $LIB
-find . -name DONE -exec rm -f '{}' ';'
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1 | :
-done
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# End of for INPUT directories
-#
-done
-#
-# # # # # # # # # # # # # # # # # # # # #
-
-cd $ORIGDIR
-rm -f include/assert.h
-cp ${EGCS_SRCDIR}/assert.h include/assert.h
-chmod a+r include/assert.h
-
diff --git a/gcc/fixinc/fixincl.tpl b/gcc/fixinc/fixincl.tpl
deleted file mode 100755
index 04b67ab..0000000
--- a/gcc/fixinc/fixincl.tpl
+++ /dev/null
@@ -1,169 +0,0 @@
-[= autogen template -*- Mode: C -*-
-x =]
-/*
-[= _eval "# * " _DNE =]
- *
- * 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 [=_eval fix _hilim 1 +=] fixup scripts.
- *
- * See README-fixinc for more information.
- *
-[=_eval inclhack "# * " _gpl=]
- *[=
-
-
-_FOR fix =]
- *
- * Description [=_eval _index 1 + "#%3d -" _printf=] [=hackname _Cap=] fix
- */
-tSCC z[=hackname _cap=]Name[] =
- [=hackname _cap _str=];
-/*
- * File name selection pattern
- */[=
-
- _IF files _exist=]
-tSCC z[=hackname _cap=]List[] =[=
- _FOR files=]
- "|" [=files _str=][=
- /files=] "|";[=
-
- _ELSE =]
-#define z[=hackname _cap=]List (char*)NULL[=
- _ENDIF "files _exist" =]
-/*
- * Machine/OS name selection pattern
- */[=
-
- _IF mach _exist=]
-tSCC* apz[=hackname _cap=]Machs[] = {[=
- _FOR mach =]
- [=mach _str=],[=
- /mach=]
- (const char*)NULL };[=
-
- _ELSE =]
-#define apz[=hackname _cap=]Machs (const char**)NULL[=
- _ENDIF "files _exist" =][=
-
- _IF exesel _exist=]
-
-/*
- * content selection pattern
- */[=
- _FOR exesel =]
-tSCC z[=hackname _cap=]Select[=_eval _index=][] =
- [=exesel _str=];[=
- /exesel =][=
-
- _ELIF select _exist=]
-
-/*
- * content selection pattern
- */[=
- _FOR select =]
-tSCC z[=hackname _cap=]Select[=_eval _index=][] =
- [=select _str=];[=
- /select =][=
- _ENDIF =][=
-
- _IF bypass _exist=]
-
-/*
- * content bypass pattern
- */[=
- _FOR bypass =]
-tSCC z[=hackname _cap=]Bypass[=_eval _index=][] =
- [=bypass _str=];[=
- /bypass =][=
- _ENDIF =][=
-
- _IF test _exist=]
-
-/*
- * content test pattern. A shell will deal with it later.
- */[=
- _FOR test =]
-tSCC z[=hackname _cap=]Test[=_eval _index=][] =
- [=test _str=];[=
- /test =][=
- _ENDIF =][=
-
- _IF exesel _exist select _exist bypass _exist test _exist | | |
-=]
-
-#define [=hackname _up =]_TEST_CT [=
- _IF exesel _exist =][=
- _eval test _count bypass _count exesel _count + + =][=
- _ELSE =][=
- _eval test _count bypass _count select _count + + =][=
- _ENDIF =]
-tTestDesc a[=hackname _cap=]Tests[] = {[=
-
- _IF test _exist =][=
- _FOR test=]
- { TT_TEST, z[=hackname _cap=]Test[=_eval _index=], 0 /* unused */ },[=
- /test =][=
- _ENDIF =][=
-
- _IF bypass _exist =][=
- _FOR bypass=]
- { TT_NEGREP, z[=hackname _cap=]Bypass[=_eval _index=], (regex_t*)NULL },[=
- /bypass =][=
- _ENDIF =][=
-
- _IF exesel _exist =][=
- _FOR exesel ,=]
- { TT_EGREP, z[=hackname _cap=]Select[=_eval _index=], (regex_t*)NULL }[=
- /exesel =][=
-
- _ELIF select _exist =][=
- _FOR select ,=]
- { TT_EGREP, z[=hackname _cap=]Select[=_eval _index=], (regex_t*)NULL }[=
- /select =][=
- _ENDIF =] };[=
- _ELSE =]
-#define [=hackname _up=]_TEST_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 _str=][=/sed=][=
- _ELIF replacement _exist =] "sed",
- "s@[=select[]=]@[=replacement=]@"[=
- _ELIF shell _exist =] "sh", "-c",
- [=shell _str=][=
- _ELSE =][=_ERROR hackname _get "Error: %s has two fixup specifications"
- _printf =][=
- _ENDIF=],
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *[=
-/fix=]
- *
- * List of all fixes
- */
-#define REGEX_COUNT [=_eval fix.select _count
- fix.bypass _count + =]
-#define FIX_COUNT [=_eval fix _count =]
-tFixDesc fixDescList[ [=_eval fix _count =] ] = {[=
-
-
-_FOR fix ",\n" =]
- { z[=hackname _cap=]Name, z[=hackname _cap=]List,
- apz[=hackname _cap=]Machs, (regex_t*)NULL,
- [=hackname _up=]_TEST_CT, [=
- _IF not_machine _exist =]FD_MACH_IFNOT[=
- _ELSE =]FD_MACH_ONLY[=
- _ENDIF =],
- a[=hackname _cap=]Tests, apz[=hackname _cap=]Patch }[=
-
-/fix=]
-};
diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x
deleted file mode 100755
index a26e3fe..0000000
--- a/gcc/fixinc/fixincl.x
+++ /dev/null
@@ -1,4295 +0,0 @@
-/*
- * DO NOT EDIT THIS FILE (fixincl.x)
- *
- * It has been autogen-ed Friday October 16, 1998 at 07:29:50 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 104 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAix_SyswaitMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAix_VolatileMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAlpha_GetoptMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAlpha_ParensMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAlpha_SbrkMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzArm_Norcroft_HintMachs (const char**)NULL
-#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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzArm_WcharMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAux_AsmMachs (const char**)NULL
-
-/*
- * 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"
- "|" "term.h"
- "|" "tinfo.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAvoid_BoolMachs (const char**)NULL
-#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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBad_Malloc_DeclMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBad_Struct_TermMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBadquoteMachs (const char**)NULL
-#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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBad_LvalMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBroken_Assert_StdioMachs (const char**)NULL
-
-/*
- * 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzBroken_Assert_StdlibMachs (const char**)NULL
-
-/*
- * 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
-/*
- * Machine/OS name selection pattern
- */
-#define apzBsd43_Io_MacrosMachs (const 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 - No_Double_Slash fix
- */
-tSCC zNo_Double_SlashName[] =
- "No_Double_Slash";
-/*
- * File name selection pattern
- */
-#define zNo_Double_SlashList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzNo_Double_SlashMachs (const 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|//.*$||g",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description 18 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIrix_Bogus_Cxx_CmntMachs (const char**)NULL
-#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 19 - Ecd_Cursor fix
- */
-tSCC zEcd_CursorName[] =
- "Ecd_Cursor";
-/*
- * File name selection pattern
- */
-tSCC zEcd_CursorList[] =
- "|" "sunwindow/win_lock.h"
- "|" "sunwindow/win_cursor.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzEcd_CursorMachs (const char**)NULL
-#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 20 - Else_Label fix
- */
-tSCC zElse_LabelName[] =
- "Else_Label";
-/*
- * File name selection pattern
- */
-#define zElse_LabelList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzElse_LabelMachs (const 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 21 - Endif_Label fix
- */
-tSCC zEndif_LabelName[] =
- "Endif_Label";
-/*
- * File name selection pattern
- */
-#define zEndif_LabelList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzEndif_LabelMachs (const 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 22 - Hp_Inline fix
- */
-tSCC zHp_InlineName[] =
- "Hp_Inline";
-/*
- * File name selection pattern
- */
-tSCC zHp_InlineList[] =
- "|" "sys/spinlock.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzHp_InlineMachs (const char**)NULL
-
-/*
- * 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 23 - Hp_Sysfile fix
- */
-tSCC zHp_SysfileName[] =
- "Hp_Sysfile";
-/*
- * File name selection pattern
- */
-tSCC zHp_SysfileList[] =
- "|" "sys/file.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzHp_SysfileMachs (const char**)NULL
-
-/*
- * 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 24 - Hpux_Cxx_Unready fix
- */
-tSCC zHpux_Cxx_UnreadyName[] =
- "Hpux_Cxx_Unready";
-/*
- * File name selection pattern
- */
-tSCC zHpux_Cxx_UnreadyList[] =
- "|" "sys/mman.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzHpux_Cxx_UnreadyMachs (const char**)NULL
-
-/*
- * 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 25 - Hpux_Maxint fix
- */
-tSCC zHpux_MaxintName[] =
- "Hpux_Maxint";
-/*
- * File name selection pattern
- */
-tSCC zHpux_MaxintList[] =
- "|" "sys/param.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzHpux_MaxintMachs (const char**)NULL
-#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 26 - Hpux_Systime fix
- */
-tSCC zHpux_SystimeName[] =
- "Hpux_Systime";
-/*
- * File name selection pattern
- */
-tSCC zHpux_SystimeList[] =
- "|" "sys/time.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzHpux_SystimeMachs (const char**)NULL
-
-/*
- * 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 27 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzInteractv_Add1Machs (const char**)NULL
-
-/*
- * 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 28 - Interactv_Add2 fix
- */
-tSCC zInteractv_Add2Name[] =
- "Interactv_Add2";
-/*
- * File name selection pattern
- */
-tSCC zInteractv_Add2List[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzInteractv_Add2Machs (const char**)NULL
-
-/*
- * 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 29 - Interactv_Add3 fix
- */
-tSCC zInteractv_Add3Name[] =
- "Interactv_Add3";
-/*
- * File name selection pattern
- */
-tSCC zInteractv_Add3List[] =
- "|" "sys/limits.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzInteractv_Add3Machs (const char**)NULL
-
-/*
- * 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 30 - Io_Def_Quotes fix
- */
-tSCC zIo_Def_QuotesName[] =
- "Io_Def_Quotes";
-/*
- * File name selection pattern
- */
-#define zIo_Def_QuotesList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzIo_Def_QuotesMachs (const 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 31 - Ioctl_Fix_Ctrl fix
- */
-tSCC zIoctl_Fix_CtrlName[] =
- "Ioctl_Fix_Ctrl";
-/*
- * File name selection pattern
- */
-#define zIoctl_Fix_CtrlList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzIoctl_Fix_CtrlMachs (const 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 32 - Ip_Missing_Semi fix
- */
-tSCC zIp_Missing_SemiName[] =
- "Ip_Missing_Semi";
-/*
- * File name selection pattern
- */
-tSCC zIp_Missing_SemiList[] =
- "|" "netinet/ip.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIp_Missing_SemiMachs (const char**)NULL
-#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 33 - Irix_Multiline_Cmnt fix
- */
-tSCC zIrix_Multiline_CmntName[] =
- "Irix_Multiline_Cmnt";
-/*
- * File name selection pattern
- */
-tSCC zIrix_Multiline_CmntList[] =
- "|" "sys/types.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIrix_Multiline_CmntMachs (const char**)NULL
-#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 34 - Irix_Sockaddr fix
- */
-tSCC zIrix_SockaddrName[] =
- "Irix_Sockaddr";
-/*
- * File name selection pattern
- */
-tSCC zIrix_SockaddrList[] =
- "|" "rpc/auth.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIrix_SockaddrMachs (const char**)NULL
-
-/*
- * 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 35 - Irix_Struct__File fix
- */
-tSCC zIrix_Struct__FileName[] =
- "Irix_Struct__File";
-/*
- * File name selection pattern
- */
-tSCC zIrix_Struct__FileList[] =
- "|" "rpc/xdr.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIrix_Struct__FileMachs (const char**)NULL
-#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 36 - Isc_Fmod fix
- */
-tSCC zIsc_FmodName[] =
- "Isc_Fmod";
-/*
- * File name selection pattern
- */
-tSCC zIsc_FmodList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIsc_FmodMachs (const char**)NULL
-
-/*
- * 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 37 - Motorola_Nested fix
- */
-tSCC zMotorola_NestedName[] =
- "Motorola_Nested";
-/*
- * File name selection pattern
- */
-tSCC zMotorola_NestedList[] =
- "|" "limits.h"
- "|" "sys/limits.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzMotorola_NestedMachs (const char**)NULL
-#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 38 - Isc_Sys_Limits fix
- */
-tSCC zIsc_Sys_LimitsName[] =
- "Isc_Sys_Limits";
-/*
- * File name selection pattern
- */
-tSCC zIsc_Sys_LimitsList[] =
- "|" "sys/limits.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzIsc_Sys_LimitsMachs (const char**)NULL
-
-/*
- * 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 39 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzKandr_ConcatMachs (const char**)NULL
-
-/*
- * 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 40 - Limits_Ifndefs fix
- */
-tSCC zLimits_IfndefsName[] =
- "Limits_Ifndefs";
-/*
- * File name selection pattern
- */
-tSCC zLimits_IfndefsList[] =
- "|" "limits.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzLimits_IfndefsMachs (const char**)NULL
-
-/*
- * 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 41 - Lynx_Void_Int fix
- */
-tSCC zLynx_Void_IntName[] =
- "Lynx_Void_Int";
-/*
- * File name selection pattern
- */
-tSCC zLynx_Void_IntList[] =
- "|" "curses.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzLynx_Void_IntMachs (const char**)NULL
-
-/*
- * 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 42 - Lynxos_Fcntl_Proto fix
- */
-tSCC zLynxos_Fcntl_ProtoName[] =
- "Lynxos_Fcntl_Proto";
-/*
- * File name selection pattern
- */
-tSCC zLynxos_Fcntl_ProtoList[] =
- "|" "fcntl.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzLynxos_Fcntl_ProtoMachs (const char**)NULL
-#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 43 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzM88k_Bad_Hypot_OptMachs[] = {
- "m88k-motorola-sysv3*",
- (const char*)NULL };
-#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 44 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzM88k_Bad_S_IfMachs[] = {
- "m88k-*-sysv3*",
- (const char*)NULL };
-
-/*
- * 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 45 - M88k_Multi_Incl fix
- */
-tSCC zM88k_Multi_InclName[] =
- "M88k_Multi_Incl";
-/*
- * File name selection pattern
- */
-tSCC zM88k_Multi_InclList[] =
- "|" "time.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzM88k_Multi_InclMachs[] = {
- "m88k-tektronix-sysv3*",
- (const char*)NULL };
-
-/*
- * 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 46 - Machine_Name fix
- */
-tSCC zMachine_NameName[] =
- "Machine_Name";
-/*
- * File name selection pattern
- */
-#define zMachine_NameList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzMachine_NameMachs (const char**)NULL
-
-/*
- * 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 47 - Math_Exception fix
- */
-tSCC zMath_ExceptionName[] =
- "Math_Exception";
-/*
- * File name selection pattern
- */
-tSCC zMath_ExceptionList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzMath_ExceptionMachs (const char**)NULL
-
-/*
- * 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 48 - Math_Gcc_Ifndefs fix
- */
-tSCC zMath_Gcc_IfndefsName[] =
- "Math_Gcc_Ifndefs";
-/*
- * File name selection pattern
- */
-tSCC zMath_Gcc_IfndefsList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzMath_Gcc_IfndefsMachs (const char**)NULL
-#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 49 - Motorola_Stupid_Opt fix
- */
-tSCC zMotorola_Stupid_OptName[] =
- "Motorola_Stupid_Opt";
-/*
- * File name selection pattern
- */
-tSCC zMotorola_Stupid_OptList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzMotorola_Stupid_OptMachs[] = {
- "m88k-motorola-sysv3*",
- (const char*)NULL };
-
-/*
- * 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 50 - Nested_Comment fix
- */
-tSCC zNested_CommentName[] =
- "Nested_Comment";
-/*
- * File name selection pattern
- */
-tSCC zNested_CommentList[] =
- "|" "rpc/rpc.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNested_CommentMachs (const char**)NULL
-#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 51 - News_Os_Recursion fix
- */
-tSCC zNews_Os_RecursionName[] =
- "News_Os_Recursion";
-/*
- * File name selection pattern
- */
-tSCC zNews_Os_RecursionList[] =
- "|" "stdlib.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNews_Os_RecursionMachs (const char**)NULL
-
-/*
- * 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 52 - Next_Math_Prefix fix
- */
-tSCC zNext_Math_PrefixName[] =
- "Next_Math_Prefix";
-/*
- * File name selection pattern
- */
-tSCC zNext_Math_PrefixList[] =
- "|" "ansi/math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNext_Math_PrefixMachs (const char**)NULL
-
-/*
- * 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 53 - Next_Template fix
- */
-tSCC zNext_TemplateName[] =
- "Next_Template";
-/*
- * File name selection pattern
- */
-tSCC zNext_TemplateList[] =
- "|" "bsd/libc.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNext_TemplateMachs (const char**)NULL
-
-/*
- * 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 54 - Next_Volitile fix
- */
-tSCC zNext_VolitileName[] =
- "Next_Volitile";
-/*
- * File name selection pattern
- */
-tSCC zNext_VolitileList[] =
- "|" "ansi/stdlib.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNext_VolitileMachs (const char**)NULL
-
-/*
- * 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 55 - Next_Wait_Union fix
- */
-tSCC zNext_Wait_UnionName[] =
- "Next_Wait_Union";
-/*
- * File name selection pattern
- */
-tSCC zNext_Wait_UnionList[] =
- "|" "sys/wait.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNext_Wait_UnionMachs (const char**)NULL
-
-/*
- * 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 56 - Nodeent_Syntax fix
- */
-tSCC zNodeent_SyntaxName[] =
- "Nodeent_Syntax";
-/*
- * File name selection pattern
- */
-tSCC zNodeent_SyntaxList[] =
- "|" "netdnet/dnetdb.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzNodeent_SyntaxMachs (const char**)NULL
-#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 57 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzOsf_Namespace_AMachs (const char**)NULL
-
-/*
- * 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 58 - Osf_Namespace_B fix
- */
-tSCC zOsf_Namespace_BName[] =
- "Osf_Namespace_B";
-/*
- * File name selection pattern
- */
-tSCC zOsf_Namespace_BList[] =
- "|" "regex.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzOsf_Namespace_BMachs (const char**)NULL
-
-/*
- * 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 59 - Pthread_Page_Size fix
- */
-tSCC zPthread_Page_SizeName[] =
- "Pthread_Page_Size";
-/*
- * File name selection pattern
- */
-tSCC zPthread_Page_SizeList[] =
- "|" "pthread.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzPthread_Page_SizeMachs (const char**)NULL
-
-/*
- * 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 60 - Rs6000_Double fix
- */
-tSCC zRs6000_DoubleName[] =
- "Rs6000_Double";
-/*
- * File name selection pattern
- */
-tSCC zRs6000_DoubleList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzRs6000_DoubleMachs (const char**)NULL
-
-/*
- * 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 61 - Rs6000_Fchmod fix
- */
-tSCC zRs6000_FchmodName[] =
- "Rs6000_Fchmod";
-/*
- * File name selection pattern
- */
-tSCC zRs6000_FchmodList[] =
- "|" "sys/stat.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzRs6000_FchmodMachs (const char**)NULL
-
-/*
- * 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 62 - Rs6000_Param fix
- */
-tSCC zRs6000_ParamName[] =
- "Rs6000_Param";
-/*
- * File name selection pattern
- */
-tSCC zRs6000_ParamList[] =
- "|" "stdio.h"
- "|" "unistd.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzRs6000_ParamMachs (const char**)NULL
-#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 63 - Sony_Include fix
- */
-tSCC zSony_IncludeName[] =
- "Sony_Include";
-/*
- * File name selection pattern
- */
-tSCC zSony_IncludeList[] =
- "|" "machine/machparam.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSony_IncludeMachs (const char**)NULL
-
-/*
- * 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 64 - Statsswtch fix
- */
-tSCC zStatsswtchName[] =
- "Statsswtch";
-/*
- * File name selection pattern
- */
-tSCC zStatsswtchList[] =
- "|" "rpcsvc/rstat.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzStatsswtchMachs (const char**)NULL
-
-/*
- * 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 65 - Stdio_Va_List fix
- */
-tSCC zStdio_Va_ListName[] =
- "Stdio_Va_List";
-/*
- * File name selection pattern
- */
-tSCC zStdio_Va_ListList[] =
- "|" "stdio.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzStdio_Va_ListMachs (const char**)NULL
-#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 66 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_Bogus_IfdefMachs (const char**)NULL
-
-/*
- * 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 67 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_Bogus_Ifdef_Sun4cMachs (const char**)NULL
-
-/*
- * 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 68 - Sun_Catmacro fix
- */
-tSCC zSun_CatmacroName[] =
- "Sun_Catmacro";
-/*
- * File name selection pattern
- */
-tSCC zSun_CatmacroList[] =
- "|" "pixrect/memvar.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_CatmacroMachs (const char**)NULL
-
-/*
- * 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 69 - Sun_Malloc fix
- */
-tSCC zSun_MallocName[] =
- "Sun_Malloc";
-/*
- * File name selection pattern
- */
-tSCC zSun_MallocList[] =
- "|" "malloc.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_MallocMachs (const char**)NULL
-#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 70 - Sun_Memcpy fix
- */
-tSCC zSun_MemcpyName[] =
- "Sun_Memcpy";
-/*
- * File name selection pattern
- */
-tSCC zSun_MemcpyList[] =
- "|" "memory.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_MemcpyMachs (const char**)NULL
-
-/*
- * 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 71 - Sun_Rusers_Semi fix
- */
-tSCC zSun_Rusers_SemiName[] =
- "Sun_Rusers_Semi";
-/*
- * File name selection pattern
- */
-tSCC zSun_Rusers_SemiList[] =
- "|" "rpcsvc/rusers.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_Rusers_SemiMachs (const char**)NULL
-
-/*
- * 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 72 - Sun_Signal fix
- */
-tSCC zSun_SignalName[] =
- "Sun_Signal";
-/*
- * File name selection pattern
- */
-tSCC zSun_SignalList[] =
- "|" "sys/signal.h"
- "|" "signal.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSun_SignalMachs (const char**)NULL
-
-/*
- * 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 73 - Sun_Auth_Proto fix
- */
-tSCC zSun_Auth_ProtoName[] =
- "Sun_Auth_Proto";
-/*
- * File name selection pattern
- */
-tSCC zSun_Auth_ProtoList[] =
- "|" "rpc/auth.h"
- "|" "rpc/clnt.h"
- "|" "rpc/svc.h"
- "|" "rpc/xdr.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSun_Auth_ProtoMachs[] = {
- "*-sun-*",
- (const char*)NULL };
-
-/*
- * content selection pattern
- */
-tSCC zSun_Auth_ProtoSelect0[] =
- "\\(\\*[a-z][a-z_]*\\)\\(\\)";
-
-/*
- * content bypass pattern
- */
-tSCC zSun_Auth_ProtoBypass0[] =
- "\\(\\*[a-z][a-z_]*\\)\\([ \t]*[a-zA-Z.].*\\)";
-
-#define SUN_AUTH_PROTO_TEST_CT 2
-tTestDesc aSun_Auth_ProtoTests[] = {
- { TT_NEGREP, zSun_Auth_ProtoBypass0, (regex_t*)NULL },
- { TT_EGREP, zSun_Auth_ProtoSelect0, (regex_t*)NULL } };
-
-/*
- * Fix Command Arguments for Sun_Auth_Proto
- */
-const char* apzSun_Auth_ProtoPatch[] = { "sed",
- "-e" "s/^\\(.*(\\*[a-z][a-z_]*)(\\)\\();.*\\)/\\\n"
- "#ifdef __cplusplus\\\n"
- "\\1...\\2\\\n"
- "#else\\\n"
- "\\1\\2\\\n"
- "#endif/",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description 74 - Sunos_Large_Macro fix
- */
-tSCC zSunos_Large_MacroName[] =
- "Sunos_Large_Macro";
-/*
- * File name selection pattern
- */
-tSCC zSunos_Large_MacroList[] =
- "|" "sundev/ipi_error.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSunos_Large_MacroMachs (const char**)NULL
-#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 75 - Sunos_Matherr_Decl fix
- */
-tSCC zSunos_Matherr_DeclName[] =
- "Sunos_Matherr_Decl";
-/*
- * File name selection pattern
- */
-tSCC zSunos_Matherr_DeclList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSunos_Matherr_DeclMachs (const char**)NULL
-
-/*
- * 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 76 - Sunos_Strlen fix
- */
-tSCC zSunos_StrlenName[] =
- "Sunos_Strlen";
-/*
- * File name selection pattern
- */
-tSCC zSunos_StrlenList[] =
- "|" "strings.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSunos_StrlenMachs (const char**)NULL
-#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 77 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSystypesMachs (const char**)NULL
-
-/*
- * 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 78 - Systypes_For_Aix fix
- */
-tSCC zSystypes_For_AixName[] =
- "Systypes_For_Aix";
-/*
- * File name selection pattern
- */
-tSCC zSystypes_For_AixList[] =
- "|" "sys/types.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSystypes_For_AixMachs (const char**)NULL
-
-/*
- * 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 79 - Sysv68_String fix
- */
-tSCC zSysv68_StringName[] =
- "Sysv68_String";
-/*
- * File name selection pattern
- */
-tSCC zSysv68_StringList[] =
- "|" "string.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSysv68_StringMachs (const char**)NULL
-#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 80 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSysz_Stdlib_For_SunMachs[] = {
- "*-sun-*",
- "m88k-*-sysv3*",
- (const char*)NULL };
-#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 81 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSysz_Stdtypes_For_SunMachs (const char**)NULL
-#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 82 - Tinfo_Cplusplus fix
- */
-tSCC zTinfo_CplusplusName[] =
- "Tinfo_Cplusplus";
-/*
- * File name selection pattern
- */
-tSCC zTinfo_CplusplusList[] =
- "|" "tinfo.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzTinfo_CplusplusMachs (const char**)NULL
-#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 83 - Ultrix_Ansi_Compat fix
- */
-tSCC zUltrix_Ansi_CompatName[] =
- "Ultrix_Ansi_Compat";
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Ansi_CompatList[] =
- "|" "ansi_compat.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Ansi_CompatMachs (const char**)NULL
-
-/*
- * 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 84 - Ultrix_Atof_Param fix
- */
-tSCC zUltrix_Atof_ParamName[] =
- "Ultrix_Atof_Param";
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Atof_ParamList[] =
- "|" "math.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Atof_ParamMachs (const char**)NULL
-#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 85 - Ultrix_Const fix
- */
-tSCC zUltrix_ConstName[] =
- "Ultrix_Const";
-/*
- * File name selection pattern
- */
-tSCC zUltrix_ConstList[] =
- "|" "stdio.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_ConstMachs (const char**)NULL
-#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 86 - Ultrix_Ifdef fix
- */
-tSCC zUltrix_IfdefName[] =
- "Ultrix_Ifdef";
-/*
- * File name selection pattern
- */
-tSCC zUltrix_IfdefList[] =
- "|" "sys/file.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_IfdefMachs (const char**)NULL
-
-/*
- * 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 87 - Ultrix_Nested_Cmnt fix
- */
-tSCC zUltrix_Nested_CmntName[] =
- "Ultrix_Nested_Cmnt";
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Nested_CmntList[] =
- "|" "rpc/svc.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Nested_CmntMachs (const char**)NULL
-#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 88 - Ultrix_Static fix
- */
-tSCC zUltrix_StaticName[] =
- "Ultrix_Static";
-/*
- * File name selection pattern
- */
-tSCC zUltrix_StaticList[] =
- "|" "machine/cpu.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_StaticMachs (const char**)NULL
-
-/*
- * 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 89 - Undefine_Null fix
- */
-tSCC zUndefine_NullName[] =
- "Undefine_Null";
-/*
- * File name selection pattern
- */
-#define zUndefine_NullList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-#define apzUndefine_NullMachs (const 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 90 - Va_I960_Macro fix
- */
-tSCC zVa_I960_MacroName[] =
- "Va_I960_Macro";
-/*
- * File name selection pattern
- */
-tSCC zVa_I960_MacroList[] =
- "|" "arch/i960/archI960.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzVa_I960_MacroMachs (const char**)NULL
-
-/*
- * 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 91 - 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" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzVoid_NullMachs (const char**)NULL
-
-/*
- * 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 92 - Vxworks_Gcc_Problem fix
- */
-tSCC zVxworks_Gcc_ProblemName[] =
- "Vxworks_Gcc_Problem";
-/*
- * File name selection pattern
- */
-tSCC zVxworks_Gcc_ProblemList[] =
- "|" "types/vxTypesBase.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzVxworks_Gcc_ProblemMachs (const char**)NULL
-
-/*
- * 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 93 - Vxworks_Needs_Vxtypes fix
- */
-tSCC zVxworks_Needs_VxtypesName[] =
- "Vxworks_Needs_Vxtypes";
-/*
- * File name selection pattern
- */
-tSCC zVxworks_Needs_VxtypesList[] =
- "|" "time.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzVxworks_Needs_VxtypesMachs (const char**)NULL
-
-/*
- * 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 94 - Vxworks_Needs_Vxworks fix
- */
-tSCC zVxworks_Needs_VxworksName[] =
- "Vxworks_Needs_Vxworks";
-/*
- * File name selection pattern
- */
-tSCC zVxworks_Needs_VxworksList[] =
- "|" "sys/stat.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzVxworks_Needs_VxworksMachs (const char**)NULL
-
-/*
- * 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 95 - Vxworks_Time fix
- */
-tSCC zVxworks_TimeName[] =
- "Vxworks_Time";
-/*
- * File name selection pattern
- */
-tSCC zVxworks_TimeList[] =
- "|" "time.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzVxworks_TimeMachs (const char**)NULL
-
-/*
- * 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 96 - X11_Class fix
- */
-tSCC zX11_ClassName[] =
- "X11_Class";
-/*
- * File name selection pattern
- */
-tSCC zX11_ClassList[] =
- "|" "X11/ShellP.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzX11_ClassMachs (const char**)NULL
-
-/*
- * 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 97 - X11_Class_Usage fix
- */
-tSCC zX11_Class_UsageName[] =
- "X11_Class_Usage";
-/*
- * File name selection pattern
- */
-tSCC zX11_Class_UsageList[] =
- "|" "Xm/BaseClassI.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzX11_Class_UsageMachs (const char**)NULL
-
-/*
- * 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 98 - X11_New fix
- */
-tSCC zX11_NewName[] =
- "X11_New";
-/*
- * File name selection pattern
- */
-tSCC zX11_NewList[] =
- "|" "Xm/Traversal.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzX11_NewMachs (const char**)NULL
-
-/*
- * 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 99 - X11_Sprintf fix
- */
-tSCC zX11_SprintfName[] =
- "X11_Sprintf";
-/*
- * File name selection pattern
- */
-tSCC zX11_SprintfList[] =
- "|" "X11*/Xmu.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzX11_SprintfMachs (const char**)NULL
-#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 100 - Zzz_Ki_Iface fix
- */
-tSCC zZzz_Ki_IfaceName[] =
- "Zzz_Ki_Iface";
-/*
- * File name selection pattern
- */
-tSCC zZzz_Ki_IfaceList[] =
- "|" "sys/ki_iface.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzZzz_Ki_IfaceMachs (const char**)NULL
-
-/*
- * 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 101 - Zzz_Ki fix
- */
-tSCC zZzz_KiName[] =
- "Zzz_Ki";
-/*
- * File name selection pattern
- */
-tSCC zZzz_KiList[] =
- "|" "sys/ki.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzZzz_KiMachs (const char**)NULL
-
-/*
- * 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 102 - Zzz_Ki_Calls fix
- */
-tSCC zZzz_Ki_CallsName[] =
- "Zzz_Ki_Calls";
-/*
- * File name selection pattern
- */
-tSCC zZzz_Ki_CallsList[] =
- "|" "sys/ki_calls.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzZzz_Ki_CallsMachs (const char**)NULL
-
-/*
- * 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 103 - Zzz_Ki_Defs fix
- */
-tSCC zZzz_Ki_DefsName[] =
- "Zzz_Ki_Defs";
-/*
- * File name selection pattern
- */
-tSCC zZzz_Ki_DefsList[] =
- "|" "sys/ki_defs.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzZzz_Ki_DefsMachs (const char**)NULL
-
-/*
- * 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 104 - Zzz_Time fix
- */
-tSCC zZzz_TimeName[] =
- "Zzz_Time";
-/*
- * File name selection pattern
- */
-tSCC zZzz_TimeList[] =
- "|" "sys/time.h" "|";
-/*
- * Machine/OS name selection pattern
- */
-#define apzZzz_TimeMachs (const char**)NULL
-
-/*
- * 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 75
-#define FIX_COUNT 104
-tFixDesc fixDescList[ 104 ] = {
- { zAix_SyswaitName, zAix_SyswaitList,
- apzAix_SyswaitMachs, (regex_t*)NULL,
- AIX_SYSWAIT_TEST_CT, FD_MACH_ONLY,
- aAix_SyswaitTests, apzAix_SyswaitPatch },
-
- { zAix_VolatileName, zAix_VolatileList,
- apzAix_VolatileMachs, (regex_t*)NULL,
- AIX_VOLATILE_TEST_CT, FD_MACH_ONLY,
- aAix_VolatileTests, apzAix_VolatilePatch },
-
- { zAlpha_GetoptName, zAlpha_GetoptList,
- apzAlpha_GetoptMachs, (regex_t*)NULL,
- ALPHA_GETOPT_TEST_CT, FD_MACH_ONLY,
- aAlpha_GetoptTests, apzAlpha_GetoptPatch },
-
- { zAlpha_ParensName, zAlpha_ParensList,
- apzAlpha_ParensMachs, (regex_t*)NULL,
- ALPHA_PARENS_TEST_CT, FD_MACH_ONLY,
- aAlpha_ParensTests, apzAlpha_ParensPatch },
-
- { zAlpha_SbrkName, zAlpha_SbrkList,
- apzAlpha_SbrkMachs, (regex_t*)NULL,
- ALPHA_SBRK_TEST_CT, FD_MACH_ONLY,
- aAlpha_SbrkTests, apzAlpha_SbrkPatch },
-
- { zArm_Norcroft_HintName, zArm_Norcroft_HintList,
- apzArm_Norcroft_HintMachs, (regex_t*)NULL,
- ARM_NORCROFT_HINT_TEST_CT, FD_MACH_ONLY,
- aArm_Norcroft_HintTests, apzArm_Norcroft_HintPatch },
-
- { zArm_WcharName, zArm_WcharList,
- apzArm_WcharMachs, (regex_t*)NULL,
- ARM_WCHAR_TEST_CT, FD_MACH_ONLY,
- aArm_WcharTests, apzArm_WcharPatch },
-
- { zAux_AsmName, zAux_AsmList,
- apzAux_AsmMachs, (regex_t*)NULL,
- AUX_ASM_TEST_CT, FD_MACH_ONLY,
- aAux_AsmTests, apzAux_AsmPatch },
-
- { zAvoid_BoolName, zAvoid_BoolList,
- apzAvoid_BoolMachs, (regex_t*)NULL,
- AVOID_BOOL_TEST_CT, FD_MACH_ONLY,
- aAvoid_BoolTests, apzAvoid_BoolPatch },
-
- { zBad_Malloc_DeclName, zBad_Malloc_DeclList,
- apzBad_Malloc_DeclMachs, (regex_t*)NULL,
- BAD_MALLOC_DECL_TEST_CT, FD_MACH_ONLY,
- aBad_Malloc_DeclTests, apzBad_Malloc_DeclPatch },
-
- { zBad_Struct_TermName, zBad_Struct_TermList,
- apzBad_Struct_TermMachs, (regex_t*)NULL,
- BAD_STRUCT_TERM_TEST_CT, FD_MACH_ONLY,
- aBad_Struct_TermTests, apzBad_Struct_TermPatch },
-
- { zBadquoteName, zBadquoteList,
- apzBadquoteMachs, (regex_t*)NULL,
- BADQUOTE_TEST_CT, FD_MACH_ONLY,
- aBadquoteTests, apzBadquotePatch },
-
- { zBad_LvalName, zBad_LvalList,
- apzBad_LvalMachs, (regex_t*)NULL,
- BAD_LVAL_TEST_CT, FD_MACH_ONLY,
- aBad_LvalTests, apzBad_LvalPatch },
-
- { zBroken_Assert_StdioName, zBroken_Assert_StdioList,
- apzBroken_Assert_StdioMachs, (regex_t*)NULL,
- BROKEN_ASSERT_STDIO_TEST_CT, FD_MACH_ONLY,
- aBroken_Assert_StdioTests, apzBroken_Assert_StdioPatch },
-
- { zBroken_Assert_StdlibName, zBroken_Assert_StdlibList,
- apzBroken_Assert_StdlibMachs, (regex_t*)NULL,
- BROKEN_ASSERT_STDLIB_TEST_CT, FD_MACH_ONLY,
- aBroken_Assert_StdlibTests, apzBroken_Assert_StdlibPatch },
-
- { zBsd43_Io_MacrosName, zBsd43_Io_MacrosList,
- apzBsd43_Io_MacrosMachs, (regex_t*)NULL,
- BSD43_IO_MACROS_TEST_CT, FD_MACH_ONLY,
- aBsd43_Io_MacrosTests, apzBsd43_Io_MacrosPatch },
-
- { zNo_Double_SlashName, zNo_Double_SlashList,
- apzNo_Double_SlashMachs, (regex_t*)NULL,
- NO_DOUBLE_SLASH_TEST_CT, FD_MACH_ONLY,
- aNo_Double_SlashTests, apzNo_Double_SlashPatch },
-
- { zIrix_Bogus_Cxx_CmntName, zIrix_Bogus_Cxx_CmntList,
- apzIrix_Bogus_Cxx_CmntMachs, (regex_t*)NULL,
- IRIX_BOGUS_CXX_CMNT_TEST_CT, FD_MACH_ONLY,
- aIrix_Bogus_Cxx_CmntTests, apzIrix_Bogus_Cxx_CmntPatch },
-
- { zEcd_CursorName, zEcd_CursorList,
- apzEcd_CursorMachs, (regex_t*)NULL,
- ECD_CURSOR_TEST_CT, FD_MACH_ONLY,
- aEcd_CursorTests, apzEcd_CursorPatch },
-
- { zElse_LabelName, zElse_LabelList,
- apzElse_LabelMachs, (regex_t*)NULL,
- ELSE_LABEL_TEST_CT, FD_MACH_ONLY,
- aElse_LabelTests, apzElse_LabelPatch },
-
- { zEndif_LabelName, zEndif_LabelList,
- apzEndif_LabelMachs, (regex_t*)NULL,
- ENDIF_LABEL_TEST_CT, FD_MACH_ONLY,
- aEndif_LabelTests, apzEndif_LabelPatch },
-
- { zHp_InlineName, zHp_InlineList,
- apzHp_InlineMachs, (regex_t*)NULL,
- HP_INLINE_TEST_CT, FD_MACH_ONLY,
- aHp_InlineTests, apzHp_InlinePatch },
-
- { zHp_SysfileName, zHp_SysfileList,
- apzHp_SysfileMachs, (regex_t*)NULL,
- HP_SYSFILE_TEST_CT, FD_MACH_ONLY,
- aHp_SysfileTests, apzHp_SysfilePatch },
-
- { zHpux_Cxx_UnreadyName, zHpux_Cxx_UnreadyList,
- apzHpux_Cxx_UnreadyMachs, (regex_t*)NULL,
- HPUX_CXX_UNREADY_TEST_CT, FD_MACH_ONLY,
- aHpux_Cxx_UnreadyTests, apzHpux_Cxx_UnreadyPatch },
-
- { zHpux_MaxintName, zHpux_MaxintList,
- apzHpux_MaxintMachs, (regex_t*)NULL,
- HPUX_MAXINT_TEST_CT, FD_MACH_ONLY,
- aHpux_MaxintTests, apzHpux_MaxintPatch },
-
- { zHpux_SystimeName, zHpux_SystimeList,
- apzHpux_SystimeMachs, (regex_t*)NULL,
- HPUX_SYSTIME_TEST_CT, FD_MACH_ONLY,
- aHpux_SystimeTests, apzHpux_SystimePatch },
-
- { zInteractv_Add1Name, zInteractv_Add1List,
- apzInteractv_Add1Machs, (regex_t*)NULL,
- INTERACTV_ADD1_TEST_CT, FD_MACH_ONLY,
- aInteractv_Add1Tests, apzInteractv_Add1Patch },
-
- { zInteractv_Add2Name, zInteractv_Add2List,
- apzInteractv_Add2Machs, (regex_t*)NULL,
- INTERACTV_ADD2_TEST_CT, FD_MACH_ONLY,
- aInteractv_Add2Tests, apzInteractv_Add2Patch },
-
- { zInteractv_Add3Name, zInteractv_Add3List,
- apzInteractv_Add3Machs, (regex_t*)NULL,
- INTERACTV_ADD3_TEST_CT, FD_MACH_ONLY,
- aInteractv_Add3Tests, apzInteractv_Add3Patch },
-
- { zIo_Def_QuotesName, zIo_Def_QuotesList,
- apzIo_Def_QuotesMachs, (regex_t*)NULL,
- IO_DEF_QUOTES_TEST_CT, FD_MACH_ONLY,
- aIo_Def_QuotesTests, apzIo_Def_QuotesPatch },
-
- { zIoctl_Fix_CtrlName, zIoctl_Fix_CtrlList,
- apzIoctl_Fix_CtrlMachs, (regex_t*)NULL,
- IOCTL_FIX_CTRL_TEST_CT, FD_MACH_ONLY,
- aIoctl_Fix_CtrlTests, apzIoctl_Fix_CtrlPatch },
-
- { zIp_Missing_SemiName, zIp_Missing_SemiList,
- apzIp_Missing_SemiMachs, (regex_t*)NULL,
- IP_MISSING_SEMI_TEST_CT, FD_MACH_ONLY,
- aIp_Missing_SemiTests, apzIp_Missing_SemiPatch },
-
- { zIrix_Multiline_CmntName, zIrix_Multiline_CmntList,
- apzIrix_Multiline_CmntMachs, (regex_t*)NULL,
- IRIX_MULTILINE_CMNT_TEST_CT, FD_MACH_ONLY,
- aIrix_Multiline_CmntTests, apzIrix_Multiline_CmntPatch },
-
- { zIrix_SockaddrName, zIrix_SockaddrList,
- apzIrix_SockaddrMachs, (regex_t*)NULL,
- IRIX_SOCKADDR_TEST_CT, FD_MACH_ONLY,
- aIrix_SockaddrTests, apzIrix_SockaddrPatch },
-
- { zIrix_Struct__FileName, zIrix_Struct__FileList,
- apzIrix_Struct__FileMachs, (regex_t*)NULL,
- IRIX_STRUCT__FILE_TEST_CT, FD_MACH_ONLY,
- aIrix_Struct__FileTests, apzIrix_Struct__FilePatch },
-
- { zIsc_FmodName, zIsc_FmodList,
- apzIsc_FmodMachs, (regex_t*)NULL,
- ISC_FMOD_TEST_CT, FD_MACH_ONLY,
- aIsc_FmodTests, apzIsc_FmodPatch },
-
- { zMotorola_NestedName, zMotorola_NestedList,
- apzMotorola_NestedMachs, (regex_t*)NULL,
- MOTOROLA_NESTED_TEST_CT, FD_MACH_ONLY,
- aMotorola_NestedTests, apzMotorola_NestedPatch },
-
- { zIsc_Sys_LimitsName, zIsc_Sys_LimitsList,
- apzIsc_Sys_LimitsMachs, (regex_t*)NULL,
- ISC_SYS_LIMITS_TEST_CT, FD_MACH_ONLY,
- aIsc_Sys_LimitsTests, apzIsc_Sys_LimitsPatch },
-
- { zKandr_ConcatName, zKandr_ConcatList,
- apzKandr_ConcatMachs, (regex_t*)NULL,
- KANDR_CONCAT_TEST_CT, FD_MACH_ONLY,
- aKandr_ConcatTests, apzKandr_ConcatPatch },
-
- { zLimits_IfndefsName, zLimits_IfndefsList,
- apzLimits_IfndefsMachs, (regex_t*)NULL,
- LIMITS_IFNDEFS_TEST_CT, FD_MACH_ONLY,
- aLimits_IfndefsTests, apzLimits_IfndefsPatch },
-
- { zLynx_Void_IntName, zLynx_Void_IntList,
- apzLynx_Void_IntMachs, (regex_t*)NULL,
- LYNX_VOID_INT_TEST_CT, FD_MACH_ONLY,
- aLynx_Void_IntTests, apzLynx_Void_IntPatch },
-
- { zLynxos_Fcntl_ProtoName, zLynxos_Fcntl_ProtoList,
- apzLynxos_Fcntl_ProtoMachs, (regex_t*)NULL,
- LYNXOS_FCNTL_PROTO_TEST_CT, FD_MACH_ONLY,
- aLynxos_Fcntl_ProtoTests, apzLynxos_Fcntl_ProtoPatch },
-
- { zM88k_Bad_Hypot_OptName, zM88k_Bad_Hypot_OptList,
- apzM88k_Bad_Hypot_OptMachs, (regex_t*)NULL,
- M88K_BAD_HYPOT_OPT_TEST_CT, FD_MACH_ONLY,
- aM88k_Bad_Hypot_OptTests, apzM88k_Bad_Hypot_OptPatch },
-
- { zM88k_Bad_S_IfName, zM88k_Bad_S_IfList,
- apzM88k_Bad_S_IfMachs, (regex_t*)NULL,
- M88K_BAD_S_IF_TEST_CT, FD_MACH_ONLY,
- aM88k_Bad_S_IfTests, apzM88k_Bad_S_IfPatch },
-
- { zM88k_Multi_InclName, zM88k_Multi_InclList,
- apzM88k_Multi_InclMachs, (regex_t*)NULL,
- M88K_MULTI_INCL_TEST_CT, FD_MACH_ONLY,
- aM88k_Multi_InclTests, apzM88k_Multi_InclPatch },
-
- { zMachine_NameName, zMachine_NameList,
- apzMachine_NameMachs, (regex_t*)NULL,
- MACHINE_NAME_TEST_CT, FD_MACH_ONLY,
- aMachine_NameTests, apzMachine_NamePatch },
-
- { zMath_ExceptionName, zMath_ExceptionList,
- apzMath_ExceptionMachs, (regex_t*)NULL,
- MATH_EXCEPTION_TEST_CT, FD_MACH_ONLY,
- aMath_ExceptionTests, apzMath_ExceptionPatch },
-
- { zMath_Gcc_IfndefsName, zMath_Gcc_IfndefsList,
- apzMath_Gcc_IfndefsMachs, (regex_t*)NULL,
- MATH_GCC_IFNDEFS_TEST_CT, FD_MACH_ONLY,
- aMath_Gcc_IfndefsTests, apzMath_Gcc_IfndefsPatch },
-
- { zMotorola_Stupid_OptName, zMotorola_Stupid_OptList,
- apzMotorola_Stupid_OptMachs, (regex_t*)NULL,
- MOTOROLA_STUPID_OPT_TEST_CT, FD_MACH_ONLY,
- aMotorola_Stupid_OptTests, apzMotorola_Stupid_OptPatch },
-
- { zNested_CommentName, zNested_CommentList,
- apzNested_CommentMachs, (regex_t*)NULL,
- NESTED_COMMENT_TEST_CT, FD_MACH_ONLY,
- aNested_CommentTests, apzNested_CommentPatch },
-
- { zNews_Os_RecursionName, zNews_Os_RecursionList,
- apzNews_Os_RecursionMachs, (regex_t*)NULL,
- NEWS_OS_RECURSION_TEST_CT, FD_MACH_ONLY,
- aNews_Os_RecursionTests, apzNews_Os_RecursionPatch },
-
- { zNext_Math_PrefixName, zNext_Math_PrefixList,
- apzNext_Math_PrefixMachs, (regex_t*)NULL,
- NEXT_MATH_PREFIX_TEST_CT, FD_MACH_ONLY,
- aNext_Math_PrefixTests, apzNext_Math_PrefixPatch },
-
- { zNext_TemplateName, zNext_TemplateList,
- apzNext_TemplateMachs, (regex_t*)NULL,
- NEXT_TEMPLATE_TEST_CT, FD_MACH_ONLY,
- aNext_TemplateTests, apzNext_TemplatePatch },
-
- { zNext_VolitileName, zNext_VolitileList,
- apzNext_VolitileMachs, (regex_t*)NULL,
- NEXT_VOLITILE_TEST_CT, FD_MACH_ONLY,
- aNext_VolitileTests, apzNext_VolitilePatch },
-
- { zNext_Wait_UnionName, zNext_Wait_UnionList,
- apzNext_Wait_UnionMachs, (regex_t*)NULL,
- NEXT_WAIT_UNION_TEST_CT, FD_MACH_ONLY,
- aNext_Wait_UnionTests, apzNext_Wait_UnionPatch },
-
- { zNodeent_SyntaxName, zNodeent_SyntaxList,
- apzNodeent_SyntaxMachs, (regex_t*)NULL,
- NODEENT_SYNTAX_TEST_CT, FD_MACH_ONLY,
- aNodeent_SyntaxTests, apzNodeent_SyntaxPatch },
-
- { zOsf_Namespace_AName, zOsf_Namespace_AList,
- apzOsf_Namespace_AMachs, (regex_t*)NULL,
- OSF_NAMESPACE_A_TEST_CT, FD_MACH_ONLY,
- aOsf_Namespace_ATests, apzOsf_Namespace_APatch },
-
- { zOsf_Namespace_BName, zOsf_Namespace_BList,
- apzOsf_Namespace_BMachs, (regex_t*)NULL,
- OSF_NAMESPACE_B_TEST_CT, FD_MACH_ONLY,
- aOsf_Namespace_BTests, apzOsf_Namespace_BPatch },
-
- { zPthread_Page_SizeName, zPthread_Page_SizeList,
- apzPthread_Page_SizeMachs, (regex_t*)NULL,
- PTHREAD_PAGE_SIZE_TEST_CT, FD_MACH_ONLY,
- aPthread_Page_SizeTests, apzPthread_Page_SizePatch },
-
- { zRs6000_DoubleName, zRs6000_DoubleList,
- apzRs6000_DoubleMachs, (regex_t*)NULL,
- RS6000_DOUBLE_TEST_CT, FD_MACH_ONLY,
- aRs6000_DoubleTests, apzRs6000_DoublePatch },
-
- { zRs6000_FchmodName, zRs6000_FchmodList,
- apzRs6000_FchmodMachs, (regex_t*)NULL,
- RS6000_FCHMOD_TEST_CT, FD_MACH_ONLY,
- aRs6000_FchmodTests, apzRs6000_FchmodPatch },
-
- { zRs6000_ParamName, zRs6000_ParamList,
- apzRs6000_ParamMachs, (regex_t*)NULL,
- RS6000_PARAM_TEST_CT, FD_MACH_ONLY,
- aRs6000_ParamTests, apzRs6000_ParamPatch },
-
- { zSony_IncludeName, zSony_IncludeList,
- apzSony_IncludeMachs, (regex_t*)NULL,
- SONY_INCLUDE_TEST_CT, FD_MACH_ONLY,
- aSony_IncludeTests, apzSony_IncludePatch },
-
- { zStatsswtchName, zStatsswtchList,
- apzStatsswtchMachs, (regex_t*)NULL,
- STATSSWTCH_TEST_CT, FD_MACH_ONLY,
- aStatsswtchTests, apzStatsswtchPatch },
-
- { zStdio_Va_ListName, zStdio_Va_ListList,
- apzStdio_Va_ListMachs, (regex_t*)NULL,
- STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY,
- aStdio_Va_ListTests, apzStdio_Va_ListPatch },
-
- { zSun_Bogus_IfdefName, zSun_Bogus_IfdefList,
- apzSun_Bogus_IfdefMachs, (regex_t*)NULL,
- SUN_BOGUS_IFDEF_TEST_CT, FD_MACH_ONLY,
- aSun_Bogus_IfdefTests, apzSun_Bogus_IfdefPatch },
-
- { zSun_Bogus_Ifdef_Sun4cName, zSun_Bogus_Ifdef_Sun4cList,
- apzSun_Bogus_Ifdef_Sun4cMachs, (regex_t*)NULL,
- SUN_BOGUS_IFDEF_SUN4C_TEST_CT, FD_MACH_ONLY,
- aSun_Bogus_Ifdef_Sun4cTests, apzSun_Bogus_Ifdef_Sun4cPatch },
-
- { zSun_CatmacroName, zSun_CatmacroList,
- apzSun_CatmacroMachs, (regex_t*)NULL,
- SUN_CATMACRO_TEST_CT, FD_MACH_ONLY,
- aSun_CatmacroTests, apzSun_CatmacroPatch },
-
- { zSun_MallocName, zSun_MallocList,
- apzSun_MallocMachs, (regex_t*)NULL,
- SUN_MALLOC_TEST_CT, FD_MACH_ONLY,
- aSun_MallocTests, apzSun_MallocPatch },
-
- { zSun_MemcpyName, zSun_MemcpyList,
- apzSun_MemcpyMachs, (regex_t*)NULL,
- SUN_MEMCPY_TEST_CT, FD_MACH_ONLY,
- aSun_MemcpyTests, apzSun_MemcpyPatch },
-
- { zSun_Rusers_SemiName, zSun_Rusers_SemiList,
- apzSun_Rusers_SemiMachs, (regex_t*)NULL,
- SUN_RUSERS_SEMI_TEST_CT, FD_MACH_ONLY,
- aSun_Rusers_SemiTests, apzSun_Rusers_SemiPatch },
-
- { zSun_SignalName, zSun_SignalList,
- apzSun_SignalMachs, (regex_t*)NULL,
- SUN_SIGNAL_TEST_CT, FD_MACH_ONLY,
- aSun_SignalTests, apzSun_SignalPatch },
-
- { zSun_Auth_ProtoName, zSun_Auth_ProtoList,
- apzSun_Auth_ProtoMachs, (regex_t*)NULL,
- SUN_AUTH_PROTO_TEST_CT, FD_MACH_ONLY,
- aSun_Auth_ProtoTests, apzSun_Auth_ProtoPatch },
-
- { zSunos_Large_MacroName, zSunos_Large_MacroList,
- apzSunos_Large_MacroMachs, (regex_t*)NULL,
- SUNOS_LARGE_MACRO_TEST_CT, FD_MACH_ONLY,
- aSunos_Large_MacroTests, apzSunos_Large_MacroPatch },
-
- { zSunos_Matherr_DeclName, zSunos_Matherr_DeclList,
- apzSunos_Matherr_DeclMachs, (regex_t*)NULL,
- SUNOS_MATHERR_DECL_TEST_CT, FD_MACH_ONLY,
- aSunos_Matherr_DeclTests, apzSunos_Matherr_DeclPatch },
-
- { zSunos_StrlenName, zSunos_StrlenList,
- apzSunos_StrlenMachs, (regex_t*)NULL,
- SUNOS_STRLEN_TEST_CT, FD_MACH_ONLY,
- aSunos_StrlenTests, apzSunos_StrlenPatch },
-
- { zSystypesName, zSystypesList,
- apzSystypesMachs, (regex_t*)NULL,
- SYSTYPES_TEST_CT, FD_MACH_ONLY,
- aSystypesTests, apzSystypesPatch },
-
- { zSystypes_For_AixName, zSystypes_For_AixList,
- apzSystypes_For_AixMachs, (regex_t*)NULL,
- SYSTYPES_FOR_AIX_TEST_CT, FD_MACH_ONLY,
- aSystypes_For_AixTests, apzSystypes_For_AixPatch },
-
- { zSysv68_StringName, zSysv68_StringList,
- apzSysv68_StringMachs, (regex_t*)NULL,
- SYSV68_STRING_TEST_CT, FD_MACH_ONLY,
- aSysv68_StringTests, apzSysv68_StringPatch },
-
- { zSysz_Stdlib_For_SunName, zSysz_Stdlib_For_SunList,
- apzSysz_Stdlib_For_SunMachs, (regex_t*)NULL,
- SYSZ_STDLIB_FOR_SUN_TEST_CT, FD_MACH_ONLY,
- aSysz_Stdlib_For_SunTests, apzSysz_Stdlib_For_SunPatch },
-
- { zSysz_Stdtypes_For_SunName, zSysz_Stdtypes_For_SunList,
- apzSysz_Stdtypes_For_SunMachs, (regex_t*)NULL,
- SYSZ_STDTYPES_FOR_SUN_TEST_CT, FD_MACH_ONLY,
- aSysz_Stdtypes_For_SunTests, apzSysz_Stdtypes_For_SunPatch },
-
- { zTinfo_CplusplusName, zTinfo_CplusplusList,
- apzTinfo_CplusplusMachs, (regex_t*)NULL,
- TINFO_CPLUSPLUS_TEST_CT, FD_MACH_ONLY,
- aTinfo_CplusplusTests, apzTinfo_CplusplusPatch },
-
- { zUltrix_Ansi_CompatName, zUltrix_Ansi_CompatList,
- apzUltrix_Ansi_CompatMachs, (regex_t*)NULL,
- ULTRIX_ANSI_COMPAT_TEST_CT, FD_MACH_ONLY,
- aUltrix_Ansi_CompatTests, apzUltrix_Ansi_CompatPatch },
-
- { zUltrix_Atof_ParamName, zUltrix_Atof_ParamList,
- apzUltrix_Atof_ParamMachs, (regex_t*)NULL,
- ULTRIX_ATOF_PARAM_TEST_CT, FD_MACH_ONLY,
- aUltrix_Atof_ParamTests, apzUltrix_Atof_ParamPatch },
-
- { zUltrix_ConstName, zUltrix_ConstList,
- apzUltrix_ConstMachs, (regex_t*)NULL,
- ULTRIX_CONST_TEST_CT, FD_MACH_ONLY,
- aUltrix_ConstTests, apzUltrix_ConstPatch },
-
- { zUltrix_IfdefName, zUltrix_IfdefList,
- apzUltrix_IfdefMachs, (regex_t*)NULL,
- ULTRIX_IFDEF_TEST_CT, FD_MACH_ONLY,
- aUltrix_IfdefTests, apzUltrix_IfdefPatch },
-
- { zUltrix_Nested_CmntName, zUltrix_Nested_CmntList,
- apzUltrix_Nested_CmntMachs, (regex_t*)NULL,
- ULTRIX_NESTED_CMNT_TEST_CT, FD_MACH_ONLY,
- aUltrix_Nested_CmntTests, apzUltrix_Nested_CmntPatch },
-
- { zUltrix_StaticName, zUltrix_StaticList,
- apzUltrix_StaticMachs, (regex_t*)NULL,
- ULTRIX_STATIC_TEST_CT, FD_MACH_ONLY,
- aUltrix_StaticTests, apzUltrix_StaticPatch },
-
- { zUndefine_NullName, zUndefine_NullList,
- apzUndefine_NullMachs, (regex_t*)NULL,
- UNDEFINE_NULL_TEST_CT, FD_MACH_ONLY,
- aUndefine_NullTests, apzUndefine_NullPatch },
-
- { zVa_I960_MacroName, zVa_I960_MacroList,
- apzVa_I960_MacroMachs, (regex_t*)NULL,
- VA_I960_MACRO_TEST_CT, FD_MACH_ONLY,
- aVa_I960_MacroTests, apzVa_I960_MacroPatch },
-
- { zVoid_NullName, zVoid_NullList,
- apzVoid_NullMachs, (regex_t*)NULL,
- VOID_NULL_TEST_CT, FD_MACH_ONLY,
- aVoid_NullTests, apzVoid_NullPatch },
-
- { zVxworks_Gcc_ProblemName, zVxworks_Gcc_ProblemList,
- apzVxworks_Gcc_ProblemMachs, (regex_t*)NULL,
- VXWORKS_GCC_PROBLEM_TEST_CT, FD_MACH_ONLY,
- aVxworks_Gcc_ProblemTests, apzVxworks_Gcc_ProblemPatch },
-
- { zVxworks_Needs_VxtypesName, zVxworks_Needs_VxtypesList,
- apzVxworks_Needs_VxtypesMachs, (regex_t*)NULL,
- VXWORKS_NEEDS_VXTYPES_TEST_CT, FD_MACH_ONLY,
- aVxworks_Needs_VxtypesTests, apzVxworks_Needs_VxtypesPatch },
-
- { zVxworks_Needs_VxworksName, zVxworks_Needs_VxworksList,
- apzVxworks_Needs_VxworksMachs, (regex_t*)NULL,
- VXWORKS_NEEDS_VXWORKS_TEST_CT, FD_MACH_ONLY,
- aVxworks_Needs_VxworksTests, apzVxworks_Needs_VxworksPatch },
-
- { zVxworks_TimeName, zVxworks_TimeList,
- apzVxworks_TimeMachs, (regex_t*)NULL,
- VXWORKS_TIME_TEST_CT, FD_MACH_ONLY,
- aVxworks_TimeTests, apzVxworks_TimePatch },
-
- { zX11_ClassName, zX11_ClassList,
- apzX11_ClassMachs, (regex_t*)NULL,
- X11_CLASS_TEST_CT, FD_MACH_ONLY,
- aX11_ClassTests, apzX11_ClassPatch },
-
- { zX11_Class_UsageName, zX11_Class_UsageList,
- apzX11_Class_UsageMachs, (regex_t*)NULL,
- X11_CLASS_USAGE_TEST_CT, FD_MACH_ONLY,
- aX11_Class_UsageTests, apzX11_Class_UsagePatch },
-
- { zX11_NewName, zX11_NewList,
- apzX11_NewMachs, (regex_t*)NULL,
- X11_NEW_TEST_CT, FD_MACH_ONLY,
- aX11_NewTests, apzX11_NewPatch },
-
- { zX11_SprintfName, zX11_SprintfList,
- apzX11_SprintfMachs, (regex_t*)NULL,
- X11_SPRINTF_TEST_CT, FD_MACH_ONLY,
- aX11_SprintfTests, apzX11_SprintfPatch },
-
- { zZzz_Ki_IfaceName, zZzz_Ki_IfaceList,
- apzZzz_Ki_IfaceMachs, (regex_t*)NULL,
- ZZZ_KI_IFACE_TEST_CT, FD_MACH_ONLY,
- aZzz_Ki_IfaceTests, apzZzz_Ki_IfacePatch },
-
- { zZzz_KiName, zZzz_KiList,
- apzZzz_KiMachs, (regex_t*)NULL,
- ZZZ_KI_TEST_CT, FD_MACH_ONLY,
- aZzz_KiTests, apzZzz_KiPatch },
-
- { zZzz_Ki_CallsName, zZzz_Ki_CallsList,
- apzZzz_Ki_CallsMachs, (regex_t*)NULL,
- ZZZ_KI_CALLS_TEST_CT, FD_MACH_ONLY,
- aZzz_Ki_CallsTests, apzZzz_Ki_CallsPatch },
-
- { zZzz_Ki_DefsName, zZzz_Ki_DefsList,
- apzZzz_Ki_DefsMachs, (regex_t*)NULL,
- ZZZ_KI_DEFS_TEST_CT, FD_MACH_ONLY,
- aZzz_Ki_DefsTests, apzZzz_Ki_DefsPatch },
-
- { zZzz_TimeName, zZzz_TimeList,
- apzZzz_TimeMachs, (regex_t*)NULL,
- ZZZ_TIME_TEST_CT, FD_MACH_ONLY,
- aZzz_TimeTests, apzZzz_TimePatch }
-};
diff --git a/gcc/fixinc/hackshell.tpl b/gcc/fixinc/hackshell.tpl
deleted file mode 100755
index 37b4a66..0000000
--- a/gcc/fixinc/hackshell.tpl
+++ /dev/null
@@ -1,186 +0,0 @@
-[= autogen template include =]
-[=
-# $Id: hackshell.tpl,v 1.2 1999/01/13 22:56:22 law Exp $
-#
-# This file contanes the shell template replacement for the
-# fixincl program. It is the repetitive guts of the fixincludes logic.
-#
-=]
- if $LINKS; then
- files=`find . -name '*.h' \( -type f -o -type l \) -print`
- else
- files=`find . -name '*.h' -type f -print`
- fi
- echo Checking header files
- for file in $files; do
-
- if ( test ! -r $file -o \
- -n "`fgrep 'This file is part of the GNU C Library' $file`" )
- then continue ; fi
-
- fixlist=""
-[=
-#
-# FOR every fix description,
-# DO: emit the shell text to apply the fix to the current file
-#
-# =][=
-
-_FOR fix "\n\n" =]
- #
- # Fix [=_eval _index 1 + #%3d _printf=]: [=hackname _Cap=]
- #[=
- _IF files _exist=]
- case "$file" in [=_FOR files " | \\\n\t"=]./[=files=][=/files=] )[=
- _ENDIF=][=
-
- _IF mach _exist=]
- case "$target_canonical" in [=
- _FOR mach " | \\\n\t" =][=
- mach =][=
- /mach =] )[=
- _IF mach_unmatched _exist =] : ;;
- * )[=
- _ENDIF =][=
-
- _ENDIF=][=
-
- # There are three conditional tests: select, bypass and test.
- They may appear as often as desired. They must all pass for
- the fix to be applied. "select" and "bypass" are egrep expressions
- that must each appear (or not appear) in the target file.
- "test" is an arbitrary test program expression that must yield
- true or false. It is enclosed in parenthesis to avoid
- precedence problems. The output looks like this:
-
- if ( test -n "`egrep 'find-expr' $file`" -a
- -z "`egrep 'not-find' $file`" -a
- '(' <some-test-expression> ')'
- ) > /dev/null 2>&1 ; then
-
- # =][=
-
- _IF select _exist =]
- if ( test [=
- _FOR select " -a \\\n "
- =]-n [=select _shrstr "#`egrep %s $file`"
- _printf _shstr =][=
- /select=][=
-
- _IF bypass _exist =][=
- _FOR bypass=] -a \
- -z [=bypass _shrstr "#`egrep %s $file`"
- _printf _shstr =][=
- /bypass=][=
- _ENDIF=][=
-
- _IF test _exist=][=
- _FOR test=] -a \
- '(' [=test=] ')'[=
- /test=][=
- _ENDIF=]
- ) > /dev/null 2>&1 ; then[=
-
-
- _ELIF test _exist =]
- if ( test [=
- _FOR test " -a \\\n "
- =]'(' [=test=] ')'[=
- /test=][=
-
- _IF bypass _exist=][=
- _FOR bypass=] -a \
- -z [=bypass _shrstr "#`egrep %s $file`"
- _printf _shstr=][=
- /bypass=][=
- _ENDIF=]
- ) > /dev/null 2>&1 ; then[=
-
-
- _ELIF bypass _exist =]
- if ( test [=_FOR bypass " -a \\\n "
- =]-z [=bypass _shrstr "#`egrep %s $file`"
- _printf _shstr=][=/bypass=]
- ) > /dev/null 2>&1 ; then[=
-
- _ENDIF=]
- fixlist="${fixlist}
- [=hackname=]"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi [=
-
- _IF sed _exist=][=
- _IF shell _exist =][=
- _ERROR hackname _get
- "fixincludes Error: %s fix has multiple fixups" _printf=][=
- _ENDIF=]
-
- sed [=
- _FOR sed =]-e [=sed _shrstr=] \
- [=
- /sed=] < $infile > ${DESTDIR}/$file.[=
-
-
- _ELIF shell _exist =]
- ( [=shell=] ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi [=
-
-
- _ELSE=][=
- _ERROR hackname _get "ERROR: %s has no fixup" _printf=][=
-
- _ENDIF=]
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file[=
-
- # Close off any opened "if" or "case" statements in reverse order
-
- # =][=
-
- _IF select _exist test _exist | bypass _exist | =]
- fi # end of selection 'if'[=
- _ENDIF =][=
-
- _IF mach _exist=]
- ;; # case end for machine type test
- esac[=
- _ENDIF =][=
-
- _IF files _exist=]
- ;; # case end for file name test
- esac[=
- _ENDIF =][=
-
-/fix =][=
-#
-# DONE with every fix for the current file
-#
-#=]
- # IF the output has been removed OR it is unchanged,
- # THEN ensure the output is gone
- # ELSE look for local directory include syntax
- #
- if ( test ! -f ${DESTDIR}/$file || \
- cmp $file ${DESTDIR}/$file ) > /dev/null 2>&1
- then
- rm -f ${DESTDIR}/$file
- else
- echo "Fixed $file:${fixlist}"
-
- # Find any include directives that use "file".
- #
- for include in `
- egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${DESTDIR}/$file |
- sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`
- do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${SRCDIR} $dir/$include ${DESTDIR}/$dir/$include"
- done
- fi
- done # for file in $files
diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def
deleted file mode 100755
index 16b72f1..0000000
--- a/gcc/fixinc/inclhack.def
+++ /dev/null
@@ -1,2340 +0,0 @@
-/* -*- Mode: C -*- $Id: inclhack.def,v 1.2 1999/01/13 22:56:22 law Exp $ */
-
-autogen definitions inclhack;
-
-/*
- * Define all the fixes we know about for repairing damaged headers
- */
-
-/*
- * sys/wait.h on AIX 3.2.5 puts the declaration of wait3 before the definition
- * of struct rusage, so the prototype (added by fixproto) causes havoc.
- */
-fix = {
- hackname = aix_syswait;
- files = sys/wait.h;
- select = "bos325,";
- sed = "/^extern pid_t wait3();$/i\\\n"
- "struct rusage;\n";
-};
-
-
-/*
- * sys/signal.h on some versions of AIX uses volatile in the typedef of
- * sig_atomic_t, which causes gcc to generate a warning about duplicate
- * volatile when a sig_atomic_t variable is declared volatile, as
- * required by ANSI C.
- */
-fix = {
- hackname = aix_volatile;
- files = sys/signal.h;
- select = "typedef volatile int sig_atomic_t";
- sed = "s/typedef volatile int sig_atomic_t"
- "/typedef int sig_atomic_t/";
-};
-
-
-/*
- * Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
- */
-fix = {
- hackname = alpha_getopt;
- files = "stdio.h";
- files = "stdlib.h";
- select = 'getopt\(int, char \*\[';
- sed = 's/getopt(int, char \*\[\],[ ]*char \*)/'
- 'getopt(int, char *const[], const char *)/';
-};
-
-
-/*
- * Determine if we're on Interactive Unix 2.2 or later, in which case we
- * need to fix some additional files. This is the same test for ISC that
- * Autoconf uses. On Interactive 2.2, certain traditional Unix
- * definitions (notably getc and putc in stdio.h) are omitted if __STDC__
- * is defined, not just if _POSIX_SOURCE is defined. This makes it
- * impossible to compile any nontrivial program except with -posix.
- */
-fix = {
- hackname = alpha_parens;
- files = sym.h;
- select = '#ifndef\(__mips64\)';
- sed = "s/#ifndef(__mips64)/#ifndef __mips64/";
-};
-
-
-/*
- * Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
- */
-fix = {
- hackname = alpha_sbrk;
- files = unistd.h;
- select = "char[ \t]*\\*[\t ]*sbrk[ \t]*\\(";
- sed = "s/char\\([ \t]*\\*[\t ]*sbrk[ \t]*(\\)/void\\1/";
-};
-
-
-/*
- * Fix this ARM/RISCiX file where ___type is a Compiler
- * hint that is specific to the Norcroft compiler.
- */
-fix = {
- hackname = arm_norcroft_hint;
- files = "X11/Intrinsic.h";
- sed = "s/___type p_type/p_type/";
-};
-
-
-/*
- * Fix this ARM/RISCiX file to avoid interfering
- * with the use of __wchar_t in cc1plus.
- */
-fix = {
- hackname = arm_wchar;
- files = stdlib.h;
- select = "#[ \t]*define[ \t]*__wchar_t";
- sed = "s/\\(#[ \t]*ifndef[ \t]*\\)__wchar_t/\\1_GCC_WCHAR_T/";
- sed = "s/\\(#[ \t]*define[ \t]*\\)__wchar_t/\\1_GCC_WCHAR_T/";
-};
-
-
-/*
- * This file in A/UX 3.0.x/3.1.x contains an __asm directive for c89;
- * gcc doesn't understand it.
- */
-fix = {
- hackname = aux_asm;
- files = sys/param.h;
- select = "#ifndef NOINLINE";
- sed = "s|#ifndef NOINLINE"
- "|#if !defined(NOINLINE) \\&\\& !defined(__GNUC__)|";
-};
-
-
-/*
- * For C++, avoid any typedef or macro definition of bool,
- * and use the built in type instead.
- */
-fix = {
- hackname = avoid_bool;
- files = curses.h;
- files = term.h;
- files = tinfo.h;
-
- sed = "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/i\\\n"
- "#ifndef __cplusplus\n";
-
- sed = "/^#[ \t]*define[ \t][ \t]*bool[ \t][ \t]*char[ \t]*$/a\\\n"
- "#endif\n";
-
- sed = "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/i\\\n"
- "#ifndef __cplusplus\n";
-
- sed = "/^typedef[ \t][ \t]*char[ \t][ \t]*bool[ \t]*;/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * rpc/types.h on OSF1/2.0 is not C++ ready, even though NO_IMPLICIT_EXTERN_C
- * is defined for the alpha. The problem is the declaration of malloc.
- */
-fix = {
- hackname = bad_malloc_decl;
- files = rpc/types.h;
- bypass = '"C"';
- sed = "1i\\\n"
- "#ifdef __cplusplus\\\n"
- "extern \"C\" {\\\n"
- "#endif\\\n\n";
- sed = "$a\\\n"
- "#ifdef __cplusplus\\\n"
- "}\\\n"
- "#endif\n";
-};
-
-
-/*
- * Fix `typedef struct term;' on hppa1.1-hp-hpux9.
- */
-fix = {
- hackname = bad_struct_term;
- files = curses.h;
- select = "^[ \t]*typedef[ \t]+struct[ \t]+term[ \t]*;";
- sed = "s/^[ \t]*typedef[ \t][ \t]*"
- "\\(struct[ \t][ \t]*term[ \t]*;[ \t]*\\)$/\\1/";
-};
-
-
-/*
- * Fix one other error in this file:
- * a mismatched quote not inside a C comment.
- */
-fix = {
- hackname = badquote;
- files = sundev/vuid_event.h;
- sed = "s/doesn't/does not/";
-};
-
-
-/*
- * Fix #defines under Alpha OSF/1:
- * The following files contain '#pragma extern_prefix "_FOO"' followed by
- * a '#define something(x,y,z) _FOOsomething(x,y,z)'. The intent of these
- * statements is to reduce namespace pollution. While these macros work
- * properly in most cases, they don't allow you to take a pointer to the
- * "something" being modified. To get around this limitation, change these
- * statements to be of the form '#define something _FOOsomething'.
- */
-fix = {
- hackname = bad_lval;
- select = "^[ \t]*#[ \t]*pragma[ \t]extern_prefix";
- files = libgen.h;
- files = dirent.h;
- files = ftw.h;
- files = grp.h;
- files = ndbm.h;
- files = pthread.h;
- files = pwd.h;
- files = signal.h;
- files = standards.h;
- files = stdlib.h;
- files = string.h;
- files = stropts.h;
- files = time.h;
- files = unistd.h;
- sed =
- "s/^[ \t]*#[ \t]*define[ \t]*\\([^(]*\\)\\(([^)]*)\\)[ \t]*"
- "\\(_.\\)\\1\\2[ \t]*$/#define \\1 \\3\\1/";
-};
-
-
-/*
- * check for broken assert.h that needs stdio.h
- */
-fix = {
- hackname = broken_assert_stdio;
- files = assert.h;
- select = stderr;
- bypass = "include.*stdio.h";
- sed = "1i\\\n"
- "#include <stdio.h>\n";
-};
-
-
-/*
- * check for broken assert.h that needs stdlib.h
- */
-fix = {
- hackname = broken_assert_stdlib;
- files = assert.h;
- select = 'exit *\(|abort *\(';
- bypass = "include.*stdlib.h";
- sed = "1i\\\n"
- "#ifdef __cplusplus\\\n"
- "#include <stdlib.h>\\\n"
- "#endif\n";
-};
-
-
-/*
- * Note that BSD43_* are used on recent MIPS systems.
- */
-fix = {
- hackname = bsd43_io_macros;
- select = "BSD43__IO";
- /*
- * Put single quotes aroung the character that appears after '('
- * and before ',', UNLESS it is a 'c' or 'g' or 'x'.
- */
- sed = "/[ \t]BSD43__IO[A-Z]*[ \t]*(/" 's/(\(.\),/(\'\1\',/';
- sed = "/#[ \t]*define[ \t]*[ \t]BSD43__IO/" 's/\'\([cgx]\)\'/\1/g';
-};
-
-#IFDEF no_more
-/*
- * And also with the HP-UX 10 and HP-UX 11 sys/pci.h file
- */
-fix = {
- hackname = cxx_cmnt_hpux;
- files = sys/pci.h;
- select = "System Private Structures";
- sed = "s|//.*$||g";
-};
-
-
-/*
- * Turning // comments into normal comments trashes this IRIX 4.0.1
- * header file, which embeds // comments inside multi-line
- * comments. If this looks like the IRIX header file, we refix it by
- * just throwing away the // comments.
- */
-fix = {
- hackname = cxx_cmnt_irix;
- files = fam.h;
- select = indigo.esd;
- sed = "s|//.*$||g";
-};
-
-
-/*
- * Same problem with a file from SunOS 4.1.3 : a header file containing
- * the string "//" embedded in "/ * * /"
- */
-fix = {
- hackname = cxx_cmnt_sunos;
- files = sbusdev/audiovar.h;
- files = sys/audiovar.h;
- sed = "s|//.*$||g";
-};
-
-
-/*
- * There is a similar problem with the VxWorks drv/netif/if_med.h file.
- */
-fix = {
- hackname = cxx_cmnt_vxworks;
- files = drv/netif/if_med.h;
- select = "Wind River";
- sed = "s|//.*$||g";
-};
-#endif
-
-/*
- * Remove the double-slash comments
- * They *must* be removed so it will not create nested comments!!
- * However, they will *not* be removed if '++' is in any part of
- * the file name, or if the name ends with ".hh" or ".H".
- *
- * There *used* to be a number of similar problems in various OSes:
-
- * Turning // comments into normal comments trashes this IRIX 4.0.1
- * header file, which embeds // comments inside multi-line
- * comments. If this looks like the IRIX header file, we refix it by
- * just throwing away the // comments.
-
- * Same problem with a file from SunOS 4.1.3 : a header file containing
- * the string "//" embedded in "/ * * /"
-
- * There is a similar problem with the VxWorks drv/netif/if_med.h file.
-
- * And also with the HP-UX 10 and HP-UX 11 sys/pci.h file
- */
-fix = {
- hackname = no_double_slash;
- test = '-z "`echo ${file}|egrep \'++$|\.hh$|\.H$\'`"';
- select = '//[^*]';
- sed = '/\/\/[^*]/' "s|//.*$||g";
-};
-
-
-/*
- * Multiline comment after typedef on IRIX 4.0.1.
- */
-fix = {
- hackname = irix_bogus_cxx_cmnt;
- files = "elf_abi.h";
- files = "elf.h";
- /*
- * This really looks like it is replacing "/ * * /" with "//"
- * Shouldn't the replacement really be " ## "?
- */
- sed = 's@"/\*"\*/@"//"@';
-};
-
-
-/*
- * Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
- */
-fix = {
- hackname = ecd_cursor;
- files = "sunwindow/win_lock.h";
- files = "sunwindow/win_cursor.h";
- sed = "s/ecd.cursor/ecd_cursor/";
-};
-
-
-
-/*
- * Fix else directives that contain non-commentary text
- *
- * The fixinc_eol stuff is to work around a bug in the sed
- */
-fix = {
- hackname = else_label;
- select = "^[ \t]*#[ \t]*else[ \t]+[!-.0-~]";
- sed = ":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%";
-};
-
-
-/*
- * Fix endif directives that contain non-commentary text
- */
-fix = {
- hackname = endif_label;
- /*
- * Select files that contain '#endif' directives with
- * some sort of following junk. (Between the ascii '.'
- * and '0' lies the character '/'. This will *NOT*
- * match '#endif / * foo * /', but it also wont match
- * '#endif / done' either.
- *
- * We use the pattern [!-.0-z{|}~] instead of [^/ \t] to match a noncomment
- * following #else or #endif because some buggy egreps think [^/] matches
- * newline, and they thus think `#else ' matches
- * `#e[ndiflse]*[ \t]+[^/ \t]'.
- * [!-.0-~] does not work properly on AIX 4.1.
- */
- select = "^[ \t]*#[ \t]*endif[ \t]+[!-.0-z\{\|\}\~]";
-
- /*
- * First, join the continued input lines.
- * IF the resulting line is an endif preprocessing directive,
- * then trim off the following patterns:
- * 1. sequences that start with '/' and is *NOT* followed by '*'
- * 2. Sequences that start with '*' and is *NOT* followed by '/'
- * 3. sequences that do not start with any of '/', '*', '\t' or ' '.
- *
- * The fixinc_eol stuff is to work around a bug in the sed
- */
- sed = ":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%";
-};
-
-
-/*
- * Fix HP's use of ../machine/inline.h to refer to
- * /usr/include/machine/inline.h
- */
-fix = {
- hackname = hp_inline;
- files = sys/spinlock.h;
- select = 'include.*"\.\./machine/';
- sed = "s,\"../machine/inline.h\",<machine/inline.h>,";
- sed = "s,\"../machine/psl.h\",<machine/psl.h>,";
-};
-
-
-/*
- * Check for (...) in C++ code in HP/UX sys/file.h.
- */
-fix = {
- hackname = hp_sysfile;
- files = sys/file.h;
- select = "HPUX_SOURCE";
- sed = 's/(\.\.\.)/(struct file * ...)/';
-};
-
-
-/*
- * sys/mman.h on HP/UX is not C++ ready,
- * even though NO_IMPLICIT_EXTERN_C is defined on HP/UX.
- */
-fix = {
- hackname = hpux_cxx_unready;
- files = sys/mman.h;
- bypass = '"C"|__BEGIN_DECLS';
-
- sed = "1i\\\n"
- "#ifdef __cplusplus\\\n"
- "extern \"C\" {\\\n"
- "#endif\\\n\n";
- sed = "$a\\\n"
- "#ifdef __cplusplus\\\n"
- "}\\\n"
- "#endif\n";
-};
-
-
-/*
- * HPUX 10.x sys/param.h defines MAXINT which clashes with values.h
- */
-fix = {
- hackname = hpux_maxint;
- files = sys/param.h;
- sed = "/^#[ \t]*define[ \t]*MAXINT[ \t]/i\\\n"
- "#ifndef MAXINT\n";
-
- sed = "/^#[ \t]*define[ \t]*MAXINT[ \t]/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * Fix hpux10.20 <sys/time.h> to avoid invalid forward decl
- */
-fix = {
- hackname = hpux_systime;
- files = sys/time.h;
- select = "^extern struct sigevent;";
- sed = "s/^extern struct sigevent;/struct sigevent;/";
-};
-
-
-/*
- * Fix various _IO* defines, but do *not* quote the characters cgxtf.
- */
-fix = {
- hackname = interactv_add1;
-
- test = "-d /etc/conf/kconfig.d";
- test = '-n "`grep _POSIX_VERSION /usr/include/sys/unistd.h`"';
-
- files = "stdio.h";
- files = "math.h";
- files = "ctype.h";
- files = "sys/limits.h";
- files = "sys/fcntl.h";
- files = "sys/dirent.h";
-
- sed = "s/!defined(__STDC__) && !defined(_POSIX_SOURCE)/"
- "!defined(_POSIX_SOURCE)/";
-};
-
-fix = {
- hackname = interactv_add2;
-
- test = "-d /etc/conf/kconfig.d";
- test = '-n "`grep _POSIX_VERSION /usr/include/sys/unistd.h`"';
-
- files = math.h;
- sed = "s/fmod(double)/fmod(double, double)/";
-};
-
-fix = {
- hackname = interactv_add3;
-
- test = "-d /etc/conf/kconfig.d";
- test = '-n "`grep _POSIX_VERSION /usr/include/sys/unistd.h`"';
-
- files = sys/limits.h;
-
- sed = "/CHILD_MAX/s,/\\* Max, Max,";
- sed = "/OPEN_MAX/s,/\\* Max, Max,";
-};
-
-
-/*
- * Remove erroneous parentheses in sym.h on Alpha OSF/1.
- */
-fix = {
- hackname = io_def_quotes;
- select = "[ \t]_IO[A-Z]*[ \t]*\\([A-Za-z]";
- sed = "s/\\([ \t]_IO[A-Z]*[ \t]*(\\)\\([A-Za-z]\\),/\\1'\\2',/";
- sed = "/#[ \t]*define[ \t]*[ \t]_IO/"
- "s/'\\([cgxtf]\\)'/\\1/g";
- sed = "/#[ \t]*define[ \t]*[ \t]DESIOC/" 's/\'\([cdgx]\)\'/\1/g';
-};
-
-
-/*
- * Fix CTRL macros
- */
-fix = {
- hackname = ioctl_fix_ctrl;
- select = "CTRL[ \t]";
-
- sed = "/[^A-Z0-9_]CTRL[ \t]*(/"
- "s/\\([^']\\))/'\\1')/";
-
- sed = "/[^A-Z0-9]_CTRL[ \t]*(/"
- "s/\\([^']\\))/'\\1')/";
-
- sed = "/#[ \t]*define[ \t]*[ \t]CTRL/"
- "s/'\\([cgx]\\)'/\\1/g";
-
- sed = "/#[ \t]*define[ \t]*[ \t]_CTRL/"
- "s/'\\([cgx]\\)'/\\1/g";
-
- sed = "/#[ \t]*define[ \t]*[ \t]BSD43_CTRL/"
- "s/'\\([cgx]\\)'/\\1/g";
-};
-
-
-/*
- * Check for missing ';' in struct
- */
-fix = {
- hackname = ip_missing_semi;
- files = netinet/ip.h;
- sed = "/^struct/,/^};/s/}$/};/";
-};
-
-
-/*
- * IRIX 4.0.5 <rpc/auth.h> uses struct sockaddr
- * in prototype without previous definition.
- */
-fix = {
- hackname = irix_multiline_cmnt;
- files = sys/types.h;
-
- sed = "s@type of the result@type of the result */@";
- sed = "s@of the sizeof@/* of the sizeof@";
-};
-
-
-/*
- * Some IRIX header files contain the string "//"
- */
-fix = {
- hackname = irix_sockaddr;
- files = rpc/auth.h;
- select = "authdes_create.*struct sockaddr";
- sed = "/authdes_create.*struct sockaddr/i\\\n"
- "struct sockaddr;\n";
-};
-
-
-/*
- * IRIX 4.0.5 <rpc/xdr.h> uses struct __file_s
- * in prototype without previous definition.
- */
-fix = {
- hackname = irix_struct__file;
- files = rpc/xdr.h;
- sed = "/xdrstdio_create.*struct __file_s/i\\\n"
- "struct __file_s;\n";
-};
-
-
-/*
- * Fixing ISC fmod declaration
- */
-fix = {
- hackname = isc_fmod;
- files = math.h;
- select = 'fmod\(double\)';
- sed = "s/fmod(double)/fmod(double, double)/";
-};
-
-
-/*
- * Fix nested comments in Motorola's <limits.h> and <sys/limits.h>
- */
-fix = {
- hackname = motorola_nested;
- files = limits.h;
- files = sys/limits.h;
- sed = "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*"
- "/\\* max # bytes atomic in write to a\\)$@\\1 */@";
- sed = "s@\\(/\\*#define\tHUGE_VAL\t3.40282346638528860e+38 \\)"
- "\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@";
-};
-
-
-/*
- * Fixing nested comments in ISC <sys/limits.h>
- */
-fix = {
- hackname = isc_sys_limits;
- files = sys/limits.h;
- select = CHILD_MAX;
- sed = "/CHILD_MAX/s,/\\* Max, Max,";
- sed = "/OPEN_MAX/s,/\\* Max, Max,";
-};
-
-
-/*
- * These files in Sun OS 4.x and ARM/RISCiX and BSD4.3
- * use / * * / to concatenate tokens.
- */
-fix = {
- hackname = kandr_concat;
- files = "sparc/asm_linkage.h";
- files = "sun3/asm_linkage.h";
- files = "sun3x/asm_linkage.h";
- files = "sun4/asm_linkage.h";
- files = "sun4c/asm_linkage.h";
- files = "sun4m/asm_linkage.h";
- files = "sun4c/debug/asm_linkage.h";
- files = "sun4m/debug/asm_linkage.h";
- files = "arm/as_support.h";
- files = "arm/mc_type.h";
- files = "arm/xcb.h";
- files = "dev/chardefmac.h";
- files = "dev/ps_irq.h";
- files = "dev/screen.h";
- files = "dev/scsi.h";
- files = "sys/tty.h";
- files = "Xm.acorn/XmP.h";
- files = bsd43/bsd43_.h;
- select = '/\*\*/';
- sed = 's|/\*\*/| ## |g';
-};
-
-
-/*
- * In limits.h, put #ifndefs around things that are supposed to be defined
- * in float.h to avoid redefinition errors if float.h is included first.
- * On HP/UX this patch does not work, because on HP/UX limits.h uses
- * multi line comments and the inserted #endif winds up inside the
- * comment. Fortunately, HP/UX already uses #ifndefs in limits.h; if
- * we find a #ifndef FLT_MIN we assume that all the required #ifndefs
- * are there, and we do not add them ourselves.
- * Also fix a nested comment problem in sys/limits.h on Motorola sysV68 R3V7.1
- */
-fix = {
- hackname = limits_ifndefs;
- files = "limits.h";
- bypass = "ifndef[ \t]+FLT_MIN";
-
- sed = "/[ \t]FLT_MIN[ \t]/i\\\n#ifndef FLT_MIN\n";
- sed = "/[ \t]FLT_MIN[ \t]/a\\\n#endif\n";
- sed = "/[ \t]FLT_MAX[ \t]/i\\\n#ifndef FLT_MAX\n";
- sed = "/[ \t]FLT_MAX[ \t]/a\\\n#endif\n";
- sed = "/[ \t]FLT_DIG[ \t]/i\\\n#ifndef FLT_DIG\n";
- sed = "/[ \t]FLT_DIG[ \t]/a\\\n#endif\n";
- sed = "/[ \t]DBL_MIN[ \t]/i\\\n#ifndef DBL_MIN\n";
- sed = "/[ \t]DBL_MIN[ \t]/a\\\n#endif\n";
- sed = "/[ \t]DBL_MAX[ \t]/i\\\n#ifndef DBL_MAX\n";
- sed = "/[ \t]DBL_MAX[ \t]/a\\\n#endif\n";
- sed = "/[ \t]DBL_DIG[ \t]/i\\\n#ifndef DBL_DIG\n";
- sed = "/[ \t]DBL_DIG[ \t]/a\\\n#endif\n";
- sed = "/^\\(\\/\\*#define\tHUGE_VAL\t3\\.[0-9e+]* *\\)\\/\\*/s//\\1/";
-};
-
-
-/*
- * Delete the '#define void int' line from curses.h on Lynx
- */
-fix = {
- hackname = lynx_void_int;
- files = curses.h;
- select = "#[ \t]*define[ \t]+void[ \t]+int";
- sed = "/#[ \t]*define[ \t][ \t]*void[ \t]int/d";
-};
-
-
-/*
- * Fix fcntl prototype in fcntl.h on LynxOS.
- */
-fix = {
- hackname = lynxos_fcntl_proto;
- files = fcntl.h;
-
- sed = 's/\(fcntl.*(int, int, \)int)/\1...)/';
-};
-
-
-/*
- * Fix incorrect S_IF* definitions on m88k-sysv3.
- */
-fix = {
- hackname = m88k_bad_hypot_opt;
- mach = "m88k-motorola-sysv3*";
- files = "math.h";
-
- sed = "s/extern double floor(), ceil(), fmod(), fabs();/"
- "extern double floor(), ceil(), fmod(), fabs _PARAMS((double));/";
-
- sed = "/^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";
-};
-
-
-/*
- * Fix non-ansi machine name defines
- * This is split into two parts: the shell version as a single
- * patch, and the program version with each patch separate.
- * Each is substantially faster for the particular environment.
- * You have a dual maintenance problem here. */
-fix = {
- hackname = m88k_bad_s_if;
- mach = "m88k-*-sysv3*";
- files = sys/stat.h;
- select = "#define[ \t]+S_IS[A-Z]*(m)[ \t]";
-
- sed = "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)/";
-
- sed = "s/^\\(#define[ \t]*S_IS[A-Z]*(m)\\)[ \t]*"
- "(m[ \t]*&[ \t]*\\(0[0-9]*\\)[ \t]*)/"
- "\\1 (((m)\\&S_IFMT)==\\2)/";
-};
-
-
-/*
- * Put cpp wrappers around these include files to avoid redeclaration
- * errors during multiple inclusion on m88k-tektronix-sysv3.
- */
-fix = {
- hackname = m88k_multi_incl;
- mach = "m88k-tektronix-sysv3*";
- files = "time.h";
- bypass = "#ifndef";
- shell =
- "echo Fixing $file, to protect against multiple inclusion. >&2
- cpp_wrapper=`echo $file | sed -e 's,\\.,_,g' -e 's,/,_,g'`
- 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\"";
-};
-
-
-/*
- * libm.a on m88k-motorola-sysv3 contains a stupid optimization for
- * function hypot(), which returns the second argument without even
- * looking at its value if the other is 0.0 Another drawback is that
- * fix-header doesn't fix fabs' prototype, and I have no idea why.
- */
-fix = {
- hackname = machine_name;
- /*
- * Select '#if.*' and '#elif" with possible non-ansi symbols
- * The only non-ansi symbols we know about start with one of:
- * MRS_bhimnprstuv
- * If any are added to the substitution list, then add it to
- * the selection list as well. Hopefully we can avoid names
- * starting with "d" and "l", because this pattern would then
- * match "defined" and "lint" as well. I suppose we could add
- * a "bypass = lint" if we had to though.
- *
- * The fixinc_eol stuff is to work around a bug in the sed
- */
- select = "^#[ \t]*(if|elif).*"
- "[^a-zA-Z0-9_](_*[MSRrhim]|[Mbimnpstuv])[a-zA-Z0-9_]";
- exesel = "^#[ \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"
- ")";
-
- sed = ":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}";
-};
-
-
-/*
- * Some math.h files define struct exception, which conflicts with
- * the class exception defined in the C++ file std/stdexcept.h. We
- * redefine it to __math_exception. This is not a great fix, but I
- * haven't been able to think of anything better.
- */
-fix = {
- hackname = math_exception;
- files = math.h;
- select = "struct exception";
- sed = "/struct exception/i\\\n"
- "#ifdef __cplusplus\\\n"
- "#define exception __math_exception\\\n"
- "#endif\n";
- sed = "/struct exception/a\\\n"
- "#ifdef __cplusplus\\\n"
- "#undef exception\\\n"
- "#endif\n";
-
- sed = "/matherr/i\\\n"
- "#ifdef __cplusplus\\\n"
- "#define exception __math_exception\\\n"
- "#endif\n";
-
- sed = "/matherr/a\\\n"
- "#ifdef __cplusplus\\\n"
- "#undef exception\\\n"
- "#endif\n";
-};
-
-
-/*
- * In math.h, put #ifndefs around things that might be defined
- * in a gcc specific math-*.h file.
- */
-fix = {
- hackname = math_gcc_ifndefs;
- files = math.h;
- shell = " 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";
-};
-
-
-/*
- * libm.a on m88k-motorola-sysv3 contains a stupid optimization for
- * function hypot(), which returns the second argument without even
- * looking at its value
- */
-fix = {
- hackname = motorola_stupid_opt;
- mach = "m88k-motorola-sysv3*";
- files = math.h;
- select = "^extern double hypot();$";
- sed =
- '/^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";
-};
-
-
-/*
- * nested comment
- */
-fix = {
- hackname = nested_comment;
- files = rpc/rpc.h;
- sed = 's@^\(/\*.*rpc/auth_des.h>.*\)/\*@\1*/ /*@';
-};
-
-
-/*
- * fix bogus recursive stdlib.h in NEWS-OS 4.0C
- */
-fix = {
- hackname = news_os_recursion;
- files = stdlib.h;
- select = "#include <stdlib.h>";
- sed = "/^#include <stdlib.h>/i\\\n"
- "#ifdef BOGUS_RECURSION\n";
- sed = "/^#include <stdlib.h>/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * NeXT 3.2 adds const prefix to some math functions.
- * These conflict with the built-in functions.
- */
-fix = {
- hackname = next_math_prefix;
- files = ansi/math.h;
- select = "^extern.*double.*__const__.*";
-
- sed = "/^extern.*double.*__const__.*sqrt(/s/__const__//";
- sed = "/^extern.*double.*__const__.*fabs(/s/__const__//";
- sed = "/^extern.*double.*__const__.*cos(/s/__const__//";
- sed = "/^extern.*double.*__const__.*hypot(/s/__const__//";
- sed = "/^extern.*double.*__const__.*sin(/s/__const__//";
-};
-
-
-/*
- * NeXT 3.2 uses the word "template" as a parameter for some
- * functions. GCC reports an invalid use of a reserved key word
- * with the built-in functions. NeXT 3.2 includes the keyword
- * volatile in the prototype for abort(). This conflicts with
- * the built-in definition.
- */
-fix = {
- hackname = next_template;
- files = bsd/libc.h;
- select = template;
-
- sed = '/\(.*template\)/s/template//';
- sed = "/extern.*volatile.*void.*abort/s/volatile//";
-};
-
-
-/*
- * NeXT 3.2 includes the keyword volatile in the abort() and exit()
- * function prototypes. That conflicts with the built-in functions.
- */
-fix = {
- hackname = next_volitile;
- files = ansi/stdlib.h;
- select = volatile;
-
- sed = "/extern.*volatile.*void.*exit/s/volatile//";
- sed = "/extern.*volatile.*void.*abort/s/volatile//";
-};
-
-
-/*
- * NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
- * Note that version 3 of the NeXT system has wait.h in a different directory,
- * so that this code won't do anything. But wait.h in version 3 has a
- * conditional, so it doesn't need this fix. So everything is okay.
- */
-fix = {
- hackname = next_wait_union;
- files = sys/wait.h;
-
- select = 'wait\(union wait';
-
- sed = "s@wait(union wait@wait(void@";
-};
-
-
-/*
- * a missing semi-colon at the end of the nodeent structure definition.
- */
-fix = {
- hackname = nodeent_syntax;
- files = netdnet/dnetdb.h;
- sed = "s/char.*na_addr *$/char *na_addr;/";
-};
-
-
-/*
- * sys/lc_core.h on some versions of OSF1/4.x pollutes the namespace by
- * defining regex.h related types. This causes libg++ build and usage
- * failures. Fixing this correctly requires checking and modifying 3 files.
- */
-fix = {
- hackname = osf_namespace_a;
- files = reg_types.h;
- files = sys/lc_core.h;
- test = "-r reg_types.h"
- "-a -r sys/lc_core.h"
- "-a -n \"`grep '} regex_t;' reg_types.h`\""
- "-a -z \"`grep __regex_t regex.h`\"";
-
- sed = "s/regex_t/__regex_t/g";
- sed = "s/regoff_t/__regoff_t/g";
- sed = "s/regmatch_t/__regmatch_t/g";
-};
-
-fix = {
- hackname = osf_namespace_b;
- files = regex.h;
- test = "-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`\"";
- sed = "/#include <reg_types.h>/a\\\n"
- "typedef __regex_t\tregex_t;\\\n"
- "typedef __regoff_t\tregoff_t;\\\n"
- "typedef __regmatch_t\tregmatch_t;\n";
-};
-
-
-/*
- * Fix __page_size* declarations in pthread.h AIX 4.1.[34].
- * The original ones fail if uninitialized externs are not common.
- * This is the default for all ANSI standard C++ compilers.
- */
-fix = {
- hackname = pthread_page_size;
- files = pthread.h;
- select = "^int __page_size";
- sed = "s/^int __page_size/extern int __page_size/";
-};
-
-
-/*
- * Fix return type of fread and fwrite on sysV68
- */
-#ifdef LATER
-fix = {
- hackname = read_ret_type;
- files = stdio.h;
- sed = "s/^\\(extern int\tfclose(), fflush()\\), "
- "\\(fread(), fwrite()\\)\\(.*\\)$"
- "/extern unsigned int\t\\2;\\\n\\1\\3/";
-};
-#endif
-
-
-/*
- * function class(double x) conflicts with C++ keyword on rs/6000
- */
-fix = {
- hackname = rs6000_double;
- files = math.h;
- select = '[^a-zA-Z_]class\(';
-
- sed = "/class[(]/i\\\n#ifndef __cplusplus\n";
- sed = "/class[(]/a\\\n#endif\n";
-};
-
-
-/*
- * Wrong fchmod prototype on RS/6000.
- */
-fix = {
- hackname = rs6000_fchmod;
- files = sys/stat.h;
- select = 'fchmod\(char';
- sed = 's/fchmod(char \*/fchmod(int/';
-};
-
-
-/*
- * parameters conflict with C++ new on rs/6000
- */
-fix = {
- hackname = rs6000_param;
- files = "stdio.h";
- files = "unistd.h";
-
- sed = 's@rename(const char \*old, const char \*new)@'
- 'rename(const char *_old, const char *_new)@';
-};
-
-
-/*
- * Sony NEWSOS 5.0 does not support the complete ANSI C standard.
- */
-#ifdef SONY
-fix = {
- hackname = sony_ctype;
- files = ctype.h;
- test = "-x /bin/sony";
- test = "! -z \"`if /bin/sony ; then echo true ; fi`\"";
- sed = "s/__ctype/_ctype/g";
-};
-#endif
-
-/*
- * Incorrect #include in Sony News-OS 3.2.
- */
-fix = {
- hackname = sony_include;
- files = machine/machparam.h;
- select = '"\.\./machine/endian.h"';
- sed = 's@"../machine/endian.h"@<machine/endian.h>@';
-};
-
-
-/*
- * Sony NEWSOS 5.0 does not support the complete ANSI C standard.
- */
-#ifdef SONY
-fix = {
- hackname = sony_stdio;
- files = stdio.h;
- test = "-x /bin/sony";
- test = "! -z \"`if /bin/sony ; then echo true ; fi`\"";
- sed = "s/__filbuf/_filbuf/g\n"
- "s/__flsbuf/_flsbuf/g\n"
- "s/__iob/_iob/g";
-};
-#endif
-
-/*
- * Add a `static' declaration of `getrnge' into <regexp.h>.
- *
- * Don't do this if there is already a `static void getrnge' declaration
- * present, since this would cause a redeclaration error. Solaris 2.x has
- * such a declaration.
- */
-#ifdef SVR4
-fix = {
- hackname = static_getrnge;
- files = regexp.h;
- bypass = "static void getrnge";
- sed = "/^static int[ \t]*size;/c\\\n"
- "static int size ;\\\n\\\n"
- "static int getrnge ();";
-};
-#endif
-
-/*
- * a missing semi-colon at the end of the statsswtch structure definition.
- */
-fix = {
- hackname = statsswtch;
- files = rpcsvc/rstat.h;
- select = "boottime$";
- sed = "s/boottime$/boottime;/";
-};
-
-
-/*
- * Don't use or define the name va_list in stdio.h.
- * This is for ANSI and also to interoperate properly with gcc's varargs.h.
- * Arrange for stdio.h to use stdarg.h to define __gnuc_va_list
- */
-fix = {
- hackname = stdio_va_list;
- files = stdio.h;
-
- /*
- * Use __gnuc_va_list in arg types in place of va_list.
- * On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the
- * trailing parentheses and semicolon save all other systems from this.
- * Define __va_list__ (something harmless and unused) instead of va_list.
- * Don't claim to have defined va_list.
- */
- shell =
- "if ( egrep \"__need___va_list\" $file ) > /dev/null 2>&1 ; then
- :
- else
- echo \"#define __need___va_list\"
- echo \"#include <stdarg.h>\"
- fi
-
- sed -e 's@ va_list @ __gnuc_va_list @' \\
- -e 's@ va_list)@ __gnuc_va_list)@' \\
- -e 's@ _BSD_VA_LIST_));@ __gnuc_va_list));@' \\
- -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \\
- -e 's@ va_list@ __va_list__@' \\
- -e 's@\\*va_list@*__va_list__@' \\
- -e 's@ __va_list)@ __gnuc_va_list)@' \\
- -e 's@GNUC_VA_LIST@GNUC_Va_LIST@' \\
- -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \\
- -e 's@VA_LIST@DUMMY_VA_LIST@' \\
- -e 's@_Va_LIST@_VA_LIST@'";
-};
-
-
-/*
- * Check for strict ansi compliance
- */
-#ifdef STRICT_ANSI
-fix = {
- hackname = strict_ansi;
- select = "__STDC__[ \t]*[=!]=[ \t]*[01]";
- sed = "s/__STDC__[ \t]*==[ \t]*0/!defined (__STRICT_ANSI__)/g";
- sed = "s/__STDC__[ \t]*!=[ \t]*0/defined (__STRICT_ANSI__)/g";
- sed = "s/__STDC__[ \t]*==[ \t]*1/defined (__STRICT_ANSI__)/g";
- sed = "s/__STDC__[ \t]*!=[ \t]*1/!defined (__STRICT_ANSI__)/g";
-};
-#endif
-
-/*
- * Fix bogus #ifdef on SunOS 4.1.
- */
-fix = {
- hackname = sun_bogus_ifdef;
- files = "hsfs/hsfs_spec.h";
- files = "hsfs/iso_spec.h";
- select = '#ifdef __i386__ || __vax__';
- sed = "s/\\#ifdef __i386__ || __vax__/\\#if __i386__ || __vax__/g";
-};
-
-
-/*
- * Fix bogus #ifdef on SunOS 4.1.
- */
-fix = {
- hackname = sun_bogus_ifdef_sun4c;
- files = "hsfs/hsnode.h";
- select = '#ifdef __i386__ || __sun4c__';
- sed = "s/\\#ifdef __i386__ || __sun4c__/\\#if __i386__ || __sun4c__/g";
-};
-
-
-/*
- * Fix the CAT macro in SunOS memvar.h.
- */
-fix = {
- hackname = sun_catmacro;
- files = pixrect/memvar.h;
- select = "^#define[ \t]+CAT(a,b)";
- sed = "/^#define[ \t]CAT(a,b)/ i\\\n"
- "#ifdef __STDC__ \\\n"
- "#define CAT(a,b) a##b\\\n"
- "#else\n";
-
- sed = "/^#define[ \t]CAT(a,b)/ a\\\n"
- "#endif\n";
-};
-
-
-/*
- * Fix return type of free and {c,m,re}alloc in <malloc.h> on SunOS 4.1.
- * Also fix return type of {m,re}alloc in <malloc.h> on sysV68
- */
-fix = {
- hackname = sun_malloc;
- files = malloc.h;
-
- sed = "s/typedef[ \t]char \\*\tmalloc_t/typedef void \\*\tmalloc_t/g";
- sed = "s/int[ \t][ \t]*free/void\tfree/g";
- sed = "s/char\\([ \t]*\\*[ \t]*malloc\\)/void\\1/g";
- sed = "s/char\\([ \t]*\\*[ \t]*realloc\\)/void\\1/g";
-};
-
-
-/*
- * Fix non-ANSI memcpy declaration that conflicts with gcc's builtin
- * declaration on Sun OS 4.x. We must only fix this on Sun OS 4.x, because
- * many other systems have similar text but correct versions of the file.
- * To ensure only Sun's is fixed, we grep for a likely unique string.
- * Fix also on sysV68 R3V7.1 (head/memory.h\t50.1\t )
- */
-fix = {
- hackname = sun_memcpy;
- files = memory.h;
- select = "/\\*\t@\\(#\\)"
- "(head/memory.h\t50.1\t "
- "|memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2\t)\\*/";
-
- sed = "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";
-
- sed = "1,$d";
-};
-
-
-/*
- * Check for yet more missing ';' in struct (in SunOS 4.0.x)
- */
-fix = {
- hackname = sun_rusers_semi;
- files = rpcsvc/rusers.h;
- select = "_cnt$";
- sed = "/^struct/,/^};/s/_cnt$/_cnt;/";
-};
-
-
-/*
- * signal.h on SunOS defines signal using (),
- * which causes trouble when compiling with g++ -pedantic.
- */
-fix = {
- hackname = sun_signal;
- files = sys/signal.h;
- files = signal.h;
- select = "^void\t" '\(\*signal\(\)\)\(\);';
-
- sed = "/^void\t" '(\*signal())();$/i' "\\\n"
- "#ifdef __cplusplus" "\\\n"
- "void\t(*signal(...))(...);" "\\\n"
- "#else" "\n";
-
- sed = "/^void\t" '(\*signal())();$/a' "\\\n"
- '#endif' "\n";
-};
-
-
-/*
- * On *some* SunOS-es, rpc/auth.h, rpc/clnt.h, rpc/svc.h, and
- * rpc/xdr.h need prototypes for its ops function pointers.
- */
-fix = {
- hackname = sun_auth_proto;
- files = rpc/auth.h;
- files = rpc/clnt.h;
- files = rpc/svc.h;
- files = rpc/xdr.h;
- mach = "*-sun-*";
- /*
- * Select those files containing '(*name)()' but *not*
- * containing '(*name)(junk)'. The change would be innocuous
- * but there is no point bothering if the fix is not needed.
- */
- select = '\(\*[a-z][a-z_]*\)\(\)';
- bypass = '\(\*[a-z][a-z_]*\)\(' "[ \t]*[a-zA-Z.].*" '\)';
- sed = 's'
- '/^\(.*(\*[a-z][a-z_]*)(\)' '\();.*\)'
- "/\\\n"
- "#ifdef __cplusplus\\\n"
- '\1...\2' "\\\n"
- "#else\\\n"
- '\1\2' "\\\n"
- "#endif"
- "/";
-};
-
-
-/*
- * This file on SunOS 4 has a very large macro. When the sed loop
- * tries pull it in, it overflows the pattern space size of the SunOS
- * sed (GNU sed does not have this problem). Since the file does not
- * require fixing, we remove it from the fixed directory.
- */
-fix = {
- hackname = sunos_large_macro;
- files = sundev/ipi_error.h;
- shell =
- "echo \"Removing incorrect fix to SunOS <sundev/ipi_error.h>\" >&2\n"
- "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\ncat > /dev/null";
-};
-
-
-/*
- * math.h on SunOS 4 puts the declaration of matherr before the definition
- * of struct exception, so the prototype (added by fixproto) causes havoc.
- */
-fix = {
- hackname = sunos_matherr_decl;
- files = math.h;
- /*
- * Find the first occurrance of 'struct exception'.
- * If it is the definition, then the file is okay.
- * If it is a usage, then the order is wrong and we
- * must insert a forward reference.
- */
- test = "\"`fgrep 'struct exception' $file | line`\""
- " != 'struct exception {'";
-
- sed = "/matherr/i\\\nstruct exception;\n";
-};
-
-
-/*
- * Correct the return type for strlen in strings.h in SunOS 4.
- */
-fix = {
- hackname = sunos_strlen;
- files = strings.h;
- sed = "s/int[ \t]*strlen();/__SIZE_TYPE__ strlen();/";
-};
-
-
-/*
- * Solaris math.h and floatingpoint.h define __P without protection,
- * which conflicts with the fixproto definition. The fixproto
- * definition and the Solaris definition are used the same way.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4__p;
- files = math.h;
- files = floatingpoint.h;
- select = "^#define[ \t]*__P";
- sed = "/^#define[ \t]*__P/i\\\n#ifndef __P\n";
- sed = "/^#define[ \t]*__P/a\\\n#endif\n";
-};
-#endif
-
-/*
- * Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
- * that is visible to any ANSI compiler using this include. Simply
- * delete the lines that #define some string functions to internal forms.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_disable_opt;
- files = string.h;
- select = '#define.*__std_hdr_';
- sed = '/#define.*__std_hdr_/d';
-};
-#endif
-
-/*
- * Conditionalize some of <sys/endian.h> on __GNUC__ and __GNUG__.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_endian;
- files = sys/endian.h;
- bypass = '__GNUC__';
-
- sed = "/#\tifdef\t__STDC__/i\\\n"
- "# if !defined (__GNUC__) && !defined (__GNUG__)\n";
-
- sed = "/#\t\tinclude\t<sys\\/byteorder.h>/s/\t\t/ /";
-
- sed = "/# include\t<sys\\/byteorder.h>/i\\\n"
- "# endif /* !defined (__GNUC__) && !defined (__GNUG__) */\n";
-};
-#endif
-
-/*
- * Remove useless extern keyword from struct forward declarations
- * in <sys/stream.h> and <sys/strsubr.h>
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_extern_struct;
- files = sys/stream.h;
- files = sys/strsubr.h;
- select = 'extern struct [a-z_]*;';
- sed = 's/extern struct \([a-z][a-z_]*\)/struct \1/';
-};
-#endif
-
-/*
- * Fix declarations of `ftw' and `nftw' in <ftw.h>. On some/most SVR4
- * systems the file <ftw.h> contains extern declarations of these
- * functions followed by explicitly `static' definitions of these
- * functions... and that's not allowed according to ANSI C. (Note
- * however that on Solaris, this header file glitch has been pre-fixed by
- * Sun. In the Solaris version of <ftw.h> there are no static
- * definitions of any function so we don't need to do any of this stuff
- * when on Solaris.
- */
-#ifdef SVR4
-#ifndef SOLARIS
-fix = {
- hackname = svr4_ftw;
- files = ftw.h;
- select = '^extern int ftw\(const';
-
- sed = '/^extern int ftw(const/i' "\\\n"
- "#if !defined(_STYPES)\\\n"
- "static\\\n"
- "#else\\\n"
- "extern\\\n"
- "#endif";
- sed = 's/extern \(int ftw(const.*\)$/\1/';
- sed = "/^extern int nftw/i\\\n"
- "#if defined(_STYPES)\\\n"
- "static\\\n"
- "#else\\\n"
- "extern\\\n"
- "#endif";
- sed = 's/extern \(int nftw.*\)$/\1/';
- sed = "/^extern int ftw(),/c\\\n"
- "#if !defined(_STYPES)\\\n"
- "static\\\n"
- "#else\\\n"
- "extern\\\n"
- "#endif\\\n"
- " int ftw();\\\n"
- "#if defined(_STYPES)\\\n"
- "static\\\n"
- "#else\\\n"
- "extern\\\n"
- "#endif\\\n"
- " int nftw();";
-};
-#endif
-#endif
-
-
-/*
- * Fix broken decl of getcwd present on some svr4 systems.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_getcwd;
- files = stdlib.h;
- files = unistd.h;
- select = 'getcwd\(char \*, int\)';
-
- sed = 's/getcwd(char \*, int)/getcwd(char *, size_t)/';
-};
-#endif
-
-/*
- * set ifdef _KERNEL
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_kernel;
- files = fs/rfs/rf_cache.h;
- files = sys/erec.h;
- files = sys/err.h;
- files = sys/char.h;
- files = sys/getpages.h;
- files = sys/map.h;
- files = sys/cmn_err.h;
- files = sys/kdebugger.h;
- bypass = '_KERNEL';
- sed = "1i\\\n#ifdef _KERNEL";
- sed = "$a\\\n#endif /* _KERNEL */";
-};
-#endif
-
-/*
- * Delete any #defines of `__i386' which may be present in <ieeefp.h>. They
- * tend to conflict with the compiler's own definition of this symbol. (We
- * will use the compiler's definition.)
- * Likewise __sparc, for Solaris, and __i860, and a few others
- * (guessing it is necessary for all of them).
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_mach_defines;
- files = ieeefp.h;
- select = "#define[ \t]*__(i386|i860|mips|sparc|m88k|m68k)[ \t]";
- sed = "/#define[ \t]*__\\(i386|i860|mips|sparc|m88k|m68k\\)[ \t]/d";
-};
-#endif
-
-/*
- * Fix declarations of `makedev', `major', and `minor' in <sys/mkdev.h>.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_mkdev;
- files = sys/mkdev.h;
-
- sed = "/^dev_t makedev(const/c\\\n"
- "static dev_t makedev(const major_t, const minor_t);";
-
- sed = "/^dev_t makedev()/c\\\n"
- "static dev_t makedev();";
-
- sed = "/^major_t major(const/c\\\n"
- "static major_t major(const dev_t);";
-
- sed = "/^major_t major()/c\\\n"
- "static major_t major();";
-
- sed = "/^minor_t minor(const/c\\\n"
- "static minor_t minor(const dev_t);";
-
- sed = "/^minor_t minor()/c\\\n"
- "static minor_t minor();";
-};
-#endif
-
-/*
- * Fix reference to NC_NPI_RAW in <sys/netcspace.h>.
- * Also fix types of array initializers.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_netcspace;
- files = sys/netcspace.h;
- select = 'NC_NPI_RAW';
- sed = 's/NC_NPI_RAW/NC_TPI_RAW/g';
- sed = 's/NC_/(unsigned long) NC_/';
-};
-#endif
-
-/*
- * Fix reference to NMSZ in <sys/adv.h>.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_nmsz;
- files = sys/adv.h;
- select = '\[NMSZ\]';
- sed = 's/\[NMSZ\]/\[RFS_NMSZ\]/g';
-};
-#endif
-
-/*
- * Completely replace <sys/varargs.h> with a file that includes gcc's
- * stdarg.h or varargs.h files as appropriate.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_no_varargs;
- files = sys/varargs.h;
- shell = "cat > /dev/null\n"
- "cat << _EOF_\n"
- "/* This file was generated by fixincludes. */\n"
- "#ifndef _SYS_VARARGS_H\n"
- "#define _SYS_VARARGS_H\n\n"
-
- "#ifdef __STDC__\n"
- "#include <stdarg.h>\n"
- "#else\n"
- "#include <varargs.h>\n"
- "#endif\n\n"
-
- "#endif /* _SYS_VARARGS_H */\n"
- "_EOF_";
-};
-#endif
-
-/*
- * Fix broken decl of profil present on some svr4 systems.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_profil;
- files = stdlib.h;
- files = unistd.h;
-
- sed = 's/profil(unsigned short \*, unsigned int, '
- 'unsigned int, unsigned int)'
- '/profil(unsigned short *, size_t, int, unsigned)/';
-};
-#endif
-
-/*
- * Convert functions to prototype form, and fix arg names in <sys/stat.h>.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_proto_form;
- files = sys/stat.h;
- select = 'const extern';
-
- sed = "/^stat([ \t]*[^c]/ {\nN\nN\n"
- "s/(.*)\\n/( /\n"
- "s/;\\n/, /\n"
- "s/;$/)/\n" "}";
-
- sed = "/^lstat([ \t]*[^c]/ {\nN\nN\n"
- "s/(.*)\\n/( /\n"
- "s/;\\n/, /\n"
- "s/;$/)/\n" "}";
-
- sed = "/^fstat([ \t]*[^i]/ {\nN\nN\n"
- "s/(.*)\\n/( /\n"
- "s/;\\n/, /\n"
- "s/;$/)/\n" "}";
-
- sed = "/^mknod([ \t]*[^c]/{\nN\nN\nN\n"
- "s/(.*)\\n/( /\n"
- "s/;\\n/, /g\n"
- "s/;$/)/\n" "}";
-
- sed = "1,$s/\\([^A-Za-z]\\)path\\([^A-Za-z]\\)/\\1__path\\2/g";
- sed = "1,$s/\\([^A-Za-z]\\)buf\\([^A-Za-z]\\)/\\1__buf\\2/g";
- sed = "1,$s/\\([^A-Za-z]\\)fd\\([^A-Za-z]\\)/\\1__fd\\2/g";
- sed = "1,$s/ret\\([^u]\\)/__ret\\1/g";
- sed = "1,$s/\\([^_]\\)mode\\([^_]\\)/\\1__mode\\2/g";
- sed = "1,$s/\\([^_r]\\)dev\\([^_]\\)/\\1__dev\\2/g";
-};
-#endif
-
-/*
- * Add a prototyped declaration of mmap to <sys/mman.h>.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_proto_mmap;
- files = sys/mman.h;
- select = '^extern caddr_t mmap();$';
- sed = '/^extern caddr_t mmap();$/c' "\\\n"
- "#ifdef __STDC__\\\n"
- "extern caddr_t mmap (caddr_t, size_t, int, int, int, off_t);\\\n"
- "#else /* !defined(__STDC__) */\\\n"
- "extern caddr_t mmap ();\\\n"
- "#endif /* !defined(__STDC__) */\\\n";
-};
-#endif
-
-/*
- * Add a #define of _SIGACTION_ into <sys/signal.h>.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_sigaction;
- files = sys/signal.h;
- sed = "/^struct sigaction {/i\\\n"
- "#define _SIGACTION_";
- sed = 's/(void *(\*)())/(void (*)(int))/';
-};
-#endif
-
-/*
- * Put storage class at start of decl, to avoid warning.
- */
-#ifdef SVR4
-fix = {
- hackname = svr4_storage_class;
- files = rpc/types.h;
- select = 'const extern';
- sed = 's/const extern/extern const/g';
-};
-#endif
-
-/*
- * Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
- * in string.h on sysV68
- * Correct the return type for strlen in string.h on Lynx.
- * Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0.
- * Add missing const for strdup on OSF/1 V3.0.
- * On sysV88 layout is slightly different.
- */
-fix = {
- hackname = systypes;
- files = "sys/types.h";
- files = "stdlib.h";
- files = "sys/stdtypes.h";
- files = "stddef.h";
- files = "memory.h";
- files = "unistd.h";
- select = "typedef[ \t]+[a-z_][ \ta-z_]*[ \t]"
- "(size|ptrdiff|wchar)_t";
-
- sed = "/^[ \t]*\\*[ \t]*typedef unsigned int size_t;/N";
-
- sed = "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/";
-
- sed = "/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";
-
- sed = "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]size_t/"
- "typedef __SIZE_TYPE__ size_t/";
-
- sed = "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/i\\\n"
- "#ifndef __PTRDIFF_TYPE__\\\n"
- "#define __PTRDIFF_TYPE__ long int\\\n"
- "#endif\n";
-
- sed = "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]ptrdiff_t/"
- "typedef __PTRDIFF_TYPE__ ptrdiff_t/";
-
- sed = "/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";
-
- sed = "/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/a\\\n"
- "#endif\n";
-
- sed = "s/typedef[ \t][ \t]*[a-z_][ \ta-z_]*[ \t]wchar_t/"
- "typedef __WCHAR_TYPE__ wchar_t/";
-};
-
-
-/*
- * Fix return type of exit and abort in <stdlib.h> on SunOS 4.1.
- * Also wrap protection around size_t for m88k-sysv3 systems.
- * We use a funny name to ensure it follows 'systypes' fix.
- */
-fix = {
- hackname = systypes_for_aix;
- files = sys/types.h;
- select = "typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t";
- bypass = "_GCC_SIZE_T";
-
- sed = "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/i\\\n"
- "#ifndef _GCC_SIZE_T\\\n"
- "#define _GCC_SIZE_T\n";
-
- sed = "/typedef[ \t][ \t]*[A-Za-z_][ \tA-Za-z_]*[ \t]size_t/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * if the #if says _cplusplus, not the double underscore __cplusplus
- * that it should be
- */
-fix = {
- hackname = sysv68_string;
- files = string.h;
-
- sed = "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/";
- sed = "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/";
- sed = "s/strdup(char \\*s1);/strdup(const char *s1);/";
- sed = "/^extern char$/N";
- sed = "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/";
- sed = "/^\tstrncmp(),$/N";
- sed = "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n"
- "extern unsigned int\\\n\\2/";
- sed = "/^extern int$/N";
- sed = "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/";
-};
-
-
-/*
- * Replace definitions of size_t, ptrdiff_t and wchar_t
- * Install the proper definition of the three standard types
- * in header files that they come from.
- */
-fix = {
- hackname = sysz_stdlib_for_sun;
- mach = "*-sun-*";
- mach = "m88k-*-sysv3*";
- files = stdlib.h;
-
- sed = "s/int\tabort/void\tabort/g";
- sed = "s/int\tfree/void\tfree/g";
- sed = "s/char[ \t]*\\*[ \t]*calloc/void \\*\tcalloc/g";
- sed = "s/char[ \t]*\\*[ \t]*malloc/void \\*\tmalloc/g";
- sed = "s/char[ \t]*\\*[ \t]*realloc/void \\*\trealloc/g";
- sed = "s/int[ \t][ \t]*exit/void\texit/g";
-
- sed = "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/i\\\n"
- "#ifndef _GCC_SIZE_T\\\n"
- "#define _GCC_SIZE_T\n";
-
- sed = "/typedef[ \ta-zA-Z_]*[ \t]size_t[ \t]*;/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * Fix this Sun file to avoid interfering with stddef.h.
- * We use a funny name to ensure it follows 'systypes' fix.
- */
-fix = {
- hackname = sysz_stdtypes_for_sun;
- files = sys/stdtypes.h;
- sed = "/[\t ]size_t.*;/i\\\n"
- "#ifndef _GCC_SIZE_T\\\n"
- "#define _GCC_SIZE_T\n";
-
- sed = "/[\t ]size_t.*;/a\\\n"
- "#endif\n";
-
- sed = "/[\t ]ptrdiff_t.*;/i\\\n"
- "#ifndef _GCC_PTRDIFF_T\\\n"
- "#define _GCC_PTRDIFF_T\n";
-
- sed = "/[\t ]ptrdiff_t.*;/a\\\n"
- "#endif\n";
-
- sed = "/[\t ]wchar_t.*;/i\\\n"
- "#ifndef _GCC_WCHAR_T\\\n"
- "#define _GCC_WCHAR_T\n";
-
- sed = "/[\t ]wchar_t.*;/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * Fix this file to avoid interfering with stddef.h,
- * but don't mistakenly match ssize_t present in AIX for the ps/2,
- * or typedefs which use (but do not set) size_t.
- */
-fix = {
- hackname = tinfo_cplusplus;
- files = tinfo.h;
- sed = "s/[ \t]_cplusplus/ __cplusplus/";
-};
-
-
-/*
- * Cancel out ansi_compat.h on Ultrix. Replace it with empty file.
- */
-fix = {
- hackname = ultrix_ansi_compat;
- files = ansi_compat.h;
- select = ULTRIX;
- sed = "1i\\\n/* This file intentionally left blank. */\n";
- sed = "1,$d";
-};
-
-
-/*
- * parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R.
- * also get rid of bogus inline definitions in HP-UX 8.0
- */
-fix = {
- hackname = ultrix_atof_param;
- files = math.h;
-
- sed = "s@atof(\\([ \t]*char[ \t]*\\*[^)]*\\))@atof(const \\1)@";
- sed = "s@inline int abs(int [a-z][a-z]*) {.*}@extern \"C\" int abs(int);@";
- sed = "s@inline double abs(double [a-z][a-z]*) {.*}@@";
- sed = "s@inline int sqr(int [a-z][a-z]*) {.*}@@";
- sed = "s@inline double sqr(double [a-z][a-z]*) {.*}@@";
-};
-
-
-/*
- * parameters not const on DECstation Ultrix V4.0 and OSF/1.
- */
-fix = {
- hackname = ultrix_const;
- files = stdio.h;
-
- sed = 's@perror( char \*__s );@perror( const char *__s );@';
- sed = 's@fputs( char \*__s,@fputs( const char *__s,@';
- sed = 's@fopen( char \*__filename, char \*__type );@'
- 'fopen( const char *__filename, const char *__type );@';
- sed = 's@fwrite( void \*__ptr,@fwrite( const void *__ptr,@';
- sed = 's@fscanf( FILE \*__stream, char \*__format,@'
- 'fscanf( FILE *__stream, const char *__format,@';
- sed = 's@scanf( char \*__format,@scanf( const char *__format,@';
- sed = 's@sscanf( char \*__s, char \*__format,@'
- 'sscanf( const char *__s, const char *__format,@';
- sed = 's@popen(char \*, char \*);@popen(const char *, const char *);@';
- sed = 's@tempnam(char\*,char\*);@tempnam(const char*,const char*);@';
-};
-
-
-/*
- * Check for bad #ifdef line (in Ultrix 4.1)
- */
-fix = {
- hackname = ultrix_ifdef;
- select = "#ifdef KERNEL";
- files = sys/file.h;
- sed = "s/#ifdef KERNEL/#if defined(KERNEL)/";
-};
-
-
-/*
- * Avoid nested comments on Ultrix 4.3.
- */
-fix = {
- hackname = ultrix_nested_cmnt;
- files = rpc/svc.h;
- sed = "s@^\\( \\*\tint protocol; \\)/\\*@\\1*/ /*@";
-};
-
-
-/*
- * Check for superfluous `static' (in Ultrix 4.2)
- * On Ultrix 4.3, includes of other files (r3_cpu.h,r4_cpu.h) is broken.
- */
-fix = {
- hackname = ultrix_static;
- files = machine/cpu.h;
- select = '#include "r[34]_cpu';
- sed = "s/^static struct tlb_pid_state/struct tlb_pid_state/";
- sed = 's/^#include "r3_cpu\.h"$/#include <machine\/r3_cpu\.h>/';
- sed = 's/^#include "r4_cpu\.h"$/#include <machine\/r4_cpu\.h>/';
-};
-
-
-/*
- * Fix multiple defines for NULL
- */
-fix = {
- hackname = undefine_null;
- select = "^#[ \t]*define[ \t]*[ \t]NULL[ \t]";
- bypass = "#[ \t]*(ifn|un)def[ \t]*[ \t]NULL($|[ \t])";
- sed = "/^#[ \t]*define[ \t][ \t]*NULL[ \t]/i\\\n"
- "#undef NULL\n";
-};
-
-
-/*
- * Fix definitions of macros used by va-i960.h in VxWorks header file.
- */
-fix = {
- hackname = va_i960_macro;
- files = arch/i960/archI960.h;
- select = "__(vsiz|vali|vpad|alignof__)";
- sed = "s/__vsiz/__vxvsiz/";
- sed = "s/__vali/__vxvali/";
- sed = "s/__vpad/__vxvpad/";
- sed = "s/__alignof__/__vxalignof__/";
-};
-
-
-/*
- * AIX headers define NULL to be cast to a void pointer,
- * which is illegal in ANSI C++.
- */
-fix = {
- hackname = void_null;
- files = curses.h;
- files = dbm.h;
- files = locale.h;
- files = stdio.h;
- files = stdlib.h;
- files = string.h;
- files = time.h;
- files = unistd.h;
- files = sys/dir.h;
- files = sys/param.h;
- files = sys/types.h;
- select = "#[ \t]*define[ \t][ \t]*NULL[ \t].*void";
- sed = "s/^#[ \t]*define[ \t]*NULL[ \t]*((void[ \t]*\\*)0)"
- "/#define NULL 0/";
-};
-
-
-/*
- * Make VxWorks header which is almost gcc ready fully gcc ready.
- */
-fix = {
- hackname = vxworks_gcc_problem;
- files = types/vxTypesBase.h;
- select = "__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__";
-
- sed = "s/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/"
- "#if 1/";
-
- sed = "/[ \t]size_t/i\\\n"
- "#ifndef _GCC_SIZE_T\\\n"
- "#define _GCC_SIZE_T\n";
-
- sed = "/[ \t]size_t/a\\\n"
- "#endif\n";
-
- sed = "/[ \t]ptrdiff_t/i\\\n"
- "#ifndef _GCC_PTRDIFF_T\\\n"
- "#define _GCC_PTRDIFF_T\n";
-
- sed = "/[ \t]ptrdiff_t/a\\\n"
- "#endif\n";
-
- sed = "/[ \t]wchar_t/i\\\n"
- "#ifndef _GCC_WCHAR_T\\\n"
- "#define _GCC_WCHAR_T\n";
-
- sed = "/[ \t]wchar_t/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * Fix VxWorks <time.h> to not require including <vxTypes.h>.
- */
-fix = {
- hackname = vxworks_needs_vxtypes;
- files = time.h;
- select = "uint_t[ \t][ \t]*_clocks_per_sec";
- sed = "s/uint_t/unsigned int/";
-};
-
-
-/*
- * Fix VxWorks <sys/stat.h> to not require including <vxWorks.h>.
- */
-fix = {
- hackname = vxworks_needs_vxworks;
- files = sys/stat.h;
- test = "-r types/vxTypesOld.h";
- test = "-n \"`fgrep '#include' $file`\"";
- test = "-n \"`fgrep ULONG $file`\"";
- select = "#[ \t]define[ \t][ \t]*__INCstath";
-
- sed = "/#[ \t]define[ \t][ \t]*__INCstath/a\\\n"
- "#include <types/vxTypesOld.h>\n";
-};
-
-
-/*
- * Another bad dependency in VxWorks 5.2 <time.h>.
- */
-fix = {
- hackname = vxworks_time;
- files = time.h;
- select = "VOIDFUNCPTR";
- test = "-r vxWorks.h";
- sed = "/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";
-
- sed = "s/VOIDFUNCPTR/__gcc_VOIDFUNCPTR/g";
-};
-
-
-/*
- * There are several name conflicts with C++ reserved words in X11 header
- * files. These are fixed in some versions, so don't do the fixes if
- * we find __cplusplus in the file. These were found on the RS/6000.
- */
-fix = {
- hackname = x11_class;
- files = X11/ShellP.h;
- bypass = __cplusplus;
- sed = "/char \\*class;/i\\\n"
- "#ifdef __cplusplus\\\n"
- "\tchar *c_class;\\\n"
- "#else\n";
- sed = "/char \\*class;/a\\\n"
- "#endif\n";
-};
-
-
-/*
- * class in Xm/BaseClassI.h
- */
-fix = {
- hackname = x11_class_usage;
- files = Xm/BaseClassI.h;
- bypass = "__cplusplus";
- sed = "s/ class[)]/ c_class)/g";
-};
-
-
-/*
- * new in Xm/Traversal.h
- */
-fix = {
- hackname = x11_new;
- files = Xm/Traversal.h;
- bypass = __cplusplus;
-
- sed = "/Widget\told, new;/i\\\n"
- "#ifdef __cplusplus\\\n"
- "\tWidget\told, c_new;\\\n"
- "#else\n";
-
- sed = "/Widget\told, new;/a\\\n"
- "#endif\n";
-
- sed = "s/Widget new,/Widget c_new,/g";
-};
-
-
-/*
- * Incorrect sprintf declaration in X11/Xmu.h
- */
-fix = {
- hackname = x11_sprintf;
- files = X11*/Xmu.h;
- sed = "s,^extern char \\*\tsprintf();$,#ifndef __STDC__\\\n"
- "extern char *\tsprintf();\\\n"
- "#endif /* !defined __STDC__ */,";
-};
-
-
-/*
- * Purge some HP-UX 11 files that are only borken after they are "fixed".
- */
-fix = {
- hackname = zzz_ki_iface;
- files = sys/ki_iface.h;
- select = 'These definitions are for HP Internal developers';
- shell =
- "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
- "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\ncat > /dev/null";
-};
-
-
-/*
- * Purge some HP-UX 11 files that are only borken after they are "fixed".
- */
-fix = {
- hackname = zzz_ki;
- files = sys/ki.h;
- select = '11.00 HP-UX LP64';
- shell =
- "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
- "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\ncat > /dev/null";
-};
-
-
-/*
- * Purge some HP-UX 11 files that are only borken after they are "fixed".
- */
-fix = {
- hackname = zzz_ki_calls;
- files = sys/ki_calls.h;
- select = 'KI_MAX_PROCS is an arbitrary number';
- shell =
- "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
- "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\ncat > /dev/null";
-};
-
-
-/*
- * Purge some HP-UX 11 files that are only borken after they are "fixed".
- */
-fix = {
- hackname = zzz_ki_defs;
- files = sys/ki_defs.h;
- select = 'Kernel Instrumentation Definitions';
- shell =
- "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
- "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\ncat > /dev/null";
-};
-
-
-/*
- * Purge some HP-UX 11 files that are only borken after they are "fixed".
- */
-fix = {
- hackname = zzz_time;
- files = sys/time.h;
- select = 'For CASPEC, look in';
- shell =
- "echo \"Removing incorrect fix to HP-UX <$file>\" >&2\n"
- "rm -f ${DESTDIR}/$file ${DESTDIR}/$file.\ncat > /dev/null";
-};
-
-
-/*EOF*/
diff --git a/gcc/fixinc/inclhack.sh b/gcc/fixinc/inclhack.sh
deleted file mode 100755
index 9e993ea..0000000
--- a/gcc/fixinc/inclhack.sh
+++ /dev/null
@@ -1,3086 +0,0 @@
-#!/bin/sh
-#
-# DO NOT EDIT THIS FILE (inclhack.sh)
-#
-# It has been autogen-ed Friday October 16, 1998 at 07:29:49 AM PDT
-# From the definitions inclhack.def
-# and the template file inclhack.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 104 fixup scripts.
-#
-# See README-fixinc for more information.
-#
-# fixincludes is free software.
-#
-# You may redistribute it and/or modify it under the terms of the
-# GNU General Public License, as published by the Free Software
-# Foundation; either version 2, or (at your option) any later version.
-#
-# fixincludes is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with fixincludes. See the file "COPYING". If not,
-# write to: The Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Directory in which to store the results.
-# Fail if no arg to specify a directory for the output.
-if [ "x$1" = "x" ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-LIB=${1}
-shift
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || {
- echo fixincludes: output dir '`'$LIB"' cannot be created"
- exit 1
- }
-else
- ( \cd $LIB && touch DONE && rm DONE ) || {
- echo fixincludes: output dir '`'$LIB"' is an invalid directory"
- exit 1
- }
-fi
-
-# Define what target system we're fixing.
-#
-if test -r ./Makefile; then
- target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`"
-fi
-
-# If not from the Makefile, then try config.guess
-#
-if test -z "${target_canonical}" ; then
- if test -x ./config.guess ; then
- target_canonical="`config.guess`" ; fi
- test -z "${target_canonical}" && target_canonical=unknown
-fi
-export target_canonical
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Define PWDCMD as a command to use to get the working dir
-# in the form that we want.
-PWDCMD=pwd
-
-case "`$PWDCMD`" in
-//*)
- # On an Apollo, discard everything before `/usr'.
- PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'"
- ;;
-esac
-
-# Original directory.
-ORIGDIR=`${PWDCMD}`
-
-# Make LIB absolute only if needed to avoid problems with the amd.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD}`
- ;;
-esac
-
-echo Fixing headers into ${LIB} for ${target_canonical} target
-
-# Determine whether this system has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
- rm -f /tmp/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Search each input directory for broken header files.
-# This loop ends near the end of the file.
-#
-if test $# -eq 0
-then
- INPUTLIST="/usr/include"
-else
- INPUTLIST="$@"
-fi
-
-for INPUT in ${INPUTLIST} ; do
-
-cd ${ORIGDIR}
-
-cd ${INPUT} || {
- echo 'fixincludes: input dir `'$INPUT"' is an invalid directory"
- exit 1
-}
-
-#
-# # # # # # # # # # # # # # # # # # # # #
-#
-echo Finding directories and links to directories
-
-# Find all directories and all symlinks that point to directories.
-# Put the list in $files.
-# Each time we find a symlink, add it to newdirs
-# so that we do another find within the dir the link points to.
-# Note that $files may have duplicates in it;
-# later parts of this file are supposed to ignore them.
-dirs="."
-levels=2
-while [ -n "$dirs" ] && [ $levels -gt 0 ]
-do
- levels=`expr $levels - 1`
- newdirs=
- for d in $dirs
- do
- echo " Searching $INPUT/$d"
-
- # Find all directories under $d, relative to $d, excluding $d itself.
- # (The /. is needed after $d in case $d is a symlink.)
- files="$files `find $d/. -type d -print | \
- sed -e '/\/\.$/d' -e 's@/./@/@g'`"
- # Find all links to directories.
- # Using `-exec test -d' in find fails on some systems,
- # and trying to run test via sh fails on others,
- # so this is the simplest alternative left.
- # First find all the links, then test each one.
- theselinks=
- $LINKS && \
- theselinks=`find $d/. -type l -print | sed -e 's@/./@/@g'`
- for d1 in $theselinks --dummy--
- do
- # If the link points to a directory,
- # add that dir to $newdirs
- if [ -d $d1 ]
- then
- files="$files $d1"
- if [ "`ls -ld $d1 | sed -n 's/.*-> //p'`" != "." ]
- then
- newdirs="$newdirs $d1"
- fi
- fi
- done
- done
-
- dirs="$newdirs"
-done
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-dirs=
-echo "All directories (including links to directories):"
-echo $files
-
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-mkdir $LIB/root
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`${PWDCMD}`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`${PWDCMD}`
- # Canonicalize ${INPUT} now to minimize the time an
- # automounter has to change the result of ${PWDCMD}.
- cinput=`cd ${INPUT}; ${PWDCMD}`
- # If a link points to ., make a similar link to .
- if [ $x = ${cinput} ]; then
- echo $file '->' . ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s . ${LIB}/$file > /dev/null 2>&1
- # If link leads back into ${INPUT},
- # make a similar link here.
- elif expr $x : "${cinput}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${cinput}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to a dir $target outside ${INPUT},
- # repoint the link at ${INPUT}/root$target
- # and process $target into ${INPUT}/root$target
- # treat this directory as if it actually contained the files.
- echo $file '->' root$x ': Making link'
- if [ -d $LIB/root$x ]
- then true
- else
- dirname=root$x/
- dirmade=.
- cd $LIB
- while [ x$dirname != x ]; do
- component=`echo $dirname | sed -e 's|/.*$||'`
- mkdir $component >/dev/null 2>&1
- cd $component
- dirmade=$dirmade/$component
- dirname=`echo $dirname | sed -e 's|[^/]*/||'`
- done
- fi
- # Duplicate directory structure created in ${LIB}/$file in new
- # root area.
- for file2 in $files; do
- case $file2 in
- $file/*)
- dupdir=${LIB}/root$x/`echo $file2 | sed -n "s|^${file}/||p"`
- echo "Duplicating ${file}'s ${dupdir}"
- if [ -d ${dupdir} ]
- then true
- else
- mkdir ${dupdir}
- fi
- ;;
- *)
- ;;
- esac
- done
- # Get the path from ${LIB} to $file, accounting for symlinks.
- parent=`echo "$file" | sed -e 's@/[^/]*$@@'`
- libabs=`cd ${LIB}; ${PWDCMD}`
- file2=`cd ${LIB}; cd $parent; ${PWDCMD} | sed -e "s@^${libabs}@@"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file2" | sed -e 's@/[^/]*@../@g'`
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s ${dots}root$x ${LIB}/$file > /dev/null 2>&1
- treetops="$treetops $x ${LIB}/root$x"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-required=
-set x $treetops
-shift
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- #
- SRCDIR=`cd ${INPUT} ; cd $1 ; ${PWDCMD}`
- export SRCDIR
- shift
-
- DESTDIR=`cd $1;${PWDCMD}`
- export DESTDIR
- shift
-
- # The same dir can appear more than once in treetops.
- # There's no need to scan it more than once.
- #
- if [ -f ${DESTDIR}/DONE ]
- then continue ; fi
-
- touch ${DESTDIR}/DONE
- echo Fixing directory ${SRCDIR} into ${DESTDIR}
-
- # Check .h files which are symlinks as well as those which are files.
- # A link to a header file will not be processed by anything but this.
- #
- cd ${SRCDIR}
-
- if $LINKS; then
- files=`find . -name '*.h' \( -type f -o -type l \) -print`
- else
- files=`find . -name '*.h' -type f -print`
- fi
- echo Checking header files
- for file in $files; do
-
- if ( test ! -r $file -o \
- -n "`fgrep 'This file is part of the GNU C Library' $file`" )
- then continue ; fi
-
- fixlist=""
-
- #
- # Fix 1: Aix_Syswait
- #
- case "$file" in ./sys/wait.h )
- if ( test -n "`egrep 'bos325,' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- aix_syswait"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^extern pid_t wait3();$/i\
-struct rusage;
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 2: Aix_Volatile
- #
- case "$file" in ./sys/signal.h )
- if ( test -n "`egrep 'typedef volatile int sig_atomic_t' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- aix_volatile"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/typedef volatile int sig_atomic_t/typedef int sig_atomic_t/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 3: Alpha_Getopt
- #
- case "$file" in ./stdio.h | \
- ./stdlib.h )
- if ( test -n "`egrep 'getopt\\(int, char \\*\\[' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- alpha_getopt"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/getopt(int, char \*\[\],[ ]*char \*)/getopt(int, char *const[], const char *)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 4: Alpha_Parens
- #
- case "$file" in ./sym.h )
- if ( test -n "`egrep '#ifndef\\(__mips64\\)' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- alpha_parens"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/#ifndef(__mips64)/#ifndef __mips64/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 5: Alpha_Sbrk
- #
- case "$file" in ./unistd.h )
- if ( test -n "`egrep 'char[ ]*\\*[ ]*sbrk[ ]*\\(' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- alpha_sbrk"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/char\([ ]*\*[ ]*sbrk[ ]*(\)/void\1/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 6: Arm_Norcroft_Hint
- #
- case "$file" in ./X11/Intrinsic.h )
- fixlist="${fixlist}
- arm_norcroft_hint"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/___type p_type/p_type/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 7: Arm_Wchar
- #
- case "$file" in ./stdlib.h )
- if ( test -n "`egrep '#[ ]*define[ ]*__wchar_t' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- arm_wchar"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/\(#[ ]*ifndef[ ]*\)__wchar_t/\1_GCC_WCHAR_T/' \
- -e 's/\(#[ ]*define[ ]*\)__wchar_t/\1_GCC_WCHAR_T/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 8: Aux_Asm
- #
- case "$file" in ./sys/param.h )
- if ( test -n "`egrep '#ifndef NOINLINE' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- aux_asm"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's|#ifndef NOINLINE|#if !defined(NOINLINE) \&\& !defined(__GNUC__)|' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 9: Avoid_Bool
- #
- case "$file" in ./curses.h | \
- ./term.h | \
- ./tinfo.h )
- fixlist="${fixlist}
- avoid_bool"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^#[ ]*define[ ][ ]*bool[ ][ ]*char[ ]*$/i\
-#ifndef __cplusplus
-' \
- -e '/^#[ ]*define[ ][ ]*bool[ ][ ]*char[ ]*$/a\
-#endif
-' \
- -e '/^typedef[ ][ ]*char[ ][ ]*bool[ ]*;/i\
-#ifndef __cplusplus
-' \
- -e '/^typedef[ ][ ]*char[ ][ ]*bool[ ]*;/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 10: Bad_Malloc_Decl
- #
- case "$file" in ./rpc/types.h )
- if ( test -z "`egrep '\"C\"' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- bad_malloc_decl"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '1i\
-#ifdef __cplusplus\
-extern "C" {\
-#endif\
-
-' \
- -e '$a\
-#ifdef __cplusplus\
-}\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 11: Bad_Struct_Term
- #
- case "$file" in ./curses.h )
- if ( test -n "`egrep '^[ ]*typedef[ ]+struct[ ]+term[ ]*;' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- bad_struct_term"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^[ ]*typedef[ ][ ]*\(struct[ ][ ]*term[ ]*;[ ]*\)$/\1/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 12: Badquote
- #
- case "$file" in ./sundev/vuid_event.h )
- fixlist="${fixlist}
- badquote"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/doesn'\''t/does not/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 13: Bad_Lval
- #
- case "$file" in ./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 )
- if ( test -n "`egrep '^[ ]*#[ ]*pragma[ ]extern_prefix' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- bad_lval"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^[ ]*#[ ]*define[ ]*\([^(]*\)\(([^)]*)\)[ ]*\(_.\)\1\2[ ]*$/#define \1 \3\1/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 14: Broken_Assert_Stdio
- #
- case "$file" in ./assert.h )
- if ( test -n "`egrep 'stderr' $file`" -a \
- -z "`egrep 'include.*stdio.h' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- broken_assert_stdio"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '1i\
-#include <stdio.h>
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 15: Broken_Assert_Stdlib
- #
- case "$file" in ./assert.h )
- if ( test -n "`egrep 'exit *\\(|abort *\\(' $file`" -a \
- -z "`egrep 'include.*stdlib.h' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- broken_assert_stdlib"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '1i\
-#ifdef __cplusplus\
-#include <stdlib.h>\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 16: Bsd43_Io_Macros
- #
- if ( test -n "`egrep 'BSD43__IO' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- bsd43_io_macros"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/[ ]BSD43__IO[A-Z]*[ ]*(/s/(\(.\),/('\''\1'\'',/' \
- -e '/#[ ]*define[ ]*[ ]BSD43__IO/s/'\''\([cgx]\)'\''/\1/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 17: No_Double_Slash
- #
- if ( test -n "`egrep '//[^*]' $file`" -a \
- '(' -z "`echo ${file}|egrep '++$|\.hh$|\.H$'`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- no_double_slash"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/\/\/[^*]/s|//.*$||g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 18: Irix_Bogus_Cxx_Cmnt
- #
- case "$file" in ./elf_abi.h | \
- ./elf.h )
- fixlist="${fixlist}
- irix_bogus_cxx_cmnt"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@"/\*"\*/@"//"@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 19: Ecd_Cursor
- #
- case "$file" in ./sunwindow/win_lock.h | \
- ./sunwindow/win_cursor.h )
- fixlist="${fixlist}
- ecd_cursor"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/ecd.cursor/ecd_cursor/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 20: Else_Label
- #
- if ( test -n "`egrep '^[ ]*#[ ]*else[ ]+[!-.0-~]' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- else_label"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e ':loop
-/\\$/N
-s/\\$/\\+++fixinc_eol+++/
-/\\$/b loop
-s/\\+++fixinc_eol+++/\\/g
-s%^\([ ]*#[ ]*else\)[ ]*/[^*].*%\1%
-s%^\([ ]*#[ ]*else\)[ ]*[^/ ].*%\1%' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 21: Endif_Label
- #
- if ( test -n "`egrep '^[ ]*#[ ]*endif[ ]+[!-.0-z{|}~]' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- endif_label"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e ':loop
-/\\$/N
-s/\\$/\\+++fixinc_eol+++/
-/\\$/b loop
-s/\\+++fixinc_eol+++/\\/g
-s%^\([ ]*#[ ]*endif\)[ ]*/[^*].*%\1%
-s%^\([ ]*#[ ]*endif\)[ ]*\*[^/].*%\1%
-s%^\([ ]*#[ ]*endif\)[ ]*[^/* ].*%\1%' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 22: Hp_Inline
- #
- case "$file" in ./sys/spinlock.h )
- if ( test -n "`egrep 'include.*\"\\.\\./machine/' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- hp_inline"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's,"../machine/inline.h",<machine/inline.h>,' \
- -e 's,"../machine/psl.h",<machine/psl.h>,' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 23: Hp_Sysfile
- #
- case "$file" in ./sys/file.h )
- if ( test -n "`egrep 'HPUX_SOURCE' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- hp_sysfile"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/(\.\.\.)/(struct file * ...)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 24: Hpux_Cxx_Unready
- #
- case "$file" in ./sys/mman.h )
- if ( test -z "`egrep '\"C\"|__BEGIN_DECLS' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- hpux_cxx_unready"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '1i\
-#ifdef __cplusplus\
-extern "C" {\
-#endif\
-
-' \
- -e '$a\
-#ifdef __cplusplus\
-}\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 25: Hpux_Maxint
- #
- case "$file" in ./sys/param.h )
- fixlist="${fixlist}
- hpux_maxint"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^#[ ]*define[ ]*MAXINT[ ]/i\
-#ifndef MAXINT
-' \
- -e '/^#[ ]*define[ ]*MAXINT[ ]/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 26: Hpux_Systime
- #
- case "$file" in ./sys/time.h )
- if ( test -n "`egrep '^extern struct sigevent;' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- hpux_systime"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^extern struct sigevent;/struct sigevent;/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 27: Interactv_Add1
- #
- case "$file" in ./stdio.h | \
- ./math.h | \
- ./ctype.h | \
- ./sys/limits.h | \
- ./sys/fcntl.h | \
- ./sys/dirent.h )
- if ( test '(' -d /etc/conf/kconfig.d ')' -a \
- '(' -n "`grep _POSIX_VERSION /usr/include/sys/unistd.h`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- interactv_add1"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/!defined(__STDC__) && !defined(_POSIX_SOURCE)/!defined(_POSIX_SOURCE)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 28: Interactv_Add2
- #
- case "$file" in ./math.h )
- if ( test '(' -d /etc/conf/kconfig.d ')' -a \
- '(' -n "`grep _POSIX_VERSION /usr/include/sys/unistd.h`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- interactv_add2"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/fmod(double)/fmod(double, double)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 29: Interactv_Add3
- #
- case "$file" in ./sys/limits.h )
- if ( test '(' -d /etc/conf/kconfig.d ')' -a \
- '(' -n "`grep _POSIX_VERSION /usr/include/sys/unistd.h`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- interactv_add3"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/CHILD_MAX/s,/\* Max, Max,' \
- -e '/OPEN_MAX/s,/\* Max, Max,' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 30: Io_Def_Quotes
- #
- if ( test -n "`egrep '[ ]_IO[A-Z]*[ ]*\\([A-Za-z]' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- io_def_quotes"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/\([ ]_IO[A-Z]*[ ]*(\)\([A-Za-z]\),/\1'\''\2'\'',/' \
- -e '/#[ ]*define[ ]*[ ]_IO/s/'\''\([cgxtf]\)'\''/\1/g' \
- -e '/#[ ]*define[ ]*[ ]DESIOC/s/'\''\([cdgx]\)'\''/\1/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 31: Ioctl_Fix_Ctrl
- #
- if ( test -n "`egrep 'CTRL[ ]' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- ioctl_fix_ctrl"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/[^A-Z0-9_]CTRL[ ]*(/s/\([^'\'']\))/'\''\1'\'')/' \
- -e '/[^A-Z0-9]_CTRL[ ]*(/s/\([^'\'']\))/'\''\1'\'')/' \
- -e '/#[ ]*define[ ]*[ ]CTRL/s/'\''\([cgx]\)'\''/\1/g' \
- -e '/#[ ]*define[ ]*[ ]_CTRL/s/'\''\([cgx]\)'\''/\1/g' \
- -e '/#[ ]*define[ ]*[ ]BSD43_CTRL/s/'\''\([cgx]\)'\''/\1/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 32: Ip_Missing_Semi
- #
- case "$file" in ./netinet/ip.h )
- fixlist="${fixlist}
- ip_missing_semi"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^struct/,/^};/s/}$/};/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 33: Irix_Multiline_Cmnt
- #
- case "$file" in ./sys/types.h )
- fixlist="${fixlist}
- irix_multiline_cmnt"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@type of the result@type of the result */@' \
- -e 's@of the sizeof@/* of the sizeof@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 34: Irix_Sockaddr
- #
- case "$file" in ./rpc/auth.h )
- if ( test -n "`egrep 'authdes_create.*struct sockaddr' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- irix_sockaddr"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/authdes_create.*struct sockaddr/i\
-struct sockaddr;
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 35: Irix_Struct__File
- #
- case "$file" in ./rpc/xdr.h )
- fixlist="${fixlist}
- irix_struct__file"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/xdrstdio_create.*struct __file_s/i\
-struct __file_s;
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 36: Isc_Fmod
- #
- case "$file" in ./math.h )
- if ( test -n "`egrep 'fmod\\(double\\)' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- isc_fmod"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/fmod(double)/fmod(double, double)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 37: Motorola_Nested
- #
- case "$file" in ./limits.h | \
- ./sys/limits.h )
- fixlist="${fixlist}
- motorola_nested"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@^\(#undef[ ][ ]*PIPE_BUF[ ]*/\* max # bytes atomic in write to a\)$@\1 */@' \
- -e 's@\(/\*#define HUGE_VAL 3.40282346638528860e+38 \)\(/\*error value returned by Math lib\*/\)$@\1*/ \2@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 38: Isc_Sys_Limits
- #
- case "$file" in ./sys/limits.h )
- if ( test -n "`egrep 'CHILD_MAX' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- isc_sys_limits"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/CHILD_MAX/s,/\* Max, Max,' \
- -e '/OPEN_MAX/s,/\* Max, Max,' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 39: Kandr_Concat
- #
- case "$file" in ./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 )
- if ( test -n "`egrep '/\\*\\*/' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- kandr_concat"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's|/\*\*/| ## |g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 40: Limits_Ifndefs
- #
- case "$file" in ./limits.h )
- if ( test -z "`egrep 'ifndef[ ]+FLT_MIN' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- limits_ifndefs"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/[ ]FLT_MIN[ ]/i\
-#ifndef FLT_MIN
-' \
- -e '/[ ]FLT_MIN[ ]/a\
-#endif
-' \
- -e '/[ ]FLT_MAX[ ]/i\
-#ifndef FLT_MAX
-' \
- -e '/[ ]FLT_MAX[ ]/a\
-#endif
-' \
- -e '/[ ]FLT_DIG[ ]/i\
-#ifndef FLT_DIG
-' \
- -e '/[ ]FLT_DIG[ ]/a\
-#endif
-' \
- -e '/[ ]DBL_MIN[ ]/i\
-#ifndef DBL_MIN
-' \
- -e '/[ ]DBL_MIN[ ]/a\
-#endif
-' \
- -e '/[ ]DBL_MAX[ ]/i\
-#ifndef DBL_MAX
-' \
- -e '/[ ]DBL_MAX[ ]/a\
-#endif
-' \
- -e '/[ ]DBL_DIG[ ]/i\
-#ifndef DBL_DIG
-' \
- -e '/[ ]DBL_DIG[ ]/a\
-#endif
-' \
- -e '/^\(\/\*#define HUGE_VAL 3\.[0-9e+]* *\)\/\*/s//\1/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 41: Lynx_Void_Int
- #
- case "$file" in ./curses.h )
- if ( test -n "`egrep '#[ ]*define[ ]+void[ ]+int' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- lynx_void_int"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/#[ ]*define[ ][ ]*void[ ]int/d' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 42: Lynxos_Fcntl_Proto
- #
- case "$file" in ./fcntl.h )
- fixlist="${fixlist}
- lynxos_fcntl_proto"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/\(fcntl.*(int, int, \)int)/\1...)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 43: M88k_Bad_Hypot_Opt
- #
- case "$file" in ./math.h )
- case "$target_canonical" in m88k-motorola-sysv3* )
- fixlist="${fixlist}
- m88k_bad_hypot_opt"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/extern double floor(), ceil(), fmod(), fabs();/extern double floor(), ceil(), fmod(), fabs _PARAMS((double));/' \
- -e '/^extern double hypot();$/a\
-\/* Workaround a stupid Motorola optimization if one\
- of x or y is 0.0 and the other is negative! *\/\
-#ifdef __STDC__\
-static __inline__ double fake_hypot (double x, double y)\
-#else\
-static __inline__ double fake_hypot (x, y)\
- double x, y;\
-#endif\
-{\
- return fabs (hypot (x, y));\
-}\
-#define hypot fake_hypot
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for machine type test
- esac
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 44: M88k_Bad_S_If
- #
- case "$file" in ./sys/stat.h )
- case "$target_canonical" in m88k-*-sysv3* )
- if ( test -n "`egrep '#define[ ]+S_IS[A-Z]*(m)[ ]' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- m88k_bad_s_if"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^\(#define[ ]*S_IS[A-Z]*(m)\)[ ]*(m[ ]*&[ ]*\(S_IF[A-Z][A-Z][A-Z][A-Z]*\)[ ]*)/\1 (((m)\&S_IFMT)==\2)/' \
- -e 's/^\(#define[ ]*S_IS[A-Z]*(m)\)[ ]*(m[ ]*&[ ]*\(0[0-9]*\)[ ]*)/\1 (((m)\&S_IFMT)==\2)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for machine type test
- esac
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 45: M88k_Multi_Incl
- #
- case "$file" in ./time.h )
- case "$target_canonical" in m88k-tektronix-sysv3* )
- if ( test -z "`egrep '#ifndef' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- m88k_multi_incl"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo Fixing $file, to protect against multiple inclusion. >&2
- cpp_wrapper=`echo $file | sed -e 's,\.,_,g' -e 's,/,_,g'`
- sed -e "1i\
-#ifndef __GCC_GOT_${cpp_wrapper}_\
-#define __GCC_GOT_${cpp_wrapper}_\
-" \
- -e "$a\
-#endif /* ! __GCC_GOT_${cpp_wrapper}_ */
-" ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for machine type test
- esac
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 46: Machine_Name
- #
- if ( test -n "`egrep '^#[ ]*(if|elif).*[^a-zA-Z0-9_](_*[MSRrhim]|[Mbimnpstuv])[a-zA-Z0-9_]' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- machine_name"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e ':loop
-/\\$/N
-s/\\$/\\+++fixinc_eol+++/
-/\\$/b loop
-s/\\+++fixinc_eol+++/\\/g
-/#[ ]*[el]*if/ {
- s/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g
- s/ M32 / __M32__ /g
- s/ _*MIPSE\([LB]\) / __MIPSE\1__ /g
- s/ _*SYSTYPE_\([A-Z0-9]*\) / __SYSTYPE_\1__ /g
- s/ _*\([Rr][34]\)000 / __\1000__ /g
- s/ _*host_mips / __host_mips__ /g
- s/ _*i386 / __i386__ /g
- s/ _*mips / __mips__ /g
- s/ bsd4\([0-9]\) / __bsd4\1__ /g
- s/ is68k / __is68k__ /g
- s/ m68k / __m68k__ /g
- s/ m88k / __m88k__ /g
- s/ mc680\([0-9]\)0 / __mc680\10__ /g
- s/ news\([0-9]*\) / __news\1__ /g
- s/ ns32000 / __ns32000__ /g
- s/ pdp11 / __pdp11__ /g
- s/ pyr / __pyr__ /g
- s/ sel / __sel__ /g
- s/ sony_news / __sony_news__ /g
- s/ sparc / __sparc__ /g
- s/ sun\([a-z0-9]*\) / __sun\1__ /g
- s/ tahoe / __tahoe__ /g
- s/ tower\([_0-9]*\) / __tower\1__ /g
- s/ u370 / __u370__ /g
- s/ u3b\([0-9]*\) / __u3b\1__ /g
- s/ unix / __unix__ /g
- s/ vax / __vax__ /g
- s/ \([a-zA-Z0-9_][a-zA-Z0-9_]*\) /\1/g
- }' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 47: Math_Exception
- #
- case "$file" in ./math.h )
- if ( test -n "`egrep 'struct exception' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- math_exception"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/struct exception/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif
-' \
- -e '/struct exception/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif
-' \
- -e '/matherr/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif
-' \
- -e '/matherr/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 48: Math_Gcc_Ifndefs
- #
- case "$file" in ./math.h )
- fixlist="${fixlist}
- math_gcc_ifndefs"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( dbl_max_def="`egrep 'define[ ]+DBL_MAX[ ]+.*' ${SRCDIR}/float.h 2>/dev/null`"
-
- if ( test -n "${dbl_max_def}" \
- -a -n "`egrep '#define[ ]*HUGE_VAL[ ]+DBL_MAX' $file`" \
- -a -z "`egrep '#define[ ]+DBL_MAX[ ]+' $file`"
- ) > /dev/null 2>&1
- then sed -e '/define[ ]HUGE_VAL[ ]/i\
-#ifndef HUGE_VAL
-' \
- -e '/define[ ]HUGE_VAL[ ]/a\
-#endif
-'\
- -e "/define[ ]HUGE_VAL[ ]DBL_MAX/s/DBL_MAX/$dbl_max_def/"
- else sed -e '/define[ ]HUGE_VAL[ ]/i\
-#ifndef HUGE_VAL
-' \
- -e '/define[ ]HUGE_VAL[ ]/a\
-#endif
-'
- fi ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 49: Motorola_Stupid_Opt
- #
- case "$file" in ./math.h )
- case "$target_canonical" in m88k-motorola-sysv3* )
- if ( test -n "`egrep '^extern double hypot();$' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- motorola_stupid_opt"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^extern double hypot();$/a\
-\/* Workaround a stupid Motorola optimization if one\
- of x or y is 0.0 and the other is negative! *\/\
-#ifdef __STDC__\
-static __inline__ double fake_hypot (double x, double y)\
-#else\
-static __inline__ double fake_hypot (x, y)\
- double x, y;\
-#endif\
-{\
- return fabs (hypot (x, y));\
-}\
-#define hypot fake_hypot
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for machine type test
- esac
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 50: Nested_Comment
- #
- case "$file" in ./rpc/rpc.h )
- fixlist="${fixlist}
- nested_comment"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@^\(/\*.*rpc/auth_des.h>.*\)/\*@\1*/ /*@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 51: News_Os_Recursion
- #
- case "$file" in ./stdlib.h )
- if ( test -n "`egrep '#include <stdlib.h>' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- news_os_recursion"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^#include <stdlib.h>/i\
-#ifdef BOGUS_RECURSION
-' \
- -e '/^#include <stdlib.h>/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 52: Next_Math_Prefix
- #
- case "$file" in ./ansi/math.h )
- if ( test -n "`egrep '^extern.*double.*__const__.*' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- next_math_prefix"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- 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__//' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 53: Next_Template
- #
- case "$file" in ./bsd/libc.h )
- if ( test -n "`egrep 'template' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- next_template"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/\(.*template\)/s/template//' \
- -e '/extern.*volatile.*void.*abort/s/volatile//' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 54: Next_Volitile
- #
- case "$file" in ./ansi/stdlib.h )
- if ( test -n "`egrep 'volatile' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- next_volitile"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/extern.*volatile.*void.*exit/s/volatile//' \
- -e '/extern.*volatile.*void.*abort/s/volatile//' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 55: Next_Wait_Union
- #
- case "$file" in ./sys/wait.h )
- if ( test -n "`egrep 'wait\\(union wait' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- next_wait_union"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@wait(union wait@wait(void@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 56: Nodeent_Syntax
- #
- case "$file" in ./netdnet/dnetdb.h )
- fixlist="${fixlist}
- nodeent_syntax"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/char.*na_addr *$/char *na_addr;/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 57: Osf_Namespace_A
- #
- case "$file" in ./reg_types.h | \
- ./sys/lc_core.h )
- if ( test '(' -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`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- osf_namespace_a"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/regex_t/__regex_t/g' \
- -e 's/regoff_t/__regoff_t/g' \
- -e 's/regmatch_t/__regmatch_t/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 58: Osf_Namespace_B
- #
- case "$file" in ./regex.h )
- if ( test '(' -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`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- osf_namespace_b"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/#include <reg_types.h>/a\
-typedef __regex_t regex_t;\
-typedef __regoff_t regoff_t;\
-typedef __regmatch_t regmatch_t;
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 59: Pthread_Page_Size
- #
- case "$file" in ./pthread.h )
- if ( test -n "`egrep '^int __page_size' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- pthread_page_size"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^int __page_size/extern int __page_size/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 60: Rs6000_Double
- #
- case "$file" in ./math.h )
- if ( test -n "`egrep '[^a-zA-Z_]class\\(' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- rs6000_double"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/class[(]/i\
-#ifndef __cplusplus
-' \
- -e '/class[(]/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 61: Rs6000_Fchmod
- #
- case "$file" in ./sys/stat.h )
- if ( test -n "`egrep 'fchmod\\(char' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- rs6000_fchmod"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/fchmod(char \*/fchmod(int/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 62: Rs6000_Param
- #
- case "$file" in ./stdio.h | \
- ./unistd.h )
- fixlist="${fixlist}
- rs6000_param"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@rename(const char \*old, const char \*new)@rename(const char *_old, const char *_new)@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 63: Sony_Include
- #
- case "$file" in ./machine/machparam.h )
- if ( test -n "`egrep '\"\\.\\./machine/endian.h\"' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sony_include"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@"../machine/endian.h"@<machine/endian.h>@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 64: Statsswtch
- #
- case "$file" in ./rpcsvc/rstat.h )
- if ( test -n "`egrep 'boottime$' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- statsswtch"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/boottime$/boottime;/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 65: Stdio_Va_List
- #
- case "$file" in ./stdio.h )
- fixlist="${fixlist}
- stdio_va_list"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( if ( egrep "__need___va_list" $file ) > /dev/null 2>&1 ; then
- :
- else
- echo "#define __need___va_list"
- echo "#include <stdarg.h>"
- fi
-
- sed -e 's@ va_list @ __gnuc_va_list @' \
- -e 's@ va_list)@ __gnuc_va_list)@' \
- -e 's@ _BSD_VA_LIST_));@ __gnuc_va_list));@' \
- -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \
- -e 's@ va_list@ __va_list__@' \
- -e 's@\*va_list@*__va_list__@' \
- -e 's@ __va_list)@ __gnuc_va_list)@' \
- -e 's@GNUC_VA_LIST@GNUC_Va_LIST@' \
- -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \
- -e 's@VA_LIST@DUMMY_VA_LIST@' \
- -e 's@_Va_LIST@_VA_LIST@' ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 66: Sun_Bogus_Ifdef
- #
- case "$file" in ./hsfs/hsfs_spec.h | \
- ./hsfs/iso_spec.h )
- if ( test -n "`egrep '#ifdef __i386__ || __vax__' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_bogus_ifdef"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/\#ifdef __i386__ || __vax__/\#if __i386__ || __vax__/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 67: Sun_Bogus_Ifdef_Sun4c
- #
- case "$file" in ./hsfs/hsnode.h )
- if ( test -n "`egrep '#ifdef __i386__ || __sun4c__' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_bogus_ifdef_sun4c"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/\#ifdef __i386__ || __sun4c__/\#if __i386__ || __sun4c__/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 68: Sun_Catmacro
- #
- case "$file" in ./pixrect/memvar.h )
- if ( test -n "`egrep '^#define[ ]+CAT(a,b)' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_catmacro"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^#define[ ]CAT(a,b)/ i\
-#ifdef __STDC__ \
-#define CAT(a,b) a##b\
-#else
-' \
- -e '/^#define[ ]CAT(a,b)/ a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 69: Sun_Malloc
- #
- case "$file" in ./malloc.h )
- fixlist="${fixlist}
- sun_malloc"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/typedef[ ]char \* malloc_t/typedef void \* malloc_t/g' \
- -e 's/int[ ][ ]*free/void free/g' \
- -e 's/char\([ ]*\*[ ]*malloc\)/void\1/g' \
- -e 's/char\([ ]*\*[ ]*realloc\)/void\1/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 70: Sun_Memcpy
- #
- case "$file" in ./memory.h )
- if ( test -n "`egrep '/\\* @\\(#\\)(head/memory.h 50.1 |memory\\.h 1\\.[2-4] 8./../.. SMI; from S5R2 1\\.2 )\\*/' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_memcpy"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '1i\
-/* This file was generated by fixincludes */\
-#ifndef __memory_h__\
-#define __memory_h__\
-\
-#ifdef __STDC__\
-extern void *memccpy();\
-extern void *memchr();\
-extern void *memcpy();\
-extern void *memset();\
-#else\
-extern char *memccpy();\
-extern char *memchr();\
-extern char *memcpy();\
-extern char *memset();\
-#endif /* __STDC__ */\
-\
-extern int memcmp();\
-\
-#endif /* __memory_h__ */
-' \
- -e '1,$d' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 71: Sun_Rusers_Semi
- #
- case "$file" in ./rpcsvc/rusers.h )
- if ( test -n "`egrep '_cnt$' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_rusers_semi"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 72: Sun_Signal
- #
- case "$file" in ./sys/signal.h | \
- ./signal.h )
- if ( test -n "`egrep '^void \\(\\*signal\\(\\)\\)\\(\\);' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_signal"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^void (\*signal())();$/i\
-#ifdef __cplusplus\
-void (*signal(...))(...);\
-#else
-' \
- -e '/^void (\*signal())();$/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 73: Sun_Auth_Proto
- #
- case "$file" in ./rpc/auth.h | \
- ./rpc/clnt.h | \
- ./rpc/svc.h | \
- ./rpc/xdr.h )
- case "$target_canonical" in *-sun-* )
- if ( test -n "`egrep '\\(\\*[a-z][a-z_]*\\)\\(\\)' $file`" -a \
- -z "`egrep '\\(\\*[a-z][a-z_]*\\)\\([ ]*[a-zA-Z.].*\\)' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sun_auth_proto"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^\(.*(\*[a-z][a-z_]*)(\)\();.*\)/\
-#ifdef __cplusplus\
-\1...\2\
-#else\
-\1\2\
-#endif/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for machine type test
- esac
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 74: Sunos_Large_Macro
- #
- case "$file" in ./sundev/ipi_error.h )
- fixlist="${fixlist}
- sunos_large_macro"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo "Removing incorrect fix to SunOS <sundev/ipi_error.h>" >&2
-rm -f ${DESTDIR}/$file ${DESTDIR}/$file.
-cat > /dev/null ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 75: Sunos_Matherr_Decl
- #
- case "$file" in ./math.h )
- if ( test '(' "`fgrep 'struct exception' $file | line`" != 'struct exception {' ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- sunos_matherr_decl"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/matherr/i\
-struct exception;
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 76: Sunos_Strlen
- #
- case "$file" in ./strings.h )
- fixlist="${fixlist}
- sunos_strlen"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/int[ ]*strlen();/__SIZE_TYPE__ strlen();/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 77: Systypes
- #
- case "$file" in ./sys/types.h | \
- ./stdlib.h | \
- ./sys/stdtypes.h | \
- ./stddef.h | \
- ./memory.h | \
- ./unistd.h )
- if ( test -n "`egrep 'typedef[ ]+[a-z_][ a-z_]*[ ](size|ptrdiff|wchar)_t' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- systypes"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^[ ]*\*[ ]*typedef unsigned int size_t;/N' \
- -e 's/^\([ ]*\*[ ]*typedef unsigned int size_t;\n[ ]*\*\/\)/\1\
-#ifndef __SIZE_TYPE__\
-#define __SIZE_TYPE__ long unsigned int\
-#endif\
-typedef __SIZE_TYPE__ size_t;\
-/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/i\
-#ifndef __SIZE_TYPE__\
-#define __SIZE_TYPE__ long unsigned int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/typedef __SIZE_TYPE__ size_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/i\
-#ifndef __PTRDIFF_TYPE__\
-#define __PTRDIFF_TYPE__ long int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/i\
-#ifndef __WCHAR_TYPE__\
-#define __WCHAR_TYPE__ int\
-#endif\
-#ifndef __cplusplus
-' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/a\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/typedef __WCHAR_TYPE__ wchar_t/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 78: Systypes_For_Aix
- #
- case "$file" in ./sys/types.h )
- if ( test -n "`egrep 'typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t' $file`" -a \
- -z "`egrep '_GCC_SIZE_T' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- systypes_for_aix"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 79: Sysv68_String
- #
- case "$file" in ./string.h )
- fixlist="${fixlist}
- sysv68_string"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/extern[ ]*int[ ]*strlen();/extern unsigned int strlen();/' \
- -e 's/extern[ ]*int[ ]*ffs[ ]*(long);/extern int ffs(int);/' \
- -e 's/strdup(char \*s1);/strdup(const char *s1);/' \
- -e '/^extern char$/N' \
- -e 's/^extern char\(\n \*memccpy(),\)$/extern void\1/' \
- -e '/^ strncmp(),$/N' \
- -e 's/^\( strncmp()\),\n\( strlen(),\)$/\1;\
-extern unsigned int\
-\2/' \
- -e '/^extern int$/N' \
- -e 's/^extern int\(\n strlen(),\)/extern size_t\1/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 80: Sysz_Stdlib_For_Sun
- #
- case "$file" in ./stdlib.h )
- case "$target_canonical" in *-sun-* | \
- m88k-*-sysv3* )
- fixlist="${fixlist}
- sysz_stdlib_for_sun"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/int abort/void abort/g' \
- -e 's/int free/void free/g' \
- -e 's/char[ ]*\*[ ]*calloc/void \* calloc/g' \
- -e 's/char[ ]*\*[ ]*malloc/void \* malloc/g' \
- -e 's/char[ ]*\*[ ]*realloc/void \* realloc/g' \
- -e 's/int[ ][ ]*exit/void exit/g' \
- -e '/typedef[ a-zA-Z_]*[ ]size_t[ ]*;/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/typedef[ a-zA-Z_]*[ ]size_t[ ]*;/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for machine type test
- esac
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 81: Sysz_Stdtypes_For_Sun
- #
- case "$file" in ./sys/stdtypes.h )
- fixlist="${fixlist}
- sysz_stdtypes_for_sun"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/[ ]size_t.*;/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/[ ]size_t.*;/a\
-#endif
-' \
- -e '/[ ]ptrdiff_t.*;/i\
-#ifndef _GCC_PTRDIFF_T\
-#define _GCC_PTRDIFF_T
-' \
- -e '/[ ]ptrdiff_t.*;/a\
-#endif
-' \
- -e '/[ ]wchar_t.*;/i\
-#ifndef _GCC_WCHAR_T\
-#define _GCC_WCHAR_T
-' \
- -e '/[ ]wchar_t.*;/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 82: Tinfo_Cplusplus
- #
- case "$file" in ./tinfo.h )
- fixlist="${fixlist}
- tinfo_cplusplus"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/[ ]_cplusplus/ __cplusplus/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 83: Ultrix_Ansi_Compat
- #
- case "$file" in ./ansi_compat.h )
- if ( test -n "`egrep 'ULTRIX' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- ultrix_ansi_compat"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '1i\
-/* This file intentionally left blank. */
-' \
- -e '1,$d' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 84: Ultrix_Atof_Param
- #
- case "$file" in ./math.h )
- fixlist="${fixlist}
- ultrix_atof_param"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@atof(\([ ]*char[ ]*\*[^)]*\))@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]*) {.*}@@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 85: Ultrix_Const
- #
- case "$file" in ./stdio.h )
- fixlist="${fixlist}
- ultrix_const"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- 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*);@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 86: Ultrix_Ifdef
- #
- case "$file" in ./sys/file.h )
- if ( test -n "`egrep '#ifdef KERNEL' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- ultrix_ifdef"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/#ifdef KERNEL/#if defined(KERNEL)/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 87: Ultrix_Nested_Cmnt
- #
- case "$file" in ./rpc/svc.h )
- fixlist="${fixlist}
- ultrix_nested_cmnt"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's@^\( \* int protocol; \)/\*@\1*/ /*@' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 88: Ultrix_Static
- #
- case "$file" in ./machine/cpu.h )
- if ( test -n "`egrep '#include \"r[34]_cpu' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- ultrix_static"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- 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>/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 89: Undefine_Null
- #
- if ( test -n "`egrep '^#[ ]*define[ ]*[ ]NULL[ ]' $file`" -a \
- -z "`egrep '#[ ]*(ifn|un)def[ ]*[ ]NULL($|[ ])' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- undefine_null"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/^#[ ]*define[ ][ ]*NULL[ ]/i\
-#undef NULL
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
-
-
- #
- # Fix 90: Va_I960_Macro
- #
- case "$file" in ./arch/i960/archI960.h )
- if ( test -n "`egrep '__(vsiz|vali|vpad|alignof__)' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- va_i960_macro"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/__vsiz/__vxvsiz/' \
- -e 's/__vali/__vxvali/' \
- -e 's/__vpad/__vxvpad/' \
- -e 's/__alignof__/__vxalignof__/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 91: Void_Null
- #
- case "$file" in ./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 )
- if ( test -n "`egrep '#[ ]*define[ ][ ]*NULL[ ].*void' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- void_null"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/^#[ ]*define[ ]*NULL[ ]*((void[ ]*\*)0)/#define NULL 0/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 92: Vxworks_Gcc_Problem
- #
- case "$file" in ./types/vxTypesBase.h )
- if ( test -n "`egrep '__GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- vxworks_gcc_problem"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/#if 1/' \
- -e '/[ ]size_t/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/[ ]size_t/a\
-#endif
-' \
- -e '/[ ]ptrdiff_t/i\
-#ifndef _GCC_PTRDIFF_T\
-#define _GCC_PTRDIFF_T
-' \
- -e '/[ ]ptrdiff_t/a\
-#endif
-' \
- -e '/[ ]wchar_t/i\
-#ifndef _GCC_WCHAR_T\
-#define _GCC_WCHAR_T
-' \
- -e '/[ ]wchar_t/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 93: Vxworks_Needs_Vxtypes
- #
- case "$file" in ./time.h )
- if ( test -n "`egrep 'uint_t[ ][ ]*_clocks_per_sec' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- vxworks_needs_vxtypes"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/uint_t/unsigned int/' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 94: Vxworks_Needs_Vxworks
- #
- case "$file" in ./sys/stat.h )
- if ( test -n "`egrep '#[ ]define[ ][ ]*__INCstath' $file`" -a \
- '(' -r types/vxTypesOld.h ')' -a \
- '(' -n "`fgrep '#include' $file`" ')' -a \
- '(' -n "`fgrep ULONG $file`" ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- vxworks_needs_vxworks"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/#[ ]define[ ][ ]*__INCstath/a\
-#include <types/vxTypesOld.h>
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 95: Vxworks_Time
- #
- case "$file" in ./time.h )
- if ( test -n "`egrep 'VOIDFUNCPTR' $file`" -a \
- '(' -r vxWorks.h ')'
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- vxworks_time"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/VOIDFUNCPTR/i\
-#ifndef __gcc_VOIDFUNCPTR_defined\
-#ifdef __cplusplus\
-typedef void (*__gcc_VOIDFUNCPTR) (...);\
-#else\
-typedef void (*__gcc_VOIDFUNCPTR) ();\
-#endif\
-#define __gcc_VOIDFUNCPTR_defined\
-#endif
-' \
- -e 's/VOIDFUNCPTR/__gcc_VOIDFUNCPTR/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 96: X11_Class
- #
- case "$file" in ./X11/ShellP.h )
- if ( test -z "`egrep '__cplusplus' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- x11_class"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/char \*class;/i\
-#ifdef __cplusplus\
- char *c_class;\
-#else
-' \
- -e '/char \*class;/a\
-#endif
-' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 97: X11_Class_Usage
- #
- case "$file" in ./Xm/BaseClassI.h )
- if ( test -z "`egrep '__cplusplus' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- x11_class_usage"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's/ class[)]/ c_class)/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 98: X11_New
- #
- case "$file" in ./Xm/Traversal.h )
- if ( test -z "`egrep '__cplusplus' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- x11_new"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e '/Widget old, new;/i\
-#ifdef __cplusplus\
- Widget old, c_new;\
-#else
-' \
- -e '/Widget old, new;/a\
-#endif
-' \
- -e 's/Widget new,/Widget c_new,/g' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 99: X11_Sprintf
- #
- case "$file" in ./X11*/Xmu.h )
- fixlist="${fixlist}
- x11_sprintf"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
-
- sed -e 's,^extern char \* sprintf();$,#ifndef __STDC__\
-extern char * sprintf();\
-#endif /* !defined __STDC__ */,' \
- < $infile > ${DESTDIR}/$file.
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 100: Zzz_Ki_Iface
- #
- case "$file" in ./sys/ki_iface.h )
- if ( test -n "`egrep 'These definitions are for HP Internal developers' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- zzz_ki_iface"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo "Removing incorrect fix to HP-UX <$file>" >&2
-rm -f ${DESTDIR}/$file ${DESTDIR}/$file.
-cat > /dev/null ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 101: Zzz_Ki
- #
- case "$file" in ./sys/ki.h )
- if ( test -n "`egrep '11.00 HP-UX LP64' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- zzz_ki"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo "Removing incorrect fix to HP-UX <$file>" >&2
-rm -f ${DESTDIR}/$file ${DESTDIR}/$file.
-cat > /dev/null ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 102: Zzz_Ki_Calls
- #
- case "$file" in ./sys/ki_calls.h )
- if ( test -n "`egrep 'KI_MAX_PROCS is an arbitrary number' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- zzz_ki_calls"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo "Removing incorrect fix to HP-UX <$file>" >&2
-rm -f ${DESTDIR}/$file ${DESTDIR}/$file.
-cat > /dev/null ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 103: Zzz_Ki_Defs
- #
- case "$file" in ./sys/ki_defs.h )
- if ( test -n "`egrep 'Kernel Instrumentation Definitions' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- zzz_ki_defs"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo "Removing incorrect fix to HP-UX <$file>" >&2
-rm -f ${DESTDIR}/$file ${DESTDIR}/$file.
-cat > /dev/null ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
-
-
- #
- # Fix 104: Zzz_Time
- #
- case "$file" in ./sys/time.h )
- if ( test -n "`egrep 'For CASPEC, look in' $file`"
- ) > /dev/null 2>&1 ; then
- fixlist="${fixlist}
- zzz_time"
- if [ ! -r ${DESTDIR}/$file ]
- then infile=$file
- else infile=${DESTDIR}/$file ; fi
- ( echo "Removing incorrect fix to HP-UX <$file>" >&2
-rm -f ${DESTDIR}/$file ${DESTDIR}/$file.
-cat > /dev/null ) < $infile > ${DESTDIR}/$file.
-
- # Shell scripts have the potential of removing the output
- # We interpret that to mean the file is not to be altered
- #
- if test ! -f ${DESTDIR}/$file.
- then continue ; fi
-
- mv -f ${DESTDIR}/$file. ${DESTDIR}/$file
- fi # end of selection 'if'
- ;; # case end for file name test
- esac
- # IF the output has been removed OR it is unchanged,
- # THEN ensure the output is gone
- # ELSE look for local directory include syntax
- #
- if ( test ! -f ${DESTDIR}/$file || \
- cmp $file ${DESTDIR}/$file ) > /dev/null 2>&1
- then
- rm -f ${DESTDIR}/$file
- else
- echo "Fixed $file:${fixlist}"
-
- # Find any include directives that use "file".
- #
- for include in `
- egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${DESTDIR}/$file |
- sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`
- do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${SRCDIR} $dir/$include ${DESTDIR}/$dir/$include"
- done
- fi
- done # for file in $files
-
-done
-
-## Make sure that any include files referenced using double quotes
-## exist in the fixed directory. This comes last since otherwise
-## we might end up deleting some of these files "because they don't
-## need any change."
-set x `echo $required`
-shift
-while [ $# != 0 ]; do
- newreq=
- while [ $# != 0 ]; do
- # $1 is the directory to copy from,
- # $2 is the unfixed file,
- # $3 is the fixed file name.
- #
- cd ${INPUT}
- cd $1
- if [ -r $2 ] && [ ! -r $3 ]; then
- cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" >&2
- chmod +w $3 2>/dev/null
- chmod a+r $3 2>/dev/null
- echo Copied $2
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 |
- sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`
- do
- dir=`echo $2 | sed -e s'|/[^/]*$||'`
- dir2=`echo $3 | sed -e s'|/[^/]*$||'`
- newreq="$newreq $1 $dir/$include $dir2/$include"
- done
- fi
- shift; shift; shift
- done
- set x $newreq
- shift
-done
-
-echo 'Cleaning up DONE files.'
-cd $LIB
-find . -name DONE -exec rm -f '{}' ';'
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1 | :
-done
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# End of for INPUT directories
-#
-done
-#
-# # # # # # # # # # # # # # # # # # # # #
-
-cd $ORIGDIR
-rm -f include/assert.h
-cp ${EGCS_SRCDIR}/assert.h include/assert.h
-chmod a+r include/assert.h
-
diff --git a/gcc/fixinc/inclhack.tpl b/gcc/fixinc/inclhack.tpl
deleted file mode 100755
index f67ccad..0000000
--- a/gcc/fixinc/inclhack.tpl
+++ /dev/null
@@ -1,391 +0,0 @@
-[= autogen template -*- Mode: ksh -*-
-sh
-#
-# $Id: inclhack.tpl,v 1.2 1999/01/13 22:56:22 law Exp $
-#
-=]
-#!/bin/sh
-#
-[= _EVAL "## " _DNE =]
-#
-# 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 [=_eval fix _count =] fixup scripts.
-#
-# See README-fixinc for more information.
-#
-[=_eval fixincludes "## " _gpl=]
-#
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Directory in which to store the results.
-# Fail if no arg to specify a directory for the output.
-if [ "x$1" = "x" ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-LIB=${1}
-shift
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || {
- echo fixincludes: output dir '`'$LIB"' cannot be created"
- exit 1
- }
-else
- ( \cd $LIB && touch DONE && rm DONE ) || {
- echo fixincludes: output dir '`'$LIB"' is an invalid directory"
- exit 1
- }
-fi
-
-# Define what target system we're fixing.
-#
-if test -r ./Makefile; then
- target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`"
-fi
-
-# If not from the Makefile, then try config.guess
-#
-if test -z "${target_canonical}" ; then
- if test -x ./config.guess ; then
- target_canonical="`config.guess`" ; fi
- test -z "${target_canonical}" && target_canonical=unknown
-fi
-export target_canonical
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Define PWDCMD as a command to use to get the working dir
-# in the form that we want.
-PWDCMD=pwd
-
-case "`$PWDCMD`" in
-//*)
- # On an Apollo, discard everything before `/usr'.
- PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'"
- ;;
-esac
-
-# Original directory.
-ORIGDIR=`${PWDCMD}`[=
-_IF PROGRAM _env =]
-FIXINCL=${ORIGDIR}/fixincl
-export FIXINCL[=
-_ENDIF=]
-
-# Make LIB absolute only if needed to avoid problems with the amd.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD}`
- ;;
-esac
-
-echo Fixing headers into ${LIB} for ${target_canonical} target
-
-# Determine whether this system has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
- rm -f /tmp/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# Search each input directory for broken header files.
-# This loop ends near the end of the file.
-#
-if test $# -eq 0
-then
- INPUTLIST="/usr/include"
-else
- INPUTLIST="$@"
-fi
-
-for INPUT in ${INPUTLIST} ; do
-
-cd ${ORIGDIR}
-
-cd ${INPUT} || {
- echo 'fixincludes: input dir `'$INPUT"' is an invalid directory"
- exit 1
-}
-
-#
-# # # # # # # # # # # # # # # # # # # # #
-#
-echo Finding directories and links to directories
-
-# Find all directories and all symlinks that point to directories.
-# Put the list in $files.
-# Each time we find a symlink, add it to newdirs
-# so that we do another find within the dir the link points to.
-# Note that $files may have duplicates in it;
-# later parts of this file are supposed to ignore them.
-dirs="."
-levels=2
-while [ -n "$dirs" ] && [ $levels -gt 0 ]
-do
- levels=`expr $levels - 1`
- newdirs=
- for d in $dirs
- do
- echo " Searching $INPUT/$d"
-
- # Find all directories under $d, relative to $d, excluding $d itself.
- # (The /. is needed after $d in case $d is a symlink.)
- files="$files `find $d/. -type d -print | \
- sed -e '/\/\.$/d' -e 's@/./@/@g'`"
- # Find all links to directories.
- # Using `-exec test -d' in find fails on some systems,
- # and trying to run test via sh fails on others,
- # so this is the simplest alternative left.
- # First find all the links, then test each one.
- theselinks=
- $LINKS && \
- theselinks=`find $d/. -type l -print | sed -e 's@/./@/@g'`
- for d1 in $theselinks --dummy--
- do
- # If the link points to a directory,
- # add that dir to $newdirs
- if [ -d $d1 ]
- then
- files="$files $d1"
- if [ "`ls -ld $d1 | sed -n 's/.*-> //p'`" != "." ]
- then
- newdirs="$newdirs $d1"
- fi
- fi
- done
- done
-
- dirs="$newdirs"
-done
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-dirs=
-echo "All directories (including links to directories):"
-echo $files
-
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-mkdir $LIB/root
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`${PWDCMD}`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`${PWDCMD}`
- # Canonicalize ${INPUT} now to minimize the time an
- # automounter has to change the result of ${PWDCMD}.
- cinput=`cd ${INPUT}; ${PWDCMD}`
- # If a link points to ., make a similar link to .
- if [ $x = ${cinput} ]; then
- echo $file '->' . ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s . ${LIB}/$file > /dev/null 2>&1
- # If link leads back into ${INPUT},
- # make a similar link here.
- elif expr $x : "${cinput}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${cinput}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to a dir $target outside ${INPUT},
- # repoint the link at ${INPUT}/root$target
- # and process $target into ${INPUT}/root$target
- # treat this directory as if it actually contained the files.
- echo $file '->' root$x ': Making link'
- if [ -d $LIB/root$x ]
- then true
- else
- dirname=root$x/
- dirmade=.
- cd $LIB
- while [ x$dirname != x ]; do
- component=`echo $dirname | sed -e 's|/.*$||'`
- mkdir $component >/dev/null 2>&1
- cd $component
- dirmade=$dirmade/$component
- dirname=`echo $dirname | sed -e 's|[^/]*/||'`
- done
- fi
- # Duplicate directory structure created in ${LIB}/$file in new
- # root area.
- for file2 in $files; do
- case $file2 in
- $file/*)
- dupdir=${LIB}/root$x/`echo $file2 | sed -n "s|^${file}/||p"`
- echo "Duplicating ${file}'s ${dupdir}"
- if [ -d ${dupdir} ]
- then true
- else
- mkdir ${dupdir}
- fi
- ;;
- *)
- ;;
- esac
- done
- # Get the path from ${LIB} to $file, accounting for symlinks.
- parent=`echo "$file" | sed -e 's@/[^/]*$@@'`
- libabs=`cd ${LIB}; ${PWDCMD}`
- file2=`cd ${LIB}; cd $parent; ${PWDCMD} | sed -e "s@^${libabs}@@"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file2" | sed -e 's@/[^/]*@../@g'`
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s ${dots}root$x ${LIB}/$file > /dev/null 2>&1
- treetops="$treetops $x ${LIB}/root$x"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-required=
-set x $treetops
-shift
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- #
- SRCDIR=`cd ${INPUT} ; cd $1 ; ${PWDCMD}`
- export SRCDIR
- shift
-
- DESTDIR=`cd $1;${PWDCMD}`
- export DESTDIR
- shift
-
- # The same dir can appear more than once in treetops.
- # There's no need to scan it more than once.
- #
- if [ -f ${DESTDIR}/DONE ]
- then continue ; fi
-
- touch ${DESTDIR}/DONE
- echo Fixing directory ${SRCDIR} into ${DESTDIR}
-
- # Check .h files which are symlinks as well as those which are files.
- # A link to a header file will not be processed by anything but this.
- #
- cd ${SRCDIR}
-[=_IF PROGRAM _env ! =][=
-
- _include hackshell =][=
-
- _ELSE
-
-=]
- required="$required `if $LINKS; then
- find . -name '*.h' \( -type f -o -type l \) -print
- else
- find . -name '*.h' -type f -print
- fi | ${FIXINCL}`"[=
-
-
- _ENDIF =]
-done
-
-## Make sure that any include files referenced using double quotes
-## exist in the fixed directory. This comes last since otherwise
-## we might end up deleting some of these files "because they don't
-## need any change."
-set x `echo $required`
-shift
-while [ $# != 0 ]; do
- newreq=
- while [ $# != 0 ]; do
- # $1 is the directory to copy from,
- # $2 is the unfixed file,
- # $3 is the fixed file name.
- #
- cd ${INPUT}
- cd $1
- if [ -r $2 ] && [ ! -r $3 ]; then
- cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" >&2
- chmod +w $3 2>/dev/null
- chmod a+r $3 2>/dev/null
- echo Copied $2
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 |
- sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`
- do
- dir=`echo $2 | sed -e s'|/[^/]*$||'`
- dir2=`echo $3 | sed -e s'|/[^/]*$||'`
- newreq="$newreq $1 $dir/$include $dir2/$include"
- done
- fi
- shift; shift; shift
- done
- set x $newreq
- shift
-done
-
-echo 'Cleaning up DONE files.'
-cd $LIB
-find . -name DONE -exec rm -f '{}' ';'
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1 | :
-done
-
-# # # # # # # # # # # # # # # # # # # # #
-#
-# End of for INPUT directories
-#
-done
-#
-# # # # # # # # # # # # # # # # # # # # #
-
-cd $ORIGDIR
-rm -f include/assert.h
-cp ${EGCS_SRCDIR}/assert.h include/assert.h
-chmod a+r include/assert.h
-[=
-
-# Make the output file executable
-# =][=
-_eval _outfile "chmod +x %s" _printf _shell=]
diff --git a/gcc/fixinc/mkfixinc.sh b/gcc/fixinc/mkfixinc.sh
deleted file mode 100755
index 863623c..0000000
--- a/gcc/fixinc/mkfixinc.sh
+++ /dev/null
@@ -1,116 +0,0 @@
-#! /bin/sh
-
-machine=$1
-if [ -z "$machine" ]
-then
- echo No machine name given
- exit 1
-fi
-
-echo constructing fixinc.sh for $machine
-fixincludes="../fixinc.sh"
-
-case $machine in
- *-*-gnu*)
- fixincludes=
- ;;
-
- *-*-sysv4*)
- fixincludes=fixinc.svr4
- ;;
-
- mips-dec-bsd*)
- :
- ;;
-
- i[34567]86-*-sysv5* | \
- i[34567]86-*-udk* | \
- i[34567]86-*-solaris2.[0-4] | \
- powerpcle-*-solaris2.[0-4] | \
- sparc-*-solaris2.[0-4] )
- fixincludes=fixinc.svr4
- ;;
-
- *-*-netbsd* | \
- alpha*-*-linux-gnulibc1* | \
- i[34567]86-*-freebsd* | \
- i[34567]86-*-netbsd* | i[34567]86-*-openbsd* | \
- i[34567]86-*-solaris2* | \
- sparcv9-*-solaris2* | \
- powerpcle-*-solaris2* | \
- sparc-*-solaris2* )
- fixincludes=fixinc.wrap
- ;;
-
- alpha*-*-winnt* | \
- i[34567]86-*-winnt3*)
- fixincludes=fixinc.winnt
- ;;
-
- i[34567]86-sequent-ptx* | i[34567]86-sequent-sysv[34]*)
- fixincludes=fixinc.ptx
- ;;
-
- i[34567]86-dg-dgux* | \
- m88k-dg-dgux*)
- fixincludes=fixinc.dgux
- ;;
-
- i[34567]86-*-sco3.2v5* | \
- i[34567]86-*-sco3.2v4*)
- fixincludes=fixinc.sco
- ;;
-
- alpha*-*-linux-gnu* | \
- alpha*-dec-vms* | \
- arm-semi-aout | armel-semi-aout | \
- arm-semi-aof | armel-semi-aof | \
- arm-*-linux-gnuaout* | \
- c*-convex-* | \
- hppa1.1-*-osf* | \
- hppa1.0-*-osf* | \
- hppa1.1-*-bsd* | \
- hppa1.0-*-bsd* | \
- hppa*-*-lites* | \
- *-*-linux-gnu* | \
- i[34567]86-moss-msdos* | i[34567]86-*-moss* | \
- i[34567]86-*-osf1* | \
- i[34567]86-*-win32 | \
- i[34567]86-*-pe | i[34567]86-*-cygwin32 | \
- i[34567]86-*-mingw32* | \
- mips-sgi-irix5cross64 | \
- powerpc-*-eabiaix* | \
- powerpc-*-eabisim* | \
- powerpc-*-eabi* | \
- powerpc-*-rtems* | \
- powerpcle-*-eabisim* | \
- powerpcle-*-eabi* | \
- powerpcle-*-winnt* | \
- powerpcle-*-pe | powerpcle-*-cygwin32 | \
- thumb-*-coff* | thumbel-*-coff* )
- fixincludes=
- ;;
-
- *-sgi-irix*)
- fixincludes=fixinc.irix
- ;;
-esac
-
-if test -z "$fixincludes"
-then
- cat > ../fixinc.sh <<- _EOF_
- #! /bin/sh
- exit 0
- _EOF_
- exit 0
-fi
-
-if test -f "$fixincludes"
-then
- echo copying $fixincludes to ../fixinc.sh
- cp $fixincludes ../fixinc.sh
- exit 0
-fi
-
-echo $MAKE install
-$MAKE install || cp inclhack.sh ..
diff --git a/gcc/fixinc/regex.c b/gcc/fixinc/regex.c
deleted file mode 100755
index 2240285..0000000
--- a/gcc/fixinc/regex.c
+++ /dev/null
@@ -1,5059 +0,0 @@
-/* Extended regular expression matching and search library,
- version 0.12.
- (Implements POSIX draft P10003.2/D11.2, except for
- internationalization features.)
-
- Copyright (C) 1993 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* AIX requires this to be the first thing in the file. */
-#if defined (_AIX) && !defined (REGEX_MALLOC)
- #pragma alloca
-#endif
-
-/* $Id: regex.c,v 1.3 1999/01/15 07:38:25 law Exp $ */
-
-#define _GNU_SOURCE
-
-/* We need this for `regex.h', and perhaps for the Emacs include files. */
-#ifdef __TANDEM
-/*
- * WARN 107: constant used as logical expression
- * Side effect of some complex macros
- */
-# pragma NOWARN( 107 )
-
-/*
- * WARN 95: prototype function declaration not in scope:
- * TANDEM brain damaged C.
- */
-# pragma NOWARN( 95 )
-# include <systype.h>
-#else
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* The `emacs' switch turns on certain matching commands
- that make sense only in Emacs. */
-#ifdef emacs
-
-#include "lisp.h"
-#include "buffer.h"
-#include "syntax.h"
-
-/* Emacs uses `NULL' as a predicate. */
-#undef NULL
-
-#else /* not emacs */
-
-#ifdef __TANDEM
-# include <string.h>
-# include <stdlib.h>
-# ifndef bcmp
-# define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
-# endif
-# ifndef bcopy
-# define bcopy(s, d, n) memcpy ((d), (s), (n))
-# endif
-# ifndef bzero
-# define bzero(s, n) memset ((s), 0, (n))
-# endif
-# pragma NOWARN( 96 )
-
-#else /* NOT TANDEM */
-
-/* We used to test for `BSTRING' here, but only GCC and Emacs define
- `BSTRING', as far as I know, and neither of them use this code. */
-# if HAVE_STRING_H || STDC_HEADERS
-# include <string.h>
-# ifndef bcmp
-# define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
-# endif
-# ifndef bcopy
-# define bcopy(s, d, n) memcpy ((d), (s), (n))
-# endif
-# ifndef bzero
-# define bzero(s, n) memset ((s), 0, (n))
-# endif
-# else
-# include <strings.h>
-# endif
-
-# ifdef STDC_HEADERS
-# include <stdlib.h>
-# else
- char *malloc ();
- char *realloc ();
-# endif
-#endif /* TANDEM */
-
-/* Define the syntax stuff for \<, \>, etc. */
-
-/* This must be nonzero for the wordchar and notwordchar pattern
- commands in re_match_2. */
-#ifndef Sword
-#define Sword 1
-#endif
-
-#ifdef SYNTAX_TABLE
-
-extern char *re_syntax_table;
-
-#else /* not SYNTAX_TABLE */
-
-/* How many characters in the character set. */
-#define CHAR_SET_SIZE 256
-
-static char re_syntax_table[CHAR_SET_SIZE];
-
-static void
-init_syntax_once ()
-{
- register int c;
- static int done = 0;
-
- if (done)
- return;
-
- bzero (re_syntax_table, sizeof re_syntax_table);
-
- for (c = 'a'; c <= 'z'; c++)
- re_syntax_table[c] = Sword;
-
- for (c = 'A'; c <= 'Z'; c++)
- re_syntax_table[c] = Sword;
-
- for (c = '0'; c <= '9'; c++)
- re_syntax_table[c] = Sword;
-
- re_syntax_table['_'] = Sword;
-
- done = 1;
-}
-
-#endif /* not SYNTAX_TABLE */
-
-#define SYNTAX(c) re_syntax_table[c]
-
-#endif /* not emacs */
-
-/* Get the interface, including the syntax bits. */
-#include "regex.h"
-
-/* isalpha etc. are used for the character classes. */
-#include <ctype.h>
-
-#ifndef isascii
-#define isascii(c) 1
-#endif
-
-#ifdef isblank
-#define ISBLANK(c) (isascii (c) && isblank (c))
-#else
-#define ISBLANK(c) ((c) == ' ' || (c) == '\t')
-#endif
-#ifdef isgraph
-#define ISGRAPH(c) (isascii (c) && isgraph (c))
-#else
-#define ISGRAPH(c) (isascii (c) && isprint (c) && !isspace (c))
-#endif
-
-#define ISPRINT(c) (isascii (c) && isprint (c))
-#define ISDIGIT(c) (isascii (c) && isdigit (c))
-#define ISALNUM(c) (isascii (c) && isalnum (c))
-#define ISALPHA(c) (isascii (c) && isalpha (c))
-#define ISCNTRL(c) (isascii (c) && iscntrl (c))
-#define ISLOWER(c) (isascii (c) && islower (c))
-#define ISPUNCT(c) (isascii (c) && ispunct (c))
-#define ISSPACE(c) (isascii (c) && isspace (c))
-#define ISUPPER(c) (isascii (c) && isupper (c))
-#define ISXDIGIT(c) (isascii (c) && isxdigit (c))
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-/* We remove any previous definition of `SIGN_EXTEND_CHAR',
- since ours (we hope) works properly with all combinations of
- machines, compilers, `char' and `unsigned char' argument types.
- (Per Bothner suggested the basic approach.) */
-#undef SIGN_EXTEND_CHAR
-#if __STDC__
-#define SIGN_EXTEND_CHAR(c) ((signed char) (c))
-#else /* not __STDC__ */
-/* As in Harbison and Steele. */
-#define SIGN_EXTEND_CHAR(c) ((((unsigned char) (c)) ^ 128) - 128)
-#endif
-
-/* Should we use malloc or alloca? If REGEX_MALLOC is not defined, we
- use `alloca' instead of `malloc'. This is because using malloc in
- re_search* or re_match* could cause memory leaks when C-g is used in
- Emacs; also, malloc is slower and causes storage fragmentation. On
- the other hand, malloc is more portable, and easier to debug.
-
- Because we sometimes use alloca, some routines have to be macros,
- not functions -- `alloca'-allocated space disappears at the end of the
- function it is called in. */
-
-#ifdef __TANDEM
-#define REGEX_MALLOC 1
-#endif
-
-#ifdef REGEX_MALLOC
-
-#define REGEX_ALLOCATE malloc
-#define DESTINATION_DECL
-#define REGEX_REALLOCATE(source, osize, nsize) realloc (source, nsize)
-
-#else /* not REGEX_MALLOC */
-
-/* Emacs already defines alloca, sometimes. */
-#ifndef alloca
-
-/* Make alloca work the best possible way. */
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not __GNUC__ */
-#if HAVE_ALLOCA_H
-#include <alloca.h>
-#else /* not __GNUC__ or HAVE_ALLOCA_H */
-#ifndef _AIX /* Already did AIX, up at the top. */
-char *alloca ();
-#endif /* not _AIX */
-#endif /* not HAVE_ALLOCA_H */
-#endif /* not __GNUC__ */
-
-#endif /* not alloca */
-
-#define REGEX_ALLOCATE alloca
-#define DESTINATION_DECL char* destination;
-
-/* Assumes a `char *destination' variable. */
-#define REGEX_REALLOCATE(source, osize, nsize) \
- (destination = (char *) alloca (nsize), \
- bcopy (source, destination, osize), \
- destination)
-
-#endif /* not REGEX_MALLOC */
-
-
-/* True if `size1' is non-NULL and PTR is pointing anywhere inside
- `string1' or just past its end. This works if PTR is NULL, which is
- a good thing. */
-#define FIRST_STRING_P(ptr) \
- (size1 && string1 <= (ptr) && (ptr) <= string1 + size1)
-
-/* (Re)Allocate N items of type T using malloc, or fail. */
-#define TALLOC(n, t) ((t *) malloc ((n) * sizeof (t)))
-#define RETALLOC(addr, n, t) ((addr) = (t *) realloc (addr, (n) * sizeof (t)))
-#define REGEX_TALLOC(n, t) ((t *) REGEX_ALLOCATE ((n) * sizeof (t)))
-
-#define BYTEWIDTH 8 /* In bits. */
-
-#define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
-
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-
-typedef char boolean;
-#define false 0
-#define true 1
-
-/* These are the command codes that appear in compiled regular
- expressions. Some opcodes are followed by argument bytes. A
- command code can specify any interpretation whatsoever for its
- arguments. Zero bytes may appear in the compiled regular expression.
-
- The value of `exactn' is needed in search.c (search_buffer) in Emacs.
- So regex.h defines a symbol `RE_EXACTN_VALUE' to be 1; the value of
- `exactn' we use here must also be 1. */
-
-typedef enum
-{
- no_op = 0,
-
- /* Followed by one byte giving n, then by n literal bytes. */
- exactn = 1,
-
- /* Matches any (more or less) character. */
- anychar,
-
- /* Matches any one char belonging to specified set. First
- following byte is number of bitmap bytes. Then come bytes
- for a bitmap saying which chars are in. Bits in each byte
- are ordered low-bit-first. A character is in the set if its
- bit is 1. A character too large to have a bit in the map is
- automatically not in the set. */
- charset,
-
- /* Same parameters as charset, but match any character that is
- not one of those specified. */
- charset_not,
-
- /* Start remembering the text that is matched, for storing in a
- register. Followed by one byte with the register number, in
- the range 0 to one less than the pattern buffer's re_nsub
- field. Then followed by one byte with the number of groups
- inner to this one. (This last has to be part of the
- start_memory only because we need it in the on_failure_jump
- of re_match_2.) */
- start_memory,
-
- /* Stop remembering the text that is matched and store it in a
- memory register. Followed by one byte with the register
- number, in the range 0 to one less than `re_nsub' in the
- pattern buffer, and one byte with the number of inner groups,
- just like `start_memory'. (We need the number of inner
- groups here because we don't have any easy way of finding the
- corresponding start_memory when we're at a stop_memory.) */
- stop_memory,
-
- /* Match a duplicate of something remembered. Followed by one
- byte containing the register number. */
- duplicate,
-
- /* Fail unless at beginning of line. */
- begline,
-
- /* Fail unless at end of line. */
- endline,
-
- /* Succeeds if at beginning of buffer (if emacs) or at beginning
- of string to be matched (if not). */
- begbuf,
-
- /* Analogously, for end of buffer/string. */
- endbuf,
-
- /* Followed by two byte relative address to which to jump. */
- jump,
-
- /* Same as jump, but marks the end of an alternative. */
- jump_past_alt,
-
- /* Followed by two-byte relative address of place to resume at
- in case of failure. */
- on_failure_jump,
-
- /* Like on_failure_jump, but pushes a placeholder instead of the
- current string position when executed. */
- on_failure_keep_string_jump,
-
- /* Throw away latest failure point and then jump to following
- two-byte relative address. */
- pop_failure_jump,
-
- /* Change to pop_failure_jump if know won't have to backtrack to
- match; otherwise change to jump. This is used to jump
- back to the beginning of a repeat. If what follows this jump
- clearly won't match what the repeat does, such that we can be
- sure that there is no use backtracking out of repetitions
- already matched, then we change it to a pop_failure_jump.
- Followed by two-byte address. */
- maybe_pop_jump,
-
- /* Jump to following two-byte address, and push a dummy failure
- point. This failure point will be thrown away if an attempt
- is made to use it for a failure. A `+' construct makes this
- before the first repeat. Also used as an intermediary kind
- of jump when compiling an alternative. */
- dummy_failure_jump,
-
- /* Push a dummy failure point and continue. Used at the end of
- alternatives. */
- push_dummy_failure,
-
- /* Followed by two-byte relative address and two-byte number n.
- After matching N times, jump to the address upon failure. */
- succeed_n,
-
- /* Followed by two-byte relative address, and two-byte number n.
- Jump to the address N times, then fail. */
- jump_n,
-
- /* Set the following two-byte relative address to the
- subsequent two-byte number. The address *includes* the two
- bytes of number. */
- set_number_at,
-
- wordchar, /* Matches any word-constituent character. */
- notwordchar, /* Matches any char that is not a word-constituent. */
-
- wordbeg, /* Succeeds if at word beginning. */
- wordend, /* Succeeds if at word end. */
-
- wordbound, /* Succeeds if at a word boundary. */
- notwordbound /* Succeeds if not at a word boundary. */
-
-#ifdef emacs
- ,before_dot, /* Succeeds if before point. */
- at_dot, /* Succeeds if at point. */
- after_dot, /* Succeeds if after point. */
-
- /* Matches any character whose syntax is specified. Followed by
- a byte which contains a syntax code, e.g., Sword. */
- syntaxspec,
-
- /* Matches any character whose syntax is not that specified. */
- notsyntaxspec
-#endif /* emacs */
-} re_opcode_t;
-
-/* Common operations on the compiled pattern. */
-
-/* Store NUMBER in two contiguous bytes starting at DESTINATION. */
-
-#define STORE_NUMBER(destination, number) \
- do { \
- (destination)[0] = (unsigned char)((number) & 0377); \
- (destination)[1] = (unsigned char)((number) >> 8); \
- } while (0)
-
-/* Same as STORE_NUMBER, except increment DESTINATION to
- the byte after where the number is stored. Therefore, DESTINATION
- must be an lvalue. */
-
-#define STORE_NUMBER_AND_INCR(destination, number) \
- do { \
- STORE_NUMBER (destination, number); \
- (destination) += 2; \
- } while (0)
-
-/* Put into DESTINATION a number stored in two contiguous bytes starting
- at SOURCE. */
-
-#define EXTRACT_NUMBER(destination, source) \
- do { \
- (destination) = *(source) & 0377; \
- (destination) += SIGN_EXTEND_CHAR (*((source) + 1)) << 8; \
- } while (0)
-
-#ifdef DEBUG
-static void
-extract_number (dest, source)
- int *dest;
- unsigned char *source;
-{
- int temp = SIGN_EXTEND_CHAR (*(source + 1));
- *dest = *source & 0377;
- *dest += temp << 8;
-}
-
-#ifndef EXTRACT_MACROS /* To debug the macros. */
-#undef EXTRACT_NUMBER
-#define EXTRACT_NUMBER(dest, src) extract_number (&dest, src)
-#endif /* not EXTRACT_MACROS */
-
-#endif /* DEBUG */
-
-/* Same as EXTRACT_NUMBER, except increment SOURCE to after the number.
- SOURCE must be an lvalue. */
-
-#define EXTRACT_NUMBER_AND_INCR(destination, source) \
- do { \
- EXTRACT_NUMBER (destination, source); \
- (source) += 2; \
- } while (0)
-
-#ifdef DEBUG
-static void
-extract_number_and_incr (destination, source)
- int *destination;
- unsigned char **source;
-{
- extract_number (destination, *source);
- *source += 2;
-}
-
-#ifndef EXTRACT_MACROS
-#undef EXTRACT_NUMBER_AND_INCR
-#define EXTRACT_NUMBER_AND_INCR(dest, src) \
- extract_number_and_incr (&dest, &src)
-#endif /* not EXTRACT_MACROS */
-
-#endif /* DEBUG */
-
-/* If DEBUG is defined, Regex prints many voluminous messages about what
- it is doing (if the variable `debug' is nonzero). If linked with the
- main program in `iregex.c', you can enter patterns and strings
- interactively. And if linked with the main program in `main.c' and
- the other test files, you can run the already-written tests. */
-
-#ifdef DEBUG
-
-/* We use standard I/O for debugging. */
-#include <stdio.h>
-
-/* It is useful to test things that ``must'' be true when debugging. */
-#include <assert.h>
-
-static int debug = 0;
-
-#define DEBUG_STATEMENT(e) e
-#define DEBUG_PRINT1(x) if (debug) printf (x)
-#define DEBUG_PRINT2(x1, x2) if (debug) printf (x1, x2)
-#define DEBUG_PRINT3(x1, x2, x3) if (debug) printf (x1, x2, x3)
-#define DEBUG_PRINT4(x1, x2, x3, x4) if (debug) printf (x1, x2, x3, x4)
-#define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) \
- if (debug) print_partial_compiled_pattern (s, e)
-#define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2) \
- if (debug) print_double_string (w, s1, sz1, s2, sz2)
-
-
-extern void printchar ();
-
-/* Print the fastmap in human-readable form. */
-
-void
-print_fastmap (fastmap)
- char *fastmap;
-{
- unsigned was_a_range = 0;
- unsigned i = 0;
-
- while (i < (1 << BYTEWIDTH))
- {
- if (fastmap[i++])
- {
- was_a_range = 0;
- printchar (i - 1);
- while (i < (1 << BYTEWIDTH) && fastmap[i])
- {
- was_a_range = 1;
- i++;
- }
- if (was_a_range)
- {
- printf ("-");
- printchar (i - 1);
- }
- }
- }
- putchar ('\n');
-}
-
-
-/* Print a compiled pattern string in human-readable form, starting at
- the START pointer into it and ending just before the pointer END. */
-
-void
-print_partial_compiled_pattern (start, end)
- unsigned char *start;
- unsigned char *end;
-{
- int mcnt, mcnt2;
- unsigned char *p = start;
- unsigned char *pend = end;
-
- if (start == NULL)
- {
- printf ("(null)\n");
- return;
- }
-
- /* Loop over pattern commands. */
- while (p < pend)
- {
- switch ((re_opcode_t) *p++)
- {
- case no_op:
- printf ("/no_op");
- break;
-
- case exactn:
- mcnt = *p++;
- printf ("/exactn/%d", mcnt);
- do
- {
- putchar ('/');
- printchar (*p++);
- }
- while (--mcnt);
- break;
-
- case start_memory:
- mcnt = *p++;
- printf ("/start_memory/%d/%d", mcnt, *p++);
- break;
-
- case stop_memory:
- mcnt = *p++;
- printf ("/stop_memory/%d/%d", mcnt, *p++);
- break;
-
- case duplicate:
- printf ("/duplicate/%d", *p++);
- break;
-
- case anychar:
- printf ("/anychar");
- break;
-
- case charset:
- case charset_not:
- {
- register int c;
-
- printf ("/charset%s",
- (re_opcode_t) *(p - 1) == charset_not ? "_not" : "");
-
- assert (p + *p < pend);
-
- for (c = 0; c < *p; c++)
- {
- unsigned bit;
- unsigned char map_byte = p[1 + c];
-
- putchar ('/');
-
- for (bit = 0; bit < BYTEWIDTH; bit++)
- if (map_byte & (1 << bit))
- printchar (c * BYTEWIDTH + bit);
- }
- p += 1 + *p;
- break;
- }
-
- case begline:
- printf ("/begline");
- break;
-
- case endline:
- printf ("/endline");
- break;
-
- case on_failure_jump:
- extract_number_and_incr (&mcnt, &p);
- printf ("/on_failure_jump/0/%d", mcnt);
- break;
-
- case on_failure_keep_string_jump:
- extract_number_and_incr (&mcnt, &p);
- printf ("/on_failure_keep_string_jump/0/%d", mcnt);
- break;
-
- case dummy_failure_jump:
- extract_number_and_incr (&mcnt, &p);
- printf ("/dummy_failure_jump/0/%d", mcnt);
- break;
-
- case push_dummy_failure:
- printf ("/push_dummy_failure");
- break;
-
- case maybe_pop_jump:
- extract_number_and_incr (&mcnt, &p);
- printf ("/maybe_pop_jump/0/%d", mcnt);
- break;
-
- case pop_failure_jump:
- extract_number_and_incr (&mcnt, &p);
- printf ("/pop_failure_jump/0/%d", mcnt);
- break;
-
- case jump_past_alt:
- extract_number_and_incr (&mcnt, &p);
- printf ("/jump_past_alt/0/%d", mcnt);
- break;
-
- case jump:
- extract_number_and_incr (&mcnt, &p);
- printf ("/jump/0/%d", mcnt);
- break;
-
- case succeed_n:
- extract_number_and_incr (&mcnt, &p);
- extract_number_and_incr (&mcnt2, &p);
- printf ("/succeed_n/0/%d/0/%d", mcnt, mcnt2);
- break;
-
- case jump_n:
- extract_number_and_incr (&mcnt, &p);
- extract_number_and_incr (&mcnt2, &p);
- printf ("/jump_n/0/%d/0/%d", mcnt, mcnt2);
- break;
-
- case set_number_at:
- extract_number_and_incr (&mcnt, &p);
- extract_number_and_incr (&mcnt2, &p);
- printf ("/set_number_at/0/%d/0/%d", mcnt, mcnt2);
- break;
-
- case wordbound:
- printf ("/wordbound");
- break;
-
- case notwordbound:
- printf ("/notwordbound");
- break;
-
- case wordbeg:
- printf ("/wordbeg");
- break;
-
- case wordend:
- printf ("/wordend");
-
-#ifdef emacs
- case before_dot:
- printf ("/before_dot");
- break;
-
- case at_dot:
- printf ("/at_dot");
- break;
-
- case after_dot:
- printf ("/after_dot");
- break;
-
- case syntaxspec:
- printf ("/syntaxspec");
- mcnt = *p++;
- printf ("/%d", mcnt);
- break;
-
- case notsyntaxspec:
- printf ("/notsyntaxspec");
- mcnt = *p++;
- printf ("/%d", mcnt);
- break;
-#endif /* emacs */
-
- case wordchar:
- printf ("/wordchar");
- break;
-
- case notwordchar:
- printf ("/notwordchar");
- break;
-
- case begbuf:
- printf ("/begbuf");
- break;
-
- case endbuf:
- printf ("/endbuf");
- break;
-
- default:
- printf ("?%d", *(p-1));
- }
- }
- printf ("/\n");
-}
-
-
-void
-print_compiled_pattern (bufp)
- struct re_pattern_buffer *bufp;
-{
- unsigned char *buffer = bufp->buffer;
-
- print_partial_compiled_pattern (buffer, buffer + bufp->used);
- printf ("%d bytes used/%d bytes allocated.\n", bufp->used, bufp->allocated);
-
- if (bufp->fastmap_accurate && bufp->fastmap)
- {
- printf ("fastmap: ");
- print_fastmap (bufp->fastmap);
- }
-
- printf ("re_nsub: %d\t", bufp->re_nsub);
- printf ("regs_alloc: %d\t", bufp->regs_allocated);
- printf ("can_be_null: %d\t", bufp->can_be_null);
- printf ("newline_anchor: %d\n", bufp->newline_anchor);
- printf ("no_sub: %d\t", bufp->no_sub);
- printf ("not_bol: %d\t", bufp->not_bol);
- printf ("not_eol: %d\t", bufp->not_eol);
- printf ("syntax: %d\n", bufp->syntax);
- /* Perhaps we should print the translate table? */
-}
-
-
-void
-print_double_string (where, string1, size1, string2, size2)
- const char *where;
- const char *string1;
- const char *string2;
- int size1;
- int size2;
-{
- unsigned this_char;
-
- if (where == NULL)
- printf ("(null)");
- else
- {
- if (FIRST_STRING_P (where))
- {
- for (this_char = where - string1; this_char < size1; this_char++)
- printchar (string1[this_char]);
-
- where = string2;
- }
-
- for (this_char = where - string2; this_char < size2; this_char++)
- printchar (string2[this_char]);
- }
-}
-
-#else /* not DEBUG */
-
-#undef assert
-#define assert(e)
-
-#define DEBUG_STATEMENT(e)
-#define DEBUG_PRINT1(x)
-#define DEBUG_PRINT2(x1, x2)
-#define DEBUG_PRINT3(x1, x2, x3)
-#define DEBUG_PRINT4(x1, x2, x3, x4)
-#define DEBUG_PRINT_COMPILED_PATTERN(p, s, e)
-#define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2)
-
-#endif /* not DEBUG */
-
-/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can
- also be assigned to arbitrarily: each pattern buffer stores its own
- syntax, so it can be changed between regex compilations. */
-reg_syntax_t re_syntax_options = RE_SYNTAX_EMACS;
-
-
-/* Specify the precise syntax of regexps for compilation. This provides
- for compatibility for various utilities which historically have
- different, incompatible syntaxes.
-
- The argument SYNTAX is a bit mask comprised of the various bits
- defined in regex.h. We return the old syntax. */
-
-reg_syntax_t
-re_set_syntax (syntax)
- reg_syntax_t syntax;
-{
- reg_syntax_t ret = re_syntax_options;
-
- re_syntax_options = syntax;
- return ret;
-}
-
-/* This table gives an error message for each of the error codes listed
- in regex.h. Obviously the order here has to be same as there. */
-#define _RERR_(n,t) t,
-static const char *re_error_msg[] = { REG_ERR_TABLE };
-# undef _RERR_
-
-/* Subroutine declarations and macros for regex_compile. */
-
-/* Fetch the next character in the uncompiled pattern---translating it
- if necessary. Also cast from a signed character in the constant
- string passed to us by the user to an unsigned char that we can use
- as an array index (in, e.g., `translate'). */
-#define PATFETCH(c) \
- do {if (p == pend) return REG_EEND; \
- c = (unsigned char) *p++; \
- if (translate) c = translate[c]; \
- } while (0)
-
-/* Fetch the next character in the uncompiled pattern, with no
- translation. */
-#define PATFETCH_RAW(c) \
- do {if (p == pend) return REG_EEND; \
- c = (unsigned char) *p++; \
- } while (0)
-
-/* Go backwards one character in the pattern. */
-#define PATUNFETCH p--
-
-
-/* If `translate' is non-null, return translate[D], else just D. We
- cast the subscript to translate because some data is declared as
- `char *', to avoid warnings when a string constant is passed. But
- when we use a character as a subscript we must make it unsigned. */
-#define TRANSLATE(d) (translate ? translate[(unsigned char) (d)] : (d))
-
-
-/* Macros for outputting the compiled pattern into `buffer'. */
-
-/* If the buffer isn't allocated when it comes in, use this. */
-#define INIT_BUF_SIZE 32
-
-/* Make sure we have at least N more bytes of space in buffer. */
-#define GET_BUFFER_SPACE(n) \
- while (b - bufp->buffer + (n) > bufp->allocated) \
- EXTEND_BUFFER ()
-
-/* Make sure we have one more byte of buffer space and then add C to it. */
-#define BUF_PUSH(c) \
- do { \
- GET_BUFFER_SPACE (1); \
- *b++ = (unsigned char) (c); \
- } while (0)
-
-
-/* Ensure we have two more bytes of buffer space and then append C1 and C2. */
-#define BUF_PUSH_2(c1, c2) \
- do { \
- GET_BUFFER_SPACE (2); \
- *b++ = (unsigned char) (c1); \
- *b++ = (unsigned char) (c2); \
- } while (0)
-
-
-/* As with BUF_PUSH_2, except for three bytes. */
-#define BUF_PUSH_3(c1, c2, c3) \
- do { \
- GET_BUFFER_SPACE (3); \
- *b++ = (unsigned char) (c1); \
- *b++ = (unsigned char) (c2); \
- *b++ = (unsigned char) (c3); \
- } while (0)
-
-
-/* Store a jump with opcode OP at LOC to location TO. We store a
- relative address offset by the three bytes the jump itself occupies. */
-#define STORE_JUMP(op, loc, to) \
- store_op1 (op, loc, (to) - (loc) - 3)
-
-/* Likewise, for a two-argument jump. */
-#define STORE_JUMP2(op, loc, to, arg) \
- store_op2 (op, loc, (to) - (loc) - 3, arg)
-
-/* Like `STORE_JUMP', but for inserting. Assume `b' is the buffer end. */
-#define INSERT_JUMP(op, loc, to) \
- insert_op1 (op, loc, (to) - (loc) - 3, b)
-
-/* Like `STORE_JUMP2', but for inserting. Assume `b' is the buffer end. */
-#define INSERT_JUMP2(op, loc, to, arg) \
- insert_op2 (op, loc, (to) - (loc) - 3, arg, b)
-
-
-/* This is not an arbitrary limit: the arguments which represent offsets
- into the pattern are two bytes long. So if 2^16 bytes turns out to
- be too small, many things would have to change. */
-#define MAX_BUF_SIZE (1L << 16)
-
-
-/* Extend the buffer by twice its current size via realloc and
- reset the pointers that pointed into the old block to point to the
- correct places in the new one. If extending the buffer results in it
- being larger than MAX_BUF_SIZE, then flag memory exhausted. */
-#define EXTEND_BUFFER() \
- do { \
- unsigned char *old_buffer = bufp->buffer; \
- if (bufp->allocated == MAX_BUF_SIZE) \
- return REG_ESIZE; \
- bufp->allocated <<= 1; \
- if (bufp->allocated > MAX_BUF_SIZE) \
- bufp->allocated = MAX_BUF_SIZE; \
- bufp->buffer = (unsigned char *) realloc (bufp->buffer, bufp->allocated);\
- if (bufp->buffer == NULL) \
- return REG_ESPACE; \
- /* If the buffer moved, move all the pointers into it. */ \
- if (old_buffer != bufp->buffer) \
- { \
- b = (b - old_buffer) + bufp->buffer; \
- begalt = (begalt - old_buffer) + bufp->buffer; \
- if (fixup_alt_jump) \
- fixup_alt_jump = (fixup_alt_jump - old_buffer) + bufp->buffer;\
- if (laststart) \
- laststart = (laststart - old_buffer) + bufp->buffer; \
- if (pending_exact) \
- pending_exact = (pending_exact - old_buffer) + bufp->buffer; \
- } \
- } while (0)
-
-
-/* Since we have one byte reserved for the register number argument to
- {start,stop}_memory, the maximum number of groups we can report
- things about is what fits in that byte. */
-#define MAX_REGNUM 255
-
-/* But patterns can have more than `MAX_REGNUM' registers. We just
- ignore the excess. */
-typedef unsigned regnum_t;
-
-
-/* Macros for the compile stack. */
-
-/* Since offsets can go either forwards or backwards, this type needs to
- be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */
-typedef int pattern_offset_t;
-
-typedef struct
-{
- pattern_offset_t begalt_offset;
- pattern_offset_t fixup_alt_jump;
- pattern_offset_t inner_group_offset;
- pattern_offset_t laststart_offset;
- regnum_t regnum;
-} compile_stack_elt_t;
-
-
-typedef struct
-{
- compile_stack_elt_t *stack;
- unsigned size;
- unsigned avail; /* Offset of next open position. */
-} compile_stack_type;
-
-
-#define INIT_COMPILE_STACK_SIZE 32
-
-#define COMPILE_STACK_EMPTY (compile_stack.avail == 0)
-#define COMPILE_STACK_FULL (compile_stack.avail == compile_stack.size)
-
-/* The next available element. */
-#define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail])
-
-#ifdef __TANDEM
-#define TYPED_SET_LIST_BIT(c) \
- (b[(c) / BYTEWIDTH] |= (unsigned char) (1 << ((c) % BYTEWIDTH)))
-
-/* Set the bit for character C in a list. */
-#define SET_LIST_BIT(c) TYPED_SET_LIST_BIT((unsigned char)c)
-#else
-/* Set the bit for character C in a list. */
-#define SET_LIST_BIT(c) \
- (b[((unsigned char) (c)) / BYTEWIDTH] \
- |= 1 << (((unsigned char) c) % BYTEWIDTH))
-#endif
-
-/* Get the next unsigned number in the uncompiled pattern. */
-#define GET_UNSIGNED_NUMBER(num) \
- { if (p != pend) \
- { \
- PATFETCH (c); \
- while (ISDIGIT (c)) \
- { \
- if (num < 0) \
- num = 0; \
- num = num * 10 + c - '0'; \
- if (p == pend) \
- break; \
- PATFETCH (c); \
- } \
- } \
- }
-
-#define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */
-
-#define IS_CHAR_CLASS(string) \
- (STREQ (string, "alpha") || STREQ (string, "upper") \
- || STREQ (string, "lower") || STREQ (string, "digit") \
- || STREQ (string, "alnum") || STREQ (string, "xdigit") \
- || STREQ (string, "space") || STREQ (string, "print") \
- || STREQ (string, "punct") || STREQ (string, "graph") \
- || STREQ (string, "cntrl") || STREQ (string, "blank"))
-
-static void store_op1 (), store_op2 ();
-static void insert_op1 (), insert_op2 ();
-static boolean at_begline_loc_p (), at_endline_loc_p ();
-#ifndef __TANDEM
-static boolean group_in_compile_stack ();
-#else
-static boolean group_in_compile_stack (compile_stack_type*, regnum_t);
-#endif
-static reg_errcode_t compile_range ();
-
-
-/* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX.
- Returns one of error codes defined in `regex.h', or zero for success.
-
- Assumes the `allocated' (and perhaps `buffer') and `translate'
- fields are set in BUFP on entry.
-
- If it succeeds, results are put in BUFP (if it returns an error, the
- contents of BUFP are undefined):
- `buffer' is the compiled pattern;
- `syntax' is set to SYNTAX;
- `used' is set to the length of the compiled pattern;
- `fastmap_accurate' is zero;
- `re_nsub' is the number of subexpressions in PATTERN;
- `not_bol' and `not_eol' are zero;
-
- The `fastmap' and `newline_anchor' fields are neither
- examined nor set. */
-
-static reg_errcode_t
-regex_compile (pattern, size, syntax, bufp)
- const char *pattern;
- int size;
- reg_syntax_t syntax;
- struct re_pattern_buffer *bufp;
-{
- /* We fetch characters from PATTERN here. Even though PATTERN is
- `char *' (i.e., signed), we declare these variables as unsigned, so
- they can be reliably used as array indices. */
- register unsigned char c, c1;
-
- /* A random tempory spot in PATTERN. */
- const char *p1;
-
- /* Points to the end of the buffer, where we should append. */
- register unsigned char *b;
-
- /* Keeps track of unclosed groups. */
- compile_stack_type compile_stack;
-
- /* Points to the current (ending) position in the pattern. */
- const char *p = pattern;
- const char *pend = pattern + size;
-
- /* How to translate the characters in the pattern. */
- char *translate = bufp->translate;
-
- /* Address of the count-byte of the most recently inserted `exactn'
- command. This makes it possible to tell if a new exact-match
- character can be added to that command or if the character requires
- a new `exactn' command. */
- unsigned char *pending_exact = 0;
-
- /* Address of start of the most recently finished expression.
- This tells, e.g., postfix * where to find the start of its
- operand. Reset at the beginning of groups and alternatives. */
- unsigned char *laststart = 0;
-
- /* Address of beginning of regexp, or inside of last group. */
- unsigned char *begalt;
-
- /* Place in the uncompiled pattern (i.e., the {) to
- which to go back if the interval is invalid. */
- const char *beg_interval;
-
- /* Address of the place where a forward jump should go to the end of
- the containing expression. Each alternative of an `or' -- except the
- last -- ends with a forward jump of this sort. */
- unsigned char *fixup_alt_jump = 0;
-
- /* Counts open-groups as they are encountered. Remembered for the
- matching close-group on the compile stack, so the same register
- number is put in the stop_memory as the start_memory. */
- regnum_t regnum = 0;
-
-#ifdef DEBUG
- DEBUG_PRINT1 ("\nCompiling pattern: ");
- if (debug)
- {
- unsigned debug_count;
-
- for (debug_count = 0; debug_count < size; debug_count++)
- printchar (pattern[debug_count]);
- putchar ('\n');
- }
-#endif /* DEBUG */
-
- /* Initialize the compile stack. */
- compile_stack.stack = TALLOC (INIT_COMPILE_STACK_SIZE, compile_stack_elt_t);
- if (compile_stack.stack == NULL)
- return REG_ESPACE;
-
- compile_stack.size = INIT_COMPILE_STACK_SIZE;
- compile_stack.avail = 0;
-
- /* Initialize the pattern buffer. */
- bufp->syntax = syntax;
- bufp->fastmap_accurate = 0;
- bufp->not_bol = bufp->not_eol = 0;
-
- /* Set `used' to zero, so that if we return an error, the pattern
- printer (for debugging) will think there's no pattern. We reset it
- at the end. */
- bufp->used = 0;
-
- /* Always count groups, whether or not bufp->no_sub is set. */
- bufp->re_nsub = 0;
-
-#if !defined (emacs) && !defined (SYNTAX_TABLE)
- /* Initialize the syntax table. */
-#ifdef __TANDEM
- /*
- * How can any compiler be so amazingly brain dead?
- */
-#pragma NOWARN( 95 )
-#endif
- init_syntax_once ();
-#endif
-
- if (bufp->allocated == 0)
- {
- if (bufp->buffer)
- { /* If zero allocated, but buffer is non-null, try to realloc
- enough space. This loses if buffer's address is bogus, but
- that is the user's responsibility. */
- RETALLOC (bufp->buffer, INIT_BUF_SIZE, unsigned char);
- }
- else
- { /* Caller did not allocate a buffer. Do it for them. */
- bufp->buffer = TALLOC (INIT_BUF_SIZE, unsigned char);
- }
- if (!bufp->buffer) return REG_ESPACE;
-
- bufp->allocated = INIT_BUF_SIZE;
- }
-
- begalt = b = bufp->buffer;
-
- /* Loop through the uncompiled pattern until we're at the end. */
- while (p != pend)
- {
- PATFETCH (c);
-
- switch (c)
- {
- case '^':
- {
- if ( /* If at start of pattern, it's an operator. */
- p == pattern + 1
- /* If context independent, it's an operator. */
- || syntax & RE_CONTEXT_INDEP_ANCHORS
- /* Otherwise, depends on what's come before. */
- || at_begline_loc_p (pattern, p, syntax))
- BUF_PUSH (begline);
- else
- goto normal_char;
- }
- break;
-
-
- case '$':
- {
- if ( /* If at end of pattern, it's an operator. */
- p == pend
- /* If context independent, it's an operator. */
- || syntax & RE_CONTEXT_INDEP_ANCHORS
- /* Otherwise, depends on what's next. */
- || at_endline_loc_p (p, pend, syntax))
- BUF_PUSH (endline);
- else
- goto normal_char;
- }
- break;
-
-
- case '+':
- case '?':
- if ((syntax & RE_BK_PLUS_QM)
- || (syntax & RE_LIMITED_OPS))
- goto normal_char;
- handle_plus:
- case '*':
- /* If there is no previous pattern... */
- if (!laststart)
- {
- if (syntax & RE_CONTEXT_INVALID_OPS)
- return REG_BADRPT;
- else if (!(syntax & RE_CONTEXT_INDEP_OPS))
- goto normal_char;
- }
-
- {
- /* Are we optimizing this jump? */
- boolean keep_string_p = false;
-
- /* 1 means zero (many) matches is allowed. */
- char zero_times_ok = 0, many_times_ok = 0;
-
- /* If there is a sequence of repetition chars, collapse it
- down to just one (the right one). We can't combine
- interval operators with these because of, e.g., `a{2}*',
- which should only match an even number of `a's. */
-
- for (;;)
- {
- zero_times_ok |= c != '+';
- many_times_ok |= c != '?';
-
- if (p == pend)
- break;
-
- PATFETCH (c);
-
- if (c == '*'
- || (!(syntax & RE_BK_PLUS_QM) && (c == '+' || c == '?')))
- ;
-
- else if (syntax & RE_BK_PLUS_QM && c == '\\')
- {
- if (p == pend) return REG_EESCAPE;
-
- PATFETCH (c1);
- if (!(c1 == '+' || c1 == '?'))
- {
- PATUNFETCH;
- PATUNFETCH;
- break;
- }
-
- c = c1;
- }
- else
- {
- PATUNFETCH;
- break;
- }
-
- /* If we get here, we found another repeat character. */
- }
-
- /* Star, etc. applied to an empty pattern is equivalent
- to an empty pattern. */
- if (!laststart)
- break;
-
- /* Now we know whether or not zero matches is allowed
- and also whether or not two or more matches is allowed. */
- if (many_times_ok)
- { /* More than one repetition is allowed, so put in at the
- end a backward relative jump from `b' to before the next
- jump we're going to put in below (which jumps from
- laststart to after this jump).
-
- But if we are at the `*' in the exact sequence `.*\n',
- insert an unconditional jump backwards to the .,
- instead of the beginning of the loop. This way we only
- push a failure point once, instead of every time
- through the loop. */
- assert (p - 1 > pattern);
-
- /* Allocate the space for the jump. */
- GET_BUFFER_SPACE (3);
-
- /* We know we are not at the first character of the pattern,
- because laststart was nonzero. And we've already
- incremented `p', by the way, to be the character after
- the `*'. Do we have to do something analogous here
- for null bytes, because of RE_DOT_NOT_NULL? */
- if (TRANSLATE (*(p - 2)) == TRANSLATE ('.')
- && zero_times_ok
- && p < pend && TRANSLATE (*p) == TRANSLATE ('\n')
- && !(syntax & RE_DOT_NEWLINE))
- { /* We have .*\n. */
- STORE_JUMP (jump, b, laststart);
- keep_string_p = true;
- }
- else
- /* Anything else. */
- STORE_JUMP (maybe_pop_jump, b, laststart - 3);
-
- /* We've added more stuff to the buffer. */
- b += 3;
- }
-
- /* On failure, jump from laststart to b + 3, which will be the
- end of the buffer after this jump is inserted. */
- GET_BUFFER_SPACE (3);
- INSERT_JUMP (keep_string_p ? on_failure_keep_string_jump
- : on_failure_jump,
- laststart, b + 3);
- pending_exact = 0;
- b += 3;
-
- if (!zero_times_ok)
- {
- /* At least one repetition is required, so insert a
- `dummy_failure_jump' before the initial
- `on_failure_jump' instruction of the loop. This
- effects a skip over that instruction the first time
- we hit that loop. */
- GET_BUFFER_SPACE (3);
- INSERT_JUMP (dummy_failure_jump, laststart, laststart + 6);
- b += 3;
- }
- }
- break;
-
-
- case '.':
- laststart = b;
- BUF_PUSH (anychar);
- break;
-
-
- case '[':
- {
- boolean had_char_class = false;
-
- if (p == pend) return REG_EBRACK;
-
- /* Ensure that we have enough space to push a charset: the
- opcode, the length count, and the bitset; 34 bytes in all. */
- GET_BUFFER_SPACE (34);
-
- laststart = b;
-
- /* We test `*p == '^' twice, instead of using an if
- statement, so we only need one BUF_PUSH. */
- BUF_PUSH (*p == '^' ? charset_not : charset);
- if (*p == '^')
- p++;
-
- /* Remember the first position in the bracket expression. */
- p1 = p;
-
- /* Push the number of bytes in the bitmap. */
- BUF_PUSH ((1 << BYTEWIDTH) / BYTEWIDTH);
-
- /* Clear the whole map. */
- bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH);
-
- /* charset_not matches newline according to a syntax bit. */
- if ((re_opcode_t) b[-2] == charset_not
- && (syntax & RE_HAT_LISTS_NOT_NEWLINE))
- SET_LIST_BIT ('\n');
-
- /* Read in characters and ranges, setting map bits. */
- for (;;)
- {
- if (p == pend) return REG_EBRACK;
-
- PATFETCH (c);
-
- /* \ might escape characters inside [...] and [^...]. */
- if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\')
- {
- if (p == pend) return REG_EESCAPE;
-
- PATFETCH (c1);
- SET_LIST_BIT (c1);
- continue;
- }
-
- /* Could be the end of the bracket expression. If it's
- not (i.e., when the bracket expression is `[]' so
- far), the ']' character bit gets set way below. */
- if (c == ']' && p != p1 + 1)
- break;
-
- /* Look ahead to see if it's a range when the last thing
- was a character class. */
- if (had_char_class && c == '-' && *p != ']')
- return REG_ERANGE;
-
- /* Look ahead to see if it's a range when the last thing
- was a character: if this is a hyphen not at the
- beginning or the end of a list, then it's the range
- operator. */
- if (c == '-'
- && !(p - 2 >= pattern && p[-2] == '[')
- && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^')
- && *p != ']')
- {
- reg_errcode_t ret
- = compile_range (&p, pend, translate, syntax, b);
- if (ret != REG_NOERROR) return ret;
- }
-
- else if (p[0] == '-' && p[1] != ']')
- { /* This handles ranges made up of characters only. */
- reg_errcode_t ret;
-
- /* Move past the `-'. */
- PATFETCH (c1);
-
- ret = compile_range (&p, pend, translate, syntax, b);
- if (ret != REG_NOERROR) return ret;
- }
-
- /* See if we're at the beginning of a possible character
- class. */
-
- else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':')
- { /* Leave room for the null. */
- char str[CHAR_CLASS_MAX_LENGTH + 1];
-
- PATFETCH (c);
- c1 = 0;
-
- /* If pattern is `[[:'. */
- if (p == pend) return REG_EBRACK;
-
- for (;;)
- {
- PATFETCH (c);
- if (c == ':' || c == ']' || p == pend
- || c1 == CHAR_CLASS_MAX_LENGTH)
- break;
- str[c1++] = c;
- }
- str[c1] = '\0';
-
- /* If isn't a word bracketed by `[:' and:`]':
- undo the ending character, the letters, and leave
- the leading `:' and `[' (but set bits for them). */
- if (c == ':' && *p == ']')
- {
- int ch;
- boolean is_alnum = STREQ (str, "alnum");
- boolean is_alpha = STREQ (str, "alpha");
- boolean is_blank = STREQ (str, "blank");
- boolean is_cntrl = STREQ (str, "cntrl");
- boolean is_digit = STREQ (str, "digit");
- boolean is_graph = STREQ (str, "graph");
- boolean is_lower = STREQ (str, "lower");
- boolean is_print = STREQ (str, "print");
- boolean is_punct = STREQ (str, "punct");
- boolean is_space = STREQ (str, "space");
- boolean is_upper = STREQ (str, "upper");
- boolean is_xdigit = STREQ (str, "xdigit");
-
- if (!IS_CHAR_CLASS (str)) return REG_ECTYPE;
-
- /* Throw away the ] at the end of the character
- class. */
- PATFETCH (c);
-
- if (p == pend) return REG_EBRACK;
-
- for (ch = 0; ch < 1 << BYTEWIDTH; ch++)
- {
- if ( (is_alnum && ISALNUM (ch))
- || (is_alpha && ISALPHA (ch))
- || (is_blank && ISBLANK (ch))
- || (is_cntrl && ISCNTRL (ch))
- || (is_digit && ISDIGIT (ch))
- || (is_graph && ISGRAPH (ch))
- || (is_lower && ISLOWER (ch))
- || (is_print && ISPRINT (ch))
- || (is_punct && ISPUNCT (ch))
- || (is_space && ISSPACE (ch))
- || (is_upper && ISUPPER (ch))
- || (is_xdigit && ISXDIGIT (ch)))
- SET_LIST_BIT (ch);
- }
- had_char_class = true;
- }
- else
- {
- c1++;
- while (c1--)
- PATUNFETCH;
- SET_LIST_BIT ('[');
- SET_LIST_BIT (':');
- had_char_class = false;
- }
- }
- else
- {
- had_char_class = false;
- SET_LIST_BIT (c);
- }
- }
-
- /* Discard any (non)matching list bytes that are all 0 at the
- end of the map. Decrease the map-length byte too. */
- while ((int) b[-1] > 0 && b[b[-1] - 1] == 0)
- b[-1]--;
- b += b[-1];
- }
- break;
-
-
- case '(':
- if (syntax & RE_NO_BK_PARENS)
- goto handle_open;
- else
- goto normal_char;
-
-
- case ')':
- if (syntax & RE_NO_BK_PARENS)
- goto handle_close;
- else
- goto normal_char;
-
-
- case '\n':
- if (syntax & RE_NEWLINE_ALT)
- goto handle_alt;
- else
- goto normal_char;
-
-
- case '|':
- if (syntax & RE_NO_BK_VBAR)
- goto handle_alt;
- else
- goto normal_char;
-
-
- case '{':
- if (syntax & RE_INTERVALS && syntax & RE_NO_BK_BRACES)
- goto handle_interval;
- else
- goto normal_char;
-
-
- case '\\':
- if (p == pend) return REG_EESCAPE;
-
- /* Do not translate the character after the \, so that we can
- distinguish, e.g., \B from \b, even if we normally would
- translate, e.g., B to b. */
- PATFETCH_RAW (c);
-
- switch (c)
- {
- case '(':
- if (syntax & RE_NO_BK_PARENS)
- goto normal_backslash;
-
- handle_open:
- bufp->re_nsub++;
- regnum++;
-
- if (COMPILE_STACK_FULL)
- {
- RETALLOC (compile_stack.stack, compile_stack.size << 1,
- compile_stack_elt_t);
- if (compile_stack.stack == NULL) return REG_ESPACE;
-
- compile_stack.size <<= 1;
- }
-
- /* These are the values to restore when we hit end of this
- group. They are all relative offsets, so that if the
- whole pattern moves because of realloc, they will still
- be valid. */
- COMPILE_STACK_TOP.begalt_offset = begalt - bufp->buffer;
- COMPILE_STACK_TOP.fixup_alt_jump
- = fixup_alt_jump ? fixup_alt_jump - bufp->buffer + 1 : 0;
- COMPILE_STACK_TOP.laststart_offset = b - bufp->buffer;
- COMPILE_STACK_TOP.regnum = regnum;
-
- /* We will eventually replace the 0 with the number of
- groups inner to this one. But do not push a
- start_memory for groups beyond the last one we can
- represent in the compiled pattern. */
- if (regnum <= MAX_REGNUM)
- {
- COMPILE_STACK_TOP.inner_group_offset = b - bufp->buffer + 2;
- BUF_PUSH_3 (start_memory, regnum, 0);
- }
-
- compile_stack.avail++;
-
- fixup_alt_jump = 0;
- laststart = 0;
- begalt = b;
- /* If we've reached MAX_REGNUM groups, then this open
- won't actually generate any code, so we'll have to
- clear pending_exact explicitly. */
- pending_exact = 0;
- break;
-
-
- case ')':
- if (syntax & RE_NO_BK_PARENS) goto normal_backslash;
-
- if (COMPILE_STACK_EMPTY)
- if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)
- goto normal_backslash;
- else
- return REG_ERPAREN;
-
- handle_close:
- if (fixup_alt_jump)
- { /* Push a dummy failure point at the end of the
- alternative for a possible future
- `pop_failure_jump' to pop. See comments at
- `push_dummy_failure' in `re_match_2'. */
- BUF_PUSH (push_dummy_failure);
-
- /* We allocated space for this jump when we assigned
- to `fixup_alt_jump', in the `handle_alt' case below. */
- STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1);
- }
-
- /* See similar code for backslashed left paren above. */
- if (COMPILE_STACK_EMPTY)
- if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)
- goto normal_char;
- else
- return REG_ERPAREN;
-
- /* Since we just checked for an empty stack above, this
- ``can't happen''. */
- assert (compile_stack.avail != 0);
- {
- /* We don't just want to restore into `regnum', because
- later groups should continue to be numbered higher,
- as in `(ab)c(de)' -- the second group is #2. */
- regnum_t this_group_regnum;
-
- compile_stack.avail--;
- begalt = bufp->buffer + COMPILE_STACK_TOP.begalt_offset;
- fixup_alt_jump
- = COMPILE_STACK_TOP.fixup_alt_jump
- ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1
- : 0;
- laststart = bufp->buffer + COMPILE_STACK_TOP.laststart_offset;
- this_group_regnum = COMPILE_STACK_TOP.regnum;
- /* If we've reached MAX_REGNUM groups, then this open
- won't actually generate any code, so we'll have to
- clear pending_exact explicitly. */
- pending_exact = 0;
-
- /* We're at the end of the group, so now we know how many
- groups were inside this one. */
- if (this_group_regnum <= MAX_REGNUM)
- {
- unsigned char *inner_group_loc
- = bufp->buffer + COMPILE_STACK_TOP.inner_group_offset;
-
- *inner_group_loc = (unsigned char)
- (regnum - this_group_regnum);
- BUF_PUSH_3 (stop_memory, this_group_regnum,
- regnum - this_group_regnum);
- }
- }
- break;
-
-
- case '|': /* `\|'. */
- if (syntax & RE_LIMITED_OPS || syntax & RE_NO_BK_VBAR)
- goto normal_backslash;
- handle_alt:
- if (syntax & RE_LIMITED_OPS)
- goto normal_char;
-
- /* Insert before the previous alternative a jump which
- jumps to this alternative if the former fails. */
- GET_BUFFER_SPACE (3);
- INSERT_JUMP (on_failure_jump, begalt, b + 6);
- pending_exact = 0;
- b += 3;
-
- /* The alternative before this one has a jump after it
- which gets executed if it gets matched. Adjust that
- jump so it will jump to this alternative's analogous
- jump (put in below, which in turn will jump to the next
- (if any) alternative's such jump, etc.). The last such
- jump jumps to the correct final destination. A picture:
- _____ _____
- | | | |
- | v | v
- a | b | c
-
- If we are at `b', then fixup_alt_jump right now points to a
- three-byte space after `a'. We'll put in the jump, set
- fixup_alt_jump to right after `b', and leave behind three
- bytes which we'll fill in when we get to after `c'. */
-
- if (fixup_alt_jump)
- STORE_JUMP (jump_past_alt, fixup_alt_jump, b);
-
- /* Mark and leave space for a jump after this alternative,
- to be filled in later either by next alternative or
- when know we're at the end of a series of alternatives. */
- fixup_alt_jump = b;
- GET_BUFFER_SPACE (3);
- b += 3;
-
- laststart = 0;
- begalt = b;
- break;
-
-
- case '{':
- /* If \{ is a literal. */
- if (!(syntax & RE_INTERVALS)
- /* If we're at `\{' and it's not the open-interval
- operator. */
- || ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
- || (p - 2 == pattern && p == pend))
- goto normal_backslash;
-
- handle_interval:
- {
- /* If got here, then the syntax allows intervals. */
-
- /* At least (most) this many matches must be made. */
- int lower_bound = -1, upper_bound = -1;
-
- beg_interval = p - 1;
-
- if (p == pend)
- {
- if (syntax & RE_NO_BK_BRACES)
- goto unfetch_interval;
- else
- return REG_EBRACE;
- }
-
- GET_UNSIGNED_NUMBER (lower_bound);
-
- if (c == ',')
- {
- GET_UNSIGNED_NUMBER (upper_bound);
- if (upper_bound < 0) upper_bound = RE_DUP_MAX;
- }
- else
- /* Interval such as `{1}' => match exactly once. */
- upper_bound = lower_bound;
-
- if (lower_bound < 0 || upper_bound > RE_DUP_MAX
- || lower_bound > upper_bound)
- {
- if (syntax & RE_NO_BK_BRACES)
- goto unfetch_interval;
- else
- return REG_BADBR;
- }
-
- if (!(syntax & RE_NO_BK_BRACES))
- {
- if (c != '\\') return REG_EBRACE;
-
- PATFETCH (c);
- }
-
- if (c != '}')
- {
- if (syntax & RE_NO_BK_BRACES)
- goto unfetch_interval;
- else
- return REG_BADBR;
- }
-
- /* We just parsed a valid interval. */
-
- /* If it's invalid to have no preceding re. */
- if (!laststart)
- {
- if (syntax & RE_CONTEXT_INVALID_OPS)
- return REG_BADRPT;
- else if (syntax & RE_CONTEXT_INDEP_OPS)
- laststart = b;
- else
- goto unfetch_interval;
- }
-
- /* If the upper bound is zero, don't want to succeed at
- all; jump from `laststart' to `b + 3', which will be
- the end of the buffer after we insert the jump. */
- if (upper_bound == 0)
- {
- GET_BUFFER_SPACE (3);
- INSERT_JUMP (jump, laststart, b + 3);
- b += 3;
- }
-
- /* Otherwise, we have a nontrivial interval. When
- we're all done, the pattern will look like:
- set_number_at <jump count> <upper bound>
- set_number_at <succeed_n count> <lower bound>
- succeed_n <after jump addr> <succed_n count>
- <body of loop>
- jump_n <succeed_n addr> <jump count>
- (The upper bound and `jump_n' are omitted if
- `upper_bound' is 1, though.) */
- else
- { /* If the upper bound is > 1, we need to insert
- more at the end of the loop. */
- unsigned nbytes = 10 + (upper_bound > 1) * 10;
-
- GET_BUFFER_SPACE (nbytes);
-
- /* Initialize lower bound of the `succeed_n', even
- though it will be set during matching by its
- attendant `set_number_at' (inserted next),
- because `re_compile_fastmap' needs to know.
- Jump to the `jump_n' we might insert below. */
- INSERT_JUMP2 (succeed_n, laststart,
- b + 5 + (upper_bound > 1) * 5,
- lower_bound);
- b += 5;
-
- /* Code to initialize the lower bound. Insert
- before the `succeed_n'. The `5' is the last two
- bytes of this `set_number_at', plus 3 bytes of
- the following `succeed_n'. */
- insert_op2 (set_number_at, laststart, 5, lower_bound, b);
- b += 5;
-
- if (upper_bound > 1)
- { /* More than one repetition is allowed, so
- append a backward jump to the `succeed_n'
- that starts this interval.
-
- When we've reached this during matching,
- we'll have matched the interval once, so
- jump back only `upper_bound - 1' times. */
- STORE_JUMP2 (jump_n, b, laststart + 5,
- upper_bound - 1);
- b += 5;
-
- /* The location we want to set is the second
- parameter of the `jump_n'; that is `b-2' as
- an absolute address. `laststart' will be
- the `set_number_at' we're about to insert;
- `laststart+3' the number to set, the source
- for the relative address. But we are
- inserting into the middle of the pattern --
- so everything is getting moved up by 5.
- Conclusion: (b - 2) - (laststart + 3) + 5,
- i.e., b - laststart.
-
- We insert this at the beginning of the loop
- so that if we fail during matching, we'll
- reinitialize the bounds. */
- insert_op2 (set_number_at, laststart, b - laststart,
- upper_bound - 1, b);
- b += 5;
- }
- }
- pending_exact = 0;
- beg_interval = NULL;
- }
- break;
-
- unfetch_interval:
- /* If an invalid interval, match the characters as literals. */
- assert (beg_interval);
- p = beg_interval;
- beg_interval = NULL;
-
- /* normal_char and normal_backslash need `c'. */
- PATFETCH (c);
-
- if (!(syntax & RE_NO_BK_BRACES))
- {
- if (p > pattern && p[-1] == '\\')
- goto normal_backslash;
- }
- goto normal_char;
-
-#ifdef emacs
- /* There is no way to specify the before_dot and after_dot
- operators. rms says this is ok. --karl */
- case '=':
- BUF_PUSH (at_dot);
- break;
-
- case 's':
- laststart = b;
- PATFETCH (c);
- BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]);
- break;
-
- case 'S':
- laststart = b;
- PATFETCH (c);
- BUF_PUSH_2 (notsyntaxspec, syntax_spec_code[c]);
- break;
-#endif /* emacs */
-
-
- case 'w':
- laststart = b;
- BUF_PUSH (wordchar);
- break;
-
-
- case 'W':
- laststart = b;
- BUF_PUSH (notwordchar);
- break;
-
-
- case '<':
- BUF_PUSH (wordbeg);
- break;
-
- case '>':
- BUF_PUSH (wordend);
- break;
-
- case 'b':
- BUF_PUSH (wordbound);
- break;
-
- case 'B':
- BUF_PUSH (notwordbound);
- break;
-
- case '`':
- BUF_PUSH (begbuf);
- break;
-
- case '\'':
- BUF_PUSH (endbuf);
- break;
-
- case '1': case '2': case '3': case '4': case '5':
- case '6': case '7': case '8': case '9':
- if (syntax & RE_NO_BK_REFS)
- goto normal_char;
-
- c1 = c - '0';
-
- if (c1 > regnum)
- return REG_ESUBREG;
-
- /* Can't back reference to a subexpression if inside of it. */
- if (group_in_compile_stack( &compile_stack, c1))
- goto normal_char;
-
- laststart = b;
- BUF_PUSH_2 (duplicate, c1);
- break;
-
-
- case '+':
- case '?':
- if (syntax & RE_BK_PLUS_QM)
- goto handle_plus;
- else
- goto normal_backslash;
-
- default:
- normal_backslash:
- /* You might think it would be useful for \ to mean
- not to translate; but if we don't translate it,
- it will never match anything. */
- c = TRANSLATE (c);
- goto normal_char;
- }
- break;
-
-
- default:
- /* Expects the character in `c'. */
- normal_char:
- /* If no exactn currently being built. */
- if (!pending_exact
-
- /* If last exactn not at current position. */
- || pending_exact + *pending_exact + 1 != b
-
- /* We have only one byte following the exactn for the count. */
- || *pending_exact == (1 << BYTEWIDTH) - 1
-
- /* If followed by a repetition operator. */
- || *p == '*' || *p == '^'
- || ((syntax & RE_BK_PLUS_QM)
- ? *p == '\\' && (p[1] == '+' || p[1] == '?')
- : (*p == '+' || *p == '?'))
- || ((syntax & RE_INTERVALS)
- && ((syntax & RE_NO_BK_BRACES)
- ? *p == '{'
- : (p[0] == '\\' && p[1] == '{'))))
- {
- /* Start building a new exactn. */
-
- laststart = b;
-
- BUF_PUSH_2 (exactn, 0);
- pending_exact = b - 1;
- }
-
- BUF_PUSH (c);
- (*pending_exact)++;
- break;
- } /* switch (c) */
- } /* while p != pend */
-
-
- /* Through the pattern now. */
-
- if (fixup_alt_jump)
- STORE_JUMP (jump_past_alt, fixup_alt_jump, b);
-
- if (!COMPILE_STACK_EMPTY)
- return REG_EPAREN;
-
- free (compile_stack.stack);
-
- /* We have succeeded; set the length of the buffer. */
- bufp->used = b - bufp->buffer;
-
-#ifdef DEBUG
- if (debug)
- {
- DEBUG_PRINT1 ("\nCompiled pattern: ");
- print_compiled_pattern (bufp);
- }
-#endif /* DEBUG */
-
- return REG_NOERROR;
-} /* regex_compile */
-
-/* Subroutines for `regex_compile'. */
-
-/* Store OP at LOC followed by two-byte integer parameter ARG. */
-
-static void
-store_op1 (op, loc, arg)
- re_opcode_t op;
- unsigned char *loc;
- int arg;
-{
- *loc = (unsigned char) op;
- STORE_NUMBER (loc + 1, arg);
-}
-
-
-/* Like `store_op1', but for two two-byte parameters ARG1 and ARG2. */
-
-static void
-store_op2 (op, loc, arg1, arg2)
- re_opcode_t op;
- unsigned char *loc;
- int arg1, arg2;
-{
- *loc = (unsigned char) op;
- STORE_NUMBER (loc + 1, arg1);
- STORE_NUMBER (loc + 3, arg2);
-}
-
-
-/* Copy the bytes from LOC to END to open up three bytes of space at LOC
- for OP followed by two-byte integer parameter ARG. */
-
-static void
-insert_op1 (op, loc, arg, end)
- re_opcode_t op;
- unsigned char *loc;
- int arg;
- unsigned char *end;
-{
- register unsigned char *pfrom = end;
- register unsigned char *pto = end + 3;
-
- while (pfrom != loc)
- *--pto = *--pfrom;
-
- store_op1 (op, loc, arg);
-}
-
-
-/* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2. */
-
-static void
-insert_op2 (op, loc, arg1, arg2, end)
- re_opcode_t op;
- unsigned char *loc;
- int arg1, arg2;
- unsigned char *end;
-{
- register unsigned char *pfrom = end;
- register unsigned char *pto = end + 5;
-
- while (pfrom != loc)
- *--pto = *--pfrom;
-
- store_op2 (op, loc, arg1, arg2);
-}
-
-
-/* P points to just after a ^ in PATTERN. Return true if that ^ comes
- after an alternative or a begin-subexpression. We assume there is at
- least one character before the ^. */
-
-static boolean
-at_begline_loc_p (pattern, p, syntax)
- const char *pattern, *p;
- reg_syntax_t syntax;
-{
- const char *prev = p - 2;
-# define prev_prev_backslash(p) (((p) > pattern) && ((p)[-1] == '\\'))
-
- switch (*prev) {
- case '(':
- return (boolean)(
- prev_prev_backslash(prev) || ((syntax & RE_NO_BK_PARENS) != 0));
-
- case '|':
- return (boolean)(
- prev_prev_backslash(prev) || ((syntax & RE_NO_BK_VBAR) != 0));
- }
- return false;
-}
-
-
-/* The dual of at_begline_loc_p. This one is for $. We assume there is
- at least one character after the $, i.e., `P < PEND'. */
-
-static boolean
-at_endline_loc_p (p, pend, syntax)
- const char *p, *pend;
- int syntax;
-{
- const char *next = p;
- boolean next_backslash = *next == '\\';
- const char *next_next = p + 1 < pend ? p + 1 : NULL;
-#ifdef __TANDEM
-# pragma NOWARN( 85 )
-#endif
- return
- /* Before a subexpression? */
- (syntax & RE_NO_BK_PARENS ? *next == ')'
- : next_backslash && next_next && *next_next == ')')
- /* Before an alternative? */
- || (syntax & RE_NO_BK_VBAR ? *next == '|'
- : next_backslash && next_next && *next_next == '|');
-}
-#ifdef __TANDEM
-# pragma WARN( 85 )
-#endif
-
-
-/* Returns true if REGNUM is in one of COMPILE_STACK's elements and
- false if it's not. */
-static boolean
-group_in_compile_stack( compile_stack_type* compile_stack,
- regnum_t regnum )
-{
- int this_element;
-
- for (this_element = compile_stack->avail - 1;
- this_element >= 0;
- this_element--)
- if (compile_stack->stack[this_element].regnum == regnum)
- return true;
-
- return false;
-}
-#undef CS
-
-/* Read the ending character of a range (in a bracket expression) from the
- uncompiled pattern *P_PTR (which ends at PEND). We assume the
- starting character is in `P[-2]'. (`P[-1]' is the character `-'.)
- Then we set the translation of all bits between the starting and
- ending characters (inclusive) in the compiled pattern B.
-
- Return an error code.
-
- We use these short variable names so we can use the same macros as
- `regex_compile' itself. */
-
-static reg_errcode_t
-compile_range (p_ptr, pend, translate, syntax, b)
- const char **p_ptr, *pend;
- char *translate;
- reg_syntax_t syntax;
- unsigned char *b;
-{
- unsigned this_char;
-
- const char *p = *p_ptr;
- int range_start, range_end;
-
- if (p == pend)
- return REG_ERANGE;
-
- /* Even though the pattern is a signed `char *', we need to fetch
- with unsigned char *'s; if the high bit of the pattern character
- is set, the range endpoints will be negative if we fetch using a
- signed char *.
-
- We also want to fetch the endpoints without translating them; the
- appropriate translation is done in the bit-setting loop below. */
- range_start = ((unsigned char *) p)[-2];
- range_end = ((unsigned char *) p)[0];
-
- /* Have to increment the pointer into the pattern string, so the
- caller isn't still at the ending character. */
- (*p_ptr)++;
-
- /* If the start is after the end, the range is empty. */
- if (range_start > range_end)
- return syntax & RE_NO_EMPTY_RANGES ? REG_ERANGE : REG_NOERROR;
-
- /* Here we see why `this_char' has to be larger than an `unsigned
- char' -- the range is inclusive, so if `range_end' == 0xff
- (assuming 8-bit characters), we would otherwise go into an infinite
- loop, since all characters <= 0xff. */
- for (this_char = range_start; this_char <= range_end; this_char++)
- {
- SET_LIST_BIT (TRANSLATE (this_char));
- }
-
- return REG_NOERROR;
-}
-
-/* Failure stack declarations and macros; both re_compile_fastmap and
- re_match_2 use a failure stack. These have to be macros because of
- REGEX_ALLOCATE. */
-
-
-/* Number of failure points for which to initially allocate space
- when matching. If this number is exceeded, we allocate more
- space, so it is not a hard limit. */
-#ifndef INIT_FAILURE_ALLOC
-#define INIT_FAILURE_ALLOC 5
-#endif
-
-/* Roughly the maximum number of failure points on the stack. Would be
- exactly that if always used MAX_FAILURE_SPACE each time we failed.
- This is a variable only so users of regex can assign to it; we never
- change it ourselves. */
-int re_max_failures = 2000;
-
-typedef const unsigned char *fail_stack_elt_t;
-
-typedef struct
-{
- fail_stack_elt_t *stack;
- unsigned size;
- unsigned avail; /* Offset of next open position. */
-} fail_stack_type;
-
-#define FAIL_STACK_EMPTY() (fail_stack.avail == 0)
-#define FAIL_STACK_PTR_EMPTY() (fail_stack_ptr->avail == 0)
-#define FAIL_STACK_FULL() (fail_stack.avail == fail_stack.size)
-#define FAIL_STACK_TOP() (fail_stack.stack[fail_stack.avail])
-
-
-/* Initialize `fail_stack'. Do `return -2' if the alloc fails. */
-
-#define INIT_FAIL_STACK() \
- do { \
- fail_stack.stack = (fail_stack_elt_t *) \
- REGEX_ALLOCATE (INIT_FAILURE_ALLOC * sizeof (fail_stack_elt_t)); \
- \
- if (fail_stack.stack == NULL) \
- return -2; \
- \
- fail_stack.size = INIT_FAILURE_ALLOC; \
- fail_stack.avail = 0; \
- } while (0)
-
-
-/* Double the size of FAIL_STACK, up to approximately `re_max_failures' items.
-
- Return 1 if succeeds, and 0 if either ran out of memory
- allocating space for it or it was already too large.
-
- REGEX_REALLOCATE requires `destination' be declared. */
-
-#define DOUBLE_FAIL_STACK(fail_stack) \
- ((fail_stack).size > re_max_failures * MAX_FAILURE_ITEMS \
- ? 0 \
- : ((fail_stack).stack = (fail_stack_elt_t *) \
- REGEX_REALLOCATE ((fail_stack).stack, \
- (fail_stack).size * sizeof (fail_stack_elt_t), \
- ((fail_stack).size << 1) * sizeof (fail_stack_elt_t)), \
- \
- (fail_stack).stack == NULL \
- ? 0 \
- : ((fail_stack).size <<= 1, \
- 1)))
-
-
-/* Push PATTERN_OP on FAIL_STACK.
-
- Return 1 if was able to do so and 0 if ran out of memory allocating
- space to do so. */
-#define PUSH_PATTERN_OP(pattern_op, fail_stack) \
- ((FAIL_STACK_FULL () \
- && !DOUBLE_FAIL_STACK (fail_stack)) \
- ? 0 \
- : ((fail_stack).stack[(fail_stack).avail++] = pattern_op, \
- 1))
-
-/* This pushes an item onto the failure stack. Must be a four-byte
- value. Assumes the variable `fail_stack'. Probably should only
- be called from within `PUSH_FAILURE_POINT'. */
-#define PUSH_FAILURE_ITEM(item) \
- fail_stack.stack[fail_stack.avail++] = (fail_stack_elt_t) item
-
-/* The complement operation. Assumes `fail_stack' is nonempty. */
-#define POP_FAILURE_ITEM() fail_stack.stack[--fail_stack.avail]
-
-/* Used to omit pushing failure point id's when we're not debugging. */
-#ifdef DEBUG
-#define DEBUG_PUSH PUSH_FAILURE_ITEM
-#define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_ITEM ()
-#else
-#define DEBUG_PUSH(item)
-#define DEBUG_POP(item_addr)
-#endif
-
-
-/* Push the information about the state we will need
- if we ever fail back to it.
-
- Requires variables fail_stack, regstart, regend, reg_info, and
- num_regs be declared. DOUBLE_FAIL_STACK requires `destination' be
- declared.
-
- Does `return FAILURE_CODE' if runs out of memory. */
-
-#define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \
- do { \
- DESTINATION_DECL \
- /* Must be int, so when we don't save any registers, the arithmetic \
- of 0 + -1 isn't done as unsigned. */ \
- int this_reg; \
- \
- DEBUG_STATEMENT (failure_id++); \
- DEBUG_STATEMENT (nfailure_points_pushed++); \
- DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id); \
- DEBUG_PRINT2 (" Before push, next avail: %d\n", (fail_stack).avail);\
- DEBUG_PRINT2 (" size: %d\n", (fail_stack).size);\
- \
- DEBUG_PRINT2 (" slots needed: %d\n", NUM_FAILURE_ITEMS); \
- DEBUG_PRINT2 (" available: %d\n", REMAINING_AVAIL_SLOTS); \
- \
- /* Ensure we have enough space allocated for what we will push. */ \
- while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \
- { \
- if (!DOUBLE_FAIL_STACK (fail_stack)) \
- return failure_code; \
- \
- DEBUG_PRINT2 ("\n Doubled stack; size now: %d\n", \
- (fail_stack).size); \
- DEBUG_PRINT2 (" slots available: %d\n", REMAINING_AVAIL_SLOTS);\
- } \
- \
- /* Push the info, starting with the registers. */ \
- DEBUG_PRINT1 ("\n"); \
- \
- for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \
- this_reg++) \
- { \
- DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \
- DEBUG_STATEMENT (num_regs_pushed++); \
- \
- DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \
- PUSH_FAILURE_ITEM (regstart[this_reg]); \
- \
- DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \
- PUSH_FAILURE_ITEM (regend[this_reg]); \
- \
- DEBUG_PRINT2 (" info: 0x%x\n ", reg_info[this_reg]); \
- DEBUG_PRINT2 (" match_null=%d", \
- REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \
- DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \
- DEBUG_PRINT2 (" matched_something=%d", \
- MATCHED_SOMETHING (reg_info[this_reg])); \
- DEBUG_PRINT2 (" ever_matched=%d", \
- EVER_MATCHED_SOMETHING (reg_info[this_reg])); \
- DEBUG_PRINT1 ("\n"); \
- PUSH_FAILURE_ITEM (reg_info[this_reg].word); \
- } \
- \
- DEBUG_PRINT2 (" Pushing low active reg: %d\n", lowest_active_reg);\
- PUSH_FAILURE_ITEM (lowest_active_reg); \
- \
- DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg);\
- PUSH_FAILURE_ITEM (highest_active_reg); \
- \
- DEBUG_PRINT2 (" Pushing pattern 0x%x: ", pattern_place); \
- DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \
- PUSH_FAILURE_ITEM (pattern_place); \
- \
- DEBUG_PRINT2 (" Pushing string 0x%x: `", string_place); \
- DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \
- size2); \
- DEBUG_PRINT1 ("'\n"); \
- PUSH_FAILURE_ITEM (string_place); \
- \
- DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \
- DEBUG_PUSH (failure_id); \
- } while (0)
-
-/* This is the number of items that are pushed and popped on the stack
- for each register. */
-#define NUM_REG_ITEMS 3
-
-/* Individual items aside from the registers. */
-#ifdef DEBUG
-#define NUM_NONREG_ITEMS 5 /* Includes failure point id. */
-#else
-#define NUM_NONREG_ITEMS 4
-#endif
-
-/* We push at most this many items on the stack. */
-#define MAX_FAILURE_ITEMS ((num_regs - 1) * NUM_REG_ITEMS + NUM_NONREG_ITEMS)
-
-/* We actually push this many items. */
-#define NUM_FAILURE_ITEMS \
- ((highest_active_reg - lowest_active_reg + 1) * NUM_REG_ITEMS \
- + NUM_NONREG_ITEMS)
-
-/* How many items can still be added to the stack without overflowing it. */
-#define REMAINING_AVAIL_SLOTS ((fail_stack).size - (fail_stack).avail)
-
-
-/* Pops what PUSH_FAIL_STACK pushes.
-
- We restore into the parameters, all of which should be lvalues:
- STR -- the saved data position.
- PAT -- the saved pattern position.
- LOW_REG, HIGH_REG -- the highest and lowest active registers.
- REGSTART, REGEND -- arrays of string positions.
- REG_INFO -- array of information about each subexpression.
-
- Also assumes the variables `fail_stack' and (if debugging), `bufp',
- `pend', `string1', `size1', `string2', and `size2'. */
-
-#define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\
-{ \
- DEBUG_STATEMENT (fail_stack_elt_t failure_id;) \
- int this_reg; \
- const unsigned char *string_temp; \
- \
- assert (!FAIL_STACK_EMPTY ()); \
- \
- /* Remove failure points and point to how many regs pushed. */ \
- DEBUG_PRINT1 ("POP_FAILURE_POINT:\n"); \
- DEBUG_PRINT2 (" Before pop, next avail: %d\n", fail_stack.avail); \
- DEBUG_PRINT2 (" size: %d\n", fail_stack.size); \
- \
- assert (fail_stack.avail >= NUM_NONREG_ITEMS); \
- \
- DEBUG_POP (&failure_id); \
- DEBUG_PRINT2 (" Popping failure id: %u\n", failure_id); \
- \
- /* If the saved string location is NULL, it came from an \
- on_failure_keep_string_jump opcode, and we want to throw away the \
- saved NULL, thus retaining our current position in the string. */ \
- string_temp = POP_FAILURE_ITEM (); \
- if (string_temp != NULL) \
- str = (const char *) string_temp; \
- \
- DEBUG_PRINT2 (" Popping string 0x%x: `", str); \
- DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \
- DEBUG_PRINT1 ("'\n"); \
- \
- pat = (unsigned char *) POP_FAILURE_ITEM (); \
- DEBUG_PRINT2 (" Popping pattern 0x%x: ", pat); \
- DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \
- \
- /* Restore register info. */ \
- high_reg = (unsigned) POP_FAILURE_ITEM (); \
- DEBUG_PRINT2 (" Popping high active reg: %d\n", high_reg); \
- \
- low_reg = (unsigned) POP_FAILURE_ITEM (); \
- DEBUG_PRINT2 (" Popping low active reg: %d\n", low_reg); \
- \
- for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \
- { \
- DEBUG_PRINT2 (" Popping reg: %d\n", this_reg); \
- \
- reg_info[this_reg].word = POP_FAILURE_ITEM (); \
- DEBUG_PRINT2 (" info: 0x%x\n", reg_info[this_reg]); \
- \
- regend[this_reg] = (const char *) POP_FAILURE_ITEM (); \
- DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \
- \
- regstart[this_reg] = (const char *) POP_FAILURE_ITEM (); \
- DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \
- } \
- \
- DEBUG_STATEMENT (nfailure_points_popped++); \
-} /* POP_FAILURE_POINT */
-
-/* re_compile_fastmap computes a ``fastmap'' for the compiled pattern in
- BUFP. A fastmap records which of the (1 << BYTEWIDTH) possible
- characters can start a string that matches the pattern. This fastmap
- is used by re_search to skip quickly over impossible starting points.
-
- The caller must supply the address of a (1 << BYTEWIDTH)-byte data
- area as BUFP->fastmap.
-
- We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in
- the pattern buffer.
-
- Returns 0 if we succeed, -2 if an internal error. */
-
-int
-re_compile_fastmap (bufp)
- struct re_pattern_buffer *bufp;
-{
- int j, k;
- fail_stack_type fail_stack;
-#ifndef REGEX_MALLOC
- char *destination;
-#endif
- /* We don't push any register information onto the failure stack. */
- unsigned num_regs = 0;
-
- register char *fastmap = bufp->fastmap;
- unsigned char *pattern = bufp->buffer;
- unsigned long size = bufp->used;
- const unsigned char *p = pattern;
- register unsigned char *pend = pattern + size;
-
- /* Assume that each path through the pattern can be null until
- proven otherwise. We set this false at the bottom of switch
- statement, to which we get only if a particular path doesn't
- match the empty string. */
- boolean path_can_be_null = true;
-
- /* We aren't doing a `succeed_n' to begin with. */
- boolean succeed_n_p = false;
-
- assert (fastmap != NULL && p != NULL);
-
- INIT_FAIL_STACK ();
- bzero (fastmap, 1 << BYTEWIDTH); /* Assume nothing's valid. */
- bufp->fastmap_accurate = 1; /* It will be when we're done. */
- bufp->can_be_null = 0;
-
- while (p != pend || !FAIL_STACK_EMPTY ())
- {
- if (p == pend)
- {
- bufp->can_be_null |= path_can_be_null;
-
- /* Reset for next path. */
- path_can_be_null = true;
-
- p = fail_stack.stack[--fail_stack.avail];
- }
-
- /* We should never be about to go beyond the end of the pattern. */
- assert (p < pend);
-
-#ifdef SWITCH_ENUM_BUG
- switch ((int) ((re_opcode_t) *p++))
-#else
- switch ((re_opcode_t) *p++)
-#endif
- {
-
- /* I guess the idea here is to simply not bother with a fastmap
- if a backreference is used, since it's too hard to figure out
- the fastmap for the corresponding group. Setting
- `can_be_null' stops `re_search_2' from using the fastmap, so
- that is all we do. */
- case duplicate:
- bufp->can_be_null = 1;
- return 0;
-
-
- /* Following are the cases which match a character. These end
- with `break'. */
-
- case exactn:
- fastmap[p[1]] = 1;
- break;
-
-
- case charset:
- for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
- if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))
- fastmap[j] = 1;
- break;
-
-
- case charset_not:
- /* Chars beyond end of map must be allowed. */
- for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++)
- fastmap[j] = 1;
-
- for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
- if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))))
- fastmap[j] = 1;
- break;
-
-
- case wordchar:
- for (j = 0; j < (1 << BYTEWIDTH); j++)
- if (SYNTAX (j) == Sword)
- fastmap[j] = 1;
- break;
-
-
- case notwordchar:
- for (j = 0; j < (1 << BYTEWIDTH); j++)
- if (SYNTAX (j) != Sword)
- fastmap[j] = 1;
- break;
-
-
- case anychar:
- /* `.' matches anything ... */
- for (j = 0; j < (1 << BYTEWIDTH); j++)
- fastmap[j] = 1;
-
- /* ... except perhaps newline. */
- if (!(bufp->syntax & RE_DOT_NEWLINE))
- fastmap['\n'] = 0;
-
- /* Return if we have already set `can_be_null'; if we have,
- then the fastmap is irrelevant. Something's wrong here. */
- else if (bufp->can_be_null)
- return 0;
-
- /* Otherwise, have to check alternative paths. */
- break;
-
-
-#ifdef emacs
- case syntaxspec:
- k = *p++;
- for (j = 0; j < (1 << BYTEWIDTH); j++)
- if (SYNTAX (j) == (enum syntaxcode) k)
- fastmap[j] = 1;
- break;
-
-
- case notsyntaxspec:
- k = *p++;
- for (j = 0; j < (1 << BYTEWIDTH); j++)
- if (SYNTAX (j) != (enum syntaxcode) k)
- fastmap[j] = 1;
- break;
-
-
- /* All cases after this match the empty string. These end with
- `continue'. */
-
-
- case before_dot:
- case at_dot:
- case after_dot:
- continue;
-#endif /* not emacs */
-
-
- case no_op:
- case begline:
- case endline:
- case begbuf:
- case endbuf:
- case wordbound:
- case notwordbound:
- case wordbeg:
- case wordend:
- case push_dummy_failure:
- continue;
-
-
- case jump_n:
- case pop_failure_jump:
- case maybe_pop_jump:
- case jump:
- case jump_past_alt:
- case dummy_failure_jump:
- EXTRACT_NUMBER_AND_INCR (j, p);
- p += j;
- if (j > 0)
- continue;
-
- /* Jump backward implies we just went through the body of a
- loop and matched nothing. Opcode jumped to should be
- `on_failure_jump' or `succeed_n'. Just treat it like an
- ordinary jump. For a * loop, it has pushed its failure
- point already; if so, discard that as redundant. */
- if ((re_opcode_t) *p != on_failure_jump
- && (re_opcode_t) *p != succeed_n)
- continue;
-
- p++;
- EXTRACT_NUMBER_AND_INCR (j, p);
- p += j;
-
- /* If what's on the stack is where we are now, pop it. */
- if (!FAIL_STACK_EMPTY ()
- && fail_stack.stack[fail_stack.avail - 1] == p)
- fail_stack.avail--;
-
- continue;
-
-
- case on_failure_jump:
- case on_failure_keep_string_jump:
- handle_on_failure_jump:
- EXTRACT_NUMBER_AND_INCR (j, p);
-
- /* For some patterns, e.g., `(a?)?', `p+j' here points to the
- end of the pattern. We don't want to push such a point,
- since when we restore it above, entering the switch will
- increment `p' past the end of the pattern. We don't need
- to push such a point since we obviously won't find any more
- fastmap entries beyond `pend'. Such a pattern can match
- the null string, though. */
- if (p + j < pend)
- {
- /*
- * WARN 191: illegal pointer conversion
- * between CONST and NON-CONST attribute
- */
-# ifdef __TANDEM
-# pragma NOWARN( 191 )
-# endif
- if (!PUSH_PATTERN_OP (p + j, fail_stack))
- return -2;
-# ifdef __TANDEM
-# pragma WARN( 191 )
-# endif
- }
- else
- bufp->can_be_null = 1;
-
- if (succeed_n_p)
- {
- EXTRACT_NUMBER_AND_INCR (k, p); /* Skip the n. */
- succeed_n_p = false;
- }
-
- continue;
-
-
- case succeed_n:
- /* Get to the number of times to succeed. */
- p += 2;
-
- /* Increment p past the n for when k != 0. */
- EXTRACT_NUMBER_AND_INCR (k, p);
- if (k == 0)
- {
- p -= 4;
- succeed_n_p = true; /* Spaghetti code alert. */
- goto handle_on_failure_jump;
- }
- continue;
-
-
- case set_number_at:
- p += 4;
- continue;
-
-
- case start_memory:
- case stop_memory:
- p += 2;
- continue;
-
-
- default:
- abort (); /* We have listed all the cases. */
- } /* switch *p++ */
-
- /* Getting here means we have found the possible starting
- characters for one path of the pattern -- and that the empty
- string does not match. We need not follow this path further.
- Instead, look at the next alternative (remembered on the
- stack), or quit if no more. The test at the top of the loop
- does these things. */
- path_can_be_null = false;
- p = pend;
- } /* while p */
-
- /* Set `can_be_null' for the last path (also the first path, if the
- pattern is empty). */
- bufp->can_be_null |= path_can_be_null;
- return 0;
-} /* re_compile_fastmap */
-
-/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
- ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use
- this memory for recording register information. STARTS and ENDS
- must be allocated using the malloc library routine, and must each
- be at least NUM_REGS * sizeof (regoff_t) bytes long.
-
- If NUM_REGS == 0, then subsequent matches should allocate their own
- register data.
-
- Unless this function is called, the first search or match using
- PATTERN_BUFFER will allocate its own register data, without
- freeing the old data. */
-
-void
-re_set_registers (bufp, regs, num_regs, starts, ends)
- struct re_pattern_buffer *bufp;
- struct re_registers *regs;
- unsigned num_regs;
- regoff_t *starts, *ends;
-{
- if (num_regs)
- {
- bufp->regs_allocated = REGS_REALLOCATE;
- regs->num_regs = num_regs;
- regs->start = starts;
- regs->end = ends;
- }
- else
- {
- bufp->regs_allocated = REGS_UNALLOCATED;
- regs->num_regs = 0;
- regs->start = regs->end = (regoff_t) 0;
- }
-}
-
-/* Searching routines. */
-
-/* Like re_search_2, below, but only one string is specified, and
- doesn't let you say where to stop matching. */
-
-int
-re_search (bufp, string, size, startpos, range, regs)
- struct re_pattern_buffer *bufp;
- const char *string;
- int size, startpos, range;
- struct re_registers *regs;
-{
- return re_search_2 (bufp, NULL, 0, string, size, startpos, range,
- regs, size);
-}
-
-
-/* Using the compiled pattern in BUFP->buffer, first tries to match the
- virtual concatenation of STRING1 and STRING2, starting first at index
- STARTPOS, then at STARTPOS + 1, and so on.
-
- STRING1 and STRING2 have length SIZE1 and SIZE2, respectively.
-
- RANGE is how far to scan while trying to match. RANGE = 0 means try
- only at STARTPOS; in general, the last start tried is STARTPOS +
- RANGE.
-
- In REGS, return the indices of the virtual concatenation of STRING1
- and STRING2 that matched the entire BUFP->buffer and its contained
- subexpressions.
-
- Do not consider matching one past the index STOP in the virtual
- concatenation of STRING1 and STRING2.
-
- We return either the position in the strings at which the match was
- found, -1 if no match, or -2 if error (such as failure
- stack overflow). */
-
-int
-re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop)
- struct re_pattern_buffer *bufp;
- const char *string1, *string2;
- int size1, size2;
- int startpos;
- int range;
- struct re_registers *regs;
- int stop;
-{
- int val;
- register char *fastmap = bufp->fastmap;
- register char *translate = bufp->translate;
- int total_size = size1 + size2;
- int endpos = startpos + range;
-
- /* Check for out-of-range STARTPOS. */
- if (startpos < 0 || startpos > total_size)
- return -1;
-
- /* Fix up RANGE if it might eventually take us outside
- the virtual concatenation of STRING1 and STRING2. */
- if (endpos < -1)
- range = -1 - startpos;
- else if (endpos > total_size)
- range = total_size - startpos;
-
- /* If the search isn't to be a backwards one, don't waste time in a
- search for a pattern that must be anchored. */
- if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == begbuf && range > 0)
- {
- if (startpos > 0)
- return -1;
- else
- range = 1;
- }
-
- /* Update the fastmap now if not correct already. */
- if (fastmap && !bufp->fastmap_accurate)
- if (re_compile_fastmap (bufp) == -2)
- return -2;
-
- /* Loop through the string, looking for a place to start matching. */
- for (;;)
- {
- /* If a fastmap is supplied, skip quickly over characters that
- cannot be the start of a match. If the pattern can match the
- null string, however, we don't need to skip characters; we want
- the first null string. */
- if (fastmap && startpos < total_size && !bufp->can_be_null)
- {
- if (range > 0) /* Searching forwards. */
- {
- register const char *d;
- register int lim = 0;
- int irange = range;
-
- if (startpos < size1 && startpos + range >= size1)
- lim = range - (size1 - startpos);
-
- d = (startpos >= size1 ? string2 - size1 : string1) + startpos;
-
- /* Written out as an if-else to avoid testing `translate'
- inside the loop. */
- if (translate)
- while (range > lim
- && !fastmap[(unsigned char)
- translate[(unsigned char) *d++]])
- range--;
- else
- while (range > lim && !fastmap[(unsigned char) *d++])
- range--;
-
- startpos += irange - range;
- }
- else /* Searching backwards. */
- {
- register char c = (size1 == 0 || startpos >= size1
- ? string2[startpos - size1]
- : string1[startpos]);
-
- if (!fastmap[(unsigned char) TRANSLATE (c)])
- goto advance;
- }
- }
-
- /* If can't match the null string, and that's all we have left, fail. */
- if (range >= 0 && startpos == total_size && fastmap
- && !bufp->can_be_null)
- return -1;
-
- val = re_match_2 (bufp, string1, size1, string2, size2,
- startpos, regs, stop);
- if (val >= 0)
- return startpos;
-
- if (val == -2)
- return -2;
-
- advance:
- if (!range)
- break;
- else if (range > 0)
- {
- range--;
- startpos++;
- }
- else
- {
- range++;
- startpos--;
- }
- }
- return -1;
-} /* re_search_2 */
-
-/* Declarations and macros for re_match_2. */
-
-static int bcmp_translate ();
-static boolean alt_match_null_string_p (),
- common_op_match_null_string_p (),
- group_match_null_string_p ();
-
-/* Structure for per-register (a.k.a. per-group) information.
- This must not be longer than one word, because we push this value
- onto the failure stack. Other register information, such as the
- starting and ending positions (which are addresses), and the list of
- inner groups (which is a bits list) are maintained in separate
- variables.
-
- We are making a (strictly speaking) nonportable assumption here: that
- the compiler will pack our bit fields into something that fits into
- the type of `word', i.e., is something that fits into one item on the
- failure stack. */
-typedef union
-{
- fail_stack_elt_t word;
- struct
- {
- /* This field is one if this group can match the empty string,
- zero if not. If not yet determined, `MATCH_NULL_UNSET_VALUE'. */
-#define MATCH_NULL_UNSET_VALUE 3
- unsigned match_null_string_p : 2;
- unsigned is_active : 1;
- unsigned matched_something : 1;
- unsigned ever_matched_something : 1;
- } bits;
-} register_info_type;
-
-#define REG_MATCH_NULL_STRING_P(R) ((R).bits.match_null_string_p)
-#define IS_ACTIVE(R) ((R).bits.is_active)
-#define MATCHED_SOMETHING(R) ((R).bits.matched_something)
-#define EVER_MATCHED_SOMETHING(R) ((R).bits.ever_matched_something)
-
-
-/* Call this when have matched a real character; it sets `matched' flags
- for the subexpressions which we are currently inside. Also records
- that those subexprs have matched. */
-#define SET_REGS_MATCHED() \
- do \
- { \
- unsigned r; \
- for (r = lowest_active_reg; r <= highest_active_reg; r++) \
- { \
- MATCHED_SOMETHING (reg_info[r]) \
- = EVER_MATCHED_SOMETHING (reg_info[r]) \
- = 1; \
- } \
- } \
- while (0)
-
-
-/* This converts PTR, a pointer into one of the search strings `string1'
- and `string2' into an offset from the beginning of that string. */
-#define POINTER_TO_OFFSET(ptr) \
- (FIRST_STRING_P (ptr) ? (ptr) - string1 : (ptr) - string2 + size1)
-
-/* Registers are set to a sentinel when they haven't yet matched. */
-#define REG_UNSET_VALUE ((char *) -1)
-#define REG_UNSET(e) ((e) == REG_UNSET_VALUE)
-
-
-/* Macros for dealing with the split strings in re_match_2. */
-
-#define MATCHING_IN_FIRST_STRING (dend == end_match_1)
-
-/* Call before fetching a character with *d. This switches over to
- string2 if necessary. */
-#define PREFETCH() \
- while (d == dend) \
- { \
- /* End of string2 => fail. */ \
- if (dend == end_match_2) \
- goto fail; \
- /* End of string1 => advance to string2. */ \
- d = string2; \
- dend = end_match_2; \
- }
-
-
-/* Test if at very beginning or at very end of the virtual concatenation
- of `string1' and `string2'. If only one string, it's `string2'. */
-#define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2)
-#define AT_STRINGS_END(d) ((d) == end2)
-
-
-/* Test if D points to a character which is word-constituent. We have
- two special cases to check for: if past the end of string1, look at
- the first character in string2; and if before the beginning of
- string2, look at the last character in string1. */
-#define WORDCHAR_P(d) \
- (SYNTAX ((d) == end1 ? *string2 \
- : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \
- == Sword)
-
-/* Test if the character before D and the one at D differ with respect
- to being word-constituent. */
-#define AT_WORD_BOUNDARY(d) \
- (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \
- || WORDCHAR_P (d - 1) != WORDCHAR_P (d))
-
-
-/* Free everything we malloc. */
-#ifdef REGEX_MALLOC
-#define FREE_VAR(var) do{if(var){free((void*)var); var = NULL;}}while (0)
-#define FREE_VARIABLES() \
- do { \
- FREE_VAR (fail_stack.stack); \
- FREE_VAR (regstart); \
- FREE_VAR (regend); \
- FREE_VAR (old_regstart); \
- FREE_VAR (old_regend); \
- FREE_VAR (best_regstart); \
- FREE_VAR (best_regend); \
- FREE_VAR (reg_info); \
- FREE_VAR (reg_dummy); \
- FREE_VAR (reg_info_dummy); \
- } while (0)
-#else /* not REGEX_MALLOC */
-/* Some MIPS systems (at least) want this to free alloca'd storage. */
-#define FREE_VARIABLES() alloca (0)
-#endif /* not REGEX_MALLOC */
-
-
-/* These values must meet several constraints. They must not be valid
- register values; since we have a limit of 255 registers (because
- we use only one byte in the pattern for the register number), we can
- use numbers larger than 255. They must differ by 1, because of
- NUM_FAILURE_ITEMS above. And the value for the lowest register must
- be larger than the value for the highest register, so we do not try
- to actually save any registers when none are active. */
-#define NO_HIGHEST_ACTIVE_REG (1 << BYTEWIDTH)
-#define NO_LOWEST_ACTIVE_REG (NO_HIGHEST_ACTIVE_REG + 1)
-
-/* Matching routines. */
-
-#ifndef emacs /* Emacs never uses this. */
-/* re_match is like re_match_2 except it takes only a single string. */
-
-int
-re_match (bufp, string, size, pos, regs)
- struct re_pattern_buffer *bufp;
- const char *string;
- int size, pos;
- struct re_registers *regs;
- {
- return re_match_2 (bufp, NULL, 0, string, size, pos, regs, size);
-}
-#endif /* not emacs */
-
-
-/* re_match_2 matches the compiled pattern in BUFP against the
- (virtual) concatenation of STRING1 and STRING2 (of length SIZE1
- and SIZE2, respectively). We start matching at POS, and stop
- matching at STOP.
-
- If REGS is non-null and the `no_sub' field of BUFP is nonzero, we
- store offsets for the substring each group matched in REGS. See the
- documentation for exactly how many groups we fill.
-
- We return -1 if no match, -2 if an internal error (such as the
- failure stack overflowing). Otherwise, we return the length of the
- matched substring. */
-
-int
-re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
- struct re_pattern_buffer *bufp;
- const char *string1, *string2;
- int size1, size2;
- int pos;
- struct re_registers *regs;
- int stop;
-{
- /* General temporaries. */
- int mcnt;
- unsigned char *p1;
-
- /* Just past the end of the corresponding string. */
- const char *end1, *end2;
-
- /* Pointers into string1 and string2, just past the last characters in
- each to consider matching. */
- const char *end_match_1, *end_match_2;
-
- /* Where we are in the data, and the end of the current string. */
- const char *d, *dend;
-
- /* Where we are in the pattern, and the end of the pattern. */
- unsigned char *p = bufp->buffer;
- register unsigned char *pend = p + bufp->used;
-
- /* We use this to map every character in the string. */
- char *translate = bufp->translate;
-
- /* Failure point stack. Each place that can handle a failure further
- down the line pushes a failure point on this stack. It consists of
- restart, regend, and reg_info for all registers corresponding to
- the subexpressions we're currently inside, plus the number of such
- registers, and, finally, two char *'s. The first char * is where
- to resume scanning the pattern; the second one is where to resume
- scanning the strings. If the latter is zero, the failure point is
- a ``dummy''; if a failure happens and the failure point is a dummy,
- it gets discarded and the next one is tried. */
- fail_stack_type fail_stack;
-#ifdef DEBUG
- static unsigned failure_id = 0;
- unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0;
-#endif
-
- /* We fill all the registers internally, independent of what we
- return, for use in backreferences. The number here includes
- an element for register zero. */
- unsigned num_regs = bufp->re_nsub + 1;
-
- /* The currently active registers. */
- unsigned lowest_active_reg = NO_LOWEST_ACTIVE_REG;
- unsigned highest_active_reg = NO_HIGHEST_ACTIVE_REG;
-
- /* Information on the contents of registers. These are pointers into
- the input strings; they record just what was matched (on this
- attempt) by a subexpression part of the pattern, that is, the
- regnum-th regstart pointer points to where in the pattern we began
- matching and the regnum-th regend points to right after where we
- stopped matching the regnum-th subexpression. (The zeroth register
- keeps track of what the whole pattern matches.) */
- const char **regstart, **regend;
-
- /* If a group that's operated upon by a repetition operator fails to
- match anything, then the register for its start will need to be
- restored because it will have been set to wherever in the string we
- are when we last see its open-group operator. Similarly for a
- register's end. */
- const char **old_regstart, **old_regend;
-
- /* The is_active field of reg_info helps us keep track of which (possibly
- nested) subexpressions we are currently in. The matched_something
- field of reg_info[reg_num] helps us tell whether or not we have
- matched any of the pattern so far this time through the reg_num-th
- subexpression. These two fields get reset each time through any
- loop their register is in. */
- register_info_type *reg_info;
-
- /* The following record the register info as found in the above
- variables when we find a match better than any we've seen before.
- This happens as we backtrack through the failure points, which in
- turn happens only if we have not yet matched the entire string. */
- unsigned best_regs_set = false;
- const char **best_regstart, **best_regend;
-
- /* Logically, this is `best_regend[0]'. But we don't want to have to
- allocate space for that if we're not allocating space for anything
- else (see below). Also, we never need info about register 0 for
- any of the other register vectors, and it seems rather a kludge to
- treat `best_regend' differently than the rest. So we keep track of
- the end of the best match so far in a separate variable. We
- initialize this to NULL so that when we backtrack the first time
- and need to test it, it's not garbage. */
- const char *match_end = NULL;
-
- /* Used when we pop values we don't care about. */
- const char **reg_dummy;
- register_info_type *reg_info_dummy;
-
-#ifdef DEBUG
- /* Counts the total number of registers pushed. */
- unsigned num_regs_pushed = 0;
-#endif
-
- DEBUG_PRINT1 ("\n\nEntering re_match_2.\n");
-
- INIT_FAIL_STACK ();
-
- /* Do not bother to initialize all the register variables if there are
- no groups in the pattern, as it takes a fair amount of time. If
- there are groups, we include space for register 0 (the whole
- pattern), even though we never use it, since it simplifies the
- array indexing. We should fix this. */
- if (bufp->re_nsub)
- {
- regstart = REGEX_TALLOC (num_regs, const char *);
- regend = REGEX_TALLOC (num_regs, const char *);
- old_regstart = REGEX_TALLOC (num_regs, const char *);
- old_regend = REGEX_TALLOC (num_regs, const char *);
- best_regstart = REGEX_TALLOC (num_regs, const char *);
- best_regend = REGEX_TALLOC (num_regs, const char *);
- reg_info = REGEX_TALLOC (num_regs, register_info_type);
- reg_dummy = REGEX_TALLOC (num_regs, const char *);
- reg_info_dummy = REGEX_TALLOC (num_regs, register_info_type);
-
- if (!(regstart && regend && old_regstart && old_regend && reg_info
- && best_regstart && best_regend && reg_dummy && reg_info_dummy))
- {
- FREE_VARIABLES ();
- return -2;
- }
- }
-#ifdef REGEX_MALLOC
- else
- {
- /* We must initialize all our variables to NULL, so that
- `FREE_VARIABLES' doesn't try to free them. */
- regstart = regend = old_regstart = old_regend = best_regstart
- = best_regend = reg_dummy = NULL;
- reg_info = reg_info_dummy = (register_info_type *) NULL;
- }
-#endif /* REGEX_MALLOC */
-
- /* The starting position is bogus. */
- if (pos < 0 || pos > size1 + size2)
- {
- FREE_VARIABLES ();
- return -1;
- }
-
- /* Initialize subexpression text positions to -1 to mark ones that no
- start_memory/stop_memory has been seen for. Also initialize the
- register information struct. */
- for (mcnt = 1; mcnt < num_regs; mcnt++)
- {
- regstart[mcnt] = regend[mcnt]
- = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE;
-
- REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE;
- IS_ACTIVE (reg_info[mcnt]) = 0;
- MATCHED_SOMETHING (reg_info[mcnt]) = 0;
- EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0;
- }
-
- /* We move `string1' into `string2' if the latter's empty -- but not if
- `string1' is null. */
- if (size2 == 0 && string1 != NULL)
- {
- string2 = string1;
- size2 = size1;
- string1 = 0;
- size1 = 0;
- }
- end1 = string1 + size1;
- end2 = string2 + size2;
-
- /* Compute where to stop matching, within the two strings. */
- if (stop <= size1)
- {
- end_match_1 = string1 + stop;
- end_match_2 = string2;
- }
- else
- {
- end_match_1 = end1;
- end_match_2 = string2 + stop - size1;
- }
-
- /* `p' scans through the pattern as `d' scans through the data.
- `dend' is the end of the input string that `d' points within. `d'
- is advanced into the following input string whenever necessary, but
- this happens before fetching; therefore, at the beginning of the
- loop, `d' can be pointing at the end of a string, but it cannot
- equal `string2'. */
- if (size1 > 0 && pos <= size1)
- {
- d = string1 + pos;
- dend = end_match_1;
- }
- else
- {
- d = string2 + pos - size1;
- dend = end_match_2;
- }
-
- DEBUG_PRINT1 ("The compiled pattern is: ");
- DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend);
- DEBUG_PRINT1 ("The string to match is: `");
- DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2);
- DEBUG_PRINT1 ("'\n");
-
- /* This loops over pattern commands. It exits by returning from the
- function if the match is complete, or it drops through if the match
- fails at this starting point in the input data. */
- for (;;)
- {
- DEBUG_PRINT2 ("\n0x%x: ", p);
-
- if (p == pend)
- { /* End of pattern means we might have succeeded. */
- DEBUG_PRINT1 ("end of pattern ... ");
-
- /* If we haven't matched the entire string, and we want the
- longest match, try backtracking. */
- if (d != end_match_2)
- {
- DEBUG_PRINT1 ("backtracking.\n");
-
- if (!FAIL_STACK_EMPTY ())
- { /* More failure points to try. */
- boolean same_str_p = (FIRST_STRING_P (match_end)
- == MATCHING_IN_FIRST_STRING);
-
- /* If exceeds best match so far, save it. */
- if (!best_regs_set
- || (same_str_p && d > match_end)
- || (!same_str_p && !MATCHING_IN_FIRST_STRING))
- {
- best_regs_set = true;
- match_end = d;
-
- DEBUG_PRINT1 ("\nSAVING match as best so far.\n");
-
- for (mcnt = 1; mcnt < num_regs; mcnt++)
- {
- best_regstart[mcnt] = regstart[mcnt];
- best_regend[mcnt] = regend[mcnt];
- }
- }
- goto fail;
- }
-
- /* If no failure points, don't restore garbage. */
- else if (best_regs_set)
- {
- restore_best_regs:
- /* Restore best match. It may happen that `dend ==
- end_match_1' while the restored d is in string2.
- For example, the pattern `x.*y.*z' against the
- strings `x-' and `y-z-', if the two strings are
- not consecutive in memory. */
- DEBUG_PRINT1 ("Restoring best registers.\n");
-
- d = match_end;
- dend = ((d >= string1 && d <= end1)
- ? end_match_1 : end_match_2);
-
- for (mcnt = 1; mcnt < num_regs; mcnt++)
- {
- regstart[mcnt] = best_regstart[mcnt];
- regend[mcnt] = best_regend[mcnt];
- }
- }
- } /* d != end_match_2 */
-
- DEBUG_PRINT1 ("Accepting match.\n");
-
- /* If caller wants register contents data back, do it. */
- if (regs && !bufp->no_sub)
- {
- /* Have the register data arrays been allocated? */
- if (bufp->regs_allocated == REGS_UNALLOCATED)
- { /* No. So allocate them with malloc. We need one
- extra element beyond `num_regs' for the `-1' marker
- GNU code uses. */
- regs->num_regs = MAX (RE_NREGS, num_regs + 1);
- regs->start = TALLOC (regs->num_regs, regoff_t);
- regs->end = TALLOC (regs->num_regs, regoff_t);
- if (regs->start == NULL || regs->end == NULL)
- return -2;
- bufp->regs_allocated = REGS_REALLOCATE;
- }
- else if (bufp->regs_allocated == REGS_REALLOCATE)
- { /* Yes. If we need more elements than were already
- allocated, reallocate them. If we need fewer, just
- leave it alone. */
- if (regs->num_regs < num_regs + 1)
- {
- regs->num_regs = num_regs + 1;
- RETALLOC (regs->start, regs->num_regs, regoff_t);
- RETALLOC (regs->end, regs->num_regs, regoff_t);
- if (regs->start == NULL || regs->end == NULL)
- return -2;
- }
- }
- else
- assert (bufp->regs_allocated == REGS_FIXED);
-
- /* Convert the pointer data in `regstart' and `regend' to
- indices. Register zero has to be set differently,
- since we haven't kept track of any info for it. */
- if (regs->num_regs > 0)
- {
- regs->start[0] = pos;
- regs->end[0] = (MATCHING_IN_FIRST_STRING ? d - string1
- : d - string2 + size1);
- }
-
- /* Go through the first `min (num_regs, regs->num_regs)'
- registers, since that is all we initialized. */
- for (mcnt = 1; mcnt < MIN (num_regs, regs->num_regs); mcnt++)
- {
- if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt]))
- regs->start[mcnt] = regs->end[mcnt] = -1;
- else
- {
- regs->start[mcnt] = POINTER_TO_OFFSET (regstart[mcnt]);
- regs->end[mcnt] = POINTER_TO_OFFSET (regend[mcnt]);
- }
- }
-
- /* If the regs structure we return has more elements than
- were in the pattern, set the extra elements to -1. If
- we (re)allocated the registers, this is the case,
- because we always allocate enough to have at least one
- -1 at the end. */
- for (mcnt = num_regs; mcnt < regs->num_regs; mcnt++)
- regs->start[mcnt] = regs->end[mcnt] = -1;
- } /* regs && !bufp->no_sub */
-
- FREE_VARIABLES ();
- DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n",
- nfailure_points_pushed, nfailure_points_popped,
- nfailure_points_pushed - nfailure_points_popped);
- DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed);
-
- mcnt = d - pos - (MATCHING_IN_FIRST_STRING
- ? string1
- : string2 - size1);
-
- DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt);
-
- return mcnt;
- }
-
- /* Otherwise match next pattern command. */
-#ifdef SWITCH_ENUM_BUG
- switch ((int) ((re_opcode_t) *p++))
-#else
- switch ((re_opcode_t) *p++)
-#endif
- {
- /* Ignore these. Used to ignore the n of succeed_n's which
- currently have n == 0. */
- case no_op:
- DEBUG_PRINT1 ("EXECUTING no_op.\n");
- break;
-
-
- /* Match the next n pattern characters exactly. The following
- byte in the pattern defines n, and the n bytes after that
- are the characters to match. */
- case exactn:
- mcnt = *p++;
- DEBUG_PRINT2 ("EXECUTING exactn %d.\n", mcnt);
-
- /* This is written out as an if-else so we don't waste time
- testing `translate' inside the loop. */
- if (translate)
- {
- do
- {
- PREFETCH ();
- if (translate[(unsigned char) *d++] != (char) *p++)
- goto fail;
- }
- while (--mcnt);
- }
- else
- {
- do
- {
- PREFETCH ();
- if (*d++ != (char) *p++) goto fail;
- }
- while (--mcnt);
- }
- SET_REGS_MATCHED ();
- break;
-
-
- /* Match any character except possibly a newline or a null. */
- case anychar:
- DEBUG_PRINT1 ("EXECUTING anychar.\n");
-
- PREFETCH ();
-
- if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\n')
- || (bufp->syntax & RE_DOT_NOT_NULL && TRANSLATE (*d) == '\000'))
- goto fail;
-
- SET_REGS_MATCHED ();
- DEBUG_PRINT2 (" Matched `%d'.\n", *d);
- d++;
- break;
-
-
- case charset:
- case charset_not:
- {
- register unsigned char c;
- boolean not = (re_opcode_t) *(p - 1) == charset_not;
-
- DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : "");
-
- PREFETCH ();
- c = TRANSLATE (*d); /* The character to match. */
-
- /* Cast to `unsigned' instead of `unsigned char' in case the
- bit list is a full 32 bytes long. */
- if (c < (unsigned) (*p * BYTEWIDTH)
- && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
- not = !not;
-
- p += 1 + *p;
-
- if (!not) goto fail;
-
- SET_REGS_MATCHED ();
- d++;
- break;
- }
-
-
- /* The beginning of a group is represented by start_memory.
- The arguments are the register number in the next byte, and the
- number of groups inner to this one in the next. The text
- matched within the group is recorded (in the internal
- registers data structure) under the register number. */
- case start_memory:
- DEBUG_PRINT3 ("EXECUTING start_memory %d (%d):\n", *p, p[1]);
-
- /* Find out if this group can match the empty string. */
- p1 = p; /* To send to group_match_null_string_p. */
-
- if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE)
- REG_MATCH_NULL_STRING_P (reg_info[*p])
- = group_match_null_string_p (&p1, pend, reg_info);
-
- /* Save the position in the string where we were the last time
- we were at this open-group operator in case the group is
- operated upon by a repetition operator, e.g., with `(a*)*b'
- against `ab'; then we want to ignore where we are now in
- the string in case this attempt to match fails. */
- old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p])
- ? REG_UNSET (regstart[*p]) ? d : regstart[*p]
- : regstart[*p];
- DEBUG_PRINT2 (" old_regstart: %d\n",
- POINTER_TO_OFFSET (old_regstart[*p]));
-
- regstart[*p] = d;
- DEBUG_PRINT2 (" regstart: %d\n", POINTER_TO_OFFSET (regstart[*p]));
-
- IS_ACTIVE (reg_info[*p]) = 1;
- MATCHED_SOMETHING (reg_info[*p]) = 0;
-
- /* This is the new highest active register. */
- highest_active_reg = *p;
-
- /* If nothing was active before, this is the new lowest active
- register. */
- if (lowest_active_reg == NO_LOWEST_ACTIVE_REG)
- lowest_active_reg = *p;
-
- /* Move past the register number and inner group count. */
- p += 2;
- break;
-
-
- /* The stop_memory opcode represents the end of a group. Its
- arguments are the same as start_memory's: the register
- number, and the number of inner groups. */
- case stop_memory:
- DEBUG_PRINT3 ("EXECUTING stop_memory %d (%d):\n", *p, p[1]);
-
- /* We need to save the string position the last time we were at
- this close-group operator in case the group is operated
- upon by a repetition operator, e.g., with `((a*)*(b*)*)*'
- against `aba'; then we want to ignore where we are now in
- the string in case this attempt to match fails. */
- old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p])
- ? REG_UNSET (regend[*p]) ? d : regend[*p]
- : regend[*p];
- DEBUG_PRINT2 (" old_regend: %d\n",
- POINTER_TO_OFFSET (old_regend[*p]));
-
- regend[*p] = d;
- DEBUG_PRINT2 (" regend: %d\n", POINTER_TO_OFFSET (regend[*p]));
-
- /* This register isn't active anymore. */
- IS_ACTIVE (reg_info[*p]) = 0;
-
- /* If this was the only register active, nothing is active
- anymore. */
- if (lowest_active_reg == highest_active_reg)
- {
- lowest_active_reg = NO_LOWEST_ACTIVE_REG;
- highest_active_reg = NO_HIGHEST_ACTIVE_REG;
- }
- else
- { /* We must scan for the new highest active register, since
- it isn't necessarily one less than now: consider
- (a(b)c(d(e)f)g). When group 3 ends, after the f), the
- new highest active register is 1. */
- unsigned char r = *p - 1;
- while (r > 0 && !IS_ACTIVE (reg_info[r]))
- r--;
-
- /* If we end up at register zero, that means that we saved
- the registers as the result of an `on_failure_jump', not
- a `start_memory', and we jumped to past the innermost
- `stop_memory'. For example, in ((.)*) we save
- registers 1 and 2 as a result of the *, but when we pop
- back to the second ), we are at the stop_memory 1.
- Thus, nothing is active. */
- if (r == 0)
- {
- lowest_active_reg = NO_LOWEST_ACTIVE_REG;
- highest_active_reg = NO_HIGHEST_ACTIVE_REG;
- }
- else
- highest_active_reg = r;
- }
-
- /* If just failed to match something this time around with a
- group that's operated on by a repetition operator, try to
- force exit from the ``loop'', and restore the register
- information for this group that we had before trying this
- last match. */
- if ((!MATCHED_SOMETHING (reg_info[*p])
- || (re_opcode_t) p[-3] == start_memory)
- && (p + 2) < pend)
- {
- boolean is_a_jump_n = false;
-
- p1 = p + 2;
- mcnt = 0;
- switch ((re_opcode_t) *p1++)
- {
- case jump_n:
- is_a_jump_n = true;
- case pop_failure_jump:
- case maybe_pop_jump:
- case jump:
- case dummy_failure_jump:
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- if (is_a_jump_n)
- p1 += 2;
- break;
-
- default:
- /* do nothing */ ;
- }
- p1 += mcnt;
-
- /* If the next operation is a jump backwards in the pattern
- to an on_failure_jump right before the start_memory
- corresponding to this stop_memory, exit from the loop
- by forcing a failure after pushing on the stack the
- on_failure_jump's jump in the pattern, and d. */
- if (mcnt < 0 && (re_opcode_t) *p1 == on_failure_jump
- && (re_opcode_t) p1[3] == start_memory && p1[4] == *p)
- {
- /* If this group ever matched anything, then restore
- what its registers were before trying this last
- failed match, e.g., with `(a*)*b' against `ab' for
- regstart[1], and, e.g., with `((a*)*(b*)*)*'
- against `aba' for regend[3].
-
- Also restore the registers for inner groups for,
- e.g., `((a*)(b*))*' against `aba' (register 3 would
- otherwise get trashed). */
-
- if (EVER_MATCHED_SOMETHING (reg_info[*p]))
- {
- unsigned r;
-
- EVER_MATCHED_SOMETHING (reg_info[*p]) = 0;
-
- /* Restore this and inner groups' (if any) registers. */
- for (r = *p; r < *p + *(p + 1); r++)
- {
- regstart[r] = old_regstart[r];
-
- /* xx why this test? */
- if ((int) old_regend[r] >= (int) regstart[r])
- regend[r] = old_regend[r];
- }
- }
- p1++;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- /*
- * WARN 191: illegal pointer conversion
- * between CONST and NON-CONST attribute
- */
-# ifdef __TANDEM
-# pragma NOWARN( 191 )
-# endif
- PUSH_FAILURE_POINT (p1 + mcnt, d, -2);
-# ifdef __TANDEM
-# pragma WARN( 191 )
-# endif
-
- goto fail;
- }
- }
-
- /* Move past the register number and the inner group count. */
- p += 2;
- break;
-
-
- /* \<digit> has been turned into a `duplicate' command which is
- followed by the numeric value of <digit> as the register number. */
- case duplicate:
- {
- register const char *d2, *dend2;
- int regno = *p++; /* Get which register to match against. */
- DEBUG_PRINT2 ("EXECUTING duplicate %d.\n", regno);
-
- /* Can't back reference a group which we've never matched. */
- if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno]))
- goto fail;
-
- /* Where in input to try to start matching. */
- d2 = regstart[regno];
-
- /* Where to stop matching; if both the place to start and
- the place to stop matching are in the same string, then
- set to the place to stop, otherwise, for now have to use
- the end of the first string. */
-
- dend2 = ((FIRST_STRING_P (regstart[regno])
- == FIRST_STRING_P (regend[regno]))
- ? regend[regno] : end_match_1);
- for (;;)
- {
- /* If necessary, advance to next segment in register
- contents. */
- while (d2 == dend2)
- {
- if (dend2 == end_match_2) break;
- if (dend2 == regend[regno]) break;
-
- /* End of string1 => advance to string2. */
- d2 = string2;
- dend2 = regend[regno];
- }
- /* At end of register contents => success */
- if (d2 == dend2) break;
-
- /* If necessary, advance to next segment in data. */
- PREFETCH ();
-
- /* How many characters left in this segment to match. */
- mcnt = dend - d;
-
- /* Want how many consecutive characters we can match in
- one shot, so, if necessary, adjust the count. */
- if (mcnt > dend2 - d2)
- mcnt = dend2 - d2;
-
- /* Compare that many; failure if mismatch, else move
- past them. */
- if (translate
- ? bcmp_translate (d, d2, mcnt, translate)
- : bcmp (d, d2, mcnt))
- goto fail;
- d += mcnt, d2 += mcnt;
- }
- }
- break;
-
-
- /* begline matches the empty string at the beginning of the string
- (unless `not_bol' is set in `bufp'), and, if
- `newline_anchor' is set, after newlines. */
- case begline:
- DEBUG_PRINT1 ("EXECUTING begline.\n");
-
- if (AT_STRINGS_BEG (d))
- {
- if (!bufp->not_bol) break;
- }
- else if (d[-1] == '\n' && bufp->newline_anchor)
- {
- break;
- }
- /* In all other cases, we fail. */
- goto fail;
-
-
- /* endline is the dual of begline. */
- case endline:
- DEBUG_PRINT1 ("EXECUTING endline.\n");
-
- if (AT_STRINGS_END (d))
- {
- if (!bufp->not_eol) break;
- }
-
- /* We have to ``prefetch'' the next character. */
- else if ((d == end1 ? *string2 : *d) == '\n'
- && bufp->newline_anchor)
- {
- break;
- }
- goto fail;
-
-
- /* Match at the very beginning of the data. */
- case begbuf:
- DEBUG_PRINT1 ("EXECUTING begbuf.\n");
- if (AT_STRINGS_BEG (d))
- break;
- goto fail;
-
-
- /* Match at the very end of the data. */
- case endbuf:
- DEBUG_PRINT1 ("EXECUTING endbuf.\n");
- if (AT_STRINGS_END (d))
- break;
- goto fail;
-
-
- /* on_failure_keep_string_jump is used to optimize `.*\n'. It
- pushes NULL as the value for the string on the stack. Then
- `pop_failure_point' will keep the current value for the
- string, instead of restoring it. To see why, consider
- matching `foo\nbar' against `.*\n'. The .* matches the foo;
- then the . fails against the \n. But the next thing we want
- to do is match the \n against the \n; if we restored the
- string value, we would be back at the foo.
-
- Because this is used only in specific cases, we don't need to
- check all the things that `on_failure_jump' does, to make
- sure the right things get saved on the stack. Hence we don't
- share its code. The only reason to push anything on the
- stack at all is that otherwise we would have to change
- `anychar's code to do something besides goto fail in this
- case; that seems worse than this. */
- case on_failure_keep_string_jump:
- DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump");
-
- EXTRACT_NUMBER_AND_INCR (mcnt, p);
- DEBUG_PRINT3 (" %d (to 0x%x):\n", mcnt, p + mcnt);
-
- /*
- * WARN 191: illegal pointer conversion
- * between CONST and NON-CONST attribute
- */
-# ifdef __TANDEM
-# pragma NOWARN( 191 )
-# endif
- PUSH_FAILURE_POINT (p + mcnt, NULL, -2);
-# ifdef __TANDEM
-# pragma WARN( 191 )
-# endif
- break;
-
-
- /* Uses of on_failure_jump:
-
- Each alternative starts with an on_failure_jump that points
- to the beginning of the next alternative. Each alternative
- except the last ends with a jump that in effect jumps past
- the rest of the alternatives. (They really jump to the
- ending jump of the following alternative, because tensioning
- these jumps is a hassle.)
-
- Repeats start with an on_failure_jump that points past both
- the repetition text and either the following jump or
- pop_failure_jump back to this on_failure_jump. */
- case on_failure_jump:
- on_failure:
- DEBUG_PRINT1 ("EXECUTING on_failure_jump");
-
- EXTRACT_NUMBER_AND_INCR (mcnt, p);
- DEBUG_PRINT3 (" %d (to 0x%x)", mcnt, p + mcnt);
-
- /* If this on_failure_jump comes right before a group (i.e.,
- the original * applied to a group), save the information
- for that group and all inner ones, so that if we fail back
- to this point, the group's information will be correct.
- For example, in \(a*\)*\1, we need the preceding group,
- and in \(\(a*\)b*\)\2, we need the inner group. */
-
- /* We can't use `p' to check ahead because we push
- a failure point to `p + mcnt' after we do this. */
- p1 = p;
-
- /* We need to skip no_op's before we look for the
- start_memory in case this on_failure_jump is happening as
- the result of a completed succeed_n, as in \(a\)\{1,3\}b\1
- against aba. */
- while (p1 < pend && (re_opcode_t) *p1 == no_op)
- p1++;
-
- if (p1 < pend && (re_opcode_t) *p1 == start_memory)
- {
- /* We have a new highest active register now. This will
- get reset at the start_memory we are about to get to,
- but we will have saved all the registers relevant to
- this repetition op, as described above. */
- highest_active_reg = *(p1 + 1) + *(p1 + 2);
- if (lowest_active_reg == NO_LOWEST_ACTIVE_REG)
- lowest_active_reg = *(p1 + 1);
- }
-
- DEBUG_PRINT1 (":\n");
- /*
- * WARN 191: illegal pointer conversion
- * between CONST and NON-CONST attribute
- */
-# ifdef __TANDEM
-# pragma NOWARN( 191 )
-# endif
- PUSH_FAILURE_POINT (p + mcnt, d, -2);
-# ifdef __TANDEM
-# pragma WARN( 191 )
-# endif
- break;
-
-
- /* A smart repeat ends with `maybe_pop_jump'.
- We change it to either `pop_failure_jump' or `jump'. */
- case maybe_pop_jump:
- EXTRACT_NUMBER_AND_INCR (mcnt, p);
- DEBUG_PRINT2 ("EXECUTING maybe_pop_jump %d.\n", mcnt);
- {
- register unsigned char *p2 = p;
-
- /* Compare the beginning of the repeat with what in the
- pattern follows its end. If we can establish that there
- is nothing that they would both match, i.e., that we
- would have to backtrack because of (as in, e.g., `a*a')
- then we can change to pop_failure_jump, because we'll
- never have to backtrack.
-
- This is not true in the case of alternatives: in
- `(a|ab)*' we do need to backtrack to the `ab' alternative
- (e.g., if the string was `ab'). But instead of trying to
- detect that here, the alternative has put on a dummy
- failure point which is what we will end up popping. */
-
- /* Skip over open/close-group commands. */
- while (p2 + 2 < pend
- && ((re_opcode_t) *p2 == stop_memory
- || (re_opcode_t) *p2 == start_memory))
- p2 += 3; /* Skip over args, too. */
-
- /* If we're at the end of the pattern, we can change. */
- if (p2 == pend)
- {
- /* Consider what happens when matching ":\(.*\)"
- against ":/". I don't really understand this code
- yet. */
- p[-3] = (unsigned char) pop_failure_jump;
- DEBUG_PRINT1
- (" End of pattern: change to `pop_failure_jump'.\n");
- }
-
- else if ((re_opcode_t) *p2 == exactn
- || (bufp->newline_anchor && (re_opcode_t) *p2 == endline))
- {
- register unsigned char c
- = *p2 == (unsigned char) endline ? '\n' : p2[2];
- p1 = p + mcnt;
-
- /* p1[0] ... p1[2] are the `on_failure_jump' corresponding
- to the `maybe_finalize_jump' of this case. Examine what
- follows. */
- if ((re_opcode_t) p1[3] == exactn && p1[5] != c)
- {
- p[-3] = (unsigned char) pop_failure_jump;
- DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n",
- c, p1[5]);
- }
-
- else if ((re_opcode_t) p1[3] == charset
- || (re_opcode_t) p1[3] == charset_not)
- {
- int not = (re_opcode_t) p1[3] == charset_not;
-
- if (c < (unsigned char) (p1[4] * BYTEWIDTH)
- && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
- not = !not;
-
- /* `not' is equal to 1 if c would match, which means
- that we can't change to pop_failure_jump. */
- if (!not)
- {
- p[-3] = (unsigned char) pop_failure_jump;
- DEBUG_PRINT1 (" No match => pop_failure_jump.\n");
- }
- }
- }
- }
- p -= 2; /* Point at relative address again. */
- if ((re_opcode_t) p[-1] != pop_failure_jump)
- {
- p[-1] = (unsigned char) jump;
- DEBUG_PRINT1 (" Match => jump.\n");
- goto unconditional_jump;
- }
- /* Note fall through. */
-
-
- /* The end of a simple repeat has a pop_failure_jump back to
- its matching on_failure_jump, where the latter will push a
- failure point. The pop_failure_jump takes off failure
- points put on by this pop_failure_jump's matching
- on_failure_jump; we got through the pattern to here from the
- matching on_failure_jump, so didn't fail. */
- case pop_failure_jump:
- {
- /* We need to pass separate storage for the lowest and
- highest registers, even though we don't care about the
- actual values. Otherwise, we will restore only one
- register from the stack, since lowest will == highest in
- `pop_failure_point'. */
- unsigned dummy_low_reg, dummy_high_reg;
- unsigned char *pdummy;
- const char *sdummy;
-
- DEBUG_PRINT1 ("EXECUTING pop_failure_jump.\n");
- POP_FAILURE_POINT (sdummy, pdummy,
- dummy_low_reg, dummy_high_reg,
- reg_dummy, reg_dummy, reg_info_dummy);
- }
- /* Note fall through. */
-
-
- /* Unconditionally jump (without popping any failure points). */
- case jump:
- unconditional_jump:
- EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */
- DEBUG_PRINT2 ("EXECUTING jump %d ", mcnt);
- p += mcnt; /* Do the jump. */
- DEBUG_PRINT2 ("(to 0x%x).\n", p);
- break;
-
-
- /* We need this opcode so we can detect where alternatives end
- in `group_match_null_string_p' et al. */
- case jump_past_alt:
- DEBUG_PRINT1 ("EXECUTING jump_past_alt.\n");
- goto unconditional_jump;
-
-
- /* Normally, the on_failure_jump pushes a failure point, which
- then gets popped at pop_failure_jump. We will end up at
- pop_failure_jump, also, and with a pattern of, say, `a+', we
- are skipping over the on_failure_jump, so we have to push
- something meaningless for pop_failure_jump to pop. */
- case dummy_failure_jump:
- DEBUG_PRINT1 ("EXECUTING dummy_failure_jump.\n");
- /* It doesn't matter what we push for the string here. What
- the code at `fail' tests is the value for the pattern. */
- /*
- * WARN 191: illegal pointer conversion
- * between CONST and NON-CONST attribute
- */
-# ifdef __TANDEM
-# pragma NOWARN( 191 )
-# endif
- PUSH_FAILURE_POINT (0, 0, -2);
-# ifdef __TANDEM
-# pragma WARN( 191 )
-# endif
- goto unconditional_jump;
-
-
- /* At the end of an alternative, we need to push a dummy failure
- point in case we are followed by a `pop_failure_jump', because
- we don't want the failure point for the alternative to be
- popped. For example, matching `(a|ab)*' against `aab'
- requires that we match the `ab' alternative. */
- case push_dummy_failure:
- DEBUG_PRINT1 ("EXECUTING push_dummy_failure.\n");
- /* See comments just above at `dummy_failure_jump' about the
- two zeroes. */
- /*
- * WARN 191: illegal pointer conversion
- * between CONST and NON-CONST attribute
- */
-# ifdef __TANDEM
-# pragma NOWARN( 191 )
-# endif
- PUSH_FAILURE_POINT (0, 0, -2);
-# ifdef __TANDEM
-# pragma WARN( 191 )
-# endif
- break;
-
- /* Have to succeed matching what follows at least n times.
- After that, handle like `on_failure_jump'. */
- case succeed_n:
- EXTRACT_NUMBER (mcnt, p + 2);
- DEBUG_PRINT2 ("EXECUTING succeed_n %d.\n", mcnt);
-
- assert (mcnt >= 0);
- /* Originally, this is how many times we HAVE to succeed. */
- if (mcnt > 0)
- {
- mcnt--;
- p += 2;
- STORE_NUMBER_AND_INCR (p, mcnt);
- DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p, mcnt);
- }
- else if (mcnt == 0)
- {
- DEBUG_PRINT2 (" Setting two bytes from 0x%x to no_op.\n", p+2);
- p[2] = (unsigned char) no_op;
- p[3] = (unsigned char) no_op;
- goto on_failure;
- }
- break;
-
- case jump_n:
- EXTRACT_NUMBER (mcnt, p + 2);
- DEBUG_PRINT2 ("EXECUTING jump_n %d.\n", mcnt);
-
- /* Originally, this is how many times we CAN jump. */
- if (mcnt)
- {
- mcnt--;
- STORE_NUMBER (p + 2, mcnt);
- goto unconditional_jump;
- }
- /* If don't have to jump any more, skip over the rest of command. */
- else
- p += 4;
- break;
-
- case set_number_at:
- {
- DEBUG_PRINT1 ("EXECUTING set_number_at.\n");
-
- EXTRACT_NUMBER_AND_INCR (mcnt, p);
- p1 = p + mcnt;
- EXTRACT_NUMBER_AND_INCR (mcnt, p);
- DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p1, mcnt);
- STORE_NUMBER (p1, mcnt);
- break;
- }
-
- case wordbound:
- DEBUG_PRINT1 ("EXECUTING wordbound.\n");
- if (AT_WORD_BOUNDARY (d))
- break;
- goto fail;
-
- case notwordbound:
- DEBUG_PRINT1 ("EXECUTING notwordbound.\n");
- if (AT_WORD_BOUNDARY (d))
- goto fail;
- break;
-
- case wordbeg:
- DEBUG_PRINT1 ("EXECUTING wordbeg.\n");
- if (WORDCHAR_P (d) && (AT_STRINGS_BEG (d) || !WORDCHAR_P (d - 1)))
- break;
- goto fail;
-
- case wordend:
- DEBUG_PRINT1 ("EXECUTING wordend.\n");
- if (!AT_STRINGS_BEG (d) && WORDCHAR_P (d - 1)
- && (!WORDCHAR_P (d) || AT_STRINGS_END (d)))
- break;
- goto fail;
-
-#ifdef emacs
-#ifdef emacs19
- case before_dot:
- DEBUG_PRINT1 ("EXECUTING before_dot.\n");
- if (PTR_CHAR_POS ((unsigned char *) d) >= point)
- goto fail;
- break;
-
- case at_dot:
- DEBUG_PRINT1 ("EXECUTING at_dot.\n");
- if (PTR_CHAR_POS ((unsigned char *) d) != point)
- goto fail;
- break;
-
- case after_dot:
- DEBUG_PRINT1 ("EXECUTING after_dot.\n");
- if (PTR_CHAR_POS ((unsigned char *) d) <= point)
- goto fail;
- break;
-#else /* not emacs19 */
- case at_dot:
- DEBUG_PRINT1 ("EXECUTING at_dot.\n");
- if (PTR_CHAR_POS ((unsigned char *) d) + 1 != point)
- goto fail;
- break;
-#endif /* not emacs19 */
-
- case syntaxspec:
- DEBUG_PRINT2 ("EXECUTING syntaxspec %d.\n", mcnt);
- mcnt = *p++;
- goto matchsyntax;
-
- case wordchar:
- DEBUG_PRINT1 ("EXECUTING Emacs wordchar.\n");
- mcnt = (int) Sword;
- matchsyntax:
- PREFETCH ();
- if (SYNTAX (*d++) != (enum syntaxcode) mcnt)
- goto fail;
- SET_REGS_MATCHED ();
- break;
-
- case notsyntaxspec:
- DEBUG_PRINT2 ("EXECUTING notsyntaxspec %d.\n", mcnt);
- mcnt = *p++;
- goto matchnotsyntax;
-
- case notwordchar:
- DEBUG_PRINT1 ("EXECUTING Emacs notwordchar.\n");
- mcnt = (int) Sword;
- matchnotsyntax:
- PREFETCH ();
- if (SYNTAX (*d++) == (enum syntaxcode) mcnt)
- goto fail;
- SET_REGS_MATCHED ();
- break;
-
-#else /* not emacs */
- case wordchar:
- DEBUG_PRINT1 ("EXECUTING non-Emacs wordchar.\n");
- PREFETCH ();
- if (!WORDCHAR_P (d))
- goto fail;
- SET_REGS_MATCHED ();
- d++;
- break;
-
- case notwordchar:
- DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n");
- PREFETCH ();
- if (WORDCHAR_P (d))
- goto fail;
- SET_REGS_MATCHED ();
- d++;
- break;
-#endif /* not emacs */
-
- default:
- abort ();
- }
- continue; /* Successfully executed one pattern command; keep going. */
-
-
- /* We goto here if a matching operation fails. */
- fail:
- if (!FAIL_STACK_EMPTY ())
- { /* A restart point is known. Restore to that state. */
- DEBUG_PRINT1 ("\nFAIL:\n");
- POP_FAILURE_POINT (d, p,
- lowest_active_reg, highest_active_reg,
- regstart, regend, reg_info);
-
- /* If this failure point is a dummy, try the next one. */
- if (!p)
- goto fail;
-
- /* If we failed to the end of the pattern, don't examine *p. */
- assert (p <= pend);
- if (p < pend)
- {
- boolean is_a_jump_n = false;
-
- /* If failed to a backwards jump that's part of a repetition
- loop, need to pop this failure point and use the next one. */
- switch ((re_opcode_t) *p)
- {
- case jump_n:
- is_a_jump_n = true;
- case maybe_pop_jump:
- case pop_failure_jump:
- case jump:
- p1 = p + 1;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- p1 += mcnt;
-
- if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n)
- || (!is_a_jump_n
- && (re_opcode_t) *p1 == on_failure_jump))
- goto fail;
- break;
- default:
- /* do nothing */ ;
- }
- }
-
- if (d >= string1 && d <= end1)
- dend = end_match_1;
- }
- else
- break; /* Matching at this starting point really fails. */
- } /* for (;;) */
-
- if (best_regs_set)
- goto restore_best_regs;
-
- FREE_VARIABLES ();
-
- return -1; /* Failure to match. */
-} /* re_match_2 */
-
-/* Subroutine definitions for re_match_2. */
-
-
-/* We are passed P pointing to a register number after a start_memory.
-
- Return true if the pattern up to the corresponding stop_memory can
- match the empty string, and false otherwise.
-
- If we find the matching stop_memory, sets P to point to one past its number.
- Otherwise, sets P to an undefined byte less than or equal to END.
-
- We don't handle duplicates properly (yet). */
-
-static boolean
-group_match_null_string_p (p, end, reg_info)
- unsigned char **p, *end;
- register_info_type *reg_info;
-{
- int mcnt;
- /* Point to after the args to the start_memory. */
- unsigned char *p1 = *p + 2;
-
- while (p1 < end)
- {
- /* Skip over opcodes that can match nothing, and return true or
- false, as appropriate, when we get to one that can't, or to the
- matching stop_memory. */
-
- switch ((re_opcode_t) *p1)
- {
- /* Could be either a loop or a series of alternatives. */
- case on_failure_jump:
- p1++;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
-
- /* If the next operation is not a jump backwards in the
- pattern. */
-
- if (mcnt >= 0)
- {
- /* Go through the on_failure_jumps of the alternatives,
- seeing if any of the alternatives cannot match nothing.
- The last alternative starts with only a jump,
- whereas the rest start with on_failure_jump and end
- with a jump, e.g., here is the pattern for `a|b|c':
-
- /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6
- /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3
- /exactn/1/c
-
- So, we have to first go through the first (n-1)
- alternatives and then deal with the last one separately. */
-
-
- /* Deal with the first (n-1) alternatives, which start
- with an on_failure_jump (see above) that jumps to right
- past a jump_past_alt. */
-
- while ((re_opcode_t) p1[mcnt-3] == jump_past_alt)
- {
- /* `mcnt' holds how many bytes long the alternative
- is, including the ending `jump_past_alt' and
- its number. */
-
- if (!alt_match_null_string_p (p1, p1 + mcnt - 3,
- reg_info))
- return false;
-
- /* Move to right after this alternative, including the
- jump_past_alt. */
- p1 += mcnt;
-
- /* Break if it's the beginning of an n-th alternative
- that doesn't begin with an on_failure_jump. */
- if ((re_opcode_t) *p1 != on_failure_jump)
- break;
-
- /* Still have to check that it's not an n-th
- alternative that starts with an on_failure_jump. */
- p1++;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- if ((re_opcode_t) p1[mcnt-3] != jump_past_alt)
- {
- /* Get to the beginning of the n-th alternative. */
- p1 -= 3;
- break;
- }
- }
-
- /* Deal with the last alternative: go back and get number
- of the `jump_past_alt' just before it. `mcnt' contains
- the length of the alternative. */
- EXTRACT_NUMBER (mcnt, p1 - 2);
-
- if (!alt_match_null_string_p (p1, p1 + mcnt, reg_info))
- return false;
-
- p1 += mcnt; /* Get past the n-th alternative. */
- } /* if mcnt > 0 */
- break;
-
-
- case stop_memory:
- assert (p1[1] == **p);
- *p = p1 + 2;
- return true;
-
-
- default:
- if (!common_op_match_null_string_p (&p1, end, reg_info))
- return false;
- }
- } /* while p1 < end */
-
- return false;
-} /* group_match_null_string_p */
-
-
-/* Similar to group_match_null_string_p, but doesn't deal with alternatives:
- It expects P to be the first byte of a single alternative and END one
- byte past the last. The alternative can contain groups. */
-
-static boolean
-alt_match_null_string_p (p, end, reg_info)
- unsigned char *p, *end;
- register_info_type *reg_info;
-{
- int mcnt;
- unsigned char *p1 = p;
-
- while (p1 < end)
- {
- /* Skip over opcodes that can match nothing, and break when we get
- to one that can't. */
-
- switch ((re_opcode_t) *p1)
- {
- /* It's a loop. */
- case on_failure_jump:
- p1++;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- p1 += mcnt;
- break;
-
- default:
- if (!common_op_match_null_string_p (&p1, end, reg_info))
- return false;
- }
- } /* while p1 < end */
-
- return true;
-} /* alt_match_null_string_p */
-
-
-/* Deals with the ops common to group_match_null_string_p and
- alt_match_null_string_p.
-
- Sets P to one after the op and its arguments, if any. */
-
-static boolean
-common_op_match_null_string_p (p, end, reg_info)
- unsigned char **p, *end;
- register_info_type *reg_info;
-{
- int mcnt;
- boolean ret;
- int reg_no;
- unsigned char *p1 = *p;
-
- switch ((re_opcode_t) *p1++)
- {
- case no_op:
- case begline:
- case endline:
- case begbuf:
- case endbuf:
- case wordbeg:
- case wordend:
- case wordbound:
- case notwordbound:
-#ifdef emacs
- case before_dot:
- case at_dot:
- case after_dot:
-#endif
- break;
-
- case start_memory:
- reg_no = *p1;
- assert (reg_no > 0 && reg_no <= MAX_REGNUM);
- ret = group_match_null_string_p (&p1, end, reg_info);
-
- /* Have to set this here in case we're checking a group which
- contains a group and a back reference to it. */
-
- if (REG_MATCH_NULL_STRING_P (reg_info[reg_no]) == MATCH_NULL_UNSET_VALUE)
- REG_MATCH_NULL_STRING_P (reg_info[reg_no]) = ret;
-
- if (!ret)
- return false;
- break;
-
- /* If this is an optimized succeed_n for zero times, make the jump. */
- case jump:
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- if (mcnt >= 0)
- p1 += mcnt;
- else
- return false;
- break;
-
- case succeed_n:
- /* Get to the number of times to succeed. */
- p1 += 2;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
-
- if (mcnt == 0)
- {
- p1 -= 4;
- EXTRACT_NUMBER_AND_INCR (mcnt, p1);
- p1 += mcnt;
- }
- else
- return false;
- break;
-
- case duplicate:
- if (!REG_MATCH_NULL_STRING_P (reg_info[*p1]))
- return false;
- break;
-
- case set_number_at:
- p1 += 4;
-
- default:
- /* All other opcodes mean we cannot match the empty string. */
- return false;
- }
-
- *p = p1;
- return true;
-} /* common_op_match_null_string_p */
-
-
-/* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN
- bytes; nonzero otherwise. */
-
-static int
-bcmp_translate (s1, s2, len, translate)
- unsigned char *s1, *s2;
- register int len;
- char *translate;
-{
- register unsigned char *p1 = s1, *p2 = s2;
- while (len)
- {
- if (translate[*p1++] != translate[*p2++]) return 1;
- len--;
- }
- return 0;
-}
-
-/* Entry points for GNU code. */
-
-/* re_compile_pattern is the GNU regular expression compiler: it
- compiles PATTERN (of length SIZE) and puts the result in BUFP.
- Returns 0 if the pattern was valid, otherwise an error string.
-
- Assumes the `allocated' (and perhaps `buffer') and `translate' fields
- are set in BUFP on entry.
-
- We call regex_compile to do the actual compilation. */
-
-const char *
-re_compile_pattern (pattern, length, bufp)
- const char *pattern;
- int length;
- struct re_pattern_buffer *bufp;
-{
- reg_errcode_t ret;
-
- /* GNU code is written to assume at least RE_NREGS registers will be set
- (and at least one extra will be -1). */
- bufp->regs_allocated = REGS_UNALLOCATED;
-
- /* And GNU code determines whether or not to get register information
- by passing null for the REGS argument to re_match, etc., not by
- setting no_sub. */
- bufp->no_sub = 0;
-
- /* Match anchors at newline. */
- bufp->newline_anchor = 1;
-
- ret = regex_compile (pattern, length, re_syntax_options, bufp);
-
- return (ret == 0) ? (const char*)NULL : re_error_msg[(int) ret];
-}
-
-/* Entry points compatible with 4.2 BSD regex library. We don't define
- them if this is an Emacs or POSIX compilation. */
-
-#if !defined (emacs) && !defined (_POSIX_SOURCE)
-
-/* BSD has one and only one pattern buffer. */
-static struct re_pattern_buffer re_comp_buf;
-
-char *
-re_comp (s)
- const char *s;
-{
- reg_errcode_t ret;
-
- if (!s)
- {
- if (!re_comp_buf.buffer)
- return "No previous regular expression";
- return 0;
- }
-
- if (!re_comp_buf.buffer)
- {
- re_comp_buf.buffer = (unsigned char *) malloc (200);
- if (re_comp_buf.buffer == NULL)
- return "Memory exhausted";
- re_comp_buf.allocated = 200;
-
- re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH);
- if (re_comp_buf.fastmap == NULL)
- return "Memory exhausted";
- }
-
- /* Since `re_exec' always passes NULL for the `regs' argument, we
- don't need to initialize the pattern buffer fields which affect it. */
-
- /* Match anchors at newlines. */
- re_comp_buf.newline_anchor = 1;
-
- ret = regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf);
-
- /* Yes, we're discarding `const' here. */
- return (char *) re_error_msg[(int) ret];
-}
-
-
-int
-re_exec (s)
- const char *s;
-{
- const int len = strlen (s);
- return
- 0 <= re_search (&re_comp_buf, s, len, 0, len, (struct re_registers *) 0);
-}
-#endif /* not emacs and not _POSIX_SOURCE */
-
-/* POSIX.2 functions. Don't define these for Emacs. */
-
-#ifndef emacs
-
-/* regcomp takes a regular expression as a string and compiles it.
-
- PREG is a regex_t *. We do not expect any fields to be initialized,
- since POSIX says we shouldn't. Thus, we set
-
- `buffer' to the compiled pattern;
- `used' to the length of the compiled pattern;
- `syntax' to RE_SYNTAX_POSIX_EXTENDED if the
- REG_EXTENDED bit in CFLAGS is set; otherwise, to
- RE_SYNTAX_POSIX_BASIC;
- `newline_anchor' to REG_NEWLINE being set in CFLAGS;
- `fastmap' and `fastmap_accurate' to zero;
- `re_nsub' to the number of subexpressions in PATTERN.
-
- PATTERN is the address of the pattern string.
-
- CFLAGS is a series of bits which affect compilation.
-
- If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we
- use POSIX basic syntax.
-
- If REG_NEWLINE is set, then . and [^...] don't match newline.
- Also, regexec will try a match beginning after every newline.
-
- If REG_ICASE is set, then we considers upper- and lowercase
- versions of letters to be equivalent when matching.
-
- If REG_NOSUB is set, then when PREG is passed to regexec, that
- routine will report only success or failure, and nothing about the
- registers.
-
- It returns 0 if it succeeds, nonzero if it doesn't. (See regex.h for
- the return codes and their meanings.) */
-
-int
-regcomp (preg, pattern, cflags)
- regex_t *preg;
- const char *pattern;
- int cflags;
-{
- reg_errcode_t ret;
- unsigned syntax
- = (cflags & REG_EXTENDED) ?
- RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC;
-
- /* regex_compile will allocate the space for the compiled pattern. */
- preg->buffer = 0;
- preg->allocated = 0;
-
- /* Don't bother to use a fastmap when searching. This simplifies the
- REG_NEWLINE case: if we used a fastmap, we'd have to put all the
- characters after newlines into the fastmap. This way, we just try
- every character. */
- preg->fastmap = 0;
-
- if (cflags & REG_ICASE)
- {
- unsigned i;
-
- preg->translate = (char *) malloc (CHAR_SET_SIZE);
- if (preg->translate == NULL)
- return (int) REG_ESPACE;
-
- /* Map uppercase characters to corresponding lowercase ones. */
- for (i = 0; i < CHAR_SET_SIZE; i++)
- preg->translate[i] = (unsigned char)(ISUPPER (i) ? tolower (i) : i);
- }
- else
- preg->translate = NULL;
-
- /* If REG_NEWLINE is set, newlines are treated differently. */
- if (cflags & REG_NEWLINE)
- { /* REG_NEWLINE implies neither . nor [^...] match newline. */
- syntax &= ~RE_DOT_NEWLINE;
- syntax |= RE_HAT_LISTS_NOT_NEWLINE;
- /* It also changes the matching behavior. */
- preg->newline_anchor = 1;
- }
- else
- preg->newline_anchor = 0;
-
- preg->no_sub = !!(cflags & REG_NOSUB);
-
- /* POSIX says a null character in the pattern terminates it, so we
- can use strlen here in compiling the pattern. */
- ret = regex_compile (pattern, strlen (pattern), syntax, preg);
-
- /* POSIX doesn't distinguish between an unmatched open-group and an
- unmatched close-group: both are REG_EPAREN. */
- if (ret == REG_ERPAREN) ret = REG_EPAREN;
-
- return (int) ret;
-}
-
-
-/* regexec searches for a given pattern, specified by PREG, in the
- string STRING.
-
- If NMATCH is zero or REG_NOSUB was set in the cflags argument to
- `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at
- least NMATCH elements, and we set them to the offsets of the
- corresponding matched substrings.
-
- EFLAGS specifies `execution flags' which affect matching: if
- REG_NOTBOL is set, then ^ does not match at the beginning of the
- string; if REG_NOTEOL is set, then $ does not match at the end.
-
- We return 0 if we find a match and REG_NOMATCH if not. */
-
-int
-regexec (preg, string, nmatch, pmatch, eflags)
- const regex_t *preg;
- const char *string;
- size_t nmatch;
- regmatch_t pmatch[];
- int eflags;
-{
- int ret;
- struct re_registers regs;
- regex_t private_preg;
- int len = strlen (string);
- boolean want_reg_info = !preg->no_sub && nmatch > 0;
-
- private_preg = *preg;
-
- private_preg.not_bol = !!(eflags & REG_NOTBOL);
- private_preg.not_eol = !!(eflags & REG_NOTEOL);
-
- /* The user has told us exactly how many registers to return
- information about, via `nmatch'. We have to pass that on to the
- matching routines. */
- private_preg.regs_allocated = REGS_FIXED;
-
- if (want_reg_info)
- {
- regs.num_regs = nmatch;
- regs.start = TALLOC (nmatch, regoff_t);
- regs.end = TALLOC (nmatch, regoff_t);
- if (regs.start == NULL || regs.end == NULL)
- return (int) REG_NOMATCH;
- }
-
- /* Perform the searching operation. */
- ret = re_search (&private_preg, string, len,
- /* start: */ 0, /* range: */ len,
- want_reg_info ? &regs : (struct re_registers *) 0);
-
- /* Copy the register information to the POSIX structure. */
- if (want_reg_info)
- {
- if (ret >= 0)
- {
- unsigned r;
-
- for (r = 0; r < nmatch; r++)
- {
- pmatch[r].rm_so = regs.start[r];
- pmatch[r].rm_eo = regs.end[r];
- }
- }
-
- /* If we needed the temporary register info, free the space now. */
- free (regs.start);
- free (regs.end);
- }
-
- /* We want zero return to mean success, unlike `re_search'. */
- return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH;
-}
-
-
-/* Returns a message corresponding to an error code, ERRCODE, returned
- from either regcomp or regexec. We don't use PREG here. */
-
-size_t
-regerror (errcode, preg, errbuf, errbuf_size)
- int errcode;
- const regex_t *preg;
- char *errbuf;
- size_t errbuf_size;
-{
-# define _RERR_(n,t) sizeof( t ),
- static const size_t aSizes[] = { REG_ERR_TABLE };
-# undef _RERR_
- const char* msg;
- size_t msg_size;
-
- if ((unsigned)errcode >= (int)REG_ERR_COUNT)
- /* Only error codes returned by the rest of the code should be passed
- to this routine. If we are given anything else, or if other regex
- code generates an invalid error code, then the program has a bug.
- Dump core so we can fix it. */
- abort ();
-
- msg = re_error_msg[ errcode ];
- msg_size = aSizes[ errcode ];
-
- if (msg_size >= errbuf_size)
- {
- strncpy (errbuf, msg, errbuf_size - 1);
- errbuf[errbuf_size - 1] = 0;
- }
- else
- strcpy (errbuf, msg);
-
- return msg_size;
-#ifdef __TANDEM
-/*
- * WARN 93: no reference to identifier "preg"
- */
-#pragma NOWARN( 93 )
-#endif
-}
-#ifdef __TANDEM
-#pragma WARN( 93 )
-#endif
-
-
-/* Free dynamically allocated space used by PREG. */
-
-void
-regfree (preg)
- regex_t *preg;
-{
- if (preg->buffer != NULL)
- free (preg->buffer);
- preg->buffer = NULL;
-
- preg->allocated = 0;
- preg->used = 0;
-
- if (preg->fastmap != NULL)
- free (preg->fastmap);
- preg->fastmap = NULL;
- preg->fastmap_accurate = 0;
-
- if (preg->translate != NULL)
- free (preg->translate);
- preg->translate = NULL;
-}
-
-#endif /* not emacs */
-
-/*
-Local variables:
-make-backup-files: t
-version-control: t
-trim-versions-without-asking: nil
-End:
-*/
diff --git a/gcc/fixinc/regex.h b/gcc/fixinc/regex.h
deleted file mode 100755
index 0f38a41..0000000
--- a/gcc/fixinc/regex.h
+++ /dev/null
@@ -1,504 +0,0 @@
-/* Definitions for data structures and routines for the regular
- expression library, version 0.12.
-
- Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* $Id: regex.h,v 1.3 1999/01/15 07:38:25 law Exp $ */
-
-#ifndef __REGEXP_LIBRARY_H__
-#define __REGEXP_LIBRARY_H__
-
-/* POSIX says that <sys/types.h> must be included (by the caller) before
- <regex.h>. */
-
-#ifdef VMS
-/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
- should be there. */
-#include <stddef.h>
-#endif
-
-
-/* The following bits are used to determine the regexp syntax we
- recognize. The set/not-set meanings are chosen so that Emacs syntax
- remains the value 0. The bits are given in alphabetical order, and
- the definitions shifted by one from the previous bit; thus, when we
- add or remove a bit, only one other definition need change. */
-typedef unsigned reg_syntax_t;
-
-/* If this bit is not set, then \ inside a bracket expression is literal.
- If set, then such a \ quotes the following character. */
-#define RE_BACKSLASH_ESCAPE_IN_LISTS (1)
-
-/* If this bit is not set, then + and ? are operators, and \+ and \? are
- literals.
- If set, then \+ and \? are operators and + and ? are literals. */
-#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
-
-/* If this bit is set, then character classes are supported. They are:
- [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
- [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
- If not set, then character classes are not supported. */
-#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
-
-/* If this bit is set, then ^ and $ are always anchors (outside bracket
- expressions, of course).
- If this bit is not set, then it depends:
- ^ is an anchor if it is at the beginning of a regular
- expression or after an open-group or an alternation operator;
- $ is an anchor if it is at the end of a regular expression, or
- before a close-group or an alternation operator.
-
- This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
- POSIX draft 11.2 says that * etc. in leading positions is undefined.
- We already implemented a previous draft which made those constructs
- invalid, though, so we haven't changed the code back. */
-#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
-
-/* If this bit is set, then special characters are always special
- regardless of where they are in the pattern.
- If this bit is not set, then special characters are special only in
- some contexts; otherwise they are ordinary. Specifically,
- * + ? and intervals are only special when not after the beginning,
- open-group, or alternation operator. */
-#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
-
-/* If this bit is set, then *, +, ?, and { cannot be first in an re or
- immediately after an alternation or begin-group operator. */
-#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
-
-/* If this bit is set, then . matches newline.
- If not set, then it doesn't. */
-#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
-
-/* If this bit is set, then . doesn't match NUL.
- If not set, then it does. */
-#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
-
-/* If this bit is set, nonmatching lists [^...] do not match newline.
- If not set, they do. */
-#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
-
-/* If this bit is set, either \{...\} or {...} defines an
- interval, depending on RE_NO_BK_BRACES.
- If not set, \{, \}, {, and } are literals. */
-#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
-
-/* If this bit is set, +, ? and | aren't recognized as operators.
- If not set, they are. */
-#define RE_LIMITED_OPS (RE_INTERVALS << 1)
-
-/* If this bit is set, newline is an alternation operator.
- If not set, newline is literal. */
-#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
-
-/* If this bit is set, then `{...}' defines an interval, and \{ and \}
- are literals.
- If not set, then `\{...\}' defines an interval. */
-#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
-
-/* If this bit is set, (...) defines a group, and \( and \) are literals.
- If not set, \(...\) defines a group, and ( and ) are literals. */
-#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
-
-/* If this bit is set, then \<digit> matches <digit>.
- If not set, then \<digit> is a back-reference. */
-#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
-
-/* If this bit is set, then | is an alternation operator, and \| is literal.
- If not set, then \| is an alternation operator, and | is literal. */
-#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
-
-/* If this bit is set, then an ending range point collating higher
- than the starting range point, as in [z-a], is invalid.
- If not set, then when ending range point collates higher than the
- starting range point, the range is ignored. */
-#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
-
-/* If this bit is set, then an unmatched ) is ordinary.
- If not set, then an unmatched ) is invalid. */
-#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
-
-/* This global variable defines the particular regexp syntax to use (for
- some interfaces). When a regexp is compiled, the syntax used is
- stored in the pattern buffer, so changing this does not affect
- already-compiled regexps. */
-extern reg_syntax_t re_syntax_options;
-
-/* Define combinations of the above bits for the standard possibilities.
- (The [[[ comments delimit what gets put into the Texinfo file, so
- don't delete them!) */
-/* [[[begin syntaxes]]] */
-#define RE_SYNTAX_EMACS 0
-
-#define RE_SYNTAX_AWK \
- (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
- | RE_NO_BK_PARENS | RE_NO_BK_REFS \
- | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
- | RE_UNMATCHED_RIGHT_PAREN_ORD)
-
-#define RE_SYNTAX_POSIX_AWK \
- (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
-
-#define RE_SYNTAX_GREP \
- (RE_BK_PLUS_QM | RE_CHAR_CLASSES \
- | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
- | RE_NEWLINE_ALT)
-
-#define RE_SYNTAX_EGREP \
- (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
- | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
- | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
- | RE_NO_BK_VBAR)
-
-#define RE_SYNTAX_POSIX_EGREP \
- (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
-
-/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
-#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
-
-#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
-
-/* Syntax bits common to both basic and extended POSIX regex syntax. */
-#define _RE_SYNTAX_POSIX_COMMON \
- (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
- | RE_INTERVALS | RE_NO_EMPTY_RANGES)
-
-#define RE_SYNTAX_POSIX_BASIC \
- (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
-
-/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
- RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
- isn't minimal, since other operators, such as \`, aren't disabled. */
-#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
- (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
-
-#define RE_SYNTAX_POSIX_EXTENDED \
- (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
- | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
- | RE_NO_BK_PARENS | RE_NO_BK_VBAR \
- | RE_UNMATCHED_RIGHT_PAREN_ORD)
-
-/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
- replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */
-#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
- (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
- | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
- | RE_NO_BK_PARENS | RE_NO_BK_REFS \
- | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
-/* [[[end syntaxes]]] */
-
-/* Maximum number of duplicates an interval can allow. Some systems
- (erroneously) define this in other header files, but we want our
- value, so remove any previous define. */
-#ifdef RE_DUP_MAX
-#undef RE_DUP_MAX
-#endif
-#define RE_DUP_MAX ((1 << 15) - 1)
-
-
-/* POSIX `cflags' bits (i.e., information for `regcomp'). */
-
-/* If this bit is set, then use extended regular expression syntax.
- If not set, then use basic regular expression syntax. */
-#define REG_EXTENDED 1
-
-/* If this bit is set, then ignore case when matching.
- If not set, then case is significant. */
-#define REG_ICASE (REG_EXTENDED << 1)
-
-/* If this bit is set, then anchors do not match at newline
- characters in the string.
- If not set, then anchors do match at newlines. */
-#define REG_NEWLINE (REG_ICASE << 1)
-
-/* If this bit is set, then report only success or fail in regexec.
- If not set, then returns differ between not matching and errors. */
-#define REG_NOSUB (REG_NEWLINE << 1)
-
-
-/* POSIX `eflags' bits (i.e., information for regexec). */
-
-/* If this bit is set, then the beginning-of-line operator doesn't match
- the beginning of the string (presumably because it's not the
- beginning of a line).
- If not set, then the beginning-of-line operator does match the
- beginning of the string. */
-#define REG_NOTBOL 1
-
-/* Like REG_NOTBOL, except for the end-of-line. */
-#define REG_NOTEOL (1 << 1)
-
-
- /* POSIX doesn't require that we do anything for the 0 case,
- but why not be nice. */
-
-#define REG_ERR_TABLE \
- _RERR_( NOERROR, "Success" ) \
- _RERR_( NOMATCH, "No match" ) \
- /* \
- * POSIX regcomp return error codes. \
- * (In the order listed in the standard.) \
- */ \
- _RERR_( BADPAT, "Invalid regular expression" ) \
- _RERR_( ECOLLATE, "Invalid collation character" ) \
- _RERR_( ECTYPE, "Invalid character class name" ) \
- _RERR_( EESCAPE, "Trailing backslash" ) \
- _RERR_( ESUBREG, "Invalid back reference" ) \
- _RERR_( EBRACK, "Unmatched [ or [^" ) \
- _RERR_( EPAREN, "Unmatched ( or \\(" ) \
- _RERR_( EBRACE, "Unmatched \\{" ) \
- _RERR_( BADBR, "Invalid content of \\{\\}" ) \
- _RERR_( ERANGE, "Invalid range end" ) \
- _RERR_( ESPACE, "Memory exhausted" ) \
- _RERR_( BADRPT, "Invalid preceding regular expression" ) \
- _RERR_( ECHAR, "Invalid multibyte character" ) \
- _RERR_( EBOL, "^ anchor and not BOL" ) \
- _RERR_( EEOL, "$ anchor and not EOL" ) \
- \
- /* \
- * Error codes we've added. \
- */ \
- _RERR_( EEND, "Premature end of regular expression" ) \
- _RERR_( ESIZE, "Regular expression too big" ) \
- _RERR_( ERPAREN, "Unmatched ) or \\)" )
-
-#define _RERR_(n,t) REG_ ## n,
-
-typedef enum { REG_ERR_TABLE REG_ERR_COUNT } reg_errcode_t;
-
-#undef _RERR_
-
-/* This data structure represents a compiled pattern. Before calling
- the pattern compiler, the fields `buffer', `allocated', `fastmap',
- `translate', and `no_sub' can be set. After the pattern has been
- compiled, the `re_nsub' field is available. All other fields are
- private to the regex routines. */
-
-struct re_pattern_buffer
-{
-/* [[[begin pattern_buffer]]] */
- /* Space that holds the compiled pattern. It is declared as
- `unsigned char *' because its elements are
- sometimes used as array indexes. */
- unsigned char *buffer;
-
- /* Number of bytes to which `buffer' points. */
- unsigned long allocated;
-
- /* Number of bytes actually used in `buffer'. */
- unsigned long used;
-
- /* Syntax setting with which the pattern was compiled. */
- reg_syntax_t syntax;
-
- /* Pointer to a fastmap, if any, otherwise zero. re_search uses
- the fastmap, if there is one, to skip over impossible
- starting points for matches. */
- char *fastmap;
-
- /* Either a translate table to apply to all characters before
- comparing them, or zero for no translation. The translation
- is applied to a pattern when it is compiled and to a string
- when it is matched. */
- char *translate;
-
- /* Number of subexpressions found by the compiler. */
- size_t re_nsub;
-
- /* Zero if this pattern cannot match the empty string, one else.
- Well, in truth it's used only in `re_search_2', to see
- whether or not we should use the fastmap, so we don't set
- this absolutely perfectly; see `re_compile_fastmap' (the
- `duplicate' case). */
- unsigned can_be_null : 1;
-
- /* If REGS_UNALLOCATED, allocate space in the `regs' structure
- for `max (RE_NREGS, re_nsub + 1)' groups.
- If REGS_REALLOCATE, reallocate space if necessary.
- If REGS_FIXED, use what's there. */
-#define REGS_UNALLOCATED 0
-#define REGS_REALLOCATE 1
-#define REGS_FIXED 2
- unsigned regs_allocated : 2;
-
- /* Set to zero when `regex_compile' compiles a pattern; set to one
- by `re_compile_fastmap' if it updates the fastmap. */
- unsigned fastmap_accurate : 1;
-
- /* If set, `re_match_2' does not return information about
- subexpressions. */
- unsigned no_sub : 1;
-
- /* If set, a beginning-of-line anchor doesn't match at the
- beginning of the string. */
- unsigned not_bol : 1;
-
- /* Similarly for an end-of-line anchor. */
- unsigned not_eol : 1;
-
- /* If true, an anchor at a newline matches. */
- unsigned newline_anchor : 1;
-
-/* [[[end pattern_buffer]]] */
-};
-
-typedef struct re_pattern_buffer regex_t;
-
-
-/* search.c (search_buffer) in Emacs needs this one opcode value. It is
- defined both in `regex.c' and here. */
-#define RE_EXACTN_VALUE 1
-
-/* Type for byte offsets within the string. POSIX mandates this. */
-typedef int regoff_t;
-
-
-/* This is the structure we store register match data in. See
- regex.texinfo for a full description of what registers match. */
-struct re_registers
-{
- unsigned num_regs;
- regoff_t *start;
- regoff_t *end;
-};
-
-
-/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
- `re_match_2' returns information about at least this many registers
- the first time a `regs' structure is passed. */
-#ifndef RE_NREGS
-#define RE_NREGS 30
-#endif
-
-
-/* POSIX specification for registers. Aside from the different names than
- `re_registers', POSIX uses an array of structures, instead of a
- structure of arrays. */
-typedef struct
-{
- regoff_t rm_so; /* Byte offset from string's start to substring's start. */
- regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
-} regmatch_t;
-
-/* Declarations for routines. */
-
-/* To avoid duplicating every routine declaration -- once with a
- prototype (if we are ANSI), and once without (if we aren't) -- we
- use the following macro to declare argument types. This
- unfortunately clutters up the declarations a bit, but I think it's
- worth it. */
-
-#if __STDC__
-
-#define _RE_ARGS(args) args
-
-#else /* not __STDC__ */
-
-#define _RE_ARGS(args) ()
-
-#endif /* not __STDC__ */
-
-/* Sets the current default syntax to SYNTAX, and return the old syntax.
- You can also simply assign to the `re_syntax_options' variable. */
-extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
-
-/* Compile the regular expression PATTERN, with length LENGTH
- and syntax given by the global `re_syntax_options', into the buffer
- BUFFER. Return NULL if successful, and an error string if not. */
-extern const char *re_compile_pattern
- _RE_ARGS ((const char *pattern, int length,
- struct re_pattern_buffer *buffer));
-
-
-/* Compile a fastmap for the compiled pattern in BUFFER; used to
- accelerate searches. Return 0 if successful and -2 if was an
- internal error. */
-extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
-
-
-/* Search in the string STRING (with length LENGTH) for the pattern
- compiled into BUFFER. Start searching at position START, for RANGE
- characters. Return the starting position of the match, -1 for no
- match, or -2 for an internal error. Also return register
- information in REGS (if REGS and BUFFER->no_sub are nonzero). */
-extern int re_search
- _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
- int length, int start, int range, struct re_registers *regs));
-
-
-/* Like `re_search', but search in the concatenation of STRING1 and
- STRING2. Also, stop searching at index START + STOP. */
-extern int re_search_2
- _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
- int length1, const char *string2, int length2,
- int start, int range, struct re_registers *regs, int stop));
-
-
-/* Like `re_search', but return how many characters in STRING the regexp
- in BUFFER matched, starting at position START. */
-extern int re_match
- _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
- int length, int start, struct re_registers *regs));
-
-
-/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
-extern int re_match_2
- _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
- int length1, const char *string2, int length2,
- int start, struct re_registers *regs, int stop));
-
-
-/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
- ENDS. Subsequent matches using BUFFER and REGS will use this memory
- for recording register information. STARTS and ENDS must be
- allocated with malloc, and must each be at least `NUM_REGS * sizeof
- (regoff_t)' bytes long.
-
- If NUM_REGS == 0, then subsequent matches should allocate their own
- register data.
-
- Unless this function is called, the first search or match using
- PATTERN_BUFFER will allocate its own register data, without
- freeing the old data. */
-extern void re_set_registers
- _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
- unsigned num_regs, regoff_t *starts, regoff_t *ends));
-
-/* 4.2 bsd compatibility. */
-extern char *re_comp _RE_ARGS ((const char *));
-extern int re_exec _RE_ARGS ((const char *));
-
-/* POSIX compatibility. */
-extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags));
-extern int regexec
- _RE_ARGS ((const regex_t *preg, const char *string, size_t nmatch,
- regmatch_t pmatch[], int eflags));
-extern size_t regerror
- _RE_ARGS ((int errcode, const regex_t *preg, char *errbuf,
- size_t errbuf_size));
-extern void regfree _RE_ARGS ((regex_t *preg));
-
-#endif /* not __REGEXP_LIBRARY_H__ */
-
-/*
-Local variables:
-make-backup-files: t
-version-control: t
-trim-versions-without-asking: nil
-End:
-*/
diff --git a/gcc/fixinc/server.c b/gcc/fixinc/server.c
deleted file mode 100755
index 83e8ccc..0000000
--- a/gcc/fixinc/server.c
+++ /dev/null
@@ -1,464 +0,0 @@
-
-/*
- * $Id: server.c,v 1.2 1999/01/13 22:56:23 law Exp $
- *
- * Server Handling copyright 1992-1998 Bruce Korb
- *
- * Server Handling is free software.
- * You may redistribute it and/or modify it under the terms of the
- * GNU General Public License, as published by the Free Software
- * Foundation; either version 2, or (at your option) any later version.
- *
- * Server Handling is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Server Handling. See the file "COPYING". If not,
- * write to: The Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * As a special exception, Bruce Korb gives permission for additional
- * uses of the text contained in his release of ServerHandler.
- *
- * The exception is that, if you link the ServerHandler library with other
- * files to produce an executable, this does not by itself cause the
- * resulting executable to be covered by the GNU General Public License.
- * Your use of that executable is in no way restricted on account of
- * linking the ServerHandler library code into it.
- *
- * This exception does not however invalidate any other reasons why
- * the executable file might be covered by the GNU General Public License.
- *
- * This exception applies only to the code released by Bruce Korb under
- * the name ServerHandler. If you copy code from other sources under the
- * General Public License into a copy of ServerHandler, as the General Public
- * License permits, the exception does not apply to the code that you add
- * in this way. To avoid misleading anyone as to the status of such
- * modified files, you must delete this exception notice from them.
- *
- * If you write modifications of your own for ServerHandler, it is your
- * choice whether to permit this exception to apply to your modifications.
- * If you do not wish that, delete this exception notice.
- */
-
-#include <fcntl.h>
-#include <errno.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/param.h>
-
-#include "server.h"
-
-#ifdef DEBUG
-#define STATIC
-#else
-#define STATIC static
-#endif
-#ifndef tSCC
-#define tSCC static const char
-#endif
-#ifndef NUL
-#define NUL '\0'
-#endif
-
-STATIC bool readPipeTimeout;
-
-STATIC tpChar defArgs[] =
-{(char *) NULL, "-p", (char *) NULL};
-STATIC tpfPair serverPair =
-{(FILE *) NULL, (FILE *) NULL};
-STATIC pid_t serverId = NULLPROCESS;
-/*
- * Arbitrary text that should not be found in the shell output.
- * It must be a single line and appear verbatim at the start of
- * the terminating output line.
- */
-tSCC zDone[] = "ShElL-OuTpUt-HaS-bEeN-cOmPlEtEd";
-STATIC tpChar pCurDir = (char *) NULL;
-
-/*
- * chainOpen
- *
- * Given an FD for an inferior process to use as stdin,
- * start that process and return a NEW FD that that process
- * will use for its stdout. Requires the argument vector
- * for the new process and, optionally, a pointer to a place
- * to store the child's process id.
- */
-int
-chainOpen (stdinFd, ppArgs, pChild)
- int stdinFd;
- tpChar *ppArgs;
- pid_t *pChild;
-{
- tFdPair stdoutPair =
- {-1, -1};
- pid_t chId;
- char *pzCmd;
-
- /*
- * Create a pipe it will be the child process' stdout,
- * and the parent will read from it.
- */
- if ((pipe ((int *) &stdoutPair) < 0))
- {
- if (pChild != (pid_t *) NULL)
- *pChild = NOPROCESS;
- return -1;
- }
-
- /*
- * If we did not get an arg list, use the default
- */
- if (ppArgs == (tpChar *) NULL)
- ppArgs = defArgs;
-
- /*
- * If the arg list does not have a program,
- * assume the "SHELL" from the environment, or, failing
- * that, then sh. Set argv[0] to whatever we decided on.
- */
- if (pzCmd = *ppArgs,
- (pzCmd == (char *) NULL) || (*pzCmd == '\0'))
- {
-
- pzCmd = getenv ("SHELL");
- if (pzCmd == (char *) NULL)
- pzCmd = "sh";
- }
-#ifdef DEBUG_PRINT
- printf ("START: %s\n", pzCmd);
- {
- int idx = 0;
- while (ppArgs[++idx] != (char *) NULL)
- printf (" ARG %2d: %s\n", idx, ppArgs[idx]);
- }
-#endif
- /*
- * Call fork() and see which process we become
- */
- chId = fork ();
- switch (chId)
- {
- case NOPROCESS: /* parent - error in call */
- close (stdoutPair.readFd);
- close (stdoutPair.writeFd);
- if (pChild != (pid_t *) NULL)
- *pChild = NOPROCESS;
- return -1;
-
- default: /* parent - return opposite FD's */
- if (pChild != (pid_t *) NULL)
- *pChild = chId;
-#ifdef DEBUG_PRINT
- printf ("for pid %d: stdin from %d, stdout to %d\n"
- "for parent: read from %d\n",
- chId, stdinFd, stdoutPair.writeFd, stdoutPair.readFd);
-#endif
- close (stdinFd);
- close (stdoutPair.writeFd);
- return stdoutPair.readFd;
-
- case NULLPROCESS: /* child - continue processing */
- break;
- }
-
- /*
- * Close the pipe end handed back to the parent process
- */
- close (stdoutPair.readFd);
-
- /*
- * Close our current stdin and stdout
- */
- close (STDIN_FILENO);
- close (STDOUT_FILENO);
-
- /*
- * Make the fd passed in the stdin, and the write end of
- * the new pipe become the stdout.
- */
- fcntl (stdoutPair.writeFd, F_DUPFD, STDOUT_FILENO);
- fcntl (stdinFd, F_DUPFD, STDIN_FILENO);
-
- if (*ppArgs == (char *) NULL)
- *ppArgs = pzCmd;
-
- execvp (pzCmd, ppArgs);
- fprintf (stderr, "Error %d: Could not execvp( '%s', ... ): %s\n",
- errno, pzCmd, strerror (errno));
- exit (EXIT_PANIC);
-}
-
-
-/*
- * p2open
- *
- * Given a pointer to an argument vector, start a process and
- * place its stdin and stdout file descriptors into an fd pair
- * structure. The "writeFd" connects to the inferior process
- * stdin, and the "readFd" connects to its stdout. The calling
- * process should write to "writeFd" and read from "readFd".
- * The return value is the process id of the created process.
- */
-pid_t
-p2open (pPair, ppArgs)
- tFdPair *pPair;
- tpChar *ppArgs;
-{
- pid_t chId;
-
- /*
- * Create a bi-directional pipe. Writes on 0 arrive on 1
- * and vice versa, so the parent and child processes will
- * read and write to opposite FD's.
- */
- if (pipe ((int *) pPair) < 0)
- return NOPROCESS;
-
- pPair->readFd = chainOpen (pPair->readFd, ppArgs, &chId);
- if (chId == NOPROCESS)
- close (pPair->writeFd);
-
- return chId;
-}
-
-
-/*
- * p2fopen
- *
- * Identical to "p2open()", except that the "fd"'s are "fdopen(3)"-ed
- * into file pointers instead.
- */
-pid_t
-p2fopen (pfPair, ppArgs)
- tpfPair *pfPair;
- tpChar *ppArgs;
-{
- tFdPair fdPair;
- pid_t chId = p2open (&fdPair, ppArgs);
-
- if (chId == NOPROCESS)
- return chId;
-
- pfPair->pfRead = fdopen (fdPair.readFd, "r");
- pfPair->pfWrite = fdopen (fdPair.writeFd, "w");
- return chId;
-}
-
-
-/*
- * loadData
- *
- * Read data from a file pointer (a pipe to a process in this context)
- * until we either get EOF or we get a marker line back.
- * The read data are stored in a malloc-ed string that is truncated
- * to size at the end. Input is assumed to be an ASCII string.
- */
-STATIC char *
-loadData (fp)
- FILE *fp;
-{
- char *pzText;
- size_t textSize;
- char *pzScan;
- char zLine[1024];
-
- textSize = sizeof (zLine) * 2;
- pzScan = \
- pzText = malloc (textSize);
-
- if (pzText == (char *) NULL)
- return pzText;
-
- for (;;)
- {
- size_t usedCt;
-
- alarm (10);
- readPipeTimeout = BOOL_FALSE;
- if (fgets (zLine, sizeof (zLine), fp) == (char *) NULL)
- break;
-
- if (strncmp (zLine, zDone, sizeof (zDone) - 1) == 0)
- break;
-
- strcpy (pzScan, zLine);
- pzScan += strlen (zLine);
- usedCt = (size_t) (pzScan - pzText);
-
- if (textSize - usedCt < sizeof (zLine))
- {
-
- size_t off = (size_t) (pzScan - pzText);
- void *p;
- textSize += 4096;
- p = realloc ((void *) pzText, textSize);
- if (p == (void *) NULL)
- {
- fprintf (stderr, "Failed to get 0x%08X bytes\n", textSize);
- free ((void *) pzText);
- return (char *) NULL;
- }
-
- pzText = (char *) p;
- pzScan = pzText + off;
- }
- }
-
- alarm (0);
- if (readPipeTimeout)
- {
- free ((void *) pzText);
- return (char *) NULL;
- }
-
- while ((pzScan > pzText) && isspace (pzScan[-1]))
- pzScan--;
- *pzScan = NUL;
- return realloc ((void *) pzText, strlen (pzText) + 1);
-}
-
-
-/*
- * SHELL SERVER PROCESS CODE
- */
-
-#ifdef DONT_HAVE_SIGSEND
-typedef enum
-{
- P_ALL, P_PID, P_GID, P_UID, P_PGID, P_SID, P_CID
-}
-idtype_t;
-typedef long id_t;
-
-STATIC int
-sigsend (idtype, id, sig)
- idtype_t idtype;
- id_t id;
- int sig;
-{
- switch (idtype)
- {
- case P_PID:
- kill ((pid_t) id, sig);
- break;
-
- case P_ALL:
- case P_GID:
- case P_UID:
- case P_PGID:
- case P_SID:
- case P_CID:
- errno = EINVAL;
- return -1;
- /*NOTREACHED */
- }
-
- return 0;
-}
-#endif /* HAVE_SIGSEND */
-
-
-STATIC void
-closeServer ()
-{
- kill( (pid_t) serverId, SIGKILL);
- serverId = NULLPROCESS;
- fclose (serverPair.pfRead);
- fclose (serverPair.pfWrite);
- serverPair.pfRead = serverPair.pfWrite = (FILE *) NULL;
-}
-
-
-struct sigaction savePipeAction;
-struct sigaction saveAlrmAction;
-struct sigaction currentAction;
-
-STATIC void
-sigHandler (signo)
- int signo;
-{
- closeServer ();
- readPipeTimeout = BOOL_TRUE;
-}
-
-
-STATIC void
-serverSetup ()
-{
-#ifndef SA_SIGINFO
-# define SA_SIGINFO 0
-#else
- currentAction.sa_sigaction =
-#endif
- currentAction.sa_handler = sigHandler;
- currentAction.sa_flags = SA_SIGINFO;
- sigemptyset( &currentAction.sa_mask );
-
- sigaction( SIGPIPE, &currentAction, &savePipeAction );
- sigaction( SIGALRM, &currentAction, &saveAlrmAction );
- atexit( &closeServer );
-
- fputs ("trap : INT\n", serverPair.pfWrite);
- fflush (serverPair.pfWrite);
- pCurDir = getcwd ((char *) NULL, MAXPATHLEN + 1);
-}
-
-
-char *
-runShell (pzCmd)
- const char *pzCmd;
-{
- tSCC zNil[] = "";
-
- /*
- * IF the shell server process is not running yet,
- * THEN try to start it.
- */
- if (serverId == NULLPROCESS)
- {
- serverId = p2fopen (&serverPair, defArgs);
- if (serverId > 0)
- serverSetup ();
- }
-
- /*
- * IF it is still not running,
- * THEN return the nil string.
- */
- if (serverId <= 0)
- return (char *) zNil;
-
- /*
- * Make sure the process will pay attention to us,
- * send the supplied command, and then
- * have it output a special marker that we can find.
- */
- fprintf (serverPair.pfWrite, "\\cd %s\n%s\n\necho\necho %s\n",
- pCurDir, pzCmd, zDone);
- fflush (serverPair.pfWrite);
- if (serverId == NULLPROCESS)
- return (char *) NULL;
-
- /*
- * Now try to read back all the data. If we fail due to either
- * a sigpipe or sigalrm (timeout), we will return the nil string.
- */
- {
- char *pz = loadData (serverPair.pfRead);
- if (pz == (char *) NULL)
- {
- fprintf (stderr, "CLOSING SHELL SERVER - command failure:\n\t%s\n",
- pzCmd);
- closeServer ();
- pz = (char *) zNil;
- }
- return pz;
- }
-}
diff --git a/gcc/fixinc/server.h b/gcc/fixinc/server.h
deleted file mode 100755
index 66a064e..0000000
--- a/gcc/fixinc/server.h
+++ /dev/null
@@ -1,94 +0,0 @@
-
-/*
- * $Id: server.h,v 1.2 1999/01/13 22:56:23 law Exp $
- *
- * Server Handling copyright 1992-1998 Bruce Korb
- *
- * Server Handling is free software.
- * You may redistribute it and/or modify it under the terms of the
- * GNU General Public License, as published by the Free Software
- * Foundation; either version 2, or (at your option) any later version.
- *
- * Server Handling is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Server Handling. See the file "COPYING". If not,
- * write to: The Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * As a special exception, Bruce Korb gives permission for additional
- * uses of the text contained in his release of ServerHandler.
- *
- * The exception is that, if you link the ServerHandler library with other
- * files to produce an executable, this does not by itself cause the
- * resulting executable to be covered by the GNU General Public License.
- * Your use of that executable is in no way restricted on account of
- * linking the ServerHandler library code into it.
- *
- * This exception does not however invalidate any other reasons why
- * the executable file might be covered by the GNU General Public License.
- *
- * This exception applies only to the code released by Bruce Korb under
- * the name ServerHandler. If you copy code from other sources under the
- * General Public License into a copy of ServerHandler, as the General Public
- * License permits, the exception does not apply to the code that you add
- * in this way. To avoid misleading anyone as to the status of such
- * modified files, you must delete this exception notice from them.
- *
- * If you write modifications of your own for ServerHandler, it is your
- * choice whether to permit this exception to apply to your modifications.
- * If you do not wish that, delete this exception notice.
- */
-
-#ifndef FIXINC_SERVER_H
-#define FIXINC_SERVER_H
-
-#include <stdio.h>
-#include <unistd.h>
-
-/*
- * Dual pipe opening of a child process
- */
-
-typedef struct
- {
- int readFd;
- int writeFd;
- }
-tFdPair;
-
-typedef struct
- {
- FILE *pfRead; /* parent read fp */
- FILE *pfWrite; /* parent write fp */
- }
-tpfPair;
-
-typedef char *tpChar;
-
-#define NOPROCESS ((pid_t)-1)
-#define NULLPROCESS ((pid_t)0)
-
-#define EXIT_PANIC 99
-
-typedef enum
- {
- BOOL_FALSE, BOOL_TRUE
- }
-bool;
-
-#define _P_(p) ()
-
-char *runShell _P_ ((const char *pzCmd));
-pid_t p2fopen _P_ ((tpfPair * pfPair, tpChar * ppArgs));
-pid_t p2open _P_ ((tFdPair * pPair, tpChar * ppArgs));
-int
-chainOpen _P_ ((int stdinFd,
- tpChar * ppArgs,
- pid_t * pChild));
-
-#endif /* FIXINC_SERVER_H */
diff --git a/gcc/fixincludes b/gcc/fixincludes
deleted file mode 100755
index 03792ea..0000000
--- a/gcc/fixincludes
+++ /dev/null
@@ -1,3214 +0,0 @@
-#! /bin/sh
-# Install modified versions of certain ANSI-incompatible system header files
-# which are fixed to work correctly with ANSI C
-# and placed in a directory that GNU C will search.
-
-# See README-fixinc for more information.
-
-# Directory containing the original header files.
-# (This was named INCLUDES, but that conflicts with a name in Makefile.in.)
-INPUT=${2-${INPUT-/usr/include}}
-
-# Directory in which to store the results.
-LIB=${1?"fixincludes: output directory not specified"}
-
-# Define what target system we're fixing.
-if test -r ./Makefile; then
- target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`"
- test -z "${target_canonical}" && target_canonical=unknown
-else
- target_canonical=unknown
-fi
-
-# Define PWDCMD as a command to use to get the working dir
-# in the form that we want.
-PWDCMD=pwd
-case "`pwd`" in
-//*)
- # On an Apollo, discard everything before `/usr'.
- PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'"
- ;;
-esac
-
-# Original directory.
-ORIGDIR=`${PWDCMD}`
-
-# Make sure it exists.
-if [ ! -d $LIB ]; then
- mkdir $LIB || exit 1
-fi
-
-# Make LIB absolute only if needed to avoid problems with the amd.
-case $LIB in
-/*)
- ;;
-*)
- cd $LIB; LIB=`${PWDCMD}`
- ;;
-esac
-
-# Fail if no arg to specify a directory for the output.
-if [ x$1 = x ]
-then echo fixincludes: no output directory specified
-exit 1
-fi
-
-echo Building fixed headers in ${LIB}
-
-# Determine whether this system has symbolic links.
-if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
- rm -f $LIB/ShouldNotExist
- LINKS=true
-elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
- rm -f /tmp/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-echo Finding directories and links to directories
-cd ${INPUT}
-# Find all directories and all symlinks that point to directories.
-# Put the list in $files.
-# Each time we find a symlink, add it to newdirs
-# so that we do another find within the dir the link points to.
-# Note that $files may have duplicates in it;
-# later parts of this file are supposed to ignore them.
-dirs="."
-levels=2
-while [ -n "$dirs" ] && [ $levels -gt 0 ]
-do
- levels=`expr $levels - 1`
- newdirs=
- for d in $dirs
- do
- echo " Searching $INPUT/$d"
-
- # Find all directories under $d, relative to $d, excluding $d itself.
- # (The /. is needed after $d in case $d is a symlink.)
- files="$files `find $d/. -type d -print | \
- sed -e '/\/\.$/d' -e 's@/./@/@g'`"
- # Find all links to directories.
- # Using `-exec test -d' in find fails on some systems,
- # and trying to run test via sh fails on others,
- # so this is the simplest alternative left.
- # First find all the links, then test each one.
- theselinks=
- $LINKS && \
- theselinks=`find $d/. -type l -print | sed -e 's@/./@/@g'`
- for d1 in $theselinks --dummy--
- do
- # If the link points to a directory,
- # add that dir to $newdirs
- if [ -d $d1 ]
- then
- files="$files $d1"
- if [ "`ls -ld $d1 | sed -n 's/.*-> //p'`" != "." ]
- then
- newdirs="$newdirs $d1"
- fi
- fi
- done
- done
-
- dirs="$newdirs"
-done
-
-dirs=
-echo "All directories (including links to directories):"
-echo $files
-
-for file in $files; do
- rm -rf $LIB/$file
- if [ ! -d $LIB/$file ]
- then mkdir $LIB/$file
- fi
-done
-mkdir $LIB/root
-
-# treetops gets an alternating list
-# of old directories to copy
-# and the new directories to copy to.
-treetops="${INPUT} ${LIB}"
-
-if $LINKS; then
- echo 'Making symbolic directory links'
- for file in $files; do
- dest=`ls -ld $file | sed -n 's/.*-> //p'`
- if [ "$dest" ]; then
- cwd=`${PWDCMD}`
- # In case $dest is relative, get to $file's dir first.
- cd ${INPUT}
- cd `echo ./$file | sed -n 's&[^/]*$&&p'`
- # Check that the target directory exists.
- # Redirections changed to avoid bug in sh on Ultrix.
- (cd $dest) > /dev/null 2>&1
- if [ $? = 0 ]; then
- cd $dest
- # X gets the dir that the link actually leads to.
- x=`${PWDCMD}`
- # Canonicalize ${INPUT} now to minimize the time an
- # automounter has to change the result of ${PWDCMD}.
- cinput=`cd ${INPUT}; ${PWDCMD}`
- # If a link points to ., make a similar link to .
- if [ $x = ${cinput} ]; then
- echo $file '->' . ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s . ${LIB}/$file > /dev/null 2>&1
- # If link leads back into ${INPUT},
- # make a similar link here.
- elif expr $x : "${cinput}/.*" > /dev/null; then
- # Y gets the actual target dir name, relative to ${INPUT}.
- y=`echo $x | sed -n "s&${cinput}/&&p"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file" |
- sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
- echo $file '->' $dots$y ': Making link'
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
- else
- # If the link is to a dir $target outside ${INPUT},
- # repoint the link at ${INPUT}/root$target
- # and process $target into ${INPUT}/root$target
- # treat this directory as if it actually contained the files.
- echo $file '->' root$x ': Making link'
- if [ -d $LIB/root$x ]
- then true
- else
- dirname=root$x/
- dirmade=.
- cd $LIB
- while [ x$dirname != x ]; do
- component=`echo $dirname | sed -e 's|/.*$||'`
- mkdir $component >/dev/null 2>&1
- cd $component
- dirmade=$dirmade/$component
- dirname=`echo $dirname | sed -e 's|[^/]*/||'`
- done
- fi
- # Duplicate directory structure created in ${LIB}/$file in new
- # root area.
- for file2 in $files; do
- case $file2 in
- $file/*)
- dupdir=${LIB}/root$x/`echo $file2 | sed -n "s|^${file}/||p"`
- echo "Duplicating ${file}'s ${dupdir}"
- if [ -d ${dupdir} ]
- then true
- else
- mkdir ${dupdir}
- fi
- ;;
- *)
- ;;
- esac
- done
- # Get the path from ${LIB} to $file, accounting for symlinks.
- parent=`echo "$file" | sed -e 's@/[^/]*$@@'`
- libabs=`cd ${LIB}; ${PWDCMD}`
- file2=`cd ${LIB}; cd $parent; ${PWDCMD} | sed -e "s@^${libabs}@@"`
- # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
- dots=`echo "$file2" | sed -e 's@/[^/]*@../@g'`
- rm -fr ${LIB}/$file > /dev/null 2>&1
- ln -s ${dots}root$x ${LIB}/$file > /dev/null 2>&1
- treetops="$treetops $x ${LIB}/root$x"
- fi
- fi
- cd $cwd
- fi
- done
-fi
-
-required=
-set x $treetops
-shift
-while [ $# != 0 ]; do
- # $1 is an old directory to copy, and $2 is the new directory to copy to.
- cd ${INPUT}
- cd $1
-# The same dir can appear more than once in treetops.
-# There's no need to scan it more than once.
- if [ -f $2/DONE ]
- then
- files=
- else
- touch $2/DONE
- echo Fixing directory $1 into $2
-# Check .h files which are symlinks as well as those which are files.
-# A link to a header file will not be processed by anything but this.
- if $LINKS; then
- files=`find . -name '*.h' \( -type f -o -type l \) -print`
- else
- files=`find . -name '*.h' -type f -print`
- fi
- echo Checking header files
- fi
-# Note that BSD43_* are used on recent MIPS systems.
- for file in $files; do
-# This call to egrep is essential, since checking a file with egrep
-# is much faster than actually trying to fix it.
-# It is also essential that most files *not* match!
-# Thus, matching every #endif is unacceptable.
-# But the argument to egrep must be kept small, or many versions of egrep
-# won't be able to handle it.
-#
-# We use the pattern [!-.0-z{|}~] instead of [^/ ] to match a noncomment
-# following #else or #endif because some buggy egreps think [^/] matches
-# newline, and they thus think `#else ' matches `#e[ndiflse]*[ ]+[^/ ]'.
-# [!-.0-~] does not work properly on AIX 4.1.
-#
-# We use the pattern [^a-zA-Z0-9_][_a-ce-km-z][a-z0-9] to match an identifier
-# following #if or #elif that is not surrounded by __. The `a-ce-km-z'
-# in this pattern lacks `d' and `l'; this means we don't worry about
-# identifiers starting with `d' or `l'. This is OK, since none of the
-# identifiers below start with `d' or `l'. It also greatly improves
-# performance, since many files contain lines of the form `#if ... defined ...'
-# or `#if lint'.
- if egrep '//|[ _]_IO|CTRL|^#define.NULL|^#e[nl][ds][ief]*[ ]+[!-.0-z\{\|\}\~]|^#[el]*if.*[^a-zA-Z0-9_][_a-ce-km-zA-Z][a-zA-Z0-9]' $file >/dev/null; then
- if [ -r $file ]; then
- cp $file $2/$file >/dev/null 2>&1 \
- || echo "Can't copy $file"
- chmod +w $2/$file
- chmod a+r $2/$file
- # The fixinc_eol stuff is to work around a bug in the sed
- # program on HP/UX 10.20.
- # Here is how the sed commands in braces work.
- # (It doesn't work to put the comments inside the sed commands.)
- # Surround each word with spaces, to simplify matching below.
- # ANSIfy each pre-ANSI machine-dependent symbol
- # by surrounding it with __ __.
- # Remove the spaces that we inserted around each word.
- sed -e '
- :loop
- /\\$/ N
- s/\\$/\\*fixinc_eol*/
- /\\$/ b loop
- s/\\\*fixinc_eol\*/\\/g
- s%^\([ ]*#[ ]*else\)[ ]*/[^*].*%\1%
- s%^\([ ]*#[ ]*else\)[ ]*[^/ ].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*/[^*].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*\*[^/].*%\1%
- s%^\([ ]*#[ ]*endif\)[ ]*[^/* ].*%\1%
- /\/\/[^*]/ s|//\(.*\)$|/*\1*/|
- /^[ ]*\/\/[ ]*/s///
- /[ ]_IO[A-Z]*[ ]*(/ s/\(_IO[A-Z]*[ ]*(\)\(.\),/\1'\''\2'\'',/
- /[ ]BSD43__IO[A-Z]*[ ]*(/ s/(\(.\),/('\''\1'\'',/
- /#[ ]*define[ ]*[ ]_IO/ s/'\''\([cgxtf]\)'\''/\1/g
- /#[ ]*define[ ]*[ ]BSD43__IO/ s/'\''\([cgx]\)'\''/\1/g
- /#[ ]*define[ ]*[ ]DESIOC/ s/'\''\([cdgx]\)'\''/\1/g
- /[^A-Z0-9_]CTRL[ ]*(/ s/\([^'\'']\))/'\''\1'\'')/
- /[^A-Z0-9]_CTRL[ ]*(/ s/\([^'\'']\))/'\''\1'\'')/
- /#[ ]*define[ ]*[ ]CTRL/ s/'\''\([cgx]\)'\''/\1/g
- /#[ ]*define[ ]*[ ]_CTRL/ s/'\''\([cgx]\)'\''/\1/g
- /#[ ]*define.BSD43_CTRL/ s/'\''\([cgx]\)'\''/\1/g
- /#[ ]*[el]*if/{
- s/[a-zA-Z0-9_][a-zA-Z0-9_]*/ & /g
-
- s/ bsd4\([0-9]\) / __bsd4\1__ /g
- s/ _*host_mips / __host_mips__ /g
- s/ _*i386 / __i386__ /g
- s/ M32 / __M32__ /g
- s/ is68k / __is68k__ /g
- s/ m68k / __m68k__ /g
- s/ mc680\([0-9]\)0 / __mc680\10__ /g
- s/ m88k / __m88k__ /g
- s/ _*mips / __mips__ /g
- s/ news\([0-9]*\) / __news\1__ /g
- s/ ns32000 / __ns32000__ /g
- s/ pdp11 / __pdp11__ /g
- s/ pyr / __pyr__ /g
- s/ sel / __sel__ /g
- s/ sony_news / __sony_news__ /g
- s/ sparc / __sparc__ /g
- s/ sun\([a-z0-9]*\) / __sun\1__ /g
- s/ tahoe / __tahoe__ /g
- s/ tower\([_0-9]*\) / __tower\1__ /g
- s/ u370 / __u370__ /g
- s/ u3b\([0-9]*\) / __u3b\1__ /g
- s/ unix / __unix__ /g
- s/ vax / __vax__ /g
- s/ _*MIPSE\([LB]\) / __MIPSE\1__ /g
- s/ _*\([Rr][34]\)000 / __\1000__ /g
- s/ _*SYSTYPE_\([A-Z0-9]*\) / __SYSTYPE_\1__ /g
-
- s/ \([a-zA-Z0-9_][a-zA-Z0-9_]*\) /\1/g
- }
- /^#define.NULL[ ]/ i\
- #undef NULL
- ' $2/$file > $2/$file.
- mv $2/$file. $2/$file
- if cmp $file $2/$file >/dev/null 2>&1 \
- || egrep 'This file is part of the GNU C Library' $2/$file >/dev/null 2>&1; then
- rm $2/$file
- else
- echo Fixed $file
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $2/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required $1 $dir/$include $2/$dir/$include"
- done
- fi
- fi
- fi
- done
- shift; shift
-done
-
-cd ${INPUT}
-
-# Install the proper definition of the three standard types in header files
-# that they come from.
-for file in sys/types.h stdlib.h sys/stdtypes.h stddef.h memory.h unistd.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing size_t, ptrdiff_t and wchar_t in $file
- sed \
- -e '/^[ ]*\*[ ]*typedef unsigned int size_t;/N' \
- -e 's/^\([ ]*\*[ ]*typedef unsigned int size_t;\n[ ]*\*\/\)/\1\
-#ifndef __SIZE_TYPE__\
-#define __SIZE_TYPE__ long unsigned int\
-#endif\
-typedef __SIZE_TYPE__ size_t;\
-/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/i\
-#ifndef __SIZE_TYPE__\
-#define __SIZE_TYPE__ long unsigned int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]size_t/typedef __SIZE_TYPE__ size_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/i\
-#ifndef __PTRDIFF_TYPE__\
-#define __PTRDIFF_TYPE__ long int\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]ptrdiff_t/typedef __PTRDIFF_TYPE__ ptrdiff_t/' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/i\
-#ifndef __WCHAR_TYPE__\
-#define __WCHAR_TYPE__ int\
-#endif\
-#ifndef __cplusplus
-' \
- -e '/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/a\
-#endif
-' \
- -e 's/typedef[ ][ ]*[a-z_][ a-z_]*[ ]wchar_t/typedef __WCHAR_TYPE__ wchar_t/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# Fix #defines under Alpha OSF/1:
-# The following files contain '#pragma extern_prefix "_FOO"' followed by
-# a '#define something(x,y,z) _FOOsomething(x,y,z)'. The intent of these
-# statements is to reduce namespace pollution. While these macros work
-# properly in most cases, they don't allow you to take a pointer to the
-# "something" being modified. To get around this limitation, change these
-# statements to be of the form '#define something _FOOsomething'.
-for file in 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
-do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file extern_prefix
- sed -e 's/^[ ]*#[ ]*define[ ]*\([^(]*\)\(([^)]*)\)[ ]*\(_.\)\1\2[ ]*$/#define \1 \3\1/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# Fix one other error in this file: a mismatched quote not inside a C comment.
-file=sundev/vuid_event.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sundev 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file comment
- sed -e "s/doesn't/does not/" ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix these Sun OS files to avoid an invalid identifier in an #ifdef.
-file=sunwindow/win_cursor.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
-# mkdir ${LIB}/sunwindow 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e "s/ecd.cursor/ecd_cursor/" ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-file=sunwindow/win_lock.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
-# mkdir ${LIB}/sunwindow 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e "s/ecd.cursor/ecd_cursor/" ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix this Sun file to avoid interfering with stddef.h.
-file=sys/stdtypes.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
-sed -e '/[ ]size_t.*;/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/[ ]size_t.*;/a\
-#endif
-' \
- -e '/[ ]ptrdiff_t.*;/i\
-#ifndef _GCC_PTRDIFF_T\
-#define _GCC_PTRDIFF_T
-' \
- -e '/[ ]ptrdiff_t.*;/a\
-#endif
-' \
- -e '/[ ]wchar_t.*;/i\
-#ifndef _GCC_WCHAR_T\
-#define _GCC_WCHAR_T
-' \
- -e '/[ ]wchar_t.*;/a\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix this ARM/RISCiX file to avoid interfering with the use of __wchar_t
-# in cc1plus.
-file=stdlib.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e "s/\(#[ ]*ifndef[ ]*\)__wchar_t/\1_GCC_WCHAR_T/" \
- -e "s/\(#[ ]*define[ ]*\)__wchar_t/\1_GCC_WCHAR_T/" \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix this ARM/RISCiX file where ___type is a Compiler hint that is specific to
-# the Norcroft compiler.
-file=X11/Intrinsic.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e "s/___type p_type/p_type/" \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix this file to avoid interfering with stddef.h, but don't mistakenly
-# match ssize_t present in AIX for the ps/2, or typedefs which use (but do not
-# set) size_t.
-file=sys/types.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
-sed -e '/typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/typedef[ ][ ]*[A-Za-z_][ A-Za-z_]*[ ]size_t/a\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix HP's use of ../machine/inline.h to refer to
-# /usr/include/machine/inline.h
-file=sys/spinlock.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file
-fi
-if [ -r ${LIB}/$file ] ; then
- echo Fixing $file
- sed -e 's,"../machine/inline.h",<machine/inline.h>,' \
- -e 's,"../machine/psl.h",<machine/psl.h>,' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix an error in this file: the #if says _cplusplus, not the double
-# underscore __cplusplus that it should be
-file=tinfo.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpcsvc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, __cplusplus macro
- sed -e 's/[ ]_cplusplus/ __cplusplus/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix an error in this file: a missing semi-colon at the end of the statsswtch
-# structure definition.
-file=rpcsvc/rstat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpcsvc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, definition of statsswtch
- sed -e 's/boottime$/boottime;/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix an error in this file: a missing semi-colon at the end of the nodeent
-# structure definition.
-file=netdnet/dnetdb.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/netdnet 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, definition of nodeent
- sed -e 's/char.*na_addr *$/char *na_addr;/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Check for bad #ifdef line (in Ultrix 4.1)
-file=sys/file.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, bad \#ifdef line
- sed -e 's/#ifdef KERNEL/#if defined(KERNEL)/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Check for (...) in C++ code in HP/UX sys/file.h.
-file=sys/file.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if egrep HPUX_SOURCE ${LIB}/$file > /dev/null; then
- echo Fixing $file, use of '(...)'
- sed -e 's/(\.\.\.)/(struct file * ...)/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-fi
-
-# Check for superfluous `static' (in Ultrix 4.2)
-# On Ultrix 4.3, includes of other files (r3_cpu.h,r4_cpu.h) is broken.
-file=machine/cpu.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/machine 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, superfluous static and broken includes of other files.
- 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>/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
-# This file has an alternative name, mips/cpu.h. Fix that name, too.
- if cmp machine/cpu.h mips/cpu.h > /dev/null 2>&1; then
- mkdir ${LIB}/mips 2>&-
-# Don't remove the file first, they may be the same file!
- ln ${LIB}/$file ${LIB}/mips/cpu.h > /dev/null 2>&1
- fi
- fi
-fi
-
-# Incorrect sprintf declaration in X11/Xmu.h
-file=X11/Xmu.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/X11 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file sprintf declaration
- sed -e 's,^extern char \* sprintf();$,#ifndef __STDC__\
-extern char * sprintf();\
-#endif /* !defined __STDC__ */,' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Incorrect sprintf declaration in X11/Xmu/Xmu.h
-# (It's not clear whether the right file name is this or X11/Xmu.h.)
-file=X11/Xmu/Xmu.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/X11/Xmu 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file sprintf declaration
- sed -e 's,^extern char \* sprintf();$,#ifndef __STDC__\
-extern char * sprintf();\
-#endif /* !defined __STDC__ */,' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Check for missing ';' in struct
-file=netinet/ip.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/netinet 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/^struct/,/^};/s/}$/};/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix the CAT macro in SunOS memvar.h.
-file=pixrect/memvar.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/pixrect 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/^#define.CAT(a,b)/ i\
-#ifdef __STDC__ \
-#define CAT(a,b) a##b\
-#else
-/^#define.CAT(a,b)/ a\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Check for yet more missing ';' in struct (in SunOS 4.0.x)
-file=rpcsvc/rusers.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpcsvc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix return type of exit and abort in <stdlib.h> on SunOS 4.1.
-# Also wrap protection around size_t for m88k-sysv3 systems.
-file=stdlib.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- if grep _GCC_SIZE_T ${LIB}/$file >/dev/null
- then size_t_pattern='<<< do not double-wrap the size_t typedef >>>'
- else size_t_pattern='typedef[ a-zA-Z_]*[ ]size_t[ ]*;'
- fi
- sed -e 's/int abort/void abort/g' \
- -e 's/int free/void free/g' \
- -e 's/char[ ]*\*[ ]*calloc/void \* calloc/g' \
- -e 's/char[ ]*\*[ ]*malloc/void \* malloc/g' \
- -e 's/char[ ]*\*[ ]*realloc/void \* realloc/g' \
- -e 's/int[ ][ ]*exit/void exit/g' \
- -e "/$size_t_pattern/"'i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e "/$size_t_pattern/"'a\
-#endif
-' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix return type of free and {c,m,re}alloc in <malloc.h> on SunOS 4.1.
-# Also fix return type of {m,re}alloc in <malloc.h> on sysV68
-file=malloc.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/typedef[ ]char \* malloc_t/typedef void \* malloc_t/g' \
- -e 's/int[ ][ ]*free/void free/g' \
- -e 's/char\([ ]*\*[ ]*malloc\)/void\1/g' \
- -e 's/char\([ ]*\*[ ]*realloc\)/void\1/g' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix bogus #ifdef in <hsfs/hsfs_spec.h> on SunOS 4.1.
-file=hsfs/hsfs_spec.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/hsfs 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/\#ifdef __i386__ || __vax__/\#if __i386__ || __vax__/g' \
- ${LIB}/$file > ${LIB}/${file}.
- rm -f ${LIB}/$file; mv ${LIB}/${file}. ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix bogus #ifdef in <hsfs/hsnode.h> on SunOS 4.1.
-file=hsfs/hsnode.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/hsfs 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/\#ifdef __i386__ || __sun4c__/\#if __i386__ || __sun4c__/g' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix bogus #ifdef in <hsfs/iso_spec.h> on SunOS 4.1.
-file=hsfs/iso_spec.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/hsfs 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/\#ifdef __i386__ || __vax__/\#if __i386__ || __vax__/g' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Incorrect #include in Sony News-OS 3.2.
-file=machine/machparam.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/machine 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, incorrect \#include
- sed -e 's@"../machine/endian.h"@<machine/endian.h>@' \
- ${LIB}/$file > ${LIB}/${file}.
- rm -f ${LIB}/$file; mv ${LIB}/${file}. ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Multiline comment after typedef on IRIX 4.0.1.
-file=sys/types.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, comment in the middle of \#ifdef
- sed -e 's@type of the result@type of the result */@' \
- -e 's@of the sizeof@/* of the sizeof@' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Turning // comments into /* */ comments trashes this IRIX 4.0.1
-# header file, which embeds // comments inside multi-line /* */
-# comments. If this looks like the IRIX header file, we refix it by
-# just throwing away the // comments.
-file=fam.h
-if [ -r ${LIB}/$file ]; then
- if egrep indigo.esd ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- sed -e 's|//.*$||g' $file > ${LIB}/$file
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-fi
-
-# There is a similar problem with the VxWorks drv/netif/if_med.h file.
-file=drv/netif/if_med.h
-if [ -r ${LIB}/$file ]; then
- if egrep 'Wind River' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- sed -e 's|//.*$||g' $file > ${LIB}/$file
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-fi
-
-# And also with the HP-UX 10 and HP-UX 11 sys/pci.h file
-file=sys/pci.h
-if [ -r ${LIB}/$file ]; then
- if egrep 'System Private Structures' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- sed -e 's|//.*$||g' $file > ${LIB}/$file
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-fi
-
-# And also with a few more HP-UX 11 headers which are only broken
-# after they are "fixed".
-file=sys/ki_iface.h
-if [ -r ${LIB}/$file ]; then
- if egrep 'These definitions are for HP Internal developers' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- fi
-fi
-
-file=sys/ki.h
-if [ -r ${LIB}/$file ]; then
- if egrep '11.00 HP-UX LP64' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- fi
-fi
-
-file=sys/ki_calls.h
-if [ -r ${LIB}/$file ]; then
- if egrep 'KI_MAX_PROCS is an arbitrary number' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- fi
-fi
-
-file=sys/ki_defs.h
-if [ -r ${LIB}/$file ] ; then
- if egrep 'Kernel Instrumentation Definitions' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- fi
-fi
-
-file=sys/time.h
-if [ -r ${LIB}/$file ] ; then
- if egrep 'For CASPEC, look in' ${LIB}/$file > /dev/null; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- fi
-fi
-
-# Some IRIX header files contains the string "//"
-for file in elf_abi.h elf.h; do
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file, overeager sed script
- sed -e 's|"/\*"\*/|"//"|' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# IRIX 4.0.5 <rpc/auth.h> uses struct sockaddr in prototype without
-# previous definition.
-file=rpc/auth.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, undefined type
- sed -e '/authdes_create.*struct sockaddr/i\
-struct sockaddr;
-' \
- ${LIB}/$file > ${LIB}/$file.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# IRIX 4.0.5 <rpc/xdr.h> uses struct __file_s in prototype without previous
-# definition.
-file=rpc/xdr.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, undefined type
- sed -e '/xdrstdio_create.*struct __file_s/i\
-struct __file_s;
-' \
- ${LIB}/$file > ${LIB}/$file.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Same problem with a file from SunOS 4.1.3 : a header file containing
-# the string "//" embedded in "/**/"
-file=sbusdev/audiovar.h
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, overeager sed script
- rm ${LIB}/$file
- sed -e 's|//.*$||g' $file > ${LIB}/$file
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-# Fix non-ANSI memcpy declaration that conflicts with gcc's builtin
-# declaration on Sun OS 4.x. We must only fix this on Sun OS 4.x, because
-# many other systems have similar text but correct versions of the file.
-# To ensure only Sun's is fixed, we grep for a likely unique string.
-# Fix also on sysV68 R3V7.1 (head/memory.h\t50.1\t )
-file=memory.h
-if [ -r $file ] && egrep '/\* @\(#\)(head/memory.h 50.1 |memory\.h 1\.[2-4] 8./../.. SMI; from S5R2 1\.2 )\*/' $file > /dev/null; then
- if [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
- if [ -r ${LIB}/$file ]; then
- echo Replacing $file
- cat > ${LIB}/$file << EOF
-/* This file was generated by fixincludes */
-#ifndef __memory_h__
-#define __memory_h__
-
-#ifdef __STDC__
-extern void *memccpy();
-extern void *memchr();
-extern void *memcpy();
-extern void *memset();
-#else
-extern char *memccpy();
-extern char *memchr();
-extern char *memcpy();
-extern char *memset();
-#endif /* __STDC__ */
-
-extern int memcmp();
-
-#endif /* __memory_h__ */
-EOF
- fi
-fi
-
-# Fix return type of fread and fwrite on sysV68
-file=stdio.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, fread and fwrite return type
- sed -e 's/^\(extern int fclose(), fflush()\), \(fread(), fwrite()\)\(.*\)$/extern unsigned int \2;\
-\1\3/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# parameters not const on DECstation Ultrix V4.0 and OSF/1.
-file=stdio.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, non-const arg
- 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*);@' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# parameters conflict with C++ new on rs/6000
-for file in stdio.h unistd.h ; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file, parameter name conflicts
- sed -e 's@rename(const char \*old, const char \*new)@rename(const char *_old, const char *_new)@' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# function class(double x) conflicts with C++ keyword on rs/6000
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if grep '[^a-zA-Z_]class[(]' ${LIB}/$file >/dev/null; then
- echo Fixing $file
- sed -e '/class[(]/i\
-#ifndef __cplusplus
-' \
- -e '/class[(]/a\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-fi
-
-# Wrong fchmod prototype on RS/6000.
-file=sys/stat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, fchmod prototype
- sed -e 's/fchmod(char \*/fchmod(int/' \
- ${LIB}/$file > ${LIB}/$file.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# There are several name conflicts with C++ reserved words in X11
-# header files. These are fixed in some versions, so don't do the
-# fixes if we find __cplusplus in the file. These were found on the
-# RS/6000.
-
-# class in X11/ShellP.h
-file=X11/ShellP.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if grep __cplusplus ${LIB}/$file >/dev/null 2>/dev/null; then
- true;
- else
- echo Fixing $file, field class
- sed -e '/char [*]class;/i\
-#ifdef __cplusplus\
- char *c_class;\
-#else
-' \
- -e '/char [*]class;/a\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-# new in Xm/Traversal.h
-file=Xm/Traversal.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if grep __cplusplus ${LIB}/$file >/dev/null 2>/dev/null; then
- true;
- else
- echo Fixing $file, uses of new
- sed -e '/Widget old, new;/i\
-#ifdef __cplusplus\
- Widget old, c_new;\
-#else
-' \
- -e '/Widget old, new;/a\
-#endif
-' \
- -e 's/Widget new,/Widget c_new,/g' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-# class in Xm/BaseClassI.h
-file=Xm/BaseClassI.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if grep __cplusplus ${LIB}/$file >/dev/null 2>/dev/null; then
- true;
- else
- echo Fixing $file, prototype parameter name
- sed -e 's/ class[)]/ c_class)/g' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# NeXT 3.2 adds const prefix to some math functions. These conflict
-# with the built-in functions.
-file=ansi/math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- 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__//' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# NeXT 3.2 uses the word "template" as a parameter for some
-# functions. GCC reports an invalid use of a reserved key word
-# with the built-in functions. NeXT 3.2 includes the keyword
-# volatile in the prototype for abort(). This conflicts with
-# the built-in definition.
-file=bsd/libc.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/\(.*template\)/s/template//' \
- -e '/extern.*volatile.*void.*abort/s/volatile//' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# NeXT 3.2 includes the keyword volatile in the abort() and
-# exit() function prototypes. That conflicts with the
-# built-in functions.
-file=ansi/stdlib.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/extern.*volatile.*void.*exit/s/volatile//' \
- -e '/extern.*volatile.*void.*abort/s/volatile//' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# sys/utsname.h on Ultrix V4.[35] puts the declaration of uname before the
-# definition of struct utsname, so the prototype (added by fixproto) causes
-# havoc.
-file=sys/utsname.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ] \
- && grep 'ULTRIX' ${LIB}/$file >/dev/null; then
- echo Fixing $file, uname declaration
- sed -e '/^[ ]*extern[ ]*int[ ]*uname();$/i\
-struct utsname;
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# sys/wait.h on AIX 3.2.5 puts the declaration of wait3 before the definition
-# of struct rusage, so the prototype (added by fixproto) causes havoc.
-file=sys/wait.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ] \
- && grep 'bos325,' ${LIB}/$file >/dev/null; then
- echo Fixing $file, wait3 declaration
- sed -e '/^extern pid_t wait3();$/i\
-struct rusage;
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
-# Note that version 3 of the NeXT system has wait.h in a different directory,
-# so that this code won't do anything. But wait.h in version 3 has a
-# conditional, so it doesn't need this fix. So everything is okay.
-file=sys/wait.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ] \
- && grep 'wait[(]union wait' ${LIB}/$file >/dev/null; then
- echo Fixing $file, bad wait formal
- sed -e 's@wait(union wait@wait(void@' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Don't use or define the name va_list in stdio.h.
-# This is for ANSI and also to interoperate properly with gcc's varargs.h.
-file=stdio.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, use of va_list
- # Arrange for stdio.h to use stdarg.h to define __gnuc_va_list
- if egrep "__need___va_list" ${LIB}/$file >/dev/null 2>&1; then
- touch ${LIB}/${file}.sed
- else
- (echo "#define __need___va_list"
- echo "#include <stdarg.h>") > ${LIB}/${file}.sed
- fi
- # Use __gnuc_va_list in arg types in place of va_list.
- # On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the
- # trailing parentheses and semicolon save all other systems from this.
- # Define __va_list__ (something harmless and unused) instead of va_list.
- # Don't claim to have defined va_list.
- sed -e 's@ va_list @ __gnuc_va_list @' \
- -e 's@ va_list)@ __gnuc_va_list)@' \
- -e 's@ _BSD_VA_LIST_));@ __gnuc_va_list));@' \
- -e 's@ _VA_LIST_));@ __gnuc_va_list));@' \
- -e 's@ va_list@ __va_list__@' \
- -e 's@\*va_list@*__va_list__@' \
- -e 's@ __va_list)@ __gnuc_va_list)@' \
- -e 's@GNUC_VA_LIST@GNUC_Va_LIST@' \
- -e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \
- -e 's@VA_LIST@DUMMY_VA_LIST@' \
- -e 's@_Va_LIST@_VA_LIST@' \
- ${LIB}/$file >> ${LIB}/${file}.sed
-
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Cancel out ansi_compat.h on Ultrix. Replace it with empty file.
-file=ansi_compat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- if grep -s ULTRIX $file; then
- echo "/* This file intentionally left blank. */" > $LIB/$file
- fi
-fi
-
-# parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R.
-# also get rid of bogus inline definitions in HP-UX 8.0
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, non-const arg
- sed -e 's@atof(\([ ]*char[ ]*\*[^)]*\))@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]*) {.*}@@' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# fix bogus recursive stdlib.h in NEWS-OS 4.0C
-file=stdlib.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, recursive inclusion
- sed -e '/^#include <stdlib.h>/i\
-#if 0
-' \
- -e '/^#include <stdlib.h>/a\
-#endif
-' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Avoid nested comments on Ultrix 4.3.
-file=rpc/svc.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, nested comment
- sed -e 's@^\( \* int protocol; \)/\*@\1*/ /*@' \
- ${LIB}/$file > ${LIB}/$file.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# This file in RISC/os uses /**/ to concatenate two tokens.
-file=bsd43/bsd43_.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- sed -e 's|/\*\*/|##|' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-file=rpc/rpc.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, nested comment
- sed -e 's@^\(/\*.*rpc/auth_des.h>.*\)/\*@\1*/ /*@' \
- ${LIB}/$file > ${LIB}/$file.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# rpc/types.h on OSF1/2.0 is not C++ ready, even though NO_IMPLICIT_EXTERN_C
-# is defined for the alpha. The problem is the declaration of malloc.
-file=rpc/types.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/rpc 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-if [ -r ${LIB}/$file ]; then
- if egrep '"C"' ${LIB}/$file >/dev/null 2>&1; then
- true
- else
- echo Fixing $file
- echo '#ifdef __cplusplus
-extern "C" {
-#endif' > ${LIB}/${file}.sed
- cat ${LIB}/${file} >> ${LIB}/${file}.sed
- echo '#ifdef __cplusplus
-}
-#endif' >> ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-fi
-
-# In limits.h, put #ifndefs around things that are supposed to be defined
-# in float.h to avoid redefinition errors if float.h is included first.
-# On HP/UX this patch does not work, because on HP/UX limits.h uses
-# multi line comments and the inserted #endif winds up inside the
-# comment. Fortunately, HP/UX already uses #ifndefs in limits.h; if
-# we find a #ifndef FLT_MIN we assume that all the required #ifndefs
-# are there, and we do not add them ourselves.
-# Also fix a nested comment problem in sys/limits.h on Motorola sysV68 R3V7.1
-for file in limits.h sys/limits.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- if egrep 'ifndef[ ]+FLT_MIN' ${LIB}/$file >/dev/null; then
- true
- else
- echo Fixing $file
- sed -e '/[ ]FLT_MIN[ ]/i\
-#ifndef FLT_MIN
-'\
- -e '/[ ]FLT_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_MAX[ ]/i\
-#ifndef FLT_MAX
-'\
- -e '/[ ]FLT_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]FLT_DIG[ ]/i\
-#ifndef FLT_DIG
-'\
- -e '/[ ]FLT_DIG[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MIN[ ]/i\
-#ifndef DBL_MIN
-'\
- -e '/[ ]DBL_MIN[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_MAX[ ]/i\
-#ifndef DBL_MAX
-'\
- -e '/[ ]DBL_MAX[ ]/a\
-#endif
-'\
- -e '/[ ]DBL_DIG[ ]/i\
-#ifndef DBL_DIG
-'\
- -e '/[ ]DBL_DIG[ ]/a\
-#endif
-'\
- -e '/^\(\/\*#define HUGE_VAL 3\.[0-9e+]* *\)\/\*/s//\1/'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- echo Deleting ${LIB}/$file\; no fixes were needed.
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# In math.h, put #ifndefs around things that might be defined in a gcc
-# specific math-*.h file.
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/define[ ]HUGE_VAL[ ]/i\
-#ifndef HUGE_VAL
-'\
- -e '/define[ ]HUGE_VAL[ ]/a\
-#endif
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
-
- # In addition, copy the definition of DBL_MAX from float.h
- # if math.h requires one. The Lynx math.h requires it.
- if egrep '#define[ ]*HUGE_VAL[ ]+DBL_MAX' $file >/dev/null 2>&1; then
- if egrep '#define[ ]+DBL_MAX[ ]+' $file >/dev/null 2>&1; then
- true;
- else
- dbl_max_def=`egrep 'define[ ]+DBL_MAX[ ]+.*' float.h 2>/dev/null`
- if [ "$dbl_max_def" != "" ]; then
- dbl_max_def=`echo $dbl_max_def | sed 's/.*define[ ]*DBL_MAX[ ]*//'`
- sed -e "/define[ ]HUGE_VAL[ ]DBL_MAX/s/DBL_MAX/$dbl_max_def/" \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- fi
- fi
-
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- echo Deleting ${LIB}/$file\; no fixes were needed.
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Remove erroneous parentheses in sym.h on Alpha OSF/1.
-file=sym.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/#ifndef(__mips64)/#ifndef __mips64/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix return value of mem{ccpy,chr,cpy,set} and str{len,spn,cspn}
-# in string.h on sysV68
-# Correct the return type for strlen in string.h on Lynx.
-# Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0.
-# Add missing const for strdup on OSF/1 V3.0.
-# On sysV88 layout is slightly different.
-file=string.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, mem{ccpy,chr,cpy,set} and str{len,spn,cspn} return value
- sed -e 's/extern[ ]*int[ ]*strlen();/extern unsigned int strlen();/' \
- -e 's/extern[ ]*int[ ]*ffs[ ]*(long);/extern int ffs(int);/' \
- -e 's/strdup(char \*s1);/strdup(const char *s1);/' \
- -e '/^extern char$/N' \
- -e 's/^extern char\(\n \*memccpy(),\)$/extern void\1/'\
- -e '/^ strncmp(),$/N'\
- -e 's/^\( strncmp()\),\n\( strlen(),\)$/\1;\
-extern unsigned int\
-\2/'\
- -e '/^extern int$/N'\
- -e 's/^extern int\(\n strlen(),\)/extern size_t\1/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Correct the return type for strlen in strings.h in SunOS 4.
-file=strings.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/int[ ]*strlen();/__SIZE_TYPE__ strlen();/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Delete the '#define void int' line from curses.h on Lynx
-file=curses.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/#[ ]*define[ ][ ]*void[ ]int/d' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix `typedef struct term;' on hppa1.1-hp-hpux9.
-file=curses.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/^[ ]*typedef[ ][ ]*\(struct[ ][ ]*term[ ]*;[ ]*\)$/\1/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# For C++, avoid any typedef or macro definition of bool, and use the
-# built in type instead. HP/UX 10.20, at least, also has it
-# in curses_colr/curses.h.
-for file in curses.h curses_colr/curses.h ; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
- if [ -r ${LIB}/$file ] && egrep bool ${LIB}/$file >/dev/null 2>&1; then
- echo Fixing $file, typedef or macro for bool is invalid in C++
- sed -e '/^#[ ]*define[ ][ ]*bool[ ][ ]*char[ ]*$/i\
-#ifndef __cplusplus
-'\
- -e '/^#[ ]*define[ ][ ]*bool[ ][ ]*char[ ]*$/a\
-#endif
-'\
- -e '/^typedef[ ][ ]*char[ ][ ]*bool[ ]*;/i\
-#ifndef __cplusplus
-'\
- -e '/^typedef[ ][ ]*char[ ][ ]*bool[ ]*;/a\
-#endif
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# Fix incorrect S_IF* definitions on m88k-sysv3.
-file=sys/stat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/^\(#define[ ]*S_IS[A-Z]*(m)\)[ ]*(m[ ]*&[ ]*\(S_IF[A-Z][A-Z][A-Z][A-Z]*\)[ ]*)/\1 (((m)\&S_IFMT)==\2)/' \
- -e 's/^\(#define[ ]*S_IS[A-Z]*(m)\)[ ]*(m[ ]*&[ ]*\(0[0-9]*\)[ ]*)/\1 (((m)\&S_IFMT)==\2)/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix nested comments in Motorola's <limits.h> and <sys/limits.h>
-for file in limits.h sys/limits.h; do
- if [ $target_canonical = m88k-motorola-sysv3 -o \
- $target_canonical = m68k-motorola-sysv ]; then
-
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo "Fixing nested comments in Motorola's $file"
- sed \
- -e 's@^\(#undef[ ][ ]*PIPE_BUF[ ]*/\* max # bytes atomic in write to a\)$@\1 */@' \
- -e 's@\(/\*#define HUGE_VAL 3.40282346638528860e+38 \)\(/\*error value returned by Math lib\*/\)$@\1*/ \2@' \
- < ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
- fi
- fi
-done
-
-# Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1 and AIX.
-for file in stdio.h stdlib.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file, getopt declaration
- sed -e 's/getopt(int, char \*\[\],[ ]*char \*)/getopt(int, char *const[], const char *)/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# Fix __page_size* declarations in pthread.h AIX 4.1.[34].
-# The original ones fail if uninitialized externs are not common.
-# This is the default for all ANSI standard C++ compilers.
-for file in pthread.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file, __page_size* declarations
- sed -e 's/^int __page_size/extern int __page_size/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# Determine if we're on Interactive Unix 2.2 or later, in which case we
-# need to fix some additional files. This is the same test for ISC that
-# Autoconf uses.
-if test -d /etc/conf/kconfig.d \
- && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1; then
- echo "Fixing ISC __STDC__ goof in several files..."
- for name in stdio.h math.h ctype.h sys/limits.h sys/fcntl.h sys/dirent.h; do
- echo $name
- if test -r ${LIB}/$name; then
- file=${LIB}/$name
- else
- file=${INPUT}/$name
- fi
- # On Interactive 2.2, certain traditional Unix definitions
- # (notably getc and putc in stdio.h) are omitted if __STDC__ is
- # defined, not just if _POSIX_SOURCE is defined. This makes it
- # impossible to compile any nontrivial program except with -posix.
- sed \
-'s/!defined(__STDC__) && !defined(_POSIX_SOURCE)/!defined(_POSIX_SOURCE)/' \
- < $file > ${LIB}/$name.
- mv ${LIB}/$name. ${LIB}/$name
- done
-
- echo "Fixing ISC fmod declaration"
- # This one's already been fixed for other things.
- file=${LIB}/math.h
- sed 's/fmod(double)/fmod(double, double)/' <$file >$file.
- mv $file. $file
-
- echo "Fixing nested comments in ISC <sys/limits.h>"
- file=sys/limits.h
- sed '/CHILD_MAX/s,/\* Max, Max,' < ${INPUT}/$file >${LIB}/$file.
- sed '/OPEN_MAX/s,/\* Max, Max,' < ${LIB}/$file. >${LIB}/$file
-fi
-
-# These files in Sun OS 4.x use /**/ to concatenate tokens.
-for file in 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;
-do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- sed -e 's|/\*\*/|##|g' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# These files in ARM/RISCiX use /**/ to concatenate tokens.
-for file in 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
-do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- sed -e 's|/\*\*/|##|g' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# libm.a on m88k-motorola-sysv3 contains a stupid optimization for function
-# hypot(), which returns the second argument without even looking at its value
-# if the other is 0.0
-# Another drawback is that fix-header doesn't fix fabs' prototype, and I have
-# no idea why.
-file=math.h
-if [ $target_canonical = m88k-motorola-sysv3 ]; then
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file, fabs/hypot definition
- sed \
- -e 's/extern double floor(), ceil(), fmod(), fabs();/extern double floor(), ceil(), fmod(), fabs _PARAMS((double));/' \
- -e '/^extern double hypot();$/a\
-\/* Workaround a stupid Motorola optimization if one\
- of x or y is 0.0 and the other is negative! *\/\
-#ifdef __STDC__\
-static __inline__ double fake_hypot (double x, double y)\
-#else\
-static __inline__ double fake_hypot (x, y)\
- double x, y;\
-#endif\
-{\
- return fabs (hypot (x, y));\
-}\
-#define hypot fake_hypot
-' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- fi
- fi
-fi
-
-# math.h on SunOS 4 puts the declaration of matherr before the definition
-# of struct exception, so the prototype (added by fixproto) causes havoc.
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, matherr declaration
- sed -e '/^struct exception/,$b' \
- -e '/matherr/i\
-struct exception;
-'\
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# sys/mman.h on HP/UX is not C++ ready, even though
-# NO_IMPLICIT_EXTERN_C is defined on HP/UX.
-for file in sys/mman.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- if egrep '"C"' ${LIB}/$file >/dev/null 2>&1 \
- || egrep '__BEGIN_DECLS' ${LIB}/$file >/dev/null 2>&1; then
- true
- else
- echo Fixing $file
- echo '#ifdef __cplusplus
-extern "C" {
-#endif' > ${LIB}/${file}.sed
- cat ${LIB}/${file} >> ${LIB}/${file}.sed
- echo '#ifdef __cplusplus
-}
-#endif' >> ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# Fix return value of sbrk in unistd.h on Alpha OSF/1 V2.0
-file=unistd.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, sbrk declaration
- sed -e 's/char\([ ]*\*[ ]*sbrk[ ]*(\)/void\1/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix <c_asm.h> on Digital UNIX V4.0:
-# It contains a prototype for a DEC C internal asm() function, clashing with
-# gcc's asm keyword. So protect this with __DECC.
-file=c_asm.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e '/^[ ]*float[ ]*fasm/i\
-#ifdef __DECC
-' \
- -e '/^[ ]*#[ ]*pragma[ ]*intrinsic([ ]*dasm/a\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# This file on SunOS 4 has a very large macro. When the sed loop
-# tries pull it in, it overflows the pattern space size of the SunOS
-# sed (GNU sed does not have this problem). Since the file does not
-# require fixing, we remove it from the fixed directory.
-file=sundev/ipi_error.h
-if [ -r ${LIB}/$file ]; then
- echo "Removing incorrect fix to SunOS <sundev/ipi_error.h>"
- rm -f ${LIB}/$file
-fi
-
-# Put cpp wrappers around these include files to avoid redeclaration
-# errors during multiple inclusion on m88k-tektronix-sysv3.
-for file in time.h sys/time.h ; do
- if egrep '#ifndef' $file >/dev/null 2>&1; then
- true
- else
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- fi
- if [ -r ${LIB}/$file ]; then
- echo Fixing $file, to protect against multiple inclusion.
- cpp_wrapper=`echo $file | sed -e 's,\.,_,g' -e 's,/,_,g'`
- (echo "#ifndef __GCC_GOT_${cpp_wrapper}_"
- echo "#define __GCC_GOT_${cpp_wrapper}_"
- cat ${LIB}/${file}
- echo '#endif /* !_GCC_GOT_'${cpp_wrapper}_' */') > ${LIB}/${file}.new
- rm -f ${LIB}/$file; mv ${LIB}/${file}.new ${LIB}/$file
- fi
- fi
-done
-
-# Fix fcntl prototype in fcntl.h on LynxOS.
-file=fcntl.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, fcntl declaration
- sed -e 's/\(fcntl.*(int, int, \)int)/\1...)/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix definitions of macros used by va-i960.h in VxWorks header file.
-file=arch/i960/archI960.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/__vsiz/__vxvsiz/' -e 's/__vali/__vxvali/' \
- -e s'/__vpad/__vxvpad/' -e 's/__alignof__/__vxalignof__/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Make VxWorks header which is almost gcc ready fully gcc ready.
-file=types/vxTypesBase.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file
- sed -e 's/#ifdef __GNUC_TYPEOF_FEATURE_BROKEN_USE_DEFAULT_UNTIL_FIXED__/#if 1/' \
- -e '/[ ]size_t/i\
-#ifndef _GCC_SIZE_T\
-#define _GCC_SIZE_T
-' \
- -e '/[ ]size_t/a\
-#endif
-' \
- -e '/[ ]ptrdiff_t/i\
-#ifndef _GCC_PTRDIFF_T\
-#define _GCC_PTRDIFF_T
-' \
- -e '/[ ]ptrdiff_t/a\
-#endif
-' \
- -e '/[ ]wchar_t/i\
-#ifndef _GCC_WCHAR_T\
-#define _GCC_WCHAR_T
-' \
- -e '/[ ]wchar_t/a\
-#endif
-' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix VxWorks <sys/stat.h> to not require including <vxWorks.h>.
-file=sys/stat.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if egrep '#include' ${LIB}/$file >/dev/null 2>&1; then
- :
- else
- if egrep 'ULONG' ${LIB}/$file >/dev/null 2>&1 \
- && [ -r types/vxTypesOld.h ]; then
- echo Fixing $file
- sed -e '/#define[ ][ ]*__INCstath/a\
-#include <types/vxTypesOld.h>
-' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix VxWorks <time.h> to not require including <vxTypes.h>.
-file=time.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if egrep 'uint_t[ ][ ]*_clocks_per_sec' ${LIB}/$file >/dev/null 2>&1; then
- echo Fixing $file
- sed -e 's/uint_t/unsigned int/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Fix hpux10.20 <sys/time.h> to avoid invalid forward decl
-file=sys/time.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if egrep '^extern struct sigevent;' ${LIB}/$file >/dev/null 2>&1; then
- echo Fixing $file
- sed -e 's/^extern struct sigevent;/struct sigevent;/' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Another bad dependency in VxWorks 5.2 <time.h>.
-file=time.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- mkdir ${LIB}/sys 2>/dev/null
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- if egrep VOIDFUNCPTR ${LIB}/$file >/dev/null 2>&1; then
- if [ -r vxWorks.h ]; then
- echo Fixing $file
- sed -e '/VOIDFUNCPTR/i\
-#ifndef __gcc_VOIDFUNCPTR_defined\
-#ifdef __cplusplus\
-typedef void (*__gcc_VOIDFUNCPTR) (...);\
-#else\
-typedef void (*__gcc_VOIDFUNCPTR) ();\
-#endif\
-#define __gcc_VOIDFUNCPTR_defined\
-#endif
-' \
- -e 's/VOIDFUNCPTR/__gcc_VOIDFUNCPTR/g' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# This file in A/UX 3.0.x/3.1.x contains an __asm directive for c89; gcc
-# doesn't understand it.
-file=sys/param.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo "Fixing __asm directive in sys/param.h"
- sed -e 's|#ifndef NOINLINE|#if !defined(NOINLINE) \&\& !defined(__GNUC__)|' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# signal.h on SunOS defines signal using (), which causes trouble when
-# compiling with g++ -pedantic.
-for file in signal.h sys/signal.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo "Checking for bad C++ prototype in $file"
- sed -e '/^void (\*signal())();$/i\
- #ifdef __cplusplus\
- void (*signal(...))(...);\
- #else
- ' \
- -e '/^void (\*signal())();$/a\
- #endif
- ' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# sys/signal.h on some versions of AIX uses volatile in the typedef of
-# sig_atomic_t, which causes gcc to generate a warning about duplicate
-# volatile when a sig_atomic_t variable is declared volatile, as
-# required by ANSI C.
-file=sys/signal.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo "Checking for duplicate volatile in sys/signal.h"
- sed -e 's/typedef volatile int sig_atomic_t/typedef int sig_atomic_t/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# Some math.h files define struct exception, which conflicts with
-# the class exception defined in the C++ file std/stdexcept.h. We
-# redefine it to __math_exception. This is not a great fix, but I
-# haven't been able to think of anything better.
-file=math.h
-if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
-fi
-
-if [ -r ${LIB}/$file ]; then
- echo Fixing $file, exception
- sed -e '/struct exception/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif
-'\
- -e '/struct exception/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if egrep 'matherr()' ${LIB}/$file >/dev/null 2>&1; then
- sed -e '/matherr/i\
-#ifdef __cplusplus\
-#define exception __math_exception\
-#endif
-'\
- -e '/matherr/a\
-#ifdef __cplusplus\
-#undef exception\
-#endif
-' ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- fi
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-fi
-
-# rpc/auth.h on SunOS needs prototypes for its AUTH->auth_ops function pointers
-# Similarly for
-# rpc/clnt.h CLIENT->clnt_ops
-# rpc/svc.h SVCXPRT->xp_ops
-# rpc/xdr.h XDR->xdr_ops
-for file in rpc/auth.h rpc/clnt.h rpc/svc.h rpc/xdr.h; do
- # each file has a different name to replace, so if you add a file to
- # that list please update the following case statement.
- case "$file" in
- rpc/auth.h)
- prefix="ah_"
- ;;
- rpc/clnt.h)
- prefix="cl_"
- ;;
- rpc/svc.h)
- prefix="xp_"
- ;;
- rpc/xdr.h)
- prefix="x_"
- ;;
- *)
- # Oh Oh, we shouldn't be here
- exit 1;
- ;;
- esac
-
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- echo "Checking for needed C++ prototype in $file"
- sed -e 's/^\(.*\)\*\('$prefix'.*\)();\(.*\)/\
-#ifdef __cplusplus\
-\1*\2(...);\3\
-#else\
-\1*\2();\3\
-#endif/g' \
- $LIB/$file > ${LIB}/${file}.sed
-
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
-done
-
-# sys/lc_core.h on some versions of OSF1/4.x pollutes the namespace by
-# defining regex.h types. This causes C++ library build and usage failures.
-# Fixing this correctly requires checking and modifying 3 files.
-for file in reg_types.h regex.h sys/lc_core.h; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-done
-if [ -r ${LIB}/reg_types.h ]; then
- if egrep '} regex_t;' ${LIB}/reg_types.h >/dev/null 2>&1; then
- if [ -r ${LIB}/sys/lc_core.h ]; then
- if egrep ' regex_t ' ${LIB}/sys/lc_core.h >/dev/null 2>&1; then
- if [ -r ${LIB}/regex.h ]; then
- if egrep '__regex_t' ${LIB}/regex.h >/dev/null 2>&1; then
- true;
- else
- echo Fixing reg_types.h, regex.h, sys/lc_core.h
- for file in reg_types.h sys/lc_core.h; do
- sed -e 's/regex_t/__regex_t/g' \
- -e 's/regoff_t/__regoff_t/g' \
- -e 's/regmatch_t/__regmatch_t/g' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- done
- sed -e '/#include <reg_types.h>/a\
-typedef __regex_t regex_t;\
-typedef __regoff_t regoff_t;\
-typedef __regmatch_t regmatch_t;\
-' \
- ${LIB}/regex.h > ${LIB}/regex.h.sed
- rm -f ${LIB}/regex.h; mv ${LIB}/regex.h.sed ${LIB}/regex.h
- fi
- fi
- fi
- fi
- fi
-fi
-for file in reg_types.h regex.h sys/lc_core.h; do
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
-done
-
-# AIX headers define NULL to be cast to a void pointer, which is illegal
-# in ANSI C++.
-for file in 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 ; do
- if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
- cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
- chmod +w ${LIB}/$file 2>/dev/null
- chmod a+r ${LIB}/$file 2>/dev/null
- fi
-
- if [ -r ${LIB}/$file ]; then
- if egrep '#.*define.*NULL.*void' ${LIB}/$file >/dev/null 2>&1; then
- echo "Fixing $file, bad NULL macro"
- sed -e 's/^#[ ]*define[ ]*NULL[ ]*((void[ ]*\*)0)/#define NULL 0/' \
- ${LIB}/$file > ${LIB}/${file}.sed
- rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
- if cmp $file ${LIB}/$file >/dev/null 2>&1; then
- rm -f ${LIB}/$file
- else
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- fi
- fi
-done
-
-# HPUX 10.x sys/param.h defines MAXINT which clashes with values.h
-file=sys/param.h
-base=`basename $file`
-if [ -r ${LIB}/$file ]; then
- file_to_fix=${LIB}/$file
-else
- if [ -r ${INPUT}/$file ]; then
- file_to_fix=${INPUT}/$file
- else
- file_to_fix=""
- fi
-fi
-if [ \! -z "$file_to_fix" ]; then
- echo Checking $file_to_fix
- sed -e '/^#[ ]*define[ ]*MAXINT[ ]/i\
-#ifndef MAXINT
-'\
- -e '/^#[ ]*define[ ]*MAXINT[ ]/a\
-#endif
-' $file_to_fix > /tmp/$base
- if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
- true
- else
- echo Fixed $file_to_fix
- rm -f ${LIB}/$file
- cp /tmp/$base ${LIB}/$file
- chmod a+r ${LIB}/$file
- # Find any include directives that use "file".
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $file | sed -e s'|/[^/]*$||'`
- required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include"
- done
- fi
- rm -f /tmp/$base
-fi
-
-
-# This loop does not appear to do anything, because it uses file
-# rather than $file when setting target. It also appears to be
-# unnecessary, since the main loop processes symbolic links.
-#if $LINKS; then
-# echo 'Making internal symbolic non-directory links'
-# cd ${INPUT}
-# files=`find . -type l -print`
-# for file in $files; do
-# dest=`ls -ld $file | sed -n 's/.*-> //p'`
-# if expr "$dest" : '[^/].*' > /dev/null; then
-# target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
-# if [ -f $target ]; then
-# ln -s $dest ${LIB}/$file >/dev/null 2>&1
-# fi
-# fi
-# done
-#fi
-
-# Make sure that any include files referenced using double quotes
-# exist in the fixed directory. This comes last since otherwise
-# we might end up deleting some of these files "because they don't
-# need any change."
-set x $required
-shift
-while [ $# != 0 ]; do
- newreq=
- while [ $# != 0 ]; do
- # $1 is the directory to copy from, $2 is the unfixed file,
- # $3 is the fixed file name.
- cd ${INPUT}
- cd $1
- if [ -r $2 ] && [ ! -r $3 ]; then
- cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2"
- chmod +w $3 2>/dev/null
- chmod a+r $3 2>/dev/null
- echo Copied $2
- for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do
- dir=`echo $2 | sed -e s'|/[^/]*$||'`
- dir2=`echo $3 | sed -e s'|/[^/]*$||'`
- newreq="$newreq $1 $dir/$include $dir2/$include"
- done
- fi
- shift; shift; shift
- done
- set x $newreq
- shift
-done
-
-echo 'Cleaning up DONE files.'
-cd $LIB
-find . -name DONE -exec rm -f '{}' ';'
-
-echo 'Removing unneeded directories:'
-cd $LIB
-files=`find . -type d -print | sort -r`
-for file in $files; do
- rmdir $LIB/$file > /dev/null 2>&1
-done
-
-
-exit 0
diff --git a/gcc/fixproto b/gcc/fixproto
deleted file mode 100755
index b9f8e43..0000000
--- a/gcc/fixproto
+++ /dev/null
@@ -1,294 +0,0 @@
-#!/bin/sh
-#
-# SYNOPSIS
-# fixproto TARGET-DIR SOURCE-DIR-ALL SOURCE-DIR-STD
-#
-# COPYRIGHT
-# Copyright (C) 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
-# This file is part of GNU CC.
-#
-# GNU CC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU CC 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 GNU CC; see the file COPYING. If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-# DESCRIPTION
-# Adjunct script for GNU CC to populate a directory with ANSI,
-# Posix.1, and C++ compatible header files.
-#
-# Each file found under SOURCE-DIR-ALL is analyzed and "fixed."
-# Only standard ANSI/POSIX files found under SOURCE-DIR-STD
-# are analyzed and "fixed."
-# The SOURCE-DIRs are searched in order; a file found
-# under multiple SOURCE-DIRs is only handled for the first one.
-#
-# STRATEGY
-# Each include file is fed through cpp, and the scan-decls program
-# parses it, and emits any found function declarations.
-# The fix-header program analyzes the scan-decls output,
-# together with the original include file, and writes a "fixed"
-# include file, if needed.
-#
-# The comment at the beginning of fix-header.c lists specifically
-# what kind of changes are made.
-#
-# NOTE
-# Some file space will be wasted, because the original header
-# files are copied. An earlier version just included the original
-# by "reference", using GNU cpp's #include_next mechanism.
-# This is currently not done, partly because #include_next is
-# fragile (susceptible to version incompatibilities, and depends
-# and GCC-specific features), and partly for performance reasons.
-#
-# AUTHORS
-# Ron Guilmette (rfg@netcom.com) (original idea and code)
-# Per Bothner (bothner@cygnus.com) (major re-write)
-
-progname=$0
-progname=`basename $progname`
-original_dir=`pwd`
-FIX_HEADER=${FIX_HEADER-$original_dir/fix-header}
-DEFINES="-D__STDC__=0 -D__cplusplus ${FIXPROTO_DEFINES}"
-
-if [ `echo $1 | wc -w` = 0 ] ; then
- echo $progname\: usage\: $progname target-dir \[ source-dir \.\.\. \]
- exit 1
-fi
-
-std_files="ctype.h dirent.h errno.h curses.h fcntl.h grp.h locale.h math.h pwd.h setjmp.h signal.h stdio.h stdlib.h string.h sys/socket.h sys/stat.h sys/times.h sys/resource.h sys/utsname.h sys/wait.h tar.h termios.h time.h unistd.h utime.h"
-
-rel_target_dir=$1
-# All files in $src_dir_all (normally same as $rel_target_dir) are
-# processed.
-src_dir_all=$2
-# In $src_dir_std (normally same as /usr/include), only the
-# "standard" ANSI/POSIX files listed in $std_files are processed.
-src_dir_std=$3
-
-if [ `expr $rel_target_dir : '\(.\)'` != '/' ] ; then
- abs_target_dir=$original_dir/$rel_target_dir
-else
- abs_target_dir=$rel_target_dir
-fi
-
-# Determine whether this system has symbolic links.
-if ln -s X $rel_target_dir/ShouldNotExist 2>/dev/null; then
- rm -f $rel_target_dir/ShouldNotExist
- LINKS=true
-elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
- rm -f /tmp/ShouldNotExist
- LINKS=true
-else
- LINKS=false
-fi
-
-if [ \! -d $abs_target_dir ] ; then
- echo $progname\: creating directory $rel_target_dir
- mkdir $abs_target_dir
-fi
-
-echo $progname\: populating \`$rel_target_dir\'
-
-include_path=""
-
-if [ `echo $* | wc -w` != 0 ] ; then
- for rel_source_dir in $src_dir_all $src_dir_std; do
- if [ `expr $rel_source_dir : '\(.\)'` != '/' ] ; then
- abs_source_dir=$original_dir/$rel_source_dir
- else
- abs_source_dir=$rel_source_dir
- fi
- include_path="$include_path -I$abs_source_dir"
- done
-fi
-
-required_stdlib_h="abort abs atexit atof atoi atol bsearch calloc exit free getenv labs malloc putenv qsort rand realloc srand strtod strtol strtoul system"
-# "div ldiv", - ignored because these depend on div_t, ldiv_t
-# ignore these: "mblen mbstowcs mbstowc wcstombs wctomb"
-# Left out getgroups, because SunOS4 has incompatible BSD and SVR4 versions.
-# Should perhaps also add NULL
-required_unistd_h="_exit access alarm chdir chown close ctermid cuserid dup dup2 execl execle execlp execv execve execvp fork fpathconf getcwd getegid geteuid getgid getlogin getopt getpgrp getpid getppid getuid isatty link lseek pathconf pause pipe read rmdir setgid setpgid setsid setuid sleep sysconf tcgetpgrp tcsetpgrp ttyname unlink write"
-
-done_dirs=""
-subdirs_made=""
-echo "" >fixproto.list
-
-for code in ALL STD ; do
-
- subdirs="."
-
- case $code in
- ALL)
- rel_source_dir=$src_dir_all
-
- dirs="."
- levels=2
- while $LINKS && test -n "$dirs" -a $levels -gt 0
- do
- levels=`expr $levels - 1`
- newdirs=
- for d in $dirs ; do
- # Find all directories under $d, relative to $d, excluding $d itself.
- # Assume directory names ending in CC or containing ++ are
- # for C++, so skip those.
- subdirs="$subdirs "`cd $rel_source_dir/$d; find . -type d -print | \
- sed -e '/^\.$/d' -e "s|^\./|${d}/|" -e 's|^\./||' \
- -e '/CC$/d' -e '/[+][+]/d'`
- links=
- links=`cd $rel_source_dir; find $d/. -type l -print | \
- sed -e "s|$d/./|$d/|" -e 's|^\./||'`
- for link in $links --dummy-- ; do
- test -d $rel_source_dir/$link/. && newdirs="$newdirs $link"
- done
- done
- dirs="$newdirs"
- subdirs="$subdirs $newdirs"
- done
- ;;
- STD)
- rel_source_dir=$src_dir_std
- ;;
- esac
-
- if [ `expr $rel_source_dir : '\(.\)'` != '/' ] ; then
- abs_source_dir=$original_dir/$rel_source_dir
- else
- abs_source_dir=$rel_source_dir
- fi
-
- if [ \! -d $abs_source_dir ] ; then
- echo $progname\: warning\: no such directory\: \`$rel_source_dir\'
- continue
- fi
-
- for rel_source_subdir in $subdirs; do
-
- abs_target_subdir=${abs_target_dir}/${rel_source_subdir}
- if [ \! -d $abs_target_subdir ] ; then
- if mkdir $abs_target_subdir ; then
- subdirs_made="$abs_target_subdir $subdirs_made"
- fi
- fi
- # Append "/"; remove initial "./". Hence "." -> "" and "sys" -> "sys/".
- rel_source_prefix=`echo $rel_source_subdir | sed -e 's|$|/|' -e 's|^./||'`
-
- case $code in
- ALL)
- # The 'sed' is in case the *.h matches nothing, which yields "*.h"
- # which would then get re-globbed in the current directory. Sigh.
- rel_source_files=`cd ${abs_source_dir}/${rel_source_subdir}; echo *.h | sed -e 's|[*].h|NONE|'`
- ;;
-
- STD)
- files_to_check="$std_files"
- rel_source_files=""
-
- # Also process files #included by the $std_files.
- while [ -n "${files_to_check}" ]
- do
- new_files_to_check=""
- for file in $files_to_check ; do
- xxfile=`echo $file | sed -e 's|/\([^/\.][^/\.]*\)/\.\./|/|'`
- # Create the dir where this file will go when fixed.
- xxdir=`echo ./$file | sed -e 's|/[^/]*$||'`
- if [ \! -d $abs_target_subdir/$xxdir ] ; then
- if mkdir $abs_target_subdir/$xxdir ; then
- subdirs_made="$abs_target_subdir/$xxdir $subdirs_made"
- fi
- fi
- # Just in case we have edited out a symbolic link
- if [ -f $src_dir_std/$file -a -f $src_dir_std/$xxfile ] ; then
- file=$xxfile
- fi
- case " $rel_source_files " in
- *" ${file} "*)
- # Already seen $file; nothing to do
- ;;
- *)
- if test -f $src_dir_std/$file ; then
- rel_dir=`echo $file | sed -n -e 's|^\(.*/\)[^/]*$|\1|p'`
- # For #include "foo.h", that might be either "foo.h"
- # or "${rel_dir}foo.h (or something bogus).
- new_files_to_check="$new_files_to_check "`sed -n \
- -e 's@ @ @g' \
- -e 's@^ *# *include *<\([^>]*\)>.*$@\1@p' -e \
- 's@^ *# *include *\"\([^\"]*\)\".*$@\1 '$rel_dir'\1@p'\
- <$src_dir_std/$file`
- rel_source_files="$rel_source_files $file"
- fi
- ;;
- esac
- done
- files_to_check="$new_files_to_check"
- done
- rel_source_files="$rel_source_files"
- ;;
- esac
-
- for filename in $rel_source_files ; do
- rel_source_file=${rel_source_prefix}${filename}
- abs_source_file=$abs_source_dir/$rel_source_file
- abs_target_file=$abs_target_dir/$rel_source_file
-
- if test "$filename" = 'NONE' ; then
- echo "(No *.h files in $abs_source_dir/$rel_source_subdir)"
- # If target file exists, check if was written while processing one
- # of the earlier source directories; if so ignore it.
- elif test -f $abs_target_file -a -n "$done_dirs" \
- && grep "$rel_source_file" fixproto.list >/dev/null
- then true
- else
- $FIX_HEADER $rel_source_file $abs_source_file $abs_target_file ${DEFINES} $include_path
- echo "${rel_source_file}" >>fixproto.list
- fi
- done
- done
- done_dirs="$done_dir $rel_source_dir"
-done
-
-# This might be more cleanly moved into the main loop, by adding
-# a <dummy> source directory at the end. FIXME!
-for rel_source_file in unistd.h stdlib.h
-do
- if grep "$rel_source_file" fixproto.list >/dev/null
- then true
- else
- echo Adding missing $rel_source_file
- rel_source_ident=`echo $rel_source_file | tr ./ __`
- required_list=`eval echo '${required_'${rel_source_ident}'-}'`
- cat >tmp.h <<EOF
-#ifndef __${rel_source_ident}
-#define __${rel_source_ident}
-EOF
- if test $rel_source_file = stdlib.h
- then
- # Make sure it contains a definition of size_t.
- cat >>tmp.h <<EOF
-
-#define __need_size_t
-#include <stddef.h>
-EOF
- fi
- cat >>tmp.h <<EOF
-
-#endif /* __${rel_source_ident} */
-EOF
- ${FIX_HEADER} $rel_source_file tmp.h $abs_target_dir/$rel_source_file ${DEFINES} $include_path
- rm tmp.h
- fi
-done
-
-# Remove any directories that we made that are still empty.
-rmdir $subdirs_made 2>/dev/null
-
-exit 0
diff --git a/gcc/gcov.c b/gcc/gcov.c
deleted file mode 100755
index 9728966..0000000
--- a/gcc/gcov.c
+++ /dev/null
@@ -1,1373 +0,0 @@
-/* Gcov.c: prepend line execution counts and branch probabilities to a
- source file.
- Copyright (C) 1990, 91, 92, 93, 94, 96, 97, 1998 Free Software Foundation, Inc.
- Contributed by James E. Wilson of Cygnus Support.
- Mangled by Bob Manson of Cygnus Support.
-
-Gcov is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-Gcov 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 Gcov; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* ??? The code in final.c that produces the struct bb assumes that there is
- no padding between the fields. This is not necessary true. The current
- code can only be trusted if longs and pointers are the same size. */
-
-/* ??? No need to print an execution count on every line, could just print
- it on the first line of each block, and only print it on a subsequent
- line in the same block if the count changes. */
-
-/* ??? Print a list of the ten blocks with the highest execution counts,
- and list the line numbers corresponding to those blocks. Also, perhaps
- list the line numbers with the highest execution counts, only printing
- the first if there are several which are all listed in the same block. */
-
-/* ??? Should have an option to print the number of basic blocks, and the
- percent of them that are covered. */
-
-/* ??? Does not correctly handle the case where two .bb files refer to the
- same included source file. For example, if one has a short file containing
- only inline functions, which is then included in two other files, then
- there will be two .bb files which refer to the include file, but there
- is no way to get the total execution counts for the included file, can
- only get execution counts for one or the other of the including files. */
-
-#include "config.h"
-#include "system.h"
-
-#include "gcov-io.h"
-
-/* The .bb file format consists of several lists of 4-byte integers
- which are the line numbers of each basic block in the file. Each
- list is terminated by a zero. These lists correspond to the basic
- blocks in the reconstructed program flow graph.
-
- A line number of -1 indicates that a source file name (padded to a
- long boundary) follows. The padded file name is followed by
- another -1 to make it easy to scan past file names. A -2 indicates
- that a function name (padded to a long boundary) follows; the name
- is followed by another -2 to make it easy to scan past the function
- name.
-
- The .bbg file contains enough info to enable gcov to reconstruct the
- program flow graph. The first word is the number of basic blocks,
- the second word is the number of arcs, followed by the list of arcs
- (source bb, dest bb pairs), then a -1, then the number of instrumented
- arcs followed by the instrumented arcs, followed by another -1. This
- is repeated for each function.
-
- The .da file contains the execution count for each instrumented branch.
-
- The .bb and .bbg files are created by giving GCC the -ftest-coverage option,
- and the .da files are created when an executable compiled with
- -fprofile-arcs is run. */
-
-/* The functions in this file for creating and solution program flow graphs
- are very similar to functions in the gcc source file profile.c. */
-
-char gcov_version_string[] = "GNU gcov version 1.5-arm-000512\n";
-
-/* This is the size of the buffer used to read in source file lines. */
-
-#define STRING_SIZE 200
-
-/* One copy of this structure is created for each source file mentioned in the
- .bb file. */
-
-struct sourcefile
-{
- char *name;
- int maxlineno;
- struct sourcefile *next;
-};
-
-/* This points to the head of the sourcefile structure list. */
-
-struct sourcefile *sources;
-
-/* One of these is dynamically created whenever we identify an arc in the
- function. */
-
-struct adj_list {
- int source;
- int target;
- int arc_count;
- unsigned int count_valid : 1;
- unsigned int on_tree : 1;
- unsigned int fake : 1;
- unsigned int fall_through : 1;
-#if 0
- /* Not needed for gcov, but defined in profile.c. */
- rtx branch_insn;
-#endif
- struct adj_list *pred_next;
- struct adj_list *succ_next;
-};
-
-/* Count the number of basic blocks, and create an array of these structures,
- one for each bb in the function. */
-
-struct bb_info {
- struct adj_list *succ;
- struct adj_list *pred;
- int succ_count;
- int pred_count;
- int exec_count;
- unsigned int count_valid : 1;
- unsigned int on_tree : 1;
-#if 0
- /* Not needed for gcov, but defined in profile.c. */
- rtx first_insn;
-#endif
-};
-
-/* When outputting branch probabilities, one of these structures is created
- for each branch/call. */
-
-struct arcdata
-{
- int prob;
- int call_insn;
- struct arcdata *next;
-};
-
-/* Used to save the list of bb_graphs, one per function. */
-
-struct bb_info_list {
- /* Indexed by block number, holds the basic block graph for one function. */
- struct bb_info *bb_graph;
- int num_blocks;
- struct bb_info_list *next;
-};
-
-/* Holds a list of function basic block graphs. */
-
-static struct bb_info_list *bb_graph_list = 0;
-
-/* Name and file pointer of the input file for the basic block graph. */
-
-static char *bbg_file_name;
-static FILE *bbg_file;
-
-/* Name and file pointer of the input file for the arc count data. */
-
-static char *da_file_name;
-static FILE *da_file;
-
-/* Name and file pointer of the input file for the basic block line counts. */
-
-static char *bb_file_name;
-static FILE *bb_file;
-
-/* Holds the entire contents of the bb_file read into memory. */
-
-static char *bb_data;
-
-/* Size of bb_data array in longs. */
-
-static long bb_data_size;
-
-/* Name and file pointer of the output file. */
-
-static char *gcov_file_name;
-static FILE *gcov_file;
-
-/* Name of the file mentioned on the command line. */
-
-static char *input_file_name = 0;
-
-/* Output branch probabilities if true. */
-
-static int output_branch_probs = 0;
-
-/* Output a gcov file if this is true. This is on by default, and can
- be turned off by the -n option. */
-
-static int output_gcov_file = 1;
-
-/* For included files, make the gcov output file name include the name of
- the input source file. For example, if x.h is included in a.c, then the
- output file name is a.c.x.h.gcov instead of x.h.gcov. This works only
- when a single source file is specified. */
-
-static int output_long_names = 0;
-
-/* Output summary info for each function. */
-
-static int output_function_summary = 0;
-
-/* Object directory file prefix. This is the directory where .bb and .bbg
- files are looked for, if non-zero. */
-
-static char *object_directory = 0;
-
-/* Forward declarations. */
-static void process_args PROTO ((int, char **));
-static void open_files PROTO ((void));
-static void read_files PROTO ((void));
-static void scan_for_source_files PROTO ((void));
-static void output_data PROTO ((void));
-static void print_usage PROTO ((void)) ATTRIBUTE_NORETURN;
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- process_args (argc, argv);
-
- open_files ();
-
- read_files ();
-
- scan_for_source_files ();
-
- output_data ();
-
- return 0;
-}
-
-PTR
-xmalloc (size)
- size_t size;
-{
- register PTR value = (PTR) malloc (size);
- if (value == 0)
- {
- fprintf (stderr, "error: virtual memory exhausted");
- exit (FATAL_EXIT_CODE);
- }
- return value;
-}
-
-/* More 'friendly' abort that prints the line and file.
- config.h can #define abort fancy_abort if you like that sort of thing. */
-
-void
-fancy_abort ()
-{
- fprintf (stderr, "Internal gcc abort.\n");
- exit (FATAL_EXIT_CODE);
-}
-
-/* Print a usage message and exit. */
-
-static void
-print_usage ()
-{
- fprintf (stderr, "gcov [-b] [-v] [-n] [-l] [-f] [-o OBJDIR] file\n");
- exit (FATAL_EXIT_CODE);
-}
-
-/* Parse the command line. */
-
-static void
-process_args (argc, argv)
- int argc;
- char **argv;
-{
- int i;
-
- for (i = 1; i < argc; i++)
- {
- if (argv[i][0] == '-')
- {
- if (argv[i][1] == 'b')
- output_branch_probs = 1;
- else if (argv[i][1] == 'v')
- fputs (gcov_version_string, stderr);
- else if (argv[i][1] == 'n')
- output_gcov_file = 0;
- else if (argv[i][1] == 'l')
- output_long_names = 1;
- else if (argv[i][1] == 'f')
- output_function_summary = 1;
- else if (argv[i][1] == 'o' && argv[i][2] == '\0')
- object_directory = argv[++i];
- else
- print_usage ();
- }
- else if (! input_file_name)
- input_file_name = argv[i];
- else
- print_usage ();
- }
-
- if (! input_file_name)
- print_usage ();
-}
-
-
-/* Find and open the .bb, .da, and .bbg files. */
-
-static void
-open_files ()
-{
- int count, objdir_count;
- char *cptr;
-
- /* Determine the names of the .bb, .bbg, and .da files. Strip off the
- extension, if any, and append the new extensions. */
- count = strlen (input_file_name);
- if (object_directory)
- objdir_count = strlen (object_directory);
- else
- objdir_count = 0;
-
- da_file_name = xmalloc (count + objdir_count + 4);
- bb_file_name = xmalloc (count + objdir_count + 4);
- bbg_file_name = xmalloc (count + objdir_count + 5);
-
- if (object_directory)
- {
- strcpy (da_file_name, object_directory);
- strcpy (bb_file_name, object_directory);
- strcpy (bbg_file_name, object_directory);
-
- if (object_directory[objdir_count - 1] != '/')
- {
- strcat (da_file_name, "/");
- strcat (bb_file_name, "/");
- strcat (bbg_file_name, "/");
- }
-
- cptr = rindex (input_file_name, '/');
- if (cptr)
- {
- strcat (da_file_name, cptr + 1);
- strcat (bb_file_name, cptr + 1);
- strcat (bbg_file_name, cptr + 1);
- }
- else
- {
- strcat (da_file_name, input_file_name);
- strcat (bb_file_name, input_file_name);
- strcat (bbg_file_name, input_file_name);
- }
- }
- else
- {
- strcpy (da_file_name, input_file_name);
- strcpy (bb_file_name, input_file_name);
- strcpy (bbg_file_name, input_file_name);
- }
-
- cptr = rindex (bb_file_name, '.');
- if (cptr)
- strcpy (cptr, ".bb");
- else
- strcat (bb_file_name, ".bb");
-
- cptr = rindex (da_file_name, '.');
- if (cptr)
- strcpy (cptr, ".da");
- else
- strcat (da_file_name, ".da");
-
- cptr = rindex (bbg_file_name, '.');
- if (cptr)
- strcpy (cptr, ".bbg");
- else
- strcat (bbg_file_name, ".bbg");
-
- bb_file = fopen (bb_file_name, "r");
- if (bb_file == NULL)
- {
- fprintf (stderr, "Could not open basic block file %s.\n", bb_file_name);
- exit (FATAL_EXIT_CODE);
- }
-
- /* If none of the functions in the file were executed, then there won't
- be a .da file. Just assume that all counts are zero in this case. */
- da_file = fopen (da_file_name, "r");
- if (da_file == NULL)
- {
- fprintf (stderr, "Could not open data file %s.\n", da_file_name);
- fprintf (stderr, "Assuming that all execution counts are zero.\n");
- }
-
- bbg_file = fopen (bbg_file_name, "r");
- if (bbg_file == NULL)
- {
- fprintf (stderr, "Could not open program flow graph file %s.\n",
- bbg_file_name);
- exit (FATAL_EXIT_CODE);
- }
-
- /* Check for empty .bbg file. This indicates that there is no executable
- code in this source file. */
- /* Set the EOF condition if at the end of file. */
- ungetc (getc (bbg_file), bbg_file);
- if (feof (bbg_file))
- {
- fprintf (stderr, "No executable code associated with file %s.\n",
- input_file_name);
- exit (FATAL_EXIT_CODE);
- }
-}
-
-/* Initialize a new arc. */
-
-static void
-init_arc (arcptr, source, target, bb_graph)
- struct adj_list *arcptr;
- int source, target;
- struct bb_info *bb_graph;
-{
- arcptr->target = target;
- arcptr->source = source;
-
- arcptr->arc_count = 0;
- arcptr->count_valid = 0;
- arcptr->on_tree = 0;
- arcptr->fake = 0;
- arcptr->fall_through = 0;
-
- arcptr->succ_next = bb_graph[source].succ;
- bb_graph[source].succ = arcptr;
- bb_graph[source].succ_count++;
-
- arcptr->pred_next = bb_graph[target].pred;
- bb_graph[target].pred = arcptr;
- bb_graph[target].pred_count++;
-}
-
-
-/* Reverse the arcs on a arc list. */
-
-static struct adj_list *
-reverse_arcs (arcptr)
- struct adj_list *arcptr;
-{
- struct adj_list *prev = 0;
- struct adj_list *next;
-
- for ( ; arcptr; arcptr = next)
- {
- next = arcptr->succ_next;
- arcptr->succ_next = prev;
- prev = arcptr;
- }
-
- return prev;
-}
-
-
-/* Construct the program flow graph from the .bbg file, and read in the data
- in the .da file. */
-
-static void
-create_program_flow_graph (bptr)
- struct bb_info_list *bptr;
-{
- long num_blocks, number_arcs, src, dest, flag_bits, num_arcs_per_block;
- int i;
- struct adj_list *arcptr;
- struct bb_info *bb_graph;
-
- /* Read the number of blocks. */
- __read_long (&num_blocks, bbg_file, 4);
-
- /* Create an array of size bb number of bb_info structs. Bzero it. */
- bb_graph = (struct bb_info *) xmalloc (num_blocks
- * sizeof (struct bb_info));
- bzero ((char *) bb_graph, sizeof (struct bb_info) * num_blocks);
-
- bptr->bb_graph = bb_graph;
- bptr->num_blocks = num_blocks;
-
- /* Read and create each arc from the .bbg file. */
- __read_long (&number_arcs, bbg_file, 4);
- for (i = 0; i < num_blocks; i++)
- {
- int j;
-
- __read_long (&num_arcs_per_block, bbg_file, 4);
- for (j = 0; j < num_arcs_per_block; j++)
- {
- if (number_arcs-- < 0)
- abort ();
-
- src = i;
- __read_long (&dest, bbg_file, 4);
-
- arcptr = (struct adj_list *) xmalloc (sizeof (struct adj_list));
- init_arc (arcptr, src, dest, bb_graph);
-
- __read_long (&flag_bits, bbg_file, 4);
- arcptr->on_tree = flag_bits & 0x1;
- arcptr->fake = !! (flag_bits & 0x2);
- arcptr->fall_through = !! (flag_bits & 0x4);
- }
- }
-
- if (number_arcs)
- abort ();
-
- /* Read and ignore the -1 separating the arc list from the arc list of the
- next function. */
- __read_long (&src, bbg_file, 4);
- if (src != -1)
- abort ();
-
- /* Must reverse the order of all succ arcs, to ensure that they match
- the order of the data in the .da file. */
-
- for (i = 0; i < num_blocks; i++)
- if (bb_graph[i].succ)
- bb_graph[i].succ = reverse_arcs (bb_graph[i].succ);
-
- /* For each arc not on the spanning tree, set its execution count from
- the .da file. */
-
- /* The first count in the .da file is the number of times that the function
- was entered. This is the exec_count for block zero. */
-
- /* This duplicates code in branch_prob in profile.c. */
-
- for (i = 0; i < num_blocks; i++)
- for (arcptr = bb_graph[i].succ; arcptr; arcptr = arcptr->succ_next)
- if (! arcptr->on_tree)
- {
- long tmp_count = 0;;
- if (da_file && __read_long (&tmp_count, da_file, 8))
- abort();
-
- arcptr->arc_count = tmp_count;
- arcptr->count_valid = 1;
- bb_graph[i].succ_count--;
- bb_graph[arcptr->target].pred_count--;
- }
-}
-
-static void
-solve_program_flow_graph (bptr)
- struct bb_info_list *bptr;
-{
- int passes, changes, total;
- int i;
- struct adj_list *arcptr;
- struct bb_info *bb_graph;
- int num_blocks;
-
- num_blocks = bptr->num_blocks;
- bb_graph = bptr->bb_graph;
-
- /* For every block in the file,
- - if every exit/entrance arc has a known count, then set the block count
- - if the block count is known, and every exit/entrance arc but one has
- a known execution count, then set the count of the remaining arc
-
- As arc counts are set, decrement the succ/pred count, but don't delete
- the arc, that way we can easily tell when all arcs are known, or only
- one arc is unknown. */
-
- /* The order that the basic blocks are iterated through is important.
- Since the code that finds spanning trees starts with block 0, low numbered
- arcs are put on the spanning tree in preference to high numbered arcs.
- Hence, most instrumented arcs are at the end. Graph solving works much
- faster if we propagate numbers from the end to the start.
-
- This takes an average of slightly more than 3 passes. */
-
- changes = 1;
- passes = 0;
- while (changes)
- {
- passes++;
- changes = 0;
-
- for (i = num_blocks - 1; i >= 0; i--)
- {
- if (! bb_graph[i].count_valid)
- {
- if (bb_graph[i].succ_count == 0)
- {
- total = 0;
- for (arcptr = bb_graph[i].succ; arcptr;
- arcptr = arcptr->succ_next)
- total += arcptr->arc_count;
- bb_graph[i].exec_count = total;
- bb_graph[i].count_valid = 1;
- changes = 1;
- }
- else if (bb_graph[i].pred_count == 0)
- {
- total = 0;
- for (arcptr = bb_graph[i].pred; arcptr;
- arcptr = arcptr->pred_next)
- total += arcptr->arc_count;
- bb_graph[i].exec_count = total;
- bb_graph[i].count_valid = 1;
- changes = 1;
- }
- }
- if (bb_graph[i].count_valid)
- {
- if (bb_graph[i].succ_count == 1)
- {
- total = 0;
- /* One of the counts will be invalid, but it is zero,
- so adding it in also doesn't hurt. */
- for (arcptr = bb_graph[i].succ; arcptr;
- arcptr = arcptr->succ_next)
- total += arcptr->arc_count;
- /* Calculate count for remaining arc by conservation. */
- total = bb_graph[i].exec_count - total;
- /* Search for the invalid arc, and set its count. */
- for (arcptr = bb_graph[i].succ; arcptr;
- arcptr = arcptr->succ_next)
- if (! arcptr->count_valid)
- break;
- if (! arcptr)
- abort ();
- arcptr->count_valid = 1;
- arcptr->arc_count = total;
- bb_graph[i].succ_count--;
-
- bb_graph[arcptr->target].pred_count--;
- changes = 1;
- }
- if (bb_graph[i].pred_count == 1)
- {
- total = 0;
- /* One of the counts will be invalid, but it is zero,
- so adding it in also doesn't hurt. */
- for (arcptr = bb_graph[i].pred; arcptr;
- arcptr = arcptr->pred_next)
- total += arcptr->arc_count;
- /* Calculate count for remaining arc by conservation. */
- total = bb_graph[i].exec_count - total;
- /* Search for the invalid arc, and set its count. */
- for (arcptr = bb_graph[i].pred; arcptr;
- arcptr = arcptr->pred_next)
- if (! arcptr->count_valid)
- break;
- if (! arcptr)
- abort ();
- arcptr->count_valid = 1;
- arcptr->arc_count = total;
- bb_graph[i].pred_count--;
-
- bb_graph[arcptr->source].succ_count--;
- changes = 1;
- }
- }
- }
- }
-
- /* If the graph has been correctly solved, every block will have a
- succ and pred count of zero. */
- for (i = 0; i < num_blocks; i++)
- if (bb_graph[i].succ_count || bb_graph[i].pred_count)
- abort ();
-}
-
-
-static void
-read_files ()
-{
- struct stat buf;
- struct bb_info_list *list_end = 0;
- struct bb_info_list *b_ptr;
- long total;
-
- /* Read and ignore the first word of the .da file, which is the count of
- how many numbers follow. */
- if (da_file && __read_long (&total, da_file, 8))
- abort();
-
- while (! feof (bbg_file))
- {
- b_ptr = (struct bb_info_list *) xmalloc (sizeof (struct bb_info_list));
-
- b_ptr->next = 0;
- if (list_end)
- list_end->next = b_ptr;
- else
- bb_graph_list = b_ptr;
- list_end = b_ptr;
-
- /* Read in the data in the .bbg file and reconstruct the program flow
- graph for one function. */
- create_program_flow_graph (b_ptr);
-
- /* Set the EOF condition if at the end of file. */
- ungetc (getc (bbg_file), bbg_file);
- }
-
- /* Check to make sure the .da file data is valid. */
-
- if (da_file)
- {
- if (feof (da_file))
- fprintf (stderr, ".da file contents exhausted too early\n");
- /* Should be at end of file now. */
- if (__read_long (&total, da_file, 8) == 0)
- fprintf (stderr, ".da file contents not exhausted\n");
- }
-
- /* Calculate all of the basic block execution counts and branch
- taken probabilities. */
-
- for (b_ptr = bb_graph_list; b_ptr; b_ptr = b_ptr->next)
- solve_program_flow_graph (b_ptr);
-
- /* Read in all of the data from the .bb file. This info will be accessed
- sequentially twice. */
- stat (bb_file_name, &buf);
- bb_data_size = buf.st_size / 4;
-
- bb_data = (char *) xmalloc ((unsigned) buf.st_size);
- fread (bb_data, sizeof (char), buf.st_size, bb_file);
-
- fclose (bb_file);
- if (da_file)
- fclose (da_file);
- fclose (bbg_file);
-}
-
-
-/* Scan the data in the .bb file to find all source files referenced,
- and the largest line number mentioned in each one. */
-
-static void
-scan_for_source_files ()
-{
- struct sourcefile *s_ptr = NULL;
- char *ptr;
- int count;
- long line_num;
-
- /* Search the bb_data to find:
- 1) The number of sources files contained herein, and
- 2) The largest line number for each source file. */
-
- ptr = bb_data;
- sources = 0;
- for (count = 0; count < bb_data_size; count++)
- {
- __fetch_long (&line_num, ptr, 4);
- ptr += 4;
- if (line_num == -1)
- {
- /* A source file name follows. Check to see if we already have
- a sourcefile structure for this file. */
- s_ptr = sources;
- while (s_ptr && strcmp (s_ptr->name, ptr))
- s_ptr = s_ptr->next;
-
- if (s_ptr == 0)
- {
- /* No sourcefile structure for this file name exists, create
- a new one, and append it to the front of the sources list. */
- s_ptr = (struct sourcefile *) xmalloc (sizeof(struct sourcefile));
- s_ptr->name = xmalloc (strlen ((char *) ptr) + 1);
- strcpy (s_ptr->name, (char *) ptr);
- s_ptr->maxlineno = 0;
- s_ptr->next = sources;
- sources = s_ptr;
- }
-
- /* Scan past the file name. */
- {
- long delim;
- do {
- count++;
- __fetch_long (&delim, ptr, 4);
- ptr += 4;
- } while (delim != line_num);
- }
- }
- else if (line_num == -2)
- {
- long delim;
-
- /* A function name follows. Ignore it. */
- do {
- count++;
- __fetch_long (&delim, ptr, 4);
- ptr += 4;
- } while (delim != line_num);
- }
- /* There will be a zero before the first file name, in which case s_ptr
- will still be uninitialized. So, only try to set the maxlineno
- field if line_num is non-zero. */
- else if (line_num > 0)
- {
- if (s_ptr->maxlineno <= line_num)
- s_ptr->maxlineno = line_num + 1;
- }
- else if (line_num < 0)
- {
- /* Don't know what this is, but it's garbage. */
- abort();
- }
- }
-}
-
-/* For calculating coverage at the function level. */
-
-static int function_source_lines;
-static int function_source_lines_executed;
-static int function_branches;
-static int function_branches_executed;
-static int function_branches_taken;
-static int function_calls;
-static int function_calls_executed;
-static char *function_name;
-
-/* Calculate the branch taken probabilities for all arcs branches at the
- end of this block. */
-
-static void
-calculate_branch_probs (current_graph, block_num, branch_probs, last_line_num)
- struct bb_info_list *current_graph;
- int block_num;
- struct arcdata **branch_probs;
- int last_line_num;
-{
- int total;
- struct adj_list *arcptr;
- struct arcdata *end_ptr, *a_ptr;
-
- total = current_graph->bb_graph[block_num].exec_count;
- for (arcptr = current_graph->bb_graph[block_num].succ; arcptr;
- arcptr = arcptr->succ_next)
- {
- /* Ignore fall through arcs as they aren't really branches. */
-
- if (arcptr->fall_through)
- continue;
-
- a_ptr = (struct arcdata *) xmalloc (sizeof (struct arcdata));
- if (total == 0)
- a_ptr->prob = -1;
- else
- a_ptr->prob = ((arcptr->arc_count * 100) + (total >> 1)) / total;
- a_ptr->call_insn = arcptr->fake;
-
- if (output_function_summary)
- {
- if (a_ptr->call_insn)
- {
- function_calls++;
- if (a_ptr->prob != -1)
- function_calls_executed++;
- }
- else
- {
- function_branches++;
- if (a_ptr->prob != -1)
- function_branches_executed++;
- if (a_ptr->prob > 0)
- function_branches_taken++;
- }
- }
-
- /* Append the new branch to the end of the list. */
- a_ptr->next = 0;
- if (! branch_probs[last_line_num])
- branch_probs[last_line_num] = a_ptr;
- else
- {
- end_ptr = branch_probs[last_line_num];
- while (end_ptr->next != 0)
- end_ptr = end_ptr->next;
- end_ptr->next = a_ptr;
- }
- }
-}
-
-/* Output summary info for a function. */
-
-static void
-function_summary ()
-{
- if (function_source_lines)
- fprintf (stdout, "%6.2f%% of %d source lines executed in function %s\n",
- (((double) function_source_lines_executed / function_source_lines)
- * 100), function_source_lines, function_name);
- else
- fprintf (stdout, "No executable source lines in function %s\n",
- function_name);
-
- if (output_branch_probs)
- {
- if (function_branches)
- {
- fprintf (stdout, "%6.2f%% of %d branches executed in function %s\n",
- (((double) function_branches_executed / function_branches)
- * 100), function_branches, function_name);
- fprintf (stdout,
- "%6.2f%% of %d branches taken at least once in function %s\n",
- (((double) function_branches_taken / function_branches)
- * 100), function_branches, function_name);
- }
- else
- fprintf (stdout, "No branches in function %s\n", function_name);
- if (function_calls)
- fprintf (stdout, "%6.2f%% of %d calls executed in function %s\n",
- (((double) function_calls_executed / function_calls)
- * 100), function_calls, function_name);
- else
- fprintf (stdout, "No calls in function %s\n", function_name);
- }
-}
-
-/* Calculate line execution counts, and output the data to a .tcov file. */
-
-static void
-output_data ()
-{
- /* When scanning data, this is true only if the data applies to the
- current source file. */
- int this_file;
- /* An array indexed by line number which indicates how many times that line
- was executed. */
- long *line_counts;
- /* An array indexed by line number which indicates whether the line was
- present in the bb file (i.e. whether it had code associate with it).
- Lines never executed are those which both exist, and have zero execution
- counts. */
- char *line_exists;
- /* An array indexed by line number, which contains a list of branch
- probabilities, one for each branch on that line. */
- struct arcdata **branch_probs = NULL;
- struct sourcefile *s_ptr;
- char *source_file_name;
- FILE *source_file;
- struct bb_info_list *current_graph;
- int count;
- char *cptr;
- long block_num;
- long line_num;
- long last_line_num = 0;
- int i;
- struct arcdata *a_ptr;
- /* Buffer used for reading in lines from the source file. */
- char string[STRING_SIZE];
- /* For calculating coverage at the file level. */
- int total_source_lines;
- int total_source_lines_executed;
- int total_branches;
- int total_branches_executed;
- int total_branches_taken;
- int total_calls;
- int total_calls_executed;
-
- /* Now, for each source file, allocate an array big enough to hold a count
- for each line. Scan through the bb_data, and when the file name matches
- the current file name, then for each following line number, increment
- the line number execution count indicated by the execution count of
- the appropriate basic block. */
-
- for (s_ptr = sources; s_ptr; s_ptr = s_ptr->next)
- {
- /* If this is a relative file name, and an object directory has been
- specified, then make it relative to the object directory name. */
- if (*s_ptr->name != '/' && object_directory != 0
- && *object_directory != '\0')
- {
- int objdir_count = strlen (object_directory);
- source_file_name = xmalloc (objdir_count + strlen (s_ptr->name) + 2);
- strcpy (source_file_name, object_directory);
- if (object_directory[objdir_count - 1] != '/')
- source_file_name[objdir_count++] = '/';
- strcpy (source_file_name + objdir_count, s_ptr->name);
- }
- else
- source_file_name = s_ptr->name;
-
- line_counts = (long *) xmalloc (sizeof (long) * s_ptr->maxlineno);
- bzero ((char *) line_counts, sizeof (long) * s_ptr->maxlineno);
- line_exists = xmalloc (s_ptr->maxlineno);
- bzero (line_exists, s_ptr->maxlineno);
- if (output_branch_probs)
- {
- branch_probs = (struct arcdata **) xmalloc (sizeof (struct arcdata *)
- * s_ptr->maxlineno);
- bzero ((char *) branch_probs,
- sizeof (struct arcdata *) * s_ptr->maxlineno);
- }
-
- /* There will be a zero at the beginning of the bb info, before the
- first list of line numbers, so must initialize block_num to 0. */
- block_num = 0;
- this_file = 0;
- current_graph = 0;
- {
- /* Pointer into the bb_data, incremented while scanning the data. */
- char *ptr = bb_data;
- for (count = 0; count < bb_data_size; count++)
- {
- long delim;
-
- __fetch_long (&line_num, ptr, 4);
- ptr += 4;
- if (line_num == -1)
- {
- /* Marks the beginning of a file name. Check to see whether
- this is the filename we are currently collecting data for. */
-
- if (strcmp (s_ptr->name, ptr))
- this_file = 0;
- else
- this_file = 1;
-
- /* Scan past the file name. */
- do {
- count++;
- __fetch_long (&delim, ptr, 4);
- ptr += 4;
- } while (delim != line_num);
- }
- else if (line_num == -2)
- {
- /* Marks the start of a new function. Advance to the next
- program flow graph. */
-
- if (! current_graph)
- current_graph = bb_graph_list;
- else
- {
- if (block_num == current_graph->num_blocks - 1)
- /* Last block falls through to exit. */
- ;
- else if (block_num == current_graph->num_blocks - 2)
- {
- if (output_branch_probs && this_file)
- calculate_branch_probs (current_graph, block_num,
- branch_probs, last_line_num);
- }
- else
- {
- fprintf (stderr,
- "didn't use all bb entries of graph, function %s\n",
- function_name);
- fprintf (stderr, "block_num = %ld, num_blocks = %d\n",
- block_num, current_graph->num_blocks);
- }
-
- current_graph = current_graph->next;
- block_num = 0;
-
- if (output_function_summary && this_file)
- function_summary ();
- }
-
- if (output_function_summary)
- {
- function_source_lines = 0;
- function_source_lines_executed = 0;
- function_branches = 0;
- function_branches_executed = 0;
- function_branches_taken = 0;
- function_calls = 0;
- function_calls_executed = 0;
- }
-
- /* Save the function name for later use. */
- function_name = ptr;
-
- /* Scan past the file name. */
- do {
- count++;
- __fetch_long (&delim, ptr, 4);
- ptr += 4;
- } while (delim != line_num);
- }
- else if (line_num == 0)
- {
- /* Marks the end of a block. */
-
- if (block_num >= current_graph->num_blocks)
- {
- fprintf (stderr, "ERROR: too many basic blocks in .bb file %s\n",
- function_name);
- abort ();
- }
-
- if (output_branch_probs && this_file)
- calculate_branch_probs (current_graph, block_num,
- branch_probs, last_line_num);
-
- block_num++;
- }
- else if (this_file)
- {
- if (output_function_summary)
- {
- if (line_exists[line_num] == 0)
- function_source_lines++;
- if (line_counts[line_num] == 0
- && current_graph->bb_graph[block_num].exec_count != 0)
- function_source_lines_executed++;
- }
-
- /* Accumulate execution data for this line number. */
-
- line_counts[line_num]
- += current_graph->bb_graph[block_num].exec_count;
- line_exists[line_num] = 1;
- last_line_num = line_num;
- }
- }
- }
-
- if (output_function_summary && this_file)
- function_summary ();
-
- /* Calculate summary test coverage statistics. */
-
- total_source_lines = 0;
- total_source_lines_executed = 0;
- total_branches = 0;
- total_branches_executed = 0;
- total_branches_taken = 0;
- total_calls = 0;
- total_calls_executed = 0;
-
- for (count = 1; count < s_ptr->maxlineno; count++)
- {
- if (line_exists[count])
- {
- total_source_lines++;
- if (line_counts[count])
- total_source_lines_executed++;
- }
- if (output_branch_probs)
- {
- for (a_ptr = branch_probs[count]; a_ptr; a_ptr = a_ptr->next)
- {
- if (a_ptr->call_insn)
- {
- total_calls++;
- if (a_ptr->prob != -1)
- total_calls_executed++;
- }
- else
- {
- total_branches++;
- if (a_ptr->prob != -1)
- total_branches_executed++;
- if (a_ptr->prob > 0)
- total_branches_taken++;
- }
- }
- }
- }
-
- if (total_source_lines)
- fprintf (stdout,
- "%6.2f%% of %d source lines executed in file %s\n",
- (((double) total_source_lines_executed / total_source_lines)
- * 100), total_source_lines, source_file_name);
- else
- fprintf (stdout, "No executable source lines in file %s\n",
- source_file_name);
-
- if (output_branch_probs)
- {
- if (total_branches)
- {
- fprintf (stdout, "%6.2f%% of %d branches executed in file %s\n",
- (((double) total_branches_executed / total_branches)
- * 100), total_branches, source_file_name);
- fprintf (stdout,
- "%6.2f%% of %d branches taken at least once in file %s\n",
- (((double) total_branches_taken / total_branches)
- * 100), total_branches, source_file_name);
- }
- else
- fprintf (stdout, "No branches in file %s\n", source_file_name);
- if (total_calls)
- fprintf (stdout, "%6.2f%% of %d calls executed in file %s\n",
- (((double) total_calls_executed / total_calls)
- * 100), total_calls, source_file_name);
- else
- fprintf (stdout, "No calls in file %s\n", source_file_name);
- }
-
- if (output_gcov_file)
- {
- /* Now the statistics are ready. Read in the source file one line
- at a time, and output that line to the gcov file preceded by
- its execution count if non zero. */
-
- source_file = fopen (source_file_name, "r");
- if (source_file == NULL)
- {
- fprintf (stderr, "Could not open source file %s.\n",
- source_file_name);
- free (line_counts);
- free (line_exists);
- continue;
- }
-
- count = strlen (source_file_name);
- cptr = rindex (s_ptr->name, '/');
- if (cptr)
- cptr = cptr + 1;
- else
- cptr = s_ptr->name;
- if (output_long_names && strcmp (cptr, input_file_name))
- {
- gcov_file_name = xmalloc (count + 7 + strlen (input_file_name));
-
- cptr = rindex (input_file_name, '/');
- if (cptr)
- strcpy (gcov_file_name, cptr + 1);
- else
- strcpy (gcov_file_name, input_file_name);
-
- strcat (gcov_file_name, ".");
-
- cptr = rindex (source_file_name, '/');
- if (cptr)
- strcat (gcov_file_name, cptr + 1);
- else
- strcat (gcov_file_name, source_file_name);
- }
- else
- {
- gcov_file_name = xmalloc (count + 6);
- cptr = rindex (source_file_name, '/');
- if (cptr)
- strcpy (gcov_file_name, cptr + 1);
- else
- strcpy (gcov_file_name, source_file_name);
- }
-
- /* Don't strip off the ending for compatibility with tcov, since
- this results in confusion if there is more than one file with
- the same basename, e.g. tmp.c and tmp.h. */
- strcat (gcov_file_name, ".gcov");
-
- gcov_file = fopen (gcov_file_name, "w");
-
- if (gcov_file == NULL)
- {
- fprintf (stderr, "Could not open output file %s.\n",
- gcov_file_name);
- fclose (source_file);
- free (line_counts);
- free (line_exists);
- continue;
- }
-
- fprintf (stdout, "Creating %s.\n", gcov_file_name);
-
- for (count = 1; count < s_ptr->maxlineno; count++)
- {
- char *retval;
- int len;
-
- retval = fgets (string, STRING_SIZE, source_file);
-
- /* For lines which don't exist in the .bb file, print nothing
- before the source line. For lines which exist but were never
- executed, print ###### before the source line. Otherwise,
- print the execution count before the source line. */
- /* There are 16 spaces of indentation added before the source
- line so that tabs won't be messed up. */
- if (line_exists[count])
- {
- if (line_counts[count])
- fprintf (gcov_file, "%12ld %s", line_counts[count],
- string);
- else
- fprintf (gcov_file, " ###### %s", string);
- }
- else
- fprintf (gcov_file, "\t\t%s", string);
-
- /* In case the source file line is larger than our buffer, keep
- reading and outputting lines until we get a newline. */
- len = strlen (string);
- while ((len == 0 || string[strlen (string) - 1] != '\n')
- && retval != NULL)
- {
- retval = fgets (string, STRING_SIZE, source_file);
- fputs (string, gcov_file);
- }
-
- if (output_branch_probs)
- {
- for (i = 0, a_ptr = branch_probs[count]; a_ptr;
- a_ptr = a_ptr->next, i++)
- {
- if (a_ptr->call_insn)
- {
- if (a_ptr->prob == -1)
- fprintf (gcov_file, "call %d never executed\n", i);
- else
- fprintf (gcov_file,
- "call %d returns = %d%%\n",
- i, 100 - a_ptr->prob);
- }
- else
- {
- if (a_ptr->prob == -1)
- fprintf (gcov_file, "branch %d never executed\n",
- i);
- else
- fprintf (gcov_file, "branch %d taken = %d%%\n", i,
- a_ptr->prob);
- }
- }
- }
-
- /* Gracefully handle errors while reading the source file. */
- if (retval == NULL)
- {
- fprintf (stderr,
- "Unexpected EOF while reading source file %s.\n",
- source_file_name);
- break;
- }
- }
-
- /* Handle all remaining source lines. There may be lines
- after the last line of code. */
-
- {
- char *retval = fgets (string, STRING_SIZE, source_file);
- while (retval != NULL)
- {
- int len;
-
- fprintf (gcov_file, "\t\t%s", string);
-
- /* In case the source file line is larger than our buffer, keep
- reading and outputting lines until we get a newline. */
- len = strlen (string);
- while ((len == 0 || string[strlen (string) - 1] != '\n')
- && retval != NULL)
- {
- retval = fgets (string, STRING_SIZE, source_file);
- fputs (string, gcov_file);
- }
-
- retval = fgets (string, STRING_SIZE, source_file);
- }
- }
-
- fclose (source_file);
- fclose (gcov_file);
- }
-
- free (line_counts);
- free (line_exists);
- }
-}
diff --git a/gcc/gcov.texi b/gcc/gcov.texi
deleted file mode 100755
index 9c6d77d..0000000
--- a/gcc/gcov.texi
+++ /dev/null
@@ -1,344 +0,0 @@
-@c Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-@c This is part of the GCC manual.
-@c For copying conditions, see the file gcc.texi.
-
-@node Gcov
-@chapter @code{gcov}: a Test Coverage Program
-
-@code{gcov} is a tool you can use in conjunction with @sc{gnu} CC to
-test code coverage in your programs.
-
-This chapter describes version 1.5 of @code{gcov}.
-
-@menu
-* Gcov Intro:: Introduction to gcov.
-* Invoking Gcov:: How to use gcov.
-* Gcov and Optimization:: Using gcov with GCC optimization.
-* Gcov Data Files:: The files used by gcov.
-@end menu
-
-@node Gcov Intro
-@section Introduction to @code{gcov}
-
-@code{gcov} is a test coverage program. Use it in concert with @sc{gnu}
-CC to analyze your programs to help create more efficient, faster
-running code. You can use @code{gcov} as a profiling tool to help
-discover where your optimization efforts will best affect your code. You
-can also use @code{gcov} along with the other profiling tool,
-@code{gprof}, to assess which parts of your code use the greatest amount
-of computing time.
-
-Profiling tools help you analyze your code's performance. Using a
-profiler such as @code{gcov} or @code{gprof}, you can find out some
-basic performance statistics, such as:
-
-@itemize @bullet
-@item
-how often each line of code executes
-
-@item
-what lines of code are actually executed
-
-@item
-how much computing time each section of code uses
-@end itemize
-
-Once you know these things about how your code works when compiled, you
-can look at each module to see which modules should be optimized.
-@code{gcov} helps you determine where to work on optimization.
-
-Software developers also use coverage testing in concert with
-testsuites, to make sure software is actually good enough for a release.
-Testsuites can verify that a program works as expected; a coverage
-program tests to see how much of the program is exercised by the
-testsuite. Developers can then determine what kinds of test cases need
-to be added to the testsuites to create both better testing and a better
-final product.
-
-You should compile your code without optimization if you plan to use
-@code{gcov} because the optimization, by combining some lines of code
-into one function, may not give you as much information as you need to
-look for `hot spots' where the code is using a great deal of computer
-time. Likewise, because @code{gcov} accumulates statistics by line (at
-the lowest resolution), it works best with a programming style that
-places only one statement on each line. If you use complicated macros
-that expand to loops or to other control structures, the statistics are
-less helpful---they only report on the line where the macro call
-appears. If your complex macros behave like functions, you can replace
-them with inline functions to solve this problem.
-
-@code{gcov} creates a logfile called @file{@var{sourcefile}.gcov} which
-indicates how many times each line of a source file @file{@var{sourcefile}.c}
-has executed. You can use these logfiles along with @code{gprof} to aid
-in fine-tuning the performance of your programs. @code{gprof} gives
-timing information you can use along with the information you get from
-@code{gcov}.
-
-@code{gcov} works only on code compiled with @sc{gnu} CC. It is not
-compatible with any other profiling or test coverage mechanism.
-
-@node Invoking Gcov
-@section Invoking gcov
-
-@smallexample
-gcov [-b] [-v] [-n] [-l] [-f] [-o directory] @var{sourcefile}
-@end smallexample
-
-@table @code
-@item -b
-Write branch frequencies to the output file, and write branch summary
-info to the standard output. This option allows you to see how often
-each branch in your program was taken.
-
-@item -v
-Display the @code{gcov} version number (on the standard error stream).
-
-@item -n
-Do not create the @code{gcov} output file.
-
-@item -l
-Create long file names for included source files. For example, if the
-header file @samp{x.h} contains code, and was included in the file
-@samp{a.c}, then running @code{gcov} on the file @samp{a.c} will produce
-an output file called @samp{a.c.x.h.gcov} instead of @samp{x.h.gcov}.
-This can be useful if @samp{x.h} is included in multiple source files.
-
-@item -f
-Output summaries for each function in addition to the file level summary.
-
-@item -o
-The directory where the object files live. Gcov will search for @code{.bb},
-@code{.bbg}, and @code{.da} files in this directory.
-@end table
-
-@need 3000
-When using @code{gcov}, you must first compile your program with two
-special @sc{gnu} CC options: @samp{-fprofile-arcs -ftest-coverage}.
-This tells the compiler to generate additional information needed by
-gcov (basically a flow graph of the program) and also includes
-additional code in the object files for generating the extra profiling
-information needed by gcov. These additional files are placed in the
-directory where the source code is located.
-
-Running the program will cause profile output to be generated. For each
-source file compiled with -fprofile-arcs, an accompanying @code{.da}
-file will be placed in the source directory.
-
-Running @code{gcov} with your program's source file names as arguments
-will now produce a listing of the code along with frequency of execution
-for each line. For example, if your program is called @samp{tmp.c}, this
-is what you see when you use the basic @code{gcov} facility:
-
-@smallexample
-$ gcc -fprofile-arcs -ftest-coverage tmp.c
-$ a.out
-$ gcov tmp.c
- 87.50% of 8 source lines executed in file tmp.c
-Creating tmp.c.gcov.
-@end smallexample
-
-The file @file{tmp.c.gcov} contains output from @code{gcov}.
-Here is a sample:
-
-@smallexample
- main()
- @{
- 1 int i, total;
-
- 1 total = 0;
-
- 11 for (i = 0; i < 10; i++)
- 10 total += i;
-
- 1 if (total != 45)
- ###### printf ("Failure\n");
- else
- 1 printf ("Success\n");
- 1 @}
-@end smallexample
-
-@need 450
-When you use the @samp{-b} option, your output looks like this:
-
-@smallexample
-$ gcov -b tmp.c
- 87.50% of 8 source lines executed in file tmp.c
- 80.00% of 5 branches executed in file tmp.c
- 80.00% of 5 branches taken at least once in file tmp.c
- 50.00% of 2 calls executed in file tmp.c
-Creating tmp.c.gcov.
-@end smallexample
-
-Here is a sample of a resulting @file{tmp.c.gcov} file:
-
-@smallexample
- main()
- @{
- 1 int i, total;
-
- 1 total = 0;
-
- 11 for (i = 0; i < 10; i++)
-branch 0 taken = 91%
-branch 1 taken = 100%
-branch 2 taken = 100%
- 10 total += i;
-
- 1 if (total != 45)
-branch 0 taken = 100%
- ###### printf ("Failure\n");
-call 0 never executed
-branch 1 never executed
- else
- 1 printf ("Success\n");
-call 0 returns = 100%
- 1 @}
-@end smallexample
-
-For each basic block, a line is printed after the last line of the basic
-block describing the branch or call that ends the basic block. There can
-be multiple branches and calls listed for a single source line if there
-are multiple basic blocks that end on that line. In this case, the
-branches and calls are each given a number. There is no simple way to map
-these branches and calls back to source constructs. In general, though,
-the lowest numbered branch or call will correspond to the leftmost construct
-on the source line.
-
-For a branch, if it was executed at least once, then a percentage
-indicating the number of times the branch was taken divided by the
-number of times the branch was executed will be printed. Otherwise, the
-message ``never executed'' is printed.
-
-For a call, if it was executed at least once, then a percentage
-indicating the number of times the call returned divided by the number
-of times the call was executed will be printed. This will usually be
-100%, but may be less for functions call @code{exit} or @code{longjmp},
-and thus may not return everytime they are called.
-
-The execution counts are cumulative. If the example program were
-executed again without removing the @code{.da} file, the count for the
-number of times each line in the source was executed would be added to
-the results of the previous run(s). This is potentially useful in
-several ways. For example, it could be used to accumulate data over a
-number of program runs as part of a test verification suite, or to
-provide more accurate long-term information over a large number of
-program runs.
-
-The data in the @code{.da} files is saved immediately before the program
-exits. For each source file compiled with -fprofile-arcs, the profiling
-code first attempts to read in an existing @code{.da} file; if the file
-doesn't match the executable (differing number of basic block counts) it
-will ignore the contents of the file. It then adds in the new execution
-counts and finally writes the data to the file.
-
-@node Gcov and Optimization
-@section Using @code{gcov} with GCC Optimization
-
-If you plan to use @code{gcov} to help optimize your code, you must
-first compile your program with two special @sc{gnu} CC options:
-@samp{-fprofile-arcs -ftest-coverage}. Aside from that, you can use any
-other @sc{gnu} CC options; but if you want to prove that every single line
-in your program was executed, you should not compile with optimization
-at the same time. On some machines the optimizer can eliminate some
-simple code lines by combining them with other lines. For example, code
-like this:
-
-@smallexample
-if (a != b)
- c = 1;
-else
- c = 0;
-@end smallexample
-
-@noindent
-can be compiled into one instruction on some machines. In this case,
-there is no way for @code{gcov} to calculate separate execution counts
-for each line because there isn't separate code for each line. Hence
-the @code{gcov} output looks like this if you compiled the program with
-optimization:
-
-@smallexample
- 100 if (a != b)
- 100 c = 1;
- 100 else
- 100 c = 0;
-@end smallexample
-
-The output shows that this block of code, combined by optimization,
-executed 100 times. In one sense this result is correct, because there
-was only one instruction representing all four of these lines. However,
-the output does not indicate how many times the result was 0 and how
-many times the result was 1.
-
-@node Gcov Data Files
-@section Brief description of @code{gcov} data files
-
-@code{gcov} uses three files for doing profiling. The names of these
-files are derived from the original @emph{source} file by substituting
-the file suffix with either @code{.bb}, @code{.bbg}, or @code{.da}. All
-of these files are placed in the same directory as the source file, and
-contain data stored in a platform-independent method.
-
-The @code{.bb} and @code{.bbg} files are generated when the source file
-is compiled with the @sc{gnu} CC @samp{-ftest-coverage} option. The
-@code{.bb} file contains a list of source files (including headers),
-functions within those files, and line numbers corresponding to each
-basic block in the source file.
-
-The @code{.bb} file format consists of several lists of 4-byte integers
-which correspond to the line numbers of each basic block in the
-file. Each list is terminated by a line number of 0. A line number of -1
-is used to designate that the source file name (padded to a 4-byte
-boundary and followed by another -1) follows. In addition, a line number
-of -2 is used to designate that the name of a function (also padded to a
-4-byte boundary and followed by a -2) follows.
-
-The @code{.bbg} file is used to reconstruct the program flow graph for
-the source file. It contains a list of the program flow arcs (possible
-branches taken from one basic block to another) for each function which,
-in combination with the @code{.bb} file, enables gcov to reconstruct the
-program flow.
-
-In the @code{.bbg} file, the format is:
-@smallexample
- number of basic blocks for function #0 (4-byte number)
- total number of arcs for function #0 (4-byte number)
- count of arcs in basic block #0 (4-byte number)
- destination basic block of arc #0 (4-byte number)
- flag bits (4-byte number)
- destination basic block of arc #1 (4-byte number)
- flag bits (4-byte number)
- ...
- destination basic block of arc #N (4-byte number)
- flag bits (4-byte number)
- count of arcs in basic block #1 (4-byte number)
- destination basic block of arc #0 (4-byte number)
- flag bits (4-byte number)
- ...
-@end smallexample
-
-A -1 (stored as a 4-byte number) is used to separate each function's
-list of basic blocks, and to verify that the file has been read
-correctly.
-
-The @code{.da} file is generated when a program containing object files
-built with the @sc{gnu} CC @samp{-fprofile-arcs} option is executed. A
-separate @code{.da} file is created for each source file compiled with
-this option, and the name of the @code{.da} file is stored as an
-absolute pathname in the resulting object file. This path name is
-derived from the source file name by substituting a @code{.da} suffix.
-
-The format of the @code{.da} file is fairly simple. The first 8-byte
-number is the number of counts in the file, followed by the counts
-(stored as 8-byte numbers). Each count corresponds to the number of
-times each arc in the program is executed. The counts are cumulative;
-each time the program is executed, it attemps to combine the existing
-@code{.da} files with the new counts for this invocation of the
-program. It ignores the contents of any @code{.da} files whose number of
-arcs doesn't correspond to the current program, and merely overwrites
-them instead.
-
-All three of these files use the functions in @code{gcov-io.h} to store
-integers; the functions in this header provide a machine-independent
-mechanism for storing and retrieving data from a stream.
-
diff --git a/gcc/proto-man b/gcc/proto-man
deleted file mode 100755
index bd1a3e2..0000000
--- a/gcc/proto-man
+++ /dev/null
@@ -1,904 +0,0 @@
-#ifndef UNPRO
-#define THISPROG PROTOIZE
-#define thisprog protoize
-#define Thisprog Protoize
-#define otherprog unprotoize
-#define from_convention varargs
-#define to_convention stdarg
-#else
-#define THISPROG UNPROTOIZE
-#define thisprog unprotoize
-#define Thisprog Unprotoize
-#define otherprog protoize
-#define from_convention stdarg
-#define to_convention varargs
-#endif
-.\" Man page file for the thisprog program.
-.\" This is badly out of date, especially concerning
-.\" the way of deciding which files to convert.
-.\" Really all this information should be updated and put in gcc.texinfo.
-.\"
-.\" Written by Ron Guilmette (rfg@mcc.com).
-.\"
-.\" Copyright (C) 1989, 1990 Free Software Foundation, Inc.
-.\"
-.\" This file is part of GNU CC.
-.\"
-.\" GNU CC is free software; you can redistribute it and/or modify
-.\" it under the terms of the GNU General Public License as published by
-.\" the Free Software Foundation; either version 1, or (at your option)
-.\" any later version.
-.\"
-.\" GNU CC 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 GNU CC; see the file COPYING. If not, write to
-.\" the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-.\"
-.TH THISPROG 1 "21 January 1990" ""
-.SH NAME
-#ifndef UNPRO
-thisprog \- convert K&R C source code to ANSI C prototype format
-#else
-thisprog \- convert ANSI C source code to K&R C (unprototyped) format
-#endif
-.SH SYNOPSIS
-.B thisprog
-[
-#ifndef UNPRO
-.B -VqfnkNlgC
-] [
-.B -B
-.I <dir>
-#else
-.B -VqfnkN
-] [
-.B -i
-.I <str>
-#endif
-] [
-.B -c
-.I <cc opts>
-] [
-.I file\c
-\&... ]
-.SH DESCRIPTION
-.fi
-.ad b
-.I Thisprog
-aids in the conversion of
-#ifndef UNPRO
-K&R C source code files to ANSI C source code files with function prototypes.
-This conversion is useful for eliciting more complete
-interface checking from ANSI C compilers, or as
-a preliminary step in the conversion of C programs to C++.
-#else
-ANSI C source code files to K&R C source code files without function prototypes
-.
-This conversion is useful for porting ANSI C programs to
-machines for which no ANSI C compiler is available.
-#endif
-.PP
-.I Thisprog
-is designed to be used in conjunction
-with the GNU C compiler. The GNU C compiler does preliminary
-.I "information gathering"
-about functions by analyzing the files to be converted.
-The GNU C compiler may be invoked automatically as a result of
-running
-.I thisprog
-so it is important to have it properly installed before attempting
-to convert source files via
-.I thisprog.
-#ifndef UNPRO
-.PP
-.I Thisprog
-actually has two primary functions. First, It converts
-existing function declarations and definitions
-to prototype form.
-Second, for cases in which functions
-are called before they have been declared
-(i.e. points of
-.I implicit
-function declarations),
-.I thisprog
-can be instructed to
-insert new prototype style function declarations
-into the source code.
-For implicit function declarations,
-.I thisprog
-can either
-insert the new (explicit) function declaration
-at the very beginning of the block which contains
-the implicit declaration, or (at the user\'s option)
-these explicit declarations can be inserted near the tops of the
-source files where the implicit declarations occurred.
-The insertion of these new (explicit) function
-declarations (by thisprog) assures that
-.B all
-function calls in your source files will be
-checked for the correct
-number and types of parameters
-during subsequent compilations.
-#endif
-.PP
-.I Thisprog
-supports the conversion of both large and small systems of C source
-code to
-#ifndef UNPRO
-prototype
-#else
-unprototyped
-#endif
-form.
-.I Thisprog
-can perform the conversion of an
-entire program in one (batch) step.
-#ifndef UNPRO
-.PP
-.I Thisprog
-is able to convert entire systems of C source code because
-it knows how to use information (gleaned by the C compiler) from one
-source file to convert
-function definitions and declarations in that same source file or in
-other source files (as required).
-#endif
-.PP
-Each conversion of a system of source code to
-#ifndef UNPRO
-prototyped
-#else
-unprototyped
-#endif
-format consists of two major steps. First, there is an
-.I "information gathering"
-step. In this step,
-all of the source files that make up a given
-executable program are recompiled using the GNU C compiler and using the
-.B -fgen-aux-info
-option.
-These recompilations will be performed automatically by
-.I thisprog
-on an
-.I as needed
-basis.
-.PP
-As individual compilation steps are performed, you may notice
-that a side-effect of these compilations is to create files with a
-.B .X
-suffix in the same directory with the original
-.I base
-source files being compiled.
-During compilation with
-.B -fgen-aux-info,
-one such
-.B .X
-file is created for
-each
-.I base
-source file compiled. These files contain
-information about function definitions and declarations and
-additional coded information which can be used by
-.I thisprog
-to convert your source code
-automatically to
-#ifndef UNPRO
-prototyped
-#else
-unprototyped
-#endif
-format.
-.PP
-After a full set of
-.B .X
-files corresponding to all of the
-.B .c
-(i.e.
-.I base
-source) files for an individual
-program
-have been created,
-.I thisprog
-performs the actual conversion step.
-.PP
-Execution of the
-.I thisprog
-program causes your original source files to be converted such that both
-their function declarations and their function definitions are in
-#ifndef UNPRO
-prototyped
-#else
-unprototyped
-#endif
-format.
-After the conversion of your system, you will be
-left with a set of similar (but converted) source files
-with the same names as your original files.
-.PP
-Before it writes each converted file back to disk,
-.I thisprog
-attempts to rename the original file, giving it a
-.B .save
-suffix.
-It then creates a new output file
-with the same name that the original file had.
-This ensures that if there were any hard links to the original
-input files, these will not be altered by the conversion process.
-.PP
-WARNING! If for any given original file, a save file already exists,
-.I thisprog
-will assume that the existing save file contains a backup of the
-original file as it existed before any conversions were applied.
-Thus, if there is an existing save file,
-.I thisprog
-will not overwrite this existing save file, and no new backup of
-that particular original file will be made during that run of
-.I thisprog.
-.PP
-An important safety feature of
-.I thisprog
-is that it normally only tries to convert files for which you have both
-read and write permissions. Also,
-.I thisprog
-will normally only convert files located in directories that you
-have both search and write permissions for.
-.PP
-Another safety feature is that
-.I thisprog
-will not normally convert files which
-are located in
-.I system
-include directories.
-A
-.I system
-include directory is defined by
-.I thisprog
-as either
-.B /usr/include
-(or any of its subdirectories)
-or a directory whose full absolute pathname includes
-either
-.B gcc-include
-or
-.B g++-include.
-.PP
-Most of the above safety features can be overridden by using the
-.B \-f
-(force) option (see below),
-but even when
-.B \-f
-is used, you cannot force the conversion of files for which you
-do not at least have read permission, or files in directories that you do not
-at least have write permission for.
-.PP
-Note that
-.I thisprog
-will make no attempt to convert definitions
-#ifndef UNPRO
-or declarations
-#endif
-of functions which accept a variable number of arguments
-and which are written using the
-.I from_convention
-conventions.
-All such function definitions
-#ifndef UNPRO
-and declarations
-#endif
-must be converted manually to the
-.I to_convention
-conventions.
-Warnings are automatically issued for
-.I from_convention
-function definitions
-#ifndef UNPRO
-and declarations
-#endif
-which are left unconverted by
-.I thisprog.
-.SH OPTIONS
-.I Thisprog
-recognizes the following options:
-.TP
-.B \-V
-Version number. Causes the current version number to be
-printed on stderr.
-.TP
-.B \-q
-Quiet mode.
-Normally,
-.I thisprog
-may issue many verbose warnings concerning noteworthy conditions.
-These warnings can often be helpful to the overall conversion effort.
-Users who prefer not to see such messages can use the
-.B \-q
-option which suppresses most such warnings.
-.TP
-.B \-f
-Force mode.
-Use of this option overrides the normal safety
-features of
-.I thisprog.
-It allows for attempts to convert system include files,
-and files not writable by you.
-These conversions are still subject to all normal
-file protections provided by the operating system.
-This option should be used only with extreme caution.
-It can be especially dangerous to use this option when logged on as
-.I root.
-Note that when this option is used, you are allowed to convert even files
-that you do not have write access to. So long as you have write access
-to the containing directory, conversion may occur.
-.TP
-.B \-n
-No convert mode. Do not actually perform any conversions on base source files
-or on include files. Rather, simply do all steps leading up to conversion
-and then print a list (to stdout) of the names of all files which would
-actually be modified if the conversions were actually performed. This option
-may be useful to you if you are converting a system of source files
-that you are unfamiliar with. In such cases, you may need to verify
-ahead of time that include files which belong to other people or to
-other projects will not be modified by running
-.I thisprog.
-Use of this option also implicitly enables
-.I keep mode.
-(See the
-.B \-k
-option below.)
-.TP
-.B \-k
-Keep mode. Normally,
-.I thisprog
-reads the information in the
-.B .X
-files created by the GNU C compiler, and then
-immediately deletes these files (since they will no longer be
-valid or useful after conversion). When the
-.B \-k
-option is used however, the
-.B .X
-files are not deleted during conversion.
-.TP
-.B -N
-No save mode. When this option is used, no attempt is made to
-make backups of original files (by renaming them such that they have
-an added
-.B .save
-suffix).
-Use this option with extreme caution, and
-only when you have previously backed up
-all of the files that might be converted
-by running
-.I thisprog.
-(See the
-.B -n
-option above.)
-.TP
-.B \-c <cc opts>
-Specify compile options. The
-.B \-c
-option can be used as a means of passing on important compilation
-options to the C compiler. It may often be necessary to use this option
-to pass command line preprocessor definitions on to the compilation step.
-Note that The compile options must be given as a single argument to
-.I thisprog.
-If you have more than one
-compilation option, you will have to quote the entire set of
-compilation options in order to keep the shell from treating
-them as separate arguments to
-.I thisprog.
-Note also that certain options are automatically suppressed by
-.I thisprog
-and cannot be passed on to the compiler (i.e.
-.B "-g, -O, -c, -S,"
-and
-.B "-o"
-are suppressed).
-#ifndef UNPRO
-.TP
-.B \-C
-C++ conversion mode.
-Normally,
-.I thisprog
-writes its (converted) output files back to files of the same names
-as the original (unconverted) input files.
-In C++ conversion mode,
-after each output file is written,
-a check is made to see if the given output file has a
-.B .c
-suffix. If it does, then the given file is renamed, and its suffix
-is changed to
-.B .C.
-This makes the output file
-acceptable as a C++ input file for either the GNU C++ compiler or
-for the Cfront translator.
-.TP
-.B \-l
-Add explicit local declarations. This option causes
-.I thisprog
-to insert
-explicit declarations for functions that were only implicitly declared
-in the original source code. When the
-.B \-l
-option is used, lists of additional new
-explicit function declarations are inserted near the
-starts of blocks where explicit function declarations took place.
-(See also the
-.B \-g
-option below.)
-.TP
-.B \-g
-Add explicit global declarations. This option causes
-.I thisprog
-to insert
-explicit declarations for functions that were only implicitly declared
-in your original source code. When the
-.B \-g
-option is used, a list of additional new
-explicit function declarations is inserted just before the
-first function definition in each individual source file that previously
-contained implicit declarations.
-(See also the
-.B \-l
-option above.)
-.TP
-.B \-B <dir>
-Alternate library directory option. Use this option to specify that
-.I thisprog
-should attempt to find the file
-.B SYSCALLS.c.X
-in the alternate directory indicated in the option.
-#else
-.TP
-.B \-i <str>
-Indent string option.
-This option can be used to specify a string to use when indenting
-lines containing declarations for formal parameter variables.
-The default indentation string for such lines is a sequence of five spaces
-(i.e.\ GNU style indentation) but you may use this option to specify
-any other string that you like (e.g.\ a tab character).
-Note that
-the shell has its own interpretations for blanks and tabs, so you
-will generally have to quotes the argument given in the
-.B -i
-option.
-#endif
-.SH EXAMPLES
-Assume that you have
-a directory with
-all of the files for your system in it. Also
-assume that your system consists of two
-executable programs, one built from the files
-.B s1.c, s2.c,
-and
-.B s3.c,
-and the other built from the files
-.B s4.c
-and
-.B s5.c.
-Finally, assume that these source files share some common include files.
-.PP
-In order to properly convert such a system of programs, you
-would need to perform the steps shown below.
-.sp 1
-.in +0.5i
-.ft B
-thisprog s1.c s2.c s3.c
-.br
-thisprog s4.c s5.c
-.sp 1
-.ft R
-.in -0.5i
-.PP
-In the example above, the first invocation of
-.I thisprog
-causes three
-.B .X
-files (called
-.B s1.c.X, s2.c.X,
-and
-.B s3.c.X)
-to be created.
-These files are generated automatically by
-.I thisprog
-(which invokes the GNU C compiler to create them).
-These files contain information about function definitions and declarations
-.I both
-for their corresponding
-.B .c
-files and for any files
-which are included by these
-.I base
-.B .c
-files.
-.PP
-After
-.I thisprog
-has invoked the compiler for each of the files which make up
-.I prog1,
-it performs the actual conversion of these base files (and
-may perform some conversion of their include files
-depending upon the information available in the
-.B .X
-files).
-Finally, after performing all necessary conversions,
-.I thisprog
-automatically deletes the files
-.B s1.c.X, s2.c.X,
-and
-.B s3.c.X.
-.PP
-After performing the conversion for
-.I prog1,
-(as illustrated above)
-you would then
-request
-.I thisprog
-to convert all of the files which make up
-.I prog2
-in a similar fashion.
-This step would create two more
-.B .X
-files (called
-.B s4.c.X
-and
-.B s5.c.X).
-As with the conversion of
-.I prog1,
-.I thisprog
-will automatically generate any needed
-.B .X
-files (by invoking the GNU C compiler),
-will perform the conversion of all of the given
-.I base
-source files (and possibly do some conversion on include files),
-and will finish up by
-automatically deleting the
-.B .X
-files that were generated during this run.
-.PP
-You may occasionally find that you need to convert a
-particular program which
-consists of several
-.I base
-source files, some of which must be compiled
-with unusual options.
-In such cases, you can still convert the program via
-a special mechanism.
-For each
-.I base
-source file which requires special compilation options,
-you can create a corresponding
-.B .X
-file for the
-.I base
-file
-.I (before
-invoking
-.I thisprog).
-You would do this by invoking the GNU C compiler directly
-with the required special options, and with the
-.B -fgen-aux-info
-option.
-.I Thisprog
-is smart enough to use existing
-.B .X
-files (when they are available and when they are up to date) so creating
-.B .X
-files ahead of time with the GNU C compiler
-is an easy way to accommodate unusual compilation options for individual
-.I base
-files.
-.PP
-Note that
-.I thisprog
-checks each preexisting
-.B .X
-file before it tries to use it in order
-to insure that it is up-to-date
-with respect to all of the source files
-that it contains information about.
-If this check fails,
-.I thisprog
-will automatically
-invoke the GNU C compiler (with default options) to recreate the needed
-.B .X file.
-.SH CAVEATS
-#ifndef UNPRO
-The
-.I thisprog
-program doesn\'t just get information from your own
-.B .X
-files. Every time
-.I thisprog
-executes, it also reads a file
-.B SYSCALLS.c.X
-from some standard installation directory
-(if it exists) to obtain a pre-written set of function prototypes for
-various standard system-supplied functions. These prototypes are effectively
-added to the set of prototypes which
-.I thisprog
-can use to perform prototype substitutions on your source files.
-If the source code for any individual programs that you are converting
-contains its own definitions
-for functions with the same names as standard system-supplied functions,
-.I thisprog
-is intelligent enough to allow the parameter typing from your own
-function definitions to take precedence over the information
-contained in the
-.B SYSCALLS.c.X
-file.
-.PP
-.I Thisprog
-changes
-#ifndef UNPRO
-(and possibly adds to)
-#endif
-your original source code
-in ways which may require you to rearrange the placement of other
-items in your code. Specifically, it is often necessary to move
-around type definitions or declarations for
-.B "enum, struct,"
-and
-.B union
-types.
-#ifndef UNPRO
-.PP
-Usage of
-.I thisprog
-may cause source lines to grow quite long and thereby become difficult
-to read and to edit. Fortunately,
-.I thisprog
-is intelligent enough to automatically break up very long lines containing
-newly inserted function prototypes whenever the length of
-any given output line would otherwise exceed 79 columns (including tabs
-to standard UNIX tab stops).
-.PP
-Note that in traditional (K&R) C, it was not possible to declare
-parameter types for
-.B "function pointer"
-parameters and variables.
-Such function pointer variables could only be
-declared with empty parameter lists in traditional C. Unfortunately,
-this means that
-.I thisprog
-typically
-has no adequate source of information from which to manufacture
-appropriate (prototyped) formal argument lists for such function pointer
-variables. Thus, declarations of function pointer variables and
-parameters will not be properly converted by
-.I thisprog.
-In the case of function pointer variables,
-.I thisprog
-currently performs no conversion whatsoever.
-In the case of function pointer parameters however,
-.I thisprog
-will attempt to do half-hearted conversions by
-manufacturing formal parameter lists for such parameters.
-These manufactured formal parameter lists will look
-like \`\.\.\.\'.
-#endif
-.PP
-#endif
-It is naive to assume that the conversions performed by
-.I thisprog
-are sufficient to make your source code completely compatible with
-#ifndef UNPRO
-ANSI C or C++.
-#else
-K&R C.
-#endif
-The automatic conversion of your source files via
-.I thisprog
-is only one step (albeit a big one) towards
-full conversion. A full conversion may also require
-lots of editing "by hand".
-.PP
-.I Thisprog
-only converts function declarations and definitions. No conversion of
-.I types
-(such as function types and pointer-to-function types)
-contained in
-.B typedef
-statements is attempted. These must be converted manually.
-#ifdef UNPRO
-.PP
-Naive conversion of source code via
-.I thisprog
-may introduce bugs into the resulting (converted) code unless you are very
-careful. The reason for this is rather subtle.
-Basically, when a call is made to a prototyped function, the types of
-some of the parameter values in the call may be implicitly converted
-to the types of the corresponding formal parameters (as declared in the
-function prototype). These implicit conversions can (occasionally) involve
-changes of representation for the passed values (for instance from int
-to float). Unfortunately, once your code has been converted via
-.I thisprog,
-these implicit conversions will no longer take place within the function
-calls which require them.
-.PP
-The only remedy for this problem (currently) is for users of
-.I thisprog
-to make sure that explicit casts are inserted into calls which will force
-these type conversions to occur even in the absence of function
-prototypes. Users can determine the exact set of places where such explicit
-casts may be required by compiling all code to be converted using the
-.B -Wconversion
-option to GCC prior to conversion. The warnings produced by
-.B -Wconversion
-will indicate those places in the original source code where explicit
-casts must be inserted. Once these explicit casts have been manually
-inserted (and the warnings from
-.B -Wconversion
-eliminated), conversion may be performed without any possibility of
-generating code which is incorrect due to missed type conversions.
-#else
-.PP
-When converting to full prototype format, it may often be the case that
-complete information regarding the types of function parameters is not
-actually available in the original (K&R) code.
-This will almost always be the case for parameters whose types are
-pointer-to-function types.
-For pointer-to-function parameters, it it customary (in K&R C) to
-omit the types of the arguments which the pointed-to function expects
-to receive.
-In cases where the argument types for function pointer parameters are
-not present in the original source code,
-.I thisprog
-notes this lack of complete information in a useful (but harmless)
-way. After conversion, the (prototyped) parameter lists for
-pointer-to-function parameters are represented in the converted
-files as comments which contain the string "???". You can easily
-locate all such strings after conversion (using your favorite editor)
-and replace them with more complete information regarding the
-true parameter profile of the pointed-to functions.
-#endif
-.SH WARNINGS
-There are numerous possible warning and error messages which
-.I thisprog
-may issue for strange circumstances (e.g.\ missing input
-files, etc.) or for noteworthy conditions in the source code being converted.
-These should all be self-explanatory.
-If any message is not self-explanatory, it\'s a bug. Please report it.
-.SH FILES
-.ta 3.0i
-/usr/local/bin/gcc GNU C compiler
-.br
-/usr/local/bin/thisprog the thisprog program
-#ifndef UNPRO
-.br
-/usr/local/lib/SYSCALLS.c.X aux info file for system functions
-#endif
-.SH "SEE ALSO"
-gcc(1), g++(1), otherprog(1)
-.SH BUGS
-.I Thisprog
-can easily be confused by
-source code which has
-macro calls in the
-vicinity of something which it has to convert.
-Fortunately, such cases seem to be rare in practice.
-This is an inherent problem with the compiler
-based approach to information gathering and will likely never be fixed.
-When it does become confused,
-.I thisprog
-will still proceed to convert the file it is working on as much as
-possible. Only the particularly confusing function definitions and
-declarations will fail to be converted. These can subsequently be converted
-manually.
-.PP
-Due to the method currently used to gather information,
-.I thisprog
-will fail to convert function declarations and definitions which
-are located in conditional compilation sections which were
-.I "preprocessed out"
-during the creation of the
-.B .X
-files used for conversion.
-You can generally work around this problem by doing
-repeated conversion steps using
-.I thisprog,
-each with a different set of compilation options (i.e.\ preprocessor
-symbol definitions) but assuring complete conversion can
-currently only be done by visual inspection.
-Currently,
-.I thisprog
-attempts to find function definitions which were
-.I "preprocessed out"
-and to issues warnings for such cases.
-A later revision of
-.I thisprog
-#ifndef UNPRO
-may also be able to detect cases where function declarations
-have been
-.I "preprocessed out"
-and to issue appropriate warnings for those cases also.
-#else
-may be able to convert both function declarations and function
-definitions which have been
-.I "preprocessed out."
-#endif
-.PP
-Currently,
-.I thisprog
-makes no attempt to convert declarations of
-.I "pointer to function"
-types, variables, or fields.
-#ifdef UNPRO
-A later version of
-.I thisprog
-may attempt to perform conversions of these
-declarative items also.
-#endif
-.PP
-Currently,
-.I from_convention
-functions definitions
-#ifndef UNPRO
-and declarations
-#endif
-must be converted by hand to use the
-.I to_convention
-convention.
-It is possible that a subsequent version of
-.I thisprog
-will make some attempt to do these conversions automatically.
-.PP
-.I Thisprog
-may get confused if it finds that it has to convert a function
-declaration or definition in a region of source code where
-there is more than one formal parameter list present.
-Thus, attempts to convert code containing
-multiple (conditionally compiled) versions of a single
-function header (in the same vicinity) may not produce
-the desired (or expected) results.
-If you plan on converting source files which contain
-such code, it is recommended that you first make sure
-that each conditionally compiled region of source
-code which contains an alternative function header
-also contains at least one additional follower token
-(past the final right parenthesis of the function header).
-This should circumvent the problem.
-#ifdef UNPRO
-.PP
-.I Thisprog
-can become confused when trying to convert a function
-definition or declaration
-which contains a declaration for a
-.I pointer-to-function
-formal argument
-which has the same name as the function being defined or
-declared.
-Such unfortunate choices of formal parameter names are discouraged.
-#endif
-.PP
-Bugs (and requests for reasonable enhancements) should be reported to
-bug-gcc@prep.ai.mit.edu. Bugs may actually be fixed if they can be easily
-reproduced, so it is in your interest to report them
-in such a way that reproduction is easy.
-.SH COPYING
-Copyright (c) 1989, 1990 Free Software Foundation, Inc.
-.sp 1
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.sp 1
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.sp 1
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-.SH AUTHORS
-Written by Ronald F.\ Guilmette at the Microelectronics and Computer Technology
-Corporation (MCC). Generously donated by MCC to the Free Software
-Foundation.
-.sp 1
-See the GNU C Compiler Manual for a list of contributors to GNU C.
diff --git a/gcc/protoize.c b/gcc/protoize.c
deleted file mode 100755
index 7ced66a..0000000
--- a/gcc/protoize.c
+++ /dev/null
@@ -1,4673 +0,0 @@
-/* Protoize program - Original version by Ron Guilmette (rfg@segfault.us.com).
- Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU CC 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 GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* Any reasonable C++ compiler should have all of the same features
- as __STDC__ plus more, so make sure that __STDC__ is defined if
- __cplusplus is defined. */
-
-#if defined(__cplusplus) && !defined(__STDC__)
-#define __STDC__ 1
-#endif /* defined(__cplusplus) && !defined(__STDC__) */
-
-#if defined(__GNUC__) || defined (__GNUG__)
-#define VOLATILE volatile
-#else
-#define VOLATILE
-#endif
-
-#ifndef __STDC__
-#define const
-#define volatile
-#endif
-
-#include "config.h"
-
-#if 0
-/* Users are not supposed to use _POSIX_SOURCE to say the
- system is a POSIX system. That is not what _POSIX_SOURCE means! -- rms */
-/* If the user asked for POSIX via _POSIX_SOURCE, turn on POSIX code. */
-#if defined(_POSIX_SOURCE) && !defined(POSIX)
-#define POSIX
-#endif
-#endif /* 0 */
-
-#ifdef POSIX /* We should be able to define _POSIX_SOURCE unconditionally,
- but some systems respond in buggy ways to it,
- including SunOS 4.1.1. Which we don't classify as POSIX. */
-/* In case this is a POSIX system with an ANSI C compiler,
- ask for definition of all POSIX facilities. */
-#undef _POSIX_SOURCE
-#define _POSIX_SOURCE
-#endif
-
-#include "system.h"
-#if ! defined (_WIN32) || defined (__CYGWIN__)
-#if defined(POSIX) || defined(CONCURRENT)
-#include <dirent.h>
-#else
-#include <sys/dir.h>
-#endif
-#endif
-#include <setjmp.h>
-
-/* Some systems like Linux don't declare rindex if _POSIX_SOURCE is declared,
- but it normally does declare it. This means that configure thinks we don't
- need to declare it. Favor using strrchr if it is available. */
-
-#ifndef strrchr
-#ifndef HAVE_STRRCHR
-#ifdef HAVE_RINDEX
-#define strrchr rindex
-#endif
-#endif
-#endif
-
-/* Include getopt.h for the sake of getopt_long.
- We don't need the declaration of getopt, and it could conflict
- with something from a system header file, so effectively nullify that. */
-#define getopt getopt_loser
-#include "getopt.h"
-#undef getopt
-
-extern char *version_string;
-
-/* Systems which are compatible only with POSIX 1003.1-1988 (but *not*
- with POSIX 1003.1-1990), e.g. Ultrix 4.2, might not have
- const qualifiers in the prototypes in the system include files.
- Unfortunately, this can lead to GCC issuing lots of warnings for
- calls to the following functions. To eliminate these warnings we
- provide the following #defines. */
-
-#define my_access(file,flag) access((char *)file, flag)
-#define my_stat(file,pkt) stat((char *)file, pkt)
-#ifdef __MINGW32__
-#define my_link(file1, file2) -1
-#else
-#define my_link(file1, file2) link((char *)file1, (char *)file2)
-#endif
-#define my_unlink(file) unlink((char *)file)
-#define my_open(file, mode, flag) open((char *)file, mode, flag)
-#define my_chmod(file, mode) chmod((char *)file, mode)
-
-extern char *getpwd ();
-
-static void usage PROTO ((void)) ATTRIBUTE_NORETURN;
-static void aux_info_corrupted PROTO ((void)) ATTRIBUTE_NORETURN;
-static void declare_source_confusing PROTO ((const char *)) ATTRIBUTE_NORETURN;
-
-/* Aliases for pointers to void.
- These were made to facilitate compilation with old brain-dead DEC C
- compilers which didn't properly grok `void*' types. */
-
-typedef PTR pointer_type;
-typedef const PTR const_pointer_type;
-
-#if defined(POSIX)
-
-#include <signal.h>
-
-#else /* !defined(POSIX) */
-
-/* Declaring stat or __flsbuf with a prototype
- causes conflicts with system headers on some systems. */
-
-#if 0 /* These conflict with stdio.h on some systems. */
-extern int creat ();
-extern int fprintf (FILE *, const char *, ...);
-extern int printf (const char *, ...);
-extern int open (const char *, int, ...);
-extern int read ();
-extern int write ();
-#endif /* 0 */
-extern int close ();
-extern int fflush ();
-extern int atoi ();
-extern int puts ();
-#ifndef fputs /* This may have been #defined by "system.h". */
-extern int fputs ();
-#endif
-extern int fputc ();
-extern int unlink ();
-extern int access ();
-
-#if 0 /* size_t from sys/types.h may fail to match GCC.
- If so, we would get a warning from this. */
-extern size_t strlen ()
-#endif
-
-#endif /* !defined (POSIX) */
-
-/* Look for these where the `const' qualifier is intentionally cast aside. */
-
-#define NONCONST
-
-/* Define a default place to find the SYSCALLS.X file. */
-
-#ifndef STD_PROTO_DIR
-#define STD_PROTO_DIR "/usr/local/lib"
-#endif /* !defined (STD_PROTO_DIR) */
-
-/* Suffix of aux_info files. */
-
-static const char * const aux_info_suffix = ".X";
-
-/* String to attach to filenames for saved versions of original files. */
-
-static const char * const save_suffix = ".save";
-
-#ifndef UNPROTOIZE
-
-/* File name of the file which contains descriptions of standard system
- routines. Note that we never actually do anything with this file per se,
- but we do read in its corresponding aux_info file. */
-
-static const char syscalls_filename[] = "SYSCALLS.c";
-
-/* Default place to find the above file. */
-
-static const char * const default_syscalls_dir = STD_PROTO_DIR;
-
-/* Variable to hold the complete absolutized filename of the SYSCALLS.c.X
- file. */
-
-static char * syscalls_absolute_filename;
-
-#endif /* !defined (UNPROTOIZE) */
-
-/* Type of the structure that holds information about macro unexpansions. */
-
-struct unexpansion_struct {
- const char *expanded;
- const char *contracted;
-};
-typedef struct unexpansion_struct unexpansion;
-
-/* A table of conversions that may need to be made for some (stupid) older
- operating systems where these types are preprocessor macros rather than
- typedefs (as they really ought to be).
-
- WARNING: The contracted forms must be as small (or smaller) as the
- expanded forms, or else havoc will ensue. */
-
-static const unexpansion unexpansions[] = {
- { "struct _iobuf", "FILE" },
- { 0, 0 }
-};
-
-/* The number of "primary" slots in the hash tables for filenames and for
- function names. This can be as big or as small as you like, except that
- it must be a power of two. */
-
-#define HASH_TABLE_SIZE (1 << 9)
-
-/* Bit mask to use when computing hash values. */
-
-static const int hash_mask = (HASH_TABLE_SIZE - 1);
-
-/* Make a table of default system include directories
- just as it is done in cccp.c. */
-
-#ifndef STANDARD_INCLUDE_DIR
-#define STANDARD_INCLUDE_DIR "/usr/include"
-#endif
-
-#ifndef LOCAL_INCLUDE_DIR
-#define LOCAL_INCLUDE_DIR "/usr/local/include"
-#endif
-
-struct default_include { const char *fname;
- const char *component;
- int x1, x2; } include_defaults[]
-#ifdef INCLUDE_DEFAULTS
- = INCLUDE_DEFAULTS;
-#else
- = {
- /* Pick up GNU C++ specific include files. */
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 },
-#ifdef CROSS_COMPILE
- /* This is the dir for fixincludes. Put it just before
- the files that we fix. */
- { GCC_INCLUDE_DIR, "GCC", 0, 0 },
- /* For cross-compilation, this dir name is generated
- automatically in Makefile.in. */
- { CROSS_INCLUDE_DIR, 0, 0, 0 },
- /* This is another place that the target system's headers might be. */
- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 0 },
-#else /* not CROSS_COMPILE */
- /* This should be /use/local/include and should come before
- the fixincludes-fixed header files. */
- { LOCAL_INCLUDE_DIR, 0, 0, 1 },
- /* This is here ahead of GCC_INCLUDE_DIR because assert.h goes here.
- Likewise, behind LOCAL_INCLUDE_DIR, where glibc puts its assert.h. */
- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 0 },
- /* This is the dir for fixincludes. Put it just before
- the files that we fix. */
- { GCC_INCLUDE_DIR, "GCC", 0, 0 },
- /* Some systems have an extra dir of include files. */
-#ifdef SYSTEM_INCLUDE_DIR
- { SYSTEM_INCLUDE_DIR, 0, 0, 0 },
-#endif
- { STANDARD_INCLUDE_DIR, 0, 0, 0},
-#endif /* not CROSS_COMPILE */
- { 0, 0, 0, 0}
- };
-#endif /* no INCLUDE_DEFAULTS */
-
-/* Datatype for lists of directories or filenames. */
-struct string_list
-{
- char *name;
- struct string_list *next;
-};
-
-/* List of directories in which files should be converted. */
-
-struct string_list *directory_list;
-
-/* List of file names which should not be converted.
- A file is excluded if the end of its name, following a /,
- matches one of the names in this list. */
-
-struct string_list *exclude_list;
-
-/* The name of the other style of variable-number-of-parameters functions
- (i.e. the style that we want to leave unconverted because we don't yet
- know how to convert them to this style. This string is used in warning
- messages. */
-
-/* Also define here the string that we can search for in the parameter lists
- taken from the .X files which will unambiguously indicate that we have
- found a varargs style function. */
-
-#ifdef UNPROTOIZE
-static const char * const other_var_style = "stdarg";
-#else /* !defined (UNPROTOIZE) */
-static const char * const other_var_style = "varargs";
-/* Note that this is a string containing the expansion of va_alist.
- But in `main' we discard all but the first token. */
-static const char *varargs_style_indicator = STRINGIFY (va_alist);
-#endif /* !defined (UNPROTOIZE) */
-
-/* The following two types are used to create hash tables. In this program,
- there are two hash tables which are used to store and quickly lookup two
- different classes of strings. The first type of strings stored in the
- first hash table are absolute filenames of files which protoize needs to
- know about. The second type of strings (stored in the second hash table)
- are function names. It is this second class of strings which really
- inspired the use of the hash tables, because there may be a lot of them. */
-
-typedef struct hash_table_entry_struct hash_table_entry;
-
-/* Do some typedefs so that we don't have to write "struct" so often. */
-
-typedef struct def_dec_info_struct def_dec_info;
-typedef struct file_info_struct file_info;
-typedef struct f_list_chain_item_struct f_list_chain_item;
-
-/* In the struct below, note that the "_info" field has two different uses
- depending on the type of hash table we are in (i.e. either the filenames
- hash table or the function names hash table). In the filenames hash table
- the info fields of the entries point to the file_info struct which is
- associated with each filename (1 per filename). In the function names
- hash table, the info field points to the head of a singly linked list of
- def_dec_info entries which are all defs or decs of the function whose
- name is pointed to by the "symbol" field. Keeping all of the defs/decs
- for a given function name on a special list specifically for that function
- name makes it quick and easy to find out all of the important information
- about a given (named) function. */
-
-struct hash_table_entry_struct {
- hash_table_entry * hash_next; /* -> to secondary entries */
- const char * symbol; /* -> to the hashed string */
- union {
- const def_dec_info * _ddip;
- file_info * _fip;
- } _info;
-};
-#define ddip _info._ddip
-#define fip _info._fip
-
-/* Define a type specifically for our two hash tables. */
-
-typedef hash_table_entry hash_table[HASH_TABLE_SIZE];
-
-/* The following struct holds all of the important information about any
- single filename (e.g. file) which we need to know about. */
-
-struct file_info_struct {
- const hash_table_entry * hash_entry; /* -> to associated hash entry */
- const def_dec_info * defs_decs; /* -> to chain of defs/decs */
- time_t mtime; /* Time of last modification. */
-};
-
-/* Due to the possibility that functions may return pointers to functions,
- (which may themselves have their own parameter lists) and due to the
- fact that returned pointers-to-functions may be of type "pointer-to-
- function-returning-pointer-to-function" (ad nauseum) we have to keep
- an entire chain of ANSI style formal parameter lists for each function.
-
- Normally, for any given function, there will only be one formals list
- on the chain, but you never know.
-
- Note that the head of each chain of formals lists is pointed to by the
- `f_list_chain' field of the corresponding def_dec_info record.
-
- For any given chain, the item at the head of the chain is the *leftmost*
- parameter list seen in the actual C language function declaration. If
- there are other members of the chain, then these are linked in left-to-right
- order from the head of the chain. */
-
-struct f_list_chain_item_struct {
- const f_list_chain_item * chain_next; /* -> to next item on chain */
- const char * formals_list; /* -> to formals list string */
-};
-
-/* The following struct holds all of the important information about any
- single function definition or declaration which we need to know about.
- Note that for unprotoize we don't need to know very much because we
- never even create records for stuff that we don't intend to convert
- (like for instance defs and decs which are already in old K&R format
- and "implicit" function declarations). */
-
-struct def_dec_info_struct {
- const def_dec_info * next_in_file; /* -> to rest of chain for file */
- file_info * file; /* -> file_info for containing file */
- int line; /* source line number of def/dec */
- const char * ansi_decl; /* -> left end of ansi decl */
- hash_table_entry * hash_entry; /* -> hash entry for function name */
- unsigned int is_func_def; /* = 0 means this is a declaration */
- const def_dec_info * next_for_func; /* -> to rest of chain for func name */
- unsigned int f_list_count; /* count of formals lists we expect */
- char prototyped; /* = 0 means already prototyped */
-#ifndef UNPROTOIZE
- const f_list_chain_item * f_list_chain; /* -> chain of formals lists */
- const def_dec_info * definition; /* -> def/dec containing related def */
- char is_static; /* = 0 means visibility is "extern" */
- char is_implicit; /* != 0 for implicit func decl's */
- char written; /* != 0 means written for implicit */
-#else /* !defined (UNPROTOIZE) */
- const char * formal_names; /* -> to list of names of formals */
- const char * formal_decls; /* -> to string of formal declarations */
-#endif /* !defined (UNPROTOIZE) */
-};
-
-/* Pointer to the tail component of the filename by which this program was
- invoked. Used everywhere in error and warning messages. */
-
-static const char *pname;
-
-/* Error counter. Will be non-zero if we should give up at the next convenient
- stopping point. */
-
-static int errors = 0;
-
-/* Option flags. */
-/* ??? These comments should say what the flag mean as well as the options
- that set them. */
-
-/* File name to use for running gcc. Allows GCC 2 to be named
- something other than gcc. */
-static const char *compiler_file_name = "gcc";
-
-static int version_flag = 0; /* Print our version number. */
-static int quiet_flag = 0; /* Don't print messages normally. */
-static int nochange_flag = 0; /* Don't convert, just say what files
- we would have converted. */
-static int nosave_flag = 0; /* Don't save the old version. */
-static int keep_flag = 0; /* Don't delete the .X files. */
-static const char ** compile_params = 0; /* Option string for gcc. */
-#ifdef UNPROTOIZE
-static const char *indent_string = " "; /* Indentation for newly
- inserted parm decls. */
-#else /* !defined (UNPROTOIZE) */
-static int local_flag = 0; /* Insert new local decls (when?). */
-static int global_flag = 0; /* set by -g option */
-static int cplusplus_flag = 0; /* Rename converted files to *.C. */
-static const char *nondefault_syscalls_dir = 0; /* Dir to look for
- SYSCALLS.c.X in. */
-#endif /* !defined (UNPROTOIZE) */
-
-/* An index into the compile_params array where we should insert the source
- file name when we are ready to exec the C compiler. A zero value indicates
- that we have not yet called munge_compile_params. */
-
-static int input_file_name_index = 0;
-
-/* An index into the compile_params array where we should insert the filename
- for the aux info file, when we run the C compiler. */
-static int aux_info_file_name_index = 0;
-
-/* Count of command line arguments which were "filename" arguments. */
-
-static int n_base_source_files = 0;
-
-/* Points to a malloc'ed list of pointers to all of the filenames of base
- source files which were specified on the command line. */
-
-static const char **base_source_filenames;
-
-/* Line number of the line within the current aux_info file that we
- are currently processing. Used for error messages in case the prototypes
- info file is corrupted somehow. */
-
-static int current_aux_info_lineno;
-
-/* Pointer to the name of the source file currently being converted. */
-
-static const char *convert_filename;
-
-/* Pointer to relative root string (taken from aux_info file) which indicates
- where directory the user was in when he did the compilation step that
- produced the containing aux_info file. */
-
-static const char *invocation_filename;
-
-/* Pointer to the base of the input buffer that holds the original text for the
- source file currently being converted. */
-
-static const char *orig_text_base;
-
-/* Pointer to the byte just beyond the end of the input buffer that holds the
- original text for the source file currently being converted. */
-
-static const char *orig_text_limit;
-
-/* Pointer to the base of the input buffer that holds the cleaned text for the
- source file currently being converted. */
-
-static const char *clean_text_base;
-
-/* Pointer to the byte just beyond the end of the input buffer that holds the
- cleaned text for the source file currently being converted. */
-
-static const char *clean_text_limit;
-
-/* Pointer to the last byte in the cleaned text buffer that we have already
- (virtually) copied to the output buffer (or decided to ignore). */
-
-static const char * clean_read_ptr;
-
-/* Pointer to the base of the output buffer that holds the replacement text
- for the source file currently being converted. */
-
-static char *repl_text_base;
-
-/* Pointer to the byte just beyond the end of the output buffer that holds the
- replacement text for the source file currently being converted. */
-
-static char *repl_text_limit;
-
-/* Pointer to the last byte which has been stored into the output buffer.
- The next byte to be stored should be stored just past where this points
- to. */
-
-static char * repl_write_ptr;
-
-/* Pointer into the cleaned text buffer for the source file we are currently
- converting. This points to the first character of the line that we last
- did a "seek_to_line" to (see below). */
-
-static const char *last_known_line_start;
-
-/* Number of the line (in the cleaned text buffer) that we last did a
- "seek_to_line" to. Will be one if we just read a new source file
- into the cleaned text buffer. */
-
-static int last_known_line_number;
-
-/* The filenames hash table. */
-
-static hash_table filename_primary;
-
-/* The function names hash table. */
-
-static hash_table function_name_primary;
-
-/* The place to keep the recovery address which is used only in cases where
- we get hopelessly confused by something in the cleaned original text. */
-
-static jmp_buf source_confusion_recovery;
-
-/* A pointer to the current directory filename (used by abspath). */
-
-static char *cwd_buffer;
-
-/* A place to save the read pointer until we are sure that an individual
- attempt at editing will succeed. */
-
-static const char * saved_clean_read_ptr;
-
-/* A place to save the write pointer until we are sure that an individual
- attempt at editing will succeed. */
-
-static char * saved_repl_write_ptr;
-
-/* Forward declaration. */
-
-static const char *shortpath ();
-
-char *
-xstrerror(e)
- int e;
-{
-
-#ifdef HAVE_STRERROR
- return strerror(e);
-
-#else
-
- static char buffer[30];
- if (!e)
- return "";
-
- if (e > 0 && e < sys_nerr)
- return sys_errlist[e];
-
- sprintf (buffer, "Unknown error %d", e);
- return buffer;
-#endif
-}
-
-/* Allocate some space, but check that the allocation was successful. */
-/* alloca.c uses this, so don't make it static. */
-
-pointer_type
-xmalloc (byte_count)
- size_t byte_count;
-{
- register pointer_type rv = (pointer_type) malloc (byte_count);
- if (rv == NULL)
- {
- fprintf (stderr, "\n%s: virtual memory exceeded\n", pname);
- exit (FATAL_EXIT_CODE);
- }
- return rv;
-}
-
-/* Reallocate some space, but check that the reallocation was successful. */
-
-pointer_type
-xrealloc (old_space, byte_count)
- pointer_type old_space;
- size_t byte_count;
-{
- register pointer_type rv;
- if (old_space)
- rv = (pointer_type) realloc (old_space, byte_count);
- else
- rv = (pointer_type) malloc (byte_count);
- if (rv == NULL)
- {
- fprintf (stderr, "\n%s: virtual memory exceeded\n", pname);
- exit (FATAL_EXIT_CODE);
- }
- return rv;
-}
-
-/* Deallocate the area pointed to by an arbitrary pointer, but first, strip
- the `const' qualifier from it and also make sure that the pointer value
- is non-null. */
-
-void
-xfree (p)
- const_pointer_type p;
-{
- if (p)
- free ((NONCONST pointer_type) p);
-}
-
-/* Make a copy of a string INPUT with size SIZE. */
-
-static char *
-savestring (input, size)
- const char *input;
- unsigned int size;
-{
- char *output = (char *) xmalloc (size + 1);
- strcpy (output, input);
- return output;
-}
-
-/* Make a copy of the concatenation of INPUT1 and INPUT2. */
-
-static char *
-savestring2 (input1, size1, input2, size2)
- const char *input1;
- unsigned int size1;
- const char *input2;
- unsigned int size2;
-{
- char *output = (char *) xmalloc (size1 + size2 + 1);
- strcpy (output, input1);
- strcpy (&output[size1], input2);
- return output;
-}
-
-/* More 'friendly' abort that prints the line and file.
- config.h can #define abort fancy_abort if you like that sort of thing. */
-
-void
-fancy_abort ()
-{
- fprintf (stderr, "%s: internal abort\n", pname);
- exit (FATAL_EXIT_CODE);
-}
-
-/* Make a duplicate of the first N bytes of a given string in a newly
- allocated area. */
-
-static char *
-dupnstr (s, n)
- const char *s;
- size_t n;
-{
- char *ret_val = (char *) xmalloc (n + 1);
-
- strncpy (ret_val, s, n);
- ret_val[n] = '\0';
- return ret_val;
-}
-
-/* Return a pointer to the first occurrence of s2 within s1 or NULL if s2
- does not occur within s1. Assume neither s1 nor s2 are null pointers. */
-
-static const char *
-substr (s1, s2)
- const char *s1;
- const char *const s2;
-{
- for (; *s1 ; s1++)
- {
- const char *p1;
- const char *p2;
- int c;
-
- for (p1 = s1, p2 = s2; (c = *p2); p1++, p2++)
- if (*p1 != c)
- goto outer;
- return s1;
-outer:
- ;
- }
- return 0;
-}
-
-/* Read LEN bytes at PTR from descriptor DESC, for file FILENAME,
- retrying if necessary. Return the actual number of bytes read. */
-
-static int
-safe_read (desc, ptr, len)
- int desc;
- char *ptr;
- int len;
-{
- int left = len;
- while (left > 0) {
- int nchars = read (desc, ptr, left);
- if (nchars < 0)
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- return nchars;
- }
- if (nchars == 0)
- break;
- ptr += nchars;
- left -= nchars;
- }
- return len - left;
-}
-
-/* Write LEN bytes at PTR to descriptor DESC,
- retrying if necessary, and treating any real error as fatal. */
-
-static void
-safe_write (desc, ptr, len, out_fname)
- int desc;
- char *ptr;
- int len;
- char *out_fname;
-{
- while (len > 0) {
- int written = write (desc, ptr, len);
- if (written < 0)
- {
- int errno_val = errno;
-#ifdef EINTR
- if (errno_val == EINTR)
- continue;
-#endif
- fprintf (stderr, "%s: error writing file `%s': %s\n",
- pname, shortpath (NULL, out_fname), xstrerror (errno_val));
- return;
- }
- ptr += written;
- len -= written;
- }
-}
-
-/* Get setup to recover in case the edit we are about to do goes awry. */
-
-void
-save_pointers ()
-{
- saved_clean_read_ptr = clean_read_ptr;
- saved_repl_write_ptr = repl_write_ptr;
-}
-
-/* Call this routine to recover our previous state whenever something looks
- too confusing in the source code we are trying to edit. */
-
-void
-restore_pointers ()
-{
- clean_read_ptr = saved_clean_read_ptr;
- repl_write_ptr = saved_repl_write_ptr;
-}
-
-/* Return true if the given character is a valid identifier character. */
-
-static int
-is_id_char (ch)
- unsigned char ch;
-{
- return (ISALNUM (ch) || (ch == '_') || (ch == '$'));
-}
-
-/* Give a message indicating the proper way to invoke this program and then
- exit with non-zero status. */
-
-static void
-usage ()
-{
-#ifdef UNPROTOIZE
- fprintf (stderr, "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n",
- pname, pname);
-#else /* !defined (UNPROTOIZE) */
- fprintf (stderr, "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n",
- pname, pname);
-#endif /* !defined (UNPROTOIZE) */
- exit (FATAL_EXIT_CODE);
-}
-
-/* Return true if the given filename (assumed to be an absolute filename)
- designates a file residing anywhere beneath any one of the "system"
- include directories. */
-
-static int
-in_system_include_dir (path)
- const char *path;
-{
- struct default_include *p;
-
- if (path[0] != '/')
- abort (); /* Must be an absolutized filename. */
-
- for (p = include_defaults; p->fname; p++)
- if (!strncmp (path, p->fname, strlen (p->fname))
- && path[strlen (p->fname)] == '/')
- return 1;
- return 0;
-}
-
-#if 0
-/* Return true if the given filename designates a file that the user has
- read access to and for which the user has write access to the containing
- directory. */
-
-static int
-file_could_be_converted (const char *path)
-{
- char *const dir_name = (char *) alloca (strlen (path) + 1);
-
- if (my_access (path, R_OK))
- return 0;
-
- {
- char *dir_last_slash;
-
- strcpy (dir_name, path);
- dir_last_slash = strrchr (dir_name, '/');
- if (dir_last_slash)
- *dir_last_slash = '\0';
- else
- abort (); /* Should have been an absolutized filename. */
- }
-
- if (my_access (path, W_OK))
- return 0;
-
- return 1;
-}
-
-/* Return true if the given filename designates a file that we are allowed
- to modify. Files which we should not attempt to modify are (a) "system"
- include files, and (b) files which the user doesn't have write access to,
- and (c) files which reside in directories which the user doesn't have
- write access to. Unless requested to be quiet, give warnings about
- files that we will not try to convert for one reason or another. An
- exception is made for "system" include files, which we never try to
- convert and for which we don't issue the usual warnings. */
-
-static int
-file_normally_convertible (const char *path)
-{
- char *const dir_name = alloca (strlen (path) + 1);
-
- if (in_system_include_dir (path))
- return 0;
-
- {
- char *dir_last_slash;
-
- strcpy (dir_name, path);
- dir_last_slash = strrchr (dir_name, '/');
- if (dir_last_slash)
- *dir_last_slash = '\0';
- else
- abort (); /* Should have been an absolutized filename. */
- }
-
- if (my_access (path, R_OK))
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: no read access for file `%s'\n",
- pname, shortpath (NULL, path));
- return 0;
- }
-
- if (my_access (path, W_OK))
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: no write access for file `%s'\n",
- pname, shortpath (NULL, path));
- return 0;
- }
-
- if (my_access (dir_name, W_OK))
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: no write access for dir containing `%s'\n",
- pname, shortpath (NULL, path));
- return 0;
- }
-
- return 1;
-}
-#endif /* 0 */
-
-#ifndef UNPROTOIZE
-
-/* Return true if the given file_info struct refers to the special SYSCALLS.c.X
- file. Return false otherwise. */
-
-static int
-is_syscalls_file (fi_p)
- const file_info *fi_p;
-{
- char const *f = fi_p->hash_entry->symbol;
- size_t fl = strlen (f), sysl = sizeof (syscalls_filename) - 1;
- return sysl <= fl && strcmp (f + fl - sysl, syscalls_filename) == 0;
-}
-
-#endif /* !defined (UNPROTOIZE) */
-
-/* Check to see if this file will need to have anything done to it on this
- run. If there is nothing in the given file which both needs conversion
- and for which we have the necessary stuff to do the conversion, return
- false. Otherwise, return true.
-
- Note that (for protoize) it is only valid to call this function *after*
- the connections between declarations and definitions have all been made
- by connect_defs_and_decs. */
-
-static int
-needs_to_be_converted (file_p)
- const file_info *file_p;
-{
- const def_dec_info *ddp;
-
-#ifndef UNPROTOIZE
-
- if (is_syscalls_file (file_p))
- return 0;
-
-#endif /* !defined (UNPROTOIZE) */
-
- for (ddp = file_p->defs_decs; ddp; ddp = ddp->next_in_file)
-
- if (
-
-#ifndef UNPROTOIZE
-
- /* ... and if we a protoizing and this function is in old style ... */
- !ddp->prototyped
- /* ... and if this a definition or is a decl with an associated def ... */
- && (ddp->is_func_def || (!ddp->is_func_def && ddp->definition))
-
-#else /* defined (UNPROTOIZE) */
-
- /* ... and if we are unprotoizing and this function is in new style ... */
- ddp->prototyped
-
-#endif /* defined (UNPROTOIZE) */
- )
- /* ... then the containing file needs converting. */
- return -1;
- return 0;
-}
-
-/* Return 1 if the file name NAME is in a directory
- that should be converted. */
-
-static int
-directory_specified_p (name)
- const char *name;
-{
- struct string_list *p;
-
- for (p = directory_list; p; p = p->next)
- if (!strncmp (name, p->name, strlen (p->name))
- && name[strlen (p->name)] == '/')
- {
- const char *q = name + strlen (p->name) + 1;
-
- /* If there are more slashes, it's in a subdir, so
- this match doesn't count. */
- while (*q)
- if (*q++ == '/')
- goto lose;
- return 1;
-
- lose: ;
- }
-
- return 0;
-}
-
-/* Return 1 if the file named NAME should be excluded from conversion. */
-
-static int
-file_excluded_p (name)
- const char *name;
-{
- struct string_list *p;
- int len = strlen (name);
-
- for (p = exclude_list; p; p = p->next)
- if (!strcmp (name + len - strlen (p->name), p->name)
- && name[len - strlen (p->name) - 1] == '/')
- return 1;
-
- return 0;
-}
-
-/* Construct a new element of a string_list.
- STRING is the new element value, and REST holds the remaining elements. */
-
-static struct string_list *
-string_list_cons (string, rest)
- char *string;
- struct string_list *rest;
-{
- struct string_list *temp
- = (struct string_list *) xmalloc (sizeof (struct string_list));
-
- temp->next = rest;
- temp->name = string;
- return temp;
-}
-
-/* ??? The GNU convention for mentioning function args in its comments
- is to capitalize them. So change "hash_tab_p" to HASH_TAB_P below.
- Likewise for all the other functions. */
-
-/* Given a hash table, apply some function to each node in the table. The
- table to traverse is given as the "hash_tab_p" argument, and the
- function to be applied to each node in the table is given as "func"
- argument. */
-
-static void
-visit_each_hash_node (hash_tab_p, func)
- const hash_table_entry *hash_tab_p;
- void (*func)();
-{
- const hash_table_entry *primary;
-
- for (primary = hash_tab_p; primary < &hash_tab_p[HASH_TABLE_SIZE]; primary++)
- if (primary->symbol)
- {
- hash_table_entry *second;
-
- (*func)(primary);
- for (second = primary->hash_next; second; second = second->hash_next)
- (*func) (second);
- }
-}
-
-/* Initialize all of the fields of a new hash table entry, pointed
- to by the "p" parameter. Note that the space to hold the entry
- is assumed to have already been allocated before this routine is
- called. */
-
-static hash_table_entry *
-add_symbol (p, s)
- hash_table_entry *p;
- const char *s;
-{
- p->hash_next = NULL;
- p->symbol = savestring (s, strlen (s));
- p->ddip = NULL;
- p->fip = NULL;
- return p;
-}
-
-/* Look for a particular function name or filename in the particular
- hash table indicated by "hash_tab_p". If the name is not in the
- given hash table, add it. Either way, return a pointer to the
- hash table entry for the given name. */
-
-static hash_table_entry *
-lookup (hash_tab_p, search_symbol)
- hash_table_entry *hash_tab_p;
- const char *search_symbol;
-{
- int hash_value = 0;
- const char *search_symbol_char_p = search_symbol;
- hash_table_entry *p;
-
- while (*search_symbol_char_p)
- hash_value += *search_symbol_char_p++;
- hash_value &= hash_mask;
- p = &hash_tab_p[hash_value];
- if (! p->symbol)
- return add_symbol (p, search_symbol);
- if (!strcmp (p->symbol, search_symbol))
- return p;
- while (p->hash_next)
- {
- p = p->hash_next;
- if (!strcmp (p->symbol, search_symbol))
- return p;
- }
- p->hash_next = (hash_table_entry *) xmalloc (sizeof (hash_table_entry));
- p = p->hash_next;
- return add_symbol (p, search_symbol);
-}
-
-/* Throw a def/dec record on the junk heap.
-
- Also, since we are not using this record anymore, free up all of the
- stuff it pointed to. */
-
-static void
-free_def_dec (p)
- def_dec_info *p;
-{
- xfree (p->ansi_decl);
-
-#ifndef UNPROTOIZE
- {
- const f_list_chain_item * curr;
- const f_list_chain_item * next;
-
- for (curr = p->f_list_chain; curr; curr = next)
- {
- next = curr->chain_next;
- xfree (curr);
- }
- }
-#endif /* !defined (UNPROTOIZE) */
-
- xfree (p);
-}
-
-/* Unexpand as many macro symbol as we can find.
-
- If the given line must be unexpanded, make a copy of it in the heap and
- return a pointer to the unexpanded copy. Otherwise return NULL. */
-
-static char *
-unexpand_if_needed (aux_info_line)
- const char *aux_info_line;
-{
- static char *line_buf = 0;
- static int line_buf_size = 0;
- const unexpansion *unexp_p;
- int got_unexpanded = 0;
- const char *s;
- char *copy_p = line_buf;
-
- if (line_buf == 0)
- {
- line_buf_size = 1024;
- line_buf = (char *) xmalloc (line_buf_size);
- }
-
- copy_p = line_buf;
-
- /* Make a copy of the input string in line_buf, expanding as necessary. */
-
- for (s = aux_info_line; *s != '\n'; )
- {
- for (unexp_p = unexpansions; unexp_p->expanded; unexp_p++)
- {
- const char *in_p = unexp_p->expanded;
- size_t len = strlen (in_p);
-
- if (*s == *in_p && !strncmp (s, in_p, len) && !is_id_char (s[len]))
- {
- int size = strlen (unexp_p->contracted);
- got_unexpanded = 1;
- if (copy_p + size - line_buf >= line_buf_size)
- {
- int offset = copy_p - line_buf;
- line_buf_size *= 2;
- line_buf_size += size;
- line_buf = (char *) xrealloc (line_buf, line_buf_size);
- copy_p = line_buf + offset;
- }
- strcpy (copy_p, unexp_p->contracted);
- copy_p += size;
-
- /* Assume the there will not be another replacement required
- within the text just replaced. */
-
- s += len;
- goto continue_outer;
- }
- }
- if (copy_p - line_buf == line_buf_size)
- {
- int offset = copy_p - line_buf;
- line_buf_size *= 2;
- line_buf = (char *) xrealloc (line_buf, line_buf_size);
- copy_p = line_buf + offset;
- }
- *copy_p++ = *s++;
-continue_outer: ;
- }
- if (copy_p + 2 - line_buf >= line_buf_size)
- {
- int offset = copy_p - line_buf;
- line_buf_size *= 2;
- line_buf = (char *) xrealloc (line_buf, line_buf_size);
- copy_p = line_buf + offset;
- }
- *copy_p++ = '\n';
- *copy_p = '\0';
-
- return (got_unexpanded ? savestring (line_buf, copy_p - line_buf) : 0);
-}
-
-/* Return the absolutized filename for the given relative
- filename. Note that if that filename is already absolute, it may
- still be returned in a modified form because this routine also
- eliminates redundant slashes and single dots and eliminates double
- dots to get a shortest possible filename from the given input
- filename. The absolutization of relative filenames is made by
- assuming that the given filename is to be taken as relative to
- the first argument (cwd) or to the current directory if cwd is
- NULL. */
-
-static char *
-abspath (cwd, rel_filename)
- const char *cwd;
- const char *rel_filename;
-{
- /* Setup the current working directory as needed. */
- const char *cwd2 = (cwd) ? cwd : cwd_buffer;
- char *const abs_buffer
- = (char *) alloca (strlen (cwd2) + strlen (rel_filename) + 2);
- char *endp = abs_buffer;
- char *outp, *inp;
-
- /* Copy the filename (possibly preceded by the current working
- directory name) into the absolutization buffer. */
-
- {
- const char *src_p;
-
- if (rel_filename[0] != '/')
- {
- src_p = cwd2;
- while ((*endp++ = *src_p++))
- continue;
- *(endp-1) = '/'; /* overwrite null */
- }
- src_p = rel_filename;
- while ((*endp++ = *src_p++))
- continue;
- }
-
- /* Now make a copy of abs_buffer into abs_buffer, shortening the
- filename (by taking out slashes and dots) as we go. */
-
- outp = inp = abs_buffer;
- *outp++ = *inp++; /* copy first slash */
-#ifdef apollo
- if (inp[0] == '/')
- *outp++ = *inp++; /* copy second slash */
-#endif
- for (;;)
- {
- if (!inp[0])
- break;
- else if (inp[0] == '/' && outp[-1] == '/')
- {
- inp++;
- continue;
- }
- else if (inp[0] == '.' && outp[-1] == '/')
- {
- if (!inp[1])
- break;
- else if (inp[1] == '/')
- {
- inp += 2;
- continue;
- }
- else if ((inp[1] == '.') && (inp[2] == 0 || inp[2] == '/'))
- {
- inp += (inp[2] == '/') ? 3 : 2;
- outp -= 2;
- while (outp >= abs_buffer && *outp != '/')
- outp--;
- if (outp < abs_buffer)
- {
- /* Catch cases like /.. where we try to backup to a
- point above the absolute root of the logical file
- system. */
-
- fprintf (stderr, "%s: invalid file name: %s\n",
- pname, rel_filename);
- exit (FATAL_EXIT_CODE);
- }
- *++outp = '\0';
- continue;
- }
- }
- *outp++ = *inp++;
- }
-
- /* On exit, make sure that there is a trailing null, and make sure that
- the last character of the returned string is *not* a slash. */
-
- *outp = '\0';
- if (outp[-1] == '/')
- *--outp = '\0';
-
- /* Make a copy (in the heap) of the stuff left in the absolutization
- buffer and return a pointer to the copy. */
-
- return savestring (abs_buffer, outp - abs_buffer);
-}
-
-/* Given a filename (and possibly a directory name from which the filename
- is relative) return a string which is the shortest possible
- equivalent for the corresponding full (absolutized) filename. The
- shortest possible equivalent may be constructed by converting the
- absolutized filename to be a relative filename (i.e. relative to
- the actual current working directory). However if a relative filename
- is longer, then the full absolute filename is returned.
-
- KNOWN BUG:
-
- Note that "simple-minded" conversion of any given type of filename (either
- relative or absolute) may not result in a valid equivalent filename if any
- subpart of the original filename is actually a symbolic link. */
-
-static const char *
-shortpath (cwd, filename)
- const char *cwd;
- const char *filename;
-{
- char *rel_buffer;
- char *rel_buf_p;
- char *cwd_p = cwd_buffer;
- char *path_p;
- int unmatched_slash_count = 0;
- size_t filename_len = strlen (filename);
-
- path_p = abspath (cwd, filename);
- rel_buf_p = rel_buffer = (char *) xmalloc (filename_len);
-
- while (*cwd_p && (*cwd_p == *path_p))
- {
- cwd_p++;
- path_p++;
- }
- if (!*cwd_p && (!*path_p || *path_p == '/')) /* whole pwd matched */
- {
- if (!*path_p) /* input *is* the current path! */
- return ".";
- else
- return ++path_p;
- }
- else
- {
- if (*path_p)
- {
- --cwd_p;
- --path_p;
- while (*cwd_p != '/') /* backup to last slash */
- {
- --cwd_p;
- --path_p;
- }
- cwd_p++;
- path_p++;
- unmatched_slash_count++;
- }
-
- /* Find out how many directory levels in cwd were *not* matched. */
- while (*cwd_p)
- if (*cwd_p++ == '/')
- unmatched_slash_count++;
-
- /* Now we know how long the "short name" will be.
- Reject it if longer than the input. */
- if (unmatched_slash_count * 3 + strlen (path_p) >= filename_len)
- return filename;
-
- /* For each of them, put a `../' at the beginning of the short name. */
- while (unmatched_slash_count--)
- {
- /* Give up if the result gets to be longer
- than the absolute path name. */
- if (rel_buffer + filename_len <= rel_buf_p + 3)
- return filename;
- *rel_buf_p++ = '.';
- *rel_buf_p++ = '.';
- *rel_buf_p++ = '/';
- }
-
- /* Then tack on the unmatched part of the desired file's name. */
- do
- {
- if (rel_buffer + filename_len <= rel_buf_p)
- return filename;
- }
- while ((*rel_buf_p++ = *path_p++));
-
- --rel_buf_p;
- if (*(rel_buf_p-1) == '/')
- *--rel_buf_p = '\0';
- return rel_buffer;
- }
-}
-
-/* Lookup the given filename in the hash table for filenames. If it is a
- new one, then the hash table info pointer will be null. In this case,
- we create a new file_info record to go with the filename, and we initialize
- that record with some reasonable values. */
-
-/* FILENAME was const, but that causes a warning on AIX when calling stat.
- That is probably a bug in AIX, but might as well avoid the warning. */
-
-static file_info *
-find_file (filename, do_not_stat)
- char *filename;
- int do_not_stat;
-{
- hash_table_entry *hash_entry_p;
-
- hash_entry_p = lookup (filename_primary, filename);
- if (hash_entry_p->fip)
- return hash_entry_p->fip;
- else
- {
- struct stat stat_buf;
- file_info *file_p = (file_info *) xmalloc (sizeof (file_info));
-
- /* If we cannot get status on any given source file, give a warning
- and then just set its time of last modification to infinity. */
-
- if (do_not_stat)
- stat_buf.st_mtime = (time_t) 0;
- else
- {
- if (my_stat (filename, &stat_buf) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: %s: can't get status: %s\n",
- pname, shortpath (NULL, filename),
- xstrerror (errno_val));
- stat_buf.st_mtime = (time_t) -1;
- }
- }
-
- hash_entry_p->fip = file_p;
- file_p->hash_entry = hash_entry_p;
- file_p->defs_decs = NULL;
- file_p->mtime = stat_buf.st_mtime;
- return file_p;
- }
-}
-
-/* Generate a fatal error because some part of the aux_info file is
- messed up. */
-
-static void
-aux_info_corrupted ()
-{
- fprintf (stderr, "\n%s: fatal error: aux info file corrupted at line %d\n",
- pname, current_aux_info_lineno);
- exit (FATAL_EXIT_CODE);
-}
-
-/* ??? This comment is vague. Say what the condition is for. */
-/* Check to see that a condition is true. This is kind of like an assert. */
-
-static void
-check_aux_info (cond)
- int cond;
-{
- if (! cond)
- aux_info_corrupted ();
-}
-
-/* Given a pointer to the closing right parenthesis for a particular formals
- list (in an aux_info file) find the corresponding left parenthesis and
- return a pointer to it. */
-
-static const char *
-find_corresponding_lparen (p)
- const char *p;
-{
- const char *q;
- int paren_depth;
-
- for (paren_depth = 1, q = p-1; paren_depth; q--)
- {
- switch (*q)
- {
- case ')':
- paren_depth++;
- break;
- case '(':
- paren_depth--;
- break;
- }
- }
- return ++q;
-}
-
-/* Given a line from an aux info file, and a time at which the aux info
- file it came from was created, check to see if the item described in
- the line comes from a file which has been modified since the aux info
- file was created. If so, return non-zero, else return zero. */
-
-static int
-referenced_file_is_newer (l, aux_info_mtime)
- const char *l;
- time_t aux_info_mtime;
-{
- const char *p;
- file_info *fi_p;
- char *filename;
-
- check_aux_info (l[0] == '/');
- check_aux_info (l[1] == '*');
- check_aux_info (l[2] == ' ');
-
- {
- const char *filename_start = p = l + 3;
-
- while (*p != ':')
- p++;
- filename = (char *) alloca ((size_t) (p - filename_start) + 1);
- strncpy (filename, filename_start, (size_t) (p - filename_start));
- filename[p-filename_start] = '\0';
- }
-
- /* Call find_file to find the file_info record associated with the file
- which contained this particular def or dec item. Note that this call
- may cause a new file_info record to be created if this is the first time
- that we have ever known about this particular file. */
-
- fi_p = find_file (abspath (invocation_filename, filename), 0);
-
- return (fi_p->mtime > aux_info_mtime);
-}
-
-/* Given a line of info from the aux_info file, create a new
- def_dec_info record to remember all of the important information about
- a function definition or declaration.
-
- Link this record onto the list of such records for the particular file in
- which it occurred in proper (descending) line number order (for now).
-
- If there is an identical record already on the list for the file, throw
- this one away. Doing so takes care of the (useless and troublesome)
- duplicates which are bound to crop up due to multiple inclusions of any
- given individual header file.
-
- Finally, link the new def_dec record onto the list of such records
- pertaining to this particular function name. */
-
-static void
-save_def_or_dec (l, is_syscalls)
- const char *l;
- int is_syscalls;
-{
- const char *p;
- const char *semicolon_p;
- def_dec_info *def_dec_p = (def_dec_info *) xmalloc (sizeof (def_dec_info));
-
-#ifndef UNPROTOIZE
- def_dec_p->written = 0;
-#endif /* !defined (UNPROTOIZE) */
-
- /* Start processing the line by picking off 5 pieces of information from
- the left hand end of the line. These are filename, line number,
- new/old/implicit flag (new = ANSI prototype format), definition or
- declaration flag, and extern/static flag). */
-
- check_aux_info (l[0] == '/');
- check_aux_info (l[1] == '*');
- check_aux_info (l[2] == ' ');
-
- {
- const char *filename_start = p = l + 3;
- char *filename;
-
- while (*p != ':')
- p++;
- filename = (char *) alloca ((size_t) (p - filename_start) + 1);
- strncpy (filename, filename_start, (size_t) (p - filename_start));
- filename[p-filename_start] = '\0';
-
- /* Call find_file to find the file_info record associated with the file
- which contained this particular def or dec item. Note that this call
- may cause a new file_info record to be created if this is the first time
- that we have ever known about this particular file.
-
- Note that we started out by forcing all of the base source file names
- (i.e. the names of the aux_info files with the .X stripped off) into the
- filenames hash table, and we simultaneously setup file_info records for
- all of these base file names (even if they may be useless later).
- The file_info records for all of these "base" file names (properly)
- act as file_info records for the "original" (i.e. un-included) files
- which were submitted to gcc for compilation (when the -aux-info
- option was used). */
-
- def_dec_p->file = find_file (abspath (invocation_filename, filename), is_syscalls);
- }
-
- {
- const char *line_number_start = ++p;
- char line_number[10];
-
- while (*p != ':')
- p++;
- strncpy (line_number, line_number_start, (size_t) (p - line_number_start));
- line_number[p-line_number_start] = '\0';
- def_dec_p->line = atoi (line_number);
- }
-
- /* Check that this record describes a new-style, old-style, or implicit
- definition or declaration. */
-
- p++; /* Skip over the `:'. */
- check_aux_info ((*p == 'N') || (*p == 'O') || (*p == 'I'));
-
- /* Is this a new style (ANSI prototyped) definition or declaration? */
-
- def_dec_p->prototyped = (*p == 'N');
-
-#ifndef UNPROTOIZE
-
- /* Is this an implicit declaration? */
-
- def_dec_p->is_implicit = (*p == 'I');
-
-#endif /* !defined (UNPROTOIZE) */
-
- p++;
-
- check_aux_info ((*p == 'C') || (*p == 'F'));
-
- /* Is this item a function definition (F) or a declaration (C). Note that
- we treat item taken from the syscalls file as though they were function
- definitions regardless of what the stuff in the file says. */
-
- def_dec_p->is_func_def = ((*p++ == 'F') || is_syscalls);
-
-#ifndef UNPROTOIZE
- def_dec_p->definition = 0; /* Fill this in later if protoizing. */
-#endif /* !defined (UNPROTOIZE) */
-
- check_aux_info (*p++ == ' ');
- check_aux_info (*p++ == '*');
- check_aux_info (*p++ == '/');
- check_aux_info (*p++ == ' ');
-
-#ifdef UNPROTOIZE
- check_aux_info ((!strncmp (p, "static", 6)) || (!strncmp (p, "extern", 6)));
-#else /* !defined (UNPROTOIZE) */
- if (!strncmp (p, "static", 6))
- def_dec_p->is_static = -1;
- else if (!strncmp (p, "extern", 6))
- def_dec_p->is_static = 0;
- else
- check_aux_info (0); /* Didn't find either `extern' or `static'. */
-#endif /* !defined (UNPROTOIZE) */
-
- {
- const char *ansi_start = p;
-
- p += 6; /* Pass over the "static" or "extern". */
-
- /* We are now past the initial stuff. Search forward from here to find
- the terminating semicolon that should immediately follow the entire
- ANSI format function declaration. */
-
- while (*++p != ';')
- continue;
-
- semicolon_p = p;
-
- /* Make a copy of the ansi declaration part of the line from the aux_info
- file. */
-
- def_dec_p->ansi_decl
- = dupnstr (ansi_start, (size_t) ((semicolon_p+1) - ansi_start));
-
- /* Backup and point at the final right paren of the final argument list. */
-
- p--;
-
-#ifndef UNPROTOIZE
- def_dec_p->f_list_chain = NULL;
-#endif /* !defined (UNPROTOIZE) */
-
- while (p != ansi_start && (p[-1] == ' ' || p[-1] == '\t')) p--;
- if (*p != ')')
- {
- free_def_dec (def_dec_p);
- return;
- }
- }
-
- /* Now isolate a whole set of formal argument lists, one-by-one. Normally,
- there will only be one list to isolate, but there could be more. */
-
- def_dec_p->f_list_count = 0;
-
- for (;;)
- {
- const char *left_paren_p = find_corresponding_lparen (p);
-#ifndef UNPROTOIZE
- {
- f_list_chain_item *cip
- = (f_list_chain_item *) xmalloc (sizeof (f_list_chain_item));
-
- cip->formals_list
- = dupnstr (left_paren_p + 1, (size_t) (p - (left_paren_p+1)));
-
- /* Add the new chain item at the head of the current list. */
-
- cip->chain_next = def_dec_p->f_list_chain;
- def_dec_p->f_list_chain = cip;
- }
-#endif /* !defined (UNPROTOIZE) */
- def_dec_p->f_list_count++;
-
- p = left_paren_p - 2;
-
- /* p must now point either to another right paren, or to the last
- character of the name of the function that was declared/defined.
- If p points to another right paren, then this indicates that we
- are dealing with multiple formals lists. In that case, there
- really should be another right paren preceding this right paren. */
-
- if (*p != ')')
- break;
- else
- check_aux_info (*--p == ')');
- }
-
-
- {
- const char *past_fn = p + 1;
-
- check_aux_info (*past_fn == ' ');
-
- /* Scan leftwards over the identifier that names the function. */
-
- while (is_id_char (*p))
- p--;
- p++;
-
- /* p now points to the leftmost character of the function name. */
-
- {
- char *fn_string = (char *) alloca (past_fn - p + 1);
-
- strncpy (fn_string, p, (size_t) (past_fn - p));
- fn_string[past_fn-p] = '\0';
- def_dec_p->hash_entry = lookup (function_name_primary, fn_string);
- }
- }
-
- /* Look at all of the defs and decs for this function name that we have
- collected so far. If there is already one which is at the same
- line number in the same file, then we can discard this new def_dec_info
- record.
-
- As an extra assurance that any such pair of (nominally) identical
- function declarations are in fact identical, we also compare the
- ansi_decl parts of the lines from the aux_info files just to be on
- the safe side.
-
- This comparison will fail if (for instance) the user was playing
- messy games with the preprocessor which ultimately causes one
- function declaration in one header file to look differently when
- that file is included by two (or more) other files. */
-
- {
- const def_dec_info *other;
-
- for (other = def_dec_p->hash_entry->ddip; other; other = other->next_for_func)
- {
- if (def_dec_p->line == other->line && def_dec_p->file == other->file)
- {
- if (strcmp (def_dec_p->ansi_decl, other->ansi_decl))
- {
- fprintf (stderr, "%s:%d: declaration of function `%s' takes different forms\n",
- def_dec_p->file->hash_entry->symbol,
- def_dec_p->line,
- def_dec_p->hash_entry->symbol);
- exit (FATAL_EXIT_CODE);
- }
- free_def_dec (def_dec_p);
- return;
- }
- }
- }
-
-#ifdef UNPROTOIZE
-
- /* If we are doing unprotoizing, we must now setup the pointers that will
- point to the K&R name list and to the K&R argument declarations list.
-
- Note that if this is only a function declaration, then we should not
- expect to find any K&R style formals list following the ANSI-style
- formals list. This is because GCC knows that such information is
- useless in the case of function declarations (function definitions
- are a different story however).
-
- Since we are unprotoizing, we don't need any such lists anyway.
- All we plan to do is to delete all characters between ()'s in any
- case. */
-
- def_dec_p->formal_names = NULL;
- def_dec_p->formal_decls = NULL;
-
- if (def_dec_p->is_func_def)
- {
- p = semicolon_p;
- check_aux_info (*++p == ' ');
- check_aux_info (*++p == '/');
- check_aux_info (*++p == '*');
- check_aux_info (*++p == ' ');
- check_aux_info (*++p == '(');
-
- {
- const char *kr_names_start = ++p; /* Point just inside '('. */
-
- while (*p++ != ')')
- continue;
- p--; /* point to closing right paren */
-
- /* Make a copy of the K&R parameter names list. */
-
- def_dec_p->formal_names
- = dupnstr (kr_names_start, (size_t) (p - kr_names_start));
- }
-
- check_aux_info (*++p == ' ');
- p++;
-
- /* p now points to the first character of the K&R style declarations
- list (if there is one) or to the star-slash combination that ends
- the comment in which such lists get embedded. */
-
- /* Make a copy of the K&R formal decls list and set the def_dec record
- to point to it. */
-
- if (*p == '*') /* Are there no K&R declarations? */
- {
- check_aux_info (*++p == '/');
- def_dec_p->formal_decls = "";
- }
- else
- {
- const char *kr_decls_start = p;
-
- while (p[0] != '*' || p[1] != '/')
- p++;
- p--;
-
- check_aux_info (*p == ' ');
-
- def_dec_p->formal_decls
- = dupnstr (kr_decls_start, (size_t) (p - kr_decls_start));
- }
-
- /* Handle a special case. If we have a function definition marked as
- being in "old" style, and if its formal names list is empty, then
- it may actually have the string "void" in its real formals list
- in the original source code. Just to make sure, we will get setup
- to convert such things anyway.
-
- This kludge only needs to be here because of an insurmountable
- problem with generating .X files. */
-
- if (!def_dec_p->prototyped && !*def_dec_p->formal_names)
- def_dec_p->prototyped = 1;
- }
-
- /* Since we are unprotoizing, if this item is already in old (K&R) style,
- we can just ignore it. If that is true, throw away the itme now. */
-
- if (!def_dec_p->prototyped)
- {
- free_def_dec (def_dec_p);
- return;
- }
-
-#endif /* defined (UNPROTOIZE) */
-
- /* Add this record to the head of the list of records pertaining to this
- particular function name. */
-
- def_dec_p->next_for_func = def_dec_p->hash_entry->ddip;
- def_dec_p->hash_entry->ddip = def_dec_p;
-
- /* Add this new def_dec_info record to the sorted list of def_dec_info
- records for this file. Note that we don't have to worry about duplicates
- (caused by multiple inclusions of header files) here because we have
- already eliminated duplicates above. */
-
- if (!def_dec_p->file->defs_decs)
- {
- def_dec_p->file->defs_decs = def_dec_p;
- def_dec_p->next_in_file = NULL;
- }
- else
- {
- int line = def_dec_p->line;
- const def_dec_info *prev = NULL;
- const def_dec_info *curr = def_dec_p->file->defs_decs;
- const def_dec_info *next = curr->next_in_file;
-
- while (next && (line < curr->line))
- {
- prev = curr;
- curr = next;
- next = next->next_in_file;
- }
- if (line >= curr->line)
- {
- def_dec_p->next_in_file = curr;
- if (prev)
- ((NONCONST def_dec_info *) prev)->next_in_file = def_dec_p;
- else
- def_dec_p->file->defs_decs = def_dec_p;
- }
- else /* assert (next == NULL); */
- {
- ((NONCONST def_dec_info *) curr)->next_in_file = def_dec_p;
- /* assert (next == NULL); */
- def_dec_p->next_in_file = next;
- }
- }
-}
-
-/* Set up the vector COMPILE_PARAMS which is the argument list for running GCC.
- Also set input_file_name_index and aux_info_file_name_index
- to the indices of the slots where the file names should go. */
-
-/* We initialize the vector by removing -g, -O, -S, -c, and -o options,
- and adding '-aux-info AUXFILE -S -o /dev/null INFILE' at the end. */
-
-static void
-munge_compile_params (params_list)
- const char *params_list;
-{
- /* Build up the contents in a temporary vector
- that is so big that to has to be big enough. */
- const char **temp_params
- = (const char **) alloca ((strlen (params_list) + 8) * sizeof (char *));
- int param_count = 0;
- const char *param;
-
- temp_params[param_count++] = compiler_file_name;
- for (;;)
- {
- while (ISSPACE ((const unsigned char)*params_list))
- params_list++;
- if (!*params_list)
- break;
- param = params_list;
- while (*params_list && !ISSPACE ((const unsigned char)*params_list))
- params_list++;
- if (param[0] != '-')
- temp_params[param_count++]
- = dupnstr (param, (size_t) (params_list - param));
- else
- {
- switch (param[1])
- {
- case 'g':
- case 'O':
- case 'S':
- case 'c':
- break; /* Don't copy these. */
- case 'o':
- while (ISSPACE ((const unsigned char)*params_list))
- params_list++;
- while (*params_list
- && !ISSPACE ((const unsigned char)*params_list))
- params_list++;
- break;
- default:
- temp_params[param_count++]
- = dupnstr (param, (size_t) (params_list - param));
- }
- }
- if (!*params_list)
- break;
- }
- temp_params[param_count++] = "-aux-info";
-
- /* Leave room for the aux-info file name argument. */
- aux_info_file_name_index = param_count;
- temp_params[param_count++] = NULL;
-
- temp_params[param_count++] = "-S";
- temp_params[param_count++] = "-o";
- temp_params[param_count++] = "/dev/null";
-
- /* Leave room for the input file name argument. */
- input_file_name_index = param_count;
- temp_params[param_count++] = NULL;
- /* Terminate the list. */
- temp_params[param_count++] = NULL;
-
- /* Make a copy of the compile_params in heap space. */
-
- compile_params
- = (const char **) xmalloc (sizeof (char *) * (param_count+1));
- memcpy (compile_params, temp_params, sizeof (char *) * param_count);
-}
-
-/* Do a recompilation for the express purpose of generating a new aux_info
- file to go with a specific base source file.
-
- The result is a boolean indicating success. */
-
-static int
-gen_aux_info_file (base_filename)
- const char *base_filename;
-{
- if (!input_file_name_index)
- munge_compile_params ("");
-
- /* Store the full source file name in the argument vector. */
- compile_params[input_file_name_index] = shortpath (NULL, base_filename);
- /* Add .X to source file name to get aux-info file name. */
- compile_params[aux_info_file_name_index]
- = savestring2 (compile_params[input_file_name_index],
- strlen (compile_params[input_file_name_index]),
- ".X",
- 2);
-
- if (!quiet_flag)
- fprintf (stderr, "%s: compiling `%s'\n",
- pname, compile_params[input_file_name_index]);
-
- {
- char *errmsg_fmt, *errmsg_arg;
- int wait_status, pid;
- char *temp_base = choose_temp_base ();
-
- pid = pexecute (compile_params[0], (char * const *) compile_params,
- pname, temp_base, &errmsg_fmt, &errmsg_arg,
- PEXECUTE_FIRST | PEXECUTE_LAST | PEXECUTE_SEARCH);
-
- if (pid == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: ", pname);
- fprintf (stderr, errmsg_fmt, errmsg_arg);
- fprintf (stderr, ": %s\n", xstrerror (errno_val));
- return 0;
- }
-
- pid = pwait (pid, &wait_status, 0);
- if (pid == -1)
- {
- fprintf (stderr, "%s: wait: %s\n", pname, xstrerror (errno));
- return 0;
- }
- if (WIFSIGNALED (wait_status))
- {
- fprintf (stderr, "%s: subprocess got fatal signal %d\n",
- pname, WTERMSIG (wait_status));
- return 0;
- }
- if (WIFEXITED (wait_status))
- {
- if (WEXITSTATUS (wait_status) != 0)
- {
- fprintf (stderr, "%s: %s exited with status %d\n",
- pname, compile_params[0], WEXITSTATUS (wait_status));
- return 0;
- }
- return 1;
- }
- abort ();
- }
-}
-
-/* Read in all of the information contained in a single aux_info file.
- Save all of the important stuff for later. */
-
-static void
-process_aux_info_file (base_source_filename, keep_it, is_syscalls)
- const char *base_source_filename;
- int keep_it;
- int is_syscalls;
-{
- size_t base_len = strlen (base_source_filename);
- char * aux_info_filename
- = (char *) alloca (base_len + strlen (aux_info_suffix) + 1);
- char *aux_info_base;
- char *aux_info_limit;
- char *aux_info_relocated_name;
- const char *aux_info_second_line;
- time_t aux_info_mtime;
- size_t aux_info_size;
- int must_create;
-
- /* Construct the aux_info filename from the base source filename. */
-
- strcpy (aux_info_filename, base_source_filename);
- strcat (aux_info_filename, aux_info_suffix);
-
- /* Check that the aux_info file exists and is readable. If it does not
- exist, try to create it (once only). */
-
- /* If file doesn't exist, set must_create.
- Likewise if it exists and we can read it but it is obsolete.
- Otherwise, report an error. */
- must_create = 0;
-
- /* Come here with must_create set to 1 if file is out of date. */
-start_over: ;
-
- if (my_access (aux_info_filename, R_OK) == -1)
- {
- if (errno == ENOENT)
- {
- if (is_syscalls)
- {
- fprintf (stderr, "%s: warning: missing SYSCALLS file `%s'\n",
- pname, aux_info_filename);
- return;
- }
- must_create = 1;
- }
- else
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't read aux info file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- errors++;
- return;
- }
- }
-#if 0 /* There is code farther down to take care of this. */
- else
- {
- struct stat s1, s2;
- stat (aux_info_file_name, &s1);
- stat (base_source_file_name, &s2);
- if (s2.st_mtime > s1.st_mtime)
- must_create = 1;
- }
-#endif /* 0 */
-
- /* If we need a .X file, create it, and verify we can read it. */
- if (must_create)
- {
- if (!gen_aux_info_file (base_source_filename))
- {
- errors++;
- return;
- }
- if (my_access (aux_info_filename, R_OK) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't read aux info file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- errors++;
- return;
- }
- }
-
- {
- struct stat stat_buf;
-
- /* Get some status information about this aux_info file. */
-
- if (my_stat (aux_info_filename, &stat_buf) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't get status of aux info file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- errors++;
- return;
- }
-
- /* Check on whether or not this aux_info file is zero length. If it is,
- then just ignore it and return. */
-
- if ((aux_info_size = stat_buf.st_size) == 0)
- return;
-
- /* Get the date/time of last modification for this aux_info file and
- remember it. We will have to check that any source files that it
- contains information about are at least this old or older. */
-
- aux_info_mtime = stat_buf.st_mtime;
-
- if (!is_syscalls)
- {
- /* Compare mod time with the .c file; update .X file if obsolete.
- The code later on can fail to check the .c file
- if it did not directly define any functions. */
-
- if (my_stat (base_source_filename, &stat_buf) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't get status of aux info file `%s': %s\n",
- pname, shortpath (NULL, base_source_filename),
- xstrerror (errno_val));
- errors++;
- return;
- }
- if (stat_buf.st_mtime > aux_info_mtime)
- {
- must_create = 1;
- goto start_over;
- }
- }
- }
-
- {
- int aux_info_file;
-
- /* Open the aux_info file. */
-
- if ((aux_info_file = my_open (aux_info_filename, O_RDONLY, 0444 )) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't open aux info file `%s' for reading: %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- return;
- }
-
- /* Allocate space to hold the aux_info file in memory. */
-
- aux_info_base = xmalloc (aux_info_size + 1);
- aux_info_limit = aux_info_base + aux_info_size;
- *aux_info_limit = '\0';
-
- /* Read the aux_info file into memory. */
-
- if (safe_read (aux_info_file, aux_info_base, aux_info_size) !=
- (int) aux_info_size)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: error reading aux info file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- free (aux_info_base);
- close (aux_info_file);
- return;
- }
-
- /* Close the aux info file. */
-
- if (close (aux_info_file))
- {
- int errno_val = errno;
- fprintf (stderr, "%s: error closing aux info file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- free (aux_info_base);
- close (aux_info_file);
- return;
- }
- }
-
- /* Delete the aux_info file (unless requested not to). If the deletion
- fails for some reason, don't even worry about it. */
-
- if (must_create && !keep_it)
- if (my_unlink (aux_info_filename) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't delete aux info file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- }
-
- /* Save a pointer into the first line of the aux_info file which
- contains the filename of the directory from which the compiler
- was invoked when the associated source file was compiled.
- This information is used later to help create complete
- filenames out of the (potentially) relative filenames in
- the aux_info file. */
-
- {
- char *p = aux_info_base;
-
- while (*p != ':')
- p++;
- p++;
- while (*p == ' ')
- p++;
- invocation_filename = p; /* Save a pointer to first byte of path. */
- while (*p != ' ')
- p++;
- *p++ = '/';
- *p++ = '\0';
- while (*p++ != '\n')
- continue;
- aux_info_second_line = p;
- aux_info_relocated_name = 0;
- if (invocation_filename[0] != '/')
- {
- /* INVOCATION_FILENAME is relative;
- append it to BASE_SOURCE_FILENAME's dir. */
- char *dir_end;
- aux_info_relocated_name = xmalloc (base_len + (p-invocation_filename));
- strcpy (aux_info_relocated_name, base_source_filename);
- dir_end = strrchr (aux_info_relocated_name, '/');
- if (dir_end)
- dir_end++;
- else
- dir_end = aux_info_relocated_name;
- strcpy (dir_end, invocation_filename);
- invocation_filename = aux_info_relocated_name;
- }
- }
-
-
- {
- const char *aux_info_p;
-
- /* Do a pre-pass on the lines in the aux_info file, making sure that all
- of the source files referenced in there are at least as old as this
- aux_info file itself. If not, go back and regenerate the aux_info
- file anew. Don't do any of this for the syscalls file. */
-
- if (!is_syscalls)
- {
- current_aux_info_lineno = 2;
-
- for (aux_info_p = aux_info_second_line; *aux_info_p; )
- {
- if (referenced_file_is_newer (aux_info_p, aux_info_mtime))
- {
- free (aux_info_base);
- xfree (aux_info_relocated_name);
- if (keep_it && my_unlink (aux_info_filename) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't delete file `%s': %s\n",
- pname, shortpath (NULL, aux_info_filename),
- xstrerror (errno_val));
- return;
- }
- must_create = 1;
- goto start_over;
- }
-
- /* Skip over the rest of this line to start of next line. */
-
- while (*aux_info_p != '\n')
- aux_info_p++;
- aux_info_p++;
- current_aux_info_lineno++;
- }
- }
-
- /* Now do the real pass on the aux_info lines. Save their information in
- the in-core data base. */
-
- current_aux_info_lineno = 2;
-
- for (aux_info_p = aux_info_second_line; *aux_info_p;)
- {
- char *unexpanded_line = unexpand_if_needed (aux_info_p);
-
- if (unexpanded_line)
- {
- save_def_or_dec (unexpanded_line, is_syscalls);
- free (unexpanded_line);
- }
- else
- save_def_or_dec (aux_info_p, is_syscalls);
-
- /* Skip over the rest of this line and get to start of next line. */
-
- while (*aux_info_p != '\n')
- aux_info_p++;
- aux_info_p++;
- current_aux_info_lineno++;
- }
- }
-
- free (aux_info_base);
- xfree (aux_info_relocated_name);
-}
-
-#ifndef UNPROTOIZE
-
-/* Check an individual filename for a .c suffix. If the filename has this
- suffix, rename the file such that its suffix is changed to .C. This
- function implements the -C option. */
-
-static void
-rename_c_file (hp)
- const hash_table_entry *hp;
-{
- const char *filename = hp->symbol;
- int last_char_index = strlen (filename) - 1;
- char *const new_filename = (char *) alloca (strlen (filename) + 1);
-
- /* Note that we don't care here if the given file was converted or not. It
- is possible that the given file was *not* converted, simply because there
- was nothing in it which actually required conversion. Even in this case,
- we want to do the renaming. Note that we only rename files with the .c
- suffix. */
-
- if (filename[last_char_index] != 'c' || filename[last_char_index-1] != '.')
- return;
-
- strcpy (new_filename, filename);
- new_filename[last_char_index] = 'C';
-
- if (my_link (filename, new_filename) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: warning: can't link file `%s' to `%s': %s\n",
- pname, shortpath (NULL, filename),
- shortpath (NULL, new_filename), xstrerror (errno_val));
- errors++;
- return;
- }
-
- if (my_unlink (filename) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: warning: can't delete file `%s': %s\n",
- pname, shortpath (NULL, filename), xstrerror (errno_val));
- errors++;
- return;
- }
-}
-
-#endif /* !defined (UNPROTOIZE) */
-
-/* Take the list of definitions and declarations attached to a particular
- file_info node and reverse the order of the list. This should get the
- list into an order such that the item with the lowest associated line
- number is nearest the head of the list. When these lists are originally
- built, they are in the opposite order. We want to traverse them in
- normal line number order later (i.e. lowest to highest) so reverse the
- order here. */
-
-static void
-reverse_def_dec_list (hp)
- const hash_table_entry *hp;
-{
- file_info *file_p = hp->fip;
- def_dec_info *prev = NULL;
- def_dec_info *current = (def_dec_info *)file_p->defs_decs;
-
- if (!current)
- return; /* no list to reverse */
-
- prev = current;
- if (! (current = (def_dec_info *)current->next_in_file))
- return; /* can't reverse a single list element */
-
- prev->next_in_file = NULL;
-
- while (current)
- {
- def_dec_info *next = (def_dec_info *)current->next_in_file;
-
- current->next_in_file = prev;
- prev = current;
- current = next;
- }
-
- file_p->defs_decs = prev;
-}
-
-#ifndef UNPROTOIZE
-
-/* Find the (only?) extern definition for a particular function name, starting
- from the head of the linked list of entries for the given name. If we
- cannot find an extern definition for the given function name, issue a
- warning and scrounge around for the next best thing, i.e. an extern
- function declaration with a prototype attached to it. Note that we only
- allow such substitutions for extern declarations and never for static
- declarations. That's because the only reason we allow them at all is
- to let un-prototyped function declarations for system-supplied library
- functions get their prototypes from our own extra SYSCALLS.c.X file which
- contains all of the correct prototypes for system functions. */
-
-static const def_dec_info *
-find_extern_def (head, user)
- const def_dec_info *head;
- const def_dec_info *user;
-{
- const def_dec_info *dd_p;
- const def_dec_info *extern_def_p = NULL;
- int conflict_noted = 0;
-
- /* Don't act too stupid here. Somebody may try to convert an entire system
- in one swell fwoop (rather than one program at a time, as should be done)
- and in that case, we may find that there are multiple extern definitions
- of a given function name in the entire set of source files that we are
- converting. If however one of these definitions resides in exactly the
- same source file as the reference we are trying to satisfy then in that
- case it would be stupid for us to fail to realize that this one definition
- *must* be the precise one we are looking for.
-
- To make sure that we don't miss an opportunity to make this "same file"
- leap of faith, we do a prescan of the list of records relating to the
- given function name, and we look (on this first scan) *only* for a
- definition of the function which is in the same file as the reference
- we are currently trying to satisfy. */
-
- for (dd_p = head; dd_p; dd_p = dd_p->next_for_func)
- if (dd_p->is_func_def && !dd_p->is_static && dd_p->file == user->file)
- return dd_p;
-
- /* Now, since we have not found a definition in the same file as the
- reference, we scan the list again and consider all possibilities from
- all files. Here we may get conflicts with the things listed in the
- SYSCALLS.c.X file, but if that happens it only means that the source
- code being converted contains its own definition of a function which
- could have been supplied by libc.a. In such cases, we should avoid
- issuing the normal warning, and defer to the definition given in the
- user's own code. */
-
- for (dd_p = head; dd_p; dd_p = dd_p->next_for_func)
- if (dd_p->is_func_def && !dd_p->is_static)
- {
- if (!extern_def_p) /* Previous definition? */
- extern_def_p = dd_p; /* Remember the first definition found. */
- else
- {
- /* Ignore definition just found if it came from SYSCALLS.c.X. */
-
- if (is_syscalls_file (dd_p->file))
- continue;
-
- /* Quietly replace the definition previously found with the one
- just found if the previous one was from SYSCALLS.c.X. */
-
- if (is_syscalls_file (extern_def_p->file))
- {
- extern_def_p = dd_p;
- continue;
- }
-
- /* If we get here, then there is a conflict between two function
- declarations for the same function, both of which came from the
- user's own code. */
-
- if (!conflict_noted) /* first time we noticed? */
- {
- conflict_noted = 1;
- fprintf (stderr, "%s: conflicting extern definitions of '%s'\n",
- pname, head->hash_entry->symbol);
- if (!quiet_flag)
- {
- fprintf (stderr, "%s: declarations of '%s' will not be converted\n",
- pname, head->hash_entry->symbol);
- fprintf (stderr, "%s: conflict list for '%s' follows:\n",
- pname, head->hash_entry->symbol);
- fprintf (stderr, "%s: %s(%d): %s\n",
- pname,
- shortpath (NULL, extern_def_p->file->hash_entry->symbol),
- extern_def_p->line, extern_def_p->ansi_decl);
- }
- }
- if (!quiet_flag)
- fprintf (stderr, "%s: %s(%d): %s\n",
- pname,
- shortpath (NULL, dd_p->file->hash_entry->symbol),
- dd_p->line, dd_p->ansi_decl);
- }
- }
-
- /* We want to err on the side of caution, so if we found multiple conflicting
- definitions for the same function, treat this as being that same as if we
- had found no definitions (i.e. return NULL). */
-
- if (conflict_noted)
- return NULL;
-
- if (!extern_def_p)
- {
- /* We have no definitions for this function so do the next best thing.
- Search for an extern declaration already in prototype form. */
-
- for (dd_p = head; dd_p; dd_p = dd_p->next_for_func)
- if (!dd_p->is_func_def && !dd_p->is_static && dd_p->prototyped)
- {
- extern_def_p = dd_p; /* save a pointer to the definition */
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: using formals list from %s(%d) for function `%s'\n",
- pname,
- shortpath (NULL, dd_p->file->hash_entry->symbol),
- dd_p->line, dd_p->hash_entry->symbol);
- break;
- }
-
- /* Gripe about unprototyped function declarations that we found no
- corresponding definition (or other source of prototype information)
- for.
-
- Gripe even if the unprototyped declaration we are worried about
- exists in a file in one of the "system" include directories. We
- can gripe about these because we should have at least found a
- corresponding (pseudo) definition in the SYSCALLS.c.X file. If we
- didn't, then that means that the SYSCALLS.c.X file is missing some
- needed prototypes for this particular system. That is worth telling
- the user about! */
-
- if (!extern_def_p)
- {
- const char *file = user->file->hash_entry->symbol;
-
- if (!quiet_flag)
- if (in_system_include_dir (file))
- {
- /* Why copy this string into `needed' at all?
- Why not just use user->ansi_decl without copying? */
- char *needed = (char *) alloca (strlen (user->ansi_decl) + 1);
- char *p;
-
- strcpy (needed, user->ansi_decl);
- p = (NONCONST char *) substr (needed, user->hash_entry->symbol)
- + strlen (user->hash_entry->symbol) + 2;
- /* Avoid having ??? in the string. */
- *p++ = '?';
- *p++ = '?';
- *p++ = '?';
- strcpy (p, ");");
-
- fprintf (stderr, "%s: %d: `%s' used but missing from SYSCALLS\n",
- shortpath (NULL, file), user->line,
- needed+7); /* Don't print "extern " */
- }
-#if 0
- else
- fprintf (stderr, "%s: %d: warning: no extern definition for `%s'\n",
- shortpath (NULL, file), user->line,
- user->hash_entry->symbol);
-#endif
- }
- }
- return extern_def_p;
-}
-
-/* Find the (only?) static definition for a particular function name in a
- given file. Here we get the function-name and the file info indirectly
- from the def_dec_info record pointer which is passed in. */
-
-static const def_dec_info *
-find_static_definition (user)
- const def_dec_info *user;
-{
- const def_dec_info *head = user->hash_entry->ddip;
- const def_dec_info *dd_p;
- int num_static_defs = 0;
- const def_dec_info *static_def_p = NULL;
-
- for (dd_p = head; dd_p; dd_p = dd_p->next_for_func)
- if (dd_p->is_func_def && dd_p->is_static && (dd_p->file == user->file))
- {
- static_def_p = dd_p; /* save a pointer to the definition */
- num_static_defs++;
- }
- if (num_static_defs == 0)
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: no static definition for `%s' in file `%s'\n",
- pname, head->hash_entry->symbol,
- shortpath (NULL, user->file->hash_entry->symbol));
- }
- else if (num_static_defs > 1)
- {
- fprintf (stderr, "%s: multiple static defs of `%s' in file `%s'\n",
- pname, head->hash_entry->symbol,
- shortpath (NULL, user->file->hash_entry->symbol));
- return NULL;
- }
- return static_def_p;
-}
-
-/* Find good prototype style formal argument lists for all of the function
- declarations which didn't have them before now.
-
- To do this we consider each function name one at a time. For each function
- name, we look at the items on the linked list of def_dec_info records for
- that particular name.
-
- Somewhere on this list we should find one (and only one) def_dec_info
- record which represents the actual function definition, and this record
- should have a nice formal argument list already associated with it.
-
- Thus, all we have to do is to connect up all of the other def_dec_info
- records for this particular function name to the special one which has
- the full-blown formals list.
-
- Of course it is a little more complicated than just that. See below for
- more details. */
-
-static void
-connect_defs_and_decs (hp)
- const hash_table_entry *hp;
-{
- const def_dec_info *dd_p;
- const def_dec_info *extern_def_p = NULL;
- int first_extern_reference = 1;
-
- /* Traverse the list of definitions and declarations for this particular
- function name. For each item on the list, if it is a function
- definition (either old style or new style) then GCC has already been
- kind enough to produce a prototype for us, and it is associated with
- the item already, so declare the item as its own associated "definition".
-
- Also, for each item which is only a function declaration, but which
- nonetheless has its own prototype already (obviously supplied by the user)
- declare the item as its own definition.
-
- Note that when/if there are multiple user-supplied prototypes already
- present for multiple declarations of any given function, these multiple
- prototypes *should* all match exactly with one another and with the
- prototype for the actual function definition. We don't check for this
- here however, since we assume that the compiler must have already done
- this consistency checking when it was creating the .X files. */
-
- for (dd_p = hp->ddip; dd_p; dd_p = dd_p->next_for_func)
- if (dd_p->prototyped)
- ((NONCONST def_dec_info *) dd_p)->definition = dd_p;
-
- /* Traverse the list of definitions and declarations for this particular
- function name. For each item on the list, if it is an extern function
- declaration and if it has no associated definition yet, go try to find
- the matching extern definition for the declaration.
-
- When looking for the matching function definition, warn the user if we
- fail to find one.
-
- If we find more that one function definition also issue a warning.
-
- Do the search for the matching definition only once per unique function
- name (and only when absolutely needed) so that we can avoid putting out
- redundant warning messages, and so that we will only put out warning
- messages when there is actually a reference (i.e. a declaration) for
- which we need to find a matching definition. */
-
- for (dd_p = hp->ddip; dd_p; dd_p = dd_p->next_for_func)
- if (!dd_p->is_func_def && !dd_p->is_static && !dd_p->definition)
- {
- if (first_extern_reference)
- {
- extern_def_p = find_extern_def (hp->ddip, dd_p);
- first_extern_reference = 0;
- }
- ((NONCONST def_dec_info *) dd_p)->definition = extern_def_p;
- }
-
- /* Traverse the list of definitions and declarations for this particular
- function name. For each item on the list, if it is a static function
- declaration and if it has no associated definition yet, go try to find
- the matching static definition for the declaration within the same file.
-
- When looking for the matching function definition, warn the user if we
- fail to find one in the same file with the declaration, and refuse to
- convert this kind of cross-file static function declaration. After all,
- this is stupid practice and should be discouraged.
-
- We don't have to worry about the possibility that there is more than one
- matching function definition in the given file because that would have
- been flagged as an error by the compiler.
-
- Do the search for the matching definition only once per unique
- function-name/source-file pair (and only when absolutely needed) so that
- we can avoid putting out redundant warning messages, and so that we will
- only put out warning messages when there is actually a reference (i.e. a
- declaration) for which we actually need to find a matching definition. */
-
- for (dd_p = hp->ddip; dd_p; dd_p = dd_p->next_for_func)
- if (!dd_p->is_func_def && dd_p->is_static && !dd_p->definition)
- {
- const def_dec_info *dd_p2;
- const def_dec_info *static_def;
-
- /* We have now found a single static declaration for which we need to
- find a matching definition. We want to minimize the work (and the
- number of warnings), so we will find an appropriate (matching)
- static definition for this declaration, and then distribute it
- (as the definition for) any and all other static declarations
- for this function name which occur within the same file, and which
- do not already have definitions.
-
- Note that a trick is used here to prevent subsequent attempts to
- call find_static_definition for a given function-name & file
- if the first such call returns NULL. Essentially, we convert
- these NULL return values to -1, and put the -1 into the definition
- field for each other static declaration from the same file which
- does not already have an associated definition.
- This makes these other static declarations look like they are
- actually defined already when the outer loop here revisits them
- later on. Thus, the outer loop will skip over them. Later, we
- turn the -1's back to NULL's. */
-
- ((NONCONST def_dec_info *) dd_p)->definition =
- (static_def = find_static_definition (dd_p))
- ? static_def
- : (const def_dec_info *) -1;
-
- for (dd_p2 = dd_p->next_for_func; dd_p2; dd_p2 = dd_p2->next_for_func)
- if (!dd_p2->is_func_def && dd_p2->is_static
- && !dd_p2->definition && (dd_p2->file == dd_p->file))
- ((NONCONST def_dec_info *)dd_p2)->definition = dd_p->definition;
- }
-
- /* Convert any dummy (-1) definitions we created in the step above back to
- NULL's (as they should be). */
-
- for (dd_p = hp->ddip; dd_p; dd_p = dd_p->next_for_func)
- if (dd_p->definition == (def_dec_info *) -1)
- ((NONCONST def_dec_info *) dd_p)->definition = NULL;
-}
-
-#endif /* !defined (UNPROTOIZE) */
-
-/* Give a pointer into the clean text buffer, return a number which is the
- original source line number that the given pointer points into. */
-
-static int
-identify_lineno (clean_p)
- const char *clean_p;
-{
- int line_num = 1;
- const char *scan_p;
-
- for (scan_p = clean_text_base; scan_p <= clean_p; scan_p++)
- if (*scan_p == '\n')
- line_num++;
- return line_num;
-}
-
-/* Issue an error message and give up on doing this particular edit. */
-
-static void
-declare_source_confusing (clean_p)
- const char *clean_p;
-{
- if (!quiet_flag)
- {
- if (clean_p == 0)
- fprintf (stderr, "%s: %d: warning: source too confusing\n",
- shortpath (NULL, convert_filename), last_known_line_number);
- else
- fprintf (stderr, "%s: %d: warning: source too confusing\n",
- shortpath (NULL, convert_filename),
- identify_lineno (clean_p));
- }
- longjmp (source_confusion_recovery, 1);
-}
-
-/* Check that a condition which is expected to be true in the original source
- code is in fact true. If not, issue an error message and give up on
- converting this particular source file. */
-
-static void
-check_source (cond, clean_p)
- int cond;
- const char *clean_p;
-{
- if (!cond)
- declare_source_confusing (clean_p);
-}
-
-/* If we think of the in-core cleaned text buffer as a memory mapped
- file (with the variable last_known_line_start acting as sort of a
- file pointer) then we can imagine doing "seeks" on the buffer. The
- following routine implements a kind of "seek" operation for the in-core
- (cleaned) copy of the source file. When finished, it returns a pointer to
- the start of a given (numbered) line in the cleaned text buffer.
-
- Note that protoize only has to "seek" in the forward direction on the
- in-core cleaned text file buffers, and it never needs to back up.
-
- This routine is made a little bit faster by remembering the line number
- (and pointer value) supplied (and returned) from the previous "seek".
- This prevents us from always having to start all over back at the top
- of the in-core cleaned buffer again. */
-
-static const char *
-seek_to_line (n)
- int n;
-{
- if (n < last_known_line_number)
- abort ();
-
- while (n > last_known_line_number)
- {
- while (*last_known_line_start != '\n')
- check_source (++last_known_line_start < clean_text_limit, 0);
- last_known_line_start++;
- last_known_line_number++;
- }
- return last_known_line_start;
-}
-
-/* Given a pointer to a character in the cleaned text buffer, return a pointer
- to the next non-whitespace character which follows it. */
-
-static const char *
-forward_to_next_token_char (ptr)
- const char *ptr;
-{
- for (++ptr; ISSPACE ((const unsigned char)*ptr);
- check_source (++ptr < clean_text_limit, 0))
- continue;
- return ptr;
-}
-
-/* Copy a chunk of text of length `len' and starting at `str' to the current
- output buffer. Note that all attempts to add stuff to the current output
- buffer ultimately go through here. */
-
-static void
-output_bytes (str, len)
- const char *str;
- size_t len;
-{
- if ((repl_write_ptr + 1) + len >= repl_text_limit)
- {
- size_t new_size = (repl_text_limit - repl_text_base) << 1;
- char *new_buf = (char *) xrealloc (repl_text_base, new_size);
-
- repl_write_ptr = new_buf + (repl_write_ptr - repl_text_base);
- repl_text_base = new_buf;
- repl_text_limit = new_buf + new_size;
- }
- memcpy (repl_write_ptr + 1, str, len);
- repl_write_ptr += len;
-}
-
-/* Copy all bytes (except the trailing null) of a null terminated string to
- the current output buffer. */
-
-static void
-output_string (str)
- const char *str;
-{
- output_bytes (str, strlen (str));
-}
-
-/* Copy some characters from the original text buffer to the current output
- buffer.
-
- This routine takes a pointer argument `p' which is assumed to be a pointer
- into the cleaned text buffer. The bytes which are copied are the `original'
- equivalents for the set of bytes between the last value of `clean_read_ptr'
- and the argument value `p'.
-
- The set of bytes copied however, comes *not* from the cleaned text buffer,
- but rather from the direct counterparts of these bytes within the original
- text buffer.
-
- Thus, when this function is called, some bytes from the original text
- buffer (which may include original comments and preprocessing directives)
- will be copied into the output buffer.
-
- Note that the request implied when this routine is called includes the
- byte pointed to by the argument pointer `p'. */
-
-static void
-output_up_to (p)
- const char *p;
-{
- size_t copy_length = (size_t) (p - clean_read_ptr);
- const char *copy_start = orig_text_base+(clean_read_ptr-clean_text_base)+1;
-
- if (copy_length == 0)
- return;
-
- output_bytes (copy_start, copy_length);
- clean_read_ptr = p;
-}
-
-/* Given a pointer to a def_dec_info record which represents some form of
- definition of a function (perhaps a real definition, or in lieu of that
- perhaps just a declaration with a full prototype) return true if this
- function is one which we should avoid converting. Return false
- otherwise. */
-
-static int
-other_variable_style_function (ansi_header)
- const char *ansi_header;
-{
-#ifdef UNPROTOIZE
-
- /* See if we have a stdarg function, or a function which has stdarg style
- parameters or a stdarg style return type. */
-
- return substr (ansi_header, "...") != 0;
-
-#else /* !defined (UNPROTOIZE) */
-
- /* See if we have a varargs function, or a function which has varargs style
- parameters or a varargs style return type. */
-
- const char *p;
- int len = strlen (varargs_style_indicator);
-
- for (p = ansi_header; p; )
- {
- const char *candidate;
-
- if ((candidate = substr (p, varargs_style_indicator)) == 0)
- return 0;
- else
- if (!is_id_char (candidate[-1]) && !is_id_char (candidate[len]))
- return 1;
- else
- p = candidate + 1;
- }
- return 0;
-#endif /* !defined (UNPROTOIZE) */
-}
-
-/* Do the editing operation specifically for a function "declaration". Note
- that editing for function "definitions" are handled in a separate routine
- below. */
-
-static void
-edit_fn_declaration (def_dec_p, clean_text_p)
- const def_dec_info *def_dec_p;
- const char *volatile clean_text_p;
-{
- const char *start_formals;
- const char *end_formals;
- const char *function_to_edit = def_dec_p->hash_entry->symbol;
- size_t func_name_len = strlen (function_to_edit);
- const char *end_of_fn_name;
-
-#ifndef UNPROTOIZE
-
- const f_list_chain_item *this_f_list_chain_item;
- const def_dec_info *definition = def_dec_p->definition;
-
- /* If we are protoizing, and if we found no corresponding definition for
- this particular function declaration, then just leave this declaration
- exactly as it is. */
-
- if (!definition)
- return;
-
- /* If we are protoizing, and if the corresponding definition that we found
- for this particular function declaration defined an old style varargs
- function, then we want to issue a warning and just leave this function
- declaration unconverted. */
-
- if (other_variable_style_function (definition->ansi_decl))
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: %d: warning: varargs function declaration not converted\n",
- shortpath (NULL, def_dec_p->file->hash_entry->symbol),
- def_dec_p->line);
- return;
- }
-
-#endif /* !defined (UNPROTOIZE) */
-
- /* Setup here to recover from confusing source code detected during this
- particular "edit". */
-
- save_pointers ();
- if (setjmp (source_confusion_recovery))
- {
- restore_pointers ();
- fprintf (stderr, "%s: declaration of function `%s' not converted\n",
- pname, function_to_edit);
- return;
- }
-
- /* We are editing a function declaration. The line number we did a seek to
- contains the comma or semicolon which follows the declaration. Our job
- now is to scan backwards looking for the function name. This name *must*
- be followed by open paren (ignoring whitespace, of course). We need to
- replace everything between that open paren and the corresponding closing
- paren. If we are protoizing, we need to insert the prototype-style
- formals lists. If we are unprotoizing, we need to just delete everything
- between the pairs of opening and closing parens. */
-
- /* First move up to the end of the line. */
-
- while (*clean_text_p != '\n')
- check_source (++clean_text_p < clean_text_limit, 0);
- clean_text_p--; /* Point to just before the newline character. */
-
- /* Now we can scan backwards for the function name. */
-
- do
- {
- for (;;)
- {
- /* Scan leftwards until we find some character which can be
- part of an identifier. */
-
- while (!is_id_char (*clean_text_p))
- check_source (--clean_text_p > clean_read_ptr, 0);
-
- /* Scan backwards until we find a char that cannot be part of an
- identifier. */
-
- while (is_id_char (*clean_text_p))
- check_source (--clean_text_p > clean_read_ptr, 0);
-
- /* Having found an "id break", see if the following id is the one
- that we are looking for. If so, then exit from this loop. */
-
- if (!strncmp (clean_text_p+1, function_to_edit, func_name_len))
- {
- char ch = *(clean_text_p + 1 + func_name_len);
-
- /* Must also check to see that the name in the source text
- ends where it should (in order to prevent bogus matches
- on similar but longer identifiers. */
-
- if (! is_id_char (ch))
- break; /* exit from loop */
- }
- }
-
- /* We have now found the first perfect match for the function name in
- our backward search. This may or may not be the actual function
- name at the start of the actual function declaration (i.e. we could
- have easily been mislead). We will try to avoid getting fooled too
- often by looking forward for the open paren which should follow the
- identifier we just found. We ignore whitespace while hunting. If
- the next non-whitespace byte we see is *not* an open left paren,
- then we must assume that we have been fooled and we start over
- again accordingly. Note that there is no guarantee, that even if
- we do see the open paren, that we are in the right place.
- Programmers do the strangest things sometimes! */
-
- end_of_fn_name = clean_text_p + strlen (def_dec_p->hash_entry->symbol);
- start_formals = forward_to_next_token_char (end_of_fn_name);
- }
- while (*start_formals != '(');
-
- /* start_of_formals now points to the opening left paren which immediately
- follows the name of the function. */
-
- /* Note that there may be several formals lists which need to be modified
- due to the possibility that the return type of this function is a
- pointer-to-function type. If there are several formals lists, we
- convert them in left-to-right order here. */
-
-#ifndef UNPROTOIZE
- this_f_list_chain_item = definition->f_list_chain;
-#endif /* !defined (UNPROTOIZE) */
-
- for (;;)
- {
- {
- int depth;
-
- end_formals = start_formals + 1;
- depth = 1;
- for (; depth; check_source (++end_formals < clean_text_limit, 0))
- {
- switch (*end_formals)
- {
- case '(':
- depth++;
- break;
- case ')':
- depth--;
- break;
- }
- }
- end_formals--;
- }
-
- /* end_formals now points to the closing right paren of the formals
- list whose left paren is pointed to by start_formals. */
-
- /* Now, if we are protoizing, we insert the new ANSI-style formals list
- attached to the associated definition of this function. If however
- we are unprotoizing, then we simply delete any formals list which
- may be present. */
-
- output_up_to (start_formals);
-#ifndef UNPROTOIZE
- if (this_f_list_chain_item)
- {
- output_string (this_f_list_chain_item->formals_list);
- this_f_list_chain_item = this_f_list_chain_item->chain_next;
- }
- else
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: too many parameter lists in declaration of `%s'\n",
- pname, def_dec_p->hash_entry->symbol);
- check_source (0, end_formals); /* leave the declaration intact */
- }
-#endif /* !defined (UNPROTOIZE) */
- clean_read_ptr = end_formals - 1;
-
- /* Now see if it looks like there may be another formals list associated
- with the function declaration that we are converting (following the
- formals list that we just converted. */
-
- {
- const char *another_r_paren = forward_to_next_token_char (end_formals);
-
- if ((*another_r_paren != ')')
- || (*(start_formals = forward_to_next_token_char (another_r_paren)) != '('))
- {
-#ifndef UNPROTOIZE
- if (this_f_list_chain_item)
- {
- if (!quiet_flag)
- fprintf (stderr, "\n%s: warning: too few parameter lists in declaration of `%s'\n",
- pname, def_dec_p->hash_entry->symbol);
- check_source (0, start_formals); /* leave the decl intact */
- }
-#endif /* !defined (UNPROTOIZE) */
- break;
-
- }
- }
-
- /* There does appear to be yet another formals list, so loop around
- again, and convert it also. */
- }
-}
-
-/* Edit a whole group of formals lists, starting with the rightmost one
- from some set of formals lists. This routine is called once (from the
- outside) for each function declaration which is converted. It is
- recursive however, and it calls itself once for each remaining formal
- list that lies to the left of the one it was originally called to work
- on. Thus, a whole set gets done in right-to-left order.
-
- This routine returns non-zero if it thinks that it should not be trying
- to convert this particular function definition (because the name of the
- function doesn't match the one expected). */
-
-static int
-edit_formals_lists (end_formals, f_list_count, def_dec_p)
- const char *end_formals;
- unsigned int f_list_count;
- const def_dec_info *def_dec_p;
-{
- const char *start_formals;
- int depth;
-
- start_formals = end_formals - 1;
- depth = 1;
- for (; depth; check_source (--start_formals > clean_read_ptr, 0))
- {
- switch (*start_formals)
- {
- case '(':
- depth--;
- break;
- case ')':
- depth++;
- break;
- }
- }
- start_formals++;
-
- /* start_formals now points to the opening left paren of the formals list. */
-
- f_list_count--;
-
- if (f_list_count)
- {
- const char *next_end;
-
- /* There should be more formal lists to the left of here. */
-
- next_end = start_formals - 1;
- check_source (next_end > clean_read_ptr, 0);
- while (ISSPACE ((const unsigned char)*next_end))
- check_source (--next_end > clean_read_ptr, 0);
- check_source (*next_end == ')', next_end);
- check_source (--next_end > clean_read_ptr, 0);
- check_source (*next_end == ')', next_end);
- if (edit_formals_lists (next_end, f_list_count, def_dec_p))
- return 1;
- }
-
- /* Check that the function name in the header we are working on is the same
- as the one we would expect to find. If not, issue a warning and return
- non-zero. */
-
- if (f_list_count == 0)
- {
- const char *expected = def_dec_p->hash_entry->symbol;
- const char *func_name_start;
- const char *func_name_limit;
- size_t func_name_len;
-
- for (func_name_limit = start_formals-1;
- ISSPACE ((const unsigned char)*func_name_limit); )
- check_source (--func_name_limit > clean_read_ptr, 0);
-
- for (func_name_start = func_name_limit++;
- is_id_char (*func_name_start);
- func_name_start--)
- check_source (func_name_start > clean_read_ptr, 0);
- func_name_start++;
- func_name_len = func_name_limit - func_name_start;
- if (func_name_len == 0)
- check_source (0, func_name_start);
- if (func_name_len != strlen (expected)
- || strncmp (func_name_start, expected, func_name_len))
- {
- fprintf (stderr, "%s: %d: warning: found `%s' but expected `%s'\n",
- shortpath (NULL, def_dec_p->file->hash_entry->symbol),
- identify_lineno (func_name_start),
- dupnstr (func_name_start, func_name_len),
- expected);
- return 1;
- }
- }
-
- output_up_to (start_formals);
-
-#ifdef UNPROTOIZE
- if (f_list_count == 0)
- output_string (def_dec_p->formal_names);
-#else /* !defined (UNPROTOIZE) */
- {
- unsigned f_list_depth;
- const f_list_chain_item *flci_p = def_dec_p->f_list_chain;
-
- /* At this point, the current value of f_list count says how many
- links we have to follow through the f_list_chain to get to the
- particular formals list that we need to output next. */
-
- for (f_list_depth = 0; f_list_depth < f_list_count; f_list_depth++)
- flci_p = flci_p->chain_next;
- output_string (flci_p->formals_list);
- }
-#endif /* !defined (UNPROTOIZE) */
-
- clean_read_ptr = end_formals - 1;
- return 0;
-}
-
-/* Given a pointer to a byte in the clean text buffer which points to
- the beginning of a line that contains a "follower" token for a
- function definition header, do whatever is necessary to find the
- right closing paren for the rightmost formals list of the function
- definition header. */
-
-static const char *
-find_rightmost_formals_list (clean_text_p)
- const char *clean_text_p;
-{
- const char *end_formals;
-
- /* We are editing a function definition. The line number we did a seek
- to contains the first token which immediately follows the entire set of
- formals lists which are part of this particular function definition
- header.
-
- Our job now is to scan leftwards in the clean text looking for the
- right-paren which is at the end of the function header's rightmost
- formals list.
-
- If we ignore whitespace, this right paren should be the first one we
- see which is (ignoring whitespace) immediately followed either by the
- open curly-brace beginning the function body or by an alphabetic
- character (in the case where the function definition is in old (K&R)
- style and there are some declarations of formal parameters). */
-
- /* It is possible that the right paren we are looking for is on the
- current line (together with its following token). Just in case that
- might be true, we start out here by skipping down to the right end of
- the current line before starting our scan. */
-
- for (end_formals = clean_text_p; *end_formals != '\n'; end_formals++)
- continue;
- end_formals--;
-
-#ifdef UNPROTOIZE
-
- /* Now scan backwards while looking for the right end of the rightmost
- formals list associated with this function definition. */
-
- {
- char ch;
- const char *l_brace_p;
-
- /* Look leftward and try to find a right-paren. */
-
- while (*end_formals != ')')
- {
- if (ISSPACE ((unsigned char)*end_formals))
- while (ISSPACE ((unsigned char)*end_formals))
- check_source (--end_formals > clean_read_ptr, 0);
- else
- check_source (--end_formals > clean_read_ptr, 0);
- }
-
- ch = *(l_brace_p = forward_to_next_token_char (end_formals));
- /* Since we are unprotoizing an ANSI-style (prototyped) function
- definition, there had better not be anything (except whitespace)
- between the end of the ANSI formals list and the beginning of the
- function body (i.e. the '{'). */
-
- check_source (ch == '{', l_brace_p);
- }
-
-#else /* !defined (UNPROTOIZE) */
-
- /* Now scan backwards while looking for the right end of the rightmost
- formals list associated with this function definition. */
-
- while (1)
- {
- char ch;
- const char *l_brace_p;
-
- /* Look leftward and try to find a right-paren. */
-
- while (*end_formals != ')')
- {
- if (ISSPACE ((const unsigned char)*end_formals))
- while (ISSPACE ((const unsigned char)*end_formals))
- check_source (--end_formals > clean_read_ptr, 0);
- else
- check_source (--end_formals > clean_read_ptr, 0);
- }
-
- ch = *(l_brace_p = forward_to_next_token_char (end_formals));
-
- /* Since it is possible that we found a right paren before the starting
- '{' of the body which IS NOT the one at the end of the real K&R
- formals list (say for instance, we found one embedded inside one of
- the old K&R formal parameter declarations) we have to check to be
- sure that this is in fact the right paren that we were looking for.
-
- The one we were looking for *must* be followed by either a '{' or
- by an alphabetic character, while others *cannot* validly be followed
- by such characters. */
-
- if ((ch == '{') || ISALPHA ((unsigned char)ch))
- break;
-
- /* At this point, we have found a right paren, but we know that it is
- not the one we were looking for, so backup one character and keep
- looking. */
-
- check_source (--end_formals > clean_read_ptr, 0);
- }
-
-#endif /* !defined (UNPROTOIZE) */
-
- return end_formals;
-}
-
-#ifndef UNPROTOIZE
-
-/* Insert into the output file a totally new declaration for a function
- which (up until now) was being called from within the current block
- without having been declared at any point such that the declaration
- was visible (i.e. in scope) at the point of the call.
-
- We need to add in explicit declarations for all such function calls
- in order to get the full benefit of prototype-based function call
- parameter type checking. */
-
-static void
-add_local_decl (def_dec_p, clean_text_p)
- const def_dec_info *def_dec_p;
- const char *clean_text_p;
-{
- const char *start_of_block;
- const char *function_to_edit = def_dec_p->hash_entry->symbol;
-
- /* Don't insert new local explicit declarations unless explicitly requested
- to do so. */
-
- if (!local_flag)
- return;
-
- /* Setup here to recover from confusing source code detected during this
- particular "edit". */
-
- save_pointers ();
- if (setjmp (source_confusion_recovery))
- {
- restore_pointers ();
- fprintf (stderr, "%s: local declaration for function `%s' not inserted\n",
- pname, function_to_edit);
- return;
- }
-
- /* We have already done a seek to the start of the line which should
- contain *the* open curly brace which begins the block in which we need
- to insert an explicit function declaration (to replace the implicit one).
-
- Now we scan that line, starting from the left, until we find the
- open curly brace we are looking for. Note that there may actually be
- multiple open curly braces on the given line, but we will be happy
- with the leftmost one no matter what. */
-
- start_of_block = clean_text_p;
- while (*start_of_block != '{' && *start_of_block != '\n')
- check_source (++start_of_block < clean_text_limit, 0);
-
- /* Note that the line from the original source could possibly
- contain *no* open curly braces! This happens if the line contains
- a macro call which expands into a chunk of text which includes a
- block (and that block's associated open and close curly braces).
- In cases like this, we give up, issue a warning, and do nothing. */
-
- if (*start_of_block != '{')
- {
- if (!quiet_flag)
- fprintf (stderr,
- "\n%s: %d: warning: can't add declaration of `%s' into macro call\n",
- def_dec_p->file->hash_entry->symbol, def_dec_p->line,
- def_dec_p->hash_entry->symbol);
- return;
- }
-
- /* Figure out what a nice (pretty) indentation would be for the new
- declaration we are adding. In order to do this, we must scan forward
- from the '{' until we find the first line which starts with some
- non-whitespace characters (i.e. real "token" material). */
-
- {
- const char *ep = forward_to_next_token_char (start_of_block) - 1;
- const char *sp;
-
- /* Now we have ep pointing at the rightmost byte of some existing indent
- stuff. At least that is the hope.
-
- We can now just scan backwards and find the left end of the existing
- indentation string, and then copy it to the output buffer. */
-
- for (sp = ep; ISSPACE ((const unsigned char)*sp) && *sp != '\n'; sp--)
- continue;
-
- /* Now write out the open { which began this block, and any following
- trash up to and including the last byte of the existing indent that
- we just found. */
-
- output_up_to (ep);
-
- /* Now we go ahead and insert the new declaration at this point.
-
- If the definition of the given function is in the same file that we
- are currently editing, and if its full ANSI declaration normally
- would start with the keyword `extern', suppress the `extern'. */
-
- {
- const char *decl = def_dec_p->definition->ansi_decl;
-
- if ((*decl == 'e') && (def_dec_p->file == def_dec_p->definition->file))
- decl += 7;
- output_string (decl);
- }
-
- /* Finally, write out a new indent string, just like the preceding one
- that we found. This will typically include a newline as the first
- character of the indent string. */
-
- output_bytes (sp, (size_t) (ep - sp) + 1);
- }
-}
-
-/* Given a pointer to a file_info record, and a pointer to the beginning
- of a line (in the clean text buffer) which is assumed to contain the
- first "follower" token for the first function definition header in the
- given file, find a good place to insert some new global function
- declarations (which will replace scattered and imprecise implicit ones)
- and then insert the new explicit declaration at that point in the file. */
-
-static void
-add_global_decls (file_p, clean_text_p)
- const file_info *file_p;
- const char *clean_text_p;
-{
- const def_dec_info *dd_p;
- const char *scan_p;
-
- /* Setup here to recover from confusing source code detected during this
- particular "edit". */
-
- save_pointers ();
- if (setjmp (source_confusion_recovery))
- {
- restore_pointers ();
- fprintf (stderr, "%s: global declarations for file `%s' not inserted\n",
- pname, shortpath (NULL, file_p->hash_entry->symbol));
- return;
- }
-
- /* Start by finding a good location for adding the new explicit function
- declarations. To do this, we scan backwards, ignoring whitespace
- and comments and other junk until we find either a semicolon, or until
- we hit the beginning of the file. */
-
- scan_p = find_rightmost_formals_list (clean_text_p);
- for (;; --scan_p)
- {
- if (scan_p < clean_text_base)
- break;
- check_source (scan_p > clean_read_ptr, 0);
- if (*scan_p == ';')
- break;
- }
-
- /* scan_p now points either to a semicolon, or to just before the start
- of the whole file. */
-
- /* Now scan forward for the first non-whitespace character. In theory,
- this should be the first character of the following function definition
- header. We will put in the added declarations just prior to that. */
-
- scan_p++;
- while (ISSPACE ((const unsigned char)*scan_p))
- scan_p++;
- scan_p--;
-
- output_up_to (scan_p);
-
- /* Now write out full prototypes for all of the things that had been
- implicitly declared in this file (but only those for which we were
- actually able to find unique matching definitions). Avoid duplicates
- by marking things that we write out as we go. */
-
- {
- int some_decls_added = 0;
-
- for (dd_p = file_p->defs_decs; dd_p; dd_p = dd_p->next_in_file)
- if (dd_p->is_implicit && dd_p->definition && !dd_p->definition->written)
- {
- const char *decl = dd_p->definition->ansi_decl;
-
- /* If the function for which we are inserting a declaration is
- actually defined later in the same file, then suppress the
- leading `extern' keyword (if there is one). */
-
- if (*decl == 'e' && (dd_p->file == dd_p->definition->file))
- decl += 7;
-
- output_string ("\n");
- output_string (decl);
- some_decls_added = 1;
- ((NONCONST def_dec_info *) dd_p->definition)->written = 1;
- }
- if (some_decls_added)
- output_string ("\n\n");
- }
-
- /* Unmark all of the definitions that we just marked. */
-
- for (dd_p = file_p->defs_decs; dd_p; dd_p = dd_p->next_in_file)
- if (dd_p->definition)
- ((NONCONST def_dec_info *) dd_p->definition)->written = 0;
-}
-
-#endif /* !defined (UNPROTOIZE) */
-
-/* Do the editing operation specifically for a function "definition". Note
- that editing operations for function "declarations" are handled by a
- separate routine above. */
-
-static void
-edit_fn_definition (def_dec_p, clean_text_p)
- const def_dec_info *def_dec_p;
- const char *clean_text_p;
-{
- const char *end_formals;
- const char *function_to_edit = def_dec_p->hash_entry->symbol;
-
- /* Setup here to recover from confusing source code detected during this
- particular "edit". */
-
- save_pointers ();
- if (setjmp (source_confusion_recovery))
- {
- restore_pointers ();
- fprintf (stderr, "%s: definition of function `%s' not converted\n",
- pname, function_to_edit);
- return;
- }
-
- end_formals = find_rightmost_formals_list (clean_text_p);
-
- /* end_of_formals now points to the closing right paren of the rightmost
- formals list which is actually part of the `header' of the function
- definition that we are converting. */
-
- /* If the header of this function definition looks like it declares a
- function with a variable number of arguments, and if the way it does
- that is different from that way we would like it (i.e. varargs vs.
- stdarg) then issue a warning and leave the header unconverted. */
-
- if (other_variable_style_function (def_dec_p->ansi_decl))
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: %d: warning: definition of %s not converted\n",
- shortpath (NULL, def_dec_p->file->hash_entry->symbol),
- identify_lineno (end_formals),
- other_var_style);
- output_up_to (end_formals);
- return;
- }
-
- if (edit_formals_lists (end_formals, def_dec_p->f_list_count, def_dec_p))
- {
- restore_pointers ();
- fprintf (stderr, "%s: definition of function `%s' not converted\n",
- pname, function_to_edit);
- return;
- }
-
- /* Have to output the last right paren because this never gets flushed by
- edit_formals_list. */
-
- output_up_to (end_formals);
-
-#ifdef UNPROTOIZE
- {
- const char *decl_p;
- const char *semicolon_p;
- const char *limit_p;
- const char *scan_p;
- int had_newlines = 0;
-
- /* Now write out the K&R style formal declarations, one per line. */
-
- decl_p = def_dec_p->formal_decls;
- limit_p = decl_p + strlen (decl_p);
- for (;decl_p < limit_p; decl_p = semicolon_p + 2)
- {
- for (semicolon_p = decl_p; *semicolon_p != ';'; semicolon_p++)
- continue;
- output_string ("\n");
- output_string (indent_string);
- output_bytes (decl_p, (size_t) ((semicolon_p + 1) - decl_p));
- }
-
- /* If there are no newlines between the end of the formals list and the
- start of the body, we should insert one now. */
-
- for (scan_p = end_formals+1; *scan_p != '{'; )
- {
- if (*scan_p == '\n')
- {
- had_newlines = 1;
- break;
- }
- check_source (++scan_p < clean_text_limit, 0);
- }
- if (!had_newlines)
- output_string ("\n");
- }
-#else /* !defined (UNPROTOIZE) */
- /* If we are protoizing, there may be some flotsam & jetsam (like comments
- and preprocessing directives) after the old formals list but before
- the following { and we would like to preserve that stuff while effectively
- deleting the existing K&R formal parameter declarations. We do so here
- in a rather tricky way. Basically, we white out any stuff *except*
- the comments/pp-directives in the original text buffer, then, if there
- is anything in this area *other* than whitespace, we output it. */
- {
- const char *end_formals_orig;
- const char *start_body;
- const char *start_body_orig;
- const char *scan;
- const char *scan_orig;
- int have_flotsam = 0;
- int have_newlines = 0;
-
- for (start_body = end_formals + 1; *start_body != '{';)
- check_source (++start_body < clean_text_limit, 0);
-
- end_formals_orig = orig_text_base + (end_formals - clean_text_base);
- start_body_orig = orig_text_base + (start_body - clean_text_base);
- scan = end_formals + 1;
- scan_orig = end_formals_orig + 1;
- for (; scan < start_body; scan++, scan_orig++)
- {
- if (*scan == *scan_orig)
- {
- have_newlines |= (*scan_orig == '\n');
- /* Leave identical whitespace alone. */
- if (!ISSPACE ((const unsigned char)*scan_orig))
- *((NONCONST char *)scan_orig) = ' '; /* identical - so whiteout */
- }
- else
- have_flotsam = 1;
- }
- if (have_flotsam)
- output_bytes (end_formals_orig + 1,
- (size_t) (start_body_orig - end_formals_orig) - 1);
- else
- if (have_newlines)
- output_string ("\n");
- else
- output_string (" ");
- clean_read_ptr = start_body - 1;
- }
-#endif /* !defined (UNPROTOIZE) */
-}
-
-/* Clean up the clean text buffer. Do this by converting comments and
- preprocessing directives into spaces. Also convert line continuations
- into whitespace. Also, whiteout string and character literals. */
-
-static void
-do_cleaning (new_clean_text_base, new_clean_text_limit)
- char *new_clean_text_base;
- char *new_clean_text_limit;
-{
- char *scan_p;
- int non_whitespace_since_newline = 0;
-
- for (scan_p = new_clean_text_base; scan_p < new_clean_text_limit; scan_p++)
- {
- switch (*scan_p)
- {
- case '/': /* Handle comments. */
- if (scan_p[1] != '*')
- goto regular;
- non_whitespace_since_newline = 1;
- scan_p[0] = ' ';
- scan_p[1] = ' ';
- scan_p += 2;
- while (scan_p[1] != '/' || scan_p[0] != '*')
- {
- if (!ISSPACE ((const unsigned char)*scan_p))
- *scan_p = ' ';
- if (++scan_p >= new_clean_text_limit)
- abort ();
- }
- *scan_p++ = ' ';
- *scan_p = ' ';
- break;
-
- case '#': /* Handle pp directives. */
- if (non_whitespace_since_newline)
- goto regular;
- *scan_p = ' ';
- while (scan_p[1] != '\n' || scan_p[0] == '\\')
- {
- if (!ISSPACE ((const unsigned char)*scan_p))
- *scan_p = ' ';
- if (++scan_p >= new_clean_text_limit)
- abort ();
- }
- *scan_p++ = ' ';
- break;
-
- case '\'': /* Handle character literals. */
- non_whitespace_since_newline = 1;
- while (scan_p[1] != '\'' || scan_p[0] == '\\')
- {
- if (scan_p[0] == '\\'
- && !ISSPACE ((const unsigned char)scan_p[1]))
- scan_p[1] = ' ';
- if (!ISSPACE ((const unsigned char)*scan_p))
- *scan_p = ' ';
- if (++scan_p >= new_clean_text_limit)
- abort ();
- }
- *scan_p++ = ' ';
- break;
-
- case '"': /* Handle string literals. */
- non_whitespace_since_newline = 1;
- while (scan_p[1] != '"' || scan_p[0] == '\\')
- {
- if (scan_p[0] == '\\'
- && !ISSPACE ((const unsigned char)scan_p[1]))
- scan_p[1] = ' ';
- if (!ISSPACE ((const unsigned char)*scan_p))
- *scan_p = ' ';
- if (++scan_p >= new_clean_text_limit)
- abort ();
- }
- if (!ISSPACE ((const unsigned char)*scan_p))
- *scan_p = ' ';
- scan_p++;
- break;
-
- case '\\': /* Handle line continuations. */
- if (scan_p[1] != '\n')
- goto regular;
- *scan_p = ' ';
- break;
-
- case '\n':
- non_whitespace_since_newline = 0; /* Reset. */
- break;
-
- case ' ':
- case '\v':
- case '\t':
- case '\r':
- case '\f':
- case '\b':
- break; /* Whitespace characters. */
-
- default:
-regular:
- non_whitespace_since_newline = 1;
- break;
- }
- }
-}
-
-/* Given a pointer to the closing right parenthesis for a particular formals
- list (in the clean text buffer) find the corresponding left parenthesis
- and return a pointer to it. */
-
-static const char *
-careful_find_l_paren (p)
- const char *p;
-{
- const char *q;
- int paren_depth;
-
- for (paren_depth = 1, q = p-1; paren_depth; check_source (--q >= clean_text_base, 0))
- {
- switch (*q)
- {
- case ')':
- paren_depth++;
- break;
- case '(':
- paren_depth--;
- break;
- }
- }
- return ++q;
-}
-
-/* Scan the clean text buffer for cases of function definitions that we
- don't really know about because they were preprocessed out when the
- aux info files were created.
-
- In this version of protoize/unprotoize we just give a warning for each
- one found. A later version may be able to at least unprotoize such
- missed items.
-
- Note that we may easily find all function definitions simply by
- looking for places where there is a left paren which is (ignoring
- whitespace) immediately followed by either a left-brace or by an
- upper or lower case letter. Whenever we find this combination, we
- have also found a function definition header.
-
- Finding function *declarations* using syntactic clues is much harder.
- I will probably try to do this in a later version though. */
-
-static void
-scan_for_missed_items (file_p)
- const file_info *file_p;
-{
- static const char *scan_p;
- const char *limit = clean_text_limit - 3;
- static const char *backup_limit;
-
- backup_limit = clean_text_base - 1;
-
- for (scan_p = clean_text_base; scan_p < limit; scan_p++)
- {
- if (*scan_p == ')')
- {
- static const char *last_r_paren;
- const char *ahead_p;
-
- last_r_paren = scan_p;
-
- for (ahead_p = scan_p + 1; ISSPACE ((const unsigned char)*ahead_p); )
- check_source (++ahead_p < limit, limit);
-
- scan_p = ahead_p - 1;
-
- if (ISALPHA ((const unsigned char)*ahead_p) || *ahead_p == '{')
- {
- const char *last_l_paren;
- const int lineno = identify_lineno (ahead_p);
-
- if (setjmp (source_confusion_recovery))
- continue;
-
- /* We know we have a function definition header. Now skip
- leftwards over all of its associated formals lists. */
-
- do
- {
- last_l_paren = careful_find_l_paren (last_r_paren);
- for (last_r_paren = last_l_paren-1;
- ISSPACE ((const unsigned char)*last_r_paren); )
- check_source (--last_r_paren >= backup_limit, backup_limit);
- }
- while (*last_r_paren == ')');
-
- if (is_id_char (*last_r_paren))
- {
- const char *id_limit = last_r_paren + 1;
- const char *id_start;
- size_t id_length;
- const def_dec_info *dd_p;
-
- for (id_start = id_limit-1; is_id_char (*id_start); )
- check_source (--id_start >= backup_limit, backup_limit);
- id_start++;
- backup_limit = id_start;
- if ((id_length = (size_t) (id_limit - id_start)) == 0)
- goto not_missed;
-
- {
- char *func_name = (char *) alloca (id_length + 1);
- static const char * const stmt_keywords[]
- = { "if", "else", "do", "while", "for", "switch", "case", "return", 0 };
- const char * const *stmt_keyword;
-
- strncpy (func_name, id_start, id_length);
- func_name[id_length] = '\0';
-
- /* We must check here to see if we are actually looking at
- a statement rather than an actual function call. */
-
- for (stmt_keyword = stmt_keywords; *stmt_keyword; stmt_keyword++)
- if (!strcmp (func_name, *stmt_keyword))
- goto not_missed;
-
-#if 0
- fprintf (stderr, "%s: found definition of `%s' at %s(%d)\n",
- pname,
- func_name,
- shortpath (NULL, file_p->hash_entry->symbol),
- identify_lineno (id_start));
-#endif /* 0 */
- /* We really should check for a match of the function name
- here also, but why bother. */
-
- for (dd_p = file_p->defs_decs; dd_p; dd_p = dd_p->next_in_file)
- if (dd_p->is_func_def && dd_p->line == lineno)
- goto not_missed;
-
- /* If we make it here, then we did not know about this
- function definition. */
-
- fprintf (stderr, "%s: %d: warning: `%s' excluded by preprocessing\n",
- shortpath (NULL, file_p->hash_entry->symbol),
- identify_lineno (id_start), func_name);
- fprintf (stderr, "%s: function definition not converted\n",
- pname);
- }
- not_missed: ;
- }
- }
- }
- }
-}
-
-/* Do all editing operations for a single source file (either a "base" file
- or an "include" file). To do this we read the file into memory, keep a
- virgin copy there, make another cleaned in-core copy of the original file
- (i.e. one in which all of the comments and preprocessing directives have
- been replaced with whitespace), then use these two in-core copies of the
- file to make a new edited in-core copy of the file. Finally, rename the
- original file (as a way of saving it), and then write the edited version
- of the file from core to a disk file of the same name as the original.
-
- Note that the trick of making a copy of the original sans comments &
- preprocessing directives make the editing a whole lot easier. */
-
-static void
-edit_file (hp)
- const hash_table_entry *hp;
-{
- struct stat stat_buf;
- const file_info *file_p = hp->fip;
- char *new_orig_text_base;
- char *new_orig_text_limit;
- char *new_clean_text_base;
- char *new_clean_text_limit;
- size_t orig_size;
- size_t repl_size;
- int first_definition_in_file;
-
- /* If we are not supposed to be converting this file, or if there is
- nothing in there which needs converting, just skip this file. */
-
- if (!needs_to_be_converted (file_p))
- return;
-
- convert_filename = file_p->hash_entry->symbol;
-
- /* Convert a file if it is in a directory where we want conversion
- and the file is not excluded. */
-
- if (!directory_specified_p (convert_filename)
- || file_excluded_p (convert_filename))
- {
- if (!quiet_flag
-#ifdef UNPROTOIZE
- /* Don't even mention "system" include files unless we are
- protoizing. If we are protoizing, we mention these as a
- gentle way of prodding the user to convert his "system"
- include files to prototype format. */
- && !in_system_include_dir (convert_filename)
-#endif /* defined (UNPROTOIZE) */
- )
- fprintf (stderr, "%s: `%s' not converted\n",
- pname, shortpath (NULL, convert_filename));
- return;
- }
-
- /* Let the user know what we are up to. */
-
- if (nochange_flag)
- fprintf (stderr, "%s: would convert file `%s'\n",
- pname, shortpath (NULL, convert_filename));
- else
- fprintf (stderr, "%s: converting file `%s'\n",
- pname, shortpath (NULL, convert_filename));
- fflush (stderr);
-
- /* Find out the size (in bytes) of the original file. */
-
- /* The cast avoids an erroneous warning on AIX. */
- if (my_stat ((char *)convert_filename, &stat_buf) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't get status for file `%s': %s\n",
- pname, shortpath (NULL, convert_filename),
- xstrerror (errno_val));
- return;
- }
- orig_size = stat_buf.st_size;
-
- /* Allocate a buffer to hold the original text. */
-
- orig_text_base = new_orig_text_base = (char *) xmalloc (orig_size + 2);
- orig_text_limit = new_orig_text_limit = new_orig_text_base + orig_size;
-
- /* Allocate a buffer to hold the cleaned-up version of the original text. */
-
- clean_text_base = new_clean_text_base = (char *) xmalloc (orig_size + 2);
- clean_text_limit = new_clean_text_limit = new_clean_text_base + orig_size;
- clean_read_ptr = clean_text_base - 1;
-
- /* Allocate a buffer that will hopefully be large enough to hold the entire
- converted output text. As an initial guess for the maximum size of the
- output buffer, use 125% of the size of the original + some extra. This
- buffer can be expanded later as needed. */
-
- repl_size = orig_size + (orig_size >> 2) + 4096;
- repl_text_base = (char *) xmalloc (repl_size + 2);
- repl_text_limit = repl_text_base + repl_size - 1;
- repl_write_ptr = repl_text_base - 1;
-
- {
- int input_file;
-
- /* Open the file to be converted in READ ONLY mode. */
-
- if ((input_file = my_open (convert_filename, O_RDONLY, 0444)) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't open file `%s' for reading: %s\n",
- pname, shortpath (NULL, convert_filename),
- xstrerror (errno_val));
- return;
- }
-
- /* Read the entire original source text file into the original text buffer
- in one swell fwoop. Then figure out where the end of the text is and
- make sure that it ends with a newline followed by a null. */
-
- if (safe_read (input_file, new_orig_text_base, orig_size) !=
- (int) orig_size)
- {
- int errno_val = errno;
- close (input_file);
- fprintf (stderr, "\n%s: error reading input file `%s': %s\n",
- pname, shortpath (NULL, convert_filename),
- xstrerror (errno_val));
- return;
- }
-
- close (input_file);
- }
-
- if (orig_size == 0 || orig_text_limit[-1] != '\n')
- {
- *new_orig_text_limit++ = '\n';
- orig_text_limit++;
- }
-
- /* Create the cleaned up copy of the original text. */
-
- memcpy (new_clean_text_base, orig_text_base,
- (size_t) (orig_text_limit - orig_text_base));
- do_cleaning (new_clean_text_base, new_clean_text_limit);
-
-#if 0
- {
- int clean_file;
- size_t clean_size = orig_text_limit - orig_text_base;
- char *const clean_filename = (char *) alloca (strlen (convert_filename) + 6 + 1);
-
- /* Open (and create) the clean file. */
-
- strcpy (clean_filename, convert_filename);
- strcat (clean_filename, ".clean");
- if ((clean_file = creat (clean_filename, 0666)) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't create/open clean file `%s': %s\n",
- pname, shortpath (NULL, clean_filename),
- xstrerror (errno_val));
- return;
- }
-
- /* Write the clean file. */
-
- safe_write (clean_file, new_clean_text_base, clean_size, clean_filename);
-
- close (clean_file);
- }
-#endif /* 0 */
-
- /* Do a simplified scan of the input looking for things that were not
- mentioned in the aux info files because of the fact that they were
- in a region of the source which was preprocessed-out (via #if or
- via #ifdef). */
-
- scan_for_missed_items (file_p);
-
- /* Setup to do line-oriented forward seeking in the clean text buffer. */
-
- last_known_line_number = 1;
- last_known_line_start = clean_text_base;
-
- /* Now get down to business and make all of the necessary edits. */
-
- {
- const def_dec_info *def_dec_p;
-
- first_definition_in_file = 1;
- def_dec_p = file_p->defs_decs;
- for (; def_dec_p; def_dec_p = def_dec_p->next_in_file)
- {
- const char *clean_text_p = seek_to_line (def_dec_p->line);
-
- /* clean_text_p now points to the first character of the line which
- contains the `terminator' for the declaration or definition that
- we are about to process. */
-
-#ifndef UNPROTOIZE
-
- if (global_flag && def_dec_p->is_func_def && first_definition_in_file)
- {
- add_global_decls (def_dec_p->file, clean_text_p);
- first_definition_in_file = 0;
- }
-
- /* Don't edit this item if it is already in prototype format or if it
- is a function declaration and we have found no corresponding
- definition. */
-
- if (def_dec_p->prototyped
- || (!def_dec_p->is_func_def && !def_dec_p->definition))
- continue;
-
-#endif /* !defined (UNPROTOIZE) */
-
- if (def_dec_p->is_func_def)
- edit_fn_definition (def_dec_p, clean_text_p);
- else
-#ifndef UNPROTOIZE
- if (def_dec_p->is_implicit)
- add_local_decl (def_dec_p, clean_text_p);
- else
-#endif /* !defined (UNPROTOIZE) */
- edit_fn_declaration (def_dec_p, clean_text_p);
- }
- }
-
- /* Finalize things. Output the last trailing part of the original text. */
-
- output_up_to (clean_text_limit - 1);
-
- /* If this is just a test run, stop now and just deallocate the buffers. */
-
- if (nochange_flag)
- {
- free (new_orig_text_base);
- free (new_clean_text_base);
- free (repl_text_base);
- return;
- }
-
- /* Change the name of the original input file. This is just a quick way of
- saving the original file. */
-
- if (!nosave_flag)
- {
- char *new_filename
- = (char *) xmalloc (strlen (convert_filename) + strlen (save_suffix) + 2);
-
- strcpy (new_filename, convert_filename);
- strcat (new_filename, save_suffix);
- if (my_link (convert_filename, new_filename) == -1)
- {
- int errno_val = errno;
- if (errno_val == EEXIST)
- {
- if (!quiet_flag)
- fprintf (stderr, "%s: warning: file `%s' already saved in `%s'\n",
- pname,
- shortpath (NULL, convert_filename),
- shortpath (NULL, new_filename));
- }
- else
- {
- fprintf (stderr, "%s: can't link file `%s' to `%s': %s\n",
- pname,
- shortpath (NULL, convert_filename),
- shortpath (NULL, new_filename),
- xstrerror (errno_val));
- return;
- }
- }
- }
-
- if (my_unlink (convert_filename) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't delete file `%s': %s\n",
- pname, shortpath (NULL, convert_filename),
- xstrerror (errno_val));
- return;
- }
-
- {
- int output_file;
-
- /* Open (and create) the output file. */
-
- if ((output_file = creat (convert_filename, 0666)) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't create/open output file `%s': %s\n",
- pname, shortpath (NULL, convert_filename),
- xstrerror (errno_val));
- return;
- }
-
- /* Write the output file. */
-
- {
- unsigned int out_size = (repl_write_ptr + 1) - repl_text_base;
-
- safe_write (output_file, repl_text_base, out_size, convert_filename);
- }
-
- close (output_file);
- }
-
- /* Deallocate the conversion buffers. */
-
- free (new_orig_text_base);
- free (new_clean_text_base);
- free (repl_text_base);
-
- /* Change the mode of the output file to match the original file. */
-
- /* The cast avoids an erroneous warning on AIX. */
- if (my_chmod ((char *)convert_filename, stat_buf.st_mode) == -1)
- {
- int errno_val = errno;
- fprintf (stderr, "%s: can't change mode of file `%s': %s\n",
- pname, shortpath (NULL, convert_filename),
- xstrerror (errno_val));
- }
-
- /* Note: We would try to change the owner and group of the output file
- to match those of the input file here, except that may not be a good
- thing to do because it might be misleading. Also, it might not even
- be possible to do that (on BSD systems with quotas for instance). */
-}
-
-/* Do all of the individual steps needed to do the protoization (or
- unprotoization) of the files referenced in the aux_info files given
- in the command line. */
-
-static void
-do_processing ()
-{
- const char * const *base_pp;
- const char * const * const end_pps
- = &base_source_filenames[n_base_source_files];
-
-#ifndef UNPROTOIZE
- int syscalls_len;
-#endif /* !defined (UNPROTOIZE) */
-
- /* One-by-one, check (and create if necessary), open, and read all of the
- stuff in each aux_info file. After reading each aux_info file, the
- aux_info_file just read will be automatically deleted unless the
- keep_flag is set. */
-
- for (base_pp = base_source_filenames; base_pp < end_pps; base_pp++)
- process_aux_info_file (*base_pp, keep_flag, 0);
-
-#ifndef UNPROTOIZE
-
- /* Also open and read the special SYSCALLS.c aux_info file which gives us
- the prototypes for all of the standard system-supplied functions. */
-
- if (nondefault_syscalls_dir)
- {
- syscalls_absolute_filename
- = (char *) xmalloc (strlen (nondefault_syscalls_dir)
- + sizeof (syscalls_filename) + 1);
- strcpy (syscalls_absolute_filename, nondefault_syscalls_dir);
- }
- else
- {
- syscalls_absolute_filename
- = (char *) xmalloc (strlen (default_syscalls_dir)
- + sizeof (syscalls_filename) + 1);
- strcpy (syscalls_absolute_filename, default_syscalls_dir);
- }
-
- syscalls_len = strlen (syscalls_absolute_filename);
- if (*(syscalls_absolute_filename + syscalls_len - 1) != '/')
- {
- *(syscalls_absolute_filename + syscalls_len++) = '/';
- *(syscalls_absolute_filename + syscalls_len) = '\0';
- }
- strcat (syscalls_absolute_filename, syscalls_filename);
-
- /* Call process_aux_info_file in such a way that it does not try to
- delete the SYSCALLS aux_info file. */
-
- process_aux_info_file (syscalls_absolute_filename, 1, 1);
-
-#endif /* !defined (UNPROTOIZE) */
-
- /* When we first read in all of the information from the aux_info files
- we saved in it descending line number order, because that was likely to
- be faster. Now however, we want the chains of def & dec records to
- appear in ascending line number order as we get further away from the
- file_info record that they hang from. The following line causes all of
- these lists to be rearranged into ascending line number order. */
-
- visit_each_hash_node (filename_primary, reverse_def_dec_list);
-
-#ifndef UNPROTOIZE
-
- /* Now do the "real" work. The following line causes each declaration record
- to be "visited". For each of these nodes, an attempt is made to match
- up the function declaration with a corresponding function definition,
- which should have a full prototype-format formals list with it. Once
- these match-ups are made, the conversion of the function declarations
- to prototype format can be made. */
-
- visit_each_hash_node (function_name_primary, connect_defs_and_decs);
-
-#endif /* !defined (UNPROTOIZE) */
-
- /* Now convert each file that can be converted (and needs to be). */
-
- visit_each_hash_node (filename_primary, edit_file);
-
-#ifndef UNPROTOIZE
-
- /* If we are working in cplusplus mode, try to rename all .c files to .C
- files. Don't panic if some of the renames don't work. */
-
- if (cplusplus_flag && !nochange_flag)
- visit_each_hash_node (filename_primary, rename_c_file);
-
-#endif /* !defined (UNPROTOIZE) */
-}
-
-static struct option longopts[] =
-{
- {"version", 0, 0, 'V'},
- {"file_name", 0, 0, 'p'},
- {"quiet", 0, 0, 'q'},
- {"silent", 0, 0, 'q'},
- {"force", 0, 0, 'f'},
- {"keep", 0, 0, 'k'},
- {"nosave", 0, 0, 'N'},
- {"nochange", 0, 0, 'n'},
- {"compiler-options", 1, 0, 'c'},
- {"exclude", 1, 0, 'x'},
- {"directory", 1, 0, 'd'},
-#ifdef UNPROTOIZE
- {"indent", 1, 0, 'i'},
-#else
- {"local", 0, 0, 'l'},
- {"global", 0, 0, 'g'},
- {"c++", 0, 0, 'C'},
- {"syscalls-dir", 1, 0, 'B'},
-#endif
- {0, 0, 0, 0}
-};
-
-int
-main (argc, argv)
- int argc;
- char **const argv;
-{
- int longind;
- int c;
- const char *params = "";
-
- pname = strrchr (argv[0], '/');
- pname = pname ? pname+1 : argv[0];
-
- cwd_buffer = getpwd ();
- if (!cwd_buffer)
- {
- fprintf (stderr, "%s: cannot get working directory: %s\n",
- pname, xstrerror(errno));
- exit (FATAL_EXIT_CODE);
- }
-
- /* By default, convert the files in the current directory. */
- directory_list = string_list_cons (cwd_buffer, NULL);
-
- while ((c = getopt_long (argc, argv,
-#ifdef UNPROTOIZE
- "c:d:i:knNp:qvVx:",
-#else
- "B:c:Cd:gklnNp:qvVx:",
-#endif
- longopts, &longind)) != EOF)
- {
- if (c == 0) /* Long option. */
- c = longopts[longind].val;
- switch (c)
- {
- case 'p':
- compiler_file_name = optarg;
- break;
- case 'd':
- directory_list
- = string_list_cons (abspath (NULL, optarg), directory_list);
- break;
- case 'x':
- exclude_list = string_list_cons (optarg, exclude_list);
- break;
-
- case 'v':
- case 'V':
- version_flag = 1;
- break;
- case 'q':
- quiet_flag = 1;
- break;
-#if 0
- case 'f':
- force_flag = 1;
- break;
-#endif
- case 'n':
- nochange_flag = 1;
- keep_flag = 1;
- break;
- case 'N':
- nosave_flag = 1;
- break;
- case 'k':
- keep_flag = 1;
- break;
- case 'c':
- params = optarg;
- break;
-#ifdef UNPROTOIZE
- case 'i':
- indent_string = optarg;
- break;
-#else /* !defined (UNPROTOIZE) */
- case 'l':
- local_flag = 1;
- break;
- case 'g':
- global_flag = 1;
- break;
- case 'C':
- cplusplus_flag = 1;
- break;
- case 'B':
- nondefault_syscalls_dir = optarg;
- break;
-#endif /* !defined (UNPROTOIZE) */
- default:
- usage ();
- }
- }
-
- /* Set up compile_params based on -p and -c options. */
- munge_compile_params (params);
-
- n_base_source_files = argc - optind;
-
- /* Now actually make a list of the base source filenames. */
-
- base_source_filenames
- = (const char **) xmalloc ((n_base_source_files + 1) * sizeof (char *));
- n_base_source_files = 0;
- for (; optind < argc; optind++)
- {
- const char *path = abspath (NULL, argv[optind]);
- int len = strlen (path);
-
- if (path[len-1] == 'c' && path[len-2] == '.')
- base_source_filenames[n_base_source_files++] = path;
- else
- {
- fprintf (stderr, "%s: input file names must have .c suffixes: %s\n",
- pname, shortpath (NULL, path));
- errors++;
- }
- }
-
-#ifndef UNPROTOIZE
- /* We are only interested in the very first identifier token in the
- definition of `va_list', so if there is more junk after that first
- identifier token, delete it from the `varargs_style_indicator'. */
- {
- const char *cp;
-
- for (cp = varargs_style_indicator;
- ISALNUM ((const unsigned char)*cp) || *cp == '_'; cp++)
- continue;
- if (*cp != 0)
- varargs_style_indicator = savestring (varargs_style_indicator,
- cp - varargs_style_indicator);
- }
-#endif /* !defined (UNPROTOIZE) */
-
- if (errors)
- usage ();
- else
- {
- if (version_flag)
- fprintf (stderr, "%s: %s\n", pname, version_string);
- do_processing ();
- }
-
- exit (errors ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
-
- return 1;
-}
diff --git a/gcc/scan-decls.c b/gcc/scan-decls.c
deleted file mode 100755
index 2c6f12a..0000000
--- a/gcc/scan-decls.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* scan-decls.c - Extracts declarations from cpp output.
- Copyright (C) 1993, 1995, 1997, 1998 Free Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- Written by Per Bothner <bothner@cygnus.com>, July 1993. */
-
-#include "hconfig.h"
-#include "system.h"
-#include "cpplib.h"
-#include "scan.h"
-
-int brace_nesting = 0;
-
-/* The first extern_C_braces_length elements of extern_C_braces
- indicate the (brace nesting levels of) left braces that were
- prefixed by extern "C". */
-int extern_C_braces_length = 0;
-char extern_C_braces[20];
-#define in_extern_C_brace (extern_C_braces_length>0)
-
-/* True if the function declaration currently being scanned is
- prefixed by extern "C". */
-int current_extern_C = 0;
-
-static void
-skip_to_closing_brace (pfile)
- cpp_reader *pfile;
-{
- int nesting = 1;
- for (;;)
- {
- enum cpp_token token = cpp_get_token (pfile);
- if (token == CPP_EOF)
- break;
- if (token == CPP_LBRACE)
- nesting++;
- if (token == CPP_RBRACE && --nesting == 0)
- break;
- }
-}
-
-/* This function scans a C source file (actually, the output of cpp),
- reading from FP. It looks for function declarations, and
- external variable declarations.
-
- The following grammar (as well as some extra stuff) is recognized:
-
- declaration:
- (decl-specifier)* declarator ("," declarator)* ";"
- decl-specifier:
- identifier
- keyword
- extern "C"
- declarator:
- (ptr-operator)* dname [ "(" argument-declaration-list ")" ]
- ptr-operator:
- ("*" | "&") ("const" | "volatile")*
- dname:
- identifier
-
-Here dname is the actual name being declared.
-*/
-
-int
-scan_decls (pfile, argc, argv)
- cpp_reader *pfile;
- int argc ATTRIBUTE_UNUSED;
- char **argv ATTRIBUTE_UNUSED;
-{
- int saw_extern, saw_inline;
- int start_written;
- /* If declarator_start is non-zero, it marks the start of the current
- declarator. If it is zero, we are either still parsing the
- decl-specs, or prev_id_start marks the start of the declarator. */
- int declarator_start;
- int prev_id_start, prev_id_end;
- enum cpp_token token;
-
- new_statement:
- CPP_SET_WRITTEN (pfile, 0);
- start_written = 0;
- token = cpp_get_token (pfile);
-
- handle_statement:
- current_extern_C = 0;
- saw_extern = 0;
- saw_inline = 0;
- if (token == CPP_RBRACE)
- {
- /* Pop an 'extern "C"' nesting level, if appropriate. */
- if (extern_C_braces_length
- && extern_C_braces[extern_C_braces_length - 1] == brace_nesting)
- extern_C_braces_length--;
- brace_nesting--;
- goto new_statement;
- }
- if (token == CPP_LBRACE)
- {
- brace_nesting++;
- goto new_statement;
- }
- if (token == CPP_EOF)
- return 0;
- if (token == CPP_SEMICOLON)
- goto new_statement;
- if (token != CPP_NAME)
- goto new_statement;
-
- prev_id_start = 0;
- declarator_start = 0;
- for (;;)
- {
- switch (token)
- {
- case CPP_LPAREN:
- /* Looks like this is the start of a formal parameter list. */
- if (prev_id_start)
- {
- int nesting = 1;
- int have_arg_list = 0;
- cpp_buffer *fbuf = cpp_file_buffer (pfile);
- long func_lineno;
- cpp_buf_line_and_col (fbuf, &func_lineno, NULL);
- for (;;)
- {
- token = cpp_get_token (pfile);
- if (token == CPP_LPAREN)
- nesting++;
- else if (token == CPP_RPAREN)
- {
- nesting--;
- if (nesting == 0)
- break;
- }
- else if (token == CPP_EOF)
- break;
- else if (token == CPP_NAME || token == CPP_3DOTS)
- have_arg_list = 1;
- }
- recognized_function (pfile->token_buffer + prev_id_start,
- prev_id_end - prev_id_start,
- (saw_inline ? 'I'
- : in_extern_C_brace || current_extern_C
- ? 'F' : 'f'),
- pfile->token_buffer, prev_id_start,
- have_arg_list,
- fbuf->nominal_fname, func_lineno);
- token = cpp_get_non_space_token (pfile);
- if (token == CPP_LBRACE)
- {
- /* skip body of (normally) inline function */
- skip_to_closing_brace (pfile);
- goto new_statement;
- }
- goto maybe_handle_comma;
- }
- break;
- case CPP_OTHER:
- if (CPP_WRITTEN (pfile) == (size_t) start_written + 1
- && (CPP_PWRITTEN (pfile)[-1] == '*'
- || CPP_PWRITTEN (pfile)[-1] == '&'))
- declarator_start = start_written;
- else
- goto handle_statement;
- break;
- case CPP_COMMA:
- case CPP_SEMICOLON:
- if (prev_id_start && saw_extern)
- {
- recognized_extern (pfile->token_buffer + prev_id_start,
- prev_id_end - prev_id_start,
- pfile->token_buffer,
- prev_id_start);
- }
- /* ... fall through ... */
- maybe_handle_comma:
- if (token != CPP_COMMA)
- goto new_statement;
- handle_comma:
- /* Handle multiple declarators in a single declaration,
- as in: extern char *strcpy (), *strcat (), ... ; */
- if (declarator_start == 0)
- declarator_start = prev_id_start;
- CPP_SET_WRITTEN (pfile, declarator_start);
- break;
- case CPP_NAME:
- /* "inline" and "extern" are recognized but skipped */
- if (strcmp (pfile->token_buffer, "inline") == 0)
- {
- saw_inline = 1;
- CPP_SET_WRITTEN (pfile, start_written);
- }
- if (strcmp (pfile->token_buffer, "extern") == 0)
- {
- saw_extern = 1;
- CPP_SET_WRITTEN (pfile, start_written);
- token = cpp_get_non_space_token (pfile);
- if (token == CPP_STRING
- && strcmp (pfile->token_buffer, "\"C\"") == 0)
- {
- CPP_SET_WRITTEN (pfile, start_written);
- current_extern_C = 1;
- token = cpp_get_non_space_token (pfile);
- if (token == CPP_LBRACE)
- {
- brace_nesting++;
- extern_C_braces[extern_C_braces_length++]
- = brace_nesting;
- goto new_statement;
- }
- }
- else
- continue;
- break;
- }
- /* This may be the name of a variable or function. */
- prev_id_start = start_written;
- prev_id_end = CPP_WRITTEN (pfile);
- break;
-
- case CPP_EOF:
- return 0;
-
- case CPP_LBRACE: case CPP_RBRACE: case CPP_DIRECTIVE:
- goto new_statement; /* handle_statement? */
-
- case CPP_HSPACE: case CPP_VSPACE: case CPP_COMMENT: case CPP_POP:
- /* Skip initial white space. */
- if (start_written == 0)
- CPP_SET_WRITTEN (pfile, 0);
- break;
-
- default:
- prev_id_start = 0;
- }
-
- start_written = CPP_WRITTEN (pfile);
- token = cpp_get_token (pfile);
- }
-}
diff --git a/gcc/scan.c b/gcc/scan.c
deleted file mode 100755
index 156cd0e..0000000
--- a/gcc/scan.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* Utility functions for scan-decls and fix-header programs.
- Copyright (C) 1993, 1994, 1998 Free Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include "hconfig.h"
-#include "system.h"
-#include "scan.h"
-
-int lineno = 1;
-int source_lineno = 1;
-sstring source_filename;
-
-void
-make_sstring_space (str, count)
- sstring *str;
- int count;
-{
- int cur_pos = str->ptr - str->base;
- int cur_size = str->limit - str->base;
- int new_size = cur_pos + count + 100;
-
- if (new_size <= cur_size)
- return;
-
- if (str->base == NULL)
- str->base = xmalloc (new_size);
- else
- str->base = xrealloc (str->base, new_size);
- str->ptr = str->base + cur_size;
- str->limit = str->base + new_size;
-}
-
-void
-sstring_append (dst, src)
- sstring *dst;
- sstring *src;
-{
- register char *d, *s;
- register int count = SSTRING_LENGTH(src);
- MAKE_SSTRING_SPACE(dst, count + 1);
- d = dst->ptr;
- s = src->base;
- while (--count >= 0) *d++ = *s++;
- dst->ptr = d;
- *d = 0;
-}
-
-int
-scan_ident (fp, s, c)
- register FILE *fp;
- register sstring *s;
- int c;
-{
- s->ptr = s->base;
- if (ISALPHA(c) || c == '_')
- {
- for (;;)
- {
- SSTRING_PUT(s, c);
- c = getc (fp);
- if (c == EOF || !(ISALNUM(c) || c == '_'))
- break;
- }
- }
- MAKE_SSTRING_SPACE(s, 1);
- *s->ptr = 0;
- return c;
-}
-
-int
-scan_string (fp, s, init)
- register FILE *fp;
- register sstring *s;
- int init;
-{
- int c;
- for (;;)
- {
- c = getc (fp);
- if (c == EOF || c == '\n')
- break;
- if (c == init)
- {
- c = getc (fp);
- break;
- }
- if (c == '\\')
- {
- c = getc (fp);
- if (c == EOF)
- break;
- if (c == '\n')
- continue;
- }
- SSTRING_PUT(s, c);
- }
- MAKE_SSTRING_SPACE(s, 1);
- *s->ptr = 0;
- return c;
-}
-
-/* Skip horizontal white spaces (spaces, tabs, and C-style comments). */
-
-int
-skip_spaces (fp, c)
- register FILE *fp;
- int c;
-{
- for (;;)
- {
- if (c == ' ' || c == '\t')
- c = getc (fp);
- else if (c == '/')
- {
- c = getc (fp);
- if (c != '*')
- {
- ungetc (c, fp);
- return '/';
- }
- c = getc (fp);
- for (;;)
- {
- if (c == EOF)
- return EOF;
- else if (c != '*')
- {
- if (c == '\n')
- source_lineno++, lineno++;
- c = getc (fp);
- }
- else if ((c = getc (fp)) == '/')
- return getc (fp);
- }
- }
- else
- break;
- }
- return c;
-}
-
-int
-read_upto (fp, str, delim)
- FILE *fp;
- sstring *str;
- int delim;
-{
- int ch;
- for (;;)
- {
- ch = getc (fp);
- if (ch == EOF || ch == delim)
- break;
- SSTRING_PUT(str, ch);
- }
- MAKE_SSTRING_SPACE(str, 1);
- *str->ptr = 0;
- return ch;
-}
-
-int
-get_token (fp, s)
- register FILE *fp;
- register sstring *s;
-{
- int c;
- s->ptr = s->base;
- retry:
- c = ' ';
- c = skip_spaces (fp, c);
- if (c == '\n')
- {
- source_lineno++;
- lineno++;
- goto retry;
- }
- if (c == '#')
- {
- c = get_token (fp, s);
- if (c == INT_TOKEN)
- {
- source_lineno = atoi (s->base) - 1; /* '\n' will add 1 */
- get_token (fp, &source_filename);
- }
- for (;;)
- {
- c = getc (fp);
- if (c == EOF)
- return EOF;
- if (c == '\n')
- {
- source_lineno++;
- lineno++;
- goto retry;
- }
- }
- }
- if (c == EOF)
- return EOF;
- if (ISDIGIT (c))
- {
- do
- {
- SSTRING_PUT(s, c);
- c = getc (fp);
- } while (c != EOF && ISDIGIT(c));
- ungetc (c, fp);
- c = INT_TOKEN;
- goto done;
- }
- if (ISALPHA (c) || c == '_')
- {
- c = scan_ident (fp, s, c);
- ungetc (c, fp);
- return IDENTIFIER_TOKEN;
- }
- if (c == '\'' || c == '"')
- {
- c = scan_string (fp, s, c);
- ungetc (c, fp);
- return c == '\'' ? CHAR_TOKEN : STRING_TOKEN;
- }
- SSTRING_PUT(s, c);
- done:
- MAKE_SSTRING_SPACE(s, 1);
- *s->ptr = 0;
- return c;
-}
diff --git a/gcc/scan.h b/gcc/scan.h
deleted file mode 100755
index 5839bfe..0000000
--- a/gcc/scan.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* scan.h - Utility declarations for scan-decls and fix-header programs.
- Copyright (C) 1993, 1998 Free Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdio.h>
-
-typedef struct sstring
-{
- char *base;
- char *ptr;
- char *limit;
-} sstring;
-
-#define INIT_SSTRING(STR) ((STR)->base = 0, (STR)->ptr = 0, (STR)->limit = 0)
-#define FREE_SSTRING(STR) do { if ((STR)->base) free (STR)->base; } while(0)
-#define SSTRING_PUT(STR, C) do {\
- if ((STR)->limit <= (STR)->ptr) make_sstring_space (STR, 1); \
- *(STR)->ptr++ = (C); } while (0)
-#define SSTRING_LENGTH(STR) ((STR)->ptr - (STR)->base)
-#define MAKE_SSTRING_SPACE(STR, COUNT) \
- if ((STR)->limit - (STR)->ptr < (COUNT)) make_sstring_space (STR, COUNT);
-
-#ifndef _PARAMS
-#if defined(ANSI_PROTOTYPES) || defined(__cplusplus)
-#define _PARAMS(args) args
-#else
-#define _PARAMS(args) ()
-#endif
-#endif
-
-struct partial_proto;
-struct fn_decl
-{
- char *fname;
- char *rtype;
- char *params;
- struct partial_proto *partial;
-};
-
-extern int lineno;
-extern void sstring_append _PARAMS((sstring *, sstring *));
-extern void make_sstring_space _PARAMS((sstring *, int));
-extern int skip_spaces _PARAMS((FILE *, int));
-extern int scan_ident _PARAMS((FILE *, sstring *, int));
-extern int scan_string _PARAMS((FILE *, sstring *, int));
-extern int read_upto _PARAMS((FILE *, sstring *, int));
-extern unsigned long hash _PARAMS((const char *));
-extern void recognized_function _PARAMS((char *, int, int, char *, int, int, char *, int));
-extern void recognized_extern _PARAMS((char *, int, char *, int));
-
-/* get_token is a simple C lexer. */
-#define IDENTIFIER_TOKEN 300
-#define CHAR_TOKEN 301
-#define STRING_TOKEN 302
-#define INT_TOKEN 303
-extern int get_token _PARAMS ((FILE *, sstring *));
-
-/* Current file and line numer, taking #-directives into account */
-extern int source_lineno;
-extern sstring source_filename;
-/* Current physical line number */
-extern int lineno;
diff --git a/gcc/sys-protos.h b/gcc/sys-protos.h
deleted file mode 100755
index ab6e407..0000000
--- a/gcc/sys-protos.h
+++ /dev/null
@@ -1,1354 +0,0 @@
-extern int TLappend(/* ??? */);
-extern int TLassign(/* ??? */);
-extern int TLclose(/* ??? */);
-extern int TLdelete(/* ??? */);
-extern int TLfreeentry(/* ??? */);
-extern ENTRY TLgetentry(/* ??? */);
-extern unsigned char * TLgetfield(/* ??? */);
-extern int TLopen(/* ??? */);
-extern int TLread(/* ??? */);
-extern int TLsearch1(/* ??? */);
-extern int TLsubst(/* ??? */);
-extern int TLsync(/* ??? */);
-extern int TLwrite(/* ??? */);
-extern int __acancel(int, const long int *, int);
-extern int __aread(int, int, char *, uint, ecb_t *);
-extern void __assert(const char *, const char *, int);
-extern int __asyncio(int, aioop_t *, int);
-extern int __awrite(int, int, char *, uint, ecb_t *);
-extern void __eprintf(const char *);
-extern int __evcntl(evver_t, evcntlcmds_t, long int, long int);
-extern int __evexit(evver_t, idtype_t, id_t, const ecb_t *);
-extern int __evexitset(evver_t, const procset_t *, hostid_t, const ecb_t *);
-extern int __evpoll(evver_t, evpollcmds_t, event_t *, int, const hrtime_t *);
-extern int __evpollmore(evver_t, event_t *, int);
-extern int __evpost(evver_t, event_t *, int, int);
-extern int __evqcntl(evver_t, int, evqcntlcmds_t, long int);
-extern int __evsig(evver_t, const sigset_t *, const ecb_t *, evsiginfo_t *, int);
-extern int __evtrap(evver_t, evpollcmds_t, event_t *, int, long int, void (*) (event_t *, int, long int, evcontext_t *), const evta_t *);
-extern int __evtrapcancel(evver_t, long int *, int);
-extern int __filbuf(FILE *);
-extern int __flsbuf(int, FILE *);
-extern major_t __major(int, dev_t);
-extern dev_t __makedev(int, major_t, minor_t);
-extern minor_t __minor(int, dev_t);
-extern long int __priocntl(/* ??? */);
-extern long int __priocntlset(/* ??? */);
-extern void _exit(int);
-extern int _filbuf(FILE *);
-extern int _flsbuf(unsigned int, FILE *);
-extern int _fxstat(int, int, struct stat *);
-extern u_long _getlong(/* ??? */);
-extern u_short _getshort(/* ??? */);
-extern int _getsyx(int *, int *);
-extern int _longjmp(jmp_buf, int);
-extern int _lxstat(int, const char *, struct stat *);
-extern int _meta(int);
-extern struct nd_hostservlist _netdir_getbyaddr(struct netconfig *, struct netbuf *);
-extern struct nd_addrlist * _netdir_getbyname(struct netconfig *, struct nd_hostserv *);
-extern int _overlay(WINDOW *, WINDOW *, int);
-extern int _ring(int);
-extern int _rpc_dtbsize(/* ??? */);
-extern int _rpc_endconf(/* ??? */);
-extern u_int _rpc_get_a_size(/* ??? */);
-extern u_int _rpc_get_t_size(/* ??? */);
-extern struct netconfig * _rpc_getconf(/* ??? */);
-extern struct netconfig * _rpc_getconfip(/* ??? */);
-extern char * _rpc_gethostname(/* ??? */);
-extern int _rpc_setconf(/* ??? */);
-extern void _s_aligned_copy(/* ??? */);
-extern struct _si_user * _s_checkfd(/* ??? */);
-extern void _s_close(/* ??? */);
-extern int _s_do_ioctl(/* ??? */);
-extern int _s_getfamily(/* ??? */);
-extern int _s_getudata(/* ??? */);
-extern int _s_is_ok(/* ??? */);
-extern struct netconfig * _s_match(/* ??? */);
-extern int _s_max(/* ??? */);
-extern int _s_min(/* ??? */);
-extern struct _si_user * _s_open(/* ??? */);
-extern int _s_soreceive(/* ??? */);
-extern int _s_sosend(/* ??? */);
-extern int _s_uxpathlen(/* ??? */);
-extern int _setecho(int);
-extern int _setjmp(jmp_buf);
-extern int _setnonl(int);
-extern void _setqiflush(int);
-extern char * _taddr2uaddr(struct netconfig *, struct netbuf *);
-extern int _tolower(int);
-extern int _toupper(int);
-extern struct netbuf * _uaddr2taddr(struct netconfig *, char *);
-extern bool _xdr_yprequest(/* ??? */);
-extern bool _xdr_ypresponse(/* ??? */);
-extern int _xftw(int, const char *, int (*) (const char *, const struct stat *, int), int);
-extern int _xmknod(int, const char *, mode_t, dev_t);
-extern int _xstat(int, const char *, struct stat *);
-extern int _yp_dobind(/* ??? */);
-extern long int a64l(const char *);
-extern char * aatos(char *, struct address *, int);
-extern void abort(void);
-extern int abs(int);
-extern int access(const char *, int);
-extern int acct(const char *);
-extern double acos(double);
-extern float acosf(float);
-extern double acosh(double);
-extern int addexportent(FILE *, char *, char *);
-extern int addseverity(int, const char *);
-extern int adjtime(struct timeval *, struct timeval *);
-extern int advance(const char *, const char *);
-extern unsigned int alarm(unsigned int);
-extern void * alloca(size_t);
-extern int and(void);
-extern int ascftime(char *, const char *, const struct tm *);
-extern char * asctime(const struct tm *);
-extern double asin(double);
-extern float asinf(float);
-extern double asinh(double);
-extern struct address * astoa(char *, struct address *);
-extern double atan(double);
-extern double atan2(double, double);
-extern float atan2f(float, float);
-extern float atanf(float);
-extern double atanh(double);
-extern int atexit(void (*) (void));
-extern double atof(const char *);
-extern int atoi(const char *);
-extern long int atol(const char *);
-extern char * atos(char *, struct netbuf *, int);
-extern void auth_destroy(AUTH *);
-extern AUTH * authdes_create(/* ??? */);
-extern void authdes_getcred(struct authdes_cred *, short *, short *, short *, int *);
-extern AUTH * authdes_seccreate(/* ??? */);
-extern AUTH * authnone_create(void);
-extern AUTH * authsys_create(char *, int, int, int, int *);
-extern AUTH * authsys_create_default(void);
-extern AUTH * authunix_create(char *, int, int, int, int *);
-extern AUTH * authunix_create_default(void);
-extern char * basename(char *);
-extern int baudrate(void);
-extern int bcmp(const void *, const void *, size_t);
-extern void bcopy(const void *, void *, size_t);
-extern int beep(void);
-extern void (* berk_signal(int, void (*) (int, ...))) (int, ...);
-extern char * bgets(char *, size_t, FILE *, char *);
-extern int bottom_panel(PANEL *);
-extern int box32(WINDOW *, chtype, chtype);
-extern int brk(void *);
-extern void * bsearch(const void *, const void *, size_t, size_t, int (*) (const void *, const void *));
-extern size_t bufsplit(char *, size_t, char *);
-extern void bzero(void *, size_t);
-extern long int calchash(/* ??? */);
-extern void * calloc(size_t, size_t);
-extern void callrpc(char *, unsigned long, unsigned long, unsigned long, xdrproc_t, char *, xdrproc_t, char *);
-extern bool can_change_color(void);
-extern int catclose(nl_catd);
-extern char * catgets(nl_catd, int, int, char *);
-extern nl_catd catopen(const char *, int);
-extern int cbreak(void);
-extern double cbrt(double);
-extern double ceil(double);
-extern float ceilf(float);
-extern speed_t cfgetispeed(const struct termios *);
-extern speed_t cfgetospeed(const struct termios *);
-extern void cfree(void *);
-extern int cfsetispeed(struct termios *, speed_t);
-extern int cfsetospeed(struct termios *, speed_t);
-extern int cftime(char *, char *, const time_t *);
-extern int chdir(const char *);
-extern int chmod(const char *, mode_t);
-extern int chown(const char *, uid_t, gid_t);
-extern int chroot(const char *);
-extern void clean_GEN_rd(/* ??? */);
-extern void cleanup(/* ??? */);
-extern void clearerr(FILE *);
-extern int clearok(WINDOW *, int);
-extern enum clnt_stat clnt_broadcast(unsigned long, unsigned long, unsigned long, xdrproc_t, char *, xdrproc_t, char *, resultproc_t);
-extern enum clnt_stat clnt_call(CLIENT *, unsigned long, xdrproc_t, char *, xdrproc_t, char *, struct timeval);
-extern bool_t clnt_control(CLIENT *, int, char *);
-extern CLIENT * clnt_create(char *, unsigned long, unsigned long, char *);
-extern void clnt_destroy(CLIENT *);
-extern int clnt_freeres(CLIENT *, xdrproc_t, char *);
-extern void clnt_geterr(CLIENT *, struct rpc_err *);
-extern void clnt_pcreateerror(char *);
-extern void clnt_perrno(enum clnt_stat);
-extern void clnt_perror(CLIENT *, char *);
-extern char * clnt_spcreateerror(char *);
-extern char * clnt_sperrno(enum clnt_stat);
-extern char * clnt_sperror(CLIENT *, char *);
-extern CLIENT * clnt_tli_create(/* ??? */);
-extern CLIENT * clnt_tp_create(/* ??? */);
-extern CLIENT * clnt_vc_create(/* ??? */);
-extern CLIENT * clntraw_create(unsigned long, unsigned long);
-extern CLIENT * clnttcp_create(struct sockaddr_in *, unsigned long, unsigned long, int *, unsigned int, unsigned int *);
-extern CLIENT * clntudp_bufcreate(struct sockaddr_in *, unsigned long, unsigned long, struct timeval, int *, unsigned int, unsigned int);
-extern CLIENT * clntudp_create(struct sockaddr_in *, unsigned long, unsigned long, struct timeval, int *);
-extern clock_t clock(void);
-extern int close(int);
-extern int closedir(DIR *);
-extern int color_content(int, short int *, short int *, short int *);
-extern char * compile(const char *, char *, char *);
-extern char * copylist(const char *, off_t *);
-extern double copysign(double, double);
-extern int copywin(WINDOW *, WINDOW *, int, int, int, int, int, int, int);
-extern double cos(double);
-extern float cosf(float);
-extern double cosh(double);
-extern float coshf(float);
-extern struct rd_user * cr_rduser(/* ??? */);
-extern int creat(const char *, mode_t);
-extern int crmode(void);
-extern char * crypt(const char *, const char *);
-extern int crypt_close(int *);
-extern char * ctermid(char *);
-extern char * ctime(const time_t *);
-extern FIELD * current_field(FORM *);
-extern ITEM * current_item(MENU *);
-extern int curs_set(int);
-extern void curserr(void);
-extern char * cuserid(char *);
-extern int data_ahead(FORM *);
-extern int data_behind(FORM *);
-extern void dbmclose(void);
-extern void dbminit(const char *);
-extern int def_prog_mode(void);
-extern int def_shell_mode(void);
-extern char * defread(/* ??? */);
-extern int del_panel(PANEL *);
-extern void del_rduser(/* ??? */);
-extern void delay(long int);
-extern int delay_output(int);
-extern void delete(datum);
-extern void delscreen(SCREEN *);
-extern int delterm(TERMINAL *);
-extern int delwin(WINDOW *);
-extern WINDOW * derwin(WINDOW *, int, int, int, int);
-extern char * des_crypt(const char *, const char *);
-extern void des_encrypt(char *, int);
-extern void des_setkey(const char *);
-extern char * devattr(/* ??? */);
-extern int devfree(/* ??? */);
-extern char ** devreserv(/* ??? */);
-extern int dial(CALL);
-extern double difftime(time_t, time_t);
-extern char * dirname(char *);
-extern div_t div(int, int);
-extern int dlclose(void *);
-extern char * dlerror(void);
-extern void * dlopen(char *, int);
-extern void * dlsym(void *, char *);
-extern void dma_access(u_char, u_int, u_int, u_char, u_char);
-extern int doupdate(void);
-extern int drainio(int);
-extern double drand48(void);
-extern double drem(double, double);
-extern int drv_getevtoken(/* ??? */);
-extern void drv_relevtoken(/* ??? */);
-extern int dup(int);
-extern int dup2(int, int);
-extern FIELD * dup_field(FIELD *, int, int);
-extern WINDOW * dupwin(WINDOW *);
-extern int dynamic_field_info(FIELD *, int *, int *, int *);
-extern int dysize(int);
-extern int eaccess(const char *, int);
-extern int echo(void);
-extern char * ecvt(double, int, int *, int *);
-extern size_t elf32_fsize(Elf_Type, size_t, unsigned int);
-extern Elf32_Ehdr * elf32_getehdr(Elf *);
-extern Elf32_Phdr * elf32_getphdr(Elf *);
-extern Elf32_Shdr * elf32_getshdr(Elf_Scn *);
-extern Elf32_Ehdr * elf32_newehdr(Elf *);
-extern Elf32_Phdr * elf32_newphdr(Elf *, size_t);
-extern Elf_Data * elf32_xlatetof(Elf_Data *, const Elf_Data *, unsigned int);
-extern Elf_Data * elf32_xlatetom(Elf_Data *, const Elf_Data *, unsigned int);
-extern Elf * elf_begin(int, Elf_Cmd, Elf *);
-extern int elf_cntl(Elf *, Elf_Cmd);
-extern int elf_end(Elf *);
-extern const char * elf_errmsg(int);
-extern int elf_errno(void);
-extern void elf_fill(int);
-extern unsigned int elf_flagdata(Elf_Data *, Elf_Cmd, unsigned int);
-extern unsigned int elf_flagehdr(Elf *, Elf_Cmd, unsigned int);
-extern unsigned int elf_flagelf(Elf *, Elf_Cmd, unsigned int);
-extern unsigned int elf_flagphdr(Elf *, Elf_Cmd, unsigned int);
-extern unsigned int elf_flagscn(Elf_Scn *, Elf_Cmd, unsigned int);
-extern unsigned int elf_flagshdr(Elf_Scn *, Elf_Cmd, unsigned int);
-extern Elf_Arhdr * elf_getarhdr(Elf *);
-extern Elf_Arsym * elf_getarsym(Elf *, size_t *);
-extern off_t elf_getbase(Elf *);
-extern Elf_Data * elf_getdata(Elf_Scn *, Elf_Data *);
-extern char * elf_getident(Elf *, size_t *);
-extern Elf_Scn * elf_getscn(Elf *, size_t);
-extern long unsigned int elf_hash(const char *);
-extern Elf_Kind elf_kind(Elf *);
-extern size_t elf_ndxscn(Elf_Scn *);
-extern Elf_Data * elf_newdata(Elf_Scn *);
-extern Elf_Scn * elf_newscn(Elf *);
-extern Elf_Cmd elf_next(Elf *);
-extern Elf_Scn * elf_nextscn(Elf *, Elf_Scn *);
-extern size_t elf_rand(Elf *, size_t);
-extern Elf_Data * elf_rawdata(Elf_Scn *, Elf_Data *);
-extern char * elf_rawfile(Elf *, size_t *);
-extern char * elf_strptr(Elf *, size_t, size_t);
-extern off_t elf_update(Elf *, Elf_Cmd);
-extern unsigned int elf_version(unsigned int);
-extern void encrypt(char *, int);
-extern void endgrent(void);
-extern int endnetconfig(void *);
-extern int endnetpath(void *);
-extern void endpwent(void);
-extern void endrpcent(void);
-extern void endspent(void);
-extern void endutent(void);
-extern void endutxent(void);
-extern int endwin(void);
-extern double erand(short *);
-extern double erand48(short unsigned int *);
-extern char erasechar(void);
-extern double erf(double);
-extern double erfc(double);
-extern int execl(const char *, const char *, ...);
-extern int execle(const char *, const char *, ...);
-extern int execlp(const char *, const char *, ...);
-extern int exect(const char *, const char **, char **);
-extern int execv(const char *, char *const *);
-extern int execve(const char *, char *const *, char *const *);
-extern int execvp(const char *, char *const *);
-extern void exit(int);
-extern double exp(double);
-extern float expf(float);
-extern double fabs(double);
-extern float fabsf(float);
-extern int fattach(int, const char *);
-extern int fchdir(int);
-extern int fchmod(int, mode_t);
-extern int fchown(int, uid_t, gid_t);
-extern int fclose(FILE *);
-extern int fcntl(int, int, ...);
-extern char * fcvt(double, int, int *, int *);
-extern int fdetach(const char *);
-extern FILE * fdopen(int, const char *);
-extern int feof(FILE *);
-extern int ferror(FILE *);
-extern datum fetch(datum);
-extern int fflush(FILE *);
-extern int ffs(int);
-extern int fgetc(FILE *);
-extern struct group * fgetgrent(FILE *);
-extern int fgetpos(FILE *, fpos_t *);
-extern struct passwd * fgetpwent(FILE *);
-extern char * fgets(char *, int, FILE *);
-extern struct spwd * fgetspent(FILE *);
-extern char * field_arg(FIELD *);
-extern chtype field_back(FIELD *);
-extern char * field_buffer(FIELD *, int);
-extern int field_count(FORM *);
-extern chtype field_fore(FIELD *);
-extern int field_index(FIELD *);
-extern int field_info(FIELD *, int *, int *, int *, int *, int *, int *);
-extern PTF_void field_init(FORM *);
-extern int field_just(FIELD *);
-extern OPTIONS field_opts(FIELD *);
-extern int field_opts_off(FIELD *, OPTIONS);
-extern int field_opts_on(FIELD *, OPTIONS);
-extern int field_pad(FIELD *);
-extern int field_status(FIELD *);
-extern PTF_void field_term(FORM *);
-extern FIELDTYPE * field_type(FIELD *);
-extern char * field_userptr(FIELD *);
-extern int fileno(FILE *);
-extern int filter(void);
-extern int finite(double);
-extern datum firsthash(/* ??? */);
-extern datum firstkey(void);
-extern int flash(void);
-extern int flock(int, int);
-extern double floor(double);
-extern float floorf(float);
-extern int flushinp(void);
-extern double fmod(double, double);
-extern float fmodf(float, float);
-extern int fmtmsg(long int, const char *, int, const char *, const char *, const char *);
-extern FILE * fopen(const char *, const char *);
-extern pid_t fork(void);
-extern int form_driver(FORM *, int);
-extern FIELD ** form_fields(FORM *);
-extern PTF_void form_init(FORM *);
-extern OPTIONS form_opts(FORM *);
-extern int form_opts_off(FORM *, OPTIONS);
-extern int form_opts_on(FORM *, OPTIONS);
-extern int form_page(FORM *);
-extern WINDOW * form_sub(FORM *);
-extern PTF_void form_term(FORM *);
-extern char * form_userptr(FORM *);
-extern WINDOW * form_win(FORM *);
-extern long int fpathconf(int, int);
-extern fpclass_t fpclass(double);
-extern int fpgetmask(void);
-extern fp_rnd fpgetround(void);
-extern int fpgetsticky(void);
-extern int fprintf(FILE *, const char *, ...);
-extern int fpsetmask(int);
-extern fp_rnd fpsetround(fp_rnd);
-extern int fpsetsticky(int);
-extern int fputc(int, FILE *);
-extern int fputs(const char *, FILE *);
-extern size_t fread(void *, size_t, size_t, FILE *);
-extern void free(void *);
-extern int free_field(FIELD *);
-extern int free_fieldtype(FIELDTYPE *);
-extern int free_form(FORM *);
-extern int free_item(ITEM *);
-extern int free_menu(MENU *);
-extern void freenetconfigent(struct netconfig *);
-extern FILE * freopen(const char *, const char *, FILE *);
-extern double frexp(double, int *);
-extern int fscanf(FILE *, const char *, ...);
-extern int fseek(FILE *, long int, int);
-extern int fsetpos(FILE *, const fpos_t *);
-extern int fstat(int, struct stat *);
-extern int fstatfs(int, struct statfs *, int, int);
-extern int fstatvfs(int, struct statvfs *);
-extern int fsync(int);
-extern long int ftell(FILE *);
-extern key_t ftok(const char *, int);
-extern int ftruncate(int, off_t);
-extern int ftw(const char *, int (*) (const char *, const struct stat *, int), int);
-extern size_t fwrite(const void *, size_t, size_t, FILE *);
-extern double gamma(double);
-extern char * gcvt(double, int, char *);
-extern int get_error(/* ??? */);
-extern chtype getattrs(WINDOW *);
-extern int getbegx(WINDOW *);
-extern int getbegy(WINDOW *);
-extern chtype getbkgd(WINDOW *);
-extern long unsigned int getbmap(void);
-extern int getc(FILE *);
-extern char * getcap(/* ??? */);
-extern int getchar(void);
-extern int getcontext(ucontext_t *);
-extern int getcurx(WINDOW *);
-extern int getcury(WINDOW *);
-extern char * getcwd(char *, size_t);
-extern struct tm * getdate(const char *);
-extern int getdents(int, struct dirent *, unsigned int);
-extern char ** getdev(/* ??? */);
-extern char ** getdgrp(/* ??? */);
-extern int getdomainname(char *, int);
-extern int getdtablesize(void);
-extern gid_t getegid(void);
-extern char * getenv(const char *);
-extern struct errhdr * geterec(/* ??? */);
-extern struct errhdr * geteslot(/* ??? */);
-extern uid_t geteuid(void);
-extern gid_t getgid(void);
-extern struct group * getgrent(void);
-extern struct group * getgrgid(gid_t);
-extern struct group * getgrnam(const char *);
-extern int getgroups(int, gid_t *);
-extern struct hostent * gethostbyaddr(/* ??? */);
-extern struct hostent * gethostbyname(/* ??? */);
-extern struct hostent * gethostent(/* ??? */);
-#ifdef __alpha__
-extern int gethostid(void);
-#else
-extern long gethostid(void);
-#endif
-extern int gethostname(char *, size_t);
-extern int getitimer(int, struct itimerval *);
-extern char * getlogin(void);
-extern int getmaxx(WINDOW *);
-extern int getmaxy(WINDOW *);
-extern int getmntany(FILE *, struct mnttab *, struct mnttab *);
-extern int getmntent(/* ??? */);
-extern long unsigned int getmouse(void);
-extern int getmsg(int, struct strbuf *, struct strbuf *, int *);
-extern struct netent * getnetbyaddr(/* ??? */);
-extern struct netent * getnetbyname(/* ??? */);
-extern struct netconfig * getnetconfig(void *);
-extern struct netconfig * getnetconfigent(char *);
-extern struct netent * getnetent(/* ??? */);
-extern struct netconfig * getnetpath(void *);
-extern int getopt(int, char *const *, const char *);
-extern int getpagesize(void);
-extern int getparx(WINDOW *);
-extern int getpary(WINDOW *);
-extern char * getpass(const char *);
-extern pid_t getpgid(pid_t);
-extern pid_t getpgrp(void);
-extern pid_t getpgrp2(pid_t);
-extern pid_t getpid(void);
-extern int getpmsg(int, struct strbuf *, struct strbuf *, int *, int *);
-extern pid_t getppid(void);
-extern int getpriority(int, int);
-extern struct protoent * getprotobyname(/* ??? */);
-extern struct protoent * getprotobynumber(/* ??? */);
-extern struct protoent * getprotoent(/* ??? */);
-extern int getpw(int, char *);
-extern struct passwd * getpwent(void);
-extern struct passwd * getpwnam(const char *);
-extern struct passwd * getpwuid(uid_t);
-extern int getrlimit(int, struct rlimit *);
-extern int getrnge(char *);
-extern struct rpcent * getrpcbyname(const char *);
-extern struct rpcent * getrpcbynumber(int);
-extern struct rpcent * getrpcent(void);
-extern int getrusage(int, struct rusage *);
-extern char * gets(char *);
-extern struct servent * getservbyname(/* ??? */);
-extern struct servent * getservbyport(/* ??? */);
-extern struct servent * getservent(/* ??? */);
-extern pid_t getsid(pid_t);
-extern struct spwd * getspent(void);
-extern struct spwd * getspnam(const char *);
-extern int getsubopt(char **, char *const *, char **);
-extern int gettmode(void);
-extern char * gettxt(const char *, const char *);
-extern uid_t getuid(void);
-extern struct utmp * getutent(void);
-extern struct utmp * getutid(const struct utmp *);
-extern struct utmp * getutline(const struct utmp *);
-extern void getutmp(const struct utmpx *, struct utmp *);
-extern void getutmpx(const struct utmp *, struct utmpx *);
-extern struct utmpx * getutxent(void);
-extern struct utmpx * getutxid(const struct utmpx *);
-extern struct utmpx * getutxline(const struct utmpx *);
-extern int getvfsany(FILE *, struct vfstab *, struct vfstab *);
-extern int getvfsent(FILE *, struct vfstab *);
-extern int getvfsfile(FILE *, struct vfstab *, char *);
-extern int getvfsspec(FILE *, struct vfstab *, char *);
-extern int getvol(/* ??? */);
-extern int getw(FILE *);
-extern char * getwd(char *);
-extern void getwidth(eucwidth_t *);
-extern WINDOW * getwin(FILE *);
-extern int gmatch(const char *, const char *);
-extern struct tm * gmtime(const time_t *);
-extern int gsignal(int);
-extern int halfdelay(int);
-extern bool has_colors(void);
-extern int has_ic(void);
-extern int has_il(void);
-extern long int hashinc(/* ??? */);
-extern char * hasmntopt(/* ??? */);
-extern int hcreate(size_t);
-extern void hdestroy(void);
-extern int hide_panel(PANEL *);
-extern int host2netname(char *, char *, char *);
-extern int hrtalarm(hrtcmd_t *, int);
-extern int hrtcancel(const long int *, int);
-extern int hrtcntl(int, int, interval_t *, hrtime_t *);
-extern int hrtsleep(hrtcmd_t *);
-extern ENTRY * hsearch(ENTRY, ACTION);
-extern long unsigned int htonl(long unsigned int);
-extern short unsigned int htons(unsigned int);
-extern double hypot(double, double);
-extern void idcok(WINDOW *, int);
-extern int idlok(WINDOW *, int);
-extern void immedok(WINDOW *, int);
-extern char * index(const char *, int);
-extern long unsigned int inet_addr(/* ??? */);
-extern struct in_addr inet_makeaddr(/* ??? */);
-extern long unsigned int inet_network(/* ??? */);
-extern char * inet_ntoa(/* ??? */);
-extern int init_color(int, int, int, int);
-extern int init_pair(int, int, int);
-extern int initgroups(const char *, gid_t);
-extern WINDOW * initscr(/* ??? */);
-extern WINDOW * initscr32(void);
-extern char * initstate(unsigned, char *, int);
-extern void insque(struct qelem *, struct qelem *);
-extern int intrflush(WINDOW *, int);
-extern int ioctl(int, int, ...);
-extern int is_linetouched(WINDOW *, int);
-extern int is_wintouched(WINDOW *);
-extern int isalnum(int);
-extern int isalpha(int);
-extern int isascii(int);
-extern int isatty(int);
-extern int iscntrl(int);
-extern int isdigit(int);
-extern int isencrypt(const char *, size_t);
-extern int isendwin(void);
-extern int isgraph(int);
-extern int isinf(double);
-extern int islower(int);
-extern int isnan(double);
-extern int isnand(double);
-extern int isnanf(float);
-extern int isprint(int);
-extern int ispunct(int);
-extern int isspace(int);
-extern int isupper(int);
-extern int isxdigit(int);
-extern int item_count(MENU *);
-extern char * item_description(ITEM *);
-extern int item_index(ITEM *);
-extern PTF_void item_init(MENU *);
-extern char * item_name(ITEM *);
-extern OPTIONS item_opts(ITEM *);
-extern int item_opts_off(ITEM *, OPTIONS);
-extern int item_opts_on(ITEM *, OPTIONS);
-extern PTF_void item_term(MENU *);
-extern char * item_userptr(ITEM *);
-extern int item_value(ITEM *);
-extern int item_visible(ITEM *);
-extern long int itol(/* ??? */);
-extern double j0(double);
-extern double j1(double);
-extern double jn(int, double);
-extern long int jrand48(short unsigned int *);
-extern char * keyname(int);
-extern int keypad(WINDOW *, int);
-extern int kill(pid_t, int);
-extern char killchar(void);
-extern int killpg(int, int);
-extern void l3tol(long int *, const char *, int);
-extern char * l64a(long int);
-extern long int labs(long int);
-extern dl_t ladd(/* ??? */);
-extern int lchown(const char *, uid_t, gid_t);
-extern int lckpwdf(void);
-extern void lcong48(short unsigned int *);
-extern int ldaclose(struct ldfile *);
-extern int ldahread(struct ldfile *, archdr *);
-extern struct ldfile * ldaopen(const char *, struct ldfile *);
-extern int ldclose(struct ldfile *);
-extern double ldexp(double, int);
-extern int ldfhread(struct ldfile *, struct filehdr *);
-extern char * ldgetname(struct ldfile *, const struct syment *);
-extern ldiv_t ldiv(long int, long int);
-extern dl_t ldivide(/* ??? */);
-extern int ldlinit(struct ldfile *, long int);
-extern int ldlitem(struct ldfile *, unsigned int, struct lineno *);
-extern int ldlread(struct ldfile *, long int, unsigned int, struct lineno *);
-extern int ldlseek(struct ldfile *, unsigned int);
-extern int ldnlseek(struct ldfile *, const char *);
-extern int ldnrseek(struct ldfile *, const char *);
-extern int ldnshread(struct ldfile *, const char *, struct scnhdr *);
-extern int ldnsseek(struct ldfile *, const char *);
-extern int ldohseek(struct ldfile *);
-extern struct ldfile * ldopen(const char *, struct ldfile *);
-extern int ldrseek(struct ldfile *, unsigned int);
-extern int ldshread(struct ldfile *, unsigned int, struct scnhdr *);
-extern int ldsseek(struct ldfile *, unsigned int);
-extern long int ldtbindex(struct ldfile *);
-extern int ldtbread(struct ldfile *, long int, struct syment *);
-extern int ldtbseek(struct ldfile *);
-extern int leaveok(WINDOW *, int);
-extern dl_t lexp10(/* ??? */);
-extern void * lfind(const void *, const void *, size_t *, size_t, int (*) (const void *, const void *));
-extern double lgamma(double);
-extern int link(const char *, const char *);
-extern FIELD * link_field(FIELD *, int, int);
-extern FIELDTYPE * link_fieldtype(FIELDTYPE *, FIELDTYPE *);
-extern char ** listdev(/* ??? */);
-extern char ** listdgrp(/* ??? */);
-extern dl_t llog10(/* ??? */);
-extern dl_t lmul(/* ??? */);
-extern struct lconv * localeconv(void);
-extern struct tm * localtime(const time_t *);
-extern int lock(int, int, long);
-extern int lockf(int, int, off_t);
-extern double log(double);
-extern double log10(double);
-extern float log10f(float);
-extern double logb(double);
-extern float logf(float);
-extern char * logname(void);
-extern void longjmp(jmp_buf, int);
-extern char * longname(void);
-extern long int lrand48(void);
-extern void * lsearch(const void *, void *, size_t *, size_t, int (*) (const void *, const void *));
-extern off_t lseek(int, off_t, int);
-extern dl_t lshiftl(/* ??? */);
-extern int lstat(const char *, struct stat *);
-extern dl_t lsub(/* ??? */);
-extern void ltol3(char *, const long int *, int);
-extern int m_addch(int);
-extern int m_addstr(char *);
-extern int m_clear(void);
-extern int m_erase(void);
-extern WINDOW * m_initscr(void);
-extern int m_move(int, int);
-extern SCREEN * m_newterm(char *, FILE *, FILE *);
-extern int m_refresh(void);
-extern int maillock(char *, int);
-extern int mailunlock(void);
-extern major_t major(dev_t);
-extern datum makdatum(/* ??? */);
-extern void makecontext(ucontext_t *, void (*) (/* ??? */), int, ...);
-extern dev_t makedev(major_t, minor_t);
-extern struct utmpx * makeutx(const struct utmpx *);
-extern struct mallinfo mallinfo(void);
-extern void * malloc(size_t);
-extern int mallopt(int, int);
-extern int map_button(long unsigned int);
-extern int matherr(struct exception *);
-extern int mbftowc(char *, wchar_t *, int (*) (/* ??? */), int *);
-extern int mblen(const char *, size_t);
-extern size_t mbstowcs(wchar_t *, const char *, size_t);
-extern int mbtowc(wchar_t *, const char *, size_t);
-extern void * memalign(size_t, size_t);
-extern void * memccpy(void *, const void *, int, size_t);
-extern void * memchr(const void *, int, size_t);
-extern int memcmp(const void *, const void *, size_t);
-extern void * memcpy(void *, const void *, size_t);
-extern int memlock(/* ??? */);
-extern int memlocked(/* ??? */);
-extern void * memmove(void *, const void *, size_t);
-extern void * memset(void *, int, size_t);
-extern int memunlock(/* ??? */);
-extern chtype menu_back(MENU *);
-extern int menu_driver(MENU *, int);
-extern chtype menu_fore(MENU *);
-extern void menu_format(MENU *, int *, int *);
-extern chtype menu_grey(MENU *);
-extern PTF_void menu_init(MENU *);
-extern ITEM ** menu_items(MENU *);
-extern char * menu_mark(MENU *);
-extern OPTIONS menu_opts(MENU *);
-extern int menu_opts_off(MENU *, OPTIONS);
-extern int menu_opts_on(MENU *, OPTIONS);
-extern int menu_pad(MENU *);
-extern char * menu_pattern(MENU *);
-extern WINDOW * menu_sub(MENU *);
-extern PTF_void menu_term(MENU *);
-extern char * menu_userptr(MENU *);
-extern WINDOW * menu_win(MENU *);
-extern int meta(WINDOW *, int);
-extern void mfree(struct map *, size_t, u_long);
-extern int mincore(caddr_t, size_t, char *);
-extern minor_t minor(dev_t);
-extern int mkdir(const char *, mode_t);
-extern int mkdirp(const char *, mode_t);
-extern int mkfifo(const char *, mode_t);
-extern int mknod(const char *, mode_t, dev_t);
-extern int mkstemp(char *);
-extern char * mktemp(char *);
-extern time_t mktime(struct tm *);
-extern caddr_t mmap(/* ??? */);
-extern double modf(double, double *);
-extern float modff(float, float *);
-extern struct utmpx * modutx(const struct utmpx *);
-extern void monitor(int (*) (/* ??? */), int (*) (/* ??? */), WORD *, int, int);
-extern int mount(const char *, const char *, int, ...);
-extern int mouse_off(long int);
-extern int mouse_on(long int);
-extern int mouse_set(long int);
-extern int move_field(FIELD *, int, int);
-extern int move_panel(PANEL *, int, int);
-extern int mprotect(/* ??? */);
-extern long int mrand48(void);
-extern int msgctl(int, int, ...);
-extern int msgget(key_t, int);
-extern int msgrcv(int, void *, size_t, long int, int);
-extern int msgsnd(int, const void *, size_t, int);
-extern int munmap(/* ??? */);
-extern int mvcur(int, int, int, int);
-extern int mvderwin(WINDOW *, int, int);
-extern int mvprintw(int, int, ...);
-extern int mvscanw(int, int, ...);
-extern int mvwin(WINDOW *, int, int);
-extern int mvwprintw(WINDOW *, int, int, ...);
-extern int mvwscanw(WINDOW *, int, int, ...);
-extern int napms(int);
-extern void netdir_free(char *, int);
-extern int netdir_getbyaddr(struct netconfig *, struct nd_hostservlist **, struct netbuf *);
-extern int netdir_getbyname(struct netconfig *, struct nd_hostserv *, struct nd_addrlist **);
-extern int netdir_options(struct netconfig *, int, int, char *);
-extern void netdir_perror(char *);
-extern char * netdir_sperror(/* ??? */);
-extern FIELD * new_field(int, int, int, int, int, int);
-extern FIELDTYPE * new_fieldtype(PTF_int, PTF_int);
-extern FORM * new_form(FIELD **);
-extern ITEM * new_item(char *, char *);
-extern MENU * new_menu(ITEM **);
-extern int new_page(FIELD *);
-extern PANEL * new_panel(WINDOW *);
-extern int newkey(char *, int, int);
-extern WINDOW * newpad(int, int);
-extern SCREEN * newscreen(char *, int, int, int, FILE *, FILE *);
-extern SCREEN * newterm32(char *, FILE *, FILE *);
-extern WINDOW * newwin(int, int, int, int);
-extern double nextafter(double, double);
-extern datum nextkey(datum);
-extern int nftw(const char *, int (*) (const char *, const struct stat *, int, struct FTW *), int, int);
-extern int nice(int);
-extern int nl(void);
-extern char * nl_langinfo(nl_item);
-extern int nlist(const char *, struct nlist *);
-extern int nocbreak(void);
-extern int nocrmode(void);
-extern int nodelay(WINDOW *, int);
-extern int noecho(void);
-extern int nonl(void);
-extern int noraw(void);
-extern int notimeout(WINDOW *, int);
-extern long int nrand48(short unsigned int *);
-extern int ns_close(/* ??? */);
-extern struct nssend * ns_rcv(/* ??? */);
-extern int ns_send(/* ??? */);
-extern int ns_setup(/* ??? */);
-extern long unsigned int ntohl(long unsigned int);
-extern short unsigned int ntohs(unsigned int);
-extern int nuname(struct utsname *);
-extern int open(const char *, int, ...);
-extern DIR * opendir(const char *);
-extern int openprivwait(/* ??? */);
-extern int openwait(/* ??? */);
-extern int overlay(WINDOW *, WINDOW *);
-extern int overwrite(WINDOW *, WINDOW *);
-extern int p2close(FILE **);
-extern int p2open(const char *, FILE **);
-extern int p32echochar(WINDOW *, chtype);
-extern char * p_cdname(/* ??? */);
-extern char * p_class(/* ??? */);
-extern char * p_rr(/* ??? */);
-extern char * p_type(/* ??? */);
-extern int pair_content(int, short int *, short int *);
-extern PANEL * panel_above(PANEL *);
-extern PANEL * panel_below(PANEL *);
-extern char * panel_userptr(PANEL *);
-extern WINDOW * panel_window(PANEL *);
-extern long int pathconf(const char *, int);
-extern char * pathfind(const char *, const char *, const char *);
-extern int pause(void);
-extern int pclose(FILE *);
-extern void perror(const char *);
-extern struct pfdat * pfind(/* ??? */);
-extern int pglstlk(/* ??? */);
-extern int pglstunlk(/* ??? */);
-extern int pid_slot(proc_t *);
-extern int pipe(int *);
-extern int plock(int);
-extern struct pmaplist * pmap_getmaps(/* ??? */);
-extern u_short pmap_getport(/* ??? */);
-extern enum clnt_stat pmap_rmtcall(/* ??? */);
-extern int pmap_set(/* ??? */);
-extern int pmap_unset(/* ??? */);
-extern int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
-extern int poll(struct pollfd *, long unsigned int, int);
-extern FILE * popen(const char *, const char *);
-extern int pos_form_cursor(FORM *);
-extern int pos_menu_cursor(MENU *);
-extern int post_form(FORM *);
-extern int post_menu(MENU *);
-extern double pow(double, double);
-extern float powf(float, float);
-extern int prefresh(WINDOW *, int, int, int, int, int, int);
-extern int printf(const char *, ...);
-extern int printw(char *, ...);
-extern void privsig(/* ??? */);
-extern void profil(short unsigned int *, size_t, int, unsigned int);
-extern void psiginfo(siginfo_t *, char *);
-extern void psignal(int, const char *);
-extern int ptrace(int, pid_t, int, int);
-extern int putc(int, FILE *);
-extern int putchar(int);
-extern int putenv(char *);
-extern int putmsg(int, const struct strbuf *, const struct strbuf *, int);
-extern int putp(char *);
-extern int putpmsg(int, const struct strbuf *, const struct strbuf *, int, int);
-extern int putpwent(const struct passwd *, FILE *);
-extern int puts(const char *);
-extern int putspent(const struct spwd *, FILE *);
-extern struct utmp * pututline(const struct utmp *);
-extern struct utmpx * pututxline(const struct utmpx *);
-extern int putw(int, FILE *);
-extern int putwin(WINDOW *, FILE *);
-extern void qsort(void *, size_t, size_t, int (*) (const void *, const void *));
-extern int raise(int);
-extern int rand(void);
-extern long random(void);
-extern int raw(void);
-extern ssize_t read(int, void *, size_t);
-extern struct dirent * readdir(DIR *);
-extern ssize_t readlink(const char *, char *, size_t);
-extern void * realloc(void *, size_t);
-extern char * realpath(char *, char *);
-extern int redrawwin(WINDOW *);
-extern char * regcmp(const char *, ...);
-extern char * regex(const char *, const char *, ...);
-extern double remainder(double, double);
-extern int remio(/* ??? */);
-extern int remove(const char *);
-extern void remque(struct qelem *);
-extern int rename(const char *, const char *);
-extern int replace_panel(PANEL *, WINDOW *);
-extern int request_mouse_pos(void);
-extern struct reservdev ** reservdev(/* ??? */);
-extern int reset_prog_mode(void);
-extern int reset_shell_mode(void);
-extern int resetty(void);
-extern int restartterm(char *, int, int *);
-extern void rewind(FILE *);
-extern void rewinddir(DIR *);
-extern int rf_falloc(/* ??? */);
-extern char * rindex(const char *, int);
-extern double rint(double);
-extern int ripoffline(int, int (*) (WINDOW *, int));
-extern int rmdir(const char *);
-extern int rmdirp(char *, char *);
-extern enum clnt_stat rpc_broadcast(/* ??? */);
-extern enum clnt_stat rpc_call(/* ??? */);
-extern int rpcb_getaddr(/* ??? */);
-extern RPCBLIST * rpcb_getmaps(/* ??? */);
-extern int rpcb_gettime(/* ??? */);
-extern enum clnt_stat rpcb_rmtcall(/* ??? */);
-extern int rpcb_set(/* ??? */);
-extern char * rpcb_taddr2uaddr(/* ??? */);
-extern struct netbuf * rpcb_uaddr2taddr(/* ??? */);
-extern int rpcb_unset(/* ??? */);
-extern void rpctest_service(/* ??? */);
-extern int run_crypt(long int, char *, unsigned int, int *);
-extern int run_setkey(int *, const char *);
-extern int savetty(void);
-extern void * sbrk(int);
-extern double scalb(double, double);
-extern int scale_form(FORM *, int *, int *);
-extern int scale_menu(MENU *, int *, int *);
-extern int scanf(const char *, ...);
-extern int scanw(char *, ...);
-extern int scr_dump(char *);
-extern int scr_init(char *);
-extern int scr_restore(char *);
-extern int scroll(WINDOW *);
-extern int scrollok(WINDOW *, int);
-extern int scrwidth(wchar_t);
-extern int sdfree(char *);
-extern char * sdget(char *, int, ...);
-extern short unsigned int * seed48(short unsigned int *);
-extern void seekdir(DIR *, long int);
-extern int semctl(int, int, int, ...);
-extern int semget(key_t, int, int);
-extern int semop(int, struct sembuf *, unsigned int);
-extern int send(int, char *, int, int);
-extern int set_current_field(FORM *, FIELD *);
-extern int set_current_item(MENU *, ITEM *);
-extern int set_field_back(FIELD *, chtype);
-extern int set_field_buffer(FIELD *, int, char *);
-extern int set_field_fore(FIELD *, chtype);
-extern int set_field_init(FORM *, PTF_void);
-extern int set_field_just(FIELD *, int);
-extern int set_field_opts(FIELD *, OPTIONS);
-extern int set_field_pad(FIELD *, int);
-extern int set_field_status(FIELD *, int);
-extern int set_field_term(FORM *, PTF_void);
-extern int set_field_type(FIELD *, FIELDTYPE *, ...);
-extern int set_field_userptr(FIELD *, char *);
-extern int set_fieldtype_arg(FIELDTYPE *, PTF_charP, PTF_charP, PTF_void);
-extern int set_fieldtype_choice(FIELDTYPE *, PTF_int, PTF_int);
-extern int set_form_fields(FORM *, FIELD **);
-extern int set_form_init(FORM *, PTF_void);
-extern int set_form_opts(FORM *, OPTIONS);
-extern int set_form_page(FORM *, int);
-extern int set_form_sub(FORM *, WINDOW *);
-extern int set_form_term(FORM *, PTF_void);
-extern int set_form_userptr(FORM *, char *);
-extern int set_form_win(FORM *, WINDOW *);
-extern int set_item_init(MENU *, PTF_void);
-extern int set_item_opts(ITEM *, OPTIONS);
-extern int set_item_term(MENU *, PTF_void);
-extern int set_item_userptr(ITEM *, char *);
-extern int set_item_value(ITEM *, int);
-extern int set_max_field(FIELD *, int);
-extern int set_menu_back(MENU *, chtype);
-extern int set_menu_fore(MENU *, chtype);
-extern int set_menu_format(MENU *, int, int);
-extern int set_menu_grey(MENU *, chtype);
-extern int set_menu_init(MENU *, PTF_void);
-extern int set_menu_items(MENU *, ITEM **);
-extern int set_menu_mark(MENU *, char *);
-extern int set_menu_opts(MENU *, OPTIONS);
-extern int set_menu_pad(MENU *, int);
-extern int set_menu_pattern(MENU *, char *);
-extern int set_menu_sub(MENU *, WINDOW *);
-extern int set_menu_term(MENU *, PTF_void);
-extern int set_menu_userptr(MENU *, char *);
-extern int set_menu_win(MENU *, WINDOW *);
-extern int set_new_page(FIELD *, int);
-extern int set_panel_userptr(PANEL *, char *);
-extern int set_top_row(MENU *, int);
-extern void setbuf(FILE *, char *);
-extern int setcontext(ucontext_t *);
-extern SCREEN * setcurscreen(SCREEN *);
-extern TERMINAL * setcurterm(TERMINAL *);
-extern FILE * setexportent(void);
-extern int setgid(gid_t);
-extern void setgrent(void);
-extern int setgroups(int, const gid_t *);
-extern int sethostname(char *, int);
-extern int setitimer(int, struct itimerval *, struct itimerval *);
-extern int setjmp(jmp_buf);
-extern void setkey(const char *);
-extern char * setlocale(int, const char *);
-extern FILE * setmntent(char *, char *);
-extern void * setnetconfig(void);
-extern void * setnetpath(void);
-extern int setpgid(pid_t, pid_t);
-extern pid_t setpgrp(void);
-extern int setpgrp2(pid_t, pid_t);
-extern int setpriority(int, int, int);
-extern int setprivwait(/* ??? */);
-extern void setpwent(void);
-extern int setregid(gid_t, gid_t);
-extern int setreuid(uid_t, uid_t);
-extern int setrlimit(int, struct rlimit *);
-extern int setrpcent(int);
-extern pid_t setsid(void);
-extern void setspent(void);
-extern char * setstate(char *);
-extern int setsyx(int, int);
-extern int setterm(char *);
-extern int setuid(uid_t);
-extern int setupterm(char *, int, int *);
-extern void setutent(void);
-extern void setutxent(void);
-extern int setvbuf(FILE *, char *, int, size_t);
-extern long int sgetl(const char *);
-extern void * shmat(int, void *, int);
-extern int shmctl(int, int, ...);
-extern int shmdt(void *);
-extern int shmget(key_t, int, int);
-extern int show_panel(PANEL *);
-extern int sigaction(int, const struct sigaction *, struct sigaction *);
-extern int sigaddset(sigset_t *, int);
-extern int sigaltstack(const stack_t *, stack_t *);
-extern int sigblock(int);
-extern int sigdelset(sigset_t *, int);
-extern int sigemptyset(sigset_t *);
-extern int sigfillset(sigset_t *);
-extern int sighold(int);
-extern int sigignore(int);
-extern int siginterrupt(int, int);
-extern int sigismember(const sigset_t *, int);
-extern void siglongjmp(sigjmp_buf, int);
-extern signal_ret_t (* signal(int, signal_ret_t (*) (int))) (int);
-extern int sigpause(int);
-extern int sigpending(sigset_t *);
-extern int sigprocmask(int, const sigset_t *, sigset_t *);
-extern int sigrelse(int);
-extern int sigsend(idtype_t, id_t, int);
-extern int sigsendset(const procset_t *, int);
-extern void (* sigset(int, void (*) (int))) (int);
-extern int sigsetjmp(sigjmp_buf, int);
-extern int sigsetmask(int);
-extern int sigsuspend(sigset_t *);
-extern double sin(double);
-extern float sinf(float);
-extern double sinh(double);
-extern float sinhf(float);
-extern unsigned int sleep(unsigned int);
-extern int slk_attroff(chtype);
-extern int slk_attron(chtype);
-extern int slk_attrset(chtype);
-extern int slk_clear(void);
-extern int slk_init(int);
-extern char * slk_label(int);
-extern int slk_noutrefresh(void);
-extern int slk_refresh(void);
-extern int slk_restore(void);
-extern int slk_set(int, char *, int);
-extern int slk_start(int, int *);
-extern int slk_touch(void);
-extern int socket (int, int, int);
-extern void * sprayproc_clear_1(/* ??? */);
-extern spraycumul * sprayproc_get_1(/* ??? */);
-extern void * sprayproc_spray_1(/* ??? */);
-extern int sprintf(char *, const char *, ...);
-extern void sputl(long int, char *);
-extern double sqrt(double);
-extern float sqrtf(float);
-extern void srand(unsigned int);
-extern void srand48(long int);
-extern void srandom(int);
-extern int sscanf(const char *, const char *, ...);
-extern int (* ssignal(int, int (*) (int))) (int);
-extern int start_color(void);
-extern int stat(const char *, struct stat *);
-extern int statfs(const char *, struct statfs *, int, int);
-extern int statvfs(const char *, struct statvfs *);
-extern int step(const char *, const char *);
-extern int stime(const time_t *);
-extern struct netbuf * stoa(char *, struct netbuf *);
-extern void store(datum, datum);
-extern char * strcadd(char *, const char *);
-extern int strcasecmp(const char *, const char *);
-extern char * strcat(char *, const char *);
-extern char * strccpy(char *, const char *);
-extern char * strchr(const char *, int);
-extern void strclearctty(/* ??? */);
-extern void strclearpg(/* ??? */);
-extern void strclearsid(/* ??? */);
-extern int strcmp(const char *, const char *);
-extern int strcoll(const char *, const char *);
-extern char * strcpy(char *, const char *);
-extern size_t strcspn(const char *, const char *);
-extern char * strdup(const char *);
-extern char * streadd(char *, const char *, const char *);
-extern char * strecpy(char *, const char *, const char *);
-extern char * strerror(int);
-extern int strfind(const char *, const char *);
-extern size_t strftime(char *, size_t, const char *, const struct tm *);
-extern size_t strlen(const char *);
-extern int strncasecmp(const char *, const char *, size_t);
-extern char * strncat(char *, const char *, size_t);
-extern int strncmp(const char *, const char *, size_t);
-extern char * strncpy(char *, const char *, size_t);
-extern char * strpbrk(const char *, const char *);
-extern char * strrchr(const char *, int);
-extern char * strrspn(const char *, const char *);
-extern size_t strspn(const char *, const char *);
-extern char * strstr(const char *, const char *);
-extern double strtod(const char *, char **);
-extern char * strtok(char *, const char *);
-extern long int strtol(const char *, char **, int);
-extern long unsigned int strtoul(const char *, char **, int);
-extern char * strtrns(const char *, const char *, const char *, char *);
-extern size_t strxfrm(char *, const char *, size_t);
-extern WINDOW * subpad(WINDOW *, int, int, int, int);
-extern WINDOW * subwin(WINDOW *, int, int, int, int);
-extern int svc_create(/* ??? */);
-extern SVCXPRT * svc_fd_create(/* ??? */);
-extern void svc_getreqset(/* ??? */);
-extern SVCXPRT * svc_raw_create(/* ??? */);
-extern int svc_reg(/* ??? */);
-extern SVCXPRT * svc_tli_create(/* ??? */);
-extern SVCXPRT * svc_tp_create(/* ??? */);
-extern void svc_unreg(/* ??? */);
-extern SVCXPRT * svc_vc_create(/* ??? */);
-extern void svcerr_systemerr(/* ??? */);
-extern SVCXPRT * svcfd_create(/* ??? */);
-extern SVCXPRT * svcraw_create(/* ??? */);
-extern SVCXPRT * svctcp_create(/* ??? */);
-extern SVCXPRT * svcudp_bufcreate(/* ??? */);
-extern SVCXPRT * svcudp_create(/* ??? */);
-extern void swab(const char *, char *, int);
-extern int swapcontext(ucontext_t *, ucontext_t *);
-extern int symlink(const char *, const char *);
-extern void sync(void);
-extern int syncok(WINDOW *, int);
-extern int syscall(int, ...);
-extern long int sysconf(int);
-extern int sysfs(int, ...);
-extern int sysinfo(int, char *, long int);
-extern int system(const char *);
-extern char * taddr2uaddr(struct netconfig *, struct netbuf *);
-extern double tan(double);
-extern float tanf(float);
-extern double tanh(double);
-extern float tanhf(float);
-extern int tcdrain(int);
-extern int tcflow(int, int);
-extern int tcflush(int, int);
-extern int tcgetattr(int, struct termios *);
-extern pid_t tcgetpgrp(int);
-extern pid_t tcgetsid(int);
-extern int tcsendbreak(int, int);
-extern int tcsetattr(int, int, const struct termios *);
-extern int tcsetpgrp(int, pid_t);
-extern void * tdelete(const void *, void **, int (*) (const void *, const void *));
-extern long int telldir(DIR *);
-extern char * tempnam(const char *, const char *);
-extern chtype termattrs(void);
-extern void termerr(void);
-extern char * termname(void);
-extern void * tfind(const void *, void *const *, int (*) (const void *, const void *));
-extern int tgetent(char *, char *);
-extern int tgetflag(char *);
-extern int tgetnum(char *);
-extern char * tgetstr(char *, char **);
-extern char * tgoto(char *, int, int);
-extern char * tigetstr(char *);
-extern time_t time(time_t *);
-extern clock_t times(struct tms *);
-extern char * timezone(int, int);
-extern void tinputfd(int);
-extern FILE * tmpfile(void);
-extern char * tmpnam(char *);
-extern int toascii(int);
-extern int tolower(int);
-extern int top_panel(PANEL *);
-extern int top_row(MENU *);
-extern int touchline(WINDOW *, int, int);
-extern int touchwin(WINDOW *);
-extern int toupper(int);
-extern char * tparm(/* ??? */);
-extern int tputs(char *, int, int (*) (char));
-extern int traceoff(void);
-extern int traceon(void);
-extern int truncate(const char *, off_t);
-extern void * tsearch(const void *, void **, int (*) (const void *, const void *));
-extern char * ttyname(int);
-extern int ttyslot(void);
-extern void twalk(void *, void (*) (void *, VISIT, int));
-extern int typeahead(int);
-extern void tzset(void);
-extern struct netbuf * uaddr2taddr(struct netconfig *, char *);
-extern int uadmin(int, int, int);
-extern unsigned ualarm(unsigned, unsigned);
-extern int ulckpwdf(void);
-extern long int ulimit(int, ...);
-extern mode_t umask(mode_t);
-extern int umount(const char *);
-extern int uname(struct utsname *);
-extern char * unctrl(int);
-extern void undial(int);
-extern int ungetc(int, FILE *);
-extern int ungetch(int);
-extern int unlink(const char *);
-extern int unordered(double, double);
-extern int unpost_form(FORM *);
-extern int unpost_menu(MENU *);
-extern int unremio(/* ??? */);
-extern int untouchwin(WINDOW *);
-extern void update_panels(void);
-extern void updwtmp(const char *, struct utmp *);
-extern void updwtmpx(const char *, struct utmpx *);
-extern void use_env(int);
-extern unsigned usleep(unsigned);
-extern int ustat(dev_t, struct ustat *);
-extern int utime(const char *, const struct utimbuf *);
-extern int utmpname(const char *);
-extern int utmpxname(const char *);
-extern void va_end(__gnuc_va_list);
-extern int vadvise(int);
-extern void * valloc(size_t);
-extern pid_t vfork(void);
-extern int vfprintf(FILE *, const char *, __gnuc_va_list);
-extern int vhangup(void);
-extern int vid32attr(chtype);
-extern int vid32puts(chtype, int (*) (char));
-extern void vidupdate(chtype, chtype, int (*) (char));
-extern int vn_close(/* ??? */);
-extern int vprintf(const char *, __gnuc_va_list);
-extern int vsprintf(char *, const char *, __gnuc_va_list);
-extern int vwprintw(WINDOW *, char *, void *);
-extern int vwscanw(WINDOW *, char *, void *);
-extern int w32addch(WINDOW *, chtype);
-extern int w32attroff(WINDOW *, chtype);
-extern int w32attron(WINDOW *, chtype);
-extern int w32attrset(WINDOW *, chtype);
-extern int w32echochar(WINDOW *, chtype);
-extern int w32insch(WINDOW *, chtype);
-extern int waddchnstr(WINDOW *, chtype *, int);
-extern int waddnstr(WINDOW *, char *, int);
-extern int waddstr(WINDOW *, char *);
-extern pid_t wait(wait_arg_t *);
-extern pid_t wait3(union wait *, int, struct rusage *);
-extern int waitid(idtype_t, id_t, siginfo_t *, int);
-extern pid_t waitpid(pid_t, int *, int);
-extern void * wallproc_wall_1(/* ??? */);
-extern int wbkgd(WINDOW *, chtype);
-extern void wbkgdset(WINDOW *, chtype);
-extern int wborder(WINDOW *, chtype, chtype, chtype, chtype, chtype, chtype, chtype, chtype);
-extern int wclear(WINDOW *);
-extern int wclrtobot(WINDOW *);
-extern int wclrtoeol(WINDOW *);
-extern size_t wcstombs(char *, const wchar_t *, size_t);
-extern int wctomb(char *, wchar_t);
-extern void wcursyncup(WINDOW *);
-extern int wdelch(WINDOW *);
-extern int wdeleteln(WINDOW *);
-extern int werase(WINDOW *);
-extern int wgetch(WINDOW *);
-extern int wgetnstr(WINDOW *, char *, int);
-extern int wgetstr(WINDOW *, char *);
-extern int whline(WINDOW *, chtype, int);
-extern chtype winch(WINDOW *);
-extern int winchnstr(WINDOW *, chtype *, int);
-extern int winchstr(WINDOW *, chtype *);
-extern int winnstr(WINDOW *, char *, int);
-extern int winsdelln(WINDOW *, int);
-extern int winsertln(WINDOW *);
-extern int winsnstr(WINDOW *, char *, int);
-extern int winstr(WINDOW *, char *);
-extern int wisprint(wchar_t);
-extern void wmouse_position(WINDOW *, int *, int *);
-extern int wmove(WINDOW *, int, int);
-extern int wnoutrefresh(WINDOW *);
-extern int wprintw(WINDOW *, ...);
-extern int wredrawln(WINDOW *, int, int);
-extern int wrefresh(WINDOW *);
-extern ssize_t write(int, const void *, size_t);
-extern int wscanw(WINDOW *, ...);
-extern int wscrl(WINDOW *, int);
-extern int wsetscrreg(WINDOW *, int, int);
-extern int wstandend(WINDOW *);
-extern int wstandout(WINDOW *);
-extern void wsyncdown(WINDOW *);
-extern void wsyncup(WINDOW *);
-extern void wtimeout(WINDOW *, int);
-extern int wtouchln(WINDOW *, int, int, int);
-extern int wvline(WINDOW *, chtype, int);
-extern bool xdr_datum(/* ??? */);
-extern int xdr_double(/* ??? */);
-extern int xdr_exports(/* ??? */);
-extern int xdr_fhstatus(/* ??? */);
-extern int xdr_float(/* ??? */);
-extern int xdr_keybuf(/* ??? */);
-extern int xdr_mountlist(/* ??? */);
-extern int xdr_netbuf(/* ??? */);
-extern int xdr_path(/* ??? */);
-extern int xdr_pmap(/* ??? */);
-extern int xdr_pmaplist(/* ??? */);
-extern int xdr_pointer(/* ??? */);
-extern int xdr_reference(/* ??? */);
-extern int xdr_rmtcall_args(/* ??? */);
-extern int xdr_rmtcallres(/* ??? */);
-extern int xdr_rpcb(/* ??? */);
-extern int xdr_rpcb_rmtcallargs(/* ??? */);
-extern int xdr_rpcb_rmtcallres(/* ??? */);
-extern int xdr_rpcblist(/* ??? */);
-extern int xdr_sprayarr(/* ??? */);
-extern int xdr_spraycumul(/* ??? */);
-extern int xdr_spraytimeval(/* ??? */);
-extern int xdr_u_char(/* ??? */);
-extern int xdr_utmparr(/* ??? */);
-extern int xdr_utmpidlearr(/* ??? */);
-extern int xdr_vector(/* ??? */);
-extern int xdr_yp_buf(/* ??? */);
-extern bool xdr_yp_inaddr(/* ??? */);
-extern bool xdr_ypall(/* ??? */);
-extern int xdr_ypdelete_args(/* ??? */);
-extern bool xdr_ypdomain_wrap_string(/* ??? */);
-extern bool xdr_ypmap_parms(/* ??? */);
-extern bool xdr_ypmap_wrap_string(/* ??? */);
-extern bool xdr_ypowner_wrap_string(/* ??? */);
-extern bool xdr_yppushresp_xfr(/* ??? */);
-extern bool xdr_ypreq_key(/* ??? */);
-extern bool xdr_ypreq_newxfr(/* ??? */);
-extern bool xdr_ypreq_nokey(/* ??? */);
-extern bool xdr_ypreq_xfr(/* ??? */);
-extern bool xdr_ypresp_key_val(/* ??? */);
-extern bool xdr_ypresp_maplist(/* ??? */);
-extern bool xdr_ypresp_master(/* ??? */);
-extern bool xdr_ypresp_order(/* ??? */);
-extern bool xdr_ypresp_val(/* ??? */);
-extern int xdr_ypupdate_args(/* ??? */);
-extern void xdrrec_create(/* ??? */);
-extern int xdrrec_endofrecord(/* ??? */);
-extern int xdrrec_eof(/* ??? */);
-extern int xdrrec_skiprecord(/* ??? */);
-extern void xdrstdio_create(/* ??? */);
-extern void xprt_register(/* ??? */);
-extern void xprt_unregister(/* ??? */);
-extern double y0(double);
-extern double y1(double);
-extern double yn(int, double);
-extern int yp_all(char *, char *, struct ypall_callback *);
-extern int yp_bind(const char *);
-extern int yp_first(char *, char *, char **, int *, char **, int *);
-extern int yp_get_default_domain(char **);
-extern int yp_master(char *, char *, char **);
-extern int yp_match(char *, char *, char *, int, char **, int *);
-extern int yp_next(char *, char *, char *, int, char **, int *, char **, int *);
-extern int yp_order(char *, char *, int *);
-extern void yp_unbind(const char *);
-extern char * yperr_string(int);
-extern int ypprot_err(unsigned int);
-extern u_int * ypu_change_1(/* ??? */);
-extern u_int * ypu_delete_1(/* ??? */);
-extern u_int * ypu_insert_1(/* ??? */);
-extern u_int * ypu_store_1(/* ??? */);
diff --git a/gcc/unprotoize.c b/gcc/unprotoize.c
deleted file mode 100755
index bebac0a..0000000
--- a/gcc/unprotoize.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define UNPROTOIZE
-#include "protoize.c"