21 #ifndef HAVE_INET_PTON 23 #ifdef HAVE_SYS_PARAM_H 24 #include <sys/param.h> 26 #ifdef HAVE_NETINET_IN_H 27 #include <netinet/in.h> 29 #ifdef HAVE_ARPA_INET_H 30 #include <arpa/inet.h> 44 static int inet_pton4(
const char *src,
unsigned char *dst);
46 static int inet_pton6(
const char *src,
unsigned char *dst);
70 return (
inet_pton4(src, (
unsigned char *)dst));
73 return (inet_pton6(src, (
unsigned char *)dst));
95 static const char digits[] =
"0123456789";
96 int saw_digit, octets, ch;
103 while((ch = *src++) !=
'\0') {
106 pch = strchr(digits, ch);
108 unsigned int val = *tp * 10 + (
unsigned int)(pch - digits);
110 if(saw_digit && *tp == 0)
114 *tp = (
unsigned char)val;
121 else if(ch ==
'.' && saw_digit) {
151 inet_pton6(
const char *src,
unsigned char *dst)
153 static const char xdigits_l[] =
"0123456789abcdef",
154 xdigits_u[] =
"0123456789ABCDEF";
155 unsigned char tmp[
IN6ADDRSZ], *tp, *endp, *colonp;
156 const char *xdigits, *curtok;
170 while((ch = *src++) !=
'\0') {
173 pch = strchr((xdigits = xdigits_l), ch);
175 pch = strchr((xdigits = xdigits_u), ch);
178 val |= (pch - xdigits);
193 *tp++ = (
unsigned char) ((val >> 8) & 0xff);
194 *tp++ = (
unsigned char) (val & 0xff);
199 if(ch ==
'.' && ((tp +
INADDRSZ) <= endp) &&
210 *tp++ = (
unsigned char) ((val >> 8) & 0xff);
211 *tp++ = (
unsigned char) (val & 0xff);
223 for(i = 1; i <= n; i++) {
224 *(endp -
i) = *(colonp + n - i);
225 *(colonp + n -
i) = 0;
231 memcpy(dst, tmp, IN6ADDRSZ);
memcpy(filename, filename1, strlen(filename1))
static int inet_pton4(const char *src, unsigned char *dst)
int Curl_inet_pton(int af, const char *src, void *dst)