[gnu.gcc.bug] gcc-cc1 dumps core

hrp@boring.cray.com (Hal Peterson) (02/24/89)

This arose while compiling the file server/dix/window.c from the X11R3
distribution.

We are running GCC 1.33 on Sun-3/50 Workstations and Sun-3/280 file
servers under SunOS 3.5.

Here is what happens:

============================================================
    rothko% gcc -v -S -O -traditional -finline-functions -fstrength-reduce -msoft-float gcc-bug.c
    gcc version 1.33
     /usr/earth4/gnu/lib/gcc-cpp -v -undef -D__GNUC__ -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__OPTIMIZE__ -traditional -Dmc68020 gcc-bug.c /tmp/cca04506.cpp
    GNU CPP version 1.33
     /usr/earth4/gnu/lib/gcc-cc1 /tmp/cca04506.cpp -quiet -dumpbase gcc-bug.c -msoft-float -finline-functions -fstrength-reduce -O -traditional -version -o gcc-bug.s
    GNU C version 1.33 (68k, MIT syntax) compiled by GNU C version 1.33.
    gcc: Program cc1 got fatal signal 11.
    rothko%
============================================================

Following my .signature is the file that produces it (named gcc-bug.c
above).

Hal Peterson / Cray Research / 1440 Northland Dr. / Mendota Hts, MN  55120
hrp@cray.com			uunet!cray!hrp		   +1 612 681 3145
============================================================
typedef unsigned long XID;
typedef XID Window;
typedef XID Drawable;
typedef XID Font;
typedef XID Pixmap;
typedef XID Cursor;
typedef XID Colormap;
typedef XID GContext;
typedef XID KeySym;
typedef unsigned long Mask;
typedef unsigned long Atom;
typedef unsigned long VisualID;
typedef unsigned long Time;
typedef unsigned char KeyCode;
typedef long           INT32;
typedef short          INT16;
typedef char           INT8;
typedef unsigned long CARD32;
typedef unsigned short CARD16;
typedef unsigned char  CARD8;
typedef unsigned long		BITS32;
typedef unsigned short		BITS16;
typedef unsigned char		BYTE;
typedef unsigned char            BOOL;
typedef struct _xSegment {
    INT16 x1 , y1 , x2 , y2 ;
} xSegment;
typedef struct _xPoint {
	INT16		x , y ;
} xPoint;
typedef struct _xRectangle {
    INT16 x , y ;
    CARD16  width , height ;
} xRectangle;
typedef struct _xArc {
    INT16 x , y ;
    CARD16   width , height ;
    INT16   angle1 , angle2 ;
} xArc;
typedef CARD16 KeyButMask;
typedef struct {
    CARD8	byteOrder;
    BYTE	pad;
    CARD16	majorVersion , minorVersion ;
    CARD16	nbytesAuthProto ;	
    CARD16	nbytesAuthString ;	
    CARD16	pad2;
} xConnClientPrefix;
typedef struct {
    BOOL           success;
    BYTE           lengthReason; 
    CARD16         majorVersion , 
                   minorVersion ;
    CARD16         length ;  
} xConnSetupPrefix;
typedef struct {
    CARD32         release ;
    CARD32         ridBase , 
                   ridMask ;
    CARD32         motionBufferSize ;
    CARD16         nbytesVendor ;  
    CARD16         maxRequestSize ;
    CARD8          numRoots;          
    CARD8          numFormats;        
    CARD8          imageByteOrder;        
    CARD8          bitmapBitOrder;        
    CARD8          bitmapScanlineUnit,     
                   bitmapScanlinePad;     
    CARD8	   minKeyCode, maxKeyCode;
    CARD32	   pad2 ;
} xConnSetup;
typedef struct {
    CARD8          depth;
    CARD8          bitsPerPixel;
    CARD8          scanLinePad;
    CARD8          pad1;
    CARD32	   pad2 ;
} xPixmapFormat;
typedef struct {
    CARD8 	depth;
    CARD8 	pad1;
    CARD16	nVisuals ;  
    CARD32	pad2 ;
    } xDepth;
typedef struct {
    CARD32 visualID ;
    CARD8 class;
    CARD8 bitsPerRGB;
    CARD16 colormapEntries ;
    CARD32 redMask , greenMask , blueMask ;
    CARD32 pad ;
    } xVisualType;
typedef struct {
    CARD32         windowId ;
    CARD32       defaultColormap ;
    CARD32         whitePixel , blackPixel ;
    CARD32         currentInputMask ;   
    CARD16         pixWidth , pixHeight ;
    CARD16         mmWidth , mmHeight ;
    CARD16         minInstalledMaps , maxInstalledMaps ;
    CARD32       rootVisualID ;
    CARD8          backingStore;
    BOOL           saveUnders;
    CARD8          rootDepth;
    CARD8          nDepths;  
} xWindowRoot;

typedef struct {
    CARD32 time ;
    INT16 x , y ;
} xTimecoord;
typedef struct {
    CARD8 family;
    BYTE pad;
    CARD16 length ;
} xHostEntry;
typedef struct {
    INT16 leftSideBearing ,
	  rightSideBearing ,
	  characterWidth ,
	  ascent ,
	  descent ;
    CARD16 attributes ;
} xCharInfo;
typedef struct {
    CARD32 name ;
    CARD32 value ;
} xFontProp;
typedef struct {           
    CARD8 len;	
    INT8 delta;
} xTextElt;
typedef struct {        
    CARD32 pixel ;
    CARD16 red , green , blue ;
    CARD8 flags;  
    CARD8 pad;
} xColorItem;
typedef struct {
    CARD16 red , green , blue , pad ;
} xrgb;
typedef CARD8 KEYCODE;

typedef struct {	
    BYTE type;              
    BYTE data1;             
    CARD16 sequenceNumber ;  
    CARD32 length ;      
    CARD32 data00 ;
    CARD32 data01 ;
    CARD32 data02 ;
    CARD32 data03 ;
    CARD32 data04 ;
    CARD32 data05 ;
    } xGenericReply;
typedef struct {
    BYTE type;  
    CARD8 backingStore;
    CARD16 sequenceNumber ;
    CARD32 length ;	
    CARD32 visualID ;
    CARD16 class ;
    CARD8 bitGravity;
    CARD8 winGravity;
    CARD32 backingBitPlanes ;
    CARD32 backingPixel ;
    BOOL saveUnder;
    BOOL mapInstalled;
    CARD8 mapState;
    BOOL override;
    CARD32 colormap ;
    CARD32 allEventMasks ;
    CARD32 yourEventMask ;
    CARD16 doNotPropagateMask ;
    CARD16 pad ;
    } xGetWindowAttributesReply;
typedef struct {
    BYTE type;   
    CARD8 depth;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 root ;
    INT16 x , y ;
    CARD16 width , height ;
    CARD16 borderWidth ;
    CARD16 pad1 ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    } xGetGeometryReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 root , parent ;
    CARD16 nChildren ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    } xQueryTreeReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ; 
    CARD32 atom ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    } xInternAtomReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD16 nameLength ;  
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xGetAtomNameReply;
typedef struct {
    BYTE type;  
    CARD8 format;
    CARD16 sequenceNumber ;
    CARD32 length ; 
    CARD32 propertyType ;
    CARD32 bytesAfter ;
    CARD32 nItems ; 
    CARD32 pad1 ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    } xGetPropertyReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nProperties ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xListPropertiesReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 owner ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    } xGetSelectionOwnerReply;
typedef struct {
    BYTE type;  
    BYTE status;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 pad1 ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    } xGrabPointerReply;
typedef xGrabPointerReply xGrabKeyboardReply;
typedef struct {
    BYTE type;  
    BOOL sameScreen;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 root , child ;
    INT16 rootX , rootY , winX , winY ;
    CARD16 mask ;
    CARD16 pad1 ;
    CARD32 pad ;
    } xQueryPointerReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 nEvents ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    } xGetMotionEventsReply;
typedef struct {
    BYTE type;  
    BOOL sameScreen;
    CARD16 sequenceNumber ;
    CARD32 length ; 
    CARD32 child ;
    INT16 dstX , dstY ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    } xTranslateCoordsReply;
typedef struct {
    BYTE type;  
    CARD8 revertTo;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 focus ;
    CARD32 pad1 ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    } xGetInputFocusReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    BYTE map[32];
    } xQueryKeymapReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    xCharInfo minBounds; 
    CARD32 walign1 ;
    xCharInfo maxBounds; 
    CARD32 walign2 ;
    CARD16 minCharOrByte2 , maxCharOrByte2 ;
    CARD16 defaultChar ;
    CARD16 nFontProps ;  
    CARD8 drawDirection;
    CARD8 minByte1, maxByte1;
    BOOL allCharsExist;
    INT16 fontAscent , fontDescent ;
    CARD32 nCharInfos ; 
} xQueryFontReply;
typedef struct {
    BYTE type;  
    CARD8 drawDirection;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    INT16 fontAscent , fontDescent ;
    INT16 overallAscent , overallDescent ;
    INT32 overallWidth , overallLeft , overallRight ;
    CARD32 pad ;
    } xQueryTextExtentsReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nFonts ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xListFontsReply;
typedef struct {
    BYTE type;  
    CARD8 nameLength;  
    CARD16 sequenceNumber ;
    CARD32 length ;  
    xCharInfo minBounds; 
    CARD32 walign1 ;
    xCharInfo maxBounds; 
    CARD32 walign2 ;
    CARD16 minCharOrByte2 , maxCharOrByte2 ;
    CARD16 defaultChar ;
    CARD16 nFontProps ;  
    CARD8 drawDirection;
    CARD8 minByte1, maxByte1;
    BOOL allCharsExist;
    INT16 fontAscent , fontDescent ;
    CARD32 nReplies ;   
} xListFontsWithInfoReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nPaths ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xGetFontPathReply;
typedef struct {
    BYTE type;  
    CARD8 depth;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 visual ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xGetImageReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nColormaps ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xListInstalledColormapsReply;
typedef struct {
    BYTE type; 
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;   
    CARD16 red , green , blue ;
    CARD16 pad2 ;
    CARD32 pixel ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    } xAllocColorReply;
typedef struct {
    BYTE type; 
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 pixel ;
    CARD16 exactRed , exactGreen , exactBlue ;
    CARD16 screenRed , screenGreen , screenBlue ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    } xAllocNamedColorReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nPixels , nMasks ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xAllocColorCellsReply;
typedef struct {
    BYTE type; 
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nPixels ;
    CARD16 pad2 ;
    CARD32 redMask , greenMask , blueMask ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    } xAllocColorPlanesReply;
typedef struct {
    BYTE type; 
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nColors ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xQueryColorsReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD16 exactRed , exactGreen , exactBlue ;
    CARD16 screenRed , screenGreen , screenBlue ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    } xLookupColorReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD16 width , height ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xQueryBestSizeReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ; 
    BOOL  present;
    CARD8 major_opcode;
    CARD8 first_event;
    CARD8 first_error;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xQueryExtensionReply;
typedef struct {
    BYTE type;  
    CARD8 nExtensions;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xListExtensionsReply;
typedef struct {
    BYTE   type;  
    CARD8  success;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xSetMappingReply;
typedef xSetMappingReply xSetPointerMappingReply;
typedef xSetMappingReply xSetModifierMappingReply;
typedef struct {
    BYTE type;  
    CARD8 nElts;  
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xGetPointerMappingReply;
typedef struct {
    BYTE type;
    CARD8 keySymsPerKeyCode;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
} xGetKeyboardMappingReply;    
typedef struct {
    BYTE type;
    CARD8 numKeyPerModifier;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD32 pad1 ;
    CARD32 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
} xGetModifierMappingReply;
typedef struct {
    BYTE type;  
    BOOL globalAutoRepeat;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD32 ledMask ;
    CARD8 keyClickPercent, bellPercent;
    CARD16 bellPitch , bellDuration ;
    CARD16 pad ;
    BYTE map[32];  
    } xGetKeyboardControlReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD16 accelNumerator , accelDenominator ;
    CARD16 threshold ;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    } xGetPointerControlReply;
typedef struct {
    BYTE type;  
    BYTE pad1;
    CARD16 sequenceNumber ;
    CARD32 length ;  
    CARD16 timeout , interval ;
    BOOL preferBlanking;
    BOOL allowExposures;
    CARD16 pad2 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    } xGetScreenSaverReply;
typedef struct {
    BYTE type;  
    BOOL enabled;
    CARD16 sequenceNumber ;
    CARD32 length ;
    CARD16 nHosts ;
    CARD16 pad1 ;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
    } xListHostsReply;

typedef struct {
    BYTE type;                  
    BYTE errorCode;
    CARD16 sequenceNumber ;       
    CARD32 resourceID ;
    CARD16 minorCode ;
    CARD8 majorCode;
    BYTE pad1;
    CARD32 pad3 ;
    CARD32 pad4 ;
    CARD32 pad5 ;
    CARD32 pad6 ;
    CARD32 pad7 ;
} xError;
typedef struct {
    union {
	struct {
	    BYTE type;
	    BYTE detail;
	    CARD16 sequenceNumber ;
	    } u;
	struct {
            CARD32 pad00 ;
	    CARD32 time ;
	    CARD32 root , event , child ;
	    INT16 rootX , rootY , eventX , eventY ;
	    KeyButMask state ;
	    BOOL sameScreen;		
	    BYTE pad1;
	} keyButtonPointer;
	struct {
            CARD32 pad00 ;
            CARD32 time ;
	    CARD32 root , event , child ;
	    INT16 rootX , rootY , eventX , eventY ;
	    KeyButMask state ;
	    BYTE mode; 			
	    BYTE flags;		
	} enterLeave;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    BYTE mode; 			
	    BYTE pad1, pad2, pad3;
	} focus;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    CARD16 x , y , width , height ;
	    CARD16 count ;
	    CARD16 pad2 ;
	} expose;
	struct {
            CARD32 pad00 ;
	    CARD32 drawable ;
	    CARD16 x , y , width , height ;
	    CARD16 minorEvent ;
	    CARD16 count ;
	    BYTE majorEvent;
	    BYTE pad1, pad2, pad3;
	} graphicsExposure;
	struct {
            CARD32 pad00 ;
	    CARD32 drawable ;
	    CARD16 minorEvent ;
	    BYTE majorEvent;
	    BYTE bpad;
	} noExposure;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    CARD8 state;
	    BYTE pad1, pad2, pad3;
	} visibility;
	struct {
            CARD32 pad00 ;
	    CARD32 parent , window ;
	    INT16 x , y ;
	    CARD16 width , height , borderWidth ;
	    BOOL override;
	    BYTE bpad;
        } createNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window ;
	} destroyNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window ;
	    BOOL fromConfigure;
	    BYTE pad1, pad2, pad3;
        } unmapNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window ;
	    BOOL override;
	    BYTE pad1, pad2, pad3;
        } mapNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 parent , window ;
        } mapRequest;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window , parent ;
	    INT16 x , y ;
	    BOOL override;
	    BYTE pad1, pad2, pad3;
	} reparent;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window , aboveSibling ;
	    INT16 x , y ;
	    CARD16 width , height , borderWidth ;
	    BOOL override;		
	    BYTE bpad;
	} configureNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 parent , window , sibling ;
	    INT16 x , y ;
	    CARD16 width , height , borderWidth ;
	    CARD16 valueMask ;
	    CARD32 pad1 ;
	} configureRequest;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window ;
	    INT16 x , y ;
	    CARD32 pad1, pad2, pad3, pad4;
	} gravity;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    CARD16 width , height ;
	} resizeRequest;
	struct {
            CARD32 pad00 ;
	    CARD32 event , window , parent ;
	    BYTE place;			
	    BYTE pad1, pad2, pad3;
	} circulate;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    CARD32 atom ;
	    CARD32 time ;
	    BYTE state;			
	    BYTE pad1;
	    CARD16 pad2 ;
	} property;
	struct {
            CARD32 pad00 ;
            CARD32 time ;     
	    CARD32 window ;
	    CARD32 atom ;
	} selectionClear;
	struct {
            CARD32 pad00 ;
            CARD32 time ;    
	    CARD32 owner , requestor ;
	    CARD32 selection , target , property ;
	} selectionRequest;
	struct {
            CARD32 pad00 ;
            CARD32 time ;   
	    CARD32 requestor ;
	    CARD32 selection , target , property ;
	} selectionNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    CARD32 colormap ;
	    BOOL new;		
	    BYTE state;			
	    BYTE pad1, pad2;
	} colormap;
	struct {
	    CARD32 pad00 ;
	    CARD8 request;
	    CARD8 firstKeyCode;
	    CARD8 count;
	    BYTE pad1;
	} mappingNotify;
	struct {
            CARD32 pad00 ;
	    CARD32 window ;
	    union {
		struct {
		    CARD32 type ;
		    INT32 longs0 ;
		    INT32 longs1 ;
		    INT32 longs2 ;
		    INT32 longs3 ;
		    INT32 longs4 ;
		} l;
		struct {
		    CARD32 type ;
		    INT16 shorts0 ;
		    INT16 shorts1 ;
		    INT16 shorts2 ;
		    INT16 shorts3 ;
		    INT16 shorts4 ;
		    INT16 shorts5 ;
		    INT16 shorts6 ;
		    INT16 shorts7 ;
		    INT16 shorts8 ;
		    INT16 shorts9 ;
		} s;
		struct {
		    CARD32 type ;
		    INT8 bytes[20];
		} b;
	    } u; 
	} clientMessage;
    } u;
} xEvent;
typedef struct {
    BYTE type;
    BYTE map[31];
    } xKeymapEvent;
typedef union {
    xGenericReply generic;
    xGetGeometryReply geom;
    xQueryTreeReply tree;
    xInternAtomReply atom;
    xGetAtomNameReply atomName;
    xGetPropertyReply property;
    xListPropertiesReply listProperties;
    xGetSelectionOwnerReply selection;
    xGrabPointerReply grabPointer;
    xGrabKeyboardReply grabKeyboard;
    xQueryPointerReply pointer;
    xGetMotionEventsReply motionEvents;
    xTranslateCoordsReply coords;
    xGetInputFocusReply inputFocus;
    xQueryTextExtentsReply textExtents;
    xListFontsReply fonts;
    xGetFontPathReply fontPath;
    xGetImageReply image;
    xListInstalledColormapsReply colormaps;
    xAllocColorReply allocColor;
    xAllocNamedColorReply allocNamedColor;
    xAllocColorCellsReply colorCells;
    xAllocColorPlanesReply colorPlanes;
    xQueryColorsReply colors;
    xLookupColorReply lookupColor;
    xQueryBestSizeReply bestSize;
    xQueryExtensionReply extension;
    xListExtensionsReply extensions;
    xSetModifierMappingReply setModifierMapping;
    xGetModifierMappingReply getModifierMapping;
    xSetPointerMappingReply setPointerMapping;
    xGetKeyboardMappingReply getKeyboardMapping;
    xGetPointerMappingReply getPointerMapping;
    xGetPointerControlReply pointerControl;
    xGetScreenSaverReply screenSaver;
    xListHostsReply hosts;
    xError error;
    xEvent event;
} xReply;

typedef struct {
	CARD8 reqType;
	CARD8 data;            
	CARD16 length ;         
} xReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 id ;  
    } xResourceReq;
typedef struct {
    CARD8 reqType;
    CARD8 depth;
    CARD16 length ;
    CARD32 wid , parent ;
    INT16 x , y ;
    CARD16 width , height , borderWidth ;  
    CARD16 class ;
    CARD32 visual ;
    CARD32 mask ;
} xCreateWindowReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 window ;
    CARD32 valueMask ; 
} xChangeWindowAttributesReq;
typedef struct {
    CARD8 reqType;
    BYTE mode;
    CARD16 length ;
    CARD32 window ;
} xChangeSaveSetReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 window , parent ;
    INT16 x , y ;
} xReparentWindowReq;
typedef struct {
    CARD8 reqType;
    CARD8 pad;
    CARD16 length ;
    CARD32 window ;
    CARD16 mask ;
    CARD16 pad2 ;
} xConfigureWindowReq;
typedef struct {
    CARD8 reqType;
    CARD8 direction;
    CARD16 length ;
    CARD32 window ;
} xCirculateWindowReq;
typedef struct {    
    CARD8 reqType;
    BOOL onlyIfExists;
    CARD16 length ;
    CARD16 nbytes  ;    
    CARD16 pad ;
} xInternAtomReq;
typedef struct {
    CARD8 reqType;
    CARD8 mode;
    CARD16 length ;
    CARD32 window ;
    CARD32 property , type ;
    CARD8 format;
    BYTE pad[3];
    CARD32 nUnits ;     
} xChangePropertyReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 window ;
    CARD32 property ;
} xDeletePropertyReq;
typedef struct {
    CARD8 reqType;
    BOOL delete;
    CARD16 length ;
    CARD32 window ;
    CARD32 property , type ;
    CARD32 longOffset ;
    CARD32 longLength ;
} xGetPropertyReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 window ;
    CARD32 selection ;
    CARD32 time ;
} xSetSelectionOwnerReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 requestor ;
    CARD32 selection , target , property ;
    CARD32 time ;
    } xConvertSelectionReq;
typedef struct {
    CARD8 reqType;
    BOOL propagate;
    CARD16 length ;
    CARD32 destination ;
    CARD32 eventMask ;
    xEvent event;
} xSendEventReq;
typedef struct {
    CARD8 reqType;
    BOOL ownerEvents;
    CARD16 length ;
    CARD32 grabWindow ;
    CARD16 eventMask ;
    BYTE pointerMode, keyboardMode;
    CARD32 confineTo ;
    CARD32 cursor ;
    CARD32 time ;
} xGrabPointerReq;
typedef struct {
    CARD8 reqType;
    BOOL ownerEvents;
    CARD16 length ;
    CARD32 grabWindow ;
    CARD16 eventMask ;
    BYTE pointerMode, keyboardMode;
    CARD32 confineTo ;
    CARD32 cursor ;
    CARD8 button;
    BYTE pad;
    CARD16 modifiers ;
} xGrabButtonReq;
typedef struct {
    CARD8 reqType;
    CARD8 button;
    CARD16 length ;
    CARD32 grabWindow ;
    CARD16 modifiers ;
    CARD16 pad ;
} xUngrabButtonReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cursor ;
    CARD32 time ;
    CARD16 eventMask ;
    CARD16 pad2 ;
} xChangeActivePointerGrabReq;
typedef struct {
    CARD8 reqType;
    BOOL ownerEvents;
    CARD16 length ;
    CARD32 grabWindow ;
    CARD32 time ;
    BYTE pointerMode, keyboardMode;  
    CARD16 pad ;
} xGrabKeyboardReq;
typedef struct {
    CARD8 reqType;
    BOOL ownerEvents;
    CARD16 length ;
    CARD32 grabWindow ;
    CARD16 modifiers ;
    CARD8 key;
    BYTE pointerMode, keyboardMode;  
    BYTE pad1, pad2, pad3;
} xGrabKeyReq;
typedef struct {
    CARD8 reqType;
    CARD8 key;
    CARD16 length ;
    CARD32 grabWindow ;
    CARD16 modifiers ;
    CARD16 pad ;
} xUngrabKeyReq;
typedef struct {
    CARD8 reqType;
    CARD8 mode;
    CARD16 length ;
    CARD32 time ;
} xAllowEventsReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 window ;
    CARD32 start , stop ;
} xGetMotionEventsReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 srcWid , dstWid ;
    INT16 srcX , srcY ;
} xTranslateCoordsReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 srcWid , dstWid ;
    INT16 srcX , srcY ;
    CARD16 srcWidth , srcHeight ;
    INT16 dstX , dstY ;
} xWarpPointerReq;
typedef struct {
    CARD8 reqType;
    CARD8 revertTo;
    CARD16 length ;
    CARD32 focus ;
    CARD32 time ;
} xSetInputFocusReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 fid ;
    CARD16 nbytes ;
    BYTE pad1, pad2;	
} xOpenFontReq;
typedef struct {
    CARD8 reqType;
    BOOL oddLength;
    CARD16 length ;
    CARD32 fid ;
    } xQueryTextExtentsReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD16 maxNames ;
    CARD16 nbytes ;  
} xListFontsReq;
typedef xListFontsReq xListFontsWithInfoReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD16 nFonts ;
    BYTE pad1, pad2;	
} xSetFontPathReq;
typedef struct {
    CARD8 reqType;
    CARD8 depth;
    CARD16 length ;
    CARD32 pid ;
    CARD32 drawable ;
    CARD16 width , height ;
} xCreatePixmapReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 gc ;
    CARD32 drawable ;
    CARD32 mask ;
} xCreateGCReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 gc ;
    CARD32 mask ;
} xChangeGCReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 srcGC , dstGC ;
    CARD32 mask ;
} xCopyGCReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 gc ;
    CARD16 dashOffset ;
    CARD16 nDashes ;        
} xSetDashesReq;    
typedef struct {
    CARD8 reqType;
    BYTE ordering;
    CARD16 length ;
    CARD32 gc ;
    INT16 xOrigin , yOrigin ;
} xSetClipRectanglesReq;    
typedef struct {
    CARD8 reqType;
    BOOL exposures;
    CARD16 length ;
    CARD32 window ;
    INT16 x , y ;
    CARD16 width , height ;
} xClearAreaReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 srcDrawable , dstDrawable ;
    CARD32 gc ;
    INT16 srcX , srcY , dstX , dstY ;
    CARD16 width , height ;
} xCopyAreaReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 srcDrawable , dstDrawable ;
    CARD32 gc ;
    INT16 srcX , srcY , dstX , dstY ;
    CARD16 width , height ;
    CARD32 bitPlane ;
} xCopyPlaneReq;    
typedef struct {
    CARD8 reqType;
    BYTE coordMode;
    CARD16 length ;
    CARD32 drawable ;
    CARD32 gc ;
} xPolyPointReq;    
typedef xPolyPointReq xPolyLineReq;  
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 drawable ;
    CARD32 gc ;
} xPolySegmentReq;    
typedef xPolySegmentReq xPolyArcReq;
typedef xPolySegmentReq xPolyRectangleReq;
typedef xPolySegmentReq xPolyFillRectangleReq;
typedef xPolySegmentReq xPolyFillArcReq;
typedef struct _FillPolyReq {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 drawable ;
    CARD32 gc ;
    BYTE shape;
    BYTE coordMode;
    CARD16 pad1 ;
} xFillPolyReq;    
typedef struct _PutImageReq {
    CARD8 reqType;
    CARD8 format;
    CARD16 length ;
    CARD32 drawable ;
    CARD32 gc ;
    CARD16 width , height ;
    INT16 dstX , dstY ;
    CARD8 leftPad;
    CARD8 depth;
    CARD16 pad ;
} xPutImageReq;    
typedef struct {
    CARD8 reqType;
    CARD8 format;
    CARD16 length ;
    CARD32 drawable ;
    INT16 x , y ;
    CARD16 width , height ;
    CARD32 planeMask ;
} xGetImageReq;    
typedef struct {
    CARD8 reqType;
    CARD8 pad;
    CARD16 length ;
    CARD32 drawable ;
    CARD32 gc ;
    INT16 x , y ;		
} xPolyTextReq;    
typedef xPolyTextReq xPolyText8Req;
typedef xPolyTextReq xPolyText16Req;
typedef struct {
    CARD8 reqType;
    BYTE nChars;
    CARD16 length ;
    CARD32 drawable ;
    CARD32 gc ;
    INT16 x , y ;
} xImageTextReq;    
typedef xImageTextReq xImageText8Req;
typedef xImageTextReq xImageText16Req;
typedef struct {
    CARD8 reqType;
    BYTE alloc;
    CARD16 length ;
    CARD32 mid ;
    CARD32 window ;
    CARD32 visual ;
} xCreateColormapReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 mid ;
    CARD32 srcCmap ;
} xCopyColormapAndFreeReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cmap ;
    CARD16 red , green , blue ;
    CARD16 pad2 ;
} xAllocColorReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cmap ;
    CARD16 nbytes ;  
    BYTE pad1, pad2;
} xAllocNamedColorReq;    
typedef struct {
    CARD8 reqType;
    BOOL contiguous;
    CARD16 length ;
    CARD32 cmap ;
    CARD16 colors , planes ;
} xAllocColorCellsReq;    
typedef struct {
    CARD8 reqType;
    BOOL contiguous;
    CARD16 length ;
    CARD32 cmap ;
    CARD16 colors , red , green , blue ;
} xAllocColorPlanesReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cmap ;
    CARD32 planeMask ;
} xFreeColorsReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cmap ;
} xStoreColorsReq;    
typedef struct {
    CARD8 reqType;
    CARD8 flags;   
    CARD16 length ;
    CARD32 cmap ;
    CARD32 pixel ;
    CARD16 nbytes ;  
    BYTE pad1, pad2;
    } xStoreNamedColorReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cmap ;
} xQueryColorsReq;    
typedef struct {    
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cmap ;
    CARD16 nbytes ;  
    BYTE pad1, pad2;
} xLookupColorReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cid ;
    CARD32 source , mask ;
    CARD16 foreRed , foreGreen , foreBlue ;
    CARD16 backRed , backGreen , backBlue ;
    CARD16 x , y ;
} xCreateCursorReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cid ;
    CARD32 source , mask ;
    CARD16 sourceChar , maskChar ;
    CARD16 foreRed , foreGreen , foreBlue ;
    CARD16 backRed , backGreen , backBlue ;
} xCreateGlyphCursorReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 cursor ;
    CARD16 foreRed , foreGreen , foreBlue ;
    CARD16 backRed , backGreen , backBlue ;
} xRecolorCursorReq;    
typedef struct {
    CARD8 reqType;
    CARD8 class;
    CARD16 length ;
    CARD32 drawable ;
    CARD16 width , height ;
} xQueryBestSizeReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD16 nbytes ;  
    BYTE pad1, pad2;
} xQueryExtensionReq;
typedef struct {
    CARD8   reqType;
    CARD8   numKeyPerModifier;
    CARD16  length ;
} xSetModifierMappingReq;
typedef struct {
    CARD8 reqType;
    CARD8 nElts;  
    CARD16 length ;
} xSetPointerMappingReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD8 firstKeyCode;
    CARD8 count;
    CARD16 pad1 ;
} xGetKeyboardMappingReq;    
typedef struct {
    CARD8 reqType;
    CARD8 keyCodes;
    CARD16 length ;
    CARD8 firstKeyCode;
    CARD8 keySymsPerKeyCode;
    CARD16 pad1 ;
} xChangeKeyboardMappingReq;
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 mask ;
} xChangeKeyboardControlReq;    
typedef struct {
    CARD8 reqType;
    INT8 percent;  
    CARD16 length ;
} xBellReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    INT16 accelNum , accelDenum ;
    INT16 threshold ;             
    BOOL doAccel, doThresh;
} xChangePointerControlReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    INT16 timeout , interval ;
    BYTE preferBlank, allowExpose;  
    CARD16 pad2 ;
} xSetScreenSaverReq;    
typedef struct {
    CARD8 reqType;
    BYTE mode;
    CARD16 length ;
    CARD8 hostFamily;
    BYTE pad;
    CARD16 hostLength ;
} xChangeHostsReq;    
typedef struct {
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    } xListHostsReq;
typedef struct {
    CARD8 reqType;
    BYTE mode;
    CARD16 length ;
    } xChangeModeReq;
typedef xChangeModeReq xSetAccessControlReq;
typedef xChangeModeReq xSetCloseDownModeReq;
typedef xChangeModeReq xForceScreenSaverReq;
typedef struct { 
    CARD8 reqType;
    BYTE pad;
    CARD16 length ;
    CARD32 window ;
    CARD16 nAtoms ;
    INT16 nPositions ;
    } xRotatePropertiesReq;

extern unsigned long globalSerialNumber;
typedef unsigned char *pointer;
typedef int Bool;
typedef unsigned long PIXEL;
typedef unsigned long ATOM;
typedef pointer	FID;
typedef struct _FontPathRec *FontPathPtr;
typedef struct _NewClientRec *NewClientPtr;
char		*ReadRequestFromClient();
char		*strcat();
char		*strncat();
char		*strcpy();
char		*strncpy();
Bool		CloseDownConnection();
FontPathPtr	GetFontPath();
FontPathPtr	ExpandFontNamePattern();
FID		FiOpenForRead();
void		CreateWellKnownSockets();
void		SetDefaultFontPath();
void		FreeFontRecord();
void		SetFontPath();
void		ErrorF();
void		Error();
void		FatalError();
void		ProcessCommandLine();
void		Xfree();
void		FlushAllOutput();
void		FlushIfCriticalOutputPending();
unsigned long	*Xalloc();
unsigned long	*Xrealloc();
long		GetTimeInMillis();
typedef struct _DDXPoint *DDXPointPtr;
typedef struct _Box *BoxPtr;
typedef struct _PixmapFormat *PixmapFormatPtr;
typedef struct _Visual *VisualPtr;
typedef struct _Depth  *DepthPtr;
typedef struct _Screen *ScreenPtr;
typedef struct _Region *RegionPtr;
extern int SingleRectRegionEqual();
typedef struct _DrawInfo *DrawablePtr;	
typedef struct _Pixmap *PixmapPtr;
typedef struct _GCInterest *GCInterestPtr;
typedef struct _GC    *GCPtr;
extern void  ValidateGC();
extern int ChangeGC();
extern GCPtr CreateGC();
extern int CopyGC();
extern int FreeGC();
extern void SetGCMask();
extern GCPtr GetScratchGC();
extern void  FreeScratchGC();
typedef unsigned long	Pixel;
typedef struct _CMEntry *EntryPtr;
typedef struct _ColormapRec *ColormapPtr;
extern int CreateColormap();
extern Pixel FindColor();
extern int FreeColormap();
extern int TellNoMap();
extern int TellLostMap();
extern int TellGainedMap();
extern int IsMapInstalled();
extern void UninstallColormap();
typedef struct _PixmapFormat {
    unsigned char	depth;
    unsigned char	bitsPerPixel;
    unsigned char	scanlinePad;
    } PixmapFormatRec;
typedef struct _Visual {
    unsigned long	vid;
    short	screen;    
    short       class;
    unsigned long	redMask, greenMask, blueMask;
    int		offsetRed, offsetGreen, offsetBlue;
    short       bitsPerRGBValue;
    short	ColormapEntries;
    short	nplanes;	
  } VisualRec;
typedef struct _Depth {
    int		depth;
    int		numVids;
    unsigned long	*vids;    
  } DepthRec;
typedef struct _Screen {
    int			myNum;	
    ATOM id;
    short		width, height;
    short		mmWidth, mmHeight;
    short		numDepths;
    DepthPtr       	allowedDepths;
    short       	rootDepth;
    unsigned long      	rootVisual;
    unsigned long	defColormap;
    short		minInstalledCmaps, maxInstalledCmaps;
    char                backingStoreSupport, saveUnderSupport;
    unsigned long	whitePixel, blackPixel;
    unsigned long	rgf;	
    GCPtr		GCperDepth[8+1];
    PixmapPtr		PixmapPerDepth[1];
    pointer		devPrivate;
    short       	numVisuals;
    VisualPtr		visuals;
    Bool (* CloseScreen)();		
    void (* QueryBestSize)();		
    Bool (* SaveScreen)();		
    void (* GetImage)();		
    unsigned int  *(* GetSpans)();	
    void (* PointerNonInterestBox)();	
    Bool (* CreateWindow)();		
    Bool (* DestroyWindow)();		
    Bool (* PositionWindow)();		
    Bool (* ChangeWindowAttributes)();	
    Bool (* RealizeWindow)();		
    Bool (* UnrealizeWindow)();		
    int  (* ValidateTree)();		
    void (* WindowExposures)();       
    PixmapPtr (* CreatePixmap)(); 	
    Bool (* DestroyPixmap)();		
    Bool (* RealizeFont)();		
    Bool (* UnrealizeFont)();		
    void (* ConstrainCursor)();   	
    void (* CursorLimits)();		
    Bool (* DisplayCursor)();		
    Bool (* RealizeCursor)();		
    Bool (* UnrealizeCursor)();		
    void (* RecolorCursor)();		
    Bool (* SetCursorPosition)();	
    Bool (* CreateGC)();		
    void (* CreateColormap)();		
    void (* DestroyColormap)();		
    void (* InstallColormap)();		
    void (* UninstallColormap)();	
    int (* ListInstalledColormaps) (); 	
    void (* StoreColors)();		
    void (* ResolveColor)();		
    RegionPtr (* RegionCreate)(); 	
    void (* RegionCopy)();		
    void (* RegionDestroy)();		
    int (* Intersect)();		
    int (* Union)();			
    int (* Subtract)();			
    int (* Inverse)();			
    void (* RegionReset)();		
    void (* TranslateRegion)();		
    int (* RectIn)();			
    Bool (* PointInRegion)();		
    Bool (* RegionNotEmpty)();      	
    void (* RegionEmpty)();        	
    BoxPtr (*RegionExtents)(); 		
    void (* SendGraphicsExpose)();	
    void (* BlockHandler)();		
    void (* WakeupHandler)();		
    pointer blockData;
    pointer wakeupData;
} ScreenRec;
typedef struct _ScreenInfo {
    int		imageByteOrder;
    int		bitmapScanlineUnit;
    int		bitmapScanlinePad;
    int		bitmapBitOrder;
    int		numPixmapFormats;
    PixmapFormatRec
		formats[8];
    int		arraySize;
    int		numScreens;
    ScreenPtr	screen;
} ScreenInfo;
extern ScreenInfo screenInfo;
extern unsigned long globalSerialNumber;
typedef struct _DDXPoint {
    short x, y;
} DDXPointRec;
typedef struct _Box {
    short x1, y1, x2, y2;
} BoxRec;
typedef struct _Region {
    long	size;
    long 	numRects;
    BoxPtr	rects;
    BoxRec 	extents;
} RegionRec;
extern RegionPtr miRegionCreate();
extern void miprintRects();
extern void miRegionCopy();
extern int miInverse();
extern int miIntersect();
extern int miUnion();
extern int miSubtract();
extern int miRectIn();
extern void miTranslateRegion();
extern void miRegionDestroy();
extern void miRegionReset();
extern Bool miPointInRegion();
typedef struct _BackingStore *BackingStorePtr;
typedef struct _Window *WindowPtr;
typedef struct _DrawInfo {
    short	type;
    ScreenPtr	pScreen;     
    int         depth;          
    unsigned long        serialNumber;
} DrawableRec;
typedef struct _Pixmap {
    DrawableRec drawable;
    int width, height;
    int refcnt;
    int devKind;		
    pointer devPrivate;		
    } PixmapRec;
typedef struct _Cursor *CursorPtr;
typedef struct _CursorMetric *CursorMetricPtr;
extern CursorPtr rootCursor;
typedef struct _Property *PropertyPtr;
unsigned short CreateNewResourceType();
short CreateNewResourceClass();
unsigned long FakeClientID();
void AddResource();
void FreeResource();
void FreeClientResources();
pointer LookupID();
typedef struct _TimeStamp *TimeStampPtr;
typedef struct _Client *ClientPtr;
extern ClientPtr requestingClient;
extern ClientPtr *clients;
extern ClientPtr serverClient;
extern int currentMaxClients;
extern int ProcAllowEvents();
extern int ProcBell();
extern int ProcChangeActivePointerGrab();
extern int ProcChangeKeyboardControl();
extern int ProcChangePointerControl();
extern int ProcGetKeyboardMapping();
extern int ProcGetPointerMapping();
extern int ProcGetInputFocus();
extern int ProcGetKeyboardControl();
extern int ProcGetMotionEvents();
extern int ProcGetPointerControl();
extern int ProcGrabButton();
extern int ProcGrabKey();
extern int ProcGrabKeyboard();
extern int ProcGrabPointer();
extern int ProcQueryKeymap();
extern int ProcQueryPointer();
extern int ProcSetInputFocus();
extern int ProcSetKeyboardMapping();
extern int ProcSetPointerMapping();
extern int ProcSendEvent();
extern int ProcUngrabButton();
extern int ProcUngrabKey();
extern int ProcUngrabKeyboard();
extern int ProcUngrabPointer();
extern int ProcWarpPointer();
extern int ProcRecolorCursor();
extern WindowPtr LookupWindow();
extern pointer LookupDrawable();
extern void NoopDDA();
typedef struct _BackingStore {
    RegionPtr obscured;
    DDXPointRec oldAbsCorner;	    
    void (* SaveDoomedAreas)();
    RegionPtr  (* RestoreAreas)();
    void (* ExposeCopy)();  	    
    void (* TranslateBackingStore)(); 
    void (* ClearToBackground)();
    void (* DrawGuarantee)();
} BackingStoreRec;
typedef struct _Window {
	DrawableRec drawable;		
	VisualID visual;
	struct _Window *parent;	        
	struct _Window *nextSib;	        
	struct _Window *prevSib;	        
	struct _Window *firstChild;	
	struct _Window *lastChild;	
	CursorPtr cursor;                 
	ClientPtr client;		
	Window wid;                        
	RegionPtr clipList;               
	RegionPtr winSize;                
	RegionPtr borderClip;             
	RegionPtr borderSize;             
        RegionPtr exposed;                
	RegionPtr borderExposed;
	xRectangle clientWinSize;       
	DDXPointRec  absCorner;
	DDXPointRec  oldAbsCorner;      
	int class;                    
	Mask eventMask;
	Mask dontPropagateMask;
	Mask allEventMasks;
	Mask deliverableEvents;
	pointer otherClients;		
	pointer passiveGrabs;		
	PropertyPtr userProps;            
	XID nolongerused; 
	PixmapPtr backgroundTile;
	unsigned long backgroundPixel;
	PixmapPtr borderTile;
	unsigned long borderPixel;
	int borderWidth;
        void (* PaintWindowBackground)();
        void (* PaintWindowBorder)();
	void (* CopyWindow)();
	void (* ClearToBackground)();
	unsigned long backingBitPlanes;
	unsigned long backingPixel;
	int  backingStore;           
	BackingStorePtr backStorage;
	char  bitGravity;
        char  winGravity;
	Colormap colormap;
	Bool	saveUnder:1;
        unsigned  visibility:2;		      
	unsigned mapped:1;
	unsigned realized:1;            
	unsigned viewable:1;            
	unsigned overrideRedirect:1;
	unsigned marked:1;
	pointer devBackingStore;		
	pointer devPrivate;			
} WindowRec;
extern int DeleteWindow();
extern int ChangeWindowAttributes();
extern int WalkTree();
extern CreateRootWindow();
extern WindowPtr CreateWindow();
extern int DeleteWindow();
extern int DestroySubwindows();
extern int ChangeWindowAttributes();
extern int GetWindowAttributes();
extern int ConfigureWindow();
extern int ReparentWindow();
extern int MapWindow();
extern int MapSubwindow();
extern int UnmapWindow();
extern int UnmapSubwindow();
extern RegionPtr NotClippedByChildren();
typedef unsigned long Leds;
typedef struct _OtherClients *OtherClientsPtr;
typedef struct _GrabRec *GrabPtr;
typedef int (*DeviceProc)();
typedef void (*ProcessInputProc)();
typedef struct _DeviceRec {
    pointer	devicePrivate;
    ProcessInputProc processInputProc;
    Bool	on;			
} DeviceRec, *DevicePtr;
typedef struct {
	int		count;
	DevicePtr	*devices;
} DevicesDescriptor;
typedef struct {
    int			click, bell, bell_pitch, bell_duration;
    Bool		autoRepeat;
    unsigned char	autoRepeats[32];
    Leds		leds;
} KeybdCtrl;
typedef struct {
    KeySym  *map;
    KeyCode minKeyCode,
	    maxKeyCode;
    int     mapWidth;
} KeySymsRec, *KeySymsPtr;
typedef struct {
    int		num, den, threshold;
} PtrCtrl;
extern KeybdCtrl	defaultKeyboardControl;
extern PtrCtrl		defaultPointerControl;
extern int DeliverEvents();
extern int MaybeDeliverEventsToClient(
);
extern DevicePtr AddInputDevice();
extern void RegisterPointerDevice();
extern void RegisterKeyboardDevice();
extern void ProcessPointerEvent();
extern void ProcessKeyboardEvent();
extern void ProcessOtherEvent();
extern void InitPointerDeviceStruct();
extern void InitKeyboardDeviceStruct();
extern void InitOtherDeviceStruct();
extern GrabPtr SetDeviceGrab();
extern DevicesDescriptor GetInputDevices();
extern DevicePtr LookupInputDevice();
extern DevicePtr LookupKeyboardDevice();
extern DevicePtr LookupPointerDevice();
extern void CloseDownDevices();
extern int InitAndStartDevices();
extern int NumMotionEvents();
extern void WriteEventsToClient();
extern int EventSelectForWindow();
extern int EventSuppressForWindow();
typedef struct
{
    unsigned short color;
    short  refcnt;
} SHAREDCOLOR;
typedef struct
{
    unsigned short	red, green, blue;
} LOCO;
typedef struct 
{
    SHAREDCOLOR *red, *green, *blue;
} SHCO;
typedef struct _CMEntry
{
    union
    {
	LOCO	local;
	SHCO	shco;
    } co;
    short	refcnt;
    Bool	fShared;
} Entry;
typedef struct _ColormapRec
{
    VisualPtr	pVisual;
    short	class;		
    long	mid;		
    ScreenPtr	pScreen;	
    short	flags;		
    int		freeRed;
    int		freeGreen;
    int		freeBlue;
    int		*numPixelsRed;	
    int		*numPixelsGreen;	
    int		*numPixelsBlue;	
    Pixel	**clientPixelsRed;
    Pixel	**clientPixelsGreen;
    Pixel	**clientPixelsBlue;
    Entry	*red;
    Entry 	*green;
    Entry	*blue;
    pointer	devPriv;
} ColormapRec;
typedef struct _Cursor {
    unsigned char *source;			
    unsigned char *mask;			
    long width;
    long height;
    long xhot;					
    long yhot;					
    unsigned foreRed, foreGreen, foreBlue;	
    unsigned backRed, backGreen, backBlue;	
    int refcnt;
    pointer devPriv[3];		
} CursorRec;
typedef struct _CursorMetric {
    long width, height, xhot, yhot;
} CursorMetricRec;
extern int		FreeCursor();
extern CursorPtr	AllocCursor();		
extern CursorPtr	CreateRootCursor();
typedef struct _TimeStamp {
    unsigned long	months;			
    unsigned long	milliseconds;
} TimeStamp;
typedef struct _Client {
    int index;
    Mask clientAsMask;
    pointer requestBuffer;
    pointer osPrivate;			
    Bool swapped;
    void (* pSwapReplyFunc)();		
    XID	errorValue;
    int sequence;
    int closeDownMode;
    int clientGone;
    int noClientException;       
    DrawablePtr lastDrawable;
    Drawable lastDrawableID;
    GCPtr lastGC;
    GContext lastGCID;    
    pointer *saveSet;
    int numSaved;
    int requestLog[100];
    int requestLogIndex;
    pointer screenPrivate[3];
} ClientRec;
extern TimeStamp currentTime;
extern void CloseDownClient();
extern TimeStamp ClientTimeToServerTime();
typedef struct _DIXFontProp *DIXFontPropPtr;
typedef struct _Font *FontPtr;
typedef enum {Linear8Bit, TwoD8Bit, Linear16Bit, TwoD16Bit} FontEncoding;
typedef struct _FontData *FontDataPtr;
extern FontPtr OpenFont();
typedef struct _GCInterest {
    struct _GCInterest	*pNextGCInterest;
    struct _GCInterest	*pLastGCInterest;
    int			length;		
    ATOM		owner;		
    unsigned long	ValInterestMask;
    void		(* ValidateGC) ();
    unsigned long	ChangeInterestMask;
    int			(* ChangeGC) ();
    void		(* CopyGCSource) ();
    void		(* CopyGCDest) ();
    void		(* DestroyGC) ();
    pointer		extPriv;	
} GCInterestRec;
typedef struct _GC{
    ScreenPtr	pScreen;		
    pointer	devPriv;		
    pointer	devBackingStore;	
    int         depth;    
    unsigned long        serialNumber;
    GCInterestPtr	pNextGCInterest;
    GCInterestPtr	pLastGCInterest;
    int		alu;
    unsigned long	planemask;
    unsigned long	fgPixel, bgPixel;
    int		lineWidth;          
    int		lineStyle;
    int		capStyle;
    int		joinStyle;
    int		fillStyle;
    int		fillRule;
    int		arcMode;
    PixmapPtr	tile;
    PixmapPtr	stipple;
    DDXPointRec	patOrg;			
    FontPtr	font;
    int		subWindowMode;
    Bool	graphicsExposures;
    DDXPointRec	clipOrg;
    pointer	clientClip;
    int		clientClipType;		
    int		dashOffset;
    int		numInDashList;		
    unsigned char *dash;		
    unsigned long	stateChanges;	
    DDXPointRec	lastWinOrg;		
    int		miTranslate:1;		
    void (* FillSpans)();
    void (* SetSpans)();
    void (* PutImage)();
    RegionPtr (* CopyArea)();
    RegionPtr (* CopyPlane)();
    void (* PolyPoint)();
    void (* Polylines)();
    void (* PolySegment)();
    void (* PolyRectangle)();
    void (* PolyArc)();
    void (* FillPolygon)();
    void (* PolyFillRect)();
    void (* PolyFillArc)();
    int (* PolyText8)();
    int (* PolyText16)();
    void (* ImageText8)();
    void (* ImageText16)();
    void (* ImageGlyphBlt)();
    void (* PolyGlyphBlt)();
    void (* PushPixels)();
    void (* LineHelper)();
    void (* ChangeClip) ();
    void (* DestroyClip) ();
    void (* CopyClip)();
} GC;
typedef struct _PaddingInfo {
	int     padRoundUp;	
	int	padPixelsLog2;	
	int     padBytesLog2;	
} PaddingInfo;
extern PaddingInfo PixmapWidthPaddingInfo[];
static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11};
static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88};
typedef struct _ScreenSaverStuff {
    WindowPtr pWindow;
    XID       wid;
    XID       cid;
    BYTE      blanked;
} ScreenSaverStuffRec;
extern int ScreenSaverBlanking, ScreenSaverAllowExposures;
int screenIsSaved =  1;
static ScreenSaverStuffRec savedScreenInfo[3];
extern WindowRec WindowTable[];
extern void (* ReplySwapVector[256]) ();
static void ResizeChildrenWinSize();
extern void CheckCursorConfinement();
extern void DeleteWindowFromAnySelections();
extern void DeleteWindowFromAnyEvents();
extern Mask EventMaskForClient();
extern void WindowHasNewCursor();
extern void RecalculateDeliverableEvents();
extern long random();
static Bool MarkSiblingsBelowMe();
int	defaultBackingStore =               0;
Bool	disableBackingStore = 0;
Bool	disableSaveUnders = 0;
int
CreateRootWindow(screen)
    int		screen;
{
    WindowPtr	pWin;
    BoxRec	box;
    ScreenPtr	pScreen;
    savedScreenInfo[screen].pWindow =            0;
    savedScreenInfo[screen].wid = FakeClientID(0);
    savedScreenInfo[screen].cid = FakeClientID(0);
    screenIsSaved =  1;
    pWin = &WindowTable[screen];
    pScreen = &screenInfo.screen[screen];
    InitProcedures(pWin);
    pWin->drawable.pScreen = pScreen;
    pWin->drawable.type = 0;
    pWin->drawable.depth = pScreen->rootDepth;
    pWin->drawable.serialNumber = ((++globalSerialNumber) >     (1L<<28) ? (globalSerialNumber  = 1): globalSerialNumber);;
    pWin->parent = ((WindowPtr) 0);
    SetWindowToDefaults(pWin, pScreen);
    pWin->colormap = pScreen->defColormap;    
    pWin->nextSib = ((WindowPtr) 0);
    MakeRootCursor(pWin);
    pWin->client = serverClient;        
    pWin->wid = FakeClientID(0);
    pWin->clientWinSize.x = pWin->clientWinSize.y = 0;
    pWin->clientWinSize.height = pScreen->height;
    pWin->clientWinSize.width = pScreen->width;
    pWin->absCorner.x = pWin->absCorner.y = 0;
    pWin->oldAbsCorner.x = pWin->oldAbsCorner.y = 0;
    box.x1 = 0;
    box.y1 = 0;
    box.x2 = pScreen->width;
    box.y2 = pScreen->height;
    pWin->clipList = (* pScreen->RegionCreate)(&box, 1); 
    pWin->winSize = (* pScreen->RegionCreate)(&box, 1);
    pWin->borderSize = (* pScreen->RegionCreate)(&box, 1);
    pWin->borderClip = (* pScreen->RegionCreate)(&box, 1); 
    pWin->class = 	1;
    pWin->visual = pScreen->rootVisual;
    pWin->backgroundTile = (PixmapPtr)3;
    pWin->backgroundPixel = pScreen->whitePixel;
    pWin->borderTile = (PixmapPtr)3;
    pWin->borderPixel = pScreen->blackPixel;
    pWin->borderWidth = 0;
    AddResource(pWin->wid,           1<<4, (pointer)pWin, DeleteWindow, 	    0);
    (*pScreen->CreateWindow)(pWin);
    (*pScreen->PositionWindow)(pWin, 0, 0);
    MakeRootTile(pWin);
    (*pScreen->ChangeWindowAttributes)(pWin, 	(1L<<0) |           (1L<<3));
    (void)EventSelectForWindow(pWin, serverClient, (Mask)0); 
    MapWindow(pWin,    0,         0, 
	         0, serverClient);
    (*pWin->PaintWindowBackground)(pWin, pWin->clipList, 0);
    pWin->backingStore = defaultBackingStore;
    (*pScreen->ChangeWindowAttributes)(pWin,          (1L<<6));
    if (disableBackingStore)
	pScreen->backingStoreSupport =               0;
    if ((pScreen->backingStoreSupport !=               0) &&
	(pScreen->saveUnderSupport ==               0))
    {
	pScreen->saveUnderSupport =     	0x40;
    }
    if (disableSaveUnders)
	pScreen->saveUnderSupport =               0;
    return(	   0	);
}