[comp.sources.x] v09i087: patches for X11R4 for SCO UNIX, Part01/12

jimke@uunet.uu.net (10/12/90)

Submitted-by: microsoft!jimke@uunet.uu.net
Posting-number: Volume 9, Issue 87
Archive-name: sco.patches/part01

Here are the X11R4 patches for SCO Unix.

Jim Kelly

-rw-rw-r--   1 jimke    8675       47012 Oct  7 12:33 part01.sh
-rw-rw-r--   1 jimke    8675       49446 Oct  7 12:33 part02.sh
-rw-rw-r--   1 jimke    8675       49407 Oct  7 12:33 part03.sh
-rw-rw-r--   1 jimke    8675       45336 Oct  7 12:33 part04.sh
-rw-rw-r--   1 jimke    8675       50780 Oct  7 12:33 part05.sh
-rw-rw-r--   1 jimke    8675       47244 Oct  7 12:33 part06.sh
-rw-rw-r--   1 jimke    8675       50887 Oct  7 12:33 part07.sh
-rw-rw-r--   1 jimke    8675       45262 Oct  7 12:34 part08.sh
-rw-rw-r--   1 jimke    8675       49877 Oct  7 12:34 part09.sh
-rw-rw-r--   1 jimke    8675       42485 Oct  7 12:34 part10.sh
-rw-rw-r--   1 jimke    8675       41805 Oct  7 12:34 part11.sh
-rw-rw-r--   1 jimke    8675       15231 Oct  7 12:34 part12.sh

-- Cut me --
#! /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 <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 12)."
# Contents:  fix-14.sco01
# Wrapped by jimke@kellman on Sat Oct  6 18:10:25 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'fix-14.sco01' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'fix-14.sco01'\"
else
echo shar: Extracting \"'fix-14.sco01'\" \(44260 characters\)
sed "s/^X//" >'fix-14.sco01' <<'END_OF_FILE'
X  These 12 patches are changes to the vanilla X11R4 sources that
X  will allow them to be built/run on SCO Unix. You should first apply
X  the official patches fix-1 through fix-14.
X
X  To apply these patches, cd to ./mit/.. and run
X
X    patch -p0 < fix-14.sco01
X      ...
X    patch -p0 < fix-14.sco12
X
X  The resulting sources will completely build only if you use gcc. For
X  details about using the other compilers, see ./mit/README.SCO
X
X  Make the shell script ./mit/util/scripts/makeshlib executable
X
X    cd ./mit
X    chmod +x ./util/scripts/makeshlib
X
X  Build it
X
X    make "BOOTSTRAPCFLAGS=-Dsco -DSYSV" World
X
X  Install it
X
X    make install
X
X  Misc.
X
X    ln /usr/bin/X11/Xibm /usr/bin/X11/X
X    mkdir /dev/X
X    chmod 777 /dev/X
X
X  Run it
X
X    xinit
X
X  Curious?
X
X    more ./mit/README.SCO
X
X  Jim Kelly
X  Microsoft Corporation
X  uunet!microsoft!jimke
X
X*** ./mit-orig/Imakefile	Thu Oct  4 17:11:01 1990
X--- ./mit/Imakefile	Mon Sep 17 10:29:34 1990
X***************
X*** 16,23 ****
X--- 16,29 ----
X  #if BuildExamples
X  EXAMPLESDIRS = examples
X  #endif
X+ #ifdef i386Architecture
X          SUBDIRS = config include lib extensions $(SERVERDIRSTOMAKE) \
X+ 			clients demos $(EXAMPLESDIRS) util
X+ #else
X+         SUBDIRS = config include lib extensions $(SERVERDIRSTOMAKE) \
X  			clients demos $(EXAMPLESDIRS) util doc
X+ #endif
X+ 
X    LNINSTALLDIRS = $(EXTENSIONSRC) $(LIBSRC)
X  
X  MakeSubdirs($(SUBDIRS))
X*** ./mit-orig/README.SCO	Thu Oct  4 18:00:11 1990
X--- ./mit/README.SCO	Mon Oct  1 16:09:59 1990
X***************
X*** 0 ****
X--- 1,214 ----
X+ The following is an extensive explanation of changes to the X11R4
X+ sources in order to run it on SCO UNIX System V/386 3.2.
X+ 
X+ The starting point was patchlevel 14 plus changes done for ix386 by
X+ roell@lan.informatik.tu-muenchen.de. It was not too difficult to
X+ modify for SCO. roell did most of the real work. Having the kernel
X+ sources helps.
X+ 
X+ The compiler I ended up using was gcc. The SCO development system
X+ contains two compilers, cc which is the ANSIish Xenix compiler and rcc
X+ which is the AT&T Unix compiler.
X+ 
X+ cc had a nasty bug where it seemed to compute the address of static
X+ functions incorrectly. While debugging using sdb a "call" went right
X+ smack in the middle of an instruction. I believe the culprit file was
X+ ./lib/Xaw/Clock.c.
X+ 
X+ cc has problems with internal assertion errors. A couple files would
X+ not compile. The message says something like "internal error: Call
X+ Microsoft Technical Support". This just shows you just how much a
X+ rack-em-stack-em operation SCO is.
X+ 
X+ rcc suffers because the SCO DevSys defines NULL as a void *. rcc does
X+ not particularly like that. Many places NULL is redefined. rcc also
X+ does not like ANSI stuff like volatile, const, inline. rcc cannot
X+ statically initialize unions. It bagged on ./server/ddx/ibm/vgaData.c.
X+ 
X+ That leaves us with gcc, which is capable of compiling all the
X+ sources.  However I've seen two instances where the three compilers
X+ produce mutually incompatible code.
X+ 
X+ ./server/ddx/mfb/mfb.h defines the struct mfbPrivGC which contains 3
X+ unsigned char followed by two unsigned bitfields, each one bit,
X+ followed by a pointer and other stuff.
X+ 
X+ 	struct bad_news {
X+ 	    unsigned char a;
X+ 	    unsigned char b;
X+ 	    unsigned char c;
X+ 	    unsigned      x:1;
X+ 	    unsigned      y:1;
X+ 	    char *        p;
X+ 	};
X+ 
X+ The alignment of the fields differed between the three ?cc's. cc put
X+ padding after the 3 uchars and allocated a whole 4 bytes for x and y.
X+ rcc and gcc on the other hand packed x and y in the byte following a,
X+ b and c. The result is that the offset of p was 8 for cc and 4 for
X+ rcc, gcc. Not a good situation when you compile different files with
X+ different compilers.
X+ 
X+ The other discrepancy was with functions that return an entire struct.
X+ This shows up while using libdbm.a which has such functions. Basically
X+ to handle such returns somebody has to allocate some temporary memory
X+ to stick the return in. cc and rcc always allocated memory on the
X+ stack and passed a "shadow" parameter of the address. gcc only does
X+ this when the struct is greater than 8 bytes. Otherwise it returns the
X+ whole thing in a couple registers. The datum struct used by libdbm.a
X+ is 8 bytes so the gcc and cc/rcc calling sequences are different here.
X+ Since libdbm.a is compiled using cc, those source files using it must
X+ be compiled with cc or rcc. I choose rcc and modified Imakefile's so
X+ that it used rcc in case gcc was being used. Files which needed it
X+ were:
X+ 	./rgb/rgb.c
X+ 	./rgb/showrgb.c
X+ 	./server/os/4.2bsd/oscolor.c
X+ 
X+ More compiler problems? sin() and cos() seemed to screw up the stack.
X+ I probed the stack before and after cos() and somewhere it messed up a
X+ previous stack frame. I don't see in the code how this could happen
X+ nor could I reproduce it in a less complex program. So I wrote my own
X+ sin() and cos(). A video screen ain't a high precision device so my
X+ sin() and cos() ain't high precision functions. I simply split the
X+ domain up into 360 pieces and assign a function value to each portion.
X+ The only drawback is that it is included in libX11.a. So if you need
X+ more precision in your app, you may have problems.
X+ 
X+ R4 finally had support for System V clients. There is code for using
X+ STREAMS instead of depending on sockets. The SCO TCP/IP package also
X+ goes both ways with both STREAMS and socket interfaces for networking.
X+ (I envision a day where every node will comprehend every known network
X+ protocol and is SVR4, BSD4.4, OSF, X/OPEN and POSIX compliant). First
X+ I compiled with TCPCONN and then with STREAMSCONN. Both should work as
X+ long as I didn't screw things up. STREAMSCONN is the least common
X+ denominator because you do not need TCP/IP for it to work. It uses
X+ STREAMS ttys to do its IPC. However I did not even try to run an app
X+ over the network. For that you need the attnameserver. So if you need
X+ X for its network transparancy try compiling with TCPCONN.
X+ 
X+ The original sources handled the two interfaces well. Since STREAMS
X+ uses EAGAIN in place of Berkely's EWOULDBLOCK, EWOULDBLOCK is usually
X+ redefined as EAGAIN. Rather than making this OS dependent (att,
X+ sco,..) like the original code does, it should be transport dependent
X+ (TCPCONN, STREAMSCONN). When you compile with sco and TCPCONN you must
X+ leave EWOULDBLOCK alone because that is what the SCO sockets will
X+ return.
X+ 
X+ The SCO libsocket.a must be included if you use sockets. readv() and
X+ writev() need emulating, libsocket.a does not include them.
X+ 
X+ There is the typical dirent/direct question. As a general warning, the
X+ SCO DevSys contains two incomatible versions of the directory
X+ utilities opendir(), readdir(), ... The correct version is in libc.a
X+ and this one goes with struct dirent defined in <sys/dirent.h>. The
X+ other version is in libx.a and goes with struct direct defined in
X+ <sys/dir.h>. Be careful that if you ever use -lx when linking and
X+ your program uses struct dirent that you must explicitly load -lc
X+ before -lx. Otherwise readdir() and the others will return misaligned
X+ data.
X+ 
X+ The font directories have too many fonts in them for /bin/sh to handle.
X+ Somewhere in the Makefile it tries a 'for i in $(OBJS)' where $(OBJS)
X+ is about 200 files. /bin/sh craps out. For now the 'lu' fonts are left
X+ out of the build.
X+ 
X+ I took a stab at making shared libraries the way the say to do it in
X+ the manual. Needless to say it didn't come out well and the adventure
X+ will continue.
X+ 
X+ Because we have Microsoft serial mice around here, I changed the
X+ default mouse and mouse device appropriately.
X+ 
X+ Now we get down the nity grity OS dependent shit. There has been quite
X+ a lot of press about binary compatibility among the System V/386 3.2
X+ Unixes. Let's set the record straight that this piece of software
X+ compiled for SCO will only run on SCO Unix. (Not to mention software
X+ that uses some of the Xenix or security system calls).
X+ 
X+ First of all we must access the system console so that we can map
X+ screen memory into our virtual space, ring the bell and play with the
X+ lights on the keyboard. We must also map I/O ports because they are
X+ just as protected. To open the system console you open your tty.
X+ Typically you open "/dev/tty" which gives you a handle to your
X+ controlling tty. The server has a problem with this becuase before
X+ execing the server, xinit calls setpgrp() which loses the controlling
X+ tty. Opening "/dev/tty" fails.  So I tried figuring out my real tty,
X+ i.e. /dev/tty01, /dev/tty02, etc., but opening either one of these
X+ after calling setpgrp() fails too.  I resolved this by moving the
X+ setpgrp() from xinit to the server for SCO.  Now in the server I open
X+ "/dev/tty" and then setpgrp(). ./clients/xinit/xinit.c and
X+ ./server/ddx/ibm/sysV/sysVInit.c
X+ 
X+ We have a handle to the console. How is screen memory mapped. There
X+ are three ioctl's documented in the System Administrators Reference
X+ and release notes that claim to do this. MAPCONS works but only maps
X+ the 80x25 charater portion. KDMAPDISP doesn't work at all. In fact it
X+ panics the kernel every time (OOPS). MAP_CLASS is the choosen one.  It
X+ also maps some of the I/O ports. Not all of them though so I also had
X+ to make a KDENABIO ioctl. ./server/ddx/ibm/vga/vgaOSD.c
X+ 
X+ Ringing the console bell requires a KIOCSOUND ioctl.
X+ 
X+ I revamped the VGA initialization code in
X+ ./server/ddx/ibm/vga/vgaHWCntl.c.  We have Video7 VRAM512 cards around
X+ here and it would be nice if we could get 1024x768 out of them. The
X+ -mode switch on the server will take 800x600v7 or 1024x768v7 and give
X+ you the appropriate resolution. Other SVGA cards have slightly
X+ different register definitions so more code would be necessary for
X+ these. The 1024x768 mode isn't done yet. I am hoping that I won't have
X+ to play around with the paging registers and use the 128k linearly.
X+ If I have to, it'll be pretty slow.
X+ 
X+ One last change was to the all important xterm. I used /dev/ttyp?  for
X+ psuedo-termianls. The att code uses the STREAMS tty, /dev/ptmx, but
X+ the old SCO X11 xterm uses /dev/ttyp? and it works. Mine does to so I
X+ ain't going to fix it. Here in lies the second major snafu of SCO I've
X+ found. xterm opens "/dev/tty" to read the tty settings.  Under certain
X+ conditions this open causes the kernel to panic.
X+ 
X+ I use twm as my window manager and like to use its menus to start new
X+ xterms. The controlling tty for twm is /dev/ptmx because xinit loses
X+ the the controlling tty and twm picks up /dev/ptmx to use it for IPC
X+ with the server. When twm starts an xterm, xterm inherits this
X+ controlling tty. When xterm goes to open "/dev/tty" (remember opening
X+ /dev/tty returns a handle to your controlling tty), the kernel panics.
X+ Could it be that the /dev/tty driver does not specify a clone open
X+ when it redirects the open to /dev/ptmx (/dev/ptmx is a clone driver).
X+ I don't know, but leaving out the open fixes the problem and you end
X+ up with a working xterm. ./clients/xterm/main.c
X+ 
X+ Typical modifications were made to all the configuration files.
X+ 
X+ The build was done using 'make BOOTSTRAPCFLAGS=-Dsco -Datt -DSYSV" World'.
X+ 
X+ xmh uses some Berkeley calls, alphasort, scandir and ftruncate. I have not
X+ looked at xhost, I don't need it yet. Both are left out of the build.
X+ 
X+ Notes about finished product:
X+ 
X+ Alt-Cntl-Del is a "hot key" sequence that kills the server, no
X+ questions asked.
X+ 
X+ I have noticed only cosmetic bugs, small bits of garbage. I use the
X+ server as a big virtual terminal, so I run mostly twm, xterms, oclock
X+ and xeyes. If you use other stuff good luck.
X+ 
X+ Need todo:
X+ - Keyboard lights do not light up yet. The keys work, the lights just
X+   don't come on. There is an ioctl to the console to do this KDSETLED.
X+   (If it doesn't panic the kernel first).
X+ 
X+ - The Alt-F? hot keys do not work yet. You cannot switch between the
X+   twelve console tty's while the server is running. This will involve
X+   catching the Alt-F? key combination, shutting the screen down, waiting
X+   for the appropriate signal and then resotring the screen.
X+ 
X+ - Finish 1024x768.
X+ 
X+ - Shared libraries.
X+ 
X+ September 8, 1990
X+ Jim Kelly
X+ Microsoft Corporation
X+ uunet!microsoft!jimke
X*** ./mit-orig/clients/Imakefile	Thu Oct  4 17:07:54 1990
X--- ./mit/clients/Imakefile	Mon Sep 17 11:06:15 1990
X***************
X*** 2,20 ****
X  #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
X  
X  #ifndef CrayArchitecture
X! #ifdef ATTArchitecture
X! OTHERSUBDIRS = xhost
X  #else
X  OTHERSUBDIRS = xdm xhost
X  #endif
X  #endif
X  
X  SUBDIRS = \
X  	appres bitmap listres oclock twm xauth xbiff xcalc xclipboard xclock \
X  	xditview xdpyinfo xedit xfd xinit xkill xload xlogo \
X  	xlsatoms xlsclients xlsfonts xlswins xmag xman xmh \
X  	xmodmap xpr xprop xrdb xrefresh xfontsel $(OTHERSUBDIRS) \
X   	xset xsetroot xstdcmap xterm xwd xwininfo xwud
X  
X  MakeSubdirs($(SUBDIRS))
X  DependSubdirs($(SUBDIRS))
X--- 2,29 ----
X  #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
X  
X  #ifndef CrayArchitecture
X! #ifdef i386Architecture
X! OTHERSUBDIRS = 
X  #else
X  OTHERSUBDIRS = xdm xhost
X  #endif
X  #endif
X  
X+ #ifdef i386Architecture
X  SUBDIRS = \
X  	appres bitmap listres oclock twm xauth xbiff xcalc xclipboard xclock \
X  	xditview xdpyinfo xedit xfd xinit xkill xload xlogo \
X+ 	xlsatoms xlsclients xlsfonts xlswins xmag xman \
X+ 	xmodmap xpr xprop xrdb xrefresh xfontsel $(OTHERSUBDIRS) \
X+  	xset xsetroot xstdcmap xterm xwd xwininfo xwud
X+ #else
X+ SUBDIRS = \
X+ 	appres bitmap listres oclock twm xauth xbiff xcalc xclipboard xclock \
X+ 	xditview xdpyinfo xedit xfd xinit xkill xload xlogo \
X  	xlsatoms xlsclients xlsfonts xlswins xmag xman xmh \
X  	xmodmap xpr xprop xrdb xrefresh xfontsel $(OTHERSUBDIRS) \
X   	xset xsetroot xstdcmap xterm xwd xwininfo xwud
X+ #endif
X  
X  MakeSubdirs($(SUBDIRS))
X  DependSubdirs($(SUBDIRS))
X*** ./mit-orig/clients/bitmap/bitmap.c	Thu Oct  4 17:04:29 1990
X--- ./mit/clients/bitmap/bitmap.c	Wed Sep 19 13:16:32 1990
X***************
X*** 9,14 ****
X--- 9,17 ----
X  static char *rcsid_bitmap_c = "$XConsortium: bitmap.c,v 1.67 89/12/12 12:03:19 jim Exp $";
X  #endif
X  
X+ #ifdef sco
X+ #define NO_PROTOTYPE
X+ #endif
X  #include <errno.h>
X  #include <stdio.h>
X  #include <ctype.h>
X***************
X*** 22,27 ****
X--- 25,34 ----
X  #include <X11/Xatom.h>
X  #include <X11/Xmu/Drawing.h>
X  
X+ #if defined(sco) && !defined(__GNUC__)
X+ #undef NULL
X+ #define NULL 0
X+ #endif
X  
X  #define TOP_MARGIN 10
X  #define LEFT_MARGIN 10
X*** ./mit-orig/clients/twm/twm.h	Thu Oct  4 17:06:56 1990
X--- ./mit/clients/twm/twm.h	Sat Sep 15 13:34:46 1990
X***************
X*** 67,72 ****
X--- 67,79 ----
X  #define FALSE	0
X  #endif
X  
X+ #ifdef sco
X+ #ifdef NULL
X+ #undef NULL
X+ #define NULL 0
X+ #endif
X+ #endif
X+ 
X  #define NULLSTR ((char *) NULL)
X  
X  #define MAX_BUTTONS	5	/* max mouse buttons supported */
X*** ./mit-orig/clients/xauth/parsedpy.c	Thu Oct  4 17:06:17 1990
X--- ./mit/clients/xauth/parsedpy.c	Wed Sep 19 13:22:19 1990
X***************
X*** 35,40 ****
X--- 35,45 ----
X  #include <X11/Xauth.h>			/* for FamilyLocal */
X  #include <X11/Xmu/SysUtil.h>
X  
X+ #if defined(sco) && !defined(__GNUC__)
X+ #undef NULL
X+ #define NULL 0
X+ #endif
X+ 
X  #ifdef UNIXCONN
X  #define UNIX_CONNECTION "unix"
X  #define UNIX_CONNECTION_LENGTH 4
X*** ./mit-orig/clients/xauth/process.c	Thu Oct  4 17:06:17 1990
X--- ./mit/clients/xauth/process.c	Wed Sep 19 13:20:46 1990
X***************
X*** 30,35 ****
X--- 30,40 ----
X  #include <signal.h>
X  #include <X11/X.h>			/* for Family constants */
X  
X+ #if defined(sco) && !defined(__GNUC__)
X+ #undef NULL
X+ #define NULL 0
X+ #endif
X+ 
X  extern char *get_hostname();
X  extern Bool nameserver_timedout;
X  
X*** ./mit-orig/clients/xedit/commands.c	Thu Oct  4 17:05:29 1990
X--- ./mit/clients/xedit/commands.c	Sat Sep 15 13:37:34 1990
X***************
X*** 27,32 ****
X--- 27,35 ----
X   * without specific, written prior permission.
X   */
X  
X+ #ifdef sco
X+ #define NO_PROTOTYPE
X+ #endif
X  #include <stdio.h>
X  #include "xedit.h"
X  #ifdef CRAY
X*** ./mit-orig/clients/xinit/xinit.c	Thu Oct  4 17:05:31 1990
X--- ./mit/clients/xinit/xinit.c	Sat Sep 15 13:38:26 1990
X***************
X*** 62,67 ****
X--- 62,70 ----
X  #ifdef M4310				/* Tektronix Pegasus */
X      "Xpeg        Tektronix Pegasus display on 431x series",
X  #endif
X+ #ifdef sco				/* SCO */
X+     "Xibm        IBM VGA displays on SCO Unix",
X+ #endif
X      NULL};
X  
X  #ifndef XINITRC
X***************
X*** 378,386 ****
X  	serverpid = vfork();
X  	switch(serverpid) {
X  	case 0:
X- 		close(0);
X- 		close(1);
X- 
X  		/*
X  		 * don't hang on read/write to control tty
X  		 */
X--- 381,386 ----
X***************
X*** 400,406 ****
X--- 400,415 ----
X  		 * prevent server from getting sighup from vhangup()
X  		 * if client is xterm -L
X  		 */
X+ #ifndef sco
X+ 		/*
X+ 		 * For SCO let server close stdin/out and do setpgrp()
X+ 		 * so that it can first open a tty and do its video
X+ 		 * thing.
X+ 		 */
X+ 		close(0);
X+ 		close(1);
X  		setpgrp(0,getpid());
X+ #endif
X  
X  		Execute (server);
X  		Error ("no server \"%s\" in PATH\n", server[0]);
X***************
X*** 446,452 ****
X  		 * If your machine is substantially slower than 15 seconds,
X  		 * you can easily adjust this value.
X  		 */
X! 		alarm (15);
X  		pause ();
X  		alarm (0);
X  
X--- 455,461 ----
X  		 * If your machine is substantially slower than 15 seconds,
X  		 * you can easily adjust this value.
X  		 */
X! 		alarm (5);
X  		pause ();
X  		alarm (0);
X  
X*** ./mit-orig/clients/xman/defs.h	Thu Oct  4 17:06:08 1990
X--- ./mit/clients/xman/defs.h	Sat Sep 15 13:42:14 1990
X***************
X*** 86,92 ****
X   * The command filters for the manual and apropos searches.
X   */
X  
X! #if ( defined(hpux) || defined(macII) || defined(CRAY) )
X  #  define NO_MANPATH_SUPPORT
X  #endif
X  
X--- 86,92 ----
X   * The command filters for the manual and apropos searches.
X   */
X  
X! #if ( defined(hpux) || defined(macII) || defined(CRAY) || defined(ix386) || defined(sco) )
X  #  define NO_MANPATH_SUPPORT
X  #endif
X  
X***************
X*** 134,140 ****
X   * change it if you like. 
X   */
X  
X! #if ( defined(UTEK) || defined(apollo) )
X  #  define SEARCHDIR  CAT
X  #  define LSEARCHDIR LCAT
X  #else
X--- 134,140 ----
X   * change it if you like. 
X   */
X  
X! #if ( defined(UTEK) || defined(apollo) || defined(ix386) || defined(sco) )
X  #  define SEARCHDIR  CAT
X  #  define LSEARCHDIR LCAT
X  #else
X*** ./mit-orig/clients/xman/man.c	Thu Oct  4 17:06:07 1990
X--- ./mit/clients/xman/man.c	Sat Sep 15 13:44:39 1990
X***************
X*** 470,476 ****
X  
X    while( (dp = readdir(dir)) != NULL ) {
X      char * name = dp->d_name;
X!     if( (name[0] == '.') || (index(name, '.') == NULL) ) 
X        continue;
X      if( nentries >= nalloc ) {
X        nalloc += ENTRYALLOC;
X--- 470,480 ----
X  
X    while( (dp = readdir(dir)) != NULL ) {
X      char * name = dp->d_name;
X!     if( (name[0] == '.')
X! #if ! defined(ix386)
X!        || (index(name, '.') == NULL)
X! #endif
X!        )
X        continue;
X      if( nentries >= nalloc ) {
X        nalloc += ENTRYALLOC;
X*** ./mit-orig/clients/xrdb/xrdb.c	Thu Oct  4 17:05:11 1990
X--- ./mit/clients/xrdb/xrdb.c	Sat Sep 15 13:47:44 1990
X***************
X*** 35,40 ****
X--- 35,43 ----
X   * Extensively Modified: Phil Karlton, January 5, 1987
X   */
X  
X+ #ifdef sco
X+ #define NO_PROTOTYPE
X+ #endif
X  #include <stdio.h>
X  #include <X11/Xlib.h>
X  #include <X11/Xatom.h>
X*** ./mit-orig/clients/xterm/Imakefile	Thu Oct  4 17:04:21 1990
X--- ./mit/clients/xterm/Imakefile	Sat Sep 15 13:48:57 1990
X***************
X*** 67,73 ****
X  
X  AllTarget($(PROGRAMS))
X  
X! SpecialObjectRule(main.o, ,$(MAIN_DEFINES))
X  SpecialObjectRule(misc.o, ,$(MISC_DEFINES))
X  SpecialObjectRule(charproc.o, ,$(MISC_DEFINES))
X  
X--- 67,73 ----
X  
X  AllTarget($(PROGRAMS))
X  
X! SpecialObjectRule(main.o, ,$(MAIN_DEFINES) ConnectionFlags)
X  SpecialObjectRule(misc.o, ,$(MISC_DEFINES))
X  SpecialObjectRule(charproc.o, ,$(MISC_DEFINES))
X  
X*** ./mit-orig/clients/xterm/charproc.c	Thu Oct  4 17:04:17 1990
X--- ./mit/clients/xterm/charproc.c	Mon Sep 17 20:17:08 1990
X***************
X*** 63,69 ****
X  #include <X11/StringDefs.h>
X  #include "menu.h"
X  
X! #if !defined(EWOULDBLOCK) && defined(EAGAIN)
X  #define EWOULDBLOCK EAGAIN
X  #endif
X  
X--- 63,73 ----
X  #include <X11/StringDefs.h>
X  #include "menu.h"
X  
X! /*
X!  * SCO defines them both. Use EAGAIN only for STREAMSCONN
X!  */
X! #if (!defined(EWOULDBLOCK) || (defined(sco) && defined(STREAMSCONN))) && defined(EAGAIN)
X! #undef EWOULDBLOCK
X  #define EWOULDBLOCK EAGAIN
X  #endif
X  
X*** ./mit-orig/clients/xterm/main.c	Thu Oct  4 17:04:20 1990
X--- ./mit/clients/xterm/main.c	Mon Sep 17 20:15:09 1990
X***************
X*** 53,59 ****
X  #define USE_USG_PTYS
X  #endif
X  
X! #ifndef att
X  #define USE_HANDSHAKE
X  #endif
X  
X--- 53,59 ----
X  #define USE_USG_PTYS
X  #endif
X  
X! #if !defined(att) || defined(sco)
X  #define USE_HANDSHAKE
X  #endif
X  
X***************
X*** 147,152 ****
X--- 147,155 ----
X  #include "menu.h"
X  #include <X11/StringDefs.h>
X  #include <X11/Shell.h>
X+ #ifdef sco
X+ #undef SIGTSTP
X+ #endif
X  #ifdef SIGTSTP
X  #include <sys/wait.h>
X  #ifdef hpux
X***************
X*** 581,586 ****
X--- 584,597 ----
X  	** implementation to implementation).
X  	*/
X  #if defined(macII) || defined(att)
X+ #if defined(ix386)
X+ 	{
X+ 	    int i;
X+ 	    for (i = 0; i <= 2; i++) {
X+ 		if (ioctl (i, TCGETA, &d_tio) == 0) break;
X+ 	    }
X+ 	}
X+ #endif
X  	d_tio.c_iflag = ICRNL|IXON;
X  	d_tio.c_oflag = OPOST|ONLCR|TAB3;
X      	d_tio.c_cflag = B9600|CS8|CREAD|PARENB|HUPCL;
X***************
X*** 903,909 ****
X  {
X  	static int devindex, letter = 0;
X  
X! #ifdef att
X  	if ((*pty = open ("/dev/ptmx", O_RDWR)) < 0) {
X  	    return 1;
X  	}
X--- 914,920 ----
X  {
X  	static int devindex, letter = 0;
X  
X! #if defined(att) && !defined(sco)
X  	if ((*pty = open ("/dev/ptmx", O_RDWR)) < 0) {
X  	    return 1;
X  	}
X***************
X*** 1173,1182 ****
X  			passedPty[1];
X  
X  		setgid (screen->gid);
X! 		setuid (screen->uid);
X! 	} else {
X  		Bool tty_got_hung = False;
X  
X   		/*
X   		 * Sometimes /dev/tty hangs on open (as in the case of a pty
X   		 * that has gone away).  Simply make up some reasonable
X--- 1184,1212 ----
X  			passedPty[1];
X  
X  		setgid (screen->gid);
X!  		setuid (screen->uid);
X! 	    } else {
X  		Bool tty_got_hung = False;
X  
X+ #if defined(sco) && defined(STREAMSCONN)
X+ 
X+ 		/*
X+ 		 * Here's one for the record books. When executing xterm by
X+ 		 * using twm's menus there seems to be a problem. Compiling SCO
X+ 		 * using STREAMSCONN means that the controlling tty for twm
X+ 		 * will end up being /dev/ptmx.  Now we are running twm and we
X+ 		 * exec xterm. That means that /dev/ptmx becomes our
X+ 		 * controlling tty.  Here we open up /dev/tty which checks for
X+ 		 * our controlling tty and opens that same inode (if we have a
X+ 		 * tty, which we do). Somewhere between there and the stropen()
X+ 		 * the kernel panics.  Maybe it best if don't even try.
X+ 		 * Simulate having no tty.  Maybe we should setpgrp() in twm to
X+ 		 * avoid other such nonsense from any other apps.
X+ 		 */
X+ 
X+ 		tty = -1;
X+ 		errno = ENXIO;
X+ #else
X   		/*
X   		 * Sometimes /dev/tty hangs on open (as in the case of a pty
X   		 * that has gone away).  Simply make up some reasonable
X***************
X*** 1193,1198 ****
X--- 1223,1229 ----
X   			errno = ENXIO;
X   		}
X   		signal(SIGALRM, SIG_DFL);
X+ #endif
X   
X  		/*
X  		 * Check results and ignore current control terminal if
X***************
X*** 1381,1388 ****
X--- 1412,1421 ----
X  		if (ioctl (ptyfd, I_PUSH, "ptem") < 0) {
X  		    SysError (2);
X  		}
X+ #ifndef ix386
X  		if (!getenv("CONSEM") && ioctl (ptyfd, I_PUSH, "consem") < 0) {
X  		    SysError (3);
X+ #endif
X  		}
X  		if (ioctl (ptyfd, I_PUSH, "ldterm") < 0) {
X  		    SysError (4);
X*** ./mit-orig/clients/xterm/screen.c	Thu Oct  4 17:04:11 1990
X--- ./mit/clients/xterm/screen.c	Sat Sep 15 14:10:30 1990
X***************
X*** 39,44 ****
X--- 39,50 ----
X  #include "ptyx.h"
X  #include "error.h"
X  
X+ #ifdef sco
X+ #include <sys/termio.h>
X+ #include <sys/stream.h>
X+ #include <sys/ptem.h>
X+ #endif
X+ 
X  extern Char *calloc(), *malloc(), *realloc();
X  extern void bcopy();
X  extern void free();
X*** ./mit-orig/config/Imake.tmpl	Thu Oct  4 17:10:24 1990
X--- ./mit/config/Imake.tmpl	Sat Sep 15 14:14:32 1990
X***************
X*** 79,90 ****
X  #define HPArchitecture
X  #endif /* hpux */
X  
X! #ifdef att
X  #define MacroIncludeFile <att.cf>
X  #define MacroFile att.cf
X  #undef att
X  #define ATTArchitecture
X  #endif /* att */
X  
X  #ifdef apollo
X  #define MacroIncludeFile <apollo.cf>
X--- 79,104 ----
X  #define HPArchitecture
X  #endif /* hpux */
X  
X! #if defined(att) && !defined(ix386) && !defined(sco)
X  #define MacroIncludeFile <att.cf>
X  #define MacroFile att.cf
X  #undef att
X  #define ATTArchitecture
X  #endif /* att */
X+ 
X+ #ifdef ix386
X+ #define MacroIncludeFile <ix386.cf>
X+ #define MacroFile ix386.cf
X+ #undef ix386
X+ #define i386Architecture
X+ #endif /* ix386 */
X+ 
X+ #ifdef sco
X+ #define MacroIncludeFile <sco.cf>
X+ #define MacroFile sco.cf
X+ #undef sco
X+ #define i386Architecture
X+ #endif /* sco */
X  
X  #ifdef apollo
X  #define MacroIncludeFile <apollo.cf>
X*** ./mit-orig/config/imake.c	Thu Oct  4 17:10:26 1990
X--- ./mit/config/imake.c	Sat Sep 15 14:16:11 1990
X***************
X*** 111,116 ****
X--- 111,122 ----
X  #include	<sys/stat.h>
X  #include "imakemdep.h"
X  
X+ #ifdef sco
X+ #ifdef NULL
X+ #undef NULL
X+ #endif
X+ #define NULL 0
X+ #endif
X  
X  #define	TRUE		1
X  #define	FALSE		0
X*** ./mit-orig/config/imakemdep.h	Thu Oct  4 17:10:29 1990
X--- ./mit/config/imakemdep.h	Sat Sep 15 14:18:11 1990
X***************
X*** 29,34 ****
X--- 29,38 ----
X  #define imake_ccflags "-DSYSV -DUSG"
X  #endif
X  
X+ #ifdef sco
X+ #define imake_ccflags "-Dsco -DSYSV"
X+ #endif
X+ 
X  #ifdef CRAY
X  #define imake_ccflags "-DSYSV -DUSG"
X  #endif
X***************
X*** 117,122 ****
X--- 121,130 ----
X  #ifdef att
X  	"-Datt",	/* AT&T products */
X  #endif
X+ #ifdef sco
X+ 	"-Dsco",	/* SCO */
X+ 	"-DSYSV",
X+ #endif
X  #ifdef aix
X  	"-Daix",	/* AIX instead of AOS */
X  #ifndef ibm
X***************
X*** 167,172 ****
X--- 175,183 ----
X  #endif
X  #ifdef att
X  	{"att", "1"},
X+ #endif
X+ #ifdef sco
X+ 	{"sco", "1"},
X  #endif
X  #ifdef mips
X  	{"mips", "1"},
X*** ./mit-orig/config/ix386.cf	Thu Oct  4 18:00:21 1990
X--- ./mit/config/ix386.cf	Sat Sep 15 13:18:00 1990
X***************
X*** 0 ****
X--- 1,45 ----
X+ /*
X+  * SET VERSION NUMBERS BEFORE MAKING MAKEFILES; also, you'll need to install
X+  * util/scripts/bsdinstall.sh before doing a "make install"
X+  */
X+ #define SystemV			YES
X+ #define OSName			Interactive 386/ix System V Release 3.2
X+ #define OSMajorVersion		3
X+ #define OSMinorVersion		2
X+ #define OPERATING_SYSTEM	SysV
X+ /**/# platform:  $XConsortium: ix386.cf,v 1.0 90/03/10 15:39:46 jim Exp $
X+ /**/# operating system:  OSName
X+ /*****************************************************************************
X+  *			  Platform-specfic parameters                        *
X+  *****************************************************************************/
X+ #define RemoveTargetProgramByMoving YES
X+ #define BootstrapCFlags		-Dix386 -DSYSV
X+ #define StandardDefines		-Datt -Dix386 -DSYSV -DUSG -DUSE_ASM
X+ #define StandardCppDefines	-Datt -Dix386 -DSYSV -DUSG -DUSE_ASM
X+ #define ExecableScripts		NO
X+ #define ExtraLoadFlags -lpt -lnsl_s -lc_s
X+ #define HasVoidSignalReturn	YES
X+ #define NeedBerklibInXlib	YES
X+ #define ConnectionFlags -DSTREAMSCONN -DLOCALCONN
X+ /* Local added to support 386/ix (tr,8.3.90) */
X+ #define HasNdbm YES
X+ #define HasGcc YES
X+ #define CcCmd gcc -O -DNOSTDHDRS -fstrength-reduce -fpcc-struct-return -fwritable-strings
X+ #define CppCmd /usr/local/lib/gcc-cpp
X+ #define LdCombineFlags -r
X+ #define ManDir /usr/man/cat.X
X+ #define ManDirectoryRoot /usr/man
X+ #define ManSuffix man
X+ #define UNCOMPRESSPATH /usr/local/bin/uncompress
X+ #define DefaultUserPath .:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin
X+ #define DefaultSystemPath .:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin:/etc
X+ #define StripInstalledPrograms YES
X+ #define LibraryCCOptions  -DSHLIB
X+ #define RanlibCmd $(SCRIPTSRC)/makeshlib
X+ #define FontDefines -DFONT_SNF -DFONT_BDF -DCOMPRESSED_FONTS StandardDefines
X+ #define BuildExamples NO
X+ #define XibmServer 	Xibm
X+ #define ibmIncludeVGA   YES
X+ /* #define Xix386Server    Xi386 */
X+ #define BuildServer	YES
X+ #define ServerCDebugFlags /* -DTRACE_X */
X*** ./mit-orig/config/sco.cf	Thu Oct  4 18:00:21 1990
X--- ./mit/config/sco.cf	Wed Sep 19 13:50:24 1990
X***************
X*** 0 ****
X--- 1,47 ----
X+ /*
X+  * SET VERSION NUMBERS BEFORE MAKING MAKEFILES; also, you'll need to install
X+  * util/scripts/bsdinstall.sh before doing a "make install"
X+  */
X+ #define SystemV			YES
X+ #define OSName			SCO Unix System V Release 3.2
X+ #define OSMajorVersion		3
X+ #define OSMinorVersion		2
X+ #define OPERATING_SYSTEM	sysV
X+ /**/# platform:  $XConsortium: sco.cf,v 1.0 90/03/10 15:39:46 jim Exp $
X+ /**/# operating system:  OSName
X+ /*****************************************************************************
X+  *			  Platform-specfic parameters                        *
X+  *****************************************************************************/
X+ #define RemoveTargetProgramByMoving YES
X+ #define BootstrapCFlags		-Dsco -DSYSV
X+ #define StandardDefines		-Datt -Dsco -DSYSV -DUSG -DUSE_ASM
X+ #define StandardCppDefines	-Datt -Dsco -DSYSV -DUSG -DUSE_ASM
X+ #define ExecableScripts		NO
X+ #define ExtraLoadFlags		-lpt -lnsl_s -lc_s
X+ #define HasVoidSignalReturn	YES
X+ #define NeedBerklibInXlib	YES
X+ #define ConnectionFlags		-DSTREAMSCONN -DLOCALCONN
X+ #define HasNdbm			NO
X+ #define HasGcc			YES
X+ #define HasRcc			NO
X+ #define CcCmd			gcc
X+ #define CppCmd			/lib/cpp
X+ #define LdCombineFlags		-r
X+ #define ManDir			/usr/man/cat.X
X+ #define ManDirectoryRoot	/usr/man
X+ #define ManSuffix		man
X+ #define UNCOMPRESSPATH		/usr/bin/uncompress
X+ #define DefaultUserPath		.:/bin:/usr/bin:/usr/bin/X11:/usr/tools/bin:/usr/local/bin
X+ #define DefaultSystemPath	.:/bin:/usr/bin:/usr/bin/X11:/usr/tools/bin:/usr/local/bin:/etc
X+ #define StripInstalledPrograms	YES
X+ /* #define LibraryCCOptions	-DATTSHLIB */
X+ #define LibraryCCOptions
X+ #define RanlibCmd		$(SCRIPTSRC)/makeshlib
X+ #define FontDefines		-DFONT_SNF -DFONT_BDF -DCOMPRESSED_FONTS StandardDefines
X+ #define BuildExamples		NO
X+ #define XibmServer		Xibm
X+ #define ibmIncludeVGA		YES
X+ #define BuildServer		YES
X+ #define ServerCDebugFlags	/* -DTRACE_X */
X+ #define ServerDefines		StandardDefines ExtensionDefines -DNO_FUNCTION_PROTOTYPES
X+ #define InstallCmd		$(SCRIPTSRC)/install.sh
X*** ./mit-orig/demos/puzzle/puzzle.c	Thu Oct  4 17:09:08 1990
X--- ./mit/demos/puzzle/puzzle.c	Mon Sep 17 20:32:02 1990
X***************
X*** 419,425 ****
X       LogMoveSpace(first_x,first_y,last_x,last_y,shift_dir);
X  }
X  
X! #ifdef USG
X  int gettimeofday (tvp, tzp)
X      struct timeval *tvp;
X      struct timezone *tzp;
X--- 419,425 ----
X       LogMoveSpace(first_x,first_y,last_x,last_y,shift_dir);
X  }
X  
X! #if defined(USG) && !defined(sco)
X  int gettimeofday (tvp, tzp)
X      struct timeval *tvp;
X      struct timezone *tzp;
X*** ./mit-orig/extensions/lib/Imakefile	Thu Oct  4 17:09:49 1990
X--- ./mit/extensions/lib/Imakefile	Sun Sep 16 22:43:09 1990
X***************
X*** 17,25 ****
X    CDEBUGFLAGS = LibraryCDebugFlags
X       INCLUDES = -I$(TOP) -I$(INCLUDESRC) -I$(XLIBSRC) -I../include
X           SRCS = globals.c extutil.c XMultibuf.c XShape.c $(SHMSRCS)  \
X! 		MITMisc.c XTestExt1.c
X           OBJS = globals.o extutil.o XMultibuf.o XShape.o $(SHMOBJS) \
X! 		MITMisc.o XTestExt1.o 
X       LINTLIBS = $(LINTXLIB)
X  
X  #if DebugLibXext && ProfileLibXext
X--- 17,25 ----
X    CDEBUGFLAGS = LibraryCDebugFlags
X       INCLUDES = -I$(TOP) -I$(INCLUDESRC) -I$(XLIBSRC) -I../include
X           SRCS = globals.c extutil.c XMultibuf.c XShape.c $(SHMSRCS)  \
X! 		MITMisc.c XTestExt1.c sharedlib.c
X           OBJS = globals.o extutil.o XMultibuf.o XShape.o $(SHMOBJS) \
X! 		MITMisc.o XTestExt1.o sharedlib.o
X       LINTLIBS = $(LINTXLIB)
X  
X  #if DebugLibXext && ProfileLibXext
X*** ./mit-orig/extensions/lib/MITMisc.c	Thu Oct  4 17:09:49 1990
X--- ./mit/extensions/lib/MITMisc.c	Sat Sep 15 14:20:07 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   * $XConsortium: MITMisc.c,v 1.1 89/10/08 19:37:46 rws Exp $
X   *
X*** ./mit-orig/extensions/lib/XMultibuf.c	Thu Oct  4 17:09:50 1990
X--- ./mit/extensions/lib/XMultibuf.c	Sat Sep 15 14:26:48 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   * $XConsortium: XMultibuf.c,v 1.22 89/12/12 13:49:36 rws Exp $
X   *
X*** ./mit-orig/extensions/lib/XShape.c	Thu Oct  4 17:09:52 1990
X--- ./mit/extensions/lib/XShape.c	Sat Sep 15 14:26:48 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   * $XConsortium: XShape.c,v 1.19 89/12/12 13:51:28 rws Exp $
X   *
X*** ./mit-orig/extensions/lib/XShm.c	Thu Oct  4 17:09:48 1990
X--- ./mit/extensions/lib/XShm.c	Sat Sep 15 14:28:10 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   * $XConsortium: XShm.c,v 1.10 89/12/08 18:16:09 converse Exp $
X   *
X*** ./mit-orig/extensions/lib/XTestExt1.c	Thu Oct  4 17:09:51 1990
X--- ./mit/extensions/lib/XTestExt1.c	Sat Sep 15 14:27:50 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   *	File:  xtestext1lib.c
X   *
X*** ./mit-orig/extensions/lib/extutil.c	Thu Oct  4 17:09:50 1990
X--- ./mit/extensions/lib/extutil.c	Sat Sep 15 14:27:50 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   * $XConsortium: extutil.c,v 1.8 89/12/10 22:54:38 jim Exp $
X   *
X*** ./mit-orig/extensions/lib/globals.c	Thu Oct  4 17:09:50 1990
X--- ./mit/extensions/lib/globals.c	Sat Sep 15 14:27:50 1990
X***************
X*** 1,3 ****
X--- 1,4 ----
X+ #include "import.h"
X  /*
X   * $XConsortium: globals.c,v 1.1 89/10/03 17:25:16 jim Exp $
X   *
X*** ./mit-orig/extensions/lib/import.h	Thu Oct  4 18:00:25 1990
X--- ./mit/extensions/lib/import.h	Sun Sep 16 23:00:19 1990
X***************
X*** 0 ****
X--- 1,236 ----
X+ /*
X+  * Some hacks for shared libraries -- especially for 386/ix
X+  * Thomas Roell, 16.4.90
X+  */
X+ #ifndef _Xext_import
X+ #define _Xext_import
X+ #ifdef ATTSHAREDLIB
X+ #include <stdio.h>
X+ #include <sys/types.h>
X+ #include <time.h>
X+ #include <pwd.h>
X+ #include <X11/Xlib.h>
X+ #include <X11/Xresource.h>
X+ #include <X11/Xutil.h>
X+ #include <X11/Intrinsic.h>
X+ #include <X11/Shell.h>
X+ 
X+ #define __fltused	(* _libXext___fltused)
X+ #define _ctype		(* _libXext__ctype)
X+ #define _filbuf		(* _libXext__filbuf)
X+ #define _flsbuf		(* _libXext__flsbuf)
X+ #define _fltused	(* _libXext__fltused)
X+ #define _iob		(* _libXext__iob)
X+ #define abs		(* _libXext_abs)
X+ #define access		(* _libXext_access)
X+ #define alarm		(* _libXext_alarm)
X+ #define asctime		(* _libXext_asctime)
X+ #define atof		(* _libXext_atof)
X+ #define atoi		(* _libXext_atoi)
X+ #define calloc		(* _libXext_calloc)
X+ #define chmod		(* _libXext_chmod)
X+ #define close		(* _libXext_close)
X+ #define creat		(* _libXext_creat)
X+ #define errno		(* _libXext_errno)
X+ #define exit		(* _libXext_exit)
X+ #define fclose		(* _libXext_fclose)
X+ #define fcntl		(* _libXext_fcntl)
X+ #define fgets		(* _libXext_fgets)
X+ #define fopen		(* _libXext_fopen)
X+ #define fprintf		(* _libXext_fprintf)
X+ #define fputs		(* _libXext_fputs)
X+ #define fread		(* _libXext_fread)
X+ #define free		(* _libXext_free)
X+ #define fseek		(* _libXext_fseek)
X+ #define ftell		(* _libXext_ftell)
X+ #define fwrite		(* _libXext_fwrite)
X+ #define getenv		(* _libXext_getenv)
X+ #define getlogin	(* _libXext_getlogin)
X+ #define getpwnam	(* _libXext_getpwnam)
X+ #define getpwuid	(* _libXext_getpwuid)
X+ #define getuid		(* _libXext_getuid)
X+ #define ioctl		(* _libXext_ioctl)
X+ #define link		(* _libXext_link)
X+ #define localtime	(* _libXext_localtime)
X+ #define malloc		(* _libXext_malloc)
X+ #define memcpy		(* _libXext_memcpy)
X+ #define memset		(* _libXext_memset)
X+ #define open		(* _libXext_open)
X+ #define perror		(* _libXext_perror)
X+ #define poll		(* _libXext_poll)
X+ #define printf		(* _libXext_printf)
X+ #define qsort		(* _libXext_qsort)
X+ #define rand		(* _libXext_rand)
X+ #define read		(* _libXext_read)
X+ #define realloc		(* _libXext_realloc)
X+ #define select		(* _libXext_select)
X+ #define signal		(* _libXext_signal)
X+ #define sleep		(* _libXext_sleep)
X+ #define sprintf		(* _libXext_sprintf)
X+ #define srand		(* _libXext_srand)
X+ #define sscanf		(* _libXext_sscanf)
X+ #define strcat		(* _libXext_strcat)
X+ #define strchr		(* _libXext_strchr)
X+ #define strcmp		(* _libXext_strcmp)
X+ #define strcpy		(* _libXext_strcpy)
X+ #define strlen		(* _libXext_strlen)
X+ #define strncmp		(* _libXext_strncmp)
X+ #define strncpy		(* _libXext_strncpy)
X+ #define strrchr		(* _libXext_strrchr)
X+ #define sys_errlist	(* _libXext_sys_errlist)
X+ #define sys_nerr	(* _libXext_sys_nerr)
X+ #define system		(* _libXext_system)
X+ #define times		(* _libXext_times)
X+ #define tmpnam		(* _libXext_tmpnam)
X+ #define toupper		(* _libXext_toupper)
X+ #define ulimit		(* _libXext_ulimit)
X+ #define uname		(* _libXext_uname)
X+ #define unlink		(* _libXext_unlink)
X+ #define write		(* _libXext_write)
X+ 
X+ #if defined(__STDC__) && !defined(NO_PROTOTYPE)
X+ #else
X+ 
X+ extern int __fltused;
X+ extern unsigned char _ctype[];
X+ extern int _filbuf();
X+ extern int _flsbuf();
X+ extern int _fltused;
X+ extern FILE *_iob;
X+ extern int abs();
X+ extern int access();
X+ extern int alarm();
X+ extern int asctime();
X+ extern double atof();
X+ extern int atoi();
X+ extern char *calloc();
X+ extern int chmod();
X+ extern int close();
X+ extern int creat();
X+ extern int errno;
X+ extern void exit();
X+ extern int fclose();
X+ extern int fcntl();
X+ extern char *fgets();
X+ extern FILE *fopen();
X+ extern int fprintf();
X+ extern int fputs();
X+ extern int fread();
X+ extern void free();
X+ extern int fseek();
X+ extern int ftell();
X+ extern int fwrite();
X+ extern char *getenv();
X+ extern int getlogin();
X+ extern struct passwd *getpwnam();
X+ extern struct passwd *getpwuid();
X+ extern int getuid();
X+ extern char *(* _libXext_index)();
X+ extern int ioctl();
X+ extern int link();
X+ extern struct tm *localtime();
X+ extern char *malloc();
X+ extern char *memcpy();
X+ extern char *memset();
X+ extern int open();
X+ extern void perror();
X+ extern int poll();
X+ extern int printf();
X+ extern int qsort();
X+ extern int rand();
X+ extern int read();
X+ extern char *realloc();
X+ extern int select();
X+ extern void (*signal())();
X+ extern int sleep();
X+ extern int sprintf();
X+ extern void srand();
X+ extern int sscanf();
X+ extern int (* _libXext_stat)();
X+ extern char *strcat();
X+ extern char *strchr();
X+ extern int strcmp();
X+ extern char *strcpy();
X+ extern size_t strlen();
X+ extern int strncmp();
X+ extern char *strncpy();
X+ extern char *strrchr();
X+ extern char *sys_errlist[];
X+ extern int sys_nerr;
X+ extern int system();
X+ extern struct tm *(*_libXext_time)();
X+ extern int times();
X+ extern char *tmpnam();
X+ extern int toupper();
X+ extern int ulimit();
X+ extern int uname();
X+ extern int unlink();
X+ extern int write();
X+ 
X+ #endif
X+ 
X+ #define XESetCloseDisplay	(* _libXext_XESetCloseDisplay)
X+ #define XESetCopyGC	(* _libXext_XESetCopyGC)
X+ #define XESetCreateFont	(* _libXext_XESetCreateFont)
X+ #define XESetCreateGC	(* _libXext_XESetCreateGC)
X+ #define XESetError	(* _libXext_XESetError)
X+ #define XESetErrorString	(* _libXext_XESetErrorString)
X+ #define XESetEventToWire	(* _libXext_XESetEventToWire)
X+ #define XESetFlushGC	(* _libXext_XESetFlushGC)
X+ #define XESetFreeFont	(* _libXext_XESetFreeFont)
X+ #define XESetFreeGC	(* _libXext_XESetFreeGC)
X+ #define XESetWireToEvent	(* _libXext_XESetWireToEvent)
X+ #define XFlush	(* _libXext_XFlush)
X+ #define XFree	(* _libXext_XFree)
X+ #define XGetErrorDatabaseText	(* _libXext_XGetErrorDatabaseText)
X+ #define XIfEvent	(* _libXext_XIfEvent)
X+ #define XInitExtension	(* _libXext_XInitExtension)
X+ #define bcopy	(* _libXext_bcopy)
X+ #define _XAllocScratch	(* _libXext__XAllocScratch)
X+ #define _XEatData	(* _libXext__XEatData)
X+ #define _XFlush	(* _libXext__XFlush)
X+ #define _XGetScanlinePad	(* _libXext__XGetScanlinePad)
X+ #define _XGetBitsPerPixel	(* _libXext__XGetBitsPerPixel)
X+ #define _XInitImageFuncPtrs	(* _libXext__XInitImageFuncPtrs)
X+ #define _XRead	(* _libXext__XRead)
X+ #define _XReply	(* _libXext__XReply)
X+ #define _XSend	(* _libXext__XSend)
X+ #define _XSetLastRequestRead	(* _libXext__XSetLastRequestRead)
X+ #define _XVIDtoVisual (* _libXext__XVIDtoVisual)
X+ 
X+ #if defined(__STDC__) && !defined(NO_PROTOTYPE)
X+ #else
X+ 
X+ extern int (* XESetCloseDisplay())();
X+ extern int (* XESetCopyGC())();
X+ extern int (* XESetCreateFont())();
X+ extern int (* XESetCreateGC())();
X+ extern int (* XESetError())();
X+ extern char *(* XESetErrorString())();
X+ extern int (* XESetEventToWire())();
X+ extern int (* XESetFlushGC())();
X+ extern int (* XESetFreeFont())();
X+ extern int (* XESetFreeGC())();
X+ extern int (* XESetWireToEvent())();
X+ extern int XFlush();
X+ extern int XFree();
X+ extern int XGetErrorDatabaseText();
X+ extern int XIfEvent();
X+ extern int XInitExtension();
X+ extern void bcopy();
X+ extern char *_XAllocScratch();
X+ extern void _XEatData();
X+ extern int _XFlush();
X+ extern int _XGetScanlinePad();
X+ extern int _XGetBitsPerPixel();
X+ extern int _XInitImageFuncPtrs();
X+ extern int _XRead();
X+ extern int _XReply();
X+ extern int _XSend();
X+ extern unsigned long _XSetLastRequestRead();
X+ extern Visual *_XVIDtoVisual();
X+ 
X+ #endif
X+ 
X+ #endif
X+ #endif
X*** ./mit-orig/extensions/lib/sharedlib.c	Thu Oct  4 18:00:25 1990
X--- ./mit/extensions/lib/sharedlib.c	Sun Sep 16 22:39:06 1990
X***************
X*** 0 ****
X--- 1,121 ----
X+ #include "import.h"
X+ /*
X+  * $XConsortium: sharedlib.c,v 1.3 89/10/09 14:28:56 jim Exp $
X+  *
X+  * Copyright 1989 Massachusetts Institute of Technology
X+  *
X+  * This file is used to force shared libraries to get the right routines.
X+  */
X+ 
X+ #ifdef ATTSHAREDLIB
X+ 
X+ #if defined(__STDC__) && !defined(NO_PROTOTYPE)
X+ #else
X+ 
X+ int __fltused = 0;
X+ unsigned char _ctype[] = 0;
X+ int _filbuf() = 0;
X+ int _flsbuf() = 0;
X+ int _fltused = 0;
X+ FILE *_iob = 0;
X+ int abs() = 0;
X+ int access() = 0;
X+ int alarm() = 0;
X+ int asctime() = 0;
X+ double atof() = 0;
X+ int atoi() = 0;
X+ char *calloc() = 0;
X+ int chmod() = 0;
X+ int close() = 0;
X+ int creat() = 0;
X+ int errno = 0;
X+ void exit() = 0;
X+ int fclose() = 0;
X+ int fcntl() = 0;
X+ char *fgets() = 0;
X+ FILE *fopen() = 0;
X+ int fprintf() = 0;
X+ int fputs() = 0;
X+ int fread() = 0;
X+ void free() = 0;
X+ int fseek() = 0;
X+ int ftell() = 0;
X+ int fwrite() = 0;
X+ char *getenv() = 0;
X+ int getlogin() = 0;
X+ struct passwd *getpwnam() = 0;
X+ struct passwd *getpwuid() = 0;
X+ int getuid() = 0;
X+ char *(* _libXext_index)() = 0;
X+ int ioctl() = 0;
X+ int link() = 0;
X+ struct tm *localtime() = 0;
X+ char *malloc() = 0;
X+ char *memcpy() = 0;
X+ char *memset() = 0;
X+ int open() = 0;
X+ void perror() = 0;
X+ int poll() = 0;
X+ int printf() = 0;
X+ int qsort() = 0;
X+ int rand() = 0;
X+ int read() = 0;
X+ char *realloc() = 0;
X+ int select() = 0;
X+ void (*signal())() = 0;
X+ int sleep() = 0;
X+ int sprintf() = 0;
X+ void srand() = 0;
X+ int sscanf() = 0;
X+ int (* _libXext_stat)() = 0;
X+ char *strcat() = 0;
X+ char *strchr() = 0;
X+ int strcmp() = 0;
X+ char *strcpy() = 0;
X+ size_t strlen() = 0;
X+ int strncmp() = 0;
X+ char *strncpy() = 0;
X+ char *strrchr() = 0;
X+ char *sys_errlist[] = 0;
X+ int sys_nerr = 0;
X+ int system() = 0;
X+ struct tm *(*_libXext_time)() = 0;
X+ int times() = 0;
X+ char *tmpnam() = 0;
X+ int toupper() = 0;
X+ int ulimit() = 0;
X+ int uname() = 0;
X+ int unlink() = 0;
X+ int write() = 0;
X+ 
X+ int (* XESetCloseDisplay())() = 0;
X+ int (* XESetCopyGC())() = 0;
X+ int (* XESetCreateFont())() = 0;
X+ int (* XESetCreateGC())() = 0;
X+ int (* XESetError())() = 0;
X+ char *(* XESetErrorString())() = 0;
X+ int (* XESetEventToWire())() = 0;
X+ int (* XESetFlushGC())() = 0;
X+ int (* XESetFreeFont())() = 0;
X+ int (* XESetFreeGC())() = 0;
X+ int (* XESetWireToEvent())() = 0;
X+ int XFlush() = 0;
X+ int XFree() = 0;
X+ int XGetErrorDatabaseText() = 0;
X+ int XIfEvent() = 0;
X+ int XInitExtension() = 0;
X+ void bcopy() = 0;
X+ char *_XAllocScratch() = 0;
X+ void _XEatData() = 0;
X+ int _XFlush() = 0;
X+ int _XGetScanlinePad() = 0;
X+ int _XGetBitsPerPixel() = 0;
X+ int _XInitImageFuncPtrs() = 0;
X+ int _XRead() = 0;
X+ int _XReply() = 0;
X+ int _XSend() = 0;
X+ unsigned long _XSetLastRequestRead() = 0;
X+ Visual *_XVIDtoVisual() = 0;
X+ 
X+ #endif
X+ #endif
END_OF_FILE
if test 44260 -ne `wc -c <'fix-14.sco01'`; then
    echo shar: \"'fix-14.sco01'\" unpacked with wrong size!
fi
# end of 'fix-14.sco01'
fi
echo shar: End of archive 1 \(of 12\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 12 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0


dan
----------------------------------------------------
O'Reilly && Associates   argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.