|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: P T
Length: 8006 (0x1f46) Types: TextFile Names: »PROBLEMS.W2C«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦c6be2784f⟧ »web2c-5.84b.tar.Z« └─⟦5800b1b62⟧ └─⟦this⟧ »src-5.84b/PROBLEMS.W2C« └─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« └─⟦c58930e5c⟧ └─⟦this⟧ »TeX3.14/PROBLEMS.W2C«
Some problems you might encounter: * GNU sed 1.06 cannot handle the sed script in mf/convert; neither can 1.07. The default is to use /bin/sed. * GNU Make 3.57 does not pass arguments to shell scripts (like convert), under system V. 3.56 does not have this problem, and neither do later versions. * On an i386 machine, GNU C 1.36 does not compile tex5.c correctly when making a 32-bit TeX. 1.37 fixes this bug. * On the AT&T 3b2, under System V release 3.2, cc thinks that eject_penalty (which is -1000, defined at line 3216), is a very large positive number. oc@vmp.com is developing a port for the 3b2; he has contributed some (incomplete) patches; they are below. * On a Sun 3 running 3.x, cc cannot compile mf2.c or mf4.c, because the preprocessor puts a # directive at the end of line 1811 (or thereabouts), instead of at the beginning. You have to manually move it. * On a Sun 386i running 4.0.1, cc cannot compile Metafont with -O, because it can't compile x = x + y correctly. Don't use -O, or don't use cc. (From morgan@ics.uci.edu.) * Some parts of this work on an Amiga, other parts don't. bsuggs@hac2arpa.hac.com is working on this, but would be happy to have help. * Ditto for a Stardent. beebe@science.utah.edu is working on this one. * gcc 1.37.1 cannot compile mf/MFwindow/sun.c without -traditional, because Sun uses nonstandard token pasting in <pixrect/memvar.h> in the definition of mpr_static. The fixincludes script distributed with gcc fixes this; alternatively, you caninstall a correct version of <pixrect/memvar.h> in the directory where gcc looks, e.g., /usr/local/gnu/lib/gcc-include/pixrect/memvar.h. The line that defines CAT should be: #define CAT a##b * flex 2.3.6 will not work unmodified under POSIX. karl@cs.umb.edu will send you changes if you like. \f * On a 386 machine running 386/ix, cc cannot compile itex.c, according to Reiner Petersen <reiner@db0tui62.bitnet>. Here is an ed script to get around the problem (alternatively, you can get gcc, and compile with that): : # Reiner Petersen (reiner@coma.uucp) # Technical University of Berlin # ed - $1 << end-of-edscript !echo change: / register integer for_end; i = 1 ; for_end = 31 ; if ( i <= for_end) do +1,.+2p -2,.c register integer for_end; register char j; /* 386/ix cc bug workaround rp */ i = 1 ; for_end = 31 ; if ( i <= for_end) do j = i; xchr [ j ] = chr ( i ) ; while ( i++ < for_end ) ; . !echo to: -8,.p w $1 end-of-edscript If you want, you can put this into the pipeline in ./tex/convert. * undump doesn't work under 386/ix. Here is a diff to undump.SYS_V.c to fix this, again contributed by reiner: *** undump.SYS_V.c Mon Apr 20 00:57:23 1987 --- undump.c Fri Aug 19 17:55:27 1988 *************** *** 1,7 **** /* * undump - resurrect a core file into a running program. * ! * for UNIX System V on a 3Bx * that uses the Common Object File Format * * Author: --- 1,7 ---- /* * undump - resurrect a core file into a running program. * ! * for UNIX System V on a 3Bx or Interactive 386/ix * that uses the Common Object File Format * * Author: *************** *** 9,14 **** --- 9,19 ---- * New York University * Tue Mar 3 13:18:25 EST 1987 * + * Additions for 386/ix: + * Reiner Petersen (reiner@coma.uucp) + * Technical University of Berlin + * Thu Aug 18 13:40:20 MET DST 1988 + * * Adapted from: * Spencer Thomas's undump and the file unexec.c in GNU emacs */ *************** *** 15,22 **** --- 20,33 ---- #include <sys/param.h> #include <sys/types.h> + + #ifndef ISC_386ix /* not availible in ISC 386/ix */ + #include <sys/psw.h> #include <sys/pcb.h> + + #endif /* ISC_386ix */ + #include <sys/signal.h> #include <sys/fs/s5dir.h> #include <sys/user.h> *************** *** 37,46 **** --- 48,66 ---- struct scnhdr dsc; struct scnhdr bsc; + #ifdef ISC_386ix + struct scnhdr csc; /* Comment section used by ISC 386/ix */ + #endif /* ISC_386ix */ + long bias; long lnnoptr; long text_scnptr; long data_scnptr; + + #ifdef ISC_386ix + long comment_scnptr; + #endif /* ISC_386ix */ + long symlocptr; main(argc, argv) *************** *** 89,94 **** --- 109,118 ---- dsc = sc; else if (strcmp(sc.s_name, ".bss") == 0) bsc = sc; + #ifdef ISC_386ix + else if (strcmp(sc.s_name, ".comment") == 0) + csc = sc; + #endif /* ISC_386ix */ *************** *** 97,103 **** if (u.u_exdata.ux_tsize != aout.tsize || u.u_exdata.ux_dsize != aout.dsize || u.u_exdata.ux_bsize != aout.bsize) ! fprintf("mismatch between %s and %s sizes\n", a_out_name, core_name); exit(1); --- 121,128 ---- if (u.u_exdata.ux_tsize != aout.tsize || u.u_exdata.ux_dsize != aout.dsize || u.u_exdata.ux_bsize != aout.bsize) ! fprintf( stderr, "mismatch between %s and %s sizes\n", ! a_out_name, core_name); exit(1); *************** *** 122,128 **** --- 147,159 ---- bsc.s_paddr = bsc.s_vaddr = aout.data_start + aout.dsize; bsc.s_size = aout.bsize; bsc.s_scnptr = 0L; + #ifndef ISC_386ix bias = dsc.s_scnptr + dsc.s_size - lnnoptr; + #else + comment_scnptr = csc.s_scnptr; + csc.s_scnptr = dsc.s_scnptr + dsc.s_size; + bias = csc.s_scnptr + csc.s_size - lnnoptr; + #endif /* ISC_386ix */ if (fh.f_symptr > 0L) fh.f_symptr += bias; *************** *** 139,149 **** --- 170,186 ---- Perror("ds write"); if (fwrite(&bsc, sizeof(bsc), 1, nfp) != 1) Perror("bs write"); + if (fwrite(&csc, sizeof(csc), 1, nfp) != 1) + Perror("cs write"); fseek(nfp, (long)text_scnptr, 0); copy(afp, nfp, aout.tsize); fseek(cfp, off, 0); fseek(nfp, (long)data_scnptr, 0); copy(cfp, nfp, size); + #ifdef ISC_386ix + fseek(afp, (long)comment_scnptr, 0); + copy(afp, nfp, csc.s_size); + #endif /* ISC_386ix */ copy_syms(afp, nfp); fclose(nfp); fclose(afp); \f These patches for the 3b2 machine are meant to serve as a starting point only, as they are for pre-2.992 TeX. If you work on this, contact oc@vmp.com. # # 3b2patch.sh, to fix web2c for 3B2s # for TeX 2.9* # # First, make sure we have EXTRA.c and ITEX.c that are the # same as the distribution versions of extra.c and itex.c # since we're going to modify those files. # if [ -f EXTRA.c ] then cp EXTRA.c extra.c else cp extra.c EXTRA.c fi if [ -f ITEX.c ] then cp ITEX.c itex.c else cp itex.c ITEX.c fi # # Then use a "sed" script to fix the "too may case statements" # in tex8.c # sed '/maincontrol/a\ int fallthrough; /switch/i\ fallthrough = 0; /case 71/i\ default : fallthgrough = 1 ; break ;\ }\ if ( fallthrough )\ switch ( abs ( curlist .modefield ) + curcmd ) {' <tex8.c >$$t8 && mv $$t8 tex8.c # # Then find those screwy negative array pointers in texd.h # and fix them throughout all the files # # first find the base numbers we're looking for # XEQL=`sed -n 's/^#define xeqlevel (.*-\([0-9][0-9]*\).*/\1/p' <texd.h` HASH=`sed -n 's/^#define hash (.*-\([0-9][0-9]*\).*/\1/p' <texd.h` # # then get rid of the negatives in texd.h # sed 's/\(#define xeqlevel (.*\)-[0-9][0-9]*/\1/ s/\(#define hash (.*\)-[0-9][0-9]*/\1/' <texd.h >$$td && mv $$td texd.h # # finally fix all the *.c files to do the subtraction # at array addressing time # for i in tex[0-8].c extra.c itex.c do sed 's/\([^a-z]xeqlevel \[\)/\1 -'${XEQL}' +/g s/\([^a-z]hash \[\)/\1 -'${HASH}' +/g' < $i > tkshl$$ && mv tkshl$$ $i done