% e-TeX is copyright (C) 1994-1996 by the NTS team; all rights are reserved.
 
This is file `w2c70etex11.diff', a patch to integrate
        e-TeX v1.1 (Oct 16, 1996) into
        Web2c v7.0

The file `README.w2c70etex11' describes how to apply this patch,
the file `w2c70etex11.tar.gz' contains additional files necessary to
complete the patch.


diff -c web2c-7.0/web2c/Makefile.in-ORG web2c-7.0/web2c/Makefile.in
*** web2c-7.0/web2c/Makefile.in-ORG	Fri Feb  7 00:30:07 1997
--- web2c-7.0/web2c/Makefile.in	Sun Feb  9 21:54:28 1997
***************
*** 82,87 ****
--- 82,89 ----
  mp_o = mpini.o mp0.o mp1.o mp2.o mpextra.o
  tex_c = texini.c tex0.c tex1.c tex2.c
  tex_o = texini.o tex0.o tex1.o tex2.o texextra.o
+ etex_c = etexini.c etex0.c etex1.c etex2.c
+ etex_o = etexini.o etex0.o etex1.o etex2.o etexextra.o
  
  other_c = bibtex.c dvicopy.c dvitomp.c dvitype.c gftodvi.c gftopk.c gftype.c \
    mft.c patgen.c pktogf.c pktype.c pltotf.c pooltype.c tangle.c \
***************
*** 93,99 ****
  
  programs = bibtex dvicopy dvitomp dvitype gftodvi gftopk gftype mf \
  mft mpost patgen pktogf pktype pltotf pooltype tangle tex tftopl vftovp \
! vptovf weave
  
  mpware = mpware/dmp mpware/makempx mpware/mpto mpware/newer
  mpware_sources = mpware/dmp.c mpware/makempx.in mpware/mpto.c mpware/newer.c
--- 95,101 ----
  
  programs = bibtex dvicopy dvitomp dvitype gftodvi gftopk gftype mf \
  mft mpost patgen pktogf pktype pltotf pooltype tangle tex tftopl vftovp \
! vptovf weave etex
  
  mpware = mpware/dmp mpware/makempx mpware/mpto mpware/newer
  mpware_sources = mpware/dmp.c mpware/makempx.in mpware/mpto.c mpware/newer.c
***************
*** 137,142 ****
--- 139,146 ----
  	$(kpathsea_link) pooltype.o $(LOADLIBES)
  tex: $(tex_o)
  	$(kpathsea_link) $(tex_o) $(socketlibs) $(LOADLIBES)
+ etex: $(etex_o)
+ 	$(kpathsea_link) $(etex_o) $(socketlibs) $(LOADLIBES)
  tftopl: tftopl.o
  	$(kpathsea_link) tftopl.o $(LOADLIBES)
  vftovp: vftovp.o
***************
*** 154,160 ****
  bibtex.p dvicopy.p dvitomp.p dvitype.p gftopk.p gftodvi.p gftype.p \
    mf.p mft.p mp.p patgen.p \
    pktogf.p pktype.p pltotf.p pooltype.p \
!   tex.p tftopl.p vftovp.p vptovf.p weave.p: tangle
  bibtex.p: bibtex.web bibtex.ch
  dvicopy.p: dvicopy.web dvicopy.ch
  dvitomp.p: dvitomp.web dvitomp.ch
--- 158,164 ----
  bibtex.p dvicopy.p dvitomp.p dvitype.p gftopk.p gftodvi.p gftype.p \
    mf.p mft.p mp.p patgen.p \
    pktogf.p pktype.p pltotf.p pooltype.p \
!   tex.p etex.p tftopl.p vftovp.p vptovf.p weave.p: tangle
  bibtex.p: bibtex.web bibtex.ch
  dvicopy.p: dvicopy.web dvicopy.ch
  dvitomp.p: dvitomp.web dvitomp.ch
***************
*** 171,176 ****
--- 175,183 ----
  pltotf.p: pltotf.web pltotf.ch
  pooltype.p: pooltype.web pooltype.ch
  tex.p tex.pool: tex.web tex.ch
+ etex.p etex.pool: tex.web  $(srcdir)/e-tex-1.1/etex-w2c.ch
+ 	rm -f $(srcdir)/etex.web; $(LN) $(srcdir)/tex.web $(srcdir)/etex.web
+ 	$(shared_env) ./tangle $(srcdir)/etex.web $(srcdir)/e-tex-1.1/etex-w2c.ch
  tftopl.p: tftopl.web tftopl.ch
  vftovp.p: vftovp.web vftovp.ch
  vptovf.p: vptovf.web vptovf.ch
***************
*** 189,194 ****
--- 196,203 ----
  	$(web2c) mp
  $(tex_c) texcoerce.h texd.h: tex.p $(web2c_texmf)
  	$(web2c) tex
+ $(etex_c) etexcoerce.h etexd.h: etex.p $(web2c_texmf)
+ 	$(web2c) etex
  
  # As long as we have to have separate rules to create these, might as well do
  # a little work to avoid separate compilation rules, too.
***************
*** 198,203 ****
--- 207,214 ----
  	sed s/TEX-OR-MF-OR-MP/mp/ $(srcdir)/lib/texmfmp.c >$@
  texextra.c: lib/texmfmp.c
  	sed s/TEX-OR-MF-OR-MP/tex/ $(srcdir)/lib/texmfmp.c >$@
+ etexextra.c: lib/texmfmp.c
+ 	sed s/TEX-OR-MF-OR-MP/etex/ $(srcdir)/lib/texmfmp.c >$@
  
  # Additional dependencies for recompiling the C code are generated
  # automatically, included at the end.
***************
*** 371,376 ****
--- 382,388 ----
  install-data::
  	$(SHELL) $(top_srcdir)/../mkdirchain $(texpooldir) $(mfpooldir) $(mppoldir) $(web2cdir) $(fontnamedir)
  	$(INSTALL_DATA) tex.pool $(texpooldir)/tex.pool
+ 	$(INSTALL_DATA) etex.pool $(texpooldir)/etex.pool
  	$(INSTALL_DATA) mf.pool $(mfpooldir)/mf.pool
  	$(INSTALL_DATA) mp.pool $(mppooldir)/mp.pool
  # tcx files are a bad idea
***************
*** 486,491 ****
--- 498,505 ----
  triptrap: trip trap mptrap
  testdir = $(srcdir)/triptrap
  testenv = TEXMFCNF=$(testdir)
+ etestdir = $(srcdir)/etriptest
+ etestenv = TEXMFCNF=$(etestdir)
  dvitype_args = -output-level=2 -dpi=72.27 -page-start='*.*.*.*.*.*.*.*.*.*'
  trip: pltotf tftopl tex dvitype
  	@echo ">>> See $(testdir)/trip.diffs for example of acceptable diffs." >&2
***************
*** 505,510 ****
--- 519,566 ----
  	$(SHELL) -c '$(testenv) ./dvitype $(dvitype_args) trip.dvi >trip.typ'
  	-$(DIFF) $(DIFFFLAGS) $(testdir)/trip.typ trip.typ
  
+ etrip: etripc etripe eetrip
+ 
+ etripc: pltotf etex dvitype
+ 	@echo ">>> See $(etestdir)/etripc.diffs for example of acceptable diffs." >&2
+ 	./pltotf $(testdir)/trip.pl trip.tfm
+ # Run TRIP test with e-TeX in compatibility mode
+ 	rm -f trip.tex; $(LN) $(testdir)/trip.tex . # get same filename in log
+ 	-$(SHELL) -c '$(etestenv) ./etex -ini <$(testdir)/trip1.in >tripin.fot'
+ 	mv trip.log tripin.log
+ 	-diff $(testdir)/tripin.log tripin.log
+ 	-$(SHELL) -c '$(etestenv) ./etex <$(testdir)/trip2.in >trip.fot'
+ 	-diff $(testdir)/trip.fot trip.fot
+ 	-$(DIFF) $(DIFFFLAGS) $(testdir)/trip.log trip.log
+ 	$(SHELL) -c '$(etestenv) ./dvitype $(dvitype_args) trip.dvi >trip.typ'
+ 	-$(DIFF) $(DIFFFLAGS) $(testdir)/trip.typ trip.typ
+ 
+ etripe: pltotf etex dvitype
+ 	@echo ">>> See $(etestdir)/etripe.diffs for example of acceptable diffs." >&2
+ 	./pltotf $(testdir)/trip.pl trip.tfm
+ # Run TRIP test with e-TeX in extended mode
+ 	rm -f trip.tex; $(LN) $(testdir)/trip.tex . # get same filename in log
+ 	-$(SHELL) -c '$(etestenv) ./etex -ini <$(etestdir)/trip1.in >tripin.fot'
+ 	mv trip.log tripin.log
+ 	-diff $(testdir)/tripin.log tripin.log
+ 	-$(SHELL) -c '$(etestenv) ./etex <$(testdir)/trip2.in >trip.fot'
+ 	-diff $(testdir)/trip.fot trip.fot
+ 	-$(DIFF) $(DIFFFLAGS) $(testdir)/trip.log trip.log
+ 	$(SHELL) -c '$(etestenv) ./dvitype $(dvitype_args) trip.dvi >trip.typ'
+ 	-$(DIFF) $(DIFFFLAGS) $(testdir)/trip.typ trip.typ
+ 
+ eetrip: pltotf etex
+ 	@echo ">>> See $(etestdir)/eetrip.diffs for example of acceptable diffs." >&2
+ 	./pltotf $(etestdir)/etrip.pl etrip.tfm
+ # Run e-TRIP test with e-TeX in extended mode
+ 	rm -f etrip.tex; $(LN) $(etestdir)/etrip.tex . # get same filename in log
+ 	-$(SHELL) -c '$(etestenv) ./etex -ini <$(etestdir)/etrip1.in >etripin.fot'
+ 	mv etrip.log etripin.log
+ 	-diff $(etestdir)/etripin.log etripin.log
+ 	-$(SHELL) -c '$(etestenv) ./etex <$(etestdir)/etrip2.in >etrip.fot'
+ 	-diff $(etestdir)/etrip.fot etrip.fot
+ 	-$(DIFF) $(DIFFFLAGS) $(etestdir)/etrip.log etrip.log
+ 
  # Can't run trap and mptrap in parallel, because both write trap.{log,tfm}.
  trap: mf tftopl gftype
  	@echo ">>> See $(testdir)/mftrap.diffs for example of acceptable diffs." >&2
***************
*** 682,687 ****
--- 738,746 ----
  	rm -f trip.* tripin.* tripos.tex 8terminal.tex
  	rm -f trap.* mftrap.* mftrapin.* mptrap.* mptrapin.*
  	rm -f trapf.* mtrap.* writeo* missfont.log
+ # Cleanup from etrip.
+ 	rm -f etrip.tex
+ 	rm -f etrip.* etripin.*
  distclean::
  	test ! -r lib/Makefile \
  	  || for d in $(all_subdirs); do (cd $$d && $(MAKE) $@); done
***************
*** 699,704 ****
--- 758,766 ----
  	rm -f trip.* tripin.* tripos.tex 8terminal.tex
  	rm -f trap.* mftrap.* mftrapin.* mptrap.* mptrapin.*
  	rm -f trapf.* mtrap.* writeo* missfont.log
+ # Remove etrip junk here too.
+ 	rm -f etrip.tex
+ 	rm -f etrip.* etripin.*
  maintainer-clean::
  	test ! -r lib/Makefile \
  	  || for d in $(all_subdirs); do (cd $$d && $(MAKE) $@); done
***************
*** 1056,1061 ****
--- 1118,1184 ----
   ../kpathsea/getopt.h ../kpathsea/proginit.h ../kpathsea/tex-file.h \
   help.h ../kpathsea/c-pathch.h ../kpathsea/c-ctype.h \
   ../kpathsea/tex-make.h texmfmem.h texcoerce.h
+ etex0.o: etex0.c etexd.h texmfmp.h cpascal.h config.h \
+  ../kpathsea/config.h c-auto.h ../kpathsea/c-std.h \
+  ../kpathsea/c-unistd.h ../kpathsea/systypes.h \
+  ../kpathsea/c-memstr.h \
+  ../kpathsea/c-errno.h \
+  ../kpathsea/c-minmax.h \
+  ../kpathsea/c-limits.h \
+  ../kpathsea/c-proto.h ../kpathsea/debug.h ../kpathsea/types.h \
+  ../kpathsea/lib.h ../kpathsea/progname.h ../kpathsea/c-fopen.h \
+  ../kpathsea/getopt.h ../kpathsea/proginit.h ../kpathsea/tex-file.h \
+  help.h ../kpathsea/c-pathch.h ../kpathsea/c-ctype.h \
+  ../kpathsea/tex-make.h texmfmem.h etexcoerce.h
+ etex1.o: etex1.c etexd.h texmfmp.h cpascal.h config.h \
+  ../kpathsea/config.h c-auto.h ../kpathsea/c-std.h \
+  ../kpathsea/c-unistd.h ../kpathsea/systypes.h \
+  ../kpathsea/c-memstr.h \
+  ../kpathsea/c-errno.h \
+  ../kpathsea/c-minmax.h \
+  ../kpathsea/c-limits.h \
+  ../kpathsea/c-proto.h ../kpathsea/debug.h ../kpathsea/types.h \
+  ../kpathsea/lib.h ../kpathsea/progname.h ../kpathsea/c-fopen.h \
+  ../kpathsea/getopt.h ../kpathsea/proginit.h ../kpathsea/tex-file.h \
+  help.h ../kpathsea/c-pathch.h ../kpathsea/c-ctype.h \
+  ../kpathsea/tex-make.h texmfmem.h etexcoerce.h
+ etex2.o: etex2.c etexd.h texmfmp.h cpascal.h config.h \
+  ../kpathsea/config.h c-auto.h ../kpathsea/c-std.h \
+  ../kpathsea/c-unistd.h ../kpathsea/systypes.h \
+  ../kpathsea/c-memstr.h \
+  ../kpathsea/c-errno.h \
+  ../kpathsea/c-minmax.h \
+  ../kpathsea/c-limits.h \
+  ../kpathsea/c-proto.h ../kpathsea/debug.h ../kpathsea/types.h \
+  ../kpathsea/lib.h ../kpathsea/progname.h ../kpathsea/c-fopen.h \
+  ../kpathsea/getopt.h ../kpathsea/proginit.h ../kpathsea/tex-file.h \
+  help.h ../kpathsea/c-pathch.h ../kpathsea/c-ctype.h \
+  ../kpathsea/tex-make.h texmfmem.h etexcoerce.h
+ etexextra.o: etexextra.c etexd.h texmfmp.h cpascal.h config.h \
+  ../kpathsea/config.h c-auto.h ../kpathsea/c-std.h \
+  ../kpathsea/c-unistd.h ../kpathsea/systypes.h \
+  ../kpathsea/c-memstr.h \
+  ../kpathsea/c-errno.h \
+  ../kpathsea/c-minmax.h \
+  ../kpathsea/c-limits.h \
+  ../kpathsea/c-proto.h ../kpathsea/debug.h ../kpathsea/types.h \
+  ../kpathsea/lib.h ../kpathsea/progname.h ../kpathsea/c-fopen.h \
+  ../kpathsea/getopt.h ../kpathsea/proginit.h ../kpathsea/tex-file.h \
+  help.h ../kpathsea/c-pathch.h ../kpathsea/c-ctype.h \
+  ../kpathsea/tex-make.h texmfmem.h etexcoerce.h ../kpathsea/line.h \
+  ../kpathsea/readable.h ../kpathsea/variable.h 
+ etexini.o: etexini.c etexd.h texmfmp.h cpascal.h config.h \
+  ../kpathsea/config.h c-auto.h ../kpathsea/c-std.h \
+  ../kpathsea/c-unistd.h ../kpathsea/systypes.h \
+  ../kpathsea/c-memstr.h \
+  ../kpathsea/c-errno.h \
+  ../kpathsea/c-minmax.h \
+  ../kpathsea/c-limits.h \
+  ../kpathsea/c-proto.h ../kpathsea/debug.h ../kpathsea/types.h \
+  ../kpathsea/lib.h ../kpathsea/progname.h ../kpathsea/c-fopen.h \
+  ../kpathsea/getopt.h ../kpathsea/proginit.h ../kpathsea/tex-file.h \
+  help.h ../kpathsea/c-pathch.h ../kpathsea/c-ctype.h \
+  ../kpathsea/tex-make.h texmfmem.h etexcoerce.h
  tftopl.o: tftopl.c cpascal.h config.h ../kpathsea/config.h c-auto.h \
   ../kpathsea/c-std.h \
   ../kpathsea/c-unistd.h ../kpathsea/systypes.h \
diff -c web2c-7.0/web2c/web2c/convert-ORIG  web2c-7.0/web2c/web2c/convert
*** web2c-7.0/web2c/web2c/convert-ORIG	Sun Dec 29 23:29:48 1996
--- web2c-7.0/web2c/web2c/convert	Sun Feb  9 20:07:50 1997
***************
*** 59,74 ****
      output_files="$basefile[0-9]*.c ${basefile}ini.c ${basefile}d.h \
  ${basefile}coerce.h"
      ;;
!   tex)
      more_defines=$srcdir/web2c/texmf.defines
      precmd="| sed -f $srcdir/web2c/cvttex.sed"
!     web2c_options="-t -ctexcoerce"
      hfile=texmfmp.h
      fixwrites_options=-t
!     postcmd="| ./web2c/splitup tex"
!     cfile=tex2.c # last output file, or thereabouts
      output=
!     output_files="tex[0-9]*.c texini.c texd.h texcoerce.h"
      ;;
  esac
  
--- 59,75 ----
      output_files="$basefile[0-9]*.c ${basefile}ini.c ${basefile}d.h \
  ${basefile}coerce.h"
      ;;
!   tex|etex) # TeX and e-TeX are almost the same.
      more_defines=$srcdir/web2c/texmf.defines
      precmd="| sed -f $srcdir/web2c/cvttex.sed"
!     web2c_options="-t -c${basefile}coerce"
      hfile=texmfmp.h
      fixwrites_options=-t
!     postcmd="| ./web2c/splitup ${basefile}"
!     cfile=${basefile}2.c # last output file, or thereabouts
      output=
!     output_files="${basefile}[0-9]*.c ${basefile}ini.c ${basefile}d.h \
! ${basefile}coerce.h"
      ;;
  esac
  
***************
*** 106,116 ****
      mv x${basefile}coerce.h ${basefile}coerce.h
      touch ${basefile}d.h
      ;;
!   tex)
      sleep 2
!     cat texcoerce.h $srcdir/web2c/coerce.tex >xtexcoerce.h
!     mv xtexcoerce.h texcoerce.h
!     touch texd.h
      ;;
  esac
  
--- 107,117 ----
      mv x${basefile}coerce.h ${basefile}coerce.h
      touch ${basefile}d.h
      ;;
!   tex|etex)
      sleep 2
!     cat ${basefile}coerce.h $srcdir/web2c/coerce.tex >x${basefile}coerce.h
!     mv x${basefile}coerce.h ${basefile}coerce.h
!     touch ${basefile}d.h
      ;;
  esac
  
diff -c web2c-7.0/web2c/web2c/splitup.c-ORIG  web2c-7.0/web2c/web2c/splitup.c
*** web2c-7.0/web2c/web2c/splitup.c-ORIG	Mon Oct 14 23:38:22 1996
--- web2c-7.0/web2c/web2c/splitup.c	Sun Feb  9 20:10:17 1997
***************
*** 74,84 ****
    } else if (STREQ (output_name, "tex")) {
      fputs ("#define INITEX\n#define TeX\n", out);
      coerce = "texcoerce.h";
    } else if (STREQ (output_name, "mp")) {
      fputs ("#define INIMP\n#define MP\n", out);
      coerce = "mpcoerce.h";
    } else
!     FATAL1 ("Can only split mf, mp, or tex, not %s", output_name);
    
    coerce_len = strlen (coerce);
    
--- 74,87 ----
    } else if (STREQ (output_name, "tex")) {
      fputs ("#define INITEX\n#define TeX\n", out);
      coerce = "texcoerce.h";
+   } else if (STREQ (output_name, "etex")) {
+     fputs ("#define INITEX\n#define TeX\n", out);
+     coerce = "etexcoerce.h";
    } else if (STREQ (output_name, "mp")) {
      fputs ("#define INIMP\n#define MP\n", out);
      coerce = "mpcoerce.h";
    } else
!     FATAL1 ("Can only split mf, mp, tex or etex, not %s", output_name);
    
    coerce_len = strlen (coerce);