v09i087: patches for X11R4 for SCO UNIX, Part01/12
microsoft!jimke at uunet.uu.net
microsoft!jimke at uunet.uu.net
Fri Oct 12 15:19:45 AEST 1990
Submitted-by: microsoft!jimke at 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 at 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 at 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 at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.
More information about the Comp.sources.x
mailing list