[comp.sys.sun] XView & 3.5

smith@origin.life.uiuc.edu (Steven Smith) (10/24/89)

Hello again X11 fans,

Last week I posted a request for information about using X11/XView with
SunOS 3.5.  I received a few responses from people who had successfully
moved the  XView and OpenLook window manager from expo.lcs.mit.edu onto
their Suns.  Unfortunately, most were using 4.0.3.  But I did manage to
get the show rolling after a bit of playing.  I also received one very
helpful message from Tom Jacobs (but it was a bit too late [thanks anyway
Tom ;) ])

For those of you interested, have a clean X11 distribution source tree to
work with, because the installation uses imake and all of its supporting
files.  Don't trust any of the default directories, as they are guarenteed
to be incorrect.  There are a few defines that are needed to get the code
to compile under 3.5.  These just so happen to be the same defines needed
to compile the code under Ultrix, so a hack to the ultrix_cpt.h file will
fix that.  Included is the modified version from Tom as his is much
cleaner than the kluge that I did.

For those of you who are interested, we have moved to 4.0.3.  We are only
doing it on our developmental machines, and only with 8meg or more of
memory.  The main reason is for the shared libraries.  But also, we will
probably use the NeWS/X11 merge for performance reasons (But just wait
until R4!).

  Hope this helps,
	Steve Smith (smith@origin.life.uiuc.edu)
-8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<--8<-

|From: tomj@snowking.EBay.Sun.COM (Tom Jacobs)
|To: sun-spots@sun.EBay.Sun.COM
|Subject: Re: XView from expo.mit

Building XView on SunOS3.5 is much like compiling it on a Vax running
Ultrix. You'll need to define the symbol "vax" in your makefile (-Dvax) so
that the missing 4.3BSD/SunOS4.x are defined.  Should be pretty straight
forward.  However, by going to 4.0.3 you'll also get shared libraries,
which is worth it by itself.

	Tom Jacobs
	Sun Microsystems, Inc.
	tomj@sun.com  -or-  ..!sun!tomj

-:---:---:---:---:---:---:---:---:---:---:---:---:---:---:--

|From: tomj@Sun.COM (Tom Jacobs)
|Subject: Re: XView from expo.mit

Here is the newer version of a file called ultrix_cpt.h which is exactly
what you need.  Replace you're old ultrix_cpt.h from MIT and define the
symbol "OLD_BSD_FDSETS" instead of "vax" and you'll be set.

Let us know how it goes and remember to report your bugs to
xviewbugs@sun.com

------------------CUT HERE----------------------------
/*	@(#)ultrix_cpt.h 1.7 89/09/14 SMI	*/

/*
 * Ultrix 2.X, SunOS 3.X, BSD 4.2 Compatibility Header File
 *
 * This file provides a limited compatibility with older BSD variants
 * that do not provide macros for dealing with fd sets.
 *
 * BIG NOTE!!! This will only allow fd_sets of N bits , where N is
 * the size of an int.
 *
 */

#ifndef xview_ultrix_compat_DEFINED
#define xview_ultrix_compat_DEFINED

#ifdef OLD_BSD_FDSETS

#ifndef NBBY
#define NBBY    8               /* number of bits in a byte */
#endif

#ifndef NFDBITS
#define	NFDBITS	(sizeof(int) * NBBY)
#define I_DEFINED_NFDBITS	/* register the fact that I defined this */
#endif

#ifndef FD_SETSIZE
#define FD_SETSIZE	NFDBITS
#define I_DEFINED_FDSETSIZE	/* register the fact that I defined this */
#endif

/*
 *	Here we assume that the only use of howmany(x, y) is 
 *	howmany(FD_SETSIZE, NFDBITS). If we defined both FD_SETSIZE and
 * 	NFDBITS, then we already know what howmany(x, y) will be: 1.
 *	If we did not define FD_SETSIZE and NFDBITS, then we'll have
 *	to calculate the value of howmany(x, y).
 */

#if defined(I_DEFINED_FDSETSIZE) && defined(I_DEFINED_NFDBITS)
#define howmany(x, y)	1
#else
#define howmany(x, y)	(((x)+((y)-1))/(y))
#endif

#define FD_SET(n, p)    ((p)->fds_bits[0] |= (1 << ((n) % NFDBITS)))
#define FD_CLR(n, p)    ((p)->fds_bits[0] &= ~(1 << ((n) % NFDBITS)))
#define FD_ISSET(n, p)  ((p)->fds_bits[0] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p)      ((p)->fds_bits[0] = 0)

#endif OLD_BSD_FDSETS

#endif ~xview_ultrix_compat_DEFINED