emacs-devel
[Top][All Lists]
Advanced

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

Re: HAVE_SOCKETS in w32*


From: Juanma Barranquero
Subject: Re: HAVE_SOCKETS in w32*
Date: Wed, 15 Sep 2010 03:46:11 +0200

On Thu, Aug 5, 2010 at 20:05, Dan Nicolaescu <address@hidden> wrote:

> HAVE_SOCKETS is defined unconditionally in s/ms-w32.h, yet some w32*.c
> files use HAVE_SOCKETS #ifdefs.
>
> It would be good to get rid of those.

The following patch does that; it also removes the few uses of
SOCK_REPLACE_HANDLE, which has been commented out since 1996.

Eli, Jason?

    Juanma



2010-09-15  Juanma Barranquero  <address@hidden>

        Don't make code conditional on HAVE_SOCKETS, it's always defined on W32.
        * w32.c: Remove top-level uses of #ifdef HAVE_SOCKETS.
        (gethostname) [!HAVE_SOCKETS]: Remove.
        (SOCK_REPLACE_HANDLE): Remove macro.
        (socket_to_fd, sys_close, _sys_read_ahead, sys_read, sys_write)
        (term_ntproc, init_ntproc): Don't conditionalize on HAVE_SOCKETS.
        * w32proc.c: Remove top-level uses of #ifdef HAVE_SOCKETS.
        (syms_of_ntproc): Don't conditionalize on HAVE_SOCKETS.


=== modified file 'src/w32.c'
--- src/w32.c   2010-08-06 19:52:47 +0000
+++ src/w32.c   2010-09-15 01:24:04 +0000
@@ -110,7 +110,7 @@
        DWORD PrivateUsage;
 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;

-#ifdef HAVE_SOCKETS    /* TCP connection support, if kernel can do it */
+/* TCP connection support.  */
 #include <sys/socket.h>
 #undef socket
 #undef bind
@@ -129,7 +129,6 @@
 #undef accept
 #undef recvfrom
 #undef sendto
-#endif

 #include "w32.h"
 #include "ndir.h"
@@ -830,17 +829,6 @@
 #endif
 }

-#ifndef HAVE_SOCKETS
-/* Emulate gethostname.  */
-int
-gethostname (char *buffer, int size)
-{
-  /* NT only allows small host names, so the buffer is
-     certainly large enough.  */
-  return !GetComputerName (buffer, &size);
-}
-#endif /* HAVE_SOCKETS */
-
 /* Emulate getloadavg.  */

 struct load_sample {
@@ -4348,8 +4336,6 @@
 }

 
-#ifdef HAVE_SOCKETS
-
 /* Wrappers for  winsock functions to map between our file descriptors
    and winsock's handles; also set h_errno for convenience.

@@ -4636,13 +4622,7 @@
    but I believe the method of keeping the socket handle separate (and
    insuring it is not inheritable) is the correct one. */

-//#define SOCK_REPLACE_HANDLE
-
-#ifdef SOCK_REPLACE_HANDLE
-#define SOCK_HANDLE(fd) ((SOCKET) _get_osfhandle (fd))
-#else
 #define SOCK_HANDLE(fd) ((SOCKET) fd_info[fd].hnd)
-#endif

 int socket_to_fd (SOCKET s);

@@ -4686,13 +4666,6 @@
   fd = _open ("NUL:", _O_RDWR);
   if (fd >= 0)
     {
-#ifdef SOCK_REPLACE_HANDLE
-      /* now replace handle to NUL with our socket handle */
-      CloseHandle ((HANDLE) _get_osfhandle (fd));
-      _free_osfhnd (fd);
-      _set_osfhnd (fd, s);
-      /* setmode (fd, _O_BINARY); */
-#else
       /* Make a non-inheritable copy of the socket handle.  Note
         that it is possible that sockets aren't actually kernel
         handles, which appears to be the case on Windows 9x when
@@ -4738,7 +4711,6 @@
          }
       }
       fd_info[fd].hnd = (HANDLE) s;
-#endif

       /* set our own internal flags */
       fd_info[fd].flags = FILE_SOCKET | FILE_BINARY | FILE_READ | FILE_WRITE;
@@ -5099,8 +5071,6 @@
   return SOCKET_ERROR;
 }

-#endif /* HAVE_SOCKETS */
-

 /* Shadow main io functions: we need to handle pipes and sockets more
    intelligently, and implement non-blocking mode as well. */
@@ -5135,18 +5105,15 @@
            }
          if (i == MAXDESC)
            {
-#ifdef HAVE_SOCKETS
              if (fd_info[fd].flags & FILE_SOCKET)
                {
-#ifndef SOCK_REPLACE_HANDLE
                  if (winsock_lib == NULL) abort ();

                  pfn_shutdown (SOCK_HANDLE (fd), 2);
                  rc = pfn_closesocket (SOCK_HANDLE (fd));
-#endif
+
                  winsock_inuse--; /* count open sockets */
                }
-#endif
              delete_child (cp);
            }
        }
@@ -5314,7 +5281,6 @@
            return STATUS_READ_ERROR;
        }
     }
-#ifdef HAVE_SOCKETS
   else if (fd_info[fd].flags & FILE_SOCKET)
     {
       unsigned long nblock = 0;
@@ -5330,7 +5296,6 @@
          pfn_ioctlsocket (SOCK_HANDLE (fd), FIONBIO, &nblock);
        }
     }
-#endif

   if (rc == sizeof (char))
     cp->status = STATUS_READ_SUCCEEDED;
@@ -5502,7 +5467,6 @@
                  nchars += rc;
                }
            }
-#ifdef HAVE_SOCKETS
          else /* FILE_SOCKET */
            {
              if (winsock_lib == NULL) abort ();
@@ -5529,7 +5493,6 @@
                  nchars += res;
                }
            }
-#endif
        }
       else
        {
@@ -5654,9 +5617,7 @@
            }
        }
     }
-  else
-#ifdef HAVE_SOCKETS
-  if (fd < MAXDESC && fd_info[fd].flags & FILE_SOCKET)
+  else if (fd < MAXDESC && fd_info[fd].flags & FILE_SOCKET)
     {
       unsigned long nblock = 0;
       if (winsock_lib == NULL) abort ();
@@ -5684,7 +5645,6 @@
        }
     }
   else
-#endif
     {
       /* Some networked filesystems don't like too large writes, so
         break them into smaller chunks.  See the Comments section of
@@ -5776,10 +5736,8 @@
 void
 term_ntproc (void)
 {
-#ifdef HAVE_SOCKETS
   /* shutdown the socket interface if necessary */
   term_winsock ();
-#endif

   term_w32select ();
 }
@@ -5787,7 +5745,6 @@
 void
 init_ntproc (void)
 {
-#ifdef HAVE_SOCKETS
   /* Initialise the socket interface now if available and requested by
      the user by defining PRELOAD_WINSOCK; otherwise loading will be
      delayed until open-network-stream is called (w32-has-winsock can
@@ -5801,7 +5758,6 @@

   if (getenv ("PRELOAD_WINSOCK") != NULL)
     init_winsock (TRUE);
-#endif

   /* Initial preparation for subprocess support: replace our standard
      handles with non-inheritable versions. */

=== modified file 'src/w32proc.c'
--- src/w32proc.c       2010-07-08 21:25:08 +0000
+++ src/w32proc.c       2010-09-15 01:26:18 +0000
@@ -1694,8 +1694,6 @@
   process_dir = dir;
 }

-#ifdef HAVE_SOCKETS
-
 /* To avoid problems with winsock implementations that work over dial-up
    connections causing or requiring a connection to exist while Emacs is
    running, Emacs no longer automatically loads winsock on startup if it
@@ -1759,8 +1757,6 @@
   return term_winsock () ? Qt : Qnil;
 }

-#endif /* HAVE_SOCKETS */
-
 
 /* Some miscellaneous functions that are Windows specific, but not GUI
    specific (ie. are applicable in terminal or batch mode as well).  */
@@ -2268,10 +2264,9 @@
   DEFSYM (Qhigh, "high");
   DEFSYM (Qlow, "low");

-#ifdef HAVE_SOCKETS
   defsubr (&Sw32_has_winsock);
   defsubr (&Sw32_unload_winsock);
-#endif
+
   defsubr (&Sw32_short_file_name);
   defsubr (&Sw32_long_file_name);
   defsubr (&Sw32_set_process_priority);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]