Ported Peter Hartley's patch to compile with mingw.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@391 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
		| @@ -2,6 +2,9 @@ | ||||
| Version 1.8.0 | ||||
| ******************************************************************************* | ||||
|  | ||||
| 2008-05-24 Marcelo Jimenez <mroberto(at)users.sourceforge.net> | ||||
| 	* Ported Peter Hartley's patch to compile with mingw. | ||||
|  | ||||
| 2008-05-24 Marcelo Jimenez <mroberto(at)users.sourceforge.net> | ||||
| 	* Added some debug capability to ixml. | ||||
|  | ||||
|   | ||||
							
								
								
									
										46
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -341,9 +341,26 @@ AC_DEFINE([_FILE_OFFSET_BITS], [64], [File Offset size]) | ||||
|  | ||||
|  | ||||
| # | ||||
| # Checks for header files | ||||
| # Are we targetting Win32? | ||||
| # | ||||
| AC_MSG_CHECKING([for Win32]) | ||||
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ | ||||
| #ifdef WIN32 | ||||
| 	#error Yup | ||||
| #endif | ||||
| ],[])], [ac_cv_win32="no"], [ac_cv_win32="yes"]) | ||||
| if test "$ac_cv_win32" = "yes"; then | ||||
| 	AC_MSG_RESULT([yes]) | ||||
| else | ||||
| 	AC_MSG_RESULT([no]) | ||||
| fi | ||||
|  | ||||
|  | ||||
| # | ||||
| # Checks for header files (which aren't needed on Win32) | ||||
| # | ||||
| AC_HEADER_STDC | ||||
| if test "$ac_cv_win32" = "no"; then | ||||
| # libupnp code doesn't use autoconf variables yet, | ||||
| # so just abort if a header file is not found. | ||||
| AC_CHECK_HEADERS( | ||||
| @@ -365,13 +382,38 @@ AC_CHECK_HEADERS( | ||||
| 	], | ||||
| 	[], | ||||
| 	[AC_MSG_ERROR([required header file missing])]) | ||||
| fi | ||||
|  | ||||
|  | ||||
| # | ||||
| # Checks for typedefs, structures, and compiler characteristics | ||||
| #	 | ||||
| AC_C_CONST | ||||
| TYPE_SOCKLEN_T | ||||
|  | ||||
| # The test for socklen_t was getting it wrong when it exists but is in ws2tcpip.h, | ||||
| # so we use a new test. | ||||
| #TYPE_SOCKLEN_T | ||||
|  | ||||
| AC_CHECK_HEADERS([sys/types.h sys/socket.h ws2tcpip.h]) | ||||
| AC_MSG_CHECKING(for socklen_t) | ||||
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ | ||||
| #ifdef HAVE_SYS_TYPES_H | ||||
| 	#include <sys/types.h> | ||||
| #endif | ||||
| #ifdef HAVE_SYS_SOCKET_H | ||||
| 	#include <sys/socket.h> | ||||
| #endif | ||||
| #ifdef HAVE_WS2TCPIP_H | ||||
| 	#include <ws2tcpip.h> | ||||
| #endif | ||||
| ],[ socklen_t t = 0; return t; ]) | ||||
| ],[ac_cv_socklen_t="yes"],[ac_cv_socklen_t="no"]) | ||||
| if test "$ac_cv_socklen_t" = "yes"; then | ||||
| 	AC_MSG_RESULT([yes]) | ||||
| else | ||||
| 	AC_MSG_RESULT([no, using int]) | ||||
| 	AC_DEFINE(socklen_t, int, [Type for storing the length of struct sockaddr]) | ||||
| fi | ||||
|  | ||||
|  | ||||
| # | ||||
|   | ||||
| @@ -100,6 +100,16 @@ | ||||
| 		#define PRId64 "I64d" | ||||
| 		#define PRIzu "zu" | ||||
| 	#endif /* UPNP_USE_BCBPP */ | ||||
|  | ||||
|  | ||||
| 	#ifdef __GNUC__ | ||||
| 		#define UPNP_INLINE inline | ||||
| 		/* Note with PRIzu that in the case of Mingw32, it's the MS C | ||||
| 		 * runtime printf which ends up getting called, not the glibc | ||||
| 		 * printf, so it genuinely doesn't have "zu" | ||||
| 		 */ | ||||
| 		#define PRIzu "lu" | ||||
| 	#endif | ||||
| #else | ||||
| 	#define EXPORT_SPEC | ||||
| 	#define UPNP_INLINE inline | ||||
|   | ||||
| @@ -47,7 +47,7 @@ | ||||
| #include "ssdplib.h" | ||||
| #include "statcodes.h" | ||||
| #include "ThreadPool.h" | ||||
| #include "unixutil.h" | ||||
| #include "unixutil.h" /* for socklen_t, EAFNOSUPPORT */ | ||||
| #include "upnpapi.h" | ||||
| #include "util.h" | ||||
|  | ||||
| @@ -60,21 +60,6 @@ | ||||
| #include <sys/types.h> | ||||
|  | ||||
|  | ||||
| #ifdef WIN32 | ||||
| 	#include <winsock2.h> | ||||
|  | ||||
| 	typedef int socklen_t; | ||||
| 	#define EAFNOSUPPORT 97 | ||||
| #else | ||||
| 	#include <arpa/inet.h> | ||||
| 	#include <netinet/in.h> | ||||
| 	#include <sys/socket.h> | ||||
| 	#include <sys/wait.h> | ||||
| 	#include <sys/time.h> | ||||
| 	#include <unistd.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #define APPLICATION_LISTENING_PORT 49152 | ||||
|  | ||||
| struct mserv_request_t { | ||||
|   | ||||
| @@ -41,7 +41,7 @@ | ||||
| #include "sock.h" | ||||
|  | ||||
|  | ||||
| #include "unixutil.h" | ||||
| #include "unixutil.h" /* for socklen_t, EAFNOSUPPORT */ | ||||
| #include "upnp.h" | ||||
|  | ||||
|  | ||||
| @@ -51,20 +51,8 @@ | ||||
| #include <string.h> | ||||
|  | ||||
|  | ||||
| #ifdef WIN32 | ||||
| 	#include <winsock2.h> | ||||
| #else | ||||
| 	#include <arpa/inet.h> | ||||
| 	#include <netinet/in.h> | ||||
| 	#include <sys/types.h> | ||||
| 	#include <sys/socket.h> | ||||
| 	#include <sys/time.h> | ||||
| 	#include <unistd.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #ifndef MSG_NOSIGNAL | ||||
|  #define MSG_NOSIGNAL 0 | ||||
| 	#define MSG_NOSIGNAL 0 | ||||
| #endif | ||||
|  | ||||
| /************************************************************************ | ||||
|   | ||||
| @@ -1,44 +1,48 @@ | ||||
| /////////////////////////////////////////////////////////////////////////// | ||||
| // | ||||
| // Copyright (c) 2000-2003 Intel Corporation  | ||||
| // All rights reserved.  | ||||
| // | ||||
| // Redistribution and use in source and binary forms, with or without  | ||||
| // modification, are permitted provided that the following conditions are met:  | ||||
| // | ||||
| // * Redistributions of source code must retain the above copyright notice,  | ||||
| // this list of conditions and the following disclaimer.  | ||||
| // * 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.  | ||||
| // * Neither name of Intel Corporation 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 COPYRIGHT HOLDERS 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 INTEL 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. | ||||
| // | ||||
| /////////////////////////////////////////////////////////////////////////// | ||||
| /******************************************************************************* | ||||
|  * | ||||
|  * Copyright (c) 2000-2003 Intel Corporation  | ||||
|  * All rights reserved.  | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without  | ||||
|  * modification, are permitted provided that the following conditions are met:  | ||||
|  * | ||||
|  * - Redistributions of source code must retain the above copyright notice,  | ||||
|  * this list of conditions and the following disclaimer.  | ||||
|  * - 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.  | ||||
|  * - Neither name of Intel Corporation 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 COPYRIGHT HOLDERS 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 INTEL 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. | ||||
|  * | ||||
|  ******************************************************************************/ | ||||
|  | ||||
|  | ||||
| /******************************************************************************* | ||||
|  * Purpose: This file contains functions for uri, url parsing utility.  | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| /************************************************************************ | ||||
| * Purpose: This file contains functions for uri, url parsing utility.  | ||||
| ************************************************************************/ | ||||
|  | ||||
| #ifdef __FreeBSD__ | ||||
| #include <osreldate.h> | ||||
| #if __FreeBSD_version < 601103 | ||||
| #include <lwres/netdb.h> | ||||
| #endif | ||||
| 	#include <osreldate.h> | ||||
| 	#if __FreeBSD_version < 601103 | ||||
| 		#include <lwres/netdb.h> | ||||
| 	#endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #include "config.h" | ||||
| #include "uri.h" | ||||
| #include "upnpapi.h" | ||||
| @@ -1044,3 +1048,4 @@ parse_uri_and_unescape( char *in, | ||||
|         remove_escaped_chars( (char *)out->fragment.buff, &out->fragment.size ); | ||||
|     return HTTP_SUCCESS; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,103 +1,100 @@ | ||||
| #ifdef WIN32 | ||||
|  | ||||
|  | ||||
| #ifndef INET_PTON | ||||
| #define INET_PTON | ||||
|  | ||||
| #include <winsock2.h> | ||||
|  | ||||
| #ifdef WIN32 | ||||
|  | ||||
|  | ||||
| #include "unixutil.h" | ||||
|  | ||||
|  | ||||
| #include <errno.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| typedef int socklen_t; | ||||
| #define EAFNOSUPPORT 97 | ||||
|  | ||||
| /* | ||||
|  * WARNING: Don't even consider trying to compile this on a system where | ||||
|  | ||||
| /*! | ||||
|  * \file | ||||
|  * | ||||
|  * \author: Paul Vixie, 1996. | ||||
|  * | ||||
|  * \brief Network support routines missing in WIN32. | ||||
|  * | ||||
|  * \warning Don't even consider trying to compile this on a system where | ||||
|  * sizeof(int) < 4.  sizeof(int) 4 is fine; all the world's not a VAX. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /* const char * | ||||
|  * inet_ntop4(src, dst, size) | ||||
|  *	format an IPv4 address | ||||
|  * return: | ||||
|  *	`dst' (as a const) | ||||
|  * notes: | ||||
|  *	(1) uses no statics | ||||
|  *	(2) takes a u_char* not an in_addr as input | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
| /*! | ||||
|  * \brief format an IPv4 address | ||||
|  * | ||||
|  * \return `dst' (as a const) | ||||
|  * | ||||
|  * \note | ||||
|  *	\li (1) uses no statics | ||||
|  *	\li (2) takes a u_char* not an in_addr as input | ||||
|  * | ||||
|  */ | ||||
| extern const char * inet_ntop4(const u_char src, char *dst, socklen_t size); | ||||
| extern const char *inet_ntop4(const u_char src, char *dst, socklen_t size); | ||||
|  | ||||
| /* const char * | ||||
|  * inet_ntop6(src, dst, size) | ||||
|  *	convert IPv6 binary address into presentation (printable) format | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  | ||||
| /*! | ||||
|  * \brief convert IPv6 binary address into presentation (printable) format | ||||
|  */ | ||||
|  | ||||
| #ifdef INET_IPV6 | ||||
|  | ||||
| extern const char * inet_ntop6(src, dst, size); | ||||
|  | ||||
| extern const char *inet_ntop6(const u_char *src, char *dst, socklen_t size); | ||||
| #endif /* INET_IPV6 */ | ||||
|  | ||||
| /* int | ||||
|  * inet_pton4(src, dst) | ||||
|  *	like inet_aton() but without all the hexadecimal and shorthand. | ||||
|  * return: | ||||
|  *	1 if `src' is a valid dotted quad, else 0. | ||||
|  * notice: | ||||
|  *	does not touch `dst' unless it's returning 1. | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  | ||||
| /*! | ||||
|  * \brief like inet_aton() but without all the hexadecimal and shorthand. | ||||
|  * | ||||
|  * \return 1 if `src' is a valid dotted quad, else 0. | ||||
|  * | ||||
|  * \note does not touch `dst' unless it's returning 1. | ||||
|  */ | ||||
| extern inet_pton4(const char *src,u_char *dst); | ||||
|  | ||||
| /* int | ||||
|  * inet_pton6(src, dst) | ||||
|  *	convert presentation level address to network order binary form. | ||||
|  * return: | ||||
|  *	1 if `src' is a valid [RFC1884 2.2] address, else 0. | ||||
|  * notice: | ||||
|  *	(1) does not touch `dst' unless it's returning 1. | ||||
|  *	(2) :: in a full address is silently ignored. | ||||
|  * credit: | ||||
|  *	inspired by Mark Andrews. | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  | ||||
| /*! | ||||
|  * \brief convert presentation level address to network order binary form. | ||||
|  * | ||||
|  * \return 1 if `src' is a valid [RFC1884 2.2] address, else 0. | ||||
|  * | ||||
|  * \note | ||||
|  *	\li (1) does not touch `dst' unless it's returning 1. | ||||
|  *	\li (2) :: in a full address is silently ignored. | ||||
|  */ | ||||
|  | ||||
| #ifdef INET_IPV6 | ||||
|  | ||||
| extern int inet_pton6(src, dst); | ||||
|  | ||||
| extern int inet_pton6(const char *src, u_char *dst); | ||||
| #endif /* INET_IPV6 */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* char * | ||||
|  * inet_ntop(af, src, dst, size) | ||||
|  *	convert a network format address to presentation format. | ||||
|  * return: | ||||
| /*! | ||||
|  * \brief convert a network format address to presentation format. | ||||
|  * | ||||
|  * \return | ||||
|  *	pointer to presentation format address (`dst'), or NULL (see errno). | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
| extern const char *inet_ntop(int af,const void *src,char *dst,socklen_t size); | ||||
|  | ||||
|  | ||||
| /* int | ||||
|  * inet_pton(af, src, dst) | ||||
|  *	convert from presentation format (which usually means ASCII printable) | ||||
|  *	to network format (which is usually some kind of binary format). | ||||
|  * return: | ||||
|  *	1 if the address was valid for the specified address family | ||||
|  *	0 if the address wasn't valid (`dst' is untouched in this case) | ||||
|  *	-1 if some other error occurred (`dst' is untouched in this case, too) | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
| /*! | ||||
|  * \brief convert from presentation format (which usually means ASCII printable) | ||||
|  * to network format (which is usually some kind of binary format). | ||||
|  * | ||||
|  * \return | ||||
|  *	\li 1 if the address was valid for the specified address family | ||||
|  *	\li 0 if the address wasn't valid (`dst' is untouched in this case) | ||||
|  *	\li -1 if some other error occurred (`dst' is untouched in this case, too) | ||||
|  */ | ||||
| extern int inet_pton(int af,const char *src,void *dst); | ||||
|  | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #endif /* WIN32 */ | ||||
|  | ||||
|  | ||||
| #endif /* INET_PTON */ | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| /************************************************************************** | ||||
| /******************************************************************************* | ||||
|  * | ||||
|  * Copyright (c) 2000-2003 Intel Corporation  | ||||
|  * All rights reserved.  | ||||
| @@ -27,7 +27,7 @@ | ||||
|  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  **************************************************************************/ | ||||
|  ******************************************************************************/ | ||||
|  | ||||
|  | ||||
| /* Unix-specific network utilities */ | ||||
| @@ -37,14 +37,17 @@ | ||||
| #define	GENLIB_NET_UNIXUTIL_H | ||||
|  | ||||
|  | ||||
| #include <sys/types.h> | ||||
|  | ||||
|  | ||||
| #ifdef WIN32 | ||||
| 	#include <winsock2.h> | ||||
| 	typedef int socklen_t; | ||||
| 	#define EAFNOSUPPORT 97 | ||||
| #else | ||||
| 	#include <arpa/inet.h> | ||||
| 	#include <netinet/in.h> | ||||
| 	#include <sys/socket.h> | ||||
| 	#include <sys/time.h> | ||||
| 	#include <sys/wait.h> | ||||
| 	#include <unistd.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| #ifdef WIN32 | ||||
| /* | ||||
|  * Copyright (c) 1996-1999 by Internet Software Consortium. | ||||
|  * | ||||
| @@ -16,39 +15,15 @@ | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /*#include <sys/param.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include <netinet/in.h> | ||||
| #include <arpa/inet.h> | ||||
| #include <arpa/nameser.h>*/ | ||||
| #include <winsock2.h> | ||||
|  | ||||
| #include <errno.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| typedef int socklen_t; | ||||
| #define EAFNOSUPPORT 97 | ||||
| /* | ||||
|  * WARNING: Don't even consider trying to compile this on a system where | ||||
|  * sizeof(int) < 4.  sizeof(int) 4 is fine; all the world's not a VAX. | ||||
|  */ | ||||
| /* This file is WIN32 only */ | ||||
| #ifdef WIN32 | ||||
|  | ||||
|  | ||||
| /* const char * | ||||
|  * inet_ntop4(src, dst, size) | ||||
|  *	format an IPv4 address | ||||
|  * return: | ||||
|  *	`dst' (as a const) | ||||
|  * notes: | ||||
|  *	(1) uses no statics | ||||
|  *	(2) takes a u_char* not an in_addr as input | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
| static const char * | ||||
| inet_ntop4(const u_char *src, char *dst, socklen_t size) | ||||
| #include "inet_pton.h" | ||||
|  | ||||
|  | ||||
| static const char *inet_ntop4(const u_char *src, char *dst, socklen_t size) | ||||
| { | ||||
| 	char tmp[sizeof ("255.255.255.255") + 1] = "\0"; | ||||
| 	int octet; | ||||
| @@ -82,20 +57,8 @@ inet_ntop4(const u_char *src, char *dst, socklen_t size) | ||||
| } | ||||
|  | ||||
|  | ||||
| /* const char * | ||||
|  * inet_ntop6(src, dst, size) | ||||
|  *	convert IPv6 binary address into presentation (printable) format | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
|  | ||||
| #ifdef INET_IPV6 | ||||
|  | ||||
| static const char * | ||||
| inet_ntop6(src, dst, size) | ||||
| 	const u_char *src; | ||||
| 	char *dst; | ||||
| 	socklen_t size; | ||||
| static const char *inet_ntop6(const u_char *src, char *dst, socklen_t size) | ||||
| { | ||||
| 	/* | ||||
| 	 * Note that int32_t and int16_t need only be "at least" large enough | ||||
| @@ -182,18 +145,7 @@ inet_ntop6(src, dst, size) | ||||
| #endif /* INET_IPV6 */ | ||||
|  | ||||
|  | ||||
| /* int | ||||
|  * inet_pton4(src, dst) | ||||
|  *	like inet_aton() but without all the hexadecimal and shorthand. | ||||
|  * return: | ||||
|  *	1 if `src' is a valid dotted quad, else 0. | ||||
|  * notice: | ||||
|  *	does not touch `dst' unless it's returning 1. | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
| static int | ||||
| inet_pton4(const char *src,u_char *dst) | ||||
| static int inet_pton4(const char *src,u_char *dst) | ||||
| { | ||||
| 	int saw_digit, octets, ch; | ||||
| 	u_char tmp[4], *tp; | ||||
| @@ -225,29 +177,12 @@ inet_pton4(const char *src,u_char *dst) | ||||
| 	if (octets < 4) | ||||
| 		return (0); | ||||
| 	memcpy(dst, tmp, 4); | ||||
| 	return (1); | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* int | ||||
|  * inet_pton6(src, dst) | ||||
|  *	convert presentation level address to network order binary form. | ||||
|  * return: | ||||
|  *	1 if `src' is a valid [RFC1884 2.2] address, else 0. | ||||
|  * notice: | ||||
|  *	(1) does not touch `dst' unless it's returning 1. | ||||
|  *	(2) :: in a full address is silently ignored. | ||||
|  * credit: | ||||
|  *	inspired by Mark Andrews. | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
|  | ||||
| #ifdef INET_IPV6 | ||||
|  | ||||
| static int | ||||
| inet_pton6(src, dst) | ||||
| 	const char *src; | ||||
| 	u_char *dst; | ||||
| static int inet_pton6(const char *src, u_char *dst) | ||||
| { | ||||
| 	static const char xdigits[] = "0123456789abcdef"; | ||||
| 	u_char tmp[16], *tp, *endp, *colonp; | ||||
| @@ -330,20 +265,10 @@ inet_pton6(src, dst) | ||||
| 	memcpy(dst, tmp, 16); | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| #endif /* INET_IPV6 */ | ||||
|  | ||||
|  | ||||
|  | ||||
| /* char * | ||||
|  * inet_ntop(af, src, dst, size) | ||||
|  *	convert a network format address to presentation format. | ||||
|  * return: | ||||
|  *	pointer to presentation format address (`dst'), or NULL (see errno). | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
| extern const char *inet_ntop(int af,const void *src,char *dst,socklen_t size) | ||||
| const char *inet_ntop(int af,const void *src,char *dst,socklen_t size) | ||||
| { | ||||
| 	switch (af) { | ||||
| 	case AF_INET: | ||||
| @@ -353,24 +278,13 @@ extern const char *inet_ntop(int af,const void *src,char *dst,socklen_t size) | ||||
| 		return (inet_ntop6(src, dst, size)); | ||||
| #endif | ||||
| 	default: | ||||
| 		//__set_errno (EAFNOSUPPORT); | ||||
| 		return (NULL); | ||||
| 		/*__set_errno(EAFNOSUPPORT);*/ | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	/* NOTREACHED */ | ||||
| } | ||||
|  | ||||
|  | ||||
| /* int | ||||
|  * inet_pton(af, src, dst) | ||||
|  *	convert from presentation format (which usually means ASCII printable) | ||||
|  *	to network format (which is usually some kind of binary format). | ||||
|  * return: | ||||
|  *	1 if the address was valid for the specified address family | ||||
|  *	0 if the address wasn't valid (`dst' is untouched in this case) | ||||
|  *	-1 if some other error occurred (`dst' is untouched in this case, too) | ||||
|  * author: | ||||
|  *	Paul Vixie, 1996. | ||||
|  */ | ||||
| int inet_pton(int af,const char *src,void *dst) | ||||
| { | ||||
| 	switch (af) { | ||||
| @@ -381,9 +295,12 @@ int inet_pton(int af,const char *src,void *dst) | ||||
| 		return (inet_pton6(src, dst)); | ||||
| #endif | ||||
| 	default: | ||||
| 		//__set_errno (EAFNOSUPPORT); | ||||
| 		return (-1); | ||||
| 		/*__set_errno(EAFNOSUPPORT);*/ | ||||
| 		return -1; | ||||
| 	} | ||||
| 	/* NOTREACHED */ | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #endif /* WIN32 */ | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Marcelo Roberto Jimenez
					Marcelo Roberto Jimenez