To: bartlett Date: Tue, 4 Dec 90 13:58:04 EST X-Mailer: ELM [version 2.3 PL0] Greetings - Here is a set of patches for the 28sep90 release of Scheme->C. These patches are primarily of interest to users of the Intel 386 architecture under variations of System V.3 UNIX. (My version of the Sparc patches is included, but its only advantage over the merged patch set is in the test directory.) The 386 patches incorporate: 1) Miscellaneous improvements in System V signal handling and other os dependent functions. 2) Shared libraries for the scheme run time and xlib interface libraries. Also included are some things of more general interest: 3) Patches to the test/*.sc file which has byte addressing dependencies in it. 4) A constructed xlib/xwss.sch file, the one xlib header not included in the distribution. -- The rewrite you made to the crc32 code is a definite win. It works fast enough that I chose to write a Scheme->C program to extract the short named symbols from the xlib/*.sch files rather than include the actual list of names in this patch - and that saved ~50 kbytes. I was also glad - relieved might be a better word - to see that there was some closure funniness that needed fixing in the last release. I had a program which memory faulted on both the Sparc and 386 and my debugging showed that it was accessing a display variable and finding a small integer where a cons cell should have been. I could never get a small source to display the same problem and I rewrote the original buggy source until it worked and I never managed to regenerate the bug. -- rec -- #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'README.kit' <<'END_OF_FILE' XGreetings - X X Enclosed are the patches to 28sep90 Scheme->C for the Sparc and XIntel 386 architectures. These were built by Roger Critchlow, who can Xbe reached as rec@arris.com or rec@elf.org. There are the following Xfiles enclosed in this shar archive: X X README - this informative file. X patches - context diffs for the combined sparc and i386 changes X to the 28sep90 sources. These modify the following files: X makefile X scrt/apply.h X scrt/callcc.c X scrt/cio.c X scrt/heap.c X scrt/heap.h X scrt/makefile-tail X scrt/objects.h X scrt/scinit.c X scrt/signal.c X scsc/makefile-tail X test/makefile-tail X test/test16.sc X sources - a shar archive of additional source files to be extracted X after the distribution source tree has been built. This has: X scrt/sparc.s - the sparc assembly assist, sans protected X fixnum routines. X scrt/i386.s - an empty i386 assembly assist. X SPARC - the sparc configuration header. X I386 - a generic intel 386 configuration header. X ISC386IX - an Interactive Systems 386/ix specific X configuration header. X xlib/xwss.sch - a scheme header file for the only xlib X source that doesn't already have one. X tar.fix - a script to extract 28sep90 on System V and rewrite file X names to the 14 character limit. It extracts the archive four X times, moves files to shorter names, and edits the makefiles. X You need to edit it to tell it where to put the source tree X and the temporary files. X tar.unfix - a script to restore the files hacked by tar.fix to their X original glory. Only useful if you have a tar built on SysV X which needs to go back to the BSD world. X shlibs - a shar archive of files for building System V.3.2 shared X libraries for the scheme runtime and the xlib interface. This X contains: X shlibsc/ - a directory for building the shared libsc.a. X shlibsc/makefile - a makefile for building the shared libsc.a. X shlibscx/ - a directory for building the shared version of X scixl.a, which I call libscx.a. X shlibscx/makefile - a makefile for building the shared X libscx.a. X shlibscx/xlib.export - a list of symbols from the C xlib X interface which must be exported from libscx.a. X shlibscx/hexname.sc - a scheme program for converting scheme X header files containing (define-external ...) forms X into lists of exportable names. I planned to include X the list, but it's 90Kb and it isn't that hard to generate. X XConfiguration notes: X X The patches to the root makefile allow one to make a version of XScheme->C on top of the source distribution. It does this by moving Xthe distributed makefiles out of the way where necessary so that the Xversion specific information can be prepended. The forI386, XforISC386IX, and forSPARC targets use this facility. X X There are a few patches to the scrt, scsc, and test makefiles which Xmake them more useful when CC != cc and -lm is not the only library Xrequired. The SPARC and *386 headers have been modified to take these Xpatches into account. X XSystem V portability notes: X X My System V machine is a 386 with 8 Mb of RAM and 300 Mb of disk. X ISC 386/ix version 2.0.2, ie UNIX System V.3.2 X ISC TCP/IP version 1.1.2 X (but no network connection) X ISC X Windows version 1.1, ie MIT X11R3/p X Gnu gcc version 1.37.1 XScheme->C was compiled with gcc but linked with the ISC development tools. X X The conditionals for the 386 are separated into SYSV, for those which Xdepend on the features (or the nonfeatures) of System V, I386, for those Xwhich I believe to be useful for any Intel 386 hosted Unix, and ISC386IX, Xfor those which appear to be dependent on the Interactive Systems Corp. Xversion of System V.3.2 386 Unix. X X There have been successful ports of Scheme->C to both Xenix and SCO XUnix on the 386, but neither of these ports used the X11 libraries. X X System V doesn't do symbolic links. Use the new inplaceCPU target Xin the root makefile to build the objects in place. X X System V doesn't have ranlib. Make a command file named ranlib Xwhich runs 'ar rs' on the archive instead. Like this: X Xcat > /usr/local/bin/ranlib << 'END /usr/local/bin/ranlib' X#!/bin/sh Xfor f in $*; do ar rs $f; done XEND /usr/local/bin/ranlib Xchmod +x /usr/local/bin/ranlib X X System V tar complains vociferously about lots of stuff which makes Xno difference. Ignore it. It won't say anything about the real Xviolence it does when filenames get truncated. X X System V install is not equivalent to BSD install. All Xinstallations need to be done by hand, unless you have the ISC X Xwindows package on line in which case you can use this: X Xed - /usr/bin/X11/bsdinstall << 'END /usr/bin/X11/bsdinstall' X/install -f/s;;/etc/&; Xw /usr/local/bin/install Xq XEND /usr/bin/X11/bsdinstall Xchmod +x /usr/local/bin/install X X System V ar refuses to ranlib xlib/xlib.a (too many symbols!) and ld Xrefuses to link against archives without ranlib symbol tables. (UNIX Xused to be known as a system designed for software development.) Just Xbuild a partially linked object with 'ld -r -o xlib.o' and pretend it's Xa library. You didn't really care about the size of your binaries, Xdid you? X X The System V signal handling interface didn't work as it should Xhave, but thanks to tih@barsoom.nhh.no (Tom Ivar Helbekkmo) we now Xhave a much better implementation. X X The replacement I used for select() in scrt/cio.c is a version of Xsigpoll() which ISC has extended beyond the SV3.2 specification. XOther implementations of System V may need other solutions. Actually, XJoel built select() into the runtime at the scheme level, so both the Xsigpoll() hack and ISC's libinet.a version of select() are used in the Xcurrent runtime support. X XSystem V shared libraries: X X The order of making is: X X edit tar.fix to set directories X tar.fix X unshar sources X unshar shlibs X patch 'patches' <<'END_OF_FILE' Xdiff -c -r 28sep90/makefile s2c/makefile X*** 28sep90/makefile Tue Apr 10 16:48:28 1990 X--- s2c/makefile Tue Nov 13 23:14:42 1990 X*************** X*** 16,22 **** X--- 16,51 ---- X VAXBIN = /wrl/vax/bin X VAXLIB = /wrl/vax/lib X X+ # Architecture specific makefiles are constructed by the X+ # following commands. X X+ inplaceCPU: X+ test -f makefile-tail || cp makefile makefile-tail X+ echo "BINDIR = ${BINDIR}" > makefile X+ echo "LIBDIR = ${LIBDIR}" >> makefile X+ cat makefile-tail >> makefile X+ test -f doc/makefile-tail || cp doc/makefile doc/makefile-tail X+ echo "SRCDIR = ${SRCDIR}/doc" > doc/makefile X+ cat doc/makefile-tail >> doc/makefile X+ cat ${CPU} > scrt/makefile X+ echo "SRCDIR = ${SRCDIR}/scrt" >> scrt/makefile X+ echo "CPUDIR = ${CPUDIR}/scrt" >> scrt/makefile X+ echo "BINDIR = ${BINDIR}" >> scrt/makefile X+ echo "LIBDIR = ${LIBDIR}" >> scrt/makefile X+ cat scrt/makefile-tail >> scrt/makefile X+ cat ${CPU} > scsc/makefile X+ echo "SRCDIR = ${SRCDIR}/scsc" >> scsc/makefile X+ echo "CPUDIR = ${CPUDIR}/scsc" >> scsc/makefile X+ echo "BINDIR = ${BINDIR}" >> scsc/makefile X+ echo "LIBDIR = ${LIBDIR}" >> scsc/makefile X+ cat scsc/makefile-tail >> scsc/makefile X+ cat ${CPU} > test/makefile X+ echo "SRCDIR = ${SRCDIR}/test" >> test/makefile X+ echo "CPUDIR = ${CPUDIR}/test" >> test/makefile X+ echo "BINDIR = ${BINDIR}" >> test/makefile X+ echo "LIBDIR = ${LIBDIR}" >> test/makefile X+ cat test/makefile-tail >> test/makefile X+ X # Architecture specific directories and links to the source files are X # constructed by the following commands which follow: X X*************** X*** 74,79 **** X--- 103,123 ---- X forVAX: X make "CPU = VAX" "CPUDIR = ${VAXDIR}" \ X "BINDIR = ${VAXBIN}" "LIBDIR = ${VAXLIB}" forCPU X+ X+ forI386: X+ make "CPU = I386" "CPUDIR = /usr/local/src/24mar90" \ X+ "SRCDIR = /usr/local/src/24mar90" \ X+ "BINDIR = /usr/local/bin" "LIBDIR = /usr/local/lib" inplaceCPU X+ X+ forISC386IX: X+ make "CPU = ISC386IX" "CPUDIR = /home/28sep90" \ X+ "SRCDIR = /home/28sep90" \ X+ "BINDIR = /usr/local/bin" "LIBDIR = /usr/local/lib" inplaceCPU X+ X+ forSPARC: X+ make "CPU = SPARC" "CPUDIR = /var/tmp/24mar90" \ X+ "SRCDIR = /var/tmp/24mar90" \ X+ "BINDIR = /usr/local/bin" "LIBDIR = /usr/local/lib" inplaceCPU X X # The Scheme->C system is initially compiled from the C sources by the X # following: Xdiff -c -r 28sep90/scrt/apply.h s2c/scrt/apply.h X*** 28sep90/scrt/apply.h Fri Sep 21 15:51:11 1990 X--- s2c/scrt/apply.h Tue Nov 13 23:13:15 1990 X*************** X*** 44,49 **** X--- 44,57 ---- X by the compiler to call unknown functions. X */ X X+ #ifdef SPARC X+ #define MAXARGS 25 X+ #endif X+ X+ #ifdef I386 X+ #define MAXARGS 25 /* gcc doesn't appear to set any limit */ X+ #endif X+ X #ifdef MIPS X #define MAXARGS 25 /* Maximum number of required arguments permitted. X Note that this does not preclude an optional Xdiff -c -r 28sep90/scrt/callcc.c s2c/scrt/callcc.c X*** 28sep90/scrt/callcc.c Fri Sep 21 15:51:55 1990 X--- s2c/scrt/callcc.c Tue Nov 13 23:13:20 1990 X*************** X*** 57,62 **** X--- 57,70 ---- X #include "callcc.h" X #include "apply.h" X #include "signal.h" X+ X+ #ifdef SPARC X+ extern sc_setjmp(); X+ #pragma unknown_control_flow(sc_setjmp) X+ #define setjmp( x ) sc_setjmp( x ) X+ #define longjmp( x, y ) sc_longjmp( x, y ) X+ #endif X+ X #ifdef MIPS X extern sc_setsp(); X #endif Xdiff -c -r 28sep90/scrt/cio.c s2c/scrt/cio.c X*** 28sep90/scrt/cio.c Fri Sep 21 15:52:03 1990 X--- s2c/scrt/cio.c Tue Nov 13 23:13:26 1990 X*************** X*** 46,51 **** X--- 46,69 ---- X #include X #include "objects.h" X X+ #if ISC386IX X+ #include X+ #include X+ #include X+ X+ int rename(old, new) char *old, *new; X+ { X+ if (link(old, new) < 0) X+ if (errno == EEXIST && unlink(new) == 0 && link(old, new) < 0) X+ return 0; X+ else X+ return -1; X+ else if (unlink(old) == 0) X+ return 0; X+ return -1; X+ } X+ #endif X+ X int sc_libc_eof = EOF; X X /* feof(stream) */ X*************** X*** 88,100 **** X--- 106,128 ---- X FILE *stream; X { X int readfds, nfound; X+ #if ! ISC386IX X struct timeval timeout; X+ #else X+ struct pollfd pollfd; X+ #endif X X if (((stream)->_cnt) <= 0) { X+ #if ! ISC386IX X readfds = 1<<(fileno( stream )); X timeout.tv_sec = 0; X timeout.tv_usec = 0; X nfound = select( fileno( stream )+1, &readfds, 0, 0, &timeout ); X+ #else X+ pollfd.fd = fileno( stream ); X+ pollfd.events = POLLIN; X+ nfound = poll(&pollfd, 1, 0); X+ #endif X if (nfound == 0) return( 0 ); X } X return( 1 ); Xdiff -c -r 28sep90/scrt/heap.c s2c/scrt/heap.c X*** 28sep90/scrt/heap.c Fri Sep 21 15:54:45 1990 X--- s2c/scrt/heap.c Tue Nov 13 23:13:33 1990 X*************** X*** 100,108 **** X--- 100,110 ---- X X int sc_gcinfo; /* controls logging */ X X+ #if ! SYSV X static struct rusage gcru, /* resource consumption during collection */ X startru, X stopru; X+ #endif X X int *sc_stackbase; /* pointer to base of the stack */ X X*************** X*** 111,116 **** X--- 113,119 ---- X X TSCP sc_after_2dcollect_v; /* Collection status callback */ X X+ #if ! SYSV X /* The following function converts a rusage structure into an 18 word Scheme X vector composed of the same items. X */ X*************** X*** 240,245 **** X--- 243,252 ---- X { X return( rusagevector( &gcru ) ); X } X+ #else X+ #define getrusage(x,y) /* no operation */ X+ #define updategcru() /* no operation */ X+ #endif /* SYSV-BSD dependency */ X X /* Errors detected during garbage collection are logged by the following X procedure. If any errors occur, the program will abort after logging X*************** X*** 402,407 **** X--- 409,455 ---- X } X #endif MIPS X X+ #ifdef SPARC X+ /* All processor registers which might contain pointers are traced by the X+ following procedure. X+ */ X+ X+ static trace_stack_and_registers() X+ { X+ int i, *pp; X+ jmp_buf tmp; X+ X+ pp = STACKPTR; X+ while (pp != sc_stackbase) move_continuation_ptr( *pp++ ); X+ } X+ #endif SPARC X+ X+ #ifdef I386 X+ /* The following code is used to read the stack pointer. The register X+ number is passed in to force an argument to be on the stack, which in X+ turn can be used to find the address of the top of stack. X+ */ X+ X+ int *sc_processor_register( reg ) X+ int reg; X+ { X+ return( ® ); X+ } X+ X+ /* All processor registers which might contain pointers are traced by the X+ following procedure. X+ */ X+ X+ static trace_stack_and_registers() X+ { X+ int i, *pp; X+ jmp_buf tmp; X+ X+ setjmp(tmp); X+ pp = STACKPTR; X+ while (pp != sc_stackbase) move_continuation_ptr( *pp++ ); X+ } X+ #endif I386 X X /* The size of an extended object in words is returned by the following X function. X*************** X*** 1421,1426 **** X--- 1469,1475 ---- X getrusage( 0, &stopru ); X updategcru(); X if (sc_gcinfo) { X+ #if ! SYSV X fprintf( stderr, X " %d%% locked %d%% retained %d user ms", X (sc_lockcnt*100)/sc_heappages, X*************** X*** 1430,1435 **** X--- 1479,1490 ---- X " %d system ms %d page faults\n", X stopru.ru_stime.tv_sec*1000+stopru.ru_stime.tv_usec/1000, X stopru.ru_majflt ); X+ #else X+ fprintf( stderr, X+ " %d%% locked %d%% retained\n", X+ (sc_lockcnt*100)/sc_heappages, X+ (sc_generationpages*100)/sc_heappages); X+ #endif X } X if (sc_gcinfo == 2) { X /* Perform additional consistency checks */ Xdiff -c -r 28sep90/scrt/heap.h s2c/scrt/heap.h X*** 28sep90/scrt/heap.h Fri Sep 21 15:54:58 1990 X--- s2c/scrt/heap.h Tue Nov 13 23:13:38 1990 X*************** X*** 42,50 **** X--- 42,57 ---- X /* Import definitions */ X X #ifndef rusage X+ #ifdef SPARC X+ #include X+ #include X+ #else X+ #ifndef SYSV X #include X #include X #endif X+ #endif X+ #endif X X /* This module implements the object storage storage system for SCHEME->C. X X*************** X*** 306,311 **** X--- 313,326 ---- X */ X X extern int *sc_stackbase; X+ X+ #ifdef I386 X+ #define STACKPTR sc_processor_register( 4 ) X+ #endif X+ X+ #ifdef SPARC X+ #define STACKPTR sc_processor_register( 0 ) X+ #endif X X #ifdef MIPS X #define STACKPTR sc_processor_register( 29 ) Xdiff -c -r 28sep90/scrt/makefile-tail s2c/scrt/makefile-tail X*** 28sep90/scrt/makefile-tail Tue Nov 20 01:30:39 1990 X--- s2c/scrt/makefile-tail Tue Nov 13 23:13:44 1990 X*************** X*** 66,77 **** X Xsci: ${Sruntimec} ${Sruntime} ${Cruntime} ${Aruntime} \ X sci.c sci.o X ${CC} -o Xsci ${CFLAGS} ${Sruntime} ${Cruntime} ${Aruntime} sci.o \ X! -lm X X GGCi: ${Sruntimec} ${Sruntime} ${Aruntime} GGC.o sci.c sci.o X make "CFLAGS = -DGGC ${CFLAGS}" GGCheap.o GGCscinit.o X ${CC} -o GGCi ${CFLAGS} ${Sruntime} ${GGCCruntime} ${Aruntime} sci.o \ X! -lXaw -lXt -lX11 -lm X X Xmv: Xsci Xlibsc.a X mv Xsci sci X--- 66,77 ---- X Xsci: ${Sruntimec} ${Sruntime} ${Cruntime} ${Aruntime} \ X sci.c sci.o X ${CC} -o Xsci ${CFLAGS} ${Sruntime} ${Cruntime} ${Aruntime} sci.o \ X! ${CLIBS} X X GGCi: ${Sruntimec} ${Sruntime} ${Aruntime} GGC.o sci.c sci.o X make "CFLAGS = -DGGC ${CFLAGS}" GGCheap.o GGCscinit.o X ${CC} -o GGCi ${CFLAGS} ${Sruntime} ${GGCCruntime} ${Aruntime} sci.o \ X! -lXaw -lXt -lX11 ${CLIBS} X X Xmv: Xsci Xlibsc.a X mv Xsci sci Xdiff -c -r 28sep90/scrt/objects.h s2c/scrt/objects.h X*** 28sep90/scrt/objects.h Fri Sep 21 15:56:06 1990 X--- s2c/scrt/objects.h Tue Nov 13 23:13:51 1990 X*************** X*** 44,52 **** X--- 44,60 ---- X X /* Default the value of CPUTYPE if not currently defined. */ X X+ #ifndef SPARC X+ #ifndef I386 X #ifndef MIPS X #ifndef TITAN X #ifndef VAX X+ #ifdef sparc X+ #define SPARC 1 X+ #endif X+ #ifdef i386 X+ #define I386 1 X+ #endif X #ifdef mips X #define MIPS 1 X #endif X*************** X*** 59,64 **** X--- 67,81 ---- X #endif X #endif X #endif X+ #endif X+ #endif X+ X+ #ifdef SPARC X+ #define MATHTRAPS 0 X+ #endif X+ #ifdef I386 X+ #define MATHTRAPS 0 X+ #endif X X /* The Scheme->C installer may elect to have arithmetic overflow handled X gracefully on either the MIPS or the VAX implementations. The default X*************** X*** 71,76 **** X--- 88,102 ---- X X /* A machine dependent definition: the setjmp/longjmp buffer. */ X X+ #ifdef SPARC X+ typedef int jmp_buf[2+7+8+8+1]; X+ #define DOUBLE_ALIGN 1 X+ #endif X+ X+ #ifdef I386 X+ #include X+ #define CPUTYPE I386 X+ #endif X #ifdef MIPS X #include X #define CPUTYPE MIPS X*************** X*** 130,141 **** X--- 156,177 ---- X unsigned gned; X } unsi; X struct { /* EXTENDEDOBJ */ X+ #ifndef SPARC X unsigned tag:8; X unsigned rest:24; X+ #else X+ unsigned rest:24; X+ unsigned tag:8; X+ #endif X } extendedobj; X struct { /* SYMBOL */ X+ #ifndef SPARC X unsigned tag:8; X unsigned rest:24; X+ #else X+ unsigned rest:24; X+ unsigned tag:8; X+ #endif X TSCP name; X TSCP *ptrtovalue; X TSCP value; X*************** X*** 142,172 **** X--- 178,234 ---- X TSCP propertylist; X } symbol; X struct { /* STRING */ X+ #ifndef SPARC X unsigned tag:8; X unsigned length:24; X+ #else X+ unsigned length:24; X+ unsigned tag:8; X+ #endif X char char0; X } string; X struct { /* VECTOR */ X+ #ifndef SPARC X unsigned tag:8; X unsigned length:24; X+ #else X+ unsigned length:24; X+ unsigned tag:8; X+ #endif X TSCP element0; X } vector; X struct { /* PROCEDURE */ X+ #ifndef SPARC X unsigned tag:8; X unsigned required:8; X unsigned optional:16; X+ #else X+ unsigned optional:16; X+ unsigned required:8; X+ unsigned tag:8; X+ #endif X TSCP (*code)(); X TSCP closure; X } procedure; X struct { /* CLOSURE */ X+ #ifndef SPARC X unsigned tag:8; X unsigned length:24; X+ #else X+ unsigned length:24; X+ unsigned tag:8; X+ #endif X TSCP closure; X TSCP var0; X } closure; X struct { /* CONTINUATION */ X+ #ifndef SPARC X unsigned tag:8; X unsigned length:24; X+ #else X+ unsigned length:24; X+ unsigned tag:8; X+ #endif X TSCP continuation; X jmp_buf savedstate; X int *address; X*************** X*** 174,196 **** X--- 236,278 ---- X int word0; X } continuation; X struct { /* FLOAT32 */ X+ #ifndef SPARC X unsigned tag:8; X unsigned rest:24; X+ #else X+ unsigned rest:24; X+ unsigned tag:8; X+ #endif X float value; X } float32; X struct { /* FLOAT64 */ X+ #ifndef SPARC X unsigned tag:8; X unsigned rest:24; X+ #else X+ unsigned rest:24; X+ unsigned tag:8; X+ #endif X double value; X } float64; X struct { /* FORWARD */ X+ #ifndef SPARC X unsigned tag:8; X unsigned length:24; X+ #else X+ unsigned length:24; X+ unsigned tag:8; X+ #endif X TSCP forward; X } forward; X struct { /* WORDALIGN */ X+ #ifndef SPARC X unsigned tag:8; X unsigned length:24; X+ #else X+ unsigned length:24; X+ unsigned tag:8; X+ #endif X } wordalign; X struct { /* PAIR */ X TSCP car; X*************** X*** 208,213 **** X--- 290,303 ---- X #define U_TX( scp ) ((TSCP)((char*)(scp)+EXTENDEDTAG)) X #define U_TP( scp ) ((TSCP)((char*)(scp)+PAIRTAG)) X #define T_U( tscp ) ((SCP)((int)(tscp) & (~TAGMASK))) X+ #ifdef SPARC X+ #define TX_U( tscp ) ((SCP)((char*)tscp-EXTENDEDTAG)) X+ #define TP_U( tscp ) ((SCP)((char*)tscp-PAIRTAG)) X+ #endif X+ #ifdef I386 X+ #define TX_U( tscp ) ((SCP)((char*)tscp-EXTENDEDTAG)) X+ #define TP_U( tscp ) ((SCP)((char*)tscp-PAIRTAG)) X+ #endif X #ifdef MIPS X #define TX_U( tscp ) ((SCP)((char*)tscp-EXTENDEDTAG)) X #define TP_U( tscp ) ((SCP)((char*)tscp-PAIRTAG)) X*************** X*** 725,730 **** X--- 815,826 ---- X #define STRING_CHAR( tscp, n ) (*(((unsigned char*)tscp)+FIXED_C( n )+3)) X X #define VECTOR_LENGTH( tscp ) (TX_U( tscp )->vector.length) X+ #ifdef SPARC X+ #define VECTOR_ELEMENT( tscp, n ) (*((PATSCP)(((char*)( tscp ))+3+((int)n)))) X+ #endif X+ #ifdef I386 X+ #define VECTOR_ELEMENT( tscp, n ) (*((PATSCP)(((char*)( tscp ))+3+((int)n)))) X+ #endif X #ifdef MIPS X #define VECTOR_ELEMENT( tscp, n ) (*((PATSCP)(((char*)( tscp ))+3+((int)n)))) X #endif X*************** X*** 752,768 **** X--- 848,880 ---- X X /* C declarations */ X X+ #ifndef SPARC X #define DEFSTRING( name, chars, len ) \ X static struct { unsigned tag:8; \ X unsigned length:24; \ X char char0[len+(4-(len % 4))]; } \ X name = { STRINGTAG, len, chars } X+ #else X+ #define DEFSTRING( name, chars, len ) \ X+ static struct { unsigned length:24; \ X+ unsigned tag:8; \ X+ char char0[len+(4-(len % 4))]; } \ X+ name = { len, STRINGTAG, chars } X+ #endif X X+ #ifndef SPARC X #define DEFFLOAT( name, value ) \ X static struct { unsigned tag:8; \ X unsigned length: 24; \ X FLOATTYPE f; } \ X name = { FLOATTAG, 0, value } X+ #else X+ #define DEFFLOAT( name, value ) \ X+ static struct { unsigned length:24; \ X+ unsigned tag:8; \ X+ FLOATTYPE f; } \ X+ name = { 0, FLOATTAG, value } X+ #endif X X #define DEFTSCP( name ) TSCP name X Xdiff -c -r 28sep90/scrt/scinit.c s2c/scrt/scinit.c X*** 28sep90/scrt/scinit.c Fri Sep 21 15:57:01 1990 X--- s2c/scrt/scinit.c Tue Nov 13 23:13:56 1990 X*************** X*** 53,58 **** X--- 53,76 ---- X extern errno; /* C-library Error flag */ X X extern etext; X+ #ifdef SPARC X+ #define ETEXT ((int)&etext) /* First address after text */ X+ #include X+ #define STACKBASE (int*)USRSTACK X+ #endif X+ #ifdef ISC386IX X+ #if I386SHLIB X+ int *sc__etext; X+ #define ETEXT ((int)sc__etext) /* first address after text */ X+ #else X+ #define ETEXT ((int)&etext) /* first address after text */ X+ #endif X+ #include X+ #include /* probably should be elsewhere */ X+ #include X+ #define STACKBASE (int*)UVSTACK X+ #endif X+ /* ditto for SCO */ X #ifdef MIPS X #define ETEXT ((int)&etext) /* First address after text */ X #include X*************** X*** 71,80 **** X #define STACKBASE (int*)USRSTACK X #endif X X- #include X #include X #include X #include X #include X X /* Definitions for objects within sc */ X--- 89,102 ---- X #define STACKBASE (int*)USRSTACK X #endif X X #include X+ #include X #include X+ #if ! SYSV X #include X+ #else X+ #include X+ #endif X #include X X /* Definitions for objects within sc */ X*************** X*** 183,188 **** X--- 205,211 ---- X X static init_procs() X { X+ #if ! SYSV X INITIALIZEVAR( U_TX( ADR( t1030 ) ), X ADR( sc_my_2drusage_v ), X MAKEPROCEDURE( 0, X*************** X*** 192,197 **** X--- 215,221 ---- X MAKEPROCEDURE( 0, X 0, X sc_collect_2drusage, EMPTYLIST ) ); X+ #endif X INITIALIZEVAR( U_TX( ADR( t1034 ) ), X ADR( sc_collect_v ), X MAKEPROCEDURE( 0, X*************** X*** 721,726 **** X--- 745,756 ---- X sc_cons( X sc_cstringtostring( "28sep90jfb" ), X sc_cons( X+ #ifdef SPARC X+ sc_cstringtostring( "SparcStation-1" ), X+ #endif X+ #ifdef I386 X+ sc_cstringtostring( "AT/386" ), X+ #endif X #ifdef MIPS X sc_cstringtostring( "DECstation3100" ), X #endif X*************** X*** 731,736 **** X--- 761,772 ---- X sc_cstringtostring( "VAX" ), X #endif X sc_cons( X+ #ifdef SPARC X+ sc_cstringtostring( "SPARC" ), X+ #endif X+ #ifdef I386 X+ sc_cstringtostring( "Intel 386" ), X+ #endif X #ifdef MIPS X sc_cstringtostring( "R2000" ), X #endif X*************** X*** 741,747 **** X--- 777,792 ---- X sc_cstringtostring( "VAX" ), X #endif X sc_cons( X+ #ifdef SPARC X+ sc_cstringtostring( "SunOS" ), X+ #else X+ #if VAX || TITAN || MIPS X sc_cstringtostring( "ULTRIX" ), X+ #endif X+ #if SYSV X+ sc_cstringtostring( "System V.3.2" ), X+ #endif X+ #endif X sc_cons( X FALSEVALUE, X EMPTYLIST X*************** X*** 752,755 **** X--- 797,805 ---- X ) X ) X ); X+ X+ X+ X+ X+ X } Xdiff -c -r 28sep90/scrt/signal.c s2c/scrt/signal.c X*** 28sep90/scrt/signal.c Fri Sep 21 16:00:13 1990 X--- s2c/scrt/signal.c Sat Nov 17 12:44:37 1990 X*************** X*** 92,101 **** X--- 92,106 ---- X hardware traps. X */ X X+ #if SYSV X+ void sc_onsignal1( signal ) X+ int signal; X+ #else X void sc_onsignal1( signal, code, scp ) X int signal, X code; X struct sigcontext* scp; X+ #endif X { X int i; X struct { /* Save sc_unknowncall's state here */ X*************** X*** 104,109 **** X--- 109,122 ---- X int count; X } save; X X+ #if SYSV X+ /* Reset the signal, might be more prudent later? */ X+ { X+ extern TSCP scrt4_signals_v; X+ scrt4_signal(INT_TSCP(signal), X+ VECTOR_ELEMENT(scrt4_signals_v, INT_TSCP(signal))); X+ } X+ #endif X if (sc_mutex == 0 && gcinprogress == 0) { X /* Save sc_unknowncall's state */ X for (i = 0; i < 4; i++) save.proc[ i ] = sc_unknownproc[ i ]; X*************** X*** 118,124 **** X--- 131,141 ---- X } X else { X /* Signal must be defered */ X+ #if SYSV X+ sighold( signal ); X+ #else X sigblock( 1<integer #\S)) X (c-byte-set! s 1 (char->integer #\c)) X*************** X*** 71,84 **** X (let ((s (make-string 10 #\*))) X (c-int-set! s 0 #xffff) X (chk 10 (c-int-ref s 0) #xffff) X! (chk 11 (c-shortunsigned-ref s 0) #xffff) X! (chk 12 (c-shortunsigned-ref s 2) 0) X! (chk 13 (c-shortint-ref s 0) -1) X! (chk 14 (c-shortint-ref s 2) 0) X! (c-shortint-set! s 2 -1) X! (chk 15 (c-int-ref s 0) -1) X! (c-shortunsigned-set! s 0 #xfffe) X! (chk 16 (c-int-ref s 0) -2)) X X (let ((s (make-string 10 #\*))) X (c-unsigned-set! s 0 (- (expt 2 32) 1)) X--- 74,98 ---- X (let ((s (make-string 10 #\*))) X (c-int-set! s 0 #xffff) X (chk 10 (c-int-ref s 0) #xffff) X! (if big-endian X! (begin X! (chk 11 (c-shortunsigned-ref s 2) #xffff) X! (chk 12 (c-shortunsigned-ref s 0) 0) X! (chk 13 (c-shortint-ref s 2) -1) X! (chk 14 (c-shortint-ref s 0) 0) X! (c-shortint-set! s 0 -1) X! (chk 15 (c-int-ref s 0) -1) X! (c-shortunsigned-set! s 2 #xfffe) X! (chk 16 (c-int-ref s 0) -2)) X! (begin X! (chk 11 (c-shortunsigned-ref s 0) #xffff) X! (chk 12 (c-shortunsigned-ref s 2) 0) X! (chk 13 (c-shortint-ref s 0) -1) X! (chk 14 (c-shortint-ref s 2) 0) X! (c-shortint-set! s 2 -1) X! (chk 15 (c-int-ref s 0) -1) X! (c-shortunsigned-set! s 0 #xfffe) X! (chk 16 (c-int-ref s 0) -2)))) X X (let ((s (make-string 10 #\*))) X (c-unsigned-set! s 0 (- (expt 2 32) 1)) X*************** X*** 99,105 **** X X (let ((s (make-string 10 #\*)) X (v (make-vector 10 -1))) X! (chk 40 (scheme-byte-ref s 1) 10) X (chk 41 (scheme-byte-ref s 4) (char->integer #\*)) X (chk 42 (scheme-byte-ref s 14) 0) X (scheme-byte-set! s 5 (char->integer #\^)) X--- 113,121 ---- X X (let ((s (make-string 10 #\*)) X (v (make-vector 10 -1))) X! (if big-endian X! (chk 40 (scheme-byte-ref s 2) 10) X! (chk 40 (scheme-byte-ref s 1) 10)) X (chk 41 (scheme-byte-ref s 4) (char->integer #\*)) X (chk 42 (scheme-byte-ref s 14) 0) X (scheme-byte-set! s 5 (char->integer #\^)) X*************** X*** 123,126 **** X (chk 55 (bit-or 1 3 5) 7) X (chk 56 (bit-xor 1 3 5) 7) X (chk 57 (bit-lsh 1 31) 2147483648.) X! (chk 58 (bit-rsh -1 31) 1)) X--- 139,142 ---- X (chk 55 (bit-or 1 3 5) 7) X (chk 56 (bit-xor 1 3 5) 7) X (chk 57 (bit-lsh 1 31) 2147483648.) X! (chk 58 (bit-rsh -1 31) 1))) END_OF_FILE if test 26763 -ne `wc -c <'patches'`; then echo shar: \"'patches'\" unpacked with wrong size! fi # end of 'patches' fi if test -f 'shlibs' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'shlibs'\" else echo shar: Extracting \"'shlibs'\" \(29331 characters\) sed "s/^X//" >'shlibs' <<'END_OF_FILE' X#! /bin/sh X# This is a shell archive. Remove anything before this line, then unpack X# it by saving it into a file and typing "sh file". To overwrite existing X# files, type "sh file -c". You can also feed this as standard input via X# unshar, or by typing "sh 'shlibsc/makefile' <<'END_OF_FILE' XX## XX## Build shared library for Scheme->C and versions of sci and sccomp which XX## use the shared libraries. XX## XX## Built under ISC 386/ix 2.0.2 with the host based tcp/ip package XX## and the software development package, but using gcc as compiler. XX## XX## First, make port in scrt and scsc to build libsc.a and the objects for XX## sccomp. The CFLAGS used to compile scrt/scinit.c must include -DI386SHLIB XX## but all the other objects are the same as the ones used for the unshared XX## libraries. XX## XX## Second, edit the directory names in this file to reflect your own system XX## conventions. XX## XX## Third, if you aren't using gcc, then find the lines marked NO-GCC and XX## fix them according to the supplied instructions. XX## XX## Third and a half - stiff upper lip - become root and use emacs to edit XX## /usr/lib/libinet.a. There are three modules which define errno as Common XX## rather than Undefined and we need to fix them. Search for the string XX## errno^@^@^@^D XX## with ^S, remembering that the ^@ and ^D will need to be quoted with ^Q. XX## Delete the ^D and insert a ^@ in its place. You need to do this three XX## times, then write the file out with ^X^S. (You might want to make an extra XX## backup of libinet.a before you do this. :-) Finally, you should run XX## ranlib, ie ar rs, on the updated archive to get its symbol table fixed. XX## XX## Fourth, try make all to see if everything comes together correctly. XX## The library build makes subdirectories and extracts needed objects XX## from archives. This can take up a lot of space, but not nearly as XX## much as the shared x11 libraries will. XX## XX## Fifth, become a privileged user and try make install. Note that XX## sci_s and sccomp_s will not run until the target shared library has XX## been installed in its declared home. So make sure that #target XX## specifies a directory that you can modify. XX## XX XX#NO-GCC then change this macro to use cc XXCC=gcc XX XXBINDIR = /usr/local/bin XXLIBDIR = /usr/local/lib XXCPUDIR = /home/28sep90~ XX XX#NO-GCC then delete gnulib from this list XXlibraries = libsc libinet libm libc gnulib XX XXlibsc_a = ${CPUDIR}/scrt/libsc.a XXlibinet_a = /usr/lib/libinet.a XXlibm_a = /lib/libm.a XXlibc_a = /lib/libc.a XXgnulib_a = ${LIBDIR}/gcc-gnulib XXlibc_s_a = /lib/libc_s.a XX XXsci_o = ../scrt/sci.o XX XXsccomp_o= ../scsc/main.o ../scsc/closeana.o ../scsc/lambdaexp.o\ XX ../scsc/plist.o ../scsc/transform.o ../scsc/expform.o\ XX ../scsc/readtext.o ../scsc/miscexp.o ../scsc/macros.o\ XX ../scsc/compile.o ../scsc/lap.o ../scsc/gencode.o\ XX ../scsc/callcode.o ../scsc/lambdacode.o ../scsc/misccode.o XX XXall: sci_s sccomp_s libsc_s XX XXsci_s: ${sci_o} libsc_s XX ${CC} -o sci_s ${sci_o} libsc_s.a -lc_s XX @echo target shared library must be installed before sci_s can run. XX XXsccomp_s: ${sccomp_o} libsc_s XX ${CC} -o sccomp_s ${sccomp_o} libsc_s.a -lc_s XX @echo target shared library must be installed before sccomp_s can run. XX XXinstall: all XX -mkdir ${LIBDIR}/schemetoc XX -rm ${LIBDIR}/schemetoc/libsc_s XX cp libsc_s ${LIBDIR}/schemetoc XX strip ${LIBDIR}/schemetoc/libsc_s XX -rm ${LIBDIR}/schemetoc/libsc_s.a XX -rm ${LIBDIR}/schemetoc/libsc.a XX cp libsc_s.a ${LIBDIR}/schemetoc/libsc_s.a XX ln ${LIBDIR}/schemetoc/libsc_s.a ${LIBDIR}/schemetoc/libsc.a XX -rm ${BINDIR}/sci_s XX -rm ${BINDIR}/sci XX cp sci_s ${BINDIR}/sci_s XX ln ${BINDIR}/sci_s ${BINDIR}/sci XX strip ${BINDIR}/sci_s XX cp ${CPUDIR}/scrt/predef.sc ${LIBDIR}/schemetoc XX cp ${CPUDIR}/scrt/objects.h ${LIBDIR}/schemetoc XX -rm ${BINDIR}/sccomp_s XX -rm ${BINDIR}/sccomp XX cp sccomp_s ${BINDIR} XX ln ${BINDIR}/sccomp_s ${BINDIR}/sccomp XX strip ${BINDIR}/sccomp_s XX ${BINDIR}/sccomp_s \ XX -sch 4 \ XX ${LIBDIR}/schemetoc/predef.sc \ XX ${LIBDIR}/schemetoc/objects.h \ XX ${LIBDIR}/schemetoc/libsc_s.a \ XX ${LIBDIR}/schemetoc/libsc_s.a \ XX I386 \ XX ${LIBDIR}/schemetoc/sccomp_s.heap XX chmod +r ${LIBDIR}/schemetoc/sccomp_s.heap XX chmod -x ${LIBDIR}/schemetoc/sccomp_s.heap XX -rm ${BINDIR}/scc XX echo "#!/bin/sh" > ${BINDIR}/scc XX echo SCC=${BINDIR}/sccomp >> ${BINDIR}/scc XX echo SCH=${LIBDIR}/schemetoc/sccomp_s.heap >> ${BINDIR}/scc XX echo LIB='"'${LIBDIR}/schemetoc/libsc_s.a -lc_s'"' >> ${BINDIR}/scc XX echo '$${SCC} -cc $${CC} -schf $${SCH} $$* $${LIB}' >> ${BINDIR}/scc XX chmod +x ${BINDIR}/scc XX XX## XX## Interpreter runtime library modules. XX## XXlibsc = libsc/apply.o libsc/callcc.o libsc/cio.o libsc/heap.o\ XX libsc/objects.o libsc/scdebug.o libsc/sceval.o libsc/scexpand.o\ XX libsc/scexpand1.o libsc/scexpand2.o libsc/scinit.o libsc/scqquote.o\ XX libsc/screp.o libsc/scrt1.o libsc/scrt2.o libsc/scrt3.o libsc/scrt4.o\ XX libsc/scrt5.o libsc/scrt6.o libsc/scrt7.o libsc/signal.o XX XX## XX## Additional libinet support. XX## XXlibinet = libinet/bcopy.o libinet/bzero.o libinet/connect.o\ XX libinet/byteorder.o libinet/ghostnamad.o libinet/ghostname.o\ XX libinet/inet_addr.o libinet/select.o libinet/setsockopt.o libinet/socket.o\ XX libinet/bcmp.o libinet/res_comp.o libinet/res_mkqury.o libinet/res_send.o\ XX libinet/sockack.o libinet/recv.o libinet/res_init.o libinet/send.o XX XX## XX## Math library modules. XX## XXlibm = libm/floor.o libm/exp.o libm/log.o libm/sin.o libm/tan.o libm/asin.o\ XX libm/atan.o libm/sqrt.o libm/pow.o libm/matherr.o XX XX## XX## C library modules not in shared c library. XX## XXlibc = libc/setjmp.o libc/poll.o libc/printf.o libc/abort.o\ XX libc/scanf.o libc/modf.o libc/doscan.o libc/ctype.o\ XX libc/link.o libc/geteuid.o libc/mknod.o\ XX libc/rew.o libc/strtol.o libc/sysi86.o\ XX libc/errlst.o libc/tolower.o \ XX libc/data.o libc/cuexit.o \ XX libc/putmsg.o libc/uname.o libc/getmsg.o XX XX## XX## Gnu c compiler run time support modules. XX## XXgnulib = gnulib/_divsi3.o gnulib/_fixdfsi.o gnulib/_fixunsdfsi.o\ XX gnulib/_muldi3.o gnulib/_moddi3.o gnulib/_cmpdi2.o gnulib/_negdi2.o\ XX gnulib/_umoddi3.o gnulib/_bdiv.o gnulib/_udivsi3.o XX XX## XX## The whole kit XX## XX#NO-GCC then delete ${gnulib} from this list XXlibrary_objects = ${libsc} ${libinet} ${libm} ${local} ${libc} ${gnulib} XX## XX## Scheme interpreter runtime library. XX## XXlibsc_s: libsc.sl XX -rm libsc_s libsc_s.a XX mkshlib -s libsc.sl -t libsc_s -h libsc_s.a 2> libsc.err XXlibsc.sl: libsc.o XX echo '##' > libsc.sl XX echo '## libsc.sl - scheme->c library' >> libsc.sl XX echo '#address .text 0xB0000000' >> libsc.sl XX echo '#address .data 0xB0400000' >> libsc.sl XX echo '#target ${LIBDIR}/schemetoc/libsc_s' >> libsc.sl XX echo '#branch' >> libsc.sl XX nm -px libsc.o |\ XX sort |\ XX nawk '/ T .*__init/{print " " $$3 " " ++nbt}'>> libsc.sl XX echo '#objects' >> libsc.sl XX echo ' libsc.o' >> libsc.sl XX echo '#objects noload' >> libsc.sl XX echo /lib/libc_s.a >> libsc.sl XX echo '#init libsc.o' >> libsc.sl XX echo ' sc__etext etext' >> libsc.sl XX echo '#hide linker *' >> libsc.sl XX echo '#export linker' >> libsc.sl XX nm -px libsc.o |\ XX sort |\ XX nawk '/ [DT] /{print " " $$3}' >> libsc.sl XX XXlibsc.o: ${libraries} ${library_objects} XX ld -x -r -o tmp.o ${library_objects} XX nm -p tmp.o | \ XX nawk '/ C /{ print "int " $$3 "[" int(($$1+3)/4) "]={0};" }'\ XX > tmp_defs.c XX ${CC} -c tmp_defs.c XX ld -x -r -o libsc.o tmp_defs.o tmp.o XX XXlibsc: ${libsc_a} XX -mkdir libsc XX cd libsc; ar x ${libsc_a} `echo ${libsc} | sed s/libsc.//gp` XX XXlibinet: XX -mkdir libinet XX cd libinet; ar x ${libinet_a} `echo ${libinet} | sed s/libinet.//gp` XX XXlibm: ${libm_a} XX -mkdir libm XX cd libm; ar x ${libm_a} `echo ${libm} | sed s/libm.//gp` XX XXlibc: ${libc_a} XX -mkdir libc XX cd libc; ar x ${libc_a} `echo ${libc} | sed s/libc.//gp` XX XXgnulib: ${gnulib_a} XX -mkdir gnulib XX cd gnulib; ar x ${gnulib_a} `echo ${gnulib} | sed s/gnulib.//gp` XX XXlibsc.get: libsc.o XX nm -p ${libc_s_a} | nawk '/ A [_a-zA-Z]/{ print $$3 }' | sort > absolute XX nm -p libsc.o | nawk '/ U /{ print $$3 }' | sort > undefined XX comm -13 absolute undefined > libsc.get XX XX## XX## Miscellaneous XX## XXclean: XX -rm libsc.o libsc.err libsc.sl libsc.get XX -rm tmp.o tmp_defs.c tmp_defs.o undefined absolute XXall-clean: XX -rm libsc_s libsc_s.a sci_s sccomp_s XX -rm -fr ${libraries} XX XX XEND_OF_FILE Xif test 7795 -ne `wc -c <'shlibsc/makefile'`; then X echo shar: \"'shlibsc/makefile'\" unpacked with wrong size! Xfi X# end of 'shlibsc/makefile' Xfi Xif test -f 'shlibscx/hexname.sc' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'shlibscx/hexname.sc'\" Xelse Xecho shar: Extracting \"'shlibscx/hexname.sc'\" \(8607 characters\) Xsed "s/^X//" >'shlibscx/hexname.sc' <<'END_OF_FILE' XX;;; XX;;; The external symbols emitted by Scheme->C have been pulverized by the XX;;; following routines from scsc/expform.sc. XX;;; This program is intended to run as a filter reading cat xlib/*.sch and XX;;; writing out the list of exported C symbols which need to be made visible XX;;; in the shared library. The supplied libscx.export is the result, it won't XX;;; need changing unless you modify the contents of xlib. XX;;; XX XX(module hexname (main main)) XX XX;;; This function is called to convert a name into its "lower case hex" format. XX XX(define (LCHEXNAME name) XX (if (symbol? name) (set! name (symbol->string name))) XX (do ((c '()) XX (i 0 (+ 1 i)) XX (new (list 1))) XX ((= i (string-length name)) (list->string (cdr new))) XX (set! c (string-ref name i)) XX (cond ((char=? c #\_) XX (set-cdr! (last-pair new) (list #\_ #\_))) XX ((and (char>=? c #\A) (char<=? c #\Z)) XX (set-cdr! (last-pair new) XX (list (integer->char (+ (char->integer c) 32))))) XX ((or (and (char>=? c #\a) (char<=? c #\z)) XX (and (char>=? c #\0) (char<=? c #\9) (> i 0))) XX (set-cdr! (last-pair new) (list c))) XX (else XX (set-cdr! (last-pair new) (cons #\_ (char->dl c 16 2))))))) XX XX;;; This function is one of those that you hope you never have to write, but XX;;; inevitably you must. It exists because vcc will only recognize the first XX;;; 31 characters of a variable name. In order to force the first 31 XX;;; characters of a generated name to be unique, it is necessary that the XX;;; lchexnames of the module and variable be less than or equal to 28 XX;;; characters. If it doesn't fit, then a name is generated consisting of XX;;; the last 9 characters of the module name, the last 10 characters of the XX;;; name, and the hex crc-32 of the module and name. XX XX(define (HEX28 module name) XX (if (<= (+ (string-length module) (string-length name)) 28) XX (if (equal? module "") name (string-append module "_" name)) XX (let ((value (format '() "~a_~a_~a" XX (substring module XX (max 0 (- (string-length module) 9)) XX (string-length module)) XX (substring name XX (max 0 (- (string-length name) 10)) XX (string-length name)) XX (crc-32x2 (string->list XX (string-append module name)) 0 0)))) XX (if (char-numeric? (string-ref value 0)) XX (string-set! value 0 #\_)) XX value))) XX XX;;; Compute a crc-32 for a list of characters using a per character table and XX;;; return a string with the hex value. The crc is computed in two 16-bit XX;;; integers to avoid having to use floating point numbers. XX XX(define (CRC-32x2 chars crc-left crc-right) XX (if (null? chars) XX (let loop ((cl '()) (left crc-left) (right crc-right)) XX (if (and (zero? left) (zero? right)) XX (if (null? cl) "0" (list->string cl)) XX (loop (cons (string-ref "0123456789abcdef" XX (remainder right 16)) XX cl) XX (quotient left 16) XX (+ (bit-lsh (remainder left 16) 12) XX (quotient right 16))))) XX (let ((char (char->integer (car chars)))) XX (crc-32x2 (cdr chars) XX (bit-xor (bit-rsh crc-left 8) XX (vector-ref t-left char) XX (vector-ref t-left (remainder crc-right 256))) XX (bit-xor (bit-or (bit-lsh (bit-and crc-left 255) 8) XX (bit-rsh crc-right 8)) XX (vector-ref t-right char) XX (vector-ref t-right (remainder crc-right 256))))))) XX XX(define T-LEFT '#( XX #x0000 #x7707 #xEE0E #x9909 #x076D #x706A #xE963 #x9E64 XX #x0EDB #x79DC #xE0D5 #x97D2 #x09B6 #x7EB1 #xE7B8 #x90BF XX #x1DB7 #x6AB0 #xF3B9 #x84BE #x1ADA #x6DDD #xF4D4 #x83D3 XX #x136C #x646B #xFD62 #x8A65 #x1401 #x6306 #xFA0F #x8D08 XX #x3B6E #x4C69 #xD560 #xA267 #x3C03 #x4B04 #xD20D #xA50A XX #x35B5 #x42B2 #xDBBB #xACBC #x32D8 #x45DF #xDCD6 #xABD1 XX #x26D9 #x51DE #xC8D7 #xBFD0 #x21B4 #x56B3 #xCFBA #xB8BD XX #x2802 #x5F05 #xC60C #xB10B #x2F6F #x5868 #xC161 #xB666 XX #x76DC #x01DB #x98D2 #xEFD5 #x71B1 #x06B6 #x9FBF #xE8B8 XX #x7807 #x0F00 #x9609 #xE10E #x7F6A #x086D #x9164 #xE663 XX #x6B6B #x1C6C #x8565 #xF262 #x6C06 #x1B01 #x8208 #xF50F XX #x65B0 #x12B7 #x8BBE #xFCB9 #x62DD #x15DA #x8CD3 #xFBD4 XX #x4DB2 #x3AB5 #xA3BC #xD4BB #x4ADF #x3DD8 #xA4D1 #xD3D6 XX #x4369 #x346E #xAD67 #xDA60 #x4404 #x3303 #xAA0A #xDD0D XX #x5005 #x2702 #xBE0B #xC90C #x5768 #x206F #xB966 #xCE61 XX #x5EDE #x29D9 #xB0D0 #xC7D7 #x59B3 #x2EB4 #xB7BD #xC0BA XX #xEDB8 #x9ABF #x03B6 #x74B1 #xEAD5 #x9DD2 #x04DB #x73DC XX #xE363 #x9464 #x0D6D #x7A6A #xE40E #x9309 #x0A00 #x7D07 XX #xF00F #x8708 #x1E01 #x6906 #xF762 #x8065 #x196C #x6E6B XX #xFED4 #x89D3 #x10DA #x67DD #xF9B9 #x8EBE #x17B7 #x60B0 XX #xD6D6 #xA1D1 #x38D8 #x4FDF #xD1BB #xA6BC #x3FB5 #x48B2 XX #xD80D #xAF0A #x3603 #x4104 #xDF60 #xA867 #x316E #x4669 XX #xCB61 #xBC66 #x256F #x5268 #xCC0C #xBB0B #x2202 #x5505 XX #xC5BA #xB2BD #x2BB4 #x5CB3 #xC2D7 #xB5D0 #x2CD9 #x5BDE XX #x9B64 #xEC63 #x756A #x026D #x9C09 #xEB0E #x7207 #x0500 XX #x95BF #xE2B8 #x7BB1 #x0CB6 #x92D2 #xE5D5 #x7CDC #x0BDB XX #x86D3 #xF1D4 #x68DD #x1FDA #x81BE #xF6B9 #x6FB0 #x18B7 XX #x8808 #xFF0F #x6606 #x1101 #x8F65 #xF862 #x616B #x166C XX #xA00A #xD70D #x4E04 #x3903 #xA767 #xD060 #x4969 #x3E6E XX #xAED1 #xD9D6 #x40DF #x37D8 #xA9BC #xDEBB #x47B2 #x30B5 XX #xBDBD #xCABA #x53B3 #x24B4 #xBAD0 #xCDD7 #x54DE #x23D9 XX #xB366 #xC461 #x5D68 #x2A6F #xB40B #xC30C #x5A05 #x2D02 XX)) XX XX(define T-RIGHT '#( XX #x0000 #x3096 #x612C #x51BA #xC419 #xF48F #xA535 #x95A3 XX #x8832 #xB8A4 #xE91E #xD988 #x4C2B #x7CBD #x2D07 #x1D91 XX #x1064 #x20F2 #x7148 #x41DE #xD47D #xE4EB #xB551 #x85C7 XX #x9856 #xA8C0 #xF97A #xC9EC #x5C4F #x6CD9 #x3D63 #x0DF5 XX #x20C8 #x105E #x41E4 #x7172 #xE4D1 #xD447 #x85FD #xB56B XX #xA8FA #x986C #xC9D6 #xF940 #x6CE3 #x5C75 #x0DCF #x3D59 XX #x30AC #x003A #x5180 #x6116 #xF4B5 #xC423 #x9599 #xA50F XX #xB89E #x8808 #xD9B2 #xE924 #x7C87 #x4C11 #x1DAB #x2D3D XX #x4190 #x7106 #x20BC #x102A #x8589 #xB51F #xE4A5 #xD433 XX #xC9A2 #xF934 #xA88E #x9818 #x0DBB #x3D2D #x6C97 #x5C01 XX #x51F4 #x6162 #x30D8 #x004E #x95ED #xA57B #xF4C1 #xC457 XX #xD9C6 #xE950 #xB8EA #x887C #x1DDF #x2D49 #x7CF3 #x4C65 XX #x6158 #x51CE #x0074 #x30E2 #xA541 #x95D7 #xC46D #xF4FB XX #xE96A #xD9FC #x8846 #xB8D0 #x2D73 #x1DE5 #x4C5F #x7CC9 XX #x713C #x41AA #x1010 #x2086 #xB525 #x85B3 #xD409 #xE49F XX #xF90E #xC998 #x9822 #xA8B4 #x3D17 #x0D81 #x5C3B #x6CAD XX #x8320 #xB3B6 #xE20C #xD29A #x4739 #x77AF #x2615 #x1683 XX #x0B12 #x3B84 #x6A3E #x5AA8 #xCF0B #xFF9D #xAE27 #x9EB1 XX #x9344 #xA3D2 #xF268 #xC2FE #x575D #x67CB #x3671 #x06E7 XX #x1B76 #x2BE0 #x7A5A #x4ACC #xDF6F #xEFF9 #xBE43 #x8ED5 XX #xA3E8 #x937E #xC2C4 #xF252 #x67F1 #x5767 #x06DD #x364B XX #x2BDA #x1B4C #x4AF6 #x7A60 #xEFC3 #xDF55 #x8EEF #xBE79 XX #xB38C #x831A #xD2A0 #xE236 #x7795 #x4703 #x16B9 #x262F XX #x3BBE #x0B28 #x5A92 #x6A04 #xFFA7 #xCF31 #x9E8B #xAE1D XX #xC2B0 #xF226 #xA39C #x930A #x06A9 #x363F #x6785 #x5713 XX #x4A82 #x7A14 #x2BAE #x1B38 #x8E9B #xBE0D #xEFB7 #xDF21 XX #xD2D4 #xE242 #xB3F8 #x836E #x16CD #x265B #x77E1 #x4777 XX #x5AE6 #x6A70 #x3BCA #x0B5C #x9EFF #xAE69 #xFFD3 #xCF45 XX #xE278 #xD2EE #x8354 #xB3C2 #x2661 #x16F7 #x474D #x77DB XX #x6A4A #x5ADC #x0B66 #x3BF0 #xAE53 #x9EC5 #xCF7F #xFFE9 XX #xF21C #xC28A #x9330 #xA3A6 #x3605 #x0693 #x5729 #x67BF XX #x7A2E #x4AB8 #x1B02 #x2B94 #xBE37 #x8EA1 #xDF1B #xEF8D XX)) XX XX;;; This function converts the character "c" into numeric string of length XX;;; "len" in base "base". XX XX(define (CHAR->DL c base len) XX (set! c (char->integer c)) XX (do ((dl '())) XX ((zero? len) dl) XX (set! dl (cons (string-ref "0123456789abcdef" (remainder c base)) dl)) XX (set! c (quotient c base)) XX (set! len (- len 1)))) XX XX(define (main clargs) XX (define (write-hex28 input-form) XX (define (form-is? x) XX (eq? (car input-form) x)) XX (define (form-module) XX (lchexname (caddr input-form))) XX (define (form-symbol) XX (lchexname XX (if (pair? (cadr input-form)) XX (caadr input-form) XX (cadr input-form)))) XX (cond ((form-is? 'define-c-external) #f) XX ((form-is? 'define-constant) #f) XX ((form-is? 'define-external) XX (let ((hexname (hex28 (form-module) (form-symbol)))) XX (display hexname) XX (newline) XX (display (string-append hexname "_v")) XX (newline))) XX (else XX (error 'write-hex28 "Unrecognized form: ~s" input-form)))) XX (define (read-form) XX (let ((input (read))) XX (when (not (eof-object? input)) XX (write-hex28 input) XX (read-form)))) XX (read-form) XX (exit)) XEND_OF_FILE Xif test 8607 -ne `wc -c <'shlibscx/hexname.sc'`; then X echo shar: \"'shlibscx/hexname.sc'\" unpacked with wrong size! Xfi X# end of 'shlibscx/hexname.sc' Xfi Xif test -f 'shlibscx/makefile' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'shlibscx/makefile'\" Xelse Xecho shar: Extracting \"'shlibscx/makefile'\" \(3808 characters\) Xsed "s/^X//" >'shlibscx/makefile' <<'END_OF_FILE' XX## XX## Build shared libraries for Scheme->C X11 interface. XX## Built under ISC 386/ix 2.0.2 XX## XX XX## Edit these XXBINDIR = /usr/local/bin XXLIBDIR = /usr/local/lib XXCPUDIR = /home/28sep90 XX XX## I hope you can leave the rest alone XXLIBS=${LIBDIR}/schemetoc/libsc_s.a /lib/libc_s.a XXlibraries = libscx libc XXlibscx_a = ${CPUDIR}/xlib/scxl.a XXlibc_a = /lib/libc.a XXlibc_s_a = /lib/libc_s.a XX XXall: scixl_s XX XXscixl_s: libscx_s XX scc -i -m xlib -o scixl_s libscx_s.a ${LIBS} XX XX## XX## The scheme->c xlib modules. XX## XXlibscx = libscx/depth.o libscx/screen.o libscx/visual.o libscx/xarc.o\ XX libscx/xchar2b.o libscx/xcharstr.o libscx/xclasshint.o libscx/xcolor.o\ XX libscx/xcomstat.o libscx/xevent.o libscx/xfontprop.o libscx/xfontstr.o\ XX libscx/xgcvalues.o libscx/xhostaddr.o libscx/xiconsize.o libscx/ximage.o\ XX libscx/xkbdcont.o libscx/xkbdstat.o libscx/xlib.o libscx/xlibCONST.o\ XX libscx/xlibSTUBS.o libscx/xlibTYPES.o libscx/xmodmap.o libscx/xpoint.o\ XX libscx/xrectangle.o libscx/xrmoption.o libscx/xrmvalue.o libscx/xsegment.o\ XX libscx/xsizehints.o libscx/xstdcmap.o libscx/xswinattr.o libscx/xtext.o\ XX libscx/xtext16.o libscx/xtimecoord.o libscx/xvinfo.o libscx/xwinattr.o\ XX libscx/xwinchgs.o libscx/xwmhints.o libscx/xws10.o libscx/xws2.o\ XX libscx/xws3.o libscx/xws4.o libscx/xws5.o libscx/xws6.o libscx/xws7.o\ XX libscx/xws8.o libscx/xws9.o libscx/xwss.o XX## XX## The X11 libraries. XX## XXlibx11 = /usr/lib/libX11.a XX## XX## Additional libc support. XX## XXlibc = libc/getpwnam.o libc/getpwuid.o libc/getuid.o libc/perror.o\ XX libc/umask.o libc/getpwent.o XX XX## XX## The partial scheme->c x library XX## XXlibscx_s: libscx.sl XX -rm libscx_s libscx_s.a XX mkshlib -s libscx.sl -t libscx_s -h libscx_s.a 2> libscx.err XX XXlibscx.sl: libscx.o libscx.export XX echo '##' > libscx.sl XX echo '## libscx.sl - scheme->c x library' >> libscx.sl XX echo '#address .text 0xB1000000' >> libscx.sl XX echo '#address .data 0xB1400000' >> libscx.sl XX echo '#target ${LIBDIR}/schemetoc/libscx_s' >> libscx.sl XX echo '#branch' >> libscx.sl XX nm -p libscx.o |\ XX sort |\ XX nawk '/ T .*__init/{print " " $$3 " " ++nbt}'>> libscx.sl XX echo '#objects' >> libscx.sl XX echo libscx.o >> libscx.sl XX echo '#objects noload' >> libscx.sl XX echo ${LIBDIR}/schemetoc/libsc_s.a >> libscx.sl XX echo /lib/libc_s.a >> libscx.sl XX echo '#hide linker *' >> libscx.sl XX echo '#export linker' >> libscx.sl XX cat libscx.export >> libscx.sl XX cat xlib.export >> libscx.sl XX XXlibscx.o: ${libraries} XX ld -x -r -o tmp.o ${libscx} ${libx11} ${libc} XX nm -p tmp.o | \ XX nawk '/ C /{ print "int " $$3 "[" int(($$1+3)/4) "]={0};" }'\ XX > tmp_defs.c XX ${CC} -c tmp_defs.c XX ld -x -r -o libscx.o tmp_defs.o tmp.o XX XXlibscx.export: hexname XX cat ${CPUDIR}/xlib/*.sch | hexname > libscx.export XX XXhexname: hexname.sc XX scc -o hexname hexname.sc XX XXlibscx.get: libscx.o XX nm -p ${LIBS} |\ XX nawk '/ A [_a-zA-Z]/{ print $$3 }' |\ XX sort > absolute XX nm -p libscx.o | nawk '/ U /{ print $$3 }' | sort > undefined XX comm -13 absolute undefined > libscx.get XX XXlibscx: XX -mkdir libscx XX cd libscx; ar x ${libscx_a} `echo ${libscx} | sed s/libscx.//gp` XXlibc: XX -mkdir libc XX cd libc; ar x ${libc_a} `echo ${libc} | sed s/libc.//gp` XX XX## XX## Miscellaney XX## XXclean: XX -rm libscx.o XX -rm tmp.o tmp_defs.c tmp_defs.o XX -rm libscx.sl libscx.err XX -rm libscx.get undefined absolute XXall-clean: XX -rm -fr ${libraries} XX -rm libscx_s libscx_s.a scixl_s XX -rm hexname hexname.c libscx.export XXinstall: libscx_s scixl_s XX -rm ${LIBDIR}/schemetoc/libscx_s XX cp libscx_s ${LIBDIR}/schemetoc XX strip ${LIBDIR}/schemetoc/libscx_s XX -rm ${LIBDIR}/schemetoc/libscx_s.a XX -rm ${LIBDIR}/schemetoc/libscx.a XX cp libscx_s.a ${LIBDIR}/schemetoc/libscx_s.a XX ln ${LIBDIR}/schemetoc/libscx_s.a ${LIBDIR}/schemetoc/libscx.a XX -rm ${BINDIR}/scixl_s XX -rm ${BINDIR}/scixl XX cp scixl_s ${BINDIR} XX strip ${BINDIR}/scixl_s XX ln ${BINDIR}/scixl_s ${BINDIR}/scixl XEND_OF_FILE Xif test 3808 -ne `wc -c <'shlibscx/makefile'`; then X echo shar: \"'shlibscx/makefile'\" unpacked with wrong size! Xfi X# end of 'shlibscx/makefile' Xfi Xif test -f 'shlibscx/xlib.export' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'shlibscx/xlib.export'\" Xelse Xecho shar: Extracting \"'shlibscx/xlib.export'\" \(5703 characters\) Xsed "s/^X//" >'shlibscx/xlib.export' <<'END_OF_FILE' XXXSaveContext XXXFindContext XXXDeleteContext XXXrmParseCommand XXXpermalloc XXXrmStringToQuark XXXrmUniqueQuark XXXrmQuarkToString XXXAllocColorCells XXXAllocColorPlanes XXXAllowEvents XXXAutoRepeatOn XXXAutoRepeatOff XXXSetWindowBackground XXXSetWindowBorderWidth XXXBell XXXSetWindowBorder XXXEnableAccessControl XXXDisableAccessControl XXXSetAccessControl XXXSetCloseDownMode XXXChangeActivePointerGrab XXXSetWindowColormap XXXChangeGC XXXChangeKeyboardControl XXXChangePointerControl XXXChangeProperty XXXChangeSaveSet XXXAddToSaveSet XXXRemoveFromSaveSet XXXChangeWindowAttributes XXXResizeWindow XXXCheckIfEvent XXXCheckMaskEvent XXXCheckWindowEvent XXXCheckTypedEvent XXXCheckTypedWindowEvent XXXCirculateSubwindows XXXCirculateSubwindowsDown XXXCirculateSubwindowsUp XXXCloseDisplay XXXClearWindow XXXClearArea XXXMoveResizeWindow XXXConvertSelection XXXCopyArea XXXCopyColormapAndFree XXXCopyGC XXXCopyPlane XXXCreateBitmapFromData XXXCreateColormap XXXCreatePixmapCursor XXXCreateGC XXXGContextFromGC XXXCreateGlyphCursor XXXCreatePixmapFromBitmapData XXXCreatePixmap XXXCreateSimpleWindow XXXCreateFontCursor XXXDefineCursor XXXDeleteProperty XXXDestroySubwindows XXXDestroyWindow XXXDisplayName XXXDrawArc XXXDrawArcs XXXDrawLine XXXDrawLines XXXDrawPoint XXXDrawPoints XXXDrawRectangle XXXDrawRectangles XXXDrawSegments XXXGetErrorText XXXGetErrorDatabaseText XXXSetErrorHandler XXXSetIOErrorHandler XXXFetchName XXXGetIconName XXXFillArc XXXFillArcs XXXFillPolygon XXXFillRectangle XXXFillRectangles XXXFlush XXXLoadQueryFont XXXFreeFont XXXQueryFont XXXListFonts XXXFreeFontNames XXXListFontsWithInfo XXXFreeFontInfo XXXFreeColormap XXXFreeColors XXXFreeCursor XXXFreeGC XXXFreePixmap XXXActivateScreenSaver XXXResetScreenSaver XXXForceScreenSaver XXXSetArcMode XXXSetFillRule XXXSetFillStyle XXXSetGraphicsExposures XXXSetSubwindowMode XXXGeometry XXXGetAtomName XXXAllocNamedColor XXXGetDefault XXXGetFontPath XXXFreeFontPath XXXGetFontProperty XXXGetGeometry XXXAllocColor XXXGetSizeHints XXXGetWMHints XXXGetZoomHints XXXGetNormalHints XXXGetIconSizes XXXGetTransientForHint XXXGetClassHint XXXGetInputFocus XXXGetImage XXXGetSubImage XXXGetKeyboardControl XXXGetMotionEvents XXXGetPointerControl XXXGetPointerMapping XXXGetKeyboardMapping XXXGetWindowProperty XXXGetSelectionOwner XXXGetScreenSaver XXXGetStandardColormap XXXGetWindowAttributes XXXGrabButton XXXGrabKey XXXGrabKeyboard XXXGrabPointer XXXGrabServer XXXAddHost XXXRemoveHost XXXAddHosts XXXRemoveHosts XXXIfEvent XXXCreateImage XXXDrawImageString XXXDrawImageString16 XXXInstallColormap XXXInternAtom XXXKeycodeToKeysym XXXKeysymToKeycode XXXLookupKeysym XXXRefreshKeyboardMapping XXXUseKeymap XXXLookupString XXXRebindKeysym XXXKillClient XXXListHosts XXXListInstalledColormaps XXXListProperties XXXLoadFont XXXLookupColor XXXLowerWindow XXXConnectionNumber XXXRootWindow XXXDefaultScreen XXXDefaultRootWindow XXXDefaultVisual XXXDefaultGC XXXBlackPixel XXXWhitePixel XXXAllPlanes XXXQLength XXXDisplayWidth XXXDisplayHeight XXXDisplayWidthMM XXXDisplayHeightMM XXXDisplayPlanes XXXDisplayCells XXXScreenCount XXXServerVendor XXXProtocolVersion XXXProtocolRevision XXXVendorRelease XXXDisplayString XXXDefaultDepth XXXDefaultColormap XXXBitmapUnit XXXBitmapBitOrder XXXBitmapPad XXXImageByteOrder XXXNextRequest XXXLastKnownRequestProcessed XXXScreenOfDisplay XXXDefaultScreenOfDisplay XXXDisplayOfScreen XXXRootWindowOfScreen XXXBlackPixelOfScreen XXXWhitePixelOfScreen XXXDefaultColormapOfScreen XXXDefaultDepthOfScreen XXXDefaultGCOfScreen XXXDefaultVisualOfScreen XXXWidthOfScreen XXXHeightOfScreen XXXWidthMMOfScreen XXXHeightMMOfScreen XXXPlanesOfScreen XXXCellsOfScreen XXXMinCmapsOfScreen XXXMaxCmapsOfScreen XXXDoesSaveUnders XXXDoesBackingStore XXXEventMaskOfScreen XXXDestroyImage XXXGetPixel XXXPutPixel XXXSubImage XXXAddPixel XXXNoOp XXXMapRaised XXXMapSubwindows XXXMapWindow XXXMaskEvent XXXMaxRequestSize XXXResourceManagerString XXXDisplayMotionBufferSize XXXDisplayKeycodes XXXVisualIDFromVisual XXXGetModifierMapping XXXSetModifierMapping XXXNewModifiermap XXXFreeModifiermap XXXInsertModifiermapEntry XXXDeleteModifiermapEntry XXXMoveWindow XXXNextEvent XXXOpenDisplay XXXParseColor XXXParseGeometry XXXPeekEvent XXXPeekIfEvent XXXEventsQueued XXXPending XXXSetWindowBackgroundPixmap XXXSetWindowBorderPixmap XXXPolygonRegion XXXDrawText XXXDrawText16 XXXPutBackEvent XXXPutImage XXXQueryBestSize XXXQueryColor XXXQueryColors XXXQueryBestCursor XXXQueryKeymap XXXQueryPointer XXXQueryBestStipple XXXQueryTextExtents16 XXXQueryTextExtents XXXQueryBestTile XXXQueryTree XXXRaiseWindow XXXReadBitmapFile XXXRecolorCursor XXXConfigureWindow XXXCreateRegion XXXClipBox XXXUnionRectWithRegion XXXSetRegion XXXDestroyRegion XXXOffsetRegion XXXShrinkRegion XXXIntersectRegion XXXUnionRegion XXXSubtractRegion XXXXorRegion XXXEmptyRegion XXXEqualRegion XXXPointInRegion XXXRectInRegion XXXReparentWindow XXXRestackWindows XXXRotateWindowProperties XXXSelectInput XXXSendEvent XXXSetBackground XXXSetClipRectangles XXXSetClipMask XXXSetClipOrigin XXXSetDashes XXXSetFontPath XXXSetFont XXXSetForeground XXXSetFunction XXXSetSizeHints XXXSetWMHints XXXSetZoomHints XXXSetNormalHints XXXSetIconSizes XXXSetCommand XXXSetStandardProperties XXXSetTransientForHint XXXSetClassHint XXXSetInputFocus XXXSetLineAttributes XXXSetPlaneMask XXXSetPointerMapping XXXChangeKeyboardMapping XXXSetSelectionOwner XXXSetScreenSaver XXXSetState XXXSetStipple XXXSetStandardColormap XXXSetTile XXXSetTSOrigin XXXRotateBuffers XXXFetchBuffer XXXFetchBytes XXXStoreBuffer XXXStoreBytes XXXStoreColor XXXStoreColors XXXStoreNamedColor XXXStoreName XXXSetIconName XXXStringToKeysym XXXKeysymToString XXXSync XXXSynchronize XXXSetAfterFunction XXXDrawString XXXDrawString16 XXXTextExtents XXXTextWidth XXXTextExtents16 XXXTextWidth16 XXXTranslateCoordinates XXXUndefineCursor XXXUngrabButton XXXUngrabKeyboard XXXUngrabKey XXXUngrabPointer XXXUngrabServer XXXUninstallColormap XXXUnloadFont XXXUnmapSubwindows XXXUnmapWindow XXXGetVisualInfo XXXMatchVisualInfo XXXWarpPointer XXXWindowEvent XXXCreateWindow XXXWriteBitmapFile XXXFree XXXrmStringToQuarkList XXXrmStringToBindingQuarkList XXXrmQGetSearchList XXXrmQGetSearchResource XXXrmQPutResource XXXrmPutResource XXXrmQPutStringResource XXXrmPutStringResource XXXrmPutLineResource XXXrmGetStringDatabase XXXrmGetFileDatabase XXXrmPutFileDatabase XXXrmMergeDatabases XXXrmQGetResource XXXrmGetResource XXXrmInitialize XEND_OF_FILE Xif test 5703 -ne `wc -c <'shlibscx/xlib.export'`; then X echo shar: \"'shlibscx/xlib.export'\" unpacked with wrong size! Xfi X# end of 'shlibscx/xlib.export' Xfi Xecho shar: End of shell archive. Xexit 0 END_OF_FILE if test 29331 -ne `wc -c <'shlibs'`; then echo shar: \"'shlibs'\" unpacked with wrong size! fi # end of 'shlibs' fi if test -f 'sources' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'sources'\" else echo shar: Extracting \"'sources'\" \(8898 characters\) sed "s/^X//" >'sources' <<'END_OF_FILE' X#! /bin/sh X# This is a shell archive. Remove anything before this line, then unpack X# it by saving it into a file and typing "sh file". To overwrite existing X# files, type "sh file -c". You can also feed this as standard input via X# unshar, or by typing "sh 'I386' <<'END_OF_FILE' XX# XX# This is the header file for constructing make files for I386 processors. XX# XX XX.SUFFIXES: XX.SUFFIXES: .o .c .sc .s .u XX XX# Processor name: XX XXcpu = I386 XX XX# Default flags to use when invoking the C compiler. XX XXCFLAGS = -O -DSYSV XXCC = gcc XX XX# Assembly language object files. XX XXAruntime = i386.o XX XX# Profiled library XX XXPlib = XX XX# Heap size in megabytes for the compiler. XX XXscheapmb = 4 -scl 40 XX XX# End of I386 header. XEND_OF_FILE Xif test 404 -ne `wc -c <'I386'`; then X echo shar: \"'I386'\" unpacked with wrong size! Xfi X# end of 'I386' Xfi Xif test -f 'ISC386IX' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'ISC386IX'\" Xelse Xecho shar: Extracting \"'ISC386IX'\" \(695 characters\) Xsed "s/^X//" >'ISC386IX' <<'END_OF_FILE' XX# XX# This is the header file for constructing make files for I386 processors XX# under System V.3.2, Interactive Systems 386/ix 2.0.2. XX# XX XX.SUFFIXES: XX.SUFFIXES: .o .c .sc .s .u XX XX# Processor name: XXcpu = I386 XX XX# System name: XXsys = SYSV XX XX# Default flags to use when invoking the C compiler: XXCFLAGS = -O -DISC386IX -DSYSV XX XX# Default libraries to link against: XXCLIBS = -linet -lm XX XX# Name of the c compile: XXCC = gcc XX XX# How to build an archive symbol table: XXRANLIB = ar rs XX XX# Flags to pass to ln when making source links: XXLNFLAGS = XX XX# Assembly language object files: XXAruntime = i386.o XX XX# Profiled library: XXPlib = XX XX# Heap size in megabytes for the compiler: XXscheapmb = 4 -scl 40 XX XX# End of ISC386IX header. XEND_OF_FILE Xif test 695 -ne `wc -c <'ISC386IX'`; then X echo shar: \"'ISC386IX'\" unpacked with wrong size! Xfi X# end of 'ISC386IX' Xfi Xif test -f 'SPARC' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'SPARC'\" Xelse Xecho shar: Extracting \"'SPARC'\" \(412 characters\) Xsed "s/^X//" >'SPARC' <<'END_OF_FILE' XX# XX# This is the header file for constructing make files for SPARC processors. XX# XX XX.SUFFIXES: XX.SUFFIXES: .o .c .sc .s .u XX XX# Processor name: XX XXcpu = SPARC XX XX# Default flags to use when invoking the C compiler. XX XXCFLAGS = -g XXCC = cc XXCLIBS = -lm XX XX# Assembly language object files. XX XXAruntime = sparc.o XX XX# Profiled library XX XXPlib = XX XX# Heap size in megabytes for the compiler. XX XXscheapmb = 8 -scl 40 XX XX# End of SPARC header. XEND_OF_FILE Xif test 412 -ne `wc -c <'SPARC'`; then X echo shar: \"'SPARC'\" unpacked with wrong size! Xfi X# end of 'SPARC' Xfi Xif test ! -d 'scrt' ; then X echo shar: Creating directory \"'scrt'\" X mkdir 'scrt' Xfi Xif test -f 'scrt/i386.s' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'scrt/i386.s'\" Xelse Xecho shar: Extracting \"'scrt/i386.s'\" \(0 characters\) Xsed "s/^X//" >'scrt/i386.s' <<'END_OF_FILE' XEND_OF_FILE Xif test 0 -ne `wc -c <'scrt/i386.s'`; then X echo shar: \"'scrt/i386.s'\" unpacked with wrong size! Xfi X# end of 'scrt/i386.s' Xfi Xif test -f 'scrt/sparc.s' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'scrt/sparc.s'\" Xelse Xecho shar: Extracting \"'scrt/sparc.s'\" \(3054 characters\) Xsed "s/^X//" >'scrt/sparc.s' <<'END_OF_FILE' XX! XX! Rules for building continuations on the SPARC: XX! XX! 1 - register windows must be flushed to memory before XX! the stack is copied to the heap. XX! XX! 2 - setjmp must save the caller's local and input register XX! frames when saving context, because longjmp will not XX! have access to the saved stack to fetch the registers XX! from their normal resting place. XX! XX! 3 - longjmp must flush register windows so the correct register XX! values will be reloaded from memory when execution continues XX! on the restored stack. XX! XX! 4 - longjmp must restore the caller's local and input register XX! frames because the stack hasn't been restored when longjmp XX! is called. XX! XX XX XX! XX! This misnamed function is responsible for providing the XX! top of stack address, via macro STACKPTR, to the continuation XX! builder and the heap manager. Because both of these functions XX! immediately begin examining the memory on the stack, the register XX! windows are flushed to memory so their values will be saved in XX! heap allocated continuations and seen by the garbage collector. XX! XX .global _sc_processor_register XX_sc_processor_register: XX ta 3 ! flush register windows XX jmp %o7+8 ! return XX add %sp, 0, %o0 ! return stack pointer XX XX! XX! Save the current environment in a heap allocated continuation. XX! XX .global _sc_setjmp XX_sc_setjmp: XX st %o6, [%o0 + 0] ! save stack pointer XX st %o7, [%o0 + 4] ! save continuation pointer XX st %g1, [%o0 + 8] ! save global registers XX st %g2, [%o0 + 12] ! these may be allocated for XX st %g3, [%o0 + 16] ! caller saves registers or XX st %g4, [%o0 + 20] ! for global values. XX st %g5, [%o0 + 24] XX st %g6, [%o0 + 28] XX st %g7, [%o0 + 32] XX st %l0, [%o0 + 36] ! save local registers XX st %l1, [%o0 + 40] ! the sunos setjmp uses XX st %l2, [%o0 + 44] ! the register windows to XX st %l3, [%o0 + 48] ! save these, we can't. XX st %l4, [%o0 + 52] XX st %l5, [%o0 + 56] XX st %l6, [%o0 + 60] XX st %l7, [%o0 + 64] XX st %i0, [%o0 + 68] XX st %i1, [%o0 + 72] XX st %i2, [%o0 + 76] XX st %i3, [%o0 + 80] XX st %i4, [%o0 + 84] XX st %i5, [%o0 + 88] XX st %i6, [%o0 + 92] XX st %i7, [%o0 + 96] XX mov %y, %o2 ! fetch %y, whatever it is XX st %o2, [%o0 + 100] ! and save it XX jmp %o7+8 ! return XX add %g0, %g0, %o0 ! return 0 XX XX! XX! Restore an environment from a heap allocated continuation. XX! XX .global _sc_longjmp XX_sc_longjmp: XX ta 3 ! flush register windows XX ld [%o0 + 0], %o6 ! restore stack pointer XX ld [%o0 + 4], %o7 ! load continuation pointer XX ld [%o0 + 8], %g1 ! restore global registers XX ld [%o0 + 12], %g2 XX ld [%o0 + 16], %g3 XX ld [%o0 + 20], %g4 XX ld [%o0 + 24], %g5 XX ld [%o0 + 28], %g6 XX ld [%o0 + 32], %g7 XX ld [%o0 + 36], %l0 ! restore local frame from stack XX ld [%o0 + 40], %l1 XX ld [%o0 + 44], %l2 XX ld [%o0 + 48], %l3 XX ld [%o0 + 52], %l4 XX ld [%o0 + 56], %l5 XX ld [%o0 + 60], %l6 XX ld [%o0 + 64], %l7 XX ld [%o0 + 68], %i0 XX ld [%o0 + 72], %i1 XX ld [%o0 + 76], %i2 XX ld [%o0 + 80], %i3 XX ld [%o0 + 84], %i4 XX ld [%o0 + 88], %i5 XX ld [%o0 + 92], %i6 XX ld [%o0 + 96], %i7 XX ld [%o0 + 100], %o2 ! restore %y, whatever it is XX mov %o2, %y XX jmp %o7+8 ! return XX add %o1, %g0, %o0 ! return arg XX XEND_OF_FILE Xif test 3054 -ne `wc -c <'scrt/sparc.s'`; then X echo shar: \"'scrt/sparc.s'\" unpacked with wrong size! Xfi X# end of 'scrt/sparc.s' Xfi Xif test ! -d 'xlib' ; then X echo shar: Creating directory \"'xlib'\" X mkdir 'xlib' Xfi Xif test -f 'xlib/xwss.sch' -a "${1}" != "-c" ; then X echo shar: Will not clobber existing file \"'xlib/xwss.sch'\" Xelse Xecho shar: Extracting \"'xlib/xwss.sch'\" \(1217 characters\) Xsed "s/^X//" >'xlib/xwss.sch' <<'END_OF_FILE' XX(define-external (YQUERYTREE dpy window) xwss) XX(define-external (YGETATOMNAME dpy atom) xwss) XX(define-external (YLISTPROPERTIES dpy window) xwss) XX(define-external (YLISTFONTS dpy pattern maxnames) xwss) XX(define-external (YLISTFONTSWITHINFO dpy pattern maxnames) xwss) XX(define-external (YSETFONTPATH dpy directories) xwss) XX(define-external (YGETFONTPATH dpy) xwss) XX(define-external (YLISTINSTALLEDCOLORMAPS dpy window) xwss) XX(define-external (FAMILY-ADDRESS->XHOSTADDRESS family address) xwss) XX(define-external (YNEXTEVENT dpy event) xwss) XX(define-external (YSELECT dpy . ports-time) xwss) XX(define-external (YGETMOTIONEVENTS dpy window start stop) xwss) XX(define-external (YSETSTANDARDPROPERTIES dpy window name icon_string icon_pixmap) xwss) XX(define-external (YFETCHNAME dpy window) xwss) XX(define-external (YGETICONNAME dpy window) xwss) XX(define-external (YSETCOMMAND dpy window commands) xwss) XX(define-external (YGETWMHINTS dpy window) xwss) XX(define-external (YSETICONSIZES dpy window iconsizelist) xwss) XX(define-external (YGETICONSIZES dpy window) xwss) XX(define-external (YSETCLASSHINT dpy window name-class) xwss) XX(define-external (YGETCLASSHINT dpy window) xwss) XX(define-external (YLOOKUPSTRING event . opt) xwss) XEND_OF_FILE Xif test 1217 -ne `wc -c <'xlib/xwss.sch'`; then X echo shar: \"'xlib/xwss.sch'\" unpacked with wrong size! Xfi X# end of 'xlib/xwss.sch' Xfi Xecho shar: End of shell archive. Xexit 0 END_OF_FILE if test 8898 -ne `wc -c <'sources'`; then echo shar: \"'sources'\" unpacked with wrong size! fi # end of 'sources' fi if test -f 'tar.fix' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'tar.fix'\" else echo shar: Extracting \"'tar.fix'\" \(6457 characters\) sed "s/^X//" >'tar.fix' <<'END_OF_FILE' X#!/bin/sh X# X# Script to extract the 23feb90.tar.Z distribution of the X# Scheme->C compiler on System V-ish systems with silly file X# name length restrictions. X# X# The SysV.3.2 tar reports many bad extents when extracting X# this archive, but it appears to extract everything correctly X# anyway. X# X# Parameters that you should set according to your system X# conventions and convenience. X# Xarchive=/home/archives/28sep90.tar.Z Xdestdir=/home/s2c Xtempdir=/tmp X# X# Extract the archive. X# X Xmkdir $destdir Xzcat $archive | (cd $destdir; tar xfo -) X X# X# Rename some files in place X# Xmv $destdir/gnuemacs/s2c-gnuemacs.README $destdir/gnuemacs/s2c.README Xmv $destdir/gnuemacs/s2c-gnuemacs.el $destdir/gnuemacs/s2c.el X Xmv $destdir/scrt/scexpanders1.sc $destdir/scrt/scexpand1.sc Xmv $destdir/scrt/scexpanders2.sc $destdir/scrt/scexpand2.sc Xmv $destdir/scrt/scexpanders1.c $destdir/scrt/scexpand1.c Xmv $destdir/scrt/scexpanders2.c $destdir/scrt/scexpand2.c Xed $destdir/scrt/makefile-tail << % Xg/scexpanders/s//scexpand/g Xw Xq X% X Xmv $destdir/test/test20-input.sc $destdir/test/test20-in.sc Xed $destdir/test/test20.sc << % Xg/test20-input.sc/s//test20-in.sc/g Xw Xq X% X X# X# Can't figure any good thing to do with these two X# files, and their truncated names are harmless. X# mv $destdir/xlib/Xcursorfont.cdecl $destdir/xlib/... X# mv $destdir/xlib/Xresource.cdecl $destdir/xlib/... X# Xmv $destdir/xlib/xtextitem.c $destdir/xlib/xtext.c Xmv $destdir/xlib/xtextitem.sc $destdir/xlib/xtext.sc Xmv $destdir/xlib/xtextitem.sch $destdir/xlib/xtext.sch X X# X# Now comes the ugly part. X# XSCH="xlib/xcharstruct.sch xlib/xcomposestatus.sch xlib/xfontstruct.sch\ X xlib/xhostaddress.sch xlib/xkeyboardcontrol.sch xlib/xkeyboardstate.sch\ X xlib/xlibCONSTANTS.sch xlib/xmodifierkeymap.sch xlib/xrmoptiondescrec.sch\ X xlib/xsetwindowattributes.sch xlib/xstandardcolormap.sch xlib/xtextitem16.sch\ X xlib/xvisualinfo.sch xlib/xwindowattributes.sch xlib/xwindowchanges.sch" XC="xlib/xcharstruct.c xlib/xcomposestatus.c xlib/xfontstruct.c\ X xlib/xhostaddress.c xlib/xkeyboardcontrol.c xlib/xkeyboardstate.c\ X xlib/xlibCONSTANTS.c xlib/xmodifierkeymap.c xlib/xrmoptiondescrec.c\ X xlib/xsetwindowattributes.c xlib/xstandardcolormap.c xlib/xtextitem16.c\ X xlib/xvisualinfo.c xlib/xwindowattributes.c xlib/xwindowchanges.c" XSC="xlib/xcharstruct.sc xlib/xcomposestatus.sc xlib/xfontstruct.sc\ X xlib/xhostaddress.sc xlib/xkeyboardcontrol.sc xlib/xkeyboardstate.sc\ X xlib/xlibCONSTANTS.sc xlib/xmodifierkeymap.sc xlib/xrmoptiondescrec.sc\ X xlib/xsetwindowattributes.sc xlib/xstandardcolormap.sc xlib/xtextitem16.sc\ X xlib/xvisualinfo.sc xlib/xwindowattributes.sc xlib/xwindowchanges.sc" X X# X# Extract the overlong files into $tempdir. X# Xmkdir $tempdir/xlib Xcd $tempdir/xlib Xzcat $archive | tar xfo - $SCH Xmv xlib sch Xzcat $archive | tar xfo - $SC Xmv xlib sc Xzcat $archive | tar xfo - $C Xmv xlib c X X# X# Remove the truncated file names from $destdir X# Xcd $destdir Xrm -f $SCH Xrm -f $SC Xrm -f $C X X# X# Move files to new names. X# Xmv $tempdir/xlib/c/xcharstruct.c $destdir/xlib/xcharstr.c Xmv $tempdir/xlib/sc/xcharstruct.sc $destdir/xlib/xcharstr.sc Xmv $tempdir/xlib/sch/xcharstruct.sch $destdir/xlib/xcharstr.sch Xmv $tempdir/xlib/c/xcomposestatus.c $destdir/xlib/xcomstat.c Xmv $tempdir/xlib/sc/xcomposestatus.sc $destdir/xlib/xcomstat.sc Xmv $tempdir/xlib/sch/xcomposestatus.sch $destdir/xlib/xcomstat.sch Xmv $tempdir/xlib/c/xfontstruct.c $destdir/xlib/xfontstr.c Xmv $tempdir/xlib/sc/xfontstruct.sc $destdir/xlib/xfontstr.sc Xmv $tempdir/xlib/sch/xfontstruct.sch $destdir/xlib/xfontstr.sch Xmv $tempdir/xlib/c/xhostaddress.c $destdir/xlib/xhostaddr.c Xmv $tempdir/xlib/sc/xhostaddress.sc $destdir/xlib/xhostaddr.sc Xmv $tempdir/xlib/sch/xhostaddress.sch $destdir/xlib/xhostaddr.sch Xmv $tempdir/xlib/c/xkeyboardcontrol.c $destdir/xlib/xkbdcont.c Xmv $tempdir/xlib/sc/xkeyboardcontrol.sc $destdir/xlib/xkbdcont.sc Xmv $tempdir/xlib/sch/xkeyboardcontrol.sch $destdir/xlib/xkbdcont.sch Xmv $tempdir/xlib/c/xkeyboardstate.c $destdir/xlib/xkbdstat.c Xmv $tempdir/xlib/sc/xkeyboardstate.sc $destdir/xlib/xkbdstat.sc Xmv $tempdir/xlib/sch/xkeyboardstate.sch $destdir/xlib/xkbdstat.sch Xmv $tempdir/xlib/c/xlibCONSTANTS.c $destdir/xlib/xlibCONST.c Xmv $tempdir/xlib/sc/xlibCONSTANTS.sc $destdir/xlib/xlibCONST.sc Xmv $tempdir/xlib/sch/xlibCONSTANTS.sch $destdir/xlib/xlibCONST.sch Xmv $tempdir/xlib/c/xmodifierkeymap.c $destdir/xlib/xmodmap.c Xmv $tempdir/xlib/sc/xmodifierkeymap.sc $destdir/xlib/xmodmap.sc Xmv $tempdir/xlib/sch/xmodifierkeymap.sch $destdir/xlib/xmodmap.sch Xmv $tempdir/xlib/c/xrmoptiondescrec.c $destdir/xlib/xrmoption.c Xmv $tempdir/xlib/sc/xrmoptiondescrec.sc $destdir/xlib/xrmoption.sc Xmv $tempdir/xlib/sch/xrmoptiondescrec.sch $destdir/xlib/xrmoption.sch Xmv $tempdir/xlib/c/xsetwindowattributes.c $destdir/xlib/xswinattr.c Xmv $tempdir/xlib/sc/xsetwindowattributes.sc $destdir/xlib/xswinattr.sc Xmv $tempdir/xlib/sch/xsetwindowattributes.sch $destdir/xlib/xswinattr.sch Xmv $tempdir/xlib/c/xstandardcolormap.c $destdir/xlib/xstdcmap.c Xmv $tempdir/xlib/sc/xstandardcolormap.sc $destdir/xlib/xstdcmap.sc Xmv $tempdir/xlib/sch/xstandardcolormap.sch $destdir/xlib/xstdcmap.sch Xmv $tempdir/xlib/c/xtextitem16.c $destdir/xlib/xtext16.c Xmv $tempdir/xlib/sc/xtextitem16.sc $destdir/xlib/xtext16.sc Xmv $tempdir/xlib/sch/xtextitem16.sch $destdir/xlib/xtext16.sch Xmv $tempdir/xlib/c/xvisualinfo.c $destdir/xlib/xvinfo.c Xmv $tempdir/xlib/sc/xvisualinfo.sc $destdir/xlib/xvinfo.sc Xmv $tempdir/xlib/sch/xvisualinfo.sch $destdir/xlib/xvinfo.sch Xmv $tempdir/xlib/c/xwindowattributes.c $destdir/xlib/xwinattr.c Xmv $tempdir/xlib/sc/xwindowattributes.sc $destdir/xlib/xwinattr.sc Xmv $tempdir/xlib/sch/xwindowattributes.sch $destdir/xlib/xwinattr.sch Xmv $tempdir/xlib/c/xwindowchanges.c $destdir/xlib/xwinchgs.c Xmv $tempdir/xlib/sc/xwindowchanges.sc $destdir/xlib/xwinchgs.sc Xmv $tempdir/xlib/sch/xwindowchanges.sch $destdir/xlib/xwinchgs.sch X X# X# Clean up $tempdir X# X Xrm -fr $tempdir/xlib X X# X# Rewrite the makefile. X# Xed $destdir/xlib/makefile << % Xg/xcharstruct/s//xcharstr/g Xg/xcomposestatus/s//xcomstat/g Xg/xfontstruct/s//xfontstr/g Xg/xhostaddress/s//xhostaddr/g Xg/xkeyboardcontrol/s//xkbdcont/g Xg/xkeyboardstate/s//xkbdstat/g Xg/xlibCONSTANTS/s//xlibCONST/g Xg/xmodifierkeymap/s//xmodmap/g Xg/xrmoptiondescrec/s//xrmoption/g Xg/xsetwindowattributes/s//xswinattr/g Xg/xstandardcolormap/s//xstdcmap/g Xg/xtextitem16/s//xtext16/g Xg/xtextitem/s//xtext/g Xg/xvisualinfo/s//xvinfo/g Xg/xwindowattributes/s//xwinattr/g Xg/xwindowchanges/s//xwinchgs/g Xw Xq X% X END_OF_FILE if test 6457 -ne `wc -c <'tar.fix'`; then echo shar: \"'tar.fix'\" unpacked with wrong size! fi # end of 'tar.fix' fi if test -f 'tar.unfix' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'tar.unfix'\" else echo shar: Extracting \"'tar.unfix'\" \(4623 characters\) sed "s/^X//" >'tar.unfix' <<'END_OF_FILE' X#!/bin/sh X# X# Script to undo the file name shortening implemented by tar.fix X# so that SYSV.3 sources can be remerged with those kept on BSDish X# systems. X Xdestdir=/usr/local/src/05jul90 X# X# Assume that archive has already been extracted into ${destdir} X# and simply rewrite it in place. X# X X# X# Rename some files X# Xmv $destdir/gnuemacs/s2c.README $destdir/gnuemacs/s2c-gnuemacs.README Xmv $destdir/gnuemacs/s2c.el $destdir/gnuemacs/s2c-gnuemacs.el X Xmv $destdir/scrt/scexpand1.sc $destdir/scrt/scexpanders1.sc Xmv $destdir/scrt/scexpand2.sc $destdir/scrt/scexpanders2.sc Xmv $destdir/scrt/scexpand1.c $destdir/scrt/scexpanders1.c Xmv $destdir/scrt/scexpand2.c $destdir/scrt/scexpanders2.c Xed $destdir/scrt/makefile-tail << % Xg/scexpand1\./s//scexpanders1./g Xg/scexpand2\./s//scexpanders2./g Xw Xq X% X Xmv $destdir/test/test20-in.sc $destdir/test/test20-input.sc Xed $destdir/test/test20.sc << % Xg/test20-in.sc/s//test20-input.sc/g Xw Xq X% X X# X# Untruncate two .cdecl's X# Xmv $destdir/xlib/Xcursorfont.cd $destdir/xlib/Xcursorfont.cdecl Xmv $destdir/xlib/Xresource.cdec $destdir/xlib/Xresource.cdecl X X# X# Rename more files Xmv $destdir/xlib/xtext.c $destdir/xlib/xtextitem.c Xmv $destdir/xlib/xtext.sc $destdir/xlib/xtextitem.sc Xmv $destdir/xlib/xtext.sch $destdir/xlib/xtextitem.sch X Xmv $destdir/xlib/xcharstr.c $destdir/xlib/xcharstruct.c Xmv $destdir/xlib/xcharstr.sc $destdir/xlib/xcharstruct.sc Xmv $destdir/xlib/xcharstr.sch $destdir/xlib/xcharstruct.sch Xmv $destdir/xlib/xcomstat.c $destdir/xlib/xcomposestatus.c Xmv $destdir/xlib/xcomstat.sc $destdir/xlib/xcomposestatus.sc Xmv $destdir/xlib/xcomstat.sch $destdir/xlib/xcomposestatus.sch Xmv $destdir/xlib/xfontstr.c $destdir/xlib/xfontstruct.c Xmv $destdir/xlib/xfontstr.sc $destdir/xlib/xfontstruct.sc Xmv $destdir/xlib/xfontstr.sch $destdir/xlib/xfontstruct.sch Xmv $destdir/xlib/xhostaddr.c $destdir/xlib/xhostaddress.c Xmv $destdir/xlib/xhostaddr.sc $destdir/xlib/xhostaddress.sc Xmv $destdir/xlib/xhostaddr.sch $destdir/xlib/xhostaddress.sch Xmv $destdir/xlib/xkbdcont.c $destdir/xlib/xkeyboardcontrol.c Xmv $destdir/xlib/xkbdcont.sc $destdir/xlib/xkeyboardcontrol.sc Xmv $destdir/xlib/xkbdcont.sch $destdir/xlib/xkeyboardcontrol.sch Xmv $destdir/xlib/xkbdstat.c $destdir/xlib/xkeyboardstate.c Xmv $destdir/xlib/xkbdstat.sc $destdir/xlib/xkeyboardstate.sc Xmv $destdir/xlib/xkbdstat.sch $destdir/xlib/xkeyboardstate.sch Xmv $destdir/xlib/xlibCONST.c $destdir/xlib/xlibCONSTANTS.c Xmv $destdir/xlib/xlibCONST.sc $destdir/xlib/xlibCONSTANTS.sc Xmv $destdir/xlib/xlibCONST.sch $destdir/xlib/xlibCONSTANTS.sch Xmv $destdir/xlib/xmodmap.c $destdir/xlib/xmodifierkeymap.c Xmv $destdir/xlib/xmodmap.sc $destdir/xlib/xmodifierkeymap.sc Xmv $destdir/xlib/xmodmap.sch $destdir/xlib/xmodifierkeymap.sch Xmv $destdir/xlib/xrmoption.c $destdir/xlib/xrmoptiondescrec.c Xmv $destdir/xlib/xrmoption.sc $destdir/xlib/xrmoptiondescrec.sc Xmv $destdir/xlib/xrmoption.sch $destdir/xlib/xrmoptiondescrec.sch Xmv $destdir/xlib/xswinattr.c $destdir/xlib/xsetwindowattributes.c Xmv $destdir/xlib/xswinattr.sc $destdir/xlib/xsetwindowattributes.sc Xmv $destdir/xlib/xswinattr.sch $destdir/xlib/xsetwindowattributes.sch Xmv $destdir/xlib/xstdcmap.c $destdir/xlib/xstandardcolormap.c Xmv $destdir/xlib/xstdcmap.sc $destdir/xlib/xstandardcolormap.sc Xmv $destdir/xlib/xstdcmap.sch $destdir/xlib/xstandardcolormap.sch Xmv $destdir/xlib/xtext16.c $destdir/xlib/xtextitem16.c Xmv $destdir/xlib/xtext16.sc $destdir/xlib/xtextitem16.sc Xmv $destdir/xlib/xtext16.sch $destdir/xlib/xtextitem16.sch Xmv $destdir/xlib/xvinfo.c $destdir/xlib/xvisualinfo.c Xmv $destdir/xlib/xvinfo.sc $destdir/xlib/xvisualinfo.sc Xmv $destdir/xlib/xvinfo.sch $destdir/xlib/xvisualinfo.sch Xmv $destdir/xlib/xwinattr.c $destdir/xlib/xwindowattributes.c Xmv $destdir/xlib/xwinattr.sc $destdir/xlib/xwindowattributes.sc Xmv $destdir/xlib/xwinattr.sch $destdir/xlib/xwindowattributes.sch Xmv $destdir/xlib/xwinchgs.c $destdir/xlib/xwindowchanges.c Xmv $destdir/xlib/xwinchgs.sc $destdir/xlib/xwindowchanges.sc Xmv $destdir/xlib/xwinchgs.sch $destdir/xlib/xwindowchanges.sch X X# X# Rewrite the makefile. X# Xed $destdir/xlib/makefile << % Xg/xcharstr\./s//xcharstruct./g Xg/xcomstat\./s//xcomposestatus./g Xg/xfontstr\./s//xfontstruct./g Xg/xhostaddr\./s//xhostaddress./g Xg/xkbdcont\./s//xkeyboardcontrol./g Xg/xkbdstat\./s//xkeyboardstate./g Xg/xlibCONST\./s//xlibCONSTANTS./g Xg/xmodmap\./s//xmodifierkeymap./g Xg/xrmoption\./s//xrmoptiondescrec./g Xg/xswinattr\./s//xsetwindowattributes./g Xg/xstdcmap\./s//xstandardcolormap./g Xg/xtext16\./s//xtextitem16./g Xg/xtext\./s//xtextitem./g Xg/xvinfo\./s//xvisualinfo./g Xg/xwinattr\./s//xwindowattributes./g Xg/xwinchgs\./s//xwindowchanges./g Xw Xq X% X END_OF_FILE if test 4623 -ne `wc -c <'tar.unfix'`; then echo shar: \"'tar.unfix'\" unpacked with wrong size! fi # end of 'tar.unfix' fi echo shar: End of shell archive. exit 0