Module Name:    xsrc
Committed By:   mrg
Date:           Fri Jul 11 18:55:24 UTC 2014

Modified Files:
        xsrc/external/mit/libFS/dist/src: FSlibInt.c
        xsrc/external/mit/libFS/include: config.h

Log Message:
merge libFS 1.0.6.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/libFS/dist/src/FSlibInt.c
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/libFS/include/config.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/libFS/dist/src/FSlibInt.c
diff -u xsrc/external/mit/libFS/dist/src/FSlibInt.c:1.3 xsrc/external/mit/libFS/dist/src/FSlibInt.c:1.4
--- xsrc/external/mit/libFS/dist/src/FSlibInt.c:1.3	Thu May 30 20:24:25 2013
+++ xsrc/external/mit/libFS/dist/src/FSlibInt.c	Fri Jul 11 18:55:24 2014
@@ -58,6 +58,7 @@ in this Software without prior written a
 #endif
 #include <stdio.h>
 #include "FSlibint.h"
+#include <X11/Xtrans/Xtransint.h>
 #include <X11/Xos.h>
 
 static void _EatData32 ( FSServer *svr, unsigned long n );
@@ -65,11 +66,14 @@ static const char * _SysErrorMsg ( int n
 
 /* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
  * systems are broken and return EWOULDBLOCK when they should return EAGAIN
+ *
+ * Solaris defines EWOULDBLOCK to be EAGAIN, so don't need to check twice
+ * for it.
  */
 #ifdef WIN32
 #define ETEST() (WSAGetLastError() == WSAEWOULDBLOCK)
 #else
-#if defined(EAGAIN) && defined(EWOULDBLOCK)
+#if defined(EAGAIN) && defined(EWOULDBLOCK) && (EAGAIN != EWOULDBLOCK)
 #define ETEST() (errno == EAGAIN || errno == EWOULDBLOCK)
 #else
 #ifdef EAGAIN
@@ -172,42 +176,6 @@ _FSFlush(register FSServer *svr)
     svr->last_req = (char *) &_dummy_request;
 }
 
-int
-_FSEventsQueued(
-    register FSServer	*svr,
-    int			 mode)
-{
-    register BytesReadable_t len;
-    BytesReadable_t pend;
-    char        buf[BUFSIZE];
-    register fsReply *rep;
-
-    if (mode == QueuedAfterFlush) {
-	_FSFlush(svr);
-	if (svr->qlen)
-	    return (svr->qlen);
-    }
-    if (_FSTransBytesReadable(svr->trans_conn, &pend) < 0)
-	(*_FSIOErrorFunction) (svr);
-    if ((len = pend) < SIZEOF(fsReply))
-	return (svr->qlen);	/* _FSFlush can enqueue events */
-    else if (len > BUFSIZE)
-	len = BUFSIZE;
-    len /= SIZEOF(fsReply);
-    pend = len * SIZEOF(fsReply);
-    _FSRead(svr, buf, (long) pend);
-
-    /* no space between comma and type or else macro will die */
-    STARTITERATE(rep, fsReply, buf, (len > 0), len--) {
-	if (rep->generic.type == FS_Error)
-	    _FSError(svr, (fsError *) rep);
-	else			/* must be an event packet */
-	    _FSEnq(svr, (fsEvent *) rep);
-    }
-    ENDITERATE
-	return (svr->qlen);
-}
-
 /* _FSReadEvents - Flush the output queue,
  * then read as many events as possible (but at least 1) and enqueue them
  */
@@ -330,137 +298,6 @@ _FSRead(
     }
 }
 
-#ifdef WORD64
-/*
- * XXX This is a *really* stupid way of doing this....
- */
-
-#define PACKBUFFERSIZE 4096
-
-
-/*
- * _FSRead32 - Read bytes from the socket unpacking each 32 bits
- *            into a long (64 bits on a CRAY computer).
- *
- */
-static void
-_doFSRead32(
-    register FSServer	*svr,
-    register long	*data,
-    register long	 size,
-    register char	*packbuffer)
-{
-    long       *lpack,
-               *lp;
-    long        mask32 = 0x00000000ffffffff;
-    long        maskw,
-                nwords,
-                i,
-                bits;
-
-    _FSReadPad(svr, packbuffer, size);
-
-    lp = data;
-    lpack = (long *) packbuffer;
-    nwords = size >> 2;
-    bits = 32;
-
-    for (i = 0; i < nwords; i++) {
-	maskw = mask32 << bits;
-	*lp++ = (*lpack & maskw) >> bits;
-	bits = bits ^ 32;
-	if (bits) {
-	    lpack++;
-	}
-    }
-}
-
-void
-_FSRead32(
-    FSServer	*svr,
-    long	*data,
-    long	 len)
-{
-    char        packbuffer[PACKBUFFERSIZE];
-    unsigned    nwords = (PACKBUFFERSIZE >> 2);	/* bytes to CARD32 */
-
-    for (; len > nwords; len -= nwords, data += nwords) {
-	_doFSRead32(svr, data, nwords, packbuffer);
-    }
-    _doFSRead32(svr, data, len, packbuffer);
-}
-
-
-
-/*
- * _FSRead16 - Read bytes from the socket unpacking each 16 bits
- *            into a long (64 bits on a CRAY computer).
- *
- */
-static void
-_doFSRead16(
-    register FSServer	*svr,
-    register short	*data,
-    register long	 size,
-    char		*packbuffer)
-{
-    long       *lpack,
-               *lp;
-    long        mask16 = 0x000000000000ffff;
-    long        maskw,
-                nwords,
-                i,
-                bits;
-
-    _FSRead(svr, packbuffer, size);	/* don't do a padded read... */
-
-    lp = (long *) data;
-    lpack = (long *) packbuffer;
-    nwords = size >> 1;		/* number of 16 bit words to be unpacked */
-    bits = 48;
-    for (i = 0; i < nwords; i++) {
-	maskw = mask16 << bits;
-	*lp++ = (*lpack & maskw) >> bits;
-	bits -= 16;
-	if (bits < 0) {
-	    lpack++;
-	    bits = 48;
-	}
-    }
-}
-
-void
-_FSRead16(
-    FSServer	*svr,
-    short	*data,
-    long	 len)
-{
-    char        packbuffer[PACKBUFFERSIZE];
-    unsigned    nwords = (PACKBUFFERSIZE >> 1);	/* bytes to CARD16 */
-
-    for (; len > nwords; len -= nwords, data += nwords) {
-	_doFSRead16(svr, data, nwords, packbuffer);
-    }
-    _doFSRead16(svr, data, len, packbuffer);
-}
-
-void
-_FSRead16Pad(
-    FSServer	*svr,
-    short	*data,
-    long	 size)
-{
-    int         slop = (size & 3);
-    short       slopbuf[3];
-
-    _FSRead16(svr, data, size);
-    if (slop > 0) {
-	_FSRead16(svr, slopbuf, 4 - slop);
-    }
-}
-
-#endif				/* WORD64 */
-
 
 /*
  * _FSReadPad - Read bytes from the socket taking into account incomplete
@@ -491,7 +328,7 @@ _FSReadPad(
     size += iov[1].iov_len;
 
     ESET(0);
-    while ((bytes_read = _FSTransReadv(svr->trans_conn, iov, 2)) != size) {
+    while ((bytes_read = readv(svr->trans_conn->fd, iov, 2)) != size) {
 
 	if (bytes_read > 0) {
 	    size -= bytes_read;
@@ -683,7 +520,7 @@ _FSReply(
     register fsReply	*rep,
     int			 extra,	 /* number of 32-bit words expected after the
 				  * reply */
-    Bool		 discard)/* should I discard data followind "extra"
+    Bool		 discard)/* should I discard data following "extra"
 				  * words? */
 {
     /*
@@ -909,35 +746,6 @@ _FSUnknownNativeEvent(
     return (0);
 }
 
-/*
- * reformat a wire event into an FSEvent structure of the right type.
- */
-Bool
-_FSWireToEvent(
-    register FSServer	*svr,	/* pointer to display structure */
-    register FSEvent	*re,	/* pointer to where event should be
-				 * reformatted */
-    register fsEvent	*event)	/* wire protocol event */
-{
-
-    re->type = event->type & 0x7f;
-    ((FSAnyEvent *) re)->serial = _FSSetLastRequestRead(svr,
-						   (fsGenericReply *) event);
-    ((FSAnyEvent *) re)->send_event = ((event->type & 0x80) != 0);
-    ((FSAnyEvent *) re)->server = svr;
-
-    /*
-     * Ignore the leading bit of the event type since it is set when a client
-     * sends an event rather than the server.
-     */
-
-    switch (event->type & 0177) {
-    default:
-	return (_FSUnknownWireEvent(svr, re, event));
-    }
-}
-
-
 static const char *
 _SysErrorMsg(int n)
 {
@@ -1042,7 +850,11 @@ _FSPrintDefaultError(
 		ext && (ext->codes.major_opcode != event->request_code);
 		ext = ext->next);
 	if (ext)
+#ifdef HAVE_STRLCPY
+	    strlcpy(buffer, ext->name, sizeof(buffer));
+#else
 	    strcpy(buffer, ext->name);
+#endif
 	else
 	    buffer[0] = '\0';
     }
@@ -1091,25 +903,6 @@ _FSDefaultError(
 FSIOErrorHandler _FSIOErrorFunction = _FSDefaultIOError;
 FSErrorHandler _FSErrorFunction = _FSDefaultError;
 
-/*
- * This routine can be used to (cheaply) get some memory within a single
- * Xlib routine for scratch space.  It is reallocated from the same place
- * each time, unless the library needs a large scratch space.
- */
-char       *
-_FSAllocScratch(
-    register FSServer	*svr,
-    unsigned long	 nbytes)
-{
-    if (nbytes > svr->scratch_length) {
-	if (svr->scratch_buffer != NULL)
-	    FSfree(svr->scratch_buffer);
-	return (svr->scratch_length = nbytes,
-		svr->scratch_buffer = FSmalloc(nbytes));
-    }
-    return (svr->scratch_buffer);
-}
-
 int
 FSFree(char *data)
 {
@@ -1141,138 +934,6 @@ Data(
 #endif				/* DataRoutineIsProcedure */
 
 
-#ifdef WORD64
-/*
- * XXX This is a *really* stupid way of doing this.  It should just use
- * svr->bufptr directly, taking into account where in the word it is.
- */
-
-/*
- * Data16 - Place 16 bit data in the buffer.
- *
- * "svr" is a pointer to a FSServer.
- * "data" is a pointer to the data.
- * "len" is the length in bytes of the data.
- */
-
-static void
-doData16(
-    register FSServer	*svr,
-    short		 *data,
-    unsigned		 len,
-    char		*packbuffer)
-{
-    long       *lp,
-               *lpack;
-    long        i,
-                nwords,
-                bits;
-    long        mask16 = 0x000000000000ffff;
-
-    lp = (long *) data;
-    lpack = (long *) packbuffer;
-    *lpack = 0;
-
-/*  nwords is the number of 16 bit values to be packed,
- *  the low order 16 bits of each word will be packed
- *  into 64 bit words
- */
-    nwords = len >> 1;
-    bits = 48;
-
-    for (i = 0; i < nwords; i++) {
-	*lpack ^= (*lp & mask16) << bits;
-	bits -= 16;
-	lp++;
-	if (bits < 0) {
-	    lpack++;
-	    *lpack = 0;
-	    bits = 48;
-	}
-    }
-    Data(svr, packbuffer, len);
-}
-
-void
-Data16(
-    FSServer	*svr,
-    short	*data,
-    unsigned	 len)
-{
-    char        packbuffer[PACKBUFFERSIZE];
-    unsigned    nwords = (PACKBUFFERSIZE >> 1);	/* bytes to CARD16 */
-
-    for (; len > nwords; len -= nwords, data += nwords) {
-	doData16(svr, data, nwords, packbuffer);
-    }
-    doData16(svr, data, len, packbuffer);
-}
-
-/*
- * Data32 - Place 32 bit data in the buffer.
- *
- * "svr" is a pointer to a FSServer.
- * "data" is a pointer to the data.
- * "len" is the length in bytes of the data.
- */
-
-static
-doData32(
-    register FSServer	*svr,
-    long		*data,
-    unsigned		 len,
-    char		*packbuffer)
-{
-    long       *lp,
-               *lpack;
-    long        i,
-                bits,
-                nwords;
-    long        mask32 = 0x00000000ffffffff;
-
-    lpack = (long *) packbuffer;
-    lp = data;
-
-    *lpack = 0;
-
-/*  nwords is the number of 32 bit values to be packed
- *  the low order 32 bits of each word will be packed
- *  into 64 bit words
- */
-    nwords = len >> 2;
-    bits = 32;
-
-    for (i = 0; i < nwords; i++) {
-	*lpack ^= (*lp & mask32) << bits;
-	bits = bits ^ 32;
-	lp++;
-	if (bits) {
-	    lpack++;
-	    *lpack = 0;
-	}
-    }
-    Data(svr, packbuffer, len);
-}
-
-void
-Data32(
-    FSServer	*svr,
-    short	*data,
-    unsigned	 len)
-{
-    char        packbuffer[PACKBUFFERSIZE];
-    unsigned    nwords = (PACKBUFFERSIZE >> 2);	/* bytes to CARD32 */
-
-    for (; len > nwords; len -= nwords, data += nwords) {
-	doData32(svr, data, nwords, packbuffer);
-    }
-    doData32(svr, data, len, packbuffer);
-}
-
-#endif				/* WORD64 */
-
-
-
 /*
  * _FSFreeQ - free the queue of events, called by XCloseServer when there are
  * no more displays left on the display list
@@ -1293,57 +954,6 @@ _FSFreeQ(void)
     return;
 }
 
-#ifdef _POSIX_SOURCE                     /* stupid makedepend [need if] */
-#ifndef __QNX__ /* QNX's uname nodename entry is not same as tcpip hostname */
-#define NEED_UTSNAME
-#endif
-#endif
-#ifdef hpux
-#define NEED_UTSNAME
-#endif
-#ifdef SVR4
-#ifndef _SEQUENT_
-#define NEED_UTSNAME
-#endif
-#endif
-
-#ifdef NEED_UTSNAME
-#include <sys/utsname.h>
-#endif
-
-
-/*
- * _FSGetHostname - similar to gethostname but allows special processing.
- */
-int
-_FSGetHostname(
-    char	*buf,
-    int		 maxlen)
-{
-    int         len;
-
-#ifdef NEED_UTSNAME
-    /*
-     * same host name crock as in server and xinit.
-     */
-    struct utsname name;
-
-    uname(&name);
-    len = strlen(name.nodename);
-    if (len >= maxlen)
-	len = maxlen - 1;
-    strncpy(buf, name.nodename, len);
-    buf[len] = '\0';
-#else
-    buf[0] = '\0';
-    (void) gethostname(buf, maxlen);
-    buf[maxlen - 1] = '\0';
-    len = strlen(buf);
-#endif				/* NEED_UTSNAME */
-
-    return len;
-}
-
 #ifndef _FSANYSET
 /*
  * This is not always a macro.

Index: xsrc/external/mit/libFS/include/config.h
diff -u xsrc/external/mit/libFS/include/config.h:1.4 xsrc/external/mit/libFS/include/config.h:1.5
--- xsrc/external/mit/libFS/include/config.h:1.4	Sun Nov 21 06:40:44 2010
+++ xsrc/external/mit/libFS/include/config.h	Fri Jul 11 18:55:24 2014
@@ -31,6 +31,9 @@
 /* Define to 1 if you have the <string.h> header file. */
 #define HAVE_STRING_H 1
 
+/* Define to 1 if you have the `strlcpy' function. */
+#define HAVE_STRLCPY 1
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #define HAVE_SYS_STAT_H 1
 
@@ -60,7 +63,7 @@
 #define PACKAGE_NAME "libFS"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libFS 1.0.3"
+#define PACKAGE_STRING "libFS 1.0.6"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libFS"
@@ -69,7 +72,7 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.0.3"
+#define PACKAGE_VERSION "1.0.6"
 
 /* Major version of this package */
 #define PACKAGE_VERSION_MAJOR 1
@@ -78,7 +81,7 @@
 #define PACKAGE_VERSION_MINOR 0
 
 /* Patch version of this package */
-#define PACKAGE_VERSION_PATCHLEVEL 3
+#define PACKAGE_VERSION_PATCHLEVEL 6
 
 /* Define as the return type of signal handlers (`int' or `void'). */
 #define RETSIGTYPE void
@@ -93,4 +96,4 @@
 #define UNIXCONN 1
 
 /* Version number of package */
-#define VERSION "1.0.3"
+#define VERSION "1.0.6"

Reply via email to