From adad7dc672361142fef33d73264e6c053a2a29ce Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 23 Feb 2006 09:30:31 +0000 Subject: Add inet_pton emulation for platforms that lack it. Only support IPv4 at this point. git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@582 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/Makefile.am | 1 + src/polypcore/inet_pton.c | 62 +++++++++++++++++++++++++++++++++++++++++++ src/polypcore/inet_pton.h | 12 +++++++++ src/polypcore/socket-server.c | 4 +++ 4 files changed, 79 insertions(+) create mode 100644 src/polypcore/inet_pton.c create mode 100644 src/polypcore/inet_pton.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index f36630e7..01ec9ef7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -601,6 +601,7 @@ libprotocol_simple_la_LIBADD = $(AM_LIBADD) libpolypcore.la libsocket-server.la libsocket_server_la_SOURCES = \ polypcore/inet_ntop.c polypcore/inet_ntop.h \ + polypcore/inet_pton.c polypcore/inet_pton.h \ polypcore/socket-server.c polypcore/socket-server.h libsocket_server_la_LDFLAGS = -avoid-version libsocket_server_la_LIBADD = $(AM_LIBADD) libpolypcore.la libiochannel.la libsocket-util.la $(LIBWRAP_LIBS) $(WINSOCK_LIBS) diff --git a/src/polypcore/inet_pton.c b/src/polypcore/inet_pton.c new file mode 100644 index 00000000..17860f6d --- /dev/null +++ b/src/polypcore/inet_pton.c @@ -0,0 +1,62 @@ +/* $Id$ */ + +/*** + This file is part of polypaudio. + + polypaudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + polypaudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with polypaudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#ifndef HAVE_INET_PTON + +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#include "winsock.h" + +#include "inet_pton.h" + +int inet_pton(int af, const char *src, void *dst) { + struct in_addr *in = (struct in_addr*)dst; + struct in6_addr *in6 = (struct in6_addr*)dst; + + assert(src && dst); + + switch (af) { + case AF_INET: + in->s_addr = inet_addr(src); + if (in->s_addr == INADDR_NONE) + return 0; + break; + case AF_INET6: + /* FIXME */ + default: + errno = EAFNOSUPPORT; + return -1; + } + + return 1; +} + +#endif /* INET_PTON */ diff --git a/src/polypcore/inet_pton.h b/src/polypcore/inet_pton.h new file mode 100644 index 00000000..111b4a07 --- /dev/null +++ b/src/polypcore/inet_pton.h @@ -0,0 +1,12 @@ +#ifndef fooinet_ptonhfoo +#define fooinet_ptonhfoo + +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#include "winsock.h" + +int inet_pton(int af, const char *src, void *dst); + +#endif diff --git a/src/polypcore/socket-server.c b/src/polypcore/socket-server.c index f2e15085..4e89c5d3 100644 --- a/src/polypcore/socket-server.c +++ b/src/polypcore/socket-server.c @@ -56,6 +56,10 @@ #include "inet_ntop.h" #endif +#ifndef HAVE_INET_PTON +#include "inet_pton.h" +#endif + #include "winsock.h" #include -- cgit