PATCH: sock-fd-type.diff (2 in series)

Martin Wilck Martin.Wilck at fujitsu-siemens.com
Fri Apr 12 10:17:36 CDT 2002


PATCH: sock-fd-type.diff

Patch against: Wine CVS 2002-04-12

Test status: Compiles (no errors/warnings).

Modified Files:
        dlls/winsock    :       socket.c

Log message:
        Martin Wilck <Martin.Wilck at Fujitsu-Siemens.com>
        _get_sock_fd_type : New function, retrieve fd type and flags like FILE_GetUnixHandleType().
        WSASendTo() /WSARecvFrom(): Use  _get_sock_fd_type().


diff -ruNX ignore TMP/wine/dlls/winsock/socket.c MW/wine/dlls/winsock/socket.c
--- TMP/wine/dlls/winsock/socket.c	Tue Apr  9 13:27:56 2002
+++ MW/wine/dlls/winsock/socket.c	Tue Apr  9 13:28:08 2002
@@ -246,6 +246,13 @@
     return fd;
 }

+inline static int _get_sock_fd_type( SOCKET s, enum fd_type *type, int *flags )
+{
+    int fd;
+    if (set_error( wine_server_handle_to_fd( s, GENERIC_READ, &fd, type, flags ) )) return -1;
+    return fd;
+}
+
 static void _enable_event(SOCKET s, unsigned int event,
 			  unsigned int sstate, unsigned int cstate)
 {
@@ -1976,15 +1983,16 @@
                       LPWSAOVERLAPPED lpOverlapped,
                       LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine )
 {
-    int i, n, fd, err = WSAENOTSOCK;
+    int i, n, fd, err = WSAENOTSOCK, flags;
     struct iovec* iovec;
     struct msghdr msghdr;
-
+    enum fd_type type;
+
     TRACE ("socket %04x, wsabuf %p, nbufs %ld, flags %ld, to %p, tolen %d, ovl %p, func %p\n",
            s, lpBuffers, dwBufferCount, dwFlags,
            to, tolen, lpOverlapped, lpCompletionRoutine);

-    fd = _get_sock_fd(s);
+    fd = _get_sock_fd_type( s, &type, &flags );

     if ( fd == -1 )
         goto error;
@@ -3269,14 +3277,15 @@

     struct iovec* iovec;
     struct msghdr msghdr;
-    int fd, i, length, err = WSAENOTSOCK;
+    int fd, i, length, err = WSAENOTSOCK, flags;
+    enum fd_type type;

     TRACE("socket %04x, wsabuf %p, nbufs %ld, flags %ld, from %p, fromlen %ld, ovl %p, func %p\n",
           s, lpBuffers, dwBufferCount, *lpFlags, lpFrom,
           (lpFromlen ? *lpFromlen : -1L),
           lpOverlapped, lpCompletionRoutine);

-    fd = _get_sock_fd(s);
+    fd = _get_sock_fd_type( s, &type, &flags );

     if (fd == -1)
     {






More information about the wine-devel mailing list