From aa2865c7a41e2f005fe08af9ff5d93d6a4055b4c Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Mon, 7 Feb 2011 14:41:44 +0000 Subject: add compatability for inet_pton and inet_aton svn path=/trunk/netsurf/; revision=11627 --- utils/utils.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'utils/utils.c') diff --git a/utils/utils.c b/utils/utils.c index 9561521cb..66c020f1d 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -31,6 +31,7 @@ #include #include #include + #include "utils/config.h" #define NDEBUG #include "utils/log.h" @@ -532,4 +533,55 @@ char *realpath(const char *path, char *resolved_path) return ret; } +#ifndef HAVE_INETATON + + +int inet_aton(const char *cp, struct in_addr *inp) +{ + unsigned int b1, b2, b3, b4; + unsigned char c; + + if (strspn(cp, "0123456789.") < strlen(cp)) + return 0; + + if (sscanf(cp, "%3u.%3u.%3u.%3u%c", &b1, &b2, &b3, &b4, &c) != 4) + return 0; + + if ((b1 > 255) || (b2 > 255) || (b3 > 255) || (b4 > 255)) + return 0; + + inp->s_addr = b4 << 24 | b3 << 16 | b2 << 8 | b1; + + return 1; +} + +#endif + +#ifndef HAVE_INETPTON + +int inet_pton(int af, const char *src, void *dst) +{ + int ret; + + if (af == AF_INET) { + ret = inet_aton(src, dst); + } +#if !defined(NO_IPV6) + else if (af == AF_INET6) { + /* TODO: implement v6 address support */ + ret = -1; + errno = EAFNOSUPPORT; + } +#endif + else { + ret = -1; + errno = EAFNOSUPPORT; + } + + return ret; +} + +#endif + + #endif -- cgit v1.2.3