[BACK]Return to patch-src_mserv.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / pkgsrc / games / doomlegacy / patches

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

Diff for /pkgsrc/games/doomlegacy/patches/Attic/patch-src_mserv.c between version 1.1 and 1.2

version 1.1, 2020/06/15 10:32:52 version 1.2, 2020/06/17 16:16:57
Line 1 
Line 1 
 $NetBSD$  $NetBSD$
   
 Use native inet_aton() on Solaris.  Use native inet_aton() on Solaris.
   Use portable fcntl() instead of ioctl() for non-blocking mode by default.
   
 --- src/mserv.c.orig    2020-05-10 22:05:17.000000000 +0000  --- src/mserv.c.orig    2020-06-16 09:17:35.000000000 +0000
 +++ src/mserv.c  +++ src/mserv.c
 @@ -210,7 +210,9 @@ struct Copy_CVarMS_t  @@ -122,12 +122,13 @@
    #else
    # include <unistd.h>
    # ifdef __OS2__
   -#  include <sys/types.h>
   +#  include <sys/types.h>  // [MB] 2020-06-16: Maybe required for old Unix too
    # endif
    # include <sys/socket.h>  // socket(),...
    # include <sys/time.h>    // timeval,... (TIMEOUT)
    # include <netinet/in.h>  // sockaddr_in
    # include <arpa/inet.h>   // inet_addr(),...
   +# include <fcntl.h>       // [MB] 2020-06-16: For fcntl()
    # include <netdb.h>       // gethostbyname(),...
    # include <sys/ioctl.h>
    # include <errno.h>
   @@ -210,7 +211,9 @@ struct Copy_CVarMS_t
  #define close closesocket   #define close closesocket
  #endif   #endif
   
 -#if defined( WIN32) || defined( __OS2__) || defined( SOLARIS)  -#if defined( WIN32) || defined( __OS2__) || defined( SOLARIS)
 +// For pkgsrc: Use native inet_aton() on Solaris  +// [MB] 2020-06-16: Use native inet_aton() on Solaris
 +// Solaris has inet_aton() in libresolv since version 2.6 from 1997  +// Solaris has inet_aton() in libresolv since version 2.6 from 1997
 +#if defined( WIN32) || defined( __OS2__) // || defined( SOLARIS)  +#if defined( WIN32) || defined( __OS2__) // || defined( SOLARIS)
  // it seems windows doesn't define that... maybe some other OS? OS/2   // it seems windows doesn't define that... maybe some other OS? OS/2
  static inline   static inline
  int inet_aton(const char *hostname,   int inet_aton(const char *hostname,
   @@ -643,9 +646,19 @@ static int MS_Connect(char *ip_addr, cha
            // winsock.h:  int ioctlsocket(SOCKET,long,u_long *);
            u_long test = 1; // [smite] I have no idea what this type is supposed to be
            ioctlsocket(ms_socket_fd, FIONBIO, &test);
   -#else
   +#elif defined(__OS2__)
            res = 1;  // non-blocking true
            ioctl(ms_socket_fd, FIONBIO, &res);
   +#else
   +        // [MB] 2020-06-16: Use portable POSIX way to enable non-blocking mode
   +        // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
   +        res = fcntl(ms_socket_fd, F_SETFL, O_NONBLOCK);
   +        if(-1 == res)
   +        {
   +            con_state = MSCS_FAILED;
   +            MS_Close_socket();
   +            return MS_CONNECT_ERROR;
   +        }
    #endif
            res = connect(ms_socket_fd, (struct sockaddr *) &ms_addr, sizeof(ms_addr));
            if (res < 0)

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

CVSweb <webmaster@jp.NetBSD.org>