]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix MS-Windows build.
authorEli Zaretskii <eliz@gnu.org>
Mon, 26 Aug 2013 18:42:11 +0000 (21:42 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 26 Aug 2013 18:42:11 +0000 (21:42 +0300)
 src/callproc.c:
 src/emacs.c:
 src/filelock.c:
 src/process.c:
 src/sysdep.c:
 src/w32.c: Reshuffle Windows-specific headers to avoid errors with
 redefinition of fd_set etc.
 src/process.c: Don't use num_pending_connects when
 NON_BLOCKING_CONNECT is not defined.
 src/sysselect.h: Move definitions of FD_* macros and of SELECT_TYPE
 here from w32.h.
 src/w32proc.c (sys_select): Adjust the argument types to what
 thread.h expects.

 nt/inc/sys/socket.h: Include stdint.h.  Include sysselect.h instead
 of w32.h.

12 files changed:
nt/ChangeLog
nt/inc/sys/socket.h
src/ChangeLog
src/callproc.c
src/emacs.c
src/filelock.c
src/process.c
src/sysdep.c
src/sysselect.h
src/w32.c
src/w32.h
src/w32proc.c

index ebc823071a355d9c7a48daed80d3bde43f445b32..cf0853c7045764f79e3a4d47851e43780f3320cd 100644 (file)
@@ -1,3 +1,8 @@
+2013-08-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * inc/sys/socket.h: Include stdint.h.  Include sysselect.h instead
+       of w32.h.
+
 2013-08-25  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 
        * configure.bat: Rather than disabling, make configure.bat produce
index 93bf9f9166559e5bcea59ee77b79109e9d8c8629..02a0584820fa00bd48bf5af85d48267c70c5ef31 100644 (file)
@@ -53,6 +53,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <ws2tcpip.h>
 /* process.c uses uint16_t (from C99) for IPv6, but
    apparently it is not defined in some versions of mingw and msvc.  */
+#include <stdint.h>
 #ifndef UINT16_C
 typedef unsigned short uint16_t;
 #endif
@@ -73,7 +74,7 @@ typedef unsigned short uint16_t;
 
 /* allow us to provide our own version of fd_set */
 #define fd_set ws_fd_set
-#include "w32.h"
+#include "sysselect.h"
 #endif /* EMACS_CONFIG_H */
 
 #if defined (HAVE_TIMEVAL) && defined (_MSC_VER)
index 70d722a02a4c69b3aaaae2349ae8ce0cbc5d5ce9..a0682bdfd48572d7b56a373374a98c480115463d 100644 (file)
@@ -1,3 +1,22 @@
+2013-08-26  Eli Zaretskii  <eliz@gnu.org>
+
+       * callproc.c: 
+       * emacs.c: 
+       * filelock.c: 
+       * process.c: 
+       * sysdep.c: 
+       * w32.c: Reshuffle Windows-specific headers to avoid errors with
+       redefinition of fd_set etc.
+
+       * process.c: Don't use num_pending_connects when
+       NON_BLOCKING_CONNECT is not defined.
+
+       * sysselect.h: Move definitions of FD_* macros and of SELECT_TYPE
+       here from w32.h.
+
+       * w32proc.c (sys_select): Adjust the argument types to what
+       thread.h expects.
+
 2013-08-24  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (get_next_display_element): Don't apply to characters
index d4b4a26ec3ae3f16bc1b0113be2e0a4c74caa952..938c2fbd04b5dfe6cf9123939b0b9d62bd0a2143 100644 (file)
@@ -26,12 +26,14 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <sys/file.h>
 #include <fcntl.h>
+#ifdef WINDOWSNT
+#define NOMINMAX
+#include <sys/socket.h>        /* for fcntl */
+#endif
 
 #include "lisp.h"
 
 #ifdef WINDOWSNT
-#define NOMINMAX
-#include <sys/socket.h>        /* for fcntl */
 #include <windows.h>
 #include "w32.h"
 #define _P_NOWAIT 1    /* from process.h */
index e6d612b841765a94fe5e67ab3f29c2e1c123eee3..22bca915c7eb3d1926a976d8f3efc2c2a39bd436 100644 (file)
@@ -29,16 +29,18 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <close-stream.h>
 
-#include "lisp.h"
-
 #ifdef WINDOWSNT
 #include <fcntl.h>
 #include <sys/socket.h>
-#include "w32.h"
 #include "w32heap.h"
 #endif
 
+#include "lisp.h"
+
 #if defined WINDOWSNT || defined HAVE_NTGUI
+#ifdef WINDOWSNT
+#include "w32.h"
+#endif
 #include "w32select.h"
 #include "w32font.h"
 #include "w32common.h"
index df72eff5950e6f11ec477c809199fb1a63b77f7a..5ee5d32684e941d4e544eff65c938deb76ac9e53 100644 (file)
@@ -36,6 +36,11 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <sys/sysctl.h>
 #endif /* __FreeBSD__ */
 
+#ifdef WINDOWSNT
+#include <share.h>
+#include <sys/socket.h>        /* for fcntl */
+#endif
+
 #include <errno.h>
 
 #include <c-ctype.h>
@@ -46,8 +51,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "coding.h"
 #include "systime.h"
 #ifdef WINDOWSNT
-#include <share.h>
-#include <sys/socket.h>        /* for fcntl */
 #include "w32.h"       /* for dostounix_filename */
 #endif
 
index 3edc3b4f0616bdc97c591883073caf1ab77f3bf7..94ca3d4b1a0ea038c2d1a6744cd3c59ae6397313 100644 (file)
@@ -31,8 +31,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <unistd.h>
 #include <fcntl.h>
 
-#include "lisp.h"
-
 /* Only MS-DOS does not define `subprocesses'.  */
 #ifdef subprocesses
 
@@ -96,6 +94,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #endif /* subprocesses */
 
+#include "lisp.h"
+
 #include "systime.h"
 #include "systty.h"
 
@@ -132,8 +132,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #endif
 
 #ifdef WINDOWSNT
-extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
-                      EMACS_TIME *, void *);
+#include "w32.h"
 #endif
 
 #ifndef SOCK_CLOEXEC
@@ -532,7 +531,9 @@ add_non_blocking_write_fd (int fd)
   fd_callback_info[fd].flags |= FOR_WRITE | NON_BLOCKING_CONNECT_FD;
   if (fd > max_desc)
     max_desc = fd;
+#ifdef NON_BLOCKING_CONNECT
   ++num_pending_connects;
+#endif
 }
 
 static void
@@ -560,11 +561,13 @@ delete_write_fd (int fd)
   eassert (fd < MAXDESC);
   eassert (fd <= max_desc);
 
+#ifdef NON_BLOCKING_CONNECT
   if ((fd_callback_info[fd].flags & NON_BLOCKING_CONNECT_FD) != 0)
     {
       if (--num_pending_connects < 0)
        abort ();
     }
+#endif
   fd_callback_info[fd].flags &= ~(FOR_WRITE | NON_BLOCKING_CONNECT_FD);
   if (fd_callback_info[fd].flags == 0)
     {
index 0d7325265287001dd158ce338021e51b8210827e..0533a5d3e0251083d89b2883b007f5b6c39f1e6c 100644 (file)
@@ -33,6 +33,17 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <c-ctype.h>
 #include <utimens.h>
 
+#ifdef HAVE_SOCKETS
+#include <sys/socket.h>
+#include <netdb.h>
+#endif /* HAVE_SOCKETS */
+
+#ifdef TRY_AGAIN
+#ifndef HAVE_H_ERRNO
+extern int h_errno;
+#endif
+#endif /* TRY_AGAIN */
+
 #include "lisp.h"
 #include "sysselect.h"
 #include "blockinput.h"
@@ -58,7 +69,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #ifndef STDERR_FILENO
 #define STDERR_FILENO fileno(GetStdHandle(STD_ERROR_HANDLE))
 #endif
-#include <windows.h>
+#include "w32.h"
 #endif /* not WINDOWSNT */
 
 #include <sys/types.h>
@@ -1325,17 +1336,6 @@ setup_pty (int fd)
 }
 #endif /* HAVE_PTYS */
 \f
-#ifdef HAVE_SOCKETS
-#include <sys/socket.h>
-#include <netdb.h>
-#endif /* HAVE_SOCKETS */
-
-#ifdef TRY_AGAIN
-#ifndef HAVE_H_ERRNO
-extern int h_errno;
-#endif
-#endif /* TRY_AGAIN */
-
 void
 init_system_name (void)
 {
index 0a4f7e3ad96cda918ca3a02a0d10b24cffe2c6cf..244f0f7c067a2c54fa55be96574e540b93cb67f2 100644 (file)
@@ -16,14 +16,47 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef EMACS_SYSSELECT_H
+#define EMACS_SYSSELECT_H
+
 #ifndef DOS_NT
 #include <sys/select.h>
 #endif
 
-/* The w32 build defines select stuff in w32.h, which is included
-   where w32 needs it, but not where sysselect.h is included.  The w32
-   definitions in w32.h are incompatible with the below.  */
-#ifndef WINDOWSNT
+#ifdef WINDOWSNT
+
+/* File descriptor set emulation.  */
+
+/* MSVC runtime library has limit of 64 descriptors by default */
+#define FD_SETSIZE  64
+typedef struct {
+  unsigned int bits[FD_SETSIZE / 32];
+} fd_set;
+
+/* standard access macros */
+#define FD_SET(n, p) \
+  do { \
+    if ((n) < FD_SETSIZE) { \
+      (p)->bits[(n)/32] |= (1 << (n)%32); \
+    } \
+  } while (0)
+#define FD_CLR(n, p) \
+  do { \
+    if ((n) < FD_SETSIZE) { \
+      (p)->bits[(n)/32] &= ~(1 << (n)%32); \
+    } \
+  } while (0)
+#define FD_ISSET(n, p) ((n) < FD_SETSIZE ? ((p)->bits[(n)/32] & (1 << (n)%32)) : 0)
+#define FD_ZERO(p) memset((p), 0, sizeof(fd_set))
+
+#define SELECT_TYPE fd_set
+
+#include "systime.h"
+extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
+                      EMACS_TIME *, sigset_t *);
+
+#else  /* not WINDOWSNT */
+
 #ifdef FD_SET
 #ifdef FD_SETSIZE
 #define MAXDESC FD_SETSIZE
@@ -50,3 +83,5 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #ifdef MSDOS
 #define pselect sys_select
 #endif
+
+#endif /* EMACS_SYSSELECT_H */
index 7f9b96a77a546057bd188377b3b455470620c33e..631405fabb8b9248f966ba8a2d10736c1e1503c9 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -39,6 +39,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <config.h>
 #include <mbstring.h>  /* for _mbspbrk, _mbslwr, _mbsrchr, ... */
 
+#include <sys/socket.h>
+
 #undef access
 #undef chdir
 #undef chmod
@@ -70,7 +72,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <grp.h>
 
 /* MinGW64 (_W64) defines these in its _mingw.h.  */
-#if defined(__GNUC__) && !defined(_W64)
+#if !defined(_ANONYMOUS_UNION) && !defined(_ANONYMOUS_STRUCT)
 #define _ANONYMOUS_UNION
 #define _ANONYMOUS_STRUCT
 #endif
@@ -197,7 +199,6 @@ typedef struct _REPARSE_DATA_BUFFER {
 #endif
 
 /* TCP connection support.  */
-#include <sys/socket.h>
 #undef socket
 #undef bind
 #undef connect
@@ -247,7 +248,7 @@ static BOOL WINAPI revert_to_self (void);
 extern int sys_access (const char *, int);
 extern void *e_malloc (size_t);
 extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
-                      EMACS_TIME *, void *);
+                      EMACS_TIME *, sigset_t *);
 extern int sys_dup (int);
 
 
index 9c1f1efa6994755b87eb2c41c932822d99f2c984..c65e40ce7ae0d8fa54ad2f445997fe25da96b1da 100644 (file)
--- a/src/w32.h
+++ b/src/w32.h
@@ -25,33 +25,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <windows.h>
 
-
-/* File descriptor set emulation.  */
-
-/* MSVC runtime library has limit of 64 descriptors by default */
-#define FD_SETSIZE  64
-typedef struct {
-  unsigned int bits[FD_SETSIZE / 32];
-} fd_set;
-
-/* standard access macros */
-#define FD_SET(n, p) \
-  do { \
-    if ((n) < FD_SETSIZE) { \
-      (p)->bits[(n)/32] |= (1 << (n)%32); \
-    } \
-  } while (0)
-#define FD_CLR(n, p) \
-  do { \
-    if ((n) < FD_SETSIZE) { \
-      (p)->bits[(n)/32] &= ~(1 << (n)%32); \
-    } \
-  } while (0)
-#define FD_ISSET(n, p) ((n) < FD_SETSIZE ? ((p)->bits[(n)/32] & (1 << (n)%32)) : 0)
-#define FD_ZERO(p) memset((p), 0, sizeof(fd_set))
-
-#define SELECT_TYPE fd_set
-
 /* ------------------------------------------------------------------------- */
 
 /* child_process.status values */
index 84589388cd7047647dc1fdef263532656f5481fd..599cb3c322742d6388ff5a35391b75d9079f2a52 100644 (file)
@@ -1916,7 +1916,7 @@ extern int proc_buffered_char[];
 
 int
 sys_select (int nfds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
-           EMACS_TIME *timeout, void *ignored)
+           EMACS_TIME *timeout, sigset_t *ignored)
 {
   SELECT_TYPE orfds;
   DWORD timeout_ms, start_time;