--- /dev/null
+? XFree86-4.2.0-branch-20020524.patch
+Index: config/cf/cygwin.cf
+===================================================================
+RCS file: /cvs/xc/config/cf/cygwin.cf,v
+retrieving revision 3.34
+retrieving revision 3.34.2.2
+diff -u -r3.34 -r3.34.2.2
+--- config/cf/cygwin.cf 2001/12/10 16:22:37 3.34
++++ config/cf/cygwin.cf 2002/02/19 08:43:33 3.34.2.2
+@@ -1,4 +1,4 @@
+-XCOMM platform: $XFree86: xc/config/cf/cygwin.cf,v 3.34 2001/12/10 16:22:37 alanh Exp $
++XCOMM platform: $XFree86: xc/config/cf/cygwin.cf,v 3.34.2.2 2002/02/19 08:43:33 alanh Exp $
+
+ #ifndef OSName
+ #define OSName Cygwin
+@@ -138,7 +138,7 @@
+ # define OptimizedCDebugFlags DefaultGcc2i386Opt
+ # endif
+
+-#define StandardDefines -D__i386__ -DWIN32_LEAN_AND_MEAN -DX_LOCALE -D_X86_ -D__STDC__ -DNO_TCP_H -D__CYGWIN__ -D_XOPEN_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE
++#define StandardDefines -D__i386__ -DWIN32_LEAN_AND_MEAN -DX_LOCALE -D_X86_ -D__STDC__ -DNO_TCP_H -D__CYGWIN__ -D_XOPEN_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DNO_ALLOCA
+
+ #define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC
+ #define HasWChar32 YES
+@@ -308,10 +308,19 @@
+ #endif
+
+ /* Server build rules */
++#ifndef XnestServer
+ #define XnestServer YES
++#endif
++#ifndef BuildXprint
+ #define BuildXprint YES
++#endif
++#ifndef XprtServer
+ #define XprtServer YES
++#endif
++#ifndef XVirtualFramebufferServer
+ #define XVirtualFramebufferServer YES
++#endif
++
+ #define XWinServer YES
+
+ /*
+Index: config/cf/darwin.cf
+===================================================================
+RCS file: /cvs/xc/config/cf/darwin.cf,v
+retrieving revision 1.21
+retrieving revision 1.21.2.1
+diff -u -r1.21 -r1.21.2.1
+--- config/cf/darwin.cf 2002/01/15 21:22:31 1.21
++++ config/cf/darwin.cf 2002/05/03 00:36:17 1.21.2.1
+@@ -1,4 +1,4 @@
+-XCOMM platform: $XFree86: xc/config/cf/darwin.cf,v 1.21 2002/01/15 21:22:31 keithp Exp $
++XCOMM platform: $XFree86: xc/config/cf/darwin.cf,v 1.21.2.1 2002/05/03 00:36:17 torrey Exp $
+
+ /* Darwin / Mac OS X configuration by John Carmack <johnc@idsoftware.com> */
+
+@@ -61,8 +61,7 @@
+ /* we don't need -lm */
+ #define MathLibrary /**/
+
+-/* we don't have a termcap library */
+-#define TermcapLibrary /**/
++#define TermcapLibrary -lcurses
+
+ /* we don't have a dbm library */
+ #define DBMLibrary /**/
+Index: extras/ogl-sample/main/gfx/lib/glu/libnurbs/nurbtess/quicksort.cc
+===================================================================
+RCS file: /cvs/xc/extras/ogl-sample/main/gfx/lib/glu/libnurbs/nurbtess/quicksort.cc,v
+retrieving revision 1.1.1.1
+retrieving revision 1.1.1.1.6.1
+diff -u -r1.1.1.1 -r1.1.1.1.6.1
+--- extras/ogl-sample/main/gfx/lib/glu/libnurbs/nurbtess/quicksort.cc 2001/01/15 21:48:59 1.1.1.1
++++ extras/ogl-sample/main/gfx/lib/glu/libnurbs/nurbtess/quicksort.cc 2002/01/23 19:16:59 1.1.1.1.6.1
+@@ -31,12 +31,15 @@
+ ** published by SGI, but has not been independently verified as being
+ ** compliant with the OpenGL(R) version 1.2.1 Specification.
+ **
+-** $Date$ $Revision$
++** Date Revision
+ */
+ /*
+-** $Header$
++** Header: //depot/main/gfx/lib/glu/libnurbs/nurbtess/quicksort.cc#3
+ */
+
++
++/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glu/libnurbs/nurbtess/quicksort.cc,v 1.1.1.1.6.1 2002/01/23 19:16:59 dawes Exp $ */
++
+ #include <stdlib.h>
+ #include <stdio.h>
+
+@@ -58,7 +61,6 @@
+ int (*comp) (void *, void *))
+ {
+ int i, last;
+- void swap(void *v[], int , int);
+ if(left >= right) /*do nothing if array contains */
+ return; /*fewer than two elements*/
+
+@@ -72,7 +74,7 @@
+ quicksort(v, last+1, right, comp);
+ }
+
+-void swap(void *v[], int i, int j)
++static void swap(void *v[], int i, int j)
+ {
+ void *temp;
+ temp = v[i];
+Index: lib/GL/mesa/src/drv/r128/r128_xmesa.c
+===================================================================
+RCS file: /cvs/xc/lib/GL/mesa/src/drv/r128/Attic/r128_xmesa.c,v
+retrieving revision 1.12
+retrieving revision 1.12.4.1
+diff -u -r1.12 -r1.12.4.1
+--- lib/GL/mesa/src/drv/r128/r128_xmesa.c 2001/11/26 21:46:35 1.12
++++ lib/GL/mesa/src/drv/r128/r128_xmesa.c 2002/01/27 19:18:39 1.12.4.1
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c,v 1.12 2001/11/26 21:46:35 dawes Exp $ */
++/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_xmesa.c,v 1.12.4.1 2002/01/27 19:18:39 dawes Exp $ */
+ /**************************************************************************
+
+ Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
+@@ -83,7 +83,7 @@
+ if ( sPriv->drmMajor != 2 ||
+ sPriv->drmMinor < 2 ) {
+ char msg[1000];
+- sprintf( msg, "R128 DRI driver expected DRM driver version 3.0 or greater but got version %d.%d.%d", sPriv->drmMajor, sPriv->drmMinor, sPriv->drmPatch );
++ sprintf( msg, "R128 DRI driver expected DRM driver version 2.2 or greater but got version %d.%d.%d", sPriv->drmMajor, sPriv->drmMinor, sPriv->drmPatch );
+ __driMesaMessage( msg );
+ return GL_FALSE;
+ }
+Index: lib/X11/XlcDL.c
+===================================================================
+RCS file: /cvs/xc/lib/X11/XlcDL.c,v
+retrieving revision 1.3
+retrieving revision 1.3.4.1
+diff -u -r1.3 -r1.3.4.1
+--- lib/X11/XlcDL.c 2001/11/19 15:33:38 1.3
++++ lib/X11/XlcDL.c 2002/01/23 19:17:00 1.3.4.1
+@@ -41,7 +41,7 @@
+ Sun Microsystems, Inc. or its licensors is granted.
+
+ */
+-/* $XFree86: xc/lib/X11/XlcDL.c,v 1.3 2001/11/19 15:33:38 tsi Exp $ */
++/* $XFree86: xc/lib/X11/XlcDL.c,v 1.3.4.1 2002/01/23 19:17:00 dawes Exp $ */
+
+ #include <stdio.h>
+ #if defined(hpux)
+@@ -125,28 +125,37 @@
+ }
+
+ static char *
+-strdup_and_prefix(char *symbol)
++strdup_with_underscore(const char *symbol)
+ {
+- size_t n;
+ char *result;
+
+- n = strlen(symbol) + 1;
+-#ifndef __ELF__
+- n++; /* add space for _ */
+-#endif
+- if ((result = malloc(n)) == NULL)
++ if ((result = malloc(strlen(symbol) + 2)) == NULL)
+ return NULL;
+-#ifndef __ELF__
+ result[0] = '_';
+-#endif
+- memcpy(result
+-#ifndef __ELF__
+- +1
+-#endif
+- , symbol, n);
++ strcpy(result + 1, symbol);
+ return result;
+ }
+
++#ifndef hpux
++static void *
++try_both_dlsym (void *handle, char *name)
++{
++ void *ret;
++
++ ret = dlsym (handle, name);
++ if (!ret)
++ {
++ name = strdup_with_underscore (name);
++ if (name)
++ {
++ ret = dlsym (handle, name);
++ free (name);
++ }
++ }
++ return ret;
++}
++#endif
++
+ static void
+ resolve_object(path, lc_name)
+ char *path;
+@@ -202,13 +211,13 @@
+ xi18n_objects_list[lc_count].type = XIM_OBJECT;
+ }
+ xi18n_objects_list[lc_count].dl_name = strdup(args[1]);
+- xi18n_objects_list[lc_count].open = strdup_and_prefix(args[2]);
++ xi18n_objects_list[lc_count].open = strdup(args[2]);
+ xi18n_objects_list[lc_count].dl_release = XI18N_DLREL;
+ xi18n_objects_list[lc_count].locale_name = strdup(lc_name);
+ xi18n_objects_list[lc_count].dl_module = (void*)NULL;
+ if (n == 5) {
+- xi18n_objects_list[lc_count].im_register = strdup_and_prefix(args[3]);
+- xi18n_objects_list[lc_count].im_unregister = strdup_and_prefix(args[4]);
++ xi18n_objects_list[lc_count].im_register = strdup(args[3]);
++ xi18n_objects_list[lc_count].im_unregister = strdup(args[4]);
+ } else {
+ xi18n_objects_list[lc_count].im_register = NULL;
+ xi18n_objects_list[lc_count].im_unregister = NULL;
+@@ -331,8 +340,8 @@
+ free(symbols);
+ }
+ #else
+- lc_loader = (XLCd(*)())dlsym(objects_list->dl_module,
+- objects_list->open);
++ lc_loader = (XLCd(*)())try_both_dlsym(objects_list->dl_module,
++ objects_list->open);
+ #endif
+ if (!lc_loader) continue;
+ lcd = (*lc_loader)(lc_name);
+@@ -406,8 +415,8 @@
+ free(symbols);
+ }
+ #else
+- im_openIM = (XIM(*)())dlsym(objects_list->dl_module,
+- objects_list->open);
++ im_openIM = (XIM(*)())try_both_dlsym(objects_list->dl_module,
++ objects_list->open);
+ if (!im_openIM) continue;
+ #endif
+ im = (*im_openIM)(lcd, display, rdb, res_name, res_class);
+@@ -481,8 +490,8 @@
+ free(symbols);
+ }
+ #else
+- im_registerIM = (Bool(*)())dlsym(objects_list->dl_module,
+- objects_list->im_register);
++ im_registerIM = (Bool(*)())try_both_dlsym(objects_list->dl_module,
++ objects_list->im_register);
+ if (!im_registerIM) continue;
+ #endif
+ ret_flag = (*im_registerIM)(lcd, display, rdb,
+@@ -556,8 +565,8 @@
+ free(symbols);
+ }
+ #else
+- im_unregisterIM = (Bool(*)())dlsym(objects_list->dl_module,
+- objects_list->im_unregister);
++ im_unregisterIM = (Bool(*)())try_both_dlsym(objects_list->dl_module,
++ objects_list->im_unregister);
+
+ if (!im_unregisterIM) continue;
+ #endif
+@@ -651,8 +660,8 @@
+ free(symbols);
+ }
+ #else
+- om_openOM = (XOM(*)())dlsym(objects_list->dl_module,
+- objects_list->open);
++ om_openOM = (XOM(*)())try_both_dlsym(objects_list->dl_module,
++ objects_list->open);
+ if (!om_openOM) continue;
+ #endif
+ om = (*om_openOM)(lcd, display, rdb, res_name, res_class);
+Index: lib/zlib/infblock.c
+===================================================================
+RCS file: /cvs/xc/lib/zlib/infblock.c,v
+retrieving revision 1.4
+retrieving revision 1.4.6.2
+diff -u -r1.4 -r1.4.6.2
+--- lib/zlib/infblock.c 2001/01/17 19:43:53 1.4
++++ lib/zlib/infblock.c 2002/02/14 16:22:45 1.4.6.2
+@@ -249,10 +249,11 @@
+ &s->sub.trees.tb, z);
+ if (t != Z_OK)
+ {
+- ZFREE(z, s->sub.trees.blens);
+ r = t;
+- if (r == Z_DATA_ERROR)
++ if (r == Z_DATA_ERROR) {
++ ZFREE(z, s->sub.trees.blens);
+ s->mode = BAD;
++ }
+ LEAVE
+ }
+ s->sub.trees.index = 0;
+@@ -317,14 +318,16 @@
+ #endif
+ t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
+ s->sub.trees.blens, &bl, &bd, &tl, &td, z);
+- ZFREE(z, s->sub.trees.blens);
+ if (t != Z_OK)
+ {
+- if (t == (uInt)Z_DATA_ERROR)
++ if (t == (uInt)Z_DATA_ERROR) {
++ ZFREE(z, s->sub.trees.blens);
+ s->mode = BAD;
++ }
+ r = t;
+ LEAVE
+ }
++ ZFREE(z, s->sub.trees.blens);
+ Tracev((stderr, "inflate: trees ok, %d * %d bytes used\n",
+ inflate_hufts, sizeof(inflate_huft)));
+ if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
+Index: programs/Xserver/Xext/shm.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/Xext/shm.c,v
+retrieving revision 3.33
+retrieving revision 3.33.2.1
+diff -u -r3.33 -r3.33.2.1
+--- programs/Xserver/Xext/shm.c 2001/12/14 19:58:51 3.33
++++ programs/Xserver/Xext/shm.c 2002/02/24 20:43:27 3.33.2.1
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.33 2001/12/14 19:58:51 dawes Exp $ */
++/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.33.2.1 2002/02/24 20:43:27 herrb Exp $ */
+ /************************************************************
+
+ Copyright 1989, 1998 The Open Group
+@@ -64,6 +64,12 @@
+ #include "panoramiXsrv.h"
+ #endif
+
++#if defined(SVR4) || defined(__linux__) || defined(CSRG_BASED)
++#define HAS_SAVED_IDS_AND_SETEUID
++#else
++#include <sys/stat.h>
++#endif
++
+ typedef struct _ShmDesc {
+ struct _ShmDesc *next;
+ int shmid;
+@@ -355,6 +361,45 @@
+ return (client->noClientException);
+ }
+
++#ifndef HAS_SAVED_IDS_AND_SETEUID
++/*
++ * Simulate the access() system call for a shared memory segement,
++ * using the real user and group id of the process
++ * /
++static int
++shm_access(uid_t uid, gid_t gid, struct ipc_perm *perm, int readonly)
++{
++ mode_t mask;
++
++ /* User id 0 always gets access */
++ if (uid == 0) {
++ return 0;
++ }
++ /* Check the owner */
++ if (perm->uid == uid || perm->cuid == uid) {
++ mask = S_IRUSR;
++ if (!readonly) {
++ mask |= S_IWUSR;
++ }
++ return (perm->mode & mask) == mask ? 0 : -1;
++ }
++ /* Check the group */
++ if (perm->gid == gid || perm->cgid == gid) {
++ mask = S_IRGRP;
++ if (!readonly) {
++ mask |= S_IWGRP;
++ }
++ return (perm->mode & mask) == mask ? 0 : -1;
++ }
++ /* Otherwise, check everyone else */
++ mask = S_IROTH;
++ if (!readonly) {
++ mask |= S_IWOTH;
++ }
++ return (perm->mode & mask) == mask ? 0 : -1;
++}
++#endif
++
+ static int
+ ProcShmAttach(client)
+ register ClientPtr client;
+@@ -362,6 +407,12 @@
+ struct shmid_ds buf;
+ ShmDescPtr shmdesc;
+ REQUEST(xShmAttachReq);
++ uid_t ruid;
++ gid_t rgid;
++#ifdef HAS_SAVED_IDS_AND_SETEUID
++ uid_t euid;
++ gid_t egid;
++#endif
+
+ REQUEST_SIZE_MATCH(xShmAttachReq);
+ LEGAL_NEW_RESOURCE(stuff->shmseg, client);
+@@ -385,14 +436,44 @@
+ shmdesc = (ShmDescPtr) xalloc(sizeof(ShmDescRec));
+ if (!shmdesc)
+ return BadAlloc;
++ ruid = getuid();
++ rgid = getgid();
++#ifdef HAS_SAVED_IDS_AND_SETEUID
++ euid = geteuid();
++ egid = getegid();
++
++ if (euid != ruid || egid != rgid) {
++ /* Temporarly switch back to real ids */
++ if (seteuid(ruid) == -1 || setegid(rgid) == -1) {
++ return BadAccess;
++ }
++ }
++#endif
+ shmdesc->addr = shmat(stuff->shmid, 0,
+ stuff->readOnly ? SHM_RDONLY : 0);
++#ifdef HAS_SAVED_IDS_AND_SETEUID
++ if (euid != ruid || egid != rgid) {
++ /* Switch back to root privs */
++ if (seteuid(euid) == -1 || setegid(egid) == -1) {
++ return BadAccess;
++ }
++ }
++#endif
+ if ((shmdesc->addr == ((char *)-1)) ||
+ shmctl(stuff->shmid, IPC_STAT, &buf))
+ {
+ xfree(shmdesc);
+ return BadAccess;
+ }
++#ifndef HAS_SAVED_IDS_AND_SETEUID
++ /* The attach was performed with root privs. We must
++ * do manual checking of access rights for the real uid/gid */
++ if (shm_access(ruid, rgid, &(buf.shm_perm), stuff->readOnly) == -1) {
++ shmdt(shmdesc->addr);
++ xfree(shmdesc);
++ return BadAccess;
++ }
++#endif
+ shmdesc->shmid = stuff->shmid;
+ shmdesc->refcnt = 1;
+ shmdesc->writable = !stuff->readOnly;
+Index: programs/Xserver/hw/darwin/darwinKeyboard.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/darwin/darwinKeyboard.c,v
+retrieving revision 1.14
+retrieving revision 1.14.2.1
+diff -u -r1.14 -r1.14.2.1
+--- programs/Xserver/hw/darwin/darwinKeyboard.c 2001/12/05 06:27:43 1.14
++++ programs/Xserver/hw/darwin/darwinKeyboard.c 2002/02/07 02:53:11 1.14.2.1
+@@ -36,7 +36,7 @@
+ //
+ //=============================================================================
+
+-/* $XFree86: xc/programs/Xserver/hw/darwin/darwinKeyboard.c,v 1.14 2001/12/05 06:27:43 torrey Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/darwin/darwinKeyboard.c,v 1.14.2.1 2002/02/07 02:53:11 torrey Exp $ */
+
+ /*
+ ===========================================================================
+@@ -416,9 +416,9 @@
+ km.charP = inBuffer;
+ km.intP++;
+ while (km.intP+3 < bufferEnd) {
+- map_interface = *(km.intP++);
+- map_handler_id = *(km.intP++);
+- map_size = *(km.intP++);
++ map_interface = NXSwapBigIntToHost(*(km.intP++));
++ map_handler_id = NXSwapBigIntToHost(*(km.intP++));
++ map_size = NXSwapBigIntToHost(*(km.intP++));
+ if (map_interface == interface) {
+ if (map_handler_id == handler_id || hasInterface) {
+ hasMatch = TRUE;
+Index: programs/Xserver/hw/xfree86/CHANGELOG
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/CHANGELOG,v
+retrieving revision 3.2144
+retrieving revision 3.2144.2.13
+diff -u -r3.2144 -r3.2144.2.13
+--- programs/Xserver/hw/xfree86/CHANGELOG 2002/01/18 20:09:22 3.2144
++++ programs/Xserver/hw/xfree86/CHANGELOG 2002/05/03 00:36:17 3.2144.2.13
+@@ -1,3 +1,27 @@
++XFree86 4.2.0.1 (xx February 2002)
++ 704. Build with libcurses on Darwin for forward compatibility
++ (Jordan Hubbard).
++ 703. MIT-SHM updates (Roberto Zunino, Matthieu Herrb).
++ 702. Fix a problem related to reserving the overlay key in the default
++ colormap in 24+8 mode. This caused some clients using the 8-bit
++ visuals to fail (David Dawes).
++ 701. [SECURITY] Zlib error handling fix (Mark Adler).
++ 700. Put back XDarwin's byte-ordering fix for reading keymappings on
++ Darwin x86 that was inadvertently dropped (Rob Braun).
++ 699. Fix for `hostname` issue on Linux (Marc La France).
++ 698. Fix startx script for ksh (Philip B. Bruce).
++ 697. Fix Emulate3Buttons for wsmouse protocol on NetBSD and OpenBSD
++ (Matthieu Herrb).
++ 696. Temporary workaround for IA-64 (Marc La France).
++ 695. Fix SIGSEGV when printing modes that have no flags (Marc La France).
++ 694. Fix an unresolved symbol in libGLU.so that shows up when building it
++ with gcc-3 (David Dawes).
++ 693. Fix incorrect symbol prefixing with Xlib's i18n modules on Solaris,
++ and fix invalid code caused by a memcpy() macro being split by a
++ directive (Keith Packard, David Dawes, #5150, Sami Farin).
++ 692. Don't try to print mode names when NULL (David Dawes).
++ 691. Revert the ATI driver's composite sync default to off (Marc La France).
++
+ XFree86 4.2.0 (18 January 2002)
+ 690. Workaround for hardware bug that prevents older ATI 3D Rage adapters from
+ being assigned to XF86Config device sections (Marc La France).
+@@ -14555,4 +14579,4 @@
+ XFree86 3.0 (26 April 1994)
+
+
+-$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.2144 2002/01/18 20:09:22 dawes Exp $
++$XFree86: xc/programs/Xserver/hw/xfree86/CHANGELOG,v 3.2144.2.13 2002/05/03 00:36:17 torrey Exp $
+Index: programs/Xserver/hw/xfree86/xf86Version.h
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/xf86Version.h,v
+retrieving revision 3.487
+retrieving revision 3.487.2.3
+diff -u -r3.487 -r3.487.2.3
+--- programs/Xserver/hw/xfree86/xf86Version.h 2002/01/18 20:09:24 3.487
++++ programs/Xserver/hw/xfree86/xf86Version.h 2002/03/12 19:39:25 3.487.2.3
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.487 2002/01/18 20:09:24 dawes Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/xf86Version.h,v 3.487.2.3 2002/03/12 19:39:25 dawes Exp $ */
+
+ #ifndef XF86_VERSION_CURRENT
+
+@@ -24,7 +24,7 @@
+ 0)
+
+
+-#define XF86_DATE "18 January 2002"
++#define XF86_DATE "11 March 2002"
+
+ #endif
+
+Index: programs/Xserver/hw/xfree86/common/xf86Mode.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v
+retrieving revision 1.48
+retrieving revision 1.48.2.3
+diff -u -r1.48 -r1.48.2.3
+--- programs/Xserver/hw/xfree86/common/xf86Mode.c 2001/12/06 15:40:27 1.48
++++ programs/Xserver/hw/xfree86/common/xf86Mode.c 2002/01/25 15:58:00 1.48.2.3
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v 1.48 2001/12/06 15:40:27 tsi Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Mode.c,v 1.48.2.3 2002/01/25 15:58:00 tsi Exp $ */
+
+ /*
+ * Copyright (c) 1997,1998 by The XFree86 Project, Inc.
+@@ -1805,46 +1805,41 @@
+ static void
+ add(char **p, char *new)
+ {
+- if (!*p) {
+- *p = xnfalloc(strlen(new) + 1);
+- strcpy(*p,new);
+- } else {
+- *p = xnfrealloc(*p,((*p)?strlen(*p):0) + strlen(new) + 2);
+- strcat(*p," ");
+- strcat(*p,new);
+- }
++ *p = xnfrealloc(*p, strlen(*p) + strlen(new) + 2);
++ strcat(*p, " ");
++ strcat(*p, new);
+ }
+
+ static void
+ PrintModeline(int scrnIndex,DisplayModePtr mode)
+ {
+ char tmp[256];
+- char *flags = NULL;
++ char *flags = xnfcalloc(1, 1);
+
+ if (mode->HSkew) {
+- snprintf(tmp,256,"hskew %i",mode->HSkew);
+- add(&flags,tmp);
++ snprintf(tmp, 256, "hskew %i", mode->HSkew);
++ add(&flags, tmp);
+ }
+ if (mode->VScan) {
+- snprintf(tmp,256,"vscan %i",mode->VScan);
+- add(&flags,tmp);
++ snprintf(tmp, 256, "vscan %i", mode->VScan);
++ add(&flags, tmp);
+ }
+- if (mode->Flags & V_INTERLACE) add(&flags,"interlace");
+- if (mode->Flags & V_CSYNC) add(&flags,"composite");
+- if (mode->Flags & V_DBLSCAN) add(&flags,"doublescan");
+- if (mode->Flags & V_BCAST) add(&flags,"bcast");
+- if (mode->Flags & V_PHSYNC) add(&flags,"+hsync");
+- if (mode->Flags & V_NHSYNC) add(&flags,"-hsync");
+- if (mode->Flags & V_PVSYNC) add(&flags,"+vsync");
+- if (mode->Flags & V_NVSYNC) add(&flags,"-vsync");
+- if (mode->Flags & V_PCSYNC) add(&flags,"+csync");
+- if (mode->Flags & V_NCSYNC) add(&flags,"-csync");
+- xf86DrvMsgVerb(scrnIndex,X_INFO,3,
+- "Modeline \"%s\" %6.2f %i %i %i %i %i %i %i %i %s\n",
+- mode->name,mode->Clock/1000., mode->HDisplay,
+- mode->HSyncStart,mode->HSyncEnd,mode->HTotal,
+- mode->VDisplay,mode->VSyncStart,mode->VSyncEnd,
+- mode->VTotal,flags);
++ if (mode->Flags & V_INTERLACE) add(&flags, "interlace");
++ if (mode->Flags & V_CSYNC) add(&flags, "composite");
++ if (mode->Flags & V_DBLSCAN) add(&flags, "doublescan");
++ if (mode->Flags & V_BCAST) add(&flags, "bcast");
++ if (mode->Flags & V_PHSYNC) add(&flags, "+hsync");
++ if (mode->Flags & V_NHSYNC) add(&flags, "-hsync");
++ if (mode->Flags & V_PVSYNC) add(&flags, "+vsync");
++ if (mode->Flags & V_NVSYNC) add(&flags, "-vsync");
++ if (mode->Flags & V_PCSYNC) add(&flags, "+csync");
++ if (mode->Flags & V_NCSYNC) add(&flags, "-csync");
++ xf86DrvMsgVerb(scrnIndex, X_INFO, 3,
++ "Modeline \"%s\" %6.2f %i %i %i %i %i %i %i %i%s\n",
++ mode->name, mode->Clock/1000., mode->HDisplay,
++ mode->HSyncStart, mode->HSyncEnd, mode->HTotal,
++ mode->VDisplay, mode->VSyncStart, mode->VSyncEnd,
++ mode->VTotal, flags);
+ xfree(flags);
+ }
+
+@@ -1897,8 +1892,13 @@
+ else
+ prefix = "Mode";
+ if (hsync == 0 || refresh == 0) {
+- xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
+- "%s \"%s\"\n", prefix, p->name);
++ if (p->name)
++ xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
++ "%s \"%s\"\n", prefix, p->name);
++ else
++ xf86DrvMsg(scrp->scrnIndex, X_PROBED,
++ "%s %dx%d (unnamed)\n", prefix, p->HDisplay,
++ p->VDisplay);
+ } else if (p->Clock == p->SynthClock) {
+ xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
+ "%s \"%s\": %.1f MHz, %.1f kHz, %.1f Hz%s%s\n",
+Index: programs/Xserver/hw/xfree86/common/xf86pciBus.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c,v
+retrieving revision 3.48
+retrieving revision 3.48.2.1
+diff -u -r3.48 -r3.48.2.1
+--- programs/Xserver/hw/xfree86/common/xf86pciBus.c 2001/11/30 12:11:55 3.48
++++ programs/Xserver/hw/xfree86/common/xf86pciBus.c 2002/01/25 20:51:33 3.48.2.1
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c,v 3.48 2001/11/30 12:11:55 eich Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86pciBus.c,v 3.48.2.1 2002/01/25 20:51:33 tsi Exp $ */
+ /*
+ * Copyright (c) 1997-1999 by The XFree86 Project, Inc.
+ */
+@@ -1916,9 +1916,11 @@
+ pnPciBus = &PciBus->next;
+ PciBus->primary = -1;
+ PciBus->secondary = -1; /* to be set below */
++#ifndef __ia64__
+ PciBus->brbus = pcrp->busnum;
+ PciBus->brdev = pcrp->devnum;
+ PciBus->brfunc = pcrp->funcnum;
++#endif
+ PciBus->subclass = sub_class;
+ PciBus->brcontrol = PCI_PCI_BRIDGE_VGA_EN;
+ PciBus->preferred_io = xf86ExtractTypeFromList(
+Index: programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v
+retrieving revision 1.70
+retrieving revision 1.70.2.1
+diff -u -r1.70 -r1.70.2.1
+--- programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml 2002/01/17 18:14:59 1.70
++++ programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml 2002/01/21 19:02:04 1.70.2.1
+@@ -9,7 +9,7 @@
+ <date>17 January 2002
+
+ <ident>
+-$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.70 2002/01/17 18:14:59 dawes Exp $
++$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/RELNOTES.sgml,v 1.70.2.1 2002/01/21 19:02:04 dawes Exp $
+ </ident>
+
+ <abstract>
+@@ -955,7 +955,7 @@
+ <sect2>FreeType support in Xft
+ <p>
+
+-XFree86 &relvers; includes sources for FreeType version 2.0.1, and, by
++XFree86 &relvers; includes sources for FreeType version 2.0.6, and, by
+ default, they are built and installed automatically.
+
+ <p>
+@@ -988,13 +988,11 @@
+
+ <p>
+ By default, xterm uses core fonts through the standard core API. It has
+-two command line options and associated resources to direct it to use
++a command line option and associated resource to direct it to use
+ Xft instead:
+ <itemize>
+ <item><tt>-fa</tt> family / <tt>.VT100.faceName:</tt> family. Selects the
+ font family to use.
+- <item><tt>-fs</tt> pointsize / <tt>.VT100.faceSize:</tt> pointsize.
+- Selects the pointsize.
+ </itemize>
+
+ <p>
+Index: programs/Xserver/hw/xfree86/drivers/ati/aticonfig.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/aticonfig.c,v
+retrieving revision 1.9
+retrieving revision 1.9.2.1
+diff -u -r1.9 -r1.9.2.1
+--- programs/Xserver/hw/xfree86/drivers/ati/aticonfig.c 2002/01/16 16:22:26 1.9
++++ programs/Xserver/hw/xfree86/drivers/ati/aticonfig.c 2002/01/23 16:17:59 1.9.2.1
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/aticonfig.c,v 1.9 2002/01/16 16:22:26 tsi Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/aticonfig.c,v 1.9.2.1 2002/01/23 16:17:59 tsi Exp $ */
+ /*
+ * Copyright 2000 through 2002 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+ *
+@@ -143,7 +143,7 @@
+ ShadowFB = TRUE;
+ }
+
+- Blend = CSync = /* Sync = */ TRUE;
++ Blend = /* CSync = Sync = */ TRUE;
+
+ xf86ProcessOptions(pScreenInfo->scrnIndex, pScreenInfo->options,
+ PublicOption);
+Index: programs/Xserver/hw/xfree86/drivers/trident/trident_dac.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/trident/trident_dac.c,v
+retrieving revision 1.63
+retrieving revision 1.63.2.1
+diff -u -r1.63 -r1.63.2.1
+--- programs/Xserver/hw/xfree86/drivers/trident/trident_dac.c 2002/01/11 13:06:30 1.63
++++ programs/Xserver/hw/xfree86/drivers/trident/trident_dac.c 2002/03/29 18:34:24 1.63.2.1
+@@ -22,7 +22,7 @@
+ *
+ * Author: Alan Hourihane, alanh@fairlite.demon.co.uk
+ */
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_dac.c,v 1.63 2002/01/11 13:06:30 alanh Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_dac.c,v 1.63.2.1 2002/03/29 18:34:24 alanh Exp $ */
+
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
+@@ -191,7 +191,6 @@
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
+ vgaRegPtr regp = &hwp->ModeReg;
+ vgaRegPtr vgaReg = &hwp->ModeReg;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ /* Unprotect */
+@@ -640,7 +639,6 @@
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+ CARD8 temp;
+ int vgaIOBase;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ if (pTrident->Chipset > PROVIDIA9685) {
+@@ -773,7 +771,6 @@
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+ CARD8 temp;
+ int vgaIOBase;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ /* Goto New Mode */
+@@ -886,7 +883,6 @@
+ {
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+ int vgaIOBase;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ /* 64x64 */
+@@ -897,7 +893,6 @@
+ TridentHideCursor(ScrnInfoPtr pScrn) {
+ int vgaIOBase;
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ OUTW(vgaIOBase + 4, 0x4150);
+@@ -908,7 +903,6 @@
+ {
+ int vgaIOBase;
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ if (x < 0) {
+@@ -934,7 +928,6 @@
+ {
+ int vgaIOBase;
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+ OUTW(vgaIOBase + 4, (fg & 0x000000FF)<<8 | 0x48);
+ OUTW(vgaIOBase + 4, (fg & 0x0000FF00) | 0x49);
+@@ -954,7 +947,6 @@
+ {
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+ int vgaIOBase;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ memcpy((CARD8 *)pTrident->FbBase + (pScrn->videoRam * 1024) - 4096,
+Index: programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c,v
+retrieving revision 1.160
+retrieving revision 1.160.2.1
+diff -u -r1.160 -r1.160.2.1
+--- programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c 2002/01/15 18:31:19 1.160
++++ programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c 2002/03/29 18:34:24 1.160.2.1
+@@ -28,7 +28,7 @@
+ * Massimiliano Ghilardi, max@Linuz.sns.it, some fixes to the
+ * clockchip programming code.
+ */
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c,v 1.160 2002/01/15 18:31:19 alanh Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c,v 1.160.2.1 2002/03/29 18:34:24 alanh Exp $ */
+
+ #include "xf1bpp.h"
+ #include "xf4bpp.h"
+@@ -2598,7 +2598,6 @@
+ vgaHWSetMmioFuncs(hwp, pTrident->IOBase, 0);
+ }
+
+- vgaHWGetIOBase(hwp);
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ /* Save the current state */
+Index: programs/Xserver/hw/xfree86/drivers/trident/trident_video.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/trident/trident_video.c,v
+retrieving revision 1.21
+retrieving revision 1.21.2.1
+diff -u -r1.21 -r1.21.2.1
+--- programs/Xserver/hw/xfree86/drivers/trident/trident_video.c 2002/01/13 00:15:52 1.21
++++ programs/Xserver/hw/xfree86/drivers/trident/trident_video.c 2002/01/28 14:32:55 1.21.2.1
+@@ -21,7 +21,7 @@
+ *
+ * Author: Alan Hourihane, alanh@fairlite.demon.co.uk
+ */
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_video.c,v 1.21 2002/01/13 00:15:52 alanh Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/trident_video.c,v 1.21.2.1 2002/01/28 14:32:55 alanh Exp $ */
+
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
+@@ -1356,6 +1356,8 @@
+
+ pTrident->hsync = (HTotal - HSyncStart) + 23 + h_off;
+ pTrident->vsync = (VTotal - VSyncStart) - 2 + v_off;
++ pTrident->hsync_rskew = 0;
++ pTrident->vsync_bskew = 0;
+
+ /*
+ * HACK !! As awful as this is, it appears to be the only way....Sigh!
+Index: programs/Xserver/hw/xfree86/drivers/trident/tvga_dac.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/trident/tvga_dac.c,v
+retrieving revision 1.5
+retrieving revision 1.5.4.1
+diff -u -r1.5 -r1.5.4.1
+--- programs/Xserver/hw/xfree86/drivers/trident/tvga_dac.c 2001/09/12 13:50:12 1.5
++++ programs/Xserver/hw/xfree86/drivers/trident/tvga_dac.c 2002/03/29 18:34:24 1.5.4.1
+@@ -21,7 +21,7 @@
+ *
+ * Author: Alan Hourihane, alanh@fairlite.demon.co.uk
+ */
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/tvga_dac.c,v 1.5 2001/09/12 13:50:12 alanh Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/trident/tvga_dac.c,v 1.5.4.1 2002/03/29 18:34:24 alanh Exp $ */
+
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
+@@ -43,7 +43,6 @@
+ int vgaIOBase;
+ int offset = 0;
+ int clock = mode->Clock;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ OUTB(0x3C4, 0x0B); INB(0x3C5); /* Ensure we are in New Mode */
+@@ -140,7 +139,6 @@
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+ CARD8 temp;
+ int vgaIOBase;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ /* Goto Old Mode */
+@@ -188,7 +186,6 @@
+ TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
+ CARD8 temp;
+ int vgaIOBase;
+- vgaHWGetIOBase(VGAHWPTR(pScrn));
+ vgaIOBase = VGAHWPTR(pScrn)->IOBase;
+
+ temp = INB(0x3C8);
+Index: programs/Xserver/hw/xfree86/etc/Xinstall.sh
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh,v
+retrieving revision 1.37
+retrieving revision 1.37.2.1
+diff -u -r1.37 -r1.37.2.1
+--- programs/Xserver/hw/xfree86/etc/Xinstall.sh 2002/01/17 20:54:23 1.37
++++ programs/Xserver/hw/xfree86/etc/Xinstall.sh 2002/02/05 22:51:04 1.37.2.1
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+
+ #
+-# $XFree86: xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh,v 1.37 2002/01/17 20:54:23 dawes Exp $
++# $XFree86: xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh,v 1.37.2.1 2002/02/05 22:51:04 torrey Exp $
+ #
+ # Copyright © 2000 by Precision Insight, Inc.
+ # Copyright © 2000, 2001 by VA Linux Systems, Inc.
+@@ -435,7 +435,7 @@
+ 1.[2-3]*)
+ DistName="Darwin-ppc-1.x"
+ ;;
+- 1.4.* | 5.*)
++ 1.4* | 5.*)
+ DistName="Darwin-ppc-5.x"
+ ;;
+ [6-9].*)
+@@ -448,7 +448,7 @@
+ ;;
+ x86*)
+ case "$OsVersion" in
+- 1.4.* | 5.*)
++ 1.4* | 5.*)
+ DistName="Darwin-ix86-5.x"
+ ;;
+ [6-9].*)
+Index: programs/Xserver/hw/xfree86/input/hyperpen/xf86HyperPen.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/input/hyperpen/xf86HyperPen.c,v
+retrieving revision 1.5
+retrieving revision 1.5.2.1
+diff -u -r1.5 -r1.5.2.1
+--- programs/Xserver/hw/xfree86/input/hyperpen/xf86HyperPen.c 2001/12/26 21:51:58 1.5
++++ programs/Xserver/hw/xfree86/input/hyperpen/xf86HyperPen.c 2002/02/25 20:17:51 1.5.2.1
+@@ -35,7 +35,7 @@
+ * TORTIOUS ACTIONS, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/input/hyperpen/xf86HyperPen.c,v 1.5 2001/12/26 21:51:58 dawes Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/input/hyperpen/xf86HyperPen.c,v 1.5.2.1 2002/02/25 20:17:51 dawes Exp $ */
+
+ #include <xf86Version.h>
+
+@@ -1779,7 +1779,7 @@
+ /* a tool */
+ };
+
+-XF86ModuleData HyperPenModuleData = {&xf86HypVersionRec,
++XF86ModuleData hyperpenModuleData = {&xf86HypVersionRec,
+ xf86HypPlug,
+ xf86HypUnplug};
+
+Index: programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c,v
+retrieving revision 1.20
+retrieving revision 1.20.2.1
+diff -u -r1.20 -r1.20.2.1
+--- programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c 2002/01/14 15:34:23 1.20
++++ programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c 2002/01/27 19:05:19 1.20.2.1
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c,v 1.20 2002/01/14 15:34:23 dawes Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_mouse.c,v 1.20.2.1 2002/01/27 19:05:19 herrb Exp $ */
+
+ /*
+ * Copyright 1999 by The XFree86 Project, Inc.
+@@ -36,9 +36,6 @@
+ #define UMS_BUT(i) ((i) == 0 ? 2 : (i) == 1 ? 0 : (i) == 2 ? 1 : (i))
+ #endif /* USBMOUSE_SUPPORT */
+
+-#ifdef WSCONS_SUPPORT
+-static void wsconsSigioReadInput (int fd, void *closure);
+-#endif
+ #ifdef USBMOUSE_SUPPORT
+ static void usbSigioReadInput (int fd, void *closure);
+ #endif
+@@ -196,82 +193,6 @@
+ #if defined(WSCONS_SUPPORT)
+ #define NUMEVENTS 64
+
+-static int
+-wsconsMouseProc(DeviceIntPtr pPointer, int what)
+-{
+- InputInfoPtr pInfo;
+- MouseDevPtr pMse;
+- unsigned char map[MSE_MAXBUTTONS + 1];
+- int nbuttons;
+-
+- pInfo = pPointer->public.devicePrivate;
+- pMse = pInfo->private;
+- pMse->device = pPointer;
+-
+- switch (what) {
+- case DEVICE_INIT:
+- pPointer->public.on = FALSE;
+-
+- for (nbuttons = 0; nbuttons < MSE_MAXBUTTONS; ++nbuttons)
+- map[nbuttons + 1] = nbuttons + 1;
+-
+- InitPointerDeviceStruct((DevicePtr)pPointer,
+- map,
+- min(pMse->buttons, MSE_MAXBUTTONS),
+- miPointerGetMotionEvents,
+- pMse->Ctrl,
+- miPointerGetMotionBufferSize());
+-
+- /* X valuator */
+- xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
+- xf86InitValuatorDefaults(pPointer, 0);
+- /* Y valuator */
+- xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
+- xf86InitValuatorDefaults(pPointer, 1);
+- xf86MotionHistoryAllocate(pInfo);
+- break;
+-
+- case DEVICE_ON:
+- pInfo->fd = xf86OpenSerial(pInfo->options);
+- if (pInfo->fd == -1)
+- xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
+- else {
+- pMse->buffer = XisbNew(pInfo->fd,
+- NUMEVENTS * sizeof(struct wscons_event));
+- if (!pMse->buffer) {
+- xfree(pMse);
+- xf86CloseSerial(pInfo->fd);
+- pInfo->fd = -1;
+- } else {
+- xf86FlushInput(pInfo->fd);
+- if (!xf86InstallSIGIOHandler (pInfo->fd, wsconsSigioReadInput, pInfo))
+- AddEnabledDevice(pInfo->fd);
+- }
+- }
+- pMse->lastButtons = 0;
+- pMse->emulateState = 0;
+- pPointer->public.on = TRUE;
+- break;
+-
+- case DEVICE_OFF:
+- case DEVICE_CLOSE:
+- if (pInfo->fd != -1) {
+- RemoveEnabledDevice(pInfo->fd);
+- if (pMse->buffer) {
+- XisbFree(pMse->buffer);
+- pMse->buffer = NULL;
+- }
+- xf86CloseSerial(pInfo->fd);
+- pInfo->fd = -1;
+- }
+- pPointer->public.on = FALSE;
+- usleep(300000);
+- break;
+- }
+- return Success;
+-}
+-
+-
+ static void
+ wsconsReadInput(InputInfoPtr pInfo)
+ {
+@@ -328,12 +249,6 @@
+ return;
+ }
+
+-static void
+-wsconsSigioReadInput (int fd, void *closure)
+-{
+- wsconsReadInput ((InputInfoPtr) closure);
+-}
+-
+
+ /* This function is called when the protocol is "wsmouse". */
+ static Bool
+@@ -365,8 +280,7 @@
+ /* Process common mouse options (like Emulate3Buttons, etc). */
+ pMse->CommonOptions(pInfo);
+
+- /* Setup the local procs. */
+- pInfo->device_control = wsconsMouseProc;
++ /* Setup the local input proc. */
+ pInfo->read_input = wsconsReadInput;
+
+ pInfo->flags |= XI86_CONFIGURED;
+Index: programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c,v
+retrieving revision 1.8
+retrieving revision 1.8.8.1
+diff -u -r1.8 -r1.8.8.1
+--- programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c 2000/03/25 20:14:43 1.8
++++ programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c 2002/02/11 00:07:42 1.8.8.1
+@@ -1,4 +1,4 @@
+-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c,v 1.8 2000/03/25 20:14:43 mvojkovi Exp $ */
++/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_32bpp/xf86overlay.c,v 1.8.8.1 2002/02/11 00:07:42 dawes Exp $ */
+
+ /*
+ Copyright (C) 1998. The XFree86 Project Inc.
+@@ -311,6 +311,7 @@
+
+ pmap->red[pScrn->colorKey].refcnt = AllocPrivate;
+ pmap->red[pScrn->colorKey].fShared = FALSE;
++ pmap->freeRed--;
+
+ color.red = color.blue = color.green = 0;
+ color.pixel = pScrn->colorKey;
+Index: programs/Xserver/os/xdmcp.c
+===================================================================
+RCS file: /cvs/xc/programs/Xserver/os/xdmcp.c,v
+retrieving revision 3.20
+retrieving revision 3.20.4.1
+diff -u -r3.20 -r3.20.4.1
+--- programs/Xserver/os/xdmcp.c 2001/11/19 20:44:18 3.20
++++ programs/Xserver/os/xdmcp.c 2002/03/11 18:59:51 3.20.4.1
+@@ -13,7 +13,7 @@
+ * without express or implied warranty.
+ *
+ */
+-/* $XFree86: xc/programs/Xserver/os/xdmcp.c,v 3.20 2001/11/19 20:44:18 tsi Exp $ */
++/* $XFree86: xc/programs/Xserver/os/xdmcp.c,v 3.20.4.1 2002/03/11 18:59:51 keithp Exp $ */
+
+ #ifdef WIN32
+ /* avoid conflicting definitions */
+@@ -660,34 +660,17 @@
+ pointer pReadmask)
+ {
+ fd_set *LastSelectMask = (fd_set*)pReadmask;
+- CARD32 millisToGo, wtMillis;
+- static struct timeval waittime;
++ CARD32 millisToGo;
+
+ if (state == XDM_OFF)
+ return;
+ FD_SET(xdmcpSocket, LastSelectMask);
+ if (timeOutTime == 0)
+ return;
+- millisToGo = GetTimeInMillis();
+- if (millisToGo < timeOutTime)
+- millisToGo = timeOutTime - millisToGo;
+- else
++ millisToGo = timeOutTime - GetTimeInMillis();
++ if ((int) millisToGo < 0)
+ millisToGo = 0;
+- if (*wt == NULL)
+- {
+- waittime.tv_sec = (millisToGo) / 1000;
+- waittime.tv_usec = 1000 * (millisToGo % 1000);
+- *wt = &waittime;
+- }
+- else
+- {
+- wtMillis = (*wt)->tv_sec * 1000 + (*wt)->tv_usec / 1000;
+- if (millisToGo < wtMillis)
+- {
+- (*wt)->tv_sec = (millisToGo) / 1000;
+- (*wt)->tv_usec = 1000 * (millisToGo % 1000);
+- }
+- }
++ AdjustWaitForDelay (wt, millisToGo);
+ }
+
+ /*
+@@ -726,7 +709,7 @@
+ if (XFD_ANYSET(&AllClients) && state == XDM_RUN_SESSION)
+ timeOutTime = GetTimeInMillis() + keepaliveDormancy * 1000;
+ }
+- else if (timeOutTime && GetTimeInMillis() >= timeOutTime)
++ else if (timeOutTime && (int) (GetTimeInMillis() - timeOutTime) >= 0)
+ {
+ if (state == XDM_RUN_SESSION)
+ {
+Index: programs/scripts/xon.sh
+===================================================================
+RCS file: /cvs/xc/programs/scripts/xon.sh,v
+retrieving revision 1.5
+retrieving revision 1.5.2.1
+diff -u -r1.5 -r1.5.2.1
+--- programs/scripts/xon.sh 2002/01/07 22:00:32 1.5
++++ programs/scripts/xon.sh 2002/01/28 18:27:33 1.5.2.1
+@@ -1,5 +1,6 @@
+ #!/bin/sh
+ # $Xorg: xon.sh,v 1.4 2000/12/20 16:50:07 pookie Exp $
++# $XFree86: xc/programs/scripts/xon.sh,v 1.5.2.1 2002/01/28 18:27:33 tsi Exp $
+ # start up xterm (or any other X command) on the specified host
+ # Usage: xon host [arguments] [command]
+
+@@ -47,7 +48,11 @@
+ :*)
+ case `uname` in
+ Linux*)
+- fullname=`hostname -f`
++ if [ -z "`hostname --version | grep GNU`" ]; then
++ fullname=`hostname -f`
++ else
++ fullname=`hostname`
++ fi
+ ;;
+ *)
+ fullname=`uname -n`
+Index: programs/xinit/startx.cpp
+===================================================================
+RCS file: /cvs/xc/programs/xinit/startx.cpp,v
+retrieving revision 3.12
+retrieving revision 3.12.2.2
+diff -u -r3.12 -r3.12.2.2
+--- programs/xinit/startx.cpp 2001/11/30 20:57:48 3.12
++++ programs/xinit/startx.cpp 2002/01/28 18:27:34 3.12.2.2
+@@ -11,7 +11,7 @@
+ XCOMM
+ XCOMM Site administrators are STRONGLY urged to write nicer versions.
+ XCOMM
+-XCOMM $XFree86: xc/programs/xinit/startx.cpp,v 3.12 2001/11/30 20:57:48 dawes Exp $
++XCOMM $XFree86: xc/programs/xinit/startx.cpp,v 3.12.2.2 2002/01/28 18:27:34 tsi Exp $
+
+ #ifdef SCO
+
+@@ -139,24 +139,30 @@
+ fi
+
+ if [ x"$XAUTHORITY" = x ]; then
+- export XAUTHORITY=$HOME/.Xauthority
++ XAUTHORITY=$HOME/.Xauthority
++ export XAUTHORITY
+ fi
+
+ removelist=
+
+ #if defined(HAS_COOKIE_MAKER) && defined(MK_COOKIE)
+ XCOMM set up default Xauth info for this machine
+-#ifndef HOSTNAME
+-#ifdef __linux__
+-#define HOSTNAME hostname -f
+-#else
+-#define HOSTNAME hostname
+-#endif
+-#endif
++case `uname` in
++Linux*)
++ if [ -z "`hostname --version | grep GNU`" ]; then
++ hostname=`hostname -f`
++ else
++ hostname=`hostname`
++ fi
++ ;;
++*)
++ hostname=`hostname`
++ ;;
++esac
+
+ authdisplay=${display:-:0}
+ mcookie=`MK_COOKIE`
+-for displayname in $authdisplay `HOSTNAME`$authdisplay; do
++for displayname in $authdisplay $hostname$authdisplay; do
+ if ! xauth list "$displayname" | grep "$displayname " >/dev/null 2>&1; then
+ xauth add $displayname . $mcookie
+ removelist="$displayname $removelist"