summaryrefslogblamecommitdiff
path: root/packaging/nacl/ports/sdl-net/nacl.patch
blob: 8d7fd7e5260f8e6d917d0e59f3d3c79cca4b4c15 (plain) (tree)


























































































































































































































































                                                                                       
diff -urN SDL_net-1.2.7/SDL_net.h SDL_net-1.2.7-nacl/SDL_net.h
--- SDL_net-1.2.7/SDL_net.h	2007-07-15 09:59:03.000000000 +0400
+++ SDL_net-1.2.7-nacl/SDL_net.h	2013-11-03 00:01:10.871933000 +0400
@@ -30,7 +30,7 @@
 #include "SDL_version.h"
 #include "begin_code.h"
 
-
+#define u_int32_t uint32_t
 
 /* Set up for C function definitions, even when using C++ */
 #ifdef __cplusplus

diff -urN /dev/null SDL_net-1.2.7-nacl/inet_addr.c
--- /dev/null	2013-11-02 22:47:51.150226312 +0400
+++ SDL_net-1.2.7-nacl/inet_addr.c	2013-11-02 23:59:09.523930000 +0400
@@ -0,0 +1,201 @@
+/*      $KAME: inet_addr.c,v 1.5 2001/08/20 02:32:40 itojun Exp $       */
+
+/*
+ * ++Copyright++ 1983, 1990, 1993
+ * -
+ * Copyright (c) 1983, 1990, 1993
+ *    The Regents of the University of California.  All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ * 
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6/17/93";
+#endif /* LIBC_SCCS and not lint */
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <machine/endian.h>
+
+#include <sys/param.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+
+/*
+ * ASCII internet address interpretation routine.
+ * The value returned is in network order.
+ */
+in_addr_t               /* XXX should be struct in_addr :( */
+inet_addr(cp)
+        const char *cp;
+{
+        struct in_addr val;
+
+        if (inet_aton(cp, &val))
+                return (val.s_addr);
+        return (INADDR_NONE);
+}
+
+/* 
+ * Check whether "cp" is a valid ASCII representation
+ * of an Internet address and convert to a binary address.
+ * Returns 1 if the address is valid, 0 if not.
+ * This replaces inet_addr, the return value from which
+ * cannot distinguish between failure and a local broadcast address.
+ */
+int
+inet_aton(cp, addr)
+        const char *cp;
+        struct in_addr *addr;
+{
+        u_long parts[4];
+        in_addr_t val;
+        char *c;
+        char *endptr;
+        int gotend, n;
+
+        c = (char *)cp;
+        n = 0;
+        /*
+         * Run through the string, grabbing numbers until
+         * the end of the string, or some error
+         */
+        gotend = 0;
+        while (!gotend) {
+                errno = 0;
+                val = strtoul(c, &endptr, 0);
+
+                if (errno == ERANGE)    /* Fail completely if it overflowed. */
+                        return (0);
+                
+                /* 
+                 * If the whole string is invalid, endptr will equal
+                 * c.. this way we can make sure someone hasn't
+                 * gone '.12' or something which would get past
+                 * the next check.
+                 */
+                if (endptr == c)
+                        return (0);
+                parts[n] = val;
+                c = endptr;
+
+                /* Check the next character past the previous number's end */
+                switch (*c) {
+                case '.' :
+                        /* Make sure we only do 3 dots .. */
+                        if (n == 3)     /* Whoops. Quit. */
+                                return (0);
+                        n++;
+                        c++;
+                        break;
+
+                case '\0':
+                        gotend = 1;
+                        break;
+
+                default:
+                        if (isspace((unsigned char)*c)) {
+                                gotend = 1;
+                                break;
+                        } else
+                                return (0);     /* Invalid character, so fail */
+                }
+
+        }
+
+        /*
+         * Concoct the address according to
+         * the number of parts specified.
+         */
+
+        switch (n) {
+        case 0:                         /* a -- 32 bits */
+                /*
+                 * Nothing is necessary here.  Overflow checking was
+                 * already done in strtoul().
+                 */
+                break;
+        case 1:                         /* a.b -- 8.24 bits */
+                if (val > 0xffffff || parts[0] > 0xff)
+                        return (0);
+                val |= parts[0] << 24;
+                break;
+
+        case 2:                         /* a.b.c -- 8.8.16 bits */
+                if (val > 0xffff || parts[0] > 0xff || parts[1] > 0xff)
+                        return (0);
+                val |= (parts[0] << 24) | (parts[1] << 16);
+                break;
+
+        case 3:                         /* a.b.c.d -- 8.8.8.8 bits */
+                if (val > 0xff || parts[0] > 0xff || parts[1] > 0xff ||
+                    parts[2] > 0xff)
+                        return (0);
+                val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+                break;
+        }
+
+        if (addr != NULL)
+                addr->s_addr = htonl(val);
+        return (1);
+}
+
+/*
+ * Weak aliases for applications that use certain private entry points,
+ * and fail to include <arpa/inet.h>.
+ */
+#undef inet_addr
+__weak_reference(__inet_addr, inet_addr);
+#undef inet_aton
+__weak_reference(__inet_aton, inet_aton);

diff -urN SDL_net-1.2.7/SDLnet.c SDL_net-1.2.7-nacl/SDLnet.c
--- SDL_net-1.2.7/SDLnet.c	2007-07-02 06:04:03.000000000 +0400
+++ SDL_net-1.2.7-nacl/SDLnet.c	2013-11-03 00:43:36.859998000 +0400
@@ -29,6 +29,8 @@
 #include "SDLnetsys.h"
 #include "SDL_net.h"
 
+#include "inet_addr.c"
+
 
 const SDL_version *SDLNet_Linked_Version(void)
 {
@@ -344,7 +346,7 @@
 
 			hp = gethostbyname(host);
 			if ( hp ) {
-				memcpy(&address->host,hp->h_addr,hp->h_length);
+				memcpy(&address->host,hp->h_addr_list[0],hp->h_length);
 			} else {
 				retval = -1;
 			}
@@ -368,8 +370,7 @@
 const char *SDLNet_ResolveIP(IPaddress *ip)
 {
 	struct hostent *hp;
-
-	hp = gethostbyaddr((char *)&ip->host, 4, AF_INET);
+	hp = NULL;
 	if ( hp != NULL ) {
 		return hp->h_name;
 	}