[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libfs: Changes to 'upstream-unstable'



 README                    |    2 
 configure.ac              |   10 +
 include/X11/fonts/FSlib.h |    4 
 src/FSErrDis.c            |    9 -
 src/FSOpenServ.c          |   13 -
 src/FSlibInt.c            |  412 +---------------------------------------------
 src/FSlibint.h            |  105 -----------
 src/FSlibos.h             |    5 
 8 files changed, 35 insertions(+), 525 deletions(-)

New commits:
commit 88be5c37c40070305e64c4b8dc0a1c1f6ca80440
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Mar 16 10:44:14 2014 -0700

    libFS 1.0.6
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/configure.ac b/configure.ac
index 26fffb1..03ecca4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libFS], [1.0.5],
+AC_INIT([libFS], [1.0.6],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libFS])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([config.h])

commit e5be46eceee9c0c0d5f0363d3e08b19f86f85fcb
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 23:07:12 2014 -0800

    Use strlcpy instead of strcpy/strncpy if it is available
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/configure.ac b/configure.ac
index bcc4187..26fffb1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,9 @@ PKG_CHECK_MODULES(FS, xproto >= 7.0.17 fontsproto xtrans)
 # Find needed libraries for TCP sockets (pre-pended in $LIBS)
 XTRANS_CONNECTION_FLAGS
 
+# Checks for library functions.
+AC_CHECK_FUNCS([strlcpy])
+
 # Allow checking code with lint, sparse, etc.
 XORG_WITH_LINT
 XORG_LINT_LIBRARY([FS])
diff --git a/src/FSErrDis.c b/src/FSErrDis.c
index 1a712ff..76ebab6 100644
--- a/src/FSErrDis.c
+++ b/src/FSErrDis.c
@@ -84,9 +84,14 @@ int FSGetErrorDatabaseText(
 {
     if (nbytes == 0)
 	return 0;
+#ifdef HAVE_STRLCPY
+    if (strlcpy(buffer, defaultp, nbytes) >= nbytes)
+	return 0;
+#else
     (void) strncpy(buffer, defaultp, nbytes);
     if ((strlen(defaultp) + 1) > nbytes)
 	buffer[nbytes - 1] = '\0';
+#endif
     return 1;
 }
 
diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index 71f6ac1..090da3f 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -850,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';
     }

commit e831ef9246684298c147f9b26de0810b8218c3cb
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 21:33:10 2014 -0800

    Replace malloc(strlen + 1); strcpy() with strdup()
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>

diff --git a/src/FSOpenServ.c b/src/FSOpenServ.c
index b8ccb2f..faebe13 100644
--- a/src/FSOpenServ.c
+++ b/src/FSOpenServ.c
@@ -127,10 +127,9 @@ FSOpenServer(const char *server)
 	return (FSServer *) NULL;
     }
 
-    if ((svr->server_name = FSmalloc(strlen(server) + 1)) == NULL) {
+    if ((svr->server_name = strdup(server)) == NULL) {
 	goto fail;
     }
-    (void) strcpy(svr->server_name, server);
 
     if ((svr->trans_conn = _FSConnectServer(svr->server_name)) == NULL) {
 	goto fail;

commit 980cf8ac0c636ff7ef1fccb9e74f116ac5ea34ae
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 21:13:30 2014 -0800

    Remove unused internal helper _FSWireToEvent
    
    Since we build with -export-symbols-regex '^FS.*', it wasn't available
    to callers outside libFS, and was never called by anything inside libFS.
    
    Seems to have been imported from XlibInt.c without ever being used.
    
    Flagged by cppcheck 1.62:
    [FSlibInt.c:753]: (style) The function '_FSWireToEvent' is never used.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>

diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index eeab20c..71f6ac1 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -746,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)
 {
diff --git a/src/FSlibint.h b/src/FSlibint.h
index b5aba87..5e539be 100644
--- a/src/FSlibint.h
+++ b/src/FSlibint.h
@@ -87,7 +87,6 @@ extern unsigned long _FSSetLastRequestRead ( FSServer *svr,
 extern int _FSUnknownWireEvent ( FSServer *svr, FSEvent *re, fsEvent *event );
 extern int _FSUnknownNativeEvent ( FSServer *svr, FSEvent *re,
 				   fsEvent *event );
-extern int _FSWireToEvent ( FSServer *svr, FSEvent *re, fsEvent *event );
 extern int _FSDefaultIOError ( FSServer *svr ) _X_NORETURN;
 extern int _FSPrintDefaultError ( FSServer *svr, FSErrorEvent *event,
 				  FILE *fp );

commit b9f27dc863c3ca01bb231ee48e84bc60b39d4f1f
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 20:55:33 2014 -0800

    Remove unused internal helper _FSEventsQueued
    
    Since we build with -export-symbols-regex '^FS.*', it wasn't available
    to callers outside libFS, and was never called by anything inside libFS.
    
    Seems to have been imported from XlibInt.c without ever being used.
    
    Flagged by cppcheck 1.62:
    [FSlibInt.c:180]: (style) The function '_FSEventsQueued' is never used.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>

diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index 48091cf..eeab20c 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -176,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
  */
diff --git a/src/FSlibint.h b/src/FSlibint.h
index b50509b..b5aba87 100644
--- a/src/FSlibint.h
+++ b/src/FSlibint.h
@@ -82,7 +82,6 @@ extern int _FSReply ( FSServer *svr, fsReply *rep, int extra, int discard );
 extern XtransConnInfo _FSConnectServer ( char *server_name );
 extern void _FSDisconnectServer ( XtransConnInfo trans_conn );
 extern void _FSSendClientPrefix ( FSServer *svr, fsConnClientPrefix *client );
-extern int _FSEventsQueued ( FSServer *svr, int mode );
 extern unsigned long _FSSetLastRequestRead ( FSServer *svr,
 					     fsGenericReply *rep );
 extern int _FSUnknownWireEvent ( FSServer *svr, FSEvent *re, fsEvent *event );

commit 37772516acb95b3c9934252994b7dfdc147dfd23
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 20:50:32 2014 -0800

    Remove unused internal helper _FSAllocScratch
    
    Since we build with -export-symbols-regex '^FS.*', it wasn't available
    to callers outside libFS, and was never called by anything inside libFS.
    
    Seems to have been imported from XlibInt.c without ever being used.
    The _FSserver fields that it used (and nothing else did) are replaced
    with "unused" placeholders to maintain struct layout/size.
    
    Flagged by cppcheck 1.62:
    [FSlibInt.c:973]: (style) The function '_FSAllocScratch' is never used.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>

diff --git a/include/X11/fonts/FSlib.h b/include/X11/fonts/FSlib.h
index 11b3ba6..1cd7f13 100644
--- a/include/X11/fonts/FSlib.h
+++ b/include/X11/fonts/FSlib.h
@@ -148,8 +148,8 @@ struct _FSServer {
     int         ext_number;
     Bool        (*event_vec[132]) (FSServer *, FSEvent *, fsEvent *);
     Status	(*wire_vec[132]) (FSServer *, FSEvent *, fsEvent *);
-    char       *scratch_buffer;
-    unsigned long scratch_length;
+    void         *unused_1; /* previously scratch_buffer */
+    unsigned long unused_2; /* previously scratch_length */
     FSSyncHandler synchandler;
     unsigned long flags;
     struct _XtransConnInfo *trans_conn; /* transport connection object */
diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index cd996d1..48091cf 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -964,25 +964,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)
 {
diff --git a/src/FSlibint.h b/src/FSlibint.h
index 7669778..b50509b 100644
--- a/src/FSlibint.h
+++ b/src/FSlibint.h
@@ -93,7 +93,6 @@ extern int _FSDefaultIOError ( FSServer *svr ) _X_NORETURN;
 extern int _FSPrintDefaultError ( FSServer *svr, FSErrorEvent *event,
 				  FILE *fp );
 extern int _FSDefaultError ( FSServer *svr, FSErrorEvent *event );
-extern char * _FSAllocScratch ( FSServer *svr, unsigned long nbytes );
 extern void _FSFreeQ ( void );
 
 extern FSErrorHandler  FSSetErrorHandler ( FSErrorHandler handler );

commit ac1eb6e3ea54724cf3ab3ad1ccf0595df9e34786
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 20:46:48 2014 -0800

    Remove unused internal helper _FSGetHostname
    
    Since we build with -export-symbols-regex '^FS.*', it wasn't available
    to callers outside libFS, and was never called by anything inside libFS.
    
    Xtrans provides it's own exact copy of this function, which gets
    the name _FSTransGetHostname when built in libFS, nothing in libFS
    outside the Xtrans code calls a gethostname() function.
    
    Flagged by cppcheck 1.62:
    [FSlibInt.c:1060]: (style) The function '_FSGetHostname' is never used.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>

diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index cb53e44..cd996d1 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -1034,57 +1034,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.
diff --git a/src/FSlibint.h b/src/FSlibint.h
index 60a2ce6..7669778 100644
--- a/src/FSlibint.h
+++ b/src/FSlibint.h
@@ -95,7 +95,6 @@ extern int _FSPrintDefaultError ( FSServer *svr, FSErrorEvent *event,
 extern int _FSDefaultError ( FSServer *svr, FSErrorEvent *event );
 extern char * _FSAllocScratch ( FSServer *svr, unsigned long nbytes );
 extern void _FSFreeQ ( void );
-extern int _FSGetHostname ( char *buf, int maxlen );
 
 extern FSErrorHandler  FSSetErrorHandler ( FSErrorHandler handler );
 extern FSIOErrorHandler FSSetIOErrorHandler ( FSIOErrorHandler handler );

commit a4c12fe0ca5cb359bffe08b26a92ddcf8e194441
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 20:04:33 2014 -0800

    If EAGAIN == EWOULDBLOCK, only need to check errno for one of them
    
    Solaris <sys/errno.h> has:
     #define EWOULDBLOCK       EAGAIN
    so checking (errno == EAGAIN || errno == EWOULDBLOCK) is overkill.
    
    This leads cppcheck 1.62 to complain:
    [FSlibInt.c:153] -> [FSlibInt.c:153]: (style) Same expression on both sides of '||'.
    [FSlibInt.c:301] -> [FSlibInt.c:301]: (style) Same expression on both sides of '||'.
    [FSlibInt.c:379] -> [FSlibInt.c:379]: (style) Same expression on both sides of '||'.
    [FSlibInt.c:472] -> [FSlibInt.c:472]: (style) Same expression on both sides of '||'.
    
    This quiets it, and reduces the number of calls Solaris Studio cc
    generates to the __errno() function to get the thread-specific errno value.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>

diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index 0fabc96..cb53e44 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -66,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

commit b6885f7aedc3b6eba62ffa1edac1e8488d938cea
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 3 19:57:09 2014 -0800

    Reduce scope & remove unneeded assignment of defaultp in FSGetErrorText()
    
    Suggested by cppcheck 1.62
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/FSErrDis.c b/src/FSErrDis.c
index e3d296e..1a712ff 100644
--- a/src/FSErrDis.c
+++ b/src/FSErrDis.c
@@ -96,8 +96,6 @@ int FSGetErrorText(
     char		*buffer,
     int			 nbytes)
 {
-
-    const char *defaultp = NULL;
     char        buf[32];
     register _FSExtension *ext;
 
@@ -105,7 +103,7 @@ int FSGetErrorText(
 	return 0;
     snprintf(buf, sizeof(buf), "%d", code);
     if (code < (FSErrorListSize / sizeof(char *)) && code >= 0) {
-	defaultp = FSErrorList[code];
+	const char *defaultp = FSErrorList[code];
 	FSGetErrorDatabaseText(svr, "FSProtoError", buf, defaultp, buffer, nbytes);
     }
     ext = svr->ext_procs;

commit dcb6c39feb63dcf7e843bd2394a2544fd4e79f9f
Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Date:   Thu Jan 2 01:03:49 2014 -0800

    FSOpenServer: Fix double-free in error path
    
    FSOpenServ.c:266:5: warning: Use of memory after it is freed
        OutOfMemory(svr, setup);
        ^~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>

diff --git a/src/FSOpenServ.c b/src/FSOpenServ.c
index 9b51e20..b8ccb2f 100644
--- a/src/FSOpenServ.c
+++ b/src/FSOpenServ.c
@@ -66,7 +66,7 @@ static fsReq _dummy_request = {
     0, 0, 0
 };
 
-static void OutOfMemory ( FSServer *svr, char *setup );
+static void OutOfMemory ( FSServer *svr );
 
 FSServer   *_FSHeadOfServerList = NULL;
 
@@ -85,13 +85,11 @@ void _FSFreeServerStructure(FSServer *svr)
 
 static
 void OutOfMemory(
-    FSServer	*svr,
-    char	*setup)
+    FSServer	*svr)
 {
     if (svr->trans_conn)
 	_FSDisconnectServer(svr->trans_conn);
     _FSFreeServerStructure(svr);
-    FSfree(setup);
     errno = ENOMEM;
 }
 
@@ -263,7 +261,7 @@ FSOpenServer(const char *server)
     FSfree(alts);
     FSfree(alt_data);
     FSfree(auth_data);
-    OutOfMemory(svr, setup);
+    OutOfMemory(svr);
     return (FSServer *) NULL;
 
 }

commit 4b0b74f953619164dc2863ee2cd3f09d15c65a51
Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Date:   Thu Jan 2 00:49:27 2014 -0800

    Update error loop to correctly handle error in i==0 case
    
    FSOpenServ.c:183:3: warning: Function call argument is an uninitialized value
                    FSfree(alts[i].name);
                    ^~~~~~~~~~~~~~~~~~~~
    ./FSlibos.h:273:21: note: expanded from macro 'FSfree'
                        ^~~~~~~~~~~
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>

diff --git a/src/FSOpenServ.c b/src/FSOpenServ.c
index 15a657a..9b51e20 100644
--- a/src/FSOpenServ.c
+++ b/src/FSOpenServ.c
@@ -179,7 +179,7 @@ FSOpenServer(const char *server)
 	altlen = (unsigned int) *ad++;
 	alts[i].name = FSmalloc(altlen + 1);
 	if (!alts[i].name) {
-	    while (--i) {
+	    while (--i >= 0) {
 		FSfree(alts[i].name);
 	    }
 	    goto fail;

commit 5ed8b4cf1f1c35ef35a3c94350e6b96646a2a0b7
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Dec 27 11:01:35 2013 -0800

    Add AC_USE_SYSTEM_EXTENSIONS to expose non-standard extensions
    
    Required on Solaris to expose fd_mask in <sys/select.h> now that
    xtrans 1.3 defines _XOPEN_SOURCE to 600 on Solaris, since fd_mask
    is not defined in that version of the XPG standards.
    
    Fixes build failure:
    ../../src/FSConnServ.c: In function '_FSWaitForWritable':
    ../../src/FSConnServ.c:166:6: error: 'fd_mask' undeclared (first use in this function)
    ../../src/FSConnServ.c:166:6: note: each undeclared identifier is reported only once for each function it appears in
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>

diff --git a/configure.ac b/configure.ac
index b00749f..bcc4187 100644
--- a/configure.ac
+++ b/configure.ac
@@ -30,6 +30,11 @@ AC_CONFIG_HEADERS([config.h])
 # Initialize Automake
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 
+# Set common system defines for POSIX extensions, such as _GNU_SOURCE
+# Must be called before any macros that run the compiler (like
+# AC_PROG_LIBTOOL) to avoid autoconf errors.
+AC_USE_SYSTEM_EXTENSIONS
+
 # Initialize libtool
 AC_PROG_LIBTOOL
 

commit 19ca53de0aae67b1f23085c832b445576c6a0b25
Author: Adam Jackson <ajax@redhat.com>
Date:   Fri Nov 1 11:14:58 2013 -0400

    Fix build with xtrans 1.3
    
    ->Readv was in fact being used, oops.  Just call straight down to
    readv() instead.
    
    Reviewed-by: Peter Harris <pharris@opentext.com>
    Signed-off-by: Adam Jackson <ajax@redhat.com>

diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index edc66ba..0fabc96 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -58,6 +58,7 @@ in this Software without prior written authorization from The Open Group.
 #endif
 #include <stdio.h>
 #include "FSlibint.h"
+#include <X11/Xtrans/Xtransint.h>
 #include <X11/Xos.h>
 
 static void _EatData32 ( FSServer *svr, unsigned long n );
@@ -360,7 +361,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;

commit 96243bfec19d0f543de3ef590a482f7f6dcdaa3d
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Mon Jun 24 22:52:09 2013 -0700

    Drop Cray (WORD64/MUSTCOPY) support
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/FSlibInt.c b/src/FSlibInt.c
index c6b1cb6..edc66ba 100644
--- a/src/FSlibInt.c
+++ b/src/FSlibInt.c
@@ -330,137 +330,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
@@ -1141,138 +1010,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
diff --git a/src/FSlibint.h b/src/FSlibint.h
index 00900fc..60a2ce6 100644
--- a/src/FSlibint.h
+++ b/src/FSlibint.h
@@ -113,27 +113,6 @@ extern FSServer *_FSHeadOfServerList;
 #define	FSlibServerIOError	(1L << 0)
 #define	FSlibServerClosing	(1L << 1)
 
-/*   Need to start requests on 64 bit word boundries
- *   on a CRAY computer so add a NoOp (127) if needed.
- *   A character pointer on a CRAY computer will be non-zero
- *   after shifting right 61 bits of it is not pointing to
- *   a word boundary.
- */
-
-#ifdef WORD64
-#define WORD64ALIGN if ((long)svr->bufptr >> 61) {\
-           svr->last_req = svr->bufptr;\
-           *(svr->bufptr)   = FS_Noop;\
-           *(svr->bufptr+1) =  0;\
-           *(svr->bufptr+2) =  0;\
-           *(svr->bufptr+3) =  1;\
-             svr->request += 1;\
-             svr->bufptr += 4;\
-         }
-#else				/* else does not require alignment on 64-bit
-				 * boundaries */
-#define WORD64ALIGN
-#endif				/* WORD64 */
 
 /*
  * GetReq - Get the next available FS request packet in the buffer and
@@ -145,7 +124,6 @@ extern FSServer *_FSHeadOfServerList;
  */
 
 #define GetReq(name, req) \
-        WORD64ALIGN\
 	if ((svr->bufptr + SIZEOF(fs##name##Req)) > svr->bufmax)\
 		_FSFlush(svr);\
 	req = (fs##name##Req *)(svr->last_req = svr->bufptr);\
@@ -158,7 +136,6 @@ extern FSServer *_FSHeadOfServerList;
    bytes after the request. "n" must be a multiple of 4!  */
 
 #define GetReqExtra(name, n, req) \
-        WORD64ALIGN\
 	if ((svr->bufptr + SIZEOF(fs##name##Req) + n) > svr->bufmax)\
 		_FSFlush(svr);\
 	req = (fs##name##Req *)(svr->last_req = svr->bufptr);\
@@ -174,7 +151,6 @@ extern FSServer *_FSHeadOfServerList;
  */
 
 #define GetResReq(name, rid, req) \
-        WORD64ALIGN\


Reply to: