]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/programs/Xserver/dix/dispatch.c
Removed Xserver/ directory, it does nothing useful ATM.
[rdpsrv] / Xserver / programs / Xserver / dix / dispatch.c
diff --git a/Xserver/programs/Xserver/dix/dispatch.c b/Xserver/programs/Xserver/dix/dispatch.c
deleted file mode 100644 (file)
index 40179c9..0000000
+++ /dev/null
@@ -1,3955 +0,0 @@
-/* $XConsortium: dispatch.c /main/195 1996/12/15 21:24:40 rws $ */
-/* $XFree86: xc/programs/Xserver/dix/dispatch.c,v 3.7 1996/12/23 06:29:38 dawes Exp $ */
-/************************************************************
-
-Copyright (c) 1987, 1989  X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from the X Consortium.
-
-
-Copyright 1987, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
-
-                        All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its 
-documentation for any purpose and without fee is hereby granted, 
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in 
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.  
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-********************************************************/
-
-#include "windowstr.h"
-#include "fontstruct.h"
-#include "dixfontstr.h"
-#include "gcstruct.h"
-#include "selection.h"
-#include "colormapst.h"
-#include "cursorstr.h"
-#include "scrnintstr.h"
-#include "opaque.h"
-#include "input.h"
-#include "servermd.h"
-#include "extnsionst.h"
-#include "dixfont.h"
-#include "dispatch.h"
-#include "swaprep.h"
-#include "swapreq.h"
-#include "dixevents.h"
-#ifdef XCSECURITY
-#define _SECURITY_SERVER
-#include "extensions/security.h"
-#endif
-#ifdef XAPPGROUP
-#include "extensions/Xagsrv.h"
-#endif
-
-#define mskcnt ((MAXCLIENTS + 31) / 32)
-#define BITMASK(i) (1 << ((i) & 31))
-#define MASKIDX(i) ((i) >> 5)
-#define MASKWORD(buf, i) buf[MASKIDX(i)]
-#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i)
-#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i)
-#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i))
-
-extern WindowPtr *WindowTable;
-extern xConnSetupPrefix connSetupPrefix;
-extern char *ConnectionInfo;
-
-Selection *CurrentSelections;
-int NumCurrentSelections;
-
-extern CARD32 defaultScreenSaverTime;
-extern CARD32 defaultScreenSaverInterval;
-extern int  defaultScreenSaverBlanking;
-extern int  defaultScreenSaverAllowExposures;
-static ClientPtr grabClient;
-#define GrabNone 0
-#define GrabActive 1
-#define GrabKickout 2
-static int grabState = GrabNone;
-static long grabWaiters[mskcnt];
-CallbackListPtr ServerGrabCallback = NULL;
-HWEventQueuePtr checkForInput[2];
-extern int connBlockScreenStart;
-
-#ifdef XKB
-extern Bool noXkbExtension;
-#endif
-
-static void KillAllClients(
-#if NeedFunctionPrototypes
-    void
-#endif
-);
-
-static void DeleteClientFromAnySelections(
-#if NeedFunctionPrototypes
-    ClientPtr /*client*/
-#endif
-);
-
-#ifdef LBX
-extern unsigned long  StandardRequestLength();
-#endif
-
-static int nextFreeClientID; /* always MIN free client ID */
-
-static int     nClients;       /* number of authorized clients */
-
-CallbackListPtr ClientStateCallback;
-char dispatchException = 0;
-char isItTimeToYield;
-
-/* Various of the DIX function interfaces were not designed to allow
- * the client->errorValue to be set on BadValue and other errors.
- * Rather than changing interfaces and breaking untold code we introduce
- * a new global that dispatch can use.
- */
-XID clientErrorValue;   /* XXX this is a kludge */
-
-#define SAME_SCREENS(a, b) (\
-    (a.pScreen == b.pScreen))
-
-void
-SetInputCheck(c0, c1)
-    HWEventQueuePtr c0, c1;
-{
-    checkForInput[0] = c0;
-    checkForInput[1] = c1;
-}
-
-void
-UpdateCurrentTime()
-{
-    TimeStamp systime;
-
-    /* To avoid time running backwards, we must call GetTimeInMillis before
-     * calling ProcessInputEvents.
-     */
-    systime.months = currentTime.months;
-    systime.milliseconds = GetTimeInMillis();
-    if (systime.milliseconds < currentTime.milliseconds)
-       systime.months++;
-    if (*checkForInput[0] != *checkForInput[1])
-       ProcessInputEvents();
-    if (CompareTimeStamps(systime, currentTime) == LATER)
-       currentTime = systime;
-}
-
-/* Like UpdateCurrentTime, but can't call ProcessInputEvents */
-void
-UpdateCurrentTimeIf()
-{
-    TimeStamp systime;
-
-    systime.months = currentTime.months;
-    systime.milliseconds = GetTimeInMillis();
-    if (systime.milliseconds < currentTime.milliseconds)
-       systime.months++;
-    if (*checkForInput[0] == *checkForInput[1])
-       currentTime = systime;
-}
-
-void
-InitSelections()
-{
-    if (CurrentSelections)
-       xfree(CurrentSelections);
-    CurrentSelections = (Selection *)NULL;
-    NumCurrentSelections = 0;
-}
-
-void 
-FlushClientCaches(id)
-    XID id;
-{
-    int i;
-    register ClientPtr client;
-
-    client = clients[CLIENT_ID(id)];
-    if (client == NullClient)
-        return ;
-    for (i=0; i<currentMaxClients; i++)
-    {
-       client = clients[i];
-        if (client != NullClient)
-       {
-            if (client->lastDrawableID == id)
-           {
-               client->lastDrawableID = WindowTable[0]->drawable.id;
-               client->lastDrawable = (DrawablePtr)WindowTable[0];
-           }
-            else if (client->lastGCID == id)
-           {
-                client->lastGCID = INVALID;
-               client->lastGC = (GCPtr)NULL;
-           }
-       }
-    }
-}
-
-#define MAJOROP ((xReq *)client->requestBuffer)->reqType
-
-void
-Dispatch()
-{
-    register int        *clientReady;     /* array of request ready clients */
-    register int       result;
-    register ClientPtr client;
-    register int       nready;
-    register HWEventQueuePtr* icheck = checkForInput;
-
-    nextFreeClientID = 1;
-    InitSelections();
-    nClients = 0;
-
-    clientReady = (int *) ALLOCATE_LOCAL(sizeof(int) * MaxClients);
-    if (!clientReady)
-       return;
-
-    while (!dispatchException)
-    {
-        if (*icheck[0] != *icheck[1])
-       {
-           ProcessInputEvents();
-           FlushIfCriticalOutputPending();
-       }
-
-       nready = WaitForSomething(clientReady);
-
-       /***************** 
-       *  Handle events in round robin fashion, doing input between 
-       *  each round 
-       *****************/
-
-       while (!dispatchException && (--nready >= 0))
-       {
-           client = clients[clientReady[nready]];
-           if (! client)
-           {
-               /* KillClient can cause this to happen */
-               continue;
-           }
-           /* GrabServer activation can cause this to be true */
-           if (grabState == GrabKickout)
-           {
-               grabState = GrabActive;
-               break;
-           }
-           isItTimeToYield = FALSE;
-            requestingClient = client;
-           while (!isItTimeToYield)
-           {
-               if (*icheck[0] != *icheck[1])
-               {
-                   ProcessInputEvents();
-                   FlushIfCriticalOutputPending();
-               }
-          
-               /* now, finally, deal with client requests */
-
-               result = ReadRequestFromClient(client);
-               if (result <= 0) 
-               {
-                   if (result < 0)
-                       CloseDownClient(client);
-                   break;
-               }
-
-               client->sequence++;
-#ifdef DEBUG
-               if (client->requestLogIndex == MAX_REQUEST_LOG)
-                   client->requestLogIndex = 0;
-               client->requestLog[client->requestLogIndex] = MAJOROP;
-               client->requestLogIndex++;
-#endif
-               if (result > (MAX_BIG_REQUEST_SIZE << 2))
-                   result = BadLength;
-               else
-                   result = (* client->requestVector[MAJOROP])(client);
-           
-               if (result != Success) 
-               {
-                   if (client->noClientException != Success)
-                        CloseDownClient(client);
-                    else
-                       SendErrorToClient(client, MAJOROP,
-                                         MinorOpcodeOfRequest(client),
-                                         client->errorValue, result);
-                   break;
-               }
-           }
-           FlushAllOutput();
-
-           requestingClient = NULL;
-       }
-       dispatchException &= ~DE_PRIORITYCHANGE;
-    }
-    KillAllClients();
-    DEALLOCATE_LOCAL(clientReady);
-    dispatchException &= ~DE_RESET;
-}
-
-#undef MAJOROP
-
-/*ARGSUSED*/
-int
-ProcBadRequest(client)
-    ClientPtr client;
-{
-    return (BadRequest);
-}
-
-int
-ProcCreateWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pParent, pWin;
-    REQUEST(xCreateWindowReq);
-    int result;
-    int len;
-
-    REQUEST_AT_LEAST_SIZE(xCreateWindowReq);
-    
-    LEGAL_NEW_RESOURCE(stuff->wid, client);
-    if (!(pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client,
-                                                   SecurityWriteAccess)))
-        return BadWindow;
-    len = client->req_len - (sizeof(xCreateWindowReq) >> 2);
-    if (Ones(stuff->mask) != len)
-        return BadLength;
-    if (!stuff->width || !stuff->height)
-    {
-       client->errorValue = 0;
-        return BadValue;
-    }
-    pWin = CreateWindow(stuff->wid, pParent, stuff->x,
-                             stuff->y, stuff->width, stuff->height, 
-                             stuff->borderWidth, stuff->class,
-                             stuff->mask, (XID *) &stuff[1], 
-                             (int)stuff->depth, 
-                             client, stuff->visual, &result);
-    if (pWin)
-    {
-       Mask mask = pWin->eventMask;
-
-       pWin->eventMask = 0; /* subterfuge in case AddResource fails */
-       if (!AddResource(stuff->wid, RT_WINDOW, (pointer)pWin))
-           return BadAlloc;
-       pWin->eventMask = mask;
-    }
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-        return(result);
-}
-
-int
-ProcChangeWindowAttributes(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xChangeWindowAttributesReq);
-    register int result;
-    int len;
-
-    REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                          SecurityWriteAccess);
-    if (!pWin)
-        return(BadWindow);
-    len = client->req_len - (sizeof(xChangeWindowAttributesReq) >> 2);
-    if (len != Ones(stuff->valueMask))
-        return BadLength;
-    result =  ChangeWindowAttributes(pWin, 
-                                 stuff->valueMask, 
-                                 (XID *) &stuff[1], 
-                                 client);
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-        return(result);
-}
-
-int
-ProcGetWindowAttributes(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-    xGetWindowAttributesReply wa;
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    GetWindowAttributes(pWin, client, &wa);
-    WriteReplyToClient(client, sizeof(xGetWindowAttributesReply), &wa);
-    return(client->noClientException);
-}
-
-int
-ProcDestroyWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-                                          SecurityDestroyAccess);
-    if (!pWin)
-        return(BadWindow);
-    if (pWin->parent)
-       FreeResource(stuff->id, RT_NONE);
-    return(client->noClientException);
-}
-
-int
-ProcDestroySubwindows(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-                                          SecurityDestroyAccess);
-    if (!pWin)
-        return(BadWindow);
-    DestroySubwindows(pWin, client);
-    return(client->noClientException);
-}
-
-int
-ProcChangeSaveSet(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xChangeSaveSetReq);
-    register int result;
-                 
-    REQUEST_SIZE_MATCH(xChangeSaveSetReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    if (client->clientAsMask == (CLIENT_BITS(pWin->drawable.id)))
-        return BadMatch;
-    if ((stuff->mode == SetModeInsert) || (stuff->mode == SetModeDelete))
-    {
-        result = AlterSaveSetForClient(client, pWin, stuff->mode);
-       if (client->noClientException != Success)
-           return(client->noClientException);
-       else
-            return(result);
-    }
-    else
-    {
-       client->errorValue = stuff->mode;
-       return( BadValue );
-    }
-}
-
-int
-ProcReparentWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin, pParent;
-    REQUEST(xReparentWindowReq);
-    register int result;
-
-    REQUEST_SIZE_MATCH(xReparentWindowReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                          SecurityWriteAccess);
-    if (!pWin)
-        return(BadWindow);
-    pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client,
-                                             SecurityWriteAccess);
-    if (!pParent)
-        return(BadWindow);
-    if (SAME_SCREENS(pWin->drawable, pParent->drawable))
-    {
-        if ((pWin->backgroundState == ParentRelative) &&
-            (pParent->drawable.depth != pWin->drawable.depth))
-            return BadMatch;
-       if ((pWin->drawable.class != InputOnly) &&
-           (pParent->drawable.class == InputOnly))
-           return BadMatch;
-        result =  ReparentWindow(pWin, pParent, 
-                        (short)stuff->x, (short)stuff->y, client);
-       if (client->noClientException != Success)
-            return(client->noClientException);
-       else
-            return(result);
-    }
-    else 
-        return (BadMatch);
-}
-
-int
-ProcMapWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    MapWindow(pWin, client);
-           /* update cache to say it is mapped */
-    return(client->noClientException);
-}
-
-int
-ProcMapSubwindows(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
-                                           SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    MapSubwindows(pWin, client);
-           /* update cache to say it is mapped */
-    return(client->noClientException);
-}
-
-int
-ProcUnmapWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
-                                           SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    UnmapWindow(pWin, FALSE);
-           /* update cache to say it is mapped */
-    return(client->noClientException);
-}
-
-int
-ProcUnmapSubwindows(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client,
-                                           SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    UnmapSubwindows(pWin);
-    return(client->noClientException);
-}
-
-int
-ProcConfigureWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xConfigureWindowReq);
-    register int result;
-    int len;
-
-    REQUEST_AT_LEAST_SIZE(xConfigureWindowReq);
-    pWin = (WindowPtr)SecurityLookupWindow( stuff->window, client,
-                                           SecurityWriteAccess);
-    if (!pWin)
-        return(BadWindow);
-    len = client->req_len - (sizeof(xConfigureWindowReq) >> 2);
-    if (Ones((Mask)stuff->mask) != len)
-        return BadLength;
-    result =  ConfigureWindow(pWin, (Mask)stuff->mask, (XID *) &stuff[1], 
-                             client);
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-        return(result);
-}
-
-int
-ProcCirculateWindow(client)
-    register ClientPtr client;
-{
-    register WindowPtr pWin;
-    REQUEST(xCirculateWindowReq);
-
-    REQUEST_SIZE_MATCH(xCirculateWindowReq);
-    if ((stuff->direction != RaiseLowest) &&
-       (stuff->direction != LowerHighest))
-    {
-       client->errorValue = stuff->direction;
-        return BadValue;
-    }
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                          SecurityWriteAccess);
-    if (!pWin)
-        return(BadWindow);
-    CirculateWindow(pWin, (int)stuff->direction, client);
-    return(client->noClientException);
-}
-
-int
-GetGeometry(client, rep)
-    register ClientPtr client;
-    xGetGeometryReply *rep;
-{
-    register DrawablePtr pDraw;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->id, client, SecurityReadAccess);
-    rep->type = X_Reply;
-    rep->length = 0;
-    rep->sequenceNumber = client->sequence;
-    rep->root = WindowTable[pDraw->pScreen->myNum]->drawable.id;
-    rep->depth = pDraw->depth;
-    rep->width = pDraw->width;
-    rep->height = pDraw->height;
-
-    /* XXX - Because the pixmap-implementation of the multibuffer extension 
-     *       may have the buffer-id's drawable resource value be a pointer
-     *       to the buffer's window instead of the buffer itself
-     *       (this happens if the buffer is the displayed buffer),
-     *       we also have to check that the id matches before we can
-     *       truly say that it is a DRAWABLE_WINDOW.
-     */
-
-    if ((pDraw->type == UNDRAWABLE_WINDOW) ||
-        ((pDraw->type == DRAWABLE_WINDOW) && (stuff->id == pDraw->id)))
-    {
-        register WindowPtr pWin = (WindowPtr)pDraw;
-       rep->x = pWin->origin.x - wBorderWidth (pWin);
-       rep->y = pWin->origin.y - wBorderWidth (pWin);
-       rep->borderWidth = pWin->borderWidth;
-    }
-    else /* DRAWABLE_PIXMAP or DRAWABLE_BUFFER */
-    {
-       rep->x = rep->y = rep->borderWidth = 0;
-    }
-
-    return Success;
-}
-
-
-int
-ProcGetGeometry(client)
-    register ClientPtr client;
-{
-    xGetGeometryReply rep;
-    int status;
-
-    if ((status = GetGeometry(client, &rep)) != Success)
-       return status;
-
-    WriteReplyToClient(client, sizeof(xGetGeometryReply), &rep);
-    return(client->noClientException);
-}
-
-
-int
-ProcQueryTree(client)
-    register ClientPtr client;
-{
-
-    xQueryTreeReply reply;
-    int numChildren = 0;
-    register WindowPtr pChild, pWin, pHead;
-    Window  *childIDs = (Window *)NULL;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    reply.type = X_Reply;
-    reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id;
-    reply.sequenceNumber = client->sequence;
-    if (pWin->parent)
-       reply.parent = pWin->parent->drawable.id;
-    else
-        reply.parent = (Window)None;
-
-    pHead = RealChildHead(pWin);
-    for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib)
-       numChildren++;
-    if (numChildren)
-    {
-       int curChild = 0;
-
-       childIDs = (Window *) ALLOCATE_LOCAL(numChildren * sizeof(Window));
-       if (!childIDs)
-           return BadAlloc;
-       for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib)
-           childIDs[curChild++] = pChild->drawable.id;
-    }
-    
-    reply.nChildren = numChildren;
-    reply.length = (numChildren * sizeof(Window)) >> 2;
-    
-    WriteReplyToClient(client, sizeof(xQueryTreeReply), &reply);
-    if (numChildren)
-    {
-       client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-       WriteSwappedDataToClient(client, numChildren * sizeof(Window), childIDs);
-       DEALLOCATE_LOCAL(childIDs);
-    }
-
-    return(client->noClientException);
-}
-
-int
-ProcInternAtom(client)
-    register ClientPtr client;
-{
-    Atom atom;
-    char *tchar;
-    REQUEST(xInternAtomReq);
-
-    REQUEST_FIXED_SIZE(xInternAtomReq, stuff->nbytes);
-    if ((stuff->onlyIfExists != xTrue) && (stuff->onlyIfExists != xFalse))
-    {
-       client->errorValue = stuff->onlyIfExists;
-        return(BadValue);
-    }
-    tchar = (char *) &stuff[1];
-    atom = MakeAtom(tchar, stuff->nbytes, !stuff->onlyIfExists);
-    if (atom != BAD_RESOURCE)
-    {
-       xInternAtomReply reply;
-       reply.type = X_Reply;
-       reply.length = 0;
-       reply.sequenceNumber = client->sequence;
-       reply.atom = atom;
-       WriteReplyToClient(client, sizeof(xInternAtomReply), &reply);
-       return(client->noClientException);
-    }
-    else
-       return (BadAlloc);
-}
-
-int
-ProcGetAtomName(client)
-    register ClientPtr client;
-{
-    char *str;
-    xGetAtomNameReply reply;
-    int len;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    if ( (str = NameForAtom(stuff->id)) )
-    {
-       len = strlen(str);
-       reply.type = X_Reply;
-       reply.length = (len + 3) >> 2;
-       reply.sequenceNumber = client->sequence;
-       reply.nameLength = len;
-       WriteReplyToClient(client, sizeof(xGetAtomNameReply), &reply);
-       (void)WriteToClient(client, len, str);
-       return(client->noClientException);
-    }
-    else 
-    { 
-       client->errorValue = stuff->id;
-       return (BadAtom);
-    }
-}
-
-#ifdef K5AUTH
-extern int k5_bad();
-#endif
-
-int
-ProcSetSelectionOwner(client)
-    register ClientPtr client;
-{
-    WindowPtr pWin;
-    TimeStamp time;
-    REQUEST(xSetSelectionOwnerReq);
-
-    REQUEST_SIZE_MATCH(xSetSelectionOwnerReq);
-    UpdateCurrentTime();
-    time = ClientTimeToServerTime(stuff->time);
-
-    /* If the client's time stamp is in the future relative to the server's
-       time stamp, do not set the selection, just return success. */
-    if (CompareTimeStamps(time, currentTime) == LATER)
-       return Success;
-    if (stuff->window != None)
-    {
-        pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                              SecurityReadAccess);
-        if (!pWin)
-            return(BadWindow);
-    }
-    else
-        pWin = (WindowPtr)None;
-    if (ValidAtom(stuff->selection))
-    {
-       int i = 0;
-
-       /*
-        * First, see if the selection is already set... 
-        */
-       while ((i < NumCurrentSelections) && 
-              CurrentSelections[i].selection != stuff->selection) 
-            i++;
-        if (i < NumCurrentSelections)
-        {        
-           xEvent event;
-
-           /* If the timestamp in client's request is in the past relative
-               to the time stamp indicating the last time the owner of the
-               selection was set, do not set the selection, just return 
-               success. */
-            if (CompareTimeStamps(time, CurrentSelections[i].lastTimeChanged)
-               == EARLIER)
-               return Success;
-           if (CurrentSelections[i].client &&
-               (!pWin || (CurrentSelections[i].client != client)))
-           {
-               event.u.u.type = SelectionClear;
-               event.u.selectionClear.time = time.milliseconds;
-               event.u.selectionClear.window = CurrentSelections[i].window;
-               event.u.selectionClear.atom = CurrentSelections[i].selection;
-               (void) TryClientEvents (CurrentSelections[i].client, &event, 1,
-                               NoEventMask, NoEventMask /* CantBeFiltered */,
-                               NullGrab);
-           }
-       }
-       else
-       {
-           /*
-            * It doesn't exist, so add it...
-            */
-           Selection *newsels;
-
-           if (i == 0)
-               newsels = (Selection *)xalloc(sizeof(Selection));
-           else
-               newsels = (Selection *)xrealloc(CurrentSelections,
-                           (NumCurrentSelections + 1) * sizeof(Selection));
-           if (!newsels)
-               return BadAlloc;
-           NumCurrentSelections++;
-           CurrentSelections = newsels;
-           CurrentSelections[i].selection = stuff->selection;
-       }
-        CurrentSelections[i].lastTimeChanged = time;
-       CurrentSelections[i].window = stuff->window;
-       CurrentSelections[i].pWin = pWin;
-       CurrentSelections[i].client = (pWin ? client : NullClient);
-       return (client->noClientException);
-    }
-    else 
-    {
-       client->errorValue = stuff->selection;
-        return (BadAtom);
-    }
-}
-
-int
-ProcGetSelectionOwner(client)
-    register ClientPtr client;
-{
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    if (ValidAtom(stuff->id))
-    {
-       int i;
-        xGetSelectionOwnerReply reply;
-
-       i = 0;
-        while ((i < NumCurrentSelections) && 
-              CurrentSelections[i].selection != stuff->id) i++;
-        reply.type = X_Reply;
-       reply.length = 0;
-       reply.sequenceNumber = client->sequence;
-        if (i < NumCurrentSelections)
-            reply.owner = CurrentSelections[i].window;
-        else
-            reply.owner = None;
-        WriteReplyToClient(client, sizeof(xGetSelectionOwnerReply), &reply);
-        return(client->noClientException);
-    }
-    else            
-    {
-       client->errorValue = stuff->id;
-        return (BadAtom); 
-    }
-}
-
-int
-ProcConvertSelection(client)
-    register ClientPtr client;
-{
-    Bool paramsOkay;
-    xEvent event;
-    WindowPtr pWin;
-    REQUEST(xConvertSelectionReq);
-
-    REQUEST_SIZE_MATCH(xConvertSelectionReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->requestor, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-
-    paramsOkay = (ValidAtom(stuff->selection) && ValidAtom(stuff->target));
-    if (stuff->property != None)
-       paramsOkay &= ValidAtom(stuff->property);
-    if (paramsOkay)
-    {
-       int i;
-
-       i = 0;
-       while ((i < NumCurrentSelections) && 
-              CurrentSelections[i].selection != stuff->selection) i++;
-       if ((i < NumCurrentSelections) && 
-           (CurrentSelections[i].window != None)
-#ifdef XCSECURITY
-           && (!client->CheckAccess ||
-               (* client->CheckAccess)(client, CurrentSelections[i].window,
-                                       RT_WINDOW, SecurityReadAccess,
-                                       CurrentSelections[i].pWin))
-#endif
-           )
-       {        
-           event.u.u.type = SelectionRequest;
-           event.u.selectionRequest.time = stuff->time;
-           event.u.selectionRequest.owner = 
-                       CurrentSelections[i].window;
-           event.u.selectionRequest.requestor = stuff->requestor;
-           event.u.selectionRequest.selection = stuff->selection;
-           event.u.selectionRequest.target = stuff->target;
-           event.u.selectionRequest.property = stuff->property;
-           if (TryClientEvents(
-               CurrentSelections[i].client, &event, 1, NoEventMask,
-               NoEventMask /* CantBeFiltered */, NullGrab))
-               return (client->noClientException);
-       }
-       event.u.u.type = SelectionNotify;
-       event.u.selectionNotify.time = stuff->time;
-       event.u.selectionNotify.requestor = stuff->requestor;
-       event.u.selectionNotify.selection = stuff->selection;
-       event.u.selectionNotify.target = stuff->target;
-       event.u.selectionNotify.property = None;
-       (void) TryClientEvents(client, &event, 1, NoEventMask,
-                              NoEventMask /* CantBeFiltered */, NullGrab);
-       return (client->noClientException);
-    }
-    else 
-    {
-       client->errorValue = stuff->property;
-        return (BadAtom);
-    }
-}
-
-int
-ProcGrabServer(client)
-    register ClientPtr client;
-{
-    REQUEST_SIZE_MATCH(xReq);
-    if (grabState != GrabNone && client != grabClient)
-    {
-       ResetCurrentRequest(client);
-       client->sequence--;
-       BITSET(grabWaiters, client->index);
-       IgnoreClient(client);
-       return(client->noClientException);
-    }
-    OnlyListenToOneClient(client);
-    grabState = GrabKickout;
-    grabClient = client;
-
-    if (ServerGrabCallback)
-    {
-       ServerGrabInfoRec grabinfo;
-       grabinfo.client = client;
-       grabinfo.grabstate  = SERVER_GRABBED;
-       CallCallbacks(&ServerGrabCallback, (pointer)&grabinfo);
-    }
-
-    return(client->noClientException);
-}
-
-static void
-#if NeedFunctionPrototypes
-UngrabServer(ClientPtr client)
-#else
-UngrabServer(client)
-    ClientPtr client;
-#endif
-{
-    int i;
-
-    grabState = GrabNone;
-    ListenToAllClients();
-    for (i = mskcnt; --i >= 0 && !grabWaiters[i]; )
-       ;
-    if (i >= 0)
-    {
-       i <<= 5;
-       while (!GETBIT(grabWaiters, i))
-           i++;
-       BITCLEAR(grabWaiters, i);
-       AttendClient(clients[i]);
-    }
-
-    if (ServerGrabCallback)
-    {
-       ServerGrabInfoRec grabinfo;
-       grabinfo.client = client;
-       grabinfo.grabstate  = SERVER_UNGRABBED;
-       CallCallbacks(&ServerGrabCallback, (pointer)&grabinfo);
-    }
-}
-
-int
-ProcUngrabServer(client)
-    register ClientPtr client;
-{
-    REQUEST_SIZE_MATCH(xReq);
-    UngrabServer(client);
-    return(client->noClientException);
-}
-
-int
-ProcTranslateCoords(client)
-    register ClientPtr client;
-{
-    REQUEST(xTranslateCoordsReq);
-
-    register WindowPtr pWin, pDst;
-    xTranslateCoordsReply rep;
-
-    REQUEST_SIZE_MATCH(xTranslateCoordsReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->srcWid, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-    pDst = (WindowPtr)SecurityLookupWindow(stuff->dstWid, client,
-                                          SecurityReadAccess);
-    if (!pDst)
-        return(BadWindow);
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    if (!SAME_SCREENS(pWin->drawable, pDst->drawable))
-    {
-       rep.sameScreen = xFalse;
-        rep.child = None;
-       rep.dstX = rep.dstY = 0;
-    }
-    else
-    {
-       INT16 x, y;
-       rep.sameScreen = xTrue;
-       rep.child = None;
-       /* computing absolute coordinates -- adjust to destination later */
-       x = pWin->drawable.x + stuff->srcX;
-       y = pWin->drawable.y + stuff->srcY;
-       pWin = pDst->firstChild;
-       while (pWin)
-       {
-#ifdef SHAPE
-           BoxRec  box;
-#endif
-           if ((pWin->mapped) &&
-               (x >= pWin->drawable.x - wBorderWidth (pWin)) &&
-               (x < pWin->drawable.x + (int)pWin->drawable.width +
-                wBorderWidth (pWin)) &&
-               (y >= pWin->drawable.y - wBorderWidth (pWin)) &&
-               (y < pWin->drawable.y + (int)pWin->drawable.height +
-                wBorderWidth (pWin))
-#ifdef SHAPE
-               /* When a window is shaped, a further check
-                * is made to see if the point is inside
-                * borderSize
-                */
-               && (!wBoundingShape(pWin) ||
-                   POINT_IN_REGION(pWin->drawable.pScreen, 
-                                       &pWin->borderSize, x, y, &box))
-#endif
-               )
-            {
-               rep.child = pWin->drawable.id;
-               pWin = (WindowPtr) NULL;
-           }
-           else
-               pWin = pWin->nextSib;
-       }
-       /* adjust to destination coordinates */
-       rep.dstX = x - pDst->drawable.x;
-       rep.dstY = y - pDst->drawable.y;
-    }
-    WriteReplyToClient(client, sizeof(xTranslateCoordsReply), &rep);
-    return(client->noClientException);
-}
-
-int
-ProcOpenFont(client)
-    register ClientPtr client;
-{
-    int        err;
-    REQUEST(xOpenFontReq);
-
-    REQUEST_FIXED_SIZE(xOpenFontReq, stuff->nbytes);
-    client->errorValue = stuff->fid;
-    LEGAL_NEW_RESOURCE(stuff->fid, client);
-    err = OpenFont(client, stuff->fid, (Mask) 0,
-               stuff->nbytes, (char *)&stuff[1]);
-    if (err == Success)
-    {
-       return(client->noClientException);
-    }
-    else
-       return err;
-}
-
-int
-ProcCloseFont(client)
-    register ClientPtr client;
-{
-    FontPtr pFont;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT,
-                                           SecurityDestroyAccess);
-    if ( pFont != (FontPtr)NULL)       /* id was valid */
-    {
-        FreeResource(stuff->id, RT_NONE);
-       return(client->noClientException);
-    }
-    else
-    {
-       client->errorValue = stuff->id;
-        return (BadFont);
-    }
-}
-
-int
-ProcQueryFont(client)
-    register ClientPtr client;
-{
-    xQueryFontReply    *reply;
-    FontPtr pFont;
-    register GC *pGC;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    client->errorValue = stuff->id;            /* EITHER font or gc */
-    pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT,
-                                           SecurityReadAccess);
-    if (!pFont)
-    {
-         /* can't use VERIFY_GC because it might return BadGC */
-       pGC = (GC *) SecurityLookupIDByType(client, stuff->id, RT_GC,
-                                           SecurityReadAccess);
-        if (!pGC)
-       {
-           client->errorValue = stuff->id;
-            return(BadFont);     /* procotol spec says only error is BadFont */
-       }
-       pFont = pGC->font;
-    }
-
-    {
-       xCharInfo       *pmax = FONTINKMAX(pFont);
-       xCharInfo       *pmin = FONTINKMIN(pFont);
-       int             nprotoxcistructs;
-       int             rlength;
-
-       nprotoxcistructs = (
-          pmax->rightSideBearing == pmin->rightSideBearing &&
-          pmax->leftSideBearing == pmin->leftSideBearing &&
-          pmax->descent == pmin->descent &&
-          pmax->ascent == pmin->ascent &&
-          pmax->characterWidth == pmin->characterWidth) ?
-               0 : N2dChars(pFont);
-
-       rlength = sizeof(xQueryFontReply) +
-                    FONTINFONPROPS(FONTCHARSET(pFont)) * sizeof(xFontProp)  +
-                    nprotoxcistructs * sizeof(xCharInfo);
-       reply = (xQueryFontReply *)ALLOCATE_LOCAL(rlength);
-       if(!reply)
-       {
-           return(BadAlloc);
-       }
-
-       reply->type = X_Reply;
-       reply->length = (rlength - sizeof(xGenericReply)) >> 2;
-       reply->sequenceNumber = client->sequence;
-       QueryFont( pFont, reply, nprotoxcistructs);
-
-        WriteReplyToClient(client, rlength, reply);
-       DEALLOCATE_LOCAL(reply);
-       return(client->noClientException);
-    }
-}
-
-int
-ProcQueryTextExtents(client)
-    register ClientPtr client;
-{
-    REQUEST(xQueryTextExtentsReq);
-    xQueryTextExtentsReply reply;
-    FontPtr pFont;
-    GC *pGC;
-    ExtentInfoRec info;
-    unsigned long length;
-
-    REQUEST_AT_LEAST_SIZE(xQueryTextExtentsReq);
-        
-    pFont = (FontPtr)SecurityLookupIDByType(client, stuff->fid, RT_FONT,
-                                           SecurityReadAccess);
-    if (!pFont)
-    {
-        pGC = (GC *)SecurityLookupIDByType(client, stuff->fid, RT_GC,
-                                          SecurityReadAccess);
-        if (!pGC)
-       {
-           client->errorValue = stuff->fid;
-            return(BadFont);
-       }
-       pFont = pGC->font;
-    }
-    length = client->req_len - (sizeof(xQueryTextExtentsReq) >> 2);
-    length = length << 1;
-    if (stuff->oddLength)
-    {
-       if (length == 0)
-           return(BadLength);
-        length--;
-    }
-    if (!QueryTextExtents(pFont, length, (unsigned char *)&stuff[1], &info))
-       return(BadAlloc);
-    reply.type = X_Reply;
-    reply.length = 0;
-    reply.sequenceNumber = client->sequence;
-    reply.drawDirection = info.drawDirection;
-    reply.fontAscent = info.fontAscent;
-    reply.fontDescent = info.fontDescent;
-    reply.overallAscent = info.overallAscent;
-    reply.overallDescent = info.overallDescent;
-    reply.overallWidth = info.overallWidth;
-    reply.overallLeft = info.overallLeft;
-    reply.overallRight = info.overallRight;
-    WriteReplyToClient(client, sizeof(xQueryTextExtentsReply), &reply);
-    return(client->noClientException);
-}
-
-int
-ProcListFonts(client)
-    register ClientPtr client;
-{
-    REQUEST(xListFontsReq);
-
-    REQUEST_FIXED_SIZE(xListFontsReq, stuff->nbytes);
-
-    return ListFonts(client, (unsigned char *) &stuff[1], stuff->nbytes, 
-       stuff->maxNames);
-}
-
-int
-ProcListFontsWithInfo(client)
-    register ClientPtr client;
-{
-    REQUEST(xListFontsWithInfoReq);
-
-    REQUEST_FIXED_SIZE(xListFontsWithInfoReq, stuff->nbytes);
-
-    return StartListFontsWithInfo(client, stuff->nbytes,
-                                 (unsigned char *) &stuff[1], stuff->maxNames);
-}
-
-/*ARGSUSED*/
-int
-dixDestroyPixmap(value, pid)
-    pointer value; /* must conform to DeleteType */
-    XID pid;
-{
-    PixmapPtr pPixmap = (PixmapPtr)value;
-    return (*pPixmap->drawable.pScreen->DestroyPixmap)(pPixmap);
-}
-
-int
-ProcCreatePixmap(client)
-    register ClientPtr client;
-{
-    PixmapPtr pMap;
-    register DrawablePtr pDraw;
-    REQUEST(xCreatePixmapReq);
-    DepthPtr pDepth;
-    register int i;
-
-    REQUEST_SIZE_MATCH(xCreatePixmapReq);
-    client->errorValue = stuff->pid;
-    LEGAL_NEW_RESOURCE(stuff->pid, client);
-    SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->drawable, client,
-                                SecurityReadAccess);
-    if (!stuff->width || !stuff->height)
-    {
-       client->errorValue = 0;
-        return BadValue;
-    }
-    if (stuff->depth != 1)
-    {
-        pDepth = pDraw->pScreen->allowedDepths;
-        for (i=0; i<pDraw->pScreen->numDepths; i++, pDepth++)
-          if (pDepth->depth == stuff->depth)
-               goto CreatePmap;
-       client->errorValue = stuff->depth;
-        return BadValue;
-    }
-CreatePmap:
-    pMap = (PixmapPtr)(*pDraw->pScreen->CreatePixmap)
-               (pDraw->pScreen, stuff->width,
-                stuff->height, stuff->depth);
-    if (pMap)
-    {
-       pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
-       pMap->drawable.id = stuff->pid;
-       if (AddResource(stuff->pid, RT_PIXMAP, (pointer)pMap))
-           return(client->noClientException);
-    }
-    return (BadAlloc);
-}
-
-int
-ProcFreePixmap(client)
-    register ClientPtr client;
-{
-    PixmapPtr pMap;
-
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pMap = (PixmapPtr)SecurityLookupIDByType(client, stuff->id, RT_PIXMAP,
-                                            SecurityDestroyAccess);
-    if (pMap) 
-    {
-       FreeResource(stuff->id, RT_NONE);
-       return(client->noClientException);
-    }
-    else 
-    {
-       client->errorValue = stuff->id;
-       return (BadPixmap);
-    }
-}
-
-int
-ProcCreateGC(client)
-    register ClientPtr client;
-{
-    int error;
-    GC *pGC;
-    register DrawablePtr pDraw;
-    unsigned len;
-    REQUEST(xCreateGCReq);
-
-    REQUEST_AT_LEAST_SIZE(xCreateGCReq);
-    client->errorValue = stuff->gc;
-    LEGAL_NEW_RESOURCE(stuff->gc, client);
-    SECURITY_VERIFY_DRAWABLE (pDraw, stuff->drawable, client,
-                             SecurityReadAccess);
-    len = client->req_len -  (sizeof(xCreateGCReq) >> 2);
-    if (len != Ones(stuff->mask))
-        return BadLength;
-    pGC = (GC *)CreateGC(pDraw, stuff->mask, 
-                        (XID *) &stuff[1], &error);
-    if (error != Success)
-        return error;
-    if (!AddResource(stuff->gc, RT_GC, (pointer)pGC))
-       return (BadAlloc);
-    return(client->noClientException);
-}
-
-int
-ProcChangeGC(client)
-    register ClientPtr client;
-{
-    GC *pGC;
-    REQUEST(xChangeGCReq);
-    int result;
-    unsigned len;
-               
-    REQUEST_AT_LEAST_SIZE(xChangeGCReq);
-    SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityWriteAccess);
-    len = client->req_len -  (sizeof(xChangeGCReq) >> 2);
-    if (len != Ones(stuff->mask))
-        return BadLength;
-    result = dixChangeGC(client, pGC, stuff->mask, (CARD32 *) &stuff[1], 0);
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-    {
-       client->errorValue = clientErrorValue;
-        return(result);
-    }
-}
-
-int
-ProcCopyGC(client)
-    register ClientPtr client;
-{
-    register GC *dstGC;
-    register GC *pGC;
-    int result;
-    REQUEST(xCopyGCReq);
-
-    REQUEST_SIZE_MATCH(xCopyGCReq);
-    SECURITY_VERIFY_GC( pGC, stuff->srcGC, client, SecurityReadAccess);
-    SECURITY_VERIFY_GC( dstGC, stuff->dstGC, client, SecurityWriteAccess);
-    if ((dstGC->pScreen != pGC->pScreen) || (dstGC->depth != pGC->depth))
-        return (BadMatch);    
-    result = CopyGC(pGC, dstGC, stuff->mask);
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-    {
-       client->errorValue = clientErrorValue;
-        return(result);
-    }
-}
-
-int
-ProcSetDashes(client)
-    register ClientPtr client;
-{
-    register GC *pGC;
-    int result;
-    REQUEST(xSetDashesReq);
-
-    REQUEST_FIXED_SIZE(xSetDashesReq, stuff->nDashes);
-    if (stuff->nDashes == 0)
-    {
-        client->errorValue = 0;
-         return BadValue;
-    }
-
-    SECURITY_VERIFY_GC(pGC,stuff->gc, client, SecurityWriteAccess);
-
-    result = SetDashes(pGC, stuff->dashOffset, stuff->nDashes,
-                      (unsigned char *)&stuff[1]);
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-    {
-       client->errorValue = clientErrorValue;
-        return(result);
-    }
-}
-
-int
-ProcSetClipRectangles(client)
-    register ClientPtr client;
-{
-    int        nr;
-    int result;
-    register GC *pGC;
-    REQUEST(xSetClipRectanglesReq);
-
-    REQUEST_AT_LEAST_SIZE(xSetClipRectanglesReq);
-    if ((stuff->ordering != Unsorted) && (stuff->ordering != YSorted) &&
-       (stuff->ordering != YXSorted) && (stuff->ordering != YXBanded))
-    {
-       client->errorValue = stuff->ordering;
-        return BadValue;
-    }
-    SECURITY_VERIFY_GC(pGC,stuff->gc, client, SecurityWriteAccess);
-                
-    nr = (client->req_len << 2) - sizeof(xSetClipRectanglesReq);
-    if (nr & 4)
-       return(BadLength);
-    nr >>= 3;
-    result = SetClipRects(pGC, stuff->xOrigin, stuff->yOrigin,
-                         nr, (xRectangle *)&stuff[1], (int)stuff->ordering);
-    if (client->noClientException != Success)
-        return(client->noClientException);
-    else
-        return(result);
-}
-
-int
-ProcFreeGC(client)
-    register ClientPtr client;
-{
-    register GC *pGC;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    SECURITY_VERIFY_GC(pGC, stuff->id, client, SecurityDestroyAccess);
-    FreeResource(stuff->id, RT_NONE);
-    return(client->noClientException);
-}
-
-int
-ProcClearToBackground(client)
-    register ClientPtr client;
-{
-    REQUEST(xClearAreaReq);
-    register WindowPtr pWin;
-
-    REQUEST_SIZE_MATCH(xClearAreaReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                          SecurityWriteAccess);
-    if (!pWin)
-        return(BadWindow);
-    if (pWin->drawable.class == InputOnly)
-    {
-       client->errorValue = stuff->window;
-       return (BadMatch);
-    }              
-    if ((stuff->exposures != xTrue) && (stuff->exposures != xFalse))
-    {
-       client->errorValue = stuff->exposures;
-        return(BadValue);
-    }
-    (*pWin->drawable.pScreen->ClearToBackground)(pWin, stuff->x, stuff->y,
-                              stuff->width, stuff->height,
-                              (Bool)stuff->exposures);
-    return(client->noClientException);
-}
-
-int
-ProcCopyArea(client)
-    register ClientPtr client;
-{
-    register DrawablePtr pDst;
-    register DrawablePtr pSrc;
-    register GC *pGC;
-    REQUEST(xCopyAreaReq);
-    RegionPtr pRgn;
-
-    REQUEST_SIZE_MATCH(xCopyAreaReq);
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client); 
-    if (stuff->dstDrawable != stuff->srcDrawable)
-    {
-       SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client,
-                                SecurityReadAccess);
-       if ((pDst->pScreen != pSrc->pScreen) || (pDst->depth != pSrc->depth))
-       {
-           client->errorValue = stuff->dstDrawable;
-           return (BadMatch);
-       }
-    }
-    else
-        pSrc = pDst;
-
-    SET_DBE_SRCBUF(pSrc, stuff->srcDrawable);
-
-    pRgn = (*pGC->ops->CopyArea)(pSrc, pDst, pGC, stuff->srcX, stuff->srcY,
-                                stuff->width, stuff->height, 
-                                stuff->dstX, stuff->dstY);
-    if (pGC->graphicsExposures)
-    {
-       (*pDst->pScreen->SendGraphicsExpose)
-               (client, pRgn, stuff->dstDrawable, X_CopyArea, 0);
-       if (pRgn)
-           REGION_DESTROY(pDst->pScreen, pRgn);
-    }
-
-    return(client->noClientException);
-}
-
-int
-ProcCopyPlane(client)
-    register ClientPtr client;
-{
-    register DrawablePtr psrcDraw, pdstDraw;
-    register GC *pGC;
-    REQUEST(xCopyPlaneReq);
-    RegionPtr pRgn;
-
-    REQUEST_SIZE_MATCH(xCopyPlaneReq);
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client);
-    if (stuff->dstDrawable != stuff->srcDrawable)
-    {
-       SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client,
-                                SecurityReadAccess);
-       if (pdstDraw->pScreen != psrcDraw->pScreen)
-       {
-           client->errorValue = stuff->dstDrawable;
-           return (BadMatch);
-       }
-    }
-    else
-        psrcDraw = pdstDraw;
-
-    SET_DBE_SRCBUF(psrcDraw, stuff->srcDrawable);
-
-    /* Check to see if stuff->bitPlane has exactly ONE good bit set */
-    if(stuff->bitPlane == 0 || (stuff->bitPlane & (stuff->bitPlane - 1)) ||
-       (stuff->bitPlane > (1L << (psrcDraw->depth - 1))))
-    {
-       client->errorValue = stuff->bitPlane;
-       return(BadValue);
-    }
-
-    pRgn = (*pGC->ops->CopyPlane)(psrcDraw, pdstDraw, pGC, stuff->srcX, stuff->srcY,
-                                stuff->width, stuff->height, 
-                                stuff->dstX, stuff->dstY, stuff->bitPlane);
-    if (pGC->graphicsExposures)
-    {
-       (*pdstDraw->pScreen->SendGraphicsExpose)
-               (client, pRgn, stuff->dstDrawable, X_CopyPlane, 0);
-       if (pRgn)
-           REGION_DESTROY(pdstDraw->pScreen, pRgn);
-    }
-    return(client->noClientException);
-}
-
-int
-ProcPolyPoint(client)
-    register ClientPtr client;
-{
-    int npoint;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolyPointReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolyPointReq);
-    if ((stuff->coordMode != CoordModeOrigin) && 
-       (stuff->coordMode != CoordModePrevious))
-    {
-       client->errorValue = stuff->coordMode;
-        return BadValue;
-    }
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); 
-    npoint = ((client->req_len << 2) - sizeof(xPolyPointReq)) >> 2;
-    if (npoint)
-        (*pGC->ops->PolyPoint)(pDraw, pGC, stuff->coordMode, npoint,
-                         (xPoint *) &stuff[1]);
-    return (client->noClientException);
-}
-
-int
-ProcPolyLine(client)
-    register ClientPtr client;
-{
-    int npoint;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolyLineReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolyLineReq);
-    if ((stuff->coordMode != CoordModeOrigin) && 
-       (stuff->coordMode != CoordModePrevious))
-    {
-       client->errorValue = stuff->coordMode;
-        return BadValue;
-    }
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    npoint = ((client->req_len << 2) - sizeof(xPolyLineReq)) >> 2;
-    if (npoint > 1)
-       (*pGC->ops->Polylines)(pDraw, pGC, stuff->coordMode, npoint, 
-                             (DDXPointPtr) &stuff[1]);
-    return(client->noClientException);
-}
-
-int
-ProcPolySegment(client)
-    register ClientPtr client;
-{
-    int nsegs;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolySegmentReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolySegmentReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    nsegs = (client->req_len << 2) - sizeof(xPolySegmentReq);
-    if (nsegs & 4)
-       return(BadLength);
-    nsegs >>= 3;
-    if (nsegs)
-        (*pGC->ops->PolySegment)(pDraw, pGC, nsegs, (xSegment *) &stuff[1]);
-    return (client->noClientException);
-}
-
-int
-ProcPolyRectangle (client)
-    register ClientPtr client;
-{
-    int nrects;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolyRectangleReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolyRectangleReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    nrects = (client->req_len << 2) - sizeof(xPolyRectangleReq);
-    if (nrects & 4)
-       return(BadLength);
-    nrects >>= 3;
-    if (nrects)
-        (*pGC->ops->PolyRectangle)(pDraw, pGC, 
-                   nrects, (xRectangle *) &stuff[1]);
-    return(client->noClientException);
-}
-
-int
-ProcPolyArc(client)
-    register ClientPtr client;
-{
-    int                narcs;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolyArcReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolyArcReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    narcs = (client->req_len << 2) - sizeof(xPolyArcReq);
-    if (narcs % sizeof(xArc))
-       return(BadLength);
-    narcs /= sizeof(xArc);
-    if (narcs)
-        (*pGC->ops->PolyArc)(pDraw, pGC, narcs, (xArc *) &stuff[1]);
-    return (client->noClientException);
-}
-
-int
-ProcFillPoly(client)
-    register ClientPtr client;
-{
-    int          things;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xFillPolyReq);
-
-    REQUEST_AT_LEAST_SIZE(xFillPolyReq);
-    if ((stuff->shape != Complex) && (stuff->shape != Nonconvex) &&  
-       (stuff->shape != Convex))
-    {
-       client->errorValue = stuff->shape;
-        return BadValue;
-    }
-    if ((stuff->coordMode != CoordModeOrigin) && 
-       (stuff->coordMode != CoordModePrevious))
-    {
-       client->errorValue = stuff->coordMode;
-        return BadValue;
-    }
-
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    things = ((client->req_len << 2) - sizeof(xFillPolyReq)) >> 2;
-    if (things)
-        (*pGC->ops->FillPolygon) (pDraw, pGC, stuff->shape,
-                        stuff->coordMode, things,
-                        (DDXPointPtr) &stuff[1]);
-    return(client->noClientException);
-}
-
-int
-ProcPolyFillRectangle(client)
-    register ClientPtr client;
-{
-    int             things;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolyFillRectangleReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolyFillRectangleReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    things = (client->req_len << 2) - sizeof(xPolyFillRectangleReq);
-    if (things & 4)
-       return(BadLength);
-    things >>= 3;
-    if (things)
-        (*pGC->ops->PolyFillRect) (pDraw, pGC, things,
-                     (xRectangle *) &stuff[1]);
-    return (client->noClientException);
-}
-
-int
-ProcPolyFillArc(client)
-    register ClientPtr client;
-{
-    int                narcs;
-    register GC *pGC;
-    register DrawablePtr pDraw;
-    REQUEST(xPolyFillArcReq);
-
-    REQUEST_AT_LEAST_SIZE(xPolyFillArcReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    narcs = (client->req_len << 2) - sizeof(xPolyFillArcReq);
-    if (narcs % sizeof(xArc))
-       return(BadLength);
-    narcs /= sizeof(xArc);
-    if (narcs)
-        (*pGC->ops->PolyFillArc) (pDraw, pGC, narcs, (xArc *) &stuff[1]);
-    return (client->noClientException);
-}
-
-/* 64-bit server notes: the protocol restricts padding of images to
- * 8-, 16-, or 32-bits. We would like to have 64-bits for the server
- * to use internally. Removes need for internal alignment checking.
- * All of the PutImage functions could be changed individually, but
- * as currently written, they call other routines which require things
- * to be 64-bit padded on scanlines, so we changed things here.
- * If an image would be padded differently for 64- versus 32-, then
- * copy each scanline to a 64-bit padded scanline.
- * Also, we need to make sure that the image is aligned on a 64-bit
- * boundary, even if the scanlines are padded to our satisfaction.
- */
-int
-ProcPutImage(client)
-    register ClientPtr client;
-{
-    register   GC *pGC;
-    register   DrawablePtr pDraw;
-    long       length;         /* length of scanline server padded */
-    long       lengthProto;    /* length of scanline protocol padded */
-    char       *tmpImage;
-    REQUEST(xPutImageReq);
-
-    REQUEST_AT_LEAST_SIZE(xPutImageReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-    if (stuff->format == XYBitmap)
-    {
-        if ((stuff->depth != 1) ||
-           (stuff->leftPad >= (unsigned int)screenInfo.bitmapScanlinePad))
-            return BadMatch;
-        length             = BitmapBytePad(stuff->width + stuff->leftPad);
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-        lengthProto = BitmapBytePadProto(stuff->width + stuff->leftPad);
-#endif
-    }
-    else if (stuff->format == XYPixmap)
-    {
-        if ((pDraw->depth != stuff->depth) || 
-           (stuff->leftPad >= (unsigned int)screenInfo.bitmapScanlinePad))
-            return BadMatch;
-        length      = BitmapBytePad(stuff->width + stuff->leftPad);
-       length      *= stuff->depth;
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-        lengthProto = BitmapBytePadProto(stuff->width + stuff->leftPad);
-       lengthProto *= stuff->depth;
-#endif
-    }
-    else if (stuff->format == ZPixmap)
-    {
-        if ((pDraw->depth != stuff->depth) || (stuff->leftPad != 0))
-            return BadMatch;
-        length      = PixmapBytePad(stuff->width, stuff->depth);
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-        lengthProto = PixmapBytePadProto(stuff->width, stuff->depth);
-#endif
-    }
-    else
-    {
-       client->errorValue = stuff->format;
-        return BadValue;
-    }
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-    /* handle 64 bit case where protocol may pad to 32 and we want 64 */
-    if ( length != lengthProto ) {
-       register int    i;
-       char            * stuffptr, /* pointer into protocol data */
-                       * tmpptr;   /* new location to copy to */
-
-        if(!(tmpImage = (char *) ALLOCATE_LOCAL(length*stuff->height)))
-            return (BadAlloc);
-    
-       bzero(tmpImage,length*stuff->height);
-    
-       if ( stuff->format == XYPixmap ) {
-           int lineBytes = BitmapBytePad(stuff->width + stuff->leftPad);
-           int lineBytesProto = 
-               BitmapBytePadProto(stuff->width + stuff->leftPad);
-           int depth = stuff->depth;
-
-           stuffptr = (char *)&stuff[1];
-           tmpptr = tmpImage;
-           for ( i = 0; i < stuff->height*stuff->depth;
-               stuffptr += lineBytesProto,tmpptr += lineBytes, i++) 
-               memmove(tmpptr,stuffptr,lineBytesProto);
-       }
-       else {
-           for ( i = 0,stuffptr = (char *)&stuff[1],tmpptr=tmpImage;
-               i < stuff->height;
-               stuffptr += lengthProto,tmpptr += length, i++) 
-               memmove(tmpptr,stuffptr,lengthProto);
-       }
-    }
-
-    /* handle 64-bit case where stuff is not 64-bit aligned */
-    else if ((unsigned long)&stuff[1] & (sizeof(long)-1)) {
-        if(!(tmpImage = (char *) ALLOCATE_LOCAL(length*stuff->height)))
-            return (BadAlloc);
-       memmove(tmpImage,(char *)&stuff[1],length*stuff->height);
-    }
-    else
-       tmpImage = (char *)&stuff[1];
-#else
-    tmpImage = (char *)&stuff[1];
-    lengthProto = length;
-#endif /* INTERNAL_VS_EXTERNAL_PADDING */
-       
-    if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) + 
-       (sizeof(xPutImageReq) >> 2)) != client->req_len)
-       return BadLength;
-
-    (*pGC->ops->PutImage) (pDraw, pGC, stuff->depth, stuff->dstX, stuff->dstY,
-                 stuff->width, stuff->height, 
-                 stuff->leftPad, stuff->format, tmpImage);
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-    /* free up our temporary space if used */
-    if (tmpImage != (char *)&stuff[1])
-        DEALLOCATE_LOCAL(tmpImage);
-#endif /* INTERNAL_VS_EXTERNAL_PADDING */
-
-     return (client->noClientException);
-}
-
-
-int
-DoGetImage(client, format, drawable, x, y, width, height, planemask, im_return)
-    register ClientPtr client;
-    Drawable drawable;
-    int format;
-    int x, y, width, height;
-    Mask planemask;
-    xGetImageReply **im_return;
-{
-    register DrawablePtr pDraw;
-    int                        nlines, linesPerBuf;
-    register int       linesDone;
-    long               widthBytesLine, length;
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-    long               widthBytesLineProto, lengthProto;
-#endif
-    Mask               plane;
-    char               *pBuf;
-    xGetImageReply     xgi;
-    RegionPtr pVisibleRegion = NULL;
-
-    if ((format != XYPixmap) && (format != ZPixmap))
-    {
-       client->errorValue = format;
-        return(BadValue);
-    }
-    SECURITY_VERIFY_DRAWABLE(pDraw, drawable, client, SecurityReadAccess);
-    if(pDraw->type == DRAWABLE_WINDOW)
-    {
-      if( /* check for being viewable */
-        !((WindowPtr) pDraw)->realized ||
-         /* check for being on screen */
-         pDraw->x + x < 0 ||
-        pDraw->x + x + width > pDraw->pScreen->width ||
-         pDraw->y + y < 0 ||
-         pDraw->y + y + height > pDraw->pScreen->height ||
-          /* check for being inside of border */
-         x < - wBorderWidth((WindowPtr)pDraw) ||
-         x + width > wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width ||
-         y < -wBorderWidth((WindowPtr)pDraw) ||
-         y + height > wBorderWidth ((WindowPtr)pDraw) + (int)pDraw->height
-        )
-           return(BadMatch);
-       xgi.visual = wVisual (((WindowPtr) pDraw));
-    }
-    else
-    {
-      if(x < 0 ||
-         x+width > (int)pDraw->width ||
-         y < 0 ||
-         y+height > (int)pDraw->height
-        )
-           return(BadMatch);
-       xgi.visual = None;
-    }
-
-    SET_DBE_SRCBUF(pDraw, drawable);
-
-    xgi.type = X_Reply;
-    xgi.sequenceNumber = client->sequence;
-    xgi.depth = pDraw->depth;
-    if(format == ZPixmap)
-    {
-       widthBytesLine = PixmapBytePad(width, pDraw->depth);
-       length = widthBytesLine * height;
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-       widthBytesLineProto = PixmapBytePadProto(width, pDraw->depth);
-       lengthProto         = widthBytesLineProto * height;
-#endif
-    }
-    else 
-    {
-       widthBytesLine = BitmapBytePad(width);
-       plane = ((Mask)1) << (pDraw->depth - 1);
-       /* only planes asked for */
-       length = widthBytesLine * height *
-                Ones(planemask & (plane | (plane - 1)));
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-       widthBytesLineProto = BitmapBytePadProto(width);
-       lengthProto = widthBytesLineProto * height *
-                Ones(planemask & (plane | (plane - 1)));
-#endif
-    }
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-    xgi.length = lengthProto;
-#else
-    xgi.length = length;
-#endif
-
-    if (im_return) {
-       pBuf = (char *)xalloc(sz_xGetImageReply + length);
-       if (!pBuf)
-           return (BadAlloc);
-       if (widthBytesLine == 0)
-           linesPerBuf = 0;
-       else
-           linesPerBuf = height;
-       *im_return = (xGetImageReply *)pBuf;
-       *(xGetImageReply *)pBuf = xgi;
-       pBuf += sz_xGetImageReply;
-    } else {
-       xgi.length = (xgi.length + 3) >> 2;
-       if (widthBytesLine == 0 || height == 0)
-           linesPerBuf = 0;
-       else if (widthBytesLine >= IMAGE_BUFSIZE)
-           linesPerBuf = 1;
-       else
-       {
-           linesPerBuf = IMAGE_BUFSIZE / widthBytesLine;
-           if (linesPerBuf > height)
-               linesPerBuf = height;
-       }
-       length = linesPerBuf * widthBytesLine;
-       if (linesPerBuf < height)
-       {
-           /* we have to make sure intermediate buffers don't need padding */
-           while ((linesPerBuf > 1) &&
-                  (length & ((1 << LOG2_BYTES_PER_SCANLINE_PAD)-1)))
-           {
-               linesPerBuf--;
-               length -= widthBytesLine;
-           }
-           while (length & ((1 << LOG2_BYTES_PER_SCANLINE_PAD)-1))
-           {
-               linesPerBuf++;
-               length += widthBytesLine;
-           }
-       }
-       if(!(pBuf = (char *) ALLOCATE_LOCAL(length)))
-           return (BadAlloc);
-       WriteReplyToClient(client, sizeof (xGetImageReply), &xgi);
-    }
-
-#ifdef XCSECURITY
-    if (client->trustLevel != XSecurityClientTrusted &&
-       pDraw->type == DRAWABLE_WINDOW)
-    {
-       pVisibleRegion = NotClippedByChildren((WindowPtr)pDraw);
-       if (pVisibleRegion)
-       {
-           REGION_TRANSLATE(pScreen, pVisibleRegion, -pDraw->x, -pDraw->y);
-       }
-    }
-#endif
-
-    if (linesPerBuf == 0)
-    {
-       /* nothing to do */
-    }
-    else if (format == ZPixmap)
-    {
-        linesDone = 0;
-        while (height - linesDone > 0)
-        {
-           nlines = min(linesPerBuf, height - linesDone);
-           (*pDraw->pScreen->GetImage) (pDraw,
-                                        x,
-                                        y + linesDone,
-                                        width, 
-                                        nlines,
-                                        format,
-                                        planemask,
-                                        (pointer) pBuf);
-#ifdef XCSECURITY
-           if (pVisibleRegion)
-               SecurityCensorImage(client, pVisibleRegion, widthBytesLine,
-                       pDraw, x, y + linesDone, width, 
-                       nlines, format, pBuf);
-#endif
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-           /* for 64-bit server, convert image to pad to 32 bits */
-           if ( widthBytesLine != widthBytesLineProto ) {
-               register char * bufPtr, * protoPtr;
-               register int i;
-
-               for (i = 1,
-                    bufPtr = pBuf + widthBytesLine,
-                    protoPtr = pBuf + widthBytesLineProto;
-                    i < nlines;
-                    bufPtr += widthBytesLine,
-                    protoPtr += widthBytesLineProto, 
-                    i++)
-                   memmove(protoPtr, bufPtr, widthBytesLineProto);
-           }
-#endif
-           /* Note that this is NOT a call to WriteSwappedDataToClient,
-               as we do NOT byte swap */
-           if (!im_return)
-/* Don't split me, gcc pukes when you do */
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-               (void)WriteToClient(client,
-                                   (int)(nlines * widthBytesLineProto),
-                                   pBuf);
-#else
-               (void)WriteToClient(client,
-                                   (int)(nlines * widthBytesLine),
-                                   pBuf);
-#endif
-           linesDone += nlines;
-        }
-    }
-    else /* XYPixmap */
-    {
-        for (; plane; plane >>= 1)
-       {
-           if (planemask & plane)
-           {
-               linesDone = 0;
-               while (height - linesDone > 0)
-               {
-                   nlines = min(linesPerBuf, height - linesDone);
-                   (*pDraw->pScreen->GetImage) (pDraw,
-                                                x,
-                                                y + linesDone,
-                                                width, 
-                                                nlines,
-                                                format,
-                                                plane,
-                                                (pointer)pBuf);
-#ifdef XCSECURITY
-                   if (pVisibleRegion)
-                       SecurityCensorImage(client, pVisibleRegion,
-                               widthBytesLine,
-                               pDraw, x, y + linesDone, width, 
-                               nlines, format, pBuf);
-#endif
-
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-                   /* for 64-bit server, convert image to pad to 32 bits */
-                   if ( widthBytesLine != widthBytesLineProto ) {
-                       register char * bufPtr, * protoPtr;
-                       register int i;
-
-                       for (i = 1,
-                            bufPtr = pBuf + widthBytesLine,
-                            protoPtr = pBuf + widthBytesLineProto;
-                            i < nlines;
-                            bufPtr += widthBytesLine,
-                            protoPtr += widthBytesLineProto,
-                            i++)
-                           memmove(protoPtr, bufPtr, widthBytesLineProto);
-                   }
-#endif
-                   /* Note: NOT a call to WriteSwappedDataToClient,
-                      as we do NOT byte swap */
-                   if (im_return) {
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-                       pBuf += nlines * widthBytesLineProto;
-#else
-                       pBuf += nlines * widthBytesLine;
-#endif
-                   } else
-/* Don't split me, gcc pukes when you do */
-#ifdef INTERNAL_VS_EXTERNAL_PADDING
-                       (void)WriteToClient(client,
-                                       (int)(nlines * widthBytesLineProto),
-                                       pBuf);
-#else
-                       (void)WriteToClient(client,
-                                       (int)(nlines * widthBytesLine),
-                                       pBuf);
-#endif
-                   linesDone += nlines;
-               }
-            }
-       }
-    }
-#ifdef XCSECURITY
-    if (pVisibleRegion)
-       REGION_DESTROY(pScreen, pVisibleRegion);
-#endif
-    if (!im_return)
-       DEALLOCATE_LOCAL(pBuf);
-    return (client->noClientException);
-}
-
-int
-ProcGetImage(client)
-    register ClientPtr client;
-{
-    REQUEST(xGetImageReq);
-
-    REQUEST_SIZE_MATCH(xGetImageReq);
-
-    return DoGetImage(client, stuff->format, stuff->drawable,
-                     stuff->x, stuff->y,
-                     (int)stuff->width, (int)stuff->height,
-                     stuff->planeMask, (xGetImageReply **)NULL);
-}
-
-int
-ProcPolyText(client)
-    register ClientPtr client;
-{
-    int        err;
-    REQUEST(xPolyTextReq);
-    DrawablePtr pDraw;
-    GC *pGC;
-
-    REQUEST_AT_LEAST_SIZE(xPolyTextReq);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-
-    err = PolyText(client,
-                  pDraw,
-                  pGC,
-                  (unsigned char *)&stuff[1],
-                  ((unsigned char *) stuff) + (client->req_len << 2),
-                  stuff->x,
-                  stuff->y,
-                  stuff->reqType,
-                  stuff->drawable);
-
-    if (err == Success)
-    {
-       return(client->noClientException);
-    }
-    else
-       return err;
-}
-
-int
-ProcImageText8(client)
-    register ClientPtr client;
-{
-    int        err;
-    register DrawablePtr pDraw;
-    register GC *pGC;
-
-    REQUEST(xImageTextReq);
-
-    REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-
-    err = ImageText(client,
-                   pDraw,
-                   pGC,
-                   stuff->nChars,
-                   (unsigned char *)&stuff[1],
-                   stuff->x,
-                   stuff->y,
-                   stuff->reqType,
-                   stuff->drawable);
-
-    if (err == Success)
-    {
-       return(client->noClientException);
-    }
-    else
-       return err;
-}
-
-int
-ProcImageText16(client)
-    register ClientPtr client;
-{
-    int        err;
-    register DrawablePtr pDraw;
-    register GC *pGC;
-
-    REQUEST(xImageTextReq);
-
-    REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars << 1);
-    VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client);
-
-    err = ImageText(client,
-                   pDraw,
-                   pGC,
-                   stuff->nChars,
-                   (unsigned char *)&stuff[1],
-                   stuff->x,
-                   stuff->y,
-                   stuff->reqType,
-                   stuff->drawable);
-
-    if (err == Success)
-    {
-       return(client->noClientException);
-    }
-    else
-       return err;
-}
-
-
-int
-ProcCreateColormap(client)
-    register ClientPtr client;
-{
-    VisualPtr  pVisual;
-    ColormapPtr        pmap;
-    Colormap   mid;
-    register WindowPtr   pWin;
-    ScreenPtr pScreen;
-    REQUEST(xCreateColormapReq);
-    int i, result;
-
-    REQUEST_SIZE_MATCH(xCreateColormapReq);
-
-    if ((stuff->alloc != AllocNone) && (stuff->alloc != AllocAll))
-    {
-       client->errorValue = stuff->alloc;
-        return(BadValue);
-    }
-    mid = stuff->mid;
-    LEGAL_NEW_RESOURCE(mid, client);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client,
-                                          SecurityReadAccess);
-    if (!pWin)
-        return(BadWindow);
-
-    pScreen = pWin->drawable.pScreen;
-    for (i = 0, pVisual = pScreen->visuals;
-        i < pScreen->numVisuals;
-        i++, pVisual++)
-    {
-       if (pVisual->vid != stuff->visual)
-           continue;
-       result =  CreateColormap(mid, pScreen, pVisual, &pmap,
-                                (int)stuff->alloc, client->index);
-       if (client->noClientException != Success)
-           return(client->noClientException);
-       else
-           return(result);
-    }
-    client->errorValue = stuff->visual;
-    return(BadValue);
-}
-
-int
-ProcFreeColormap(client)
-    register ClientPtr client;
-{
-    ColormapPtr pmap;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pmap = (ColormapPtr )SecurityLookupIDByType(client, stuff->id, RT_COLORMAP,
-                                               SecurityDestroyAccess);
-    if (pmap) 
-    {
-       /* Freeing a default colormap is a no-op */
-       if (!(pmap->flags & IsDefault))
-           FreeResource(stuff->id, RT_NONE);
-       return (client->noClientException);
-    }
-    else 
-    {
-       client->errorValue = stuff->id;
-       return (BadColor);
-    }
-}
-
-
-int
-ProcCopyColormapAndFree(client)
-    register ClientPtr client;
-{
-    Colormap   mid;
-    ColormapPtr        pSrcMap;
-    REQUEST(xCopyColormapAndFreeReq);
-    int result;
-
-    REQUEST_SIZE_MATCH(xCopyColormapAndFreeReq);
-    mid = stuff->mid;
-    LEGAL_NEW_RESOURCE(mid, client);
-    if( (pSrcMap = (ColormapPtr )SecurityLookupIDByType(client,        stuff->srcCmap,
-               RT_COLORMAP, SecurityReadAccess|SecurityWriteAccess)) )
-    {
-       result = CopyColormapAndFree(mid, pSrcMap, client->index);
-       if (client->noClientException != Success)
-            return(client->noClientException);
-       else
-            return(result);
-    }
-    else
-    {
-       client->errorValue = stuff->srcCmap;
-       return(BadColor);
-    }
-}
-
-int
-ProcInstallColormap(client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->id,
-                                           RT_COLORMAP, SecurityReadAccess);
-    if (pcmp)
-    {
-        (*(pcmp->pScreen->InstallColormap)) (pcmp);
-        return (client->noClientException);        
-    }
-    else
-    {
-        client->errorValue = stuff->id;
-        return (BadColor);
-    }
-}
-
-int
-ProcUninstallColormap(client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->id,
-                                       RT_COLORMAP, SecurityReadAccess);
-    if (pcmp)
-    {
-       if(pcmp->mid != pcmp->pScreen->defColormap)
-            (*(pcmp->pScreen->UninstallColormap)) (pcmp);
-        return (client->noClientException);        
-    }
-    else
-    {
-        client->errorValue = stuff->id;
-        return (BadColor);
-    }
-}
-
-int
-ProcListInstalledColormaps(client)
-    register ClientPtr client;
-{
-    xListInstalledColormapsReply *preply; 
-    int nummaps;
-    WindowPtr pWin;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client,
-                                          SecurityReadAccess);
-
-    if (!pWin)
-        return(BadWindow);
-
-    preply = (xListInstalledColormapsReply *) 
-               ALLOCATE_LOCAL(sizeof(xListInstalledColormapsReply) +
-                    pWin->drawable.pScreen->maxInstalledCmaps *
-                    sizeof(Colormap));
-    if(!preply)
-        return(BadAlloc);
-
-    preply->type = X_Reply;
-    preply->sequenceNumber = client->sequence;
-    nummaps = (*pWin->drawable.pScreen->ListInstalledColormaps)
-        (pWin->drawable.pScreen, (Colormap *)&preply[1]);
-    preply->nColormaps = nummaps;
-    preply->length = nummaps;
-    WriteReplyToClient(client, sizeof (xListInstalledColormapsReply), preply);
-    client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-    WriteSwappedDataToClient(client, nummaps * sizeof(Colormap), &preply[1]);
-    DEALLOCATE_LOCAL(preply);
-    return(client->noClientException);
-}
-
-int
-ProcAllocColor(client)
-    register ClientPtr client;
-{
-    ColormapPtr pmap;
-    int        retval;
-    xAllocColorReply acr;
-    REQUEST(xAllocColorReq);
-
-    REQUEST_SIZE_MATCH(xAllocColorReq);
-    pmap = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityWriteAccess);
-    if (pmap)
-    {
-#ifdef LBX
-       /*
-        * If the colormap is grabbed by a proxy, the server will have
-        * to regain control over the colormap.  This AllocColor request
-        * will be handled after the server gets back the colormap control.
-        */
-       if (LbxCheckColorRequest (client, pmap, (xReq *) stuff))
-           return Success;
-#endif
-       acr.type = X_Reply;
-       acr.length = 0;
-       acr.sequenceNumber = client->sequence;
-       acr.red = stuff->red;
-       acr.green = stuff->green;
-       acr.blue = stuff->blue;
-       acr.pixel = 0;
-       if( (retval = AllocColor(pmap, &acr.red, &acr.green, &acr.blue,
-                              &acr.pixel, client->index)) )
-       {
-            if (client->noClientException != Success)
-                return(client->noClientException);
-           else
-               return (retval);
-       }
-        WriteReplyToClient(client, sizeof(xAllocColorReply), &acr);
-       return (client->noClientException);
-
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcAllocNamedColor           (client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xAllocNamedColorReq);
-
-    REQUEST_FIXED_SIZE(xAllocNamedColorReq, stuff->nbytes);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                           RT_COLORMAP, SecurityWriteAccess);
-    if (pcmp)
-    {
-       int             retval;
-
-       xAllocNamedColorReply ancr;
-
-#ifdef LBX
-       /*
-        * If the colormap is grabbed by a proxy, the server will have
-        * to regain control over the colormap.  This AllocNamedColor request
-        * will be handled after the server gets back the colormap control.
-        */
-       if (LbxCheckColorRequest (client, pcmp, (xReq *) stuff))
-           return Success;
-#endif
-       ancr.type = X_Reply;
-       ancr.length = 0;
-       ancr.sequenceNumber = client->sequence;
-
-       if(OsLookupColor(pcmp->pScreen->myNum, (char *)&stuff[1], stuff->nbytes,
-                        &ancr.exactRed, &ancr.exactGreen, &ancr.exactBlue))
-       {
-           ancr.screenRed = ancr.exactRed;
-           ancr.screenGreen = ancr.exactGreen;
-           ancr.screenBlue = ancr.exactBlue;
-           ancr.pixel = 0;
-           if( (retval = AllocColor(pcmp,
-                        &ancr.screenRed, &ancr.screenGreen, &ancr.screenBlue,
-                        &ancr.pixel, client->index)) )
-           {
-                if (client->noClientException != Success)
-                    return(client->noClientException);
-                else
-                   return(retval);
-           }
-            WriteReplyToClient(client, sizeof (xAllocNamedColorReply), &ancr);
-           return (client->noClientException);
-       }
-       else
-           return(BadName);
-       
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcAllocColorCells           (client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xAllocColorCellsReq);
-
-    REQUEST_SIZE_MATCH(xAllocColorCellsReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityWriteAccess);
-    if (pcmp)
-    {
-       xAllocColorCellsReply   accr;
-       int                     npixels, nmasks, retval;
-       long                    length;
-       Pixel                   *ppixels, *pmasks;
-
-#ifdef LBX
-       /*
-        * If the colormap is grabbed by a proxy, the server will have
-        * to regain control over the colormap.  This AllocColorCells request
-        * will be handled after the server gets back the colormap control.
-        */
-       if (LbxCheckColorRequest (client, pcmp, (xReq *) stuff))
-           return Success;
-#endif
-       npixels = stuff->colors;
-       if (!npixels)
-       {
-           client->errorValue = npixels;
-           return (BadValue);
-       }
-       if (stuff->contiguous != xTrue && stuff->contiguous != xFalse)
-       {
-           client->errorValue = stuff->contiguous;
-           return (BadValue);
-       }
-       nmasks = stuff->planes;
-       length = ((long)npixels + (long)nmasks) * sizeof(Pixel);
-       ppixels = (Pixel *)ALLOCATE_LOCAL(length);
-       if(!ppixels)
-            return(BadAlloc);
-       pmasks = ppixels + npixels;
-
-       if( (retval = AllocColorCells(client->index, pcmp, npixels, nmasks, 
-                                   (Bool)stuff->contiguous, ppixels, pmasks)) )
-       {
-           DEALLOCATE_LOCAL(ppixels);
-            if (client->noClientException != Success)
-                return(client->noClientException);
-           else
-               return(retval);
-       }
-       accr.type = X_Reply;
-       accr.length = length >> 2;
-       accr.sequenceNumber = client->sequence;
-       accr.nPixels = npixels;
-       accr.nMasks = nmasks;
-        WriteReplyToClient(client, sizeof (xAllocColorCellsReply), &accr);
-       client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-       WriteSwappedDataToClient(client, length, ppixels);
-       DEALLOCATE_LOCAL(ppixels);
-        return (client->noClientException);        
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcAllocColorPlanes(client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xAllocColorPlanesReq);
-
-    REQUEST_SIZE_MATCH(xAllocColorPlanesReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityWriteAccess);
-    if (pcmp)
-    {
-       xAllocColorPlanesReply  acpr;
-       int                     npixels, retval;
-       long                    length;
-       Pixel                   *ppixels;
-
-#ifdef LBX
-       /*
-        * If the colormap is grabbed by a proxy, the server will have
-        * to regain control over the colormap.  This AllocColorPlanes request
-        * will be handled after the server gets back the colormap control.
-        */
-       if (LbxCheckColorRequest (client, pcmp, (xReq *) stuff))
-           return Success;
-#endif
-       npixels = stuff->colors;
-       if (!npixels)
-       {
-           client->errorValue = npixels;
-           return (BadValue);
-       }
-       if (stuff->contiguous != xTrue && stuff->contiguous != xFalse)
-       {
-           client->errorValue = stuff->contiguous;
-           return (BadValue);
-       }
-       acpr.type = X_Reply;
-       acpr.sequenceNumber = client->sequence;
-       acpr.nPixels = npixels;
-       length = (long)npixels * sizeof(Pixel);
-       ppixels = (Pixel *)ALLOCATE_LOCAL(length);
-       if(!ppixels)
-            return(BadAlloc);
-       if( (retval = AllocColorPlanes(client->index, pcmp, npixels,
-           (int)stuff->red, (int)stuff->green, (int)stuff->blue,
-           (Bool)stuff->contiguous, ppixels,
-           &acpr.redMask, &acpr.greenMask, &acpr.blueMask)) )
-       {
-            DEALLOCATE_LOCAL(ppixels);
-            if (client->noClientException != Success)
-                return(client->noClientException);
-           else
-               return(retval);
-       }
-       acpr.length = length >> 2;
-       WriteReplyToClient(client, sizeof(xAllocColorPlanesReply), &acpr);
-       client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-       WriteSwappedDataToClient(client, length, ppixels);
-       DEALLOCATE_LOCAL(ppixels);
-        return (client->noClientException);        
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcFreeColors          (client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xFreeColorsReq);
-
-    REQUEST_AT_LEAST_SIZE(xFreeColorsReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityWriteAccess);
-    if (pcmp)
-    {
-       int     count;
-        int     retval;
-
-       if(pcmp->flags & AllAllocated)
-           return(BadAccess);
-       count = ((client->req_len << 2)- sizeof(xFreeColorsReq)) >> 2;
-       retval =  FreeColors(pcmp, client->index, count,
-           (Pixel *)&stuff[1], (Pixel)stuff->planeMask);
-        if (client->noClientException != Success)
-            return(client->noClientException);
-        else
-       {
-           client->errorValue = clientErrorValue;
-            return(retval);
-       }
-
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcStoreColors               (client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xStoreColorsReq);
-
-    REQUEST_AT_LEAST_SIZE(xStoreColorsReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityWriteAccess);
-    if (pcmp)
-    {
-       int     count;
-        int     retval;
-
-        count = (client->req_len << 2) - sizeof(xStoreColorsReq);
-       if (count % sizeof(xColorItem))
-           return(BadLength);
-       count /= sizeof(xColorItem);
-       retval = StoreColors(pcmp, count, (xColorItem *)&stuff[1]);
-        if (client->noClientException != Success)
-            return(client->noClientException);
-        else
-       {
-           client->errorValue = clientErrorValue;
-            return(retval);
-       }
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcStoreNamedColor           (client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xStoreNamedColorReq);
-
-    REQUEST_FIXED_SIZE(xStoreNamedColorReq, stuff->nbytes);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityWriteAccess);
-    if (pcmp)
-    {
-       xColorItem      def;
-        int             retval;
-
-       if(OsLookupColor(pcmp->pScreen->myNum, (char *)&stuff[1],
-                        stuff->nbytes, &def.red, &def.green, &def.blue))
-       {
-           def.flags = stuff->flags;
-           def.pixel = stuff->pixel;
-           retval = StoreColors(pcmp, 1, &def);
-            if (client->noClientException != Success)
-                return(client->noClientException);
-           else
-               return(retval);
-       }
-        return (BadName);        
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcQueryColors(client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xQueryColorsReq);
-
-    REQUEST_AT_LEAST_SIZE(xQueryColorsReq);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityReadAccess);
-    if (pcmp)
-    {
-       int                     count, retval;
-       xrgb                    *prgbs;
-       xQueryColorsReply       qcr;
-
-       count = ((client->req_len << 2) - sizeof(xQueryColorsReq)) >> 2;
-       prgbs = (xrgb *)ALLOCATE_LOCAL(count * sizeof(xrgb));
-       if(!prgbs && count)
-            return(BadAlloc);
-       if( (retval = QueryColors(pcmp, count, (Pixel *)&stuff[1], prgbs)) )
-       {
-           if (prgbs) DEALLOCATE_LOCAL(prgbs);
-           if (client->noClientException != Success)
-                return(client->noClientException);
-           else
-           {
-               client->errorValue = clientErrorValue;
-               return (retval);
-           }
-       }
-       qcr.type = X_Reply;
-       qcr.length = (count * sizeof(xrgb)) >> 2;
-       qcr.sequenceNumber = client->sequence;
-       qcr.nColors = count;
-       WriteReplyToClient(client, sizeof(xQueryColorsReply), &qcr);
-       if (count)
-       {
-           client->pSwapReplyFunc = (ReplySwapPtr) SQColorsExtend;
-           WriteSwappedDataToClient(client, count * sizeof(xrgb), prgbs);
-       }
-       if (prgbs) DEALLOCATE_LOCAL(prgbs);
-       return(client->noClientException);
-       
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-} 
-
-int
-ProcLookupColor(client)
-    register ClientPtr client;
-{
-    ColormapPtr pcmp;
-    REQUEST(xLookupColorReq);
-
-    REQUEST_FIXED_SIZE(xLookupColorReq, stuff->nbytes);
-    pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap,
-                                       RT_COLORMAP, SecurityReadAccess);
-    if (pcmp)
-    {
-       xLookupColorReply lcr;
-
-       if(OsLookupColor(pcmp->pScreen->myNum, (char *)&stuff[1], stuff->nbytes,
-                        &lcr.exactRed, &lcr.exactGreen, &lcr.exactBlue))
-       {
-           lcr.type = X_Reply;
-           lcr.length = 0;
-           lcr.sequenceNumber = client->sequence;
-           lcr.screenRed = lcr.exactRed;
-           lcr.screenGreen = lcr.exactGreen;
-           lcr.screenBlue = lcr.exactBlue;
-           (*pcmp->pScreen->ResolveColor)(&lcr.screenRed,
-                                          &lcr.screenGreen,
-                                          &lcr.screenBlue,
-                                          pcmp->pVisual);
-           WriteReplyToClient(client, sizeof(xLookupColorReply), &lcr);
-           return(client->noClientException);
-       }
-        return (BadName);        
-    }
-    else
-    {
-        client->errorValue = stuff->cmap;
-        return (BadColor);
-    }
-}
-
-int
-ProcCreateCursor( client)
-    register ClientPtr client;
-{
-    CursorPtr  pCursor;
-
-    register PixmapPtr         src;
-    register PixmapPtr         msk;
-    unsigned char *    srcbits;
-    unsigned char *    mskbits;
-    unsigned short     width, height;
-    long               n;
-    CursorMetricRec cm;
-
-
-    REQUEST(xCreateCursorReq);
-
-    REQUEST_SIZE_MATCH(xCreateCursorReq);
-    LEGAL_NEW_RESOURCE(stuff->cid, client);
-
-    src = (PixmapPtr)SecurityLookupIDByType(client, stuff->source,
-                                             RT_PIXMAP, SecurityReadAccess);
-    msk = (PixmapPtr)SecurityLookupIDByType(client, stuff->mask,
-                                             RT_PIXMAP, SecurityReadAccess);
-    if (   src == (PixmapPtr)NULL)
-    {
-       client->errorValue = stuff->source;
-       return (BadPixmap);
-    }
-    if ( msk == (PixmapPtr)NULL)
-    {
-       if (stuff->mask != None)
-       {
-           client->errorValue = stuff->mask;
-           return (BadPixmap);
-       }
-    }
-    else if (  src->drawable.width != msk->drawable.width
-           || src->drawable.height != msk->drawable.height
-           || src->drawable.depth != 1
-           || msk->drawable.depth != 1)
-       return (BadMatch);
-
-    width = src->drawable.width;
-    height = src->drawable.height;
-
-    if ( stuff->x > width 
-      || stuff->y > height )
-       return (BadMatch);
-
-    n = BitmapBytePad(width)*height;
-    srcbits = (unsigned char *)xalloc(n);
-    if (!srcbits)
-       return (BadAlloc);
-    mskbits = (unsigned char *)xalloc(n);
-    if (!mskbits)
-    {
-       xfree(srcbits);
-       return (BadAlloc);
-    }
-
-    /* zeroing the (pad) bits helps some ddx cursor handling */
-    bzero((char *)srcbits, n);
-    (* src->drawable.pScreen->GetImage)( (DrawablePtr)src, 0, 0, width, height,
-                                        XYPixmap, 1, (pointer)srcbits);
-    if ( msk == (PixmapPtr)NULL)
-    {
-       register unsigned char *bits = mskbits;
-       while (--n >= 0)
-           *bits++ = ~0;
-    }
-    else
-    {
-       /* zeroing the (pad) bits helps some ddx cursor handling */
-       bzero((char *)mskbits, n);
-       (* msk->drawable.pScreen->GetImage)( (DrawablePtr)msk, 0, 0, width,
-                                       height, XYPixmap, 1, (pointer)mskbits);
-    }
-    cm.width = width;
-    cm.height = height;
-    cm.xhot = stuff->x;
-    cm.yhot = stuff->y;
-    pCursor = AllocCursor( srcbits, mskbits, &cm,
-           stuff->foreRed, stuff->foreGreen, stuff->foreBlue,
-           stuff->backRed, stuff->backGreen, stuff->backBlue);
-
-    if (pCursor && AddResource(stuff->cid, RT_CURSOR, (pointer)pCursor))
-           return (client->noClientException);
-    return BadAlloc;
-}
-
-int
-ProcCreateGlyphCursor( client)
-    register ClientPtr client;
-{
-    CursorPtr pCursor;
-    int res;
-
-    REQUEST(xCreateGlyphCursorReq);
-
-    REQUEST_SIZE_MATCH(xCreateGlyphCursorReq);
-    LEGAL_NEW_RESOURCE(stuff->cid, client);
-
-    res = AllocGlyphCursor(stuff->source, stuff->sourceChar,
-                          stuff->mask, stuff->maskChar,
-                          stuff->foreRed, stuff->foreGreen, stuff->foreBlue,
-                          stuff->backRed, stuff->backGreen, stuff->backBlue,
-                          &pCursor, client);
-    if (res != Success)
-       return res;
-    if (AddResource(stuff->cid, RT_CURSOR, (pointer)pCursor))
-       return client->noClientException;
-    return BadAlloc;
-}
-
-
-int
-ProcFreeCursor(client)
-    register ClientPtr client;
-{
-    CursorPtr pCursor;
-    REQUEST(xResourceReq);
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    pCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->id,
-                                       RT_CURSOR, SecurityDestroyAccess);
-    if (pCursor) 
-    {
-       FreeResource(stuff->id, RT_NONE);
-       return (client->noClientException);
-    }
-    else 
-    {
-       client->errorValue = stuff->id;
-       return (BadCursor);
-    }
-}
-
-int
-ProcQueryBestSize   (client)
-    register ClientPtr client;
-{
-    xQueryBestSizeReply        reply;
-    register DrawablePtr pDraw;
-    ScreenPtr pScreen;
-    REQUEST(xQueryBestSizeReq);
-
-    REQUEST_SIZE_MATCH(xQueryBestSizeReq);
-    if ((stuff->class != CursorShape) && 
-       (stuff->class != TileShape) && 
-       (stuff->class != StippleShape))
-    {
-       client->errorValue = stuff->class;
-        return(BadValue);
-    }
-    SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->drawable, client,
-                                SecurityReadAccess);
-    if (stuff->class != CursorShape && pDraw->type == UNDRAWABLE_WINDOW)
-       return (BadMatch);
-    pScreen = pDraw->pScreen;
-    (* pScreen->QueryBestSize)(stuff->class, &stuff->width,
-                              &stuff->height, pScreen);
-    reply.type = X_Reply;
-    reply.length = 0;
-    reply.sequenceNumber = client->sequence;
-    reply.width = stuff->width;
-    reply.height = stuff->height;
-    WriteReplyToClient(client, sizeof(xQueryBestSizeReply), &reply);
-    return (client->noClientException);
-}
-
-
-int
-ProcSetScreenSaver            (client)
-    register ClientPtr client;
-{
-    int blankingOption, exposureOption;
-    REQUEST(xSetScreenSaverReq);
-
-    REQUEST_SIZE_MATCH(xSetScreenSaverReq);
-    blankingOption = stuff->preferBlank;
-    if ((blankingOption != DontPreferBlanking) &&
-        (blankingOption != PreferBlanking) &&
-        (blankingOption != DefaultBlanking))
-    {
-       client->errorValue = blankingOption;
-        return BadValue;
-    }
-    exposureOption = stuff->allowExpose;
-    if ((exposureOption != DontAllowExposures) &&
-        (exposureOption != AllowExposures) &&
-        (exposureOption != DefaultExposures))
-    {
-       client->errorValue = exposureOption;
-        return BadValue;
-    }
-    if (stuff->timeout < -1)
-    {
-       client->errorValue = stuff->timeout;
-        return BadValue;
-    }
-    if (stuff->interval < -1)
-    {
-       client->errorValue = stuff->interval;
-        return BadValue;
-    }
-
-    if (blankingOption == DefaultBlanking)
-       ScreenSaverBlanking = defaultScreenSaverBlanking;
-    else
-       ScreenSaverBlanking = blankingOption; 
-    if (exposureOption == DefaultExposures)
-       ScreenSaverAllowExposures = defaultScreenSaverAllowExposures;
-    else
-       ScreenSaverAllowExposures = exposureOption;
-
-    if (stuff->timeout >= 0)
-       ScreenSaverTime = stuff->timeout * MILLI_PER_SECOND;
-    else 
-       ScreenSaverTime = defaultScreenSaverTime;
-    if (stuff->interval >= 0)
-       ScreenSaverInterval = stuff->interval * MILLI_PER_SECOND;
-    else
-       ScreenSaverInterval = defaultScreenSaverInterval;
-    return (client->noClientException);
-}
-
-int
-ProcGetScreenSaver(client)
-    register ClientPtr client;
-{
-    xGetScreenSaverReply rep;
-
-    REQUEST_SIZE_MATCH(xReq);
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.timeout = ScreenSaverTime / MILLI_PER_SECOND;
-    rep.interval = ScreenSaverInterval / MILLI_PER_SECOND;
-    rep.preferBlanking = ScreenSaverBlanking;
-    rep.allowExposures = ScreenSaverAllowExposures;
-    WriteReplyToClient(client, sizeof(xGetScreenSaverReply), &rep);
-    return (client->noClientException);
-}
-
-int
-ProcChangeHosts(client)
-    register ClientPtr client;
-{
-    REQUEST(xChangeHostsReq);
-    int result;
-
-    REQUEST_FIXED_SIZE(xChangeHostsReq, stuff->hostLength);
-
-    if(stuff->mode == HostInsert)
-       result = AddHost(client, (int)stuff->hostFamily,
-                        stuff->hostLength, (pointer)&stuff[1]);
-    else if (stuff->mode == HostDelete)
-       result = RemoveHost(client, (int)stuff->hostFamily, 
-                           stuff->hostLength, (pointer)&stuff[1]);  
-    else
-    {
-       client->errorValue = stuff->mode;
-        return BadValue;
-    }
-    if (!result)
-       result = client->noClientException;
-    return (result);
-}
-
-int
-ProcListHosts(client)
-    register ClientPtr client;
-{
-    xListHostsReply reply;
-    int        len, nHosts, result;
-    pointer    pdata;
-
-    REQUEST_SIZE_MATCH(xListHostsReq);
-#ifdef XCSECURITY
-    /* untrusted clients can't list hosts */
-    if (client->trustLevel != XSecurityClientTrusted)
-    {
-       SecurityAudit("client %d attempted to list hosts\n", client->index);
-       return BadAccess;
-    }
-#endif
-    result = GetHosts(&pdata, &nHosts, &len, &reply.enabled);
-    if (result != Success)
-       return(result);
-    reply.type = X_Reply;
-    reply.sequenceNumber = client->sequence;
-    reply.nHosts = nHosts;
-    reply.length = len >> 2;
-    WriteReplyToClient(client, sizeof(xListHostsReply), &reply);
-    if (nHosts)
-    {
-       client->pSwapReplyFunc = (ReplySwapPtr) SLHostsExtend;
-       WriteSwappedDataToClient(client, len, pdata);
-    }
-    xfree(pdata);
-    return (client->noClientException);
-}
-
-int
-ProcChangeAccessControl(client)
-    register ClientPtr client;
-{
-    int result;
-    REQUEST(xSetAccessControlReq);
-
-    REQUEST_SIZE_MATCH(xSetAccessControlReq);
-    if ((stuff->mode != EnableAccess) && (stuff->mode != DisableAccess))
-    {
-       client->errorValue = stuff->mode;
-        return BadValue;
-    }
-    result = ChangeAccessControl(client, stuff->mode == EnableAccess);
-    if (!result)
-       result = client->noClientException;
-    return (result);
-}
-
-int
-ProcKillClient(client)
-    register ClientPtr client;
-{
-    REQUEST(xResourceReq);
-    ClientPtr  killclient;
-
-    REQUEST_SIZE_MATCH(xResourceReq);
-    if (stuff->id == AllTemporary)
-    {
-       CloseDownRetainedResources();
-        return (client->noClientException);
-    }
-
-    if ((killclient = LookupClient(stuff->id, client)))
-    {
-       CloseDownClient(killclient);
-       /* if an LBX proxy gets killed, isItTimeToYield will be set */
-       if (isItTimeToYield || (client == killclient))
-       {
-           /* force yield and return Success, so that Dispatch()
-            * doesn't try to touch client
-            */
-           isItTimeToYield = TRUE;
-           return (Success);
-       }
-       return (client->noClientException);
-    }
-    else
-    {
-       client->errorValue = stuff->id;
-       return (BadValue);
-    }
-}
-
-int
-ProcSetFontPath(client)
-    register ClientPtr client;
-{
-    unsigned char *ptr;
-    unsigned long nbytes, total;
-    long nfonts;
-    int n, result;
-    int error;
-    REQUEST(xSetFontPathReq);
-    
-    REQUEST_AT_LEAST_SIZE(xSetFontPathReq);
-    
-    nbytes = (client->req_len << 2) - sizeof(xSetFontPathReq);
-    total = nbytes;
-    ptr = (unsigned char *)&stuff[1];
-    nfonts = stuff->nFonts;
-    while (--nfonts >= 0)
-    {
-       if ((total == 0) || (total < (n = (*ptr + 1))))
-           return(BadLength);
-       total -= n;
-       ptr += n;
-    }
-    if (total >= 4)
-       return(BadLength);
-    result = SetFontPath(client, stuff->nFonts, (unsigned char *)&stuff[1],
-                        &error);
-    if (!result)
-    {
-       result = client->noClientException;
-       client->errorValue = error;
-    }
-    return (result);
-}
-
-int
-ProcGetFontPath(client)
-    register ClientPtr client;
-{
-    xGetFontPathReply reply;
-    int stringLens, numpaths;
-    unsigned char *bufferStart;
-
-    REQUEST_SIZE_MATCH(xReq);
-    bufferStart = GetFontPath(&numpaths, &stringLens);
-
-    reply.type = X_Reply;
-    reply.sequenceNumber = client->sequence;
-    reply.length = (stringLens + numpaths + 3) >> 2;
-    reply.nPaths = numpaths;
-
-    WriteReplyToClient(client, sizeof(xGetFontPathReply), &reply);
-    if (stringLens || numpaths)
-       (void)WriteToClient(client, stringLens + numpaths, (char *)bufferStart);
-    return(client->noClientException);
-}
-
-int
-ProcChangeCloseDownMode(client)
-    register ClientPtr client;
-{
-    REQUEST(xSetCloseDownModeReq);
-
-    REQUEST_SIZE_MATCH(xSetCloseDownModeReq);
-    if ((stuff->mode == AllTemporary) ||
-       (stuff->mode == RetainPermanent) ||
-       (stuff->mode == RetainTemporary))
-    {
-       client->closeDownMode = stuff->mode;
-       return (client->noClientException);
-    }
-    else   
-    {
-       client->errorValue = stuff->mode;
-       return (BadValue);
-    }
-}
-
-int ProcForceScreenSaver(client)
-    register ClientPtr client;
-{    
-    REQUEST(xForceScreenSaverReq);
-
-    REQUEST_SIZE_MATCH(xForceScreenSaverReq);
-    
-    if ((stuff->mode != ScreenSaverReset) && 
-       (stuff->mode != ScreenSaverActive))
-    {
-       client->errorValue = stuff->mode;
-        return BadValue;
-    }
-    SaveScreens(SCREEN_SAVER_FORCER, (int)stuff->mode);
-    return client->noClientException;
-}
-
-int ProcNoOperation(client)
-    register ClientPtr client;
-{
-    REQUEST_AT_LEAST_SIZE(xReq);
-    
-    /* noop -- don't do anything */
-    return(client->noClientException);
-}
-
-void
-InitProcVectors()
-{
-    int i;
-    for (i = 0; i<256; i++)
-    {
-       if(!ProcVector[i])
-       {
-            ProcVector[i] = SwappedProcVector[i] = ProcBadRequest;
-           ReplySwapVector[i] = ReplyNotSwappd;
-       }
-#ifdef K5AUTH
-       if (!k5_Vector[i])
-       {
-           k5_Vector[i] = k5_bad;
-       }
-#endif
-    }
-    for(i = LASTEvent; i < 128; i++)
-    {
-       EventSwapVector[i] = NotImplemented;
-    }
-    
-}
-
-/**********************
- * CloseDownClient
- *
- *  Client can either mark his resources destroy or retain.  If retained and
- *  then killed again, the client is really destroyed.
- *********************/
-
-Bool terminateAtReset = FALSE;
-
-void
-CloseDownClient(client)
-    register ClientPtr client;
-{
-    Bool really_close_down = client->clientGone ||
-                            client->closeDownMode == DestroyAll;
-
-    if (!client->clientGone)
-    {
-       /* ungrab server if grabbing client dies */
-       if (grabState != GrabNone && grabClient == client)
-       {
-           UngrabServer(client);
-       }
-       BITCLEAR(grabWaiters, client->index);
-       DeleteClientFromAnySelections(client);
-       ReleaseActiveGrabs(client);
-       DeleteClientFontStuff(client);
-       if (!really_close_down)
-       {
-           /*  This frees resources that should never be retained
-            *  no matter what the close down mode is.  Actually we
-            *  could do this unconditionally, but it's probably
-            *  better not to traverse all the client's resources
-            *  twice (once here, once a few lines down in
-            *  FreeClientResources) in the common case of
-            *  really_close_down == TRUE.
-            */
-           FreeClientNeverRetainResources(client);
-           client->clientState = ClientStateRetained;
-           if (ClientStateCallback)
-            {
-               NewClientInfoRec clientinfo;
-
-               clientinfo.client = client; 
-               clientinfo.prefix = (xConnSetupPrefix *)NULL;  
-               clientinfo.setup = (xConnSetup *) NULL;
-               CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
-            } 
-       }
-       client->clientGone = TRUE;  /* so events aren't sent to client */
-       if (ClientIsAsleep(client))
-           ClientSignal (client);
-       ProcessWorkQueueZombies();
-#ifdef LBX
-       ProcessQTagZombies();
-#endif
-       CloseDownConnection(client);
-
-       /* If the client made it to the Running stage, nClients has
-        * been incremented on its behalf, so we need to decrement it
-        * now.  If it hasn't gotten to Running, nClients has *not*
-        * been incremented, so *don't* decrement it.
-        */
-       if (client->clientState != ClientStateInitial &&
-           client->clientState != ClientStateAuthenticating )
-       {
-           --nClients;
-       }
-    }
-
-    if (really_close_down)
-    {
-       if (client->clientState == ClientStateRunning && nClients == 0)
-       {
-           if (terminateAtReset)
-               dispatchException |= DE_TERMINATE;
-           else
-               dispatchException |= DE_RESET;
-       }
-       client->clientState = ClientStateGone;
-       if (ClientStateCallback)
-       {
-           NewClientInfoRec clientinfo;
-
-           clientinfo.client = client; 
-           clientinfo.prefix = (xConnSetupPrefix *)NULL;  
-           clientinfo.setup = (xConnSetup *) NULL;
-           CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
-       }           
-       FreeClientResources(client);
-       if (client->index < nextFreeClientID)
-           nextFreeClientID = client->index;
-       clients[client->index] = NullClient;
-       xfree(client);
-
-       while (!clients[currentMaxClients-1])
-           currentMaxClients--;
-    }
-}
-
-static void
-KillAllClients()
-{
-    int i;
-    for (i=1; i<currentMaxClients; i++)
-        if (clients[i])
-            CloseDownClient(clients[i]);     
-}
-
-/*********************
- * CloseDownRetainedResources
- *
- *    Find all clients that are gone and have terminated in RetainTemporary 
- *    and  destroy their resources.
- *********************/
-
-void
-CloseDownRetainedResources()
-{
-    register int i;
-    register ClientPtr client;
-
-    for (i=1; i<currentMaxClients; i++)
-    {
-        client = clients[i];
-        if (client && (client->closeDownMode == RetainTemporary)
-           && (client->clientGone))
-           CloseDownClient(client);
-    }
-}
-
-void InitClient(client, i, ospriv)
-    ClientPtr client;
-    int i;
-    pointer ospriv;
-{
-    client->index = i;
-    client->sequence = 0; 
-    client->clientAsMask = ((Mask)i) << CLIENTOFFSET;
-    client->clientGone = FALSE;
-    if (i)
-    {
-       client->closeDownMode = DestroyAll;
-       client->lastDrawable = (DrawablePtr)WindowTable[0];
-       client->lastDrawableID = WindowTable[0]->drawable.id;
-    }
-    else
-    {
-       client->closeDownMode = RetainPermanent;
-       client->lastDrawable = (DrawablePtr)NULL;
-       client->lastDrawableID = INVALID;
-    }
-    client->lastGC = (GCPtr) NULL;
-    client->lastGCID = INVALID;
-    client->numSaved = 0;
-    client->saveSet = (pointer *)NULL;
-    client->noClientException = Success;
-#ifdef DEBUG
-    client->requestLogIndex = 0;
-#endif
-    client->requestVector = InitialVector;
-    client->osPrivate = ospriv;
-    client->swapped = FALSE;
-    client->big_requests = FALSE;
-    client->priority = 0;
-    client->clientState = ClientStateInitial;
-#ifdef XKB
-    if (!noXkbExtension) {
-       client->xkbClientFlags = 0;
-       client->mapNotifyMask = 0;
-       QueryMinMaxKeyCodes(&client->minKC,&client->maxKC);
-    }
-#endif
-    client->replyBytesRemaining = 0;
-#ifdef LBX
-    client->readRequest = StandardReadRequestFromClient;
-#endif
-#ifdef XCSECURITY
-    client->trustLevel = XSecurityClientTrusted;
-    client->CheckAccess = NULL;
-    client->authId = 0;
-#endif
-#ifdef XAPPGROUP
-    client->appgroup = NULL;
-#endif
-    client->fontResFunc = NULL;
-}
-
-extern int clientPrivateLen;
-extern unsigned *clientPrivateSizes;
-extern unsigned totalClientSize;
-
-int
-InitClientPrivates(client)
-    ClientPtr client;
-{
-    register char *ptr;
-    DevUnion *ppriv;
-    register unsigned *sizes;
-    register unsigned size;
-    register int i;
-
-    if (totalClientSize == sizeof(ClientRec))
-       ppriv = (DevUnion *)NULL;
-    else if (client->index)
-       ppriv = (DevUnion *)(client + 1);
-    else
-    {
-       ppriv = (DevUnion *)xalloc(totalClientSize - sizeof(ClientRec));
-       if (!ppriv)
-           return 0;
-    }
-    client->devPrivates = ppriv;
-    sizes = clientPrivateSizes;
-    ptr = (char *)(ppriv + clientPrivateLen);
-    for (i = clientPrivateLen; --i >= 0; ppriv++, sizes++)
-    {
-       if ( (size = *sizes) )
-       {
-           ppriv->ptr = (pointer)ptr;
-           ptr += size;
-       }
-       else
-           ppriv->ptr = (pointer)NULL;
-    }
-    return 1;
-}
-
-/************************
- * int NextAvailableClient(ospriv)
- *
- * OS dependent portion can't assign client id's because of CloseDownModes.
- * Returns NULL if there are no free clients.
- *************************/
-
-ClientPtr
-NextAvailableClient(ospriv)
-    pointer ospriv;
-{
-    register int i;
-    register ClientPtr client;
-    xReq data;
-
-    i = nextFreeClientID;
-    if (i == MAXCLIENTS)
-       return (ClientPtr)NULL;
-    clients[i] = client = (ClientPtr)xalloc(totalClientSize);
-    if (!client)
-       return (ClientPtr)NULL;
-    InitClient(client, i, ospriv);
-    InitClientPrivates(client);
-    if (!InitClientResources(client))
-    {
-       xfree(client);
-       return (ClientPtr)NULL;
-    }
-    data.reqType = 1;
-    data.length = (sz_xReq + sz_xConnClientPrefix) >> 2;
-    if (!InsertFakeRequest(client, (char *)&data, sz_xReq))
-    {
-       FreeClientResources(client);
-       xfree(client);
-       return (ClientPtr)NULL;
-    }
-    if (i == currentMaxClients)
-       currentMaxClients++;
-    while ((nextFreeClientID < MAXCLIENTS) && clients[nextFreeClientID])
-       nextFreeClientID++;
-    if (ClientStateCallback)
-    {
-       NewClientInfoRec clientinfo;
-
-        clientinfo.client = client; 
-        clientinfo.prefix = (xConnSetupPrefix *)NULL;  
-        clientinfo.setup = (xConnSetup *) NULL;
-       CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
-    }  
-    return(client);
-}
-
-int
-ProcInitialConnection(client)
-    register ClientPtr client;
-{
-    REQUEST(xReq);
-    register xConnClientPrefix *prefix;
-    int whichbyte = 1;
-
-    prefix = (xConnClientPrefix *)((char *)stuff + sz_xReq);
-    if ((prefix->byteOrder != 'l') && (prefix->byteOrder != 'B'))
-       return (client->noClientException = -1);
-    if (((*(char *) &whichbyte) && (prefix->byteOrder == 'B')) ||
-       (!(*(char *) &whichbyte) && (prefix->byteOrder == 'l')))
-    {
-       client->swapped = TRUE;
-       SwapConnClientPrefix(prefix);
-    }
-    stuff->reqType = 2;
-    stuff->length += ((prefix->nbytesAuthProto + (unsigned)3) >> 2) +
-                    ((prefix->nbytesAuthString + (unsigned)3) >> 2);
-    if (client->swapped)
-    {
-       swaps(&stuff->length, whichbyte);
-    }
-    ResetCurrentRequest(client);
-    return (client->noClientException);
-}
-
-#ifdef LBX
-void
-IncrementClientCount()
-{
-    nClients++;
-}
-#endif
-
-int
-SendConnSetup(client, reason)
-    register ClientPtr client;
-    char *reason;
-{
-    register xWindowRoot *root;
-    register int i;
-    int numScreens;
-    char* lConnectionInfo;
-    xConnSetupPrefix* lconnSetupPrefix;
-
-    if (reason)
-    {
-       xConnSetupPrefix csp;
-       char pad[3];
-
-       csp.success = xFalse;
-       csp.lengthReason = strlen(reason);
-       csp.length = (csp.lengthReason + (unsigned)3) >> 2;
-       csp.majorVersion = X_PROTOCOL;
-       csp.minorVersion = X_PROTOCOL_REVISION;
-       if (client->swapped)
-           WriteSConnSetupPrefix(client, &csp);
-       else
-           (void)WriteToClient(client, sz_xConnSetupPrefix, (char *) &csp);
-        (void)WriteToClient(client, (int)csp.lengthReason, reason);
-       return (client->noClientException = -1);
-    }
-
-    numScreens = screenInfo.numScreens;
-    lConnectionInfo = ConnectionInfo;
-    lconnSetupPrefix = &connSetupPrefix;
-
-    /* We're about to start speaking X protocol back to the client by
-     * sending the connection setup info.  This means the authorization
-     * step is complete, and we can count the client as an
-     * authorized one.
-     */
-    nClients++;
-
-    client->requestVector = client->swapped ? SwappedProcVector : ProcVector;
-    client->sequence = 0;
-#ifdef XAPPGROUP
-    XagConnectionInfo (client, &lconnSetupPrefix, &lConnectionInfo, &numScreens);
-#endif
-    ((xConnSetup *)lConnectionInfo)->ridBase = client->clientAsMask;
-    ((xConnSetup *)lConnectionInfo)->ridMask = RESOURCE_ID_MASK;
-    /* fill in the "currentInputMask" */
-    root = (xWindowRoot *)(lConnectionInfo + connBlockScreenStart);
-    for (i=0; i<numScreens; i++) 
-    {
-       register unsigned int j;
-       register xDepth *pDepth;
-
-        root->currentInputMask = WindowTable[i]->eventMask |
-                                wOtherEventMasks (WindowTable[i]);
-       pDepth = (xDepth *)(root + 1);
-       for (j = 0; j < root->nDepths; j++)
-       {
-           pDepth = (xDepth *)(((char *)(pDepth + 1)) +
-                               pDepth->nVisuals * sizeof(xVisualType));
-       }
-       root = (xWindowRoot *)pDepth;
-    }
-
-    if (client->swapped)
-    {
-       WriteSConnSetupPrefix(client, lconnSetupPrefix);
-       WriteSConnectionInfo(client,
-                            (unsigned long)(lconnSetupPrefix->length << 2),
-                            lConnectionInfo);
-    }
-    else
-    {
-       (void)WriteToClient(client, sizeof(xConnSetupPrefix),
-                           (char *) lconnSetupPrefix);
-       (void)WriteToClient(client, (int)(lconnSetupPrefix->length << 2),
-                           lConnectionInfo);
-    }
-    client->clientState = ClientStateRunning;
-    if (ClientStateCallback)
-    {
-       NewClientInfoRec clientinfo;
-
-        clientinfo.client = client; 
-        clientinfo.prefix = lconnSetupPrefix;  
-        clientinfo.setup = (xConnSetup *)lConnectionInfo;
-       CallCallbacks((&ClientStateCallback), (pointer)&clientinfo);
-    }  
-    return (client->noClientException);
-}
-
-int
-ProcEstablishConnection(client)
-    register ClientPtr client;
-{
-    char *reason, *auth_proto, *auth_string;
-    register xConnClientPrefix *prefix;
-    REQUEST(xReq);
-
-    prefix = (xConnClientPrefix *)((char *)stuff + sz_xReq);
-    auth_proto = (char *)prefix + sz_xConnClientPrefix;
-    auth_string = auth_proto + ((prefix->nbytesAuthProto + 3) & ~3);
-    if ((prefix->majorVersion != X_PROTOCOL) ||
-       (prefix->minorVersion != X_PROTOCOL_REVISION))
-       reason = "Protocol version mismatch";
-    else
-       reason = ClientAuthorized(client,
-                                 (unsigned short)prefix->nbytesAuthProto,
-                                 auth_proto,
-                                 (unsigned short)prefix->nbytesAuthString,
-                                 auth_string);
-    /*
-     * If Kerberos is being used for this client, the clientState
-     * will be set to ClientStateAuthenticating at this point.
-     * More messages need to be exchanged among the X server, Kerberos
-     * server, and client to figure out if everyone is authorized.
-     * So we don't want to send the connection setup info yet, since
-     * the auth step isn't really done.
-     */
-    if (client->clientState == ClientStateCheckingSecurity)
-       client->clientState = ClientStateCheckedSecurity;
-    else if (client->clientState != ClientStateAuthenticating)
-       return(SendConnSetup(client, reason));
-    return(client->noClientException);
-}
-
-void
-SendErrorToClient(client, majorCode, minorCode, resId, errorCode)
-    ClientPtr client;
-    unsigned int majorCode;
-    unsigned int minorCode;
-    XID resId;
-    int errorCode;
-{
-    xError rep;
-
-    rep.type = X_Error;
-    rep.sequenceNumber = client->sequence;
-    rep.errorCode = errorCode;
-    rep.majorCode = majorCode;
-    rep.minorCode = minorCode;
-    rep.resourceID = resId;
-
-    WriteEventsToClient (client, 1, (xEvent *)&rep);
-}
-
-void
-DeleteWindowFromAnySelections(pWin)
-    WindowPtr pWin;
-{
-    register int i;
-
-    for (i = 0; i< NumCurrentSelections; i++)
-        if (CurrentSelections[i].pWin == pWin)
-        {
-            CurrentSelections[i].pWin = (WindowPtr)NULL;
-            CurrentSelections[i].window = None;
-           CurrentSelections[i].client = NullClient;
-       }
-}
-
-static void
-DeleteClientFromAnySelections(client)
-    ClientPtr client;
-{
-    register int i;
-
-    for (i = 0; i< NumCurrentSelections; i++)
-        if (CurrentSelections[i].client == client)
-        {
-            CurrentSelections[i].pWin = (WindowPtr)NULL;
-            CurrentSelections[i].window = None;
-           CurrentSelections[i].client = NullClient;
-       }
-}
-
-void
-MarkClientException(client)
-    ClientPtr client;
-{
-    client->noClientException = -1;
-}