/* $Id: inet_pton.c,v 1.2 2002/09/05 22:20:32 stefan Exp $ */ #include #include #include #if defined(HAVE_CONFIG_H) #include "config.h" #endif #if !defined(_WIN32) #define _POSIX_C_SOURCE 199506L #define _XOPEN_SOURCE_EXTENDED #if defined(HAVE_SYS_TYPES_H) #include #endif #if defined(HAVE_SYS_SOCKET_H) #include #endif #else #include #endif #include "missing.h" int inet_pton(int af, const char *src, void *dst) { unsigned int u[4]; unsigned char *p = dst; char ch; int i; if (af != AF_INET) { errno = EAFNOSUPPORT; return -1; } if (sscanf(src, "%3u.%3u.%3u.%3u%c", &u[0], &u[1], &u[2], &u[3], &ch) != 4 || u[0] > 255 || u[1] > 255 || u[2] > 255 || u[3] > 255) { return 0; } for (i = 0; i < 4; i++) { p[i] = u[i]; } return 1; }