summaryrefslogtreecommitdiff
path: root/ext/socket/getaddrinfo.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-05-06 08:31:50 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-05-06 08:31:50 +0000
commite8505b64725b10f92e828d289ad0995bb23c1c8a (patch)
tree5c256f0d6b5f496ef0b348c4d3ebdb2988ba7e2b /ext/socket/getaddrinfo.c
parentcae09e71e575608c039212d8b1273bd14695f88c (diff)
small fixes
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/getaddrinfo.c')
-rw-r--r--ext/socket/getaddrinfo.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/ext/socket/getaddrinfo.c b/ext/socket/getaddrinfo.c
index 45657b6a96..fc3f654cee 100644
--- a/ext/socket/getaddrinfo.c
+++ b/ext/socket/getaddrinfo.c
@@ -40,7 +40,9 @@
#include <sys/types.h>
#include <sys/param.h>
+#ifdef HAVE_SYSCTL_H
#include <sys/sysctl.h>
+#endif
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -48,11 +50,13 @@
#include <netdb.h>
#include <resolv.h>
#include <string.h>
+#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <ctype.h>
#include <unistd.h>
+#include "config.h"
#include "addrinfo.h"
#include "sockport.h"
@@ -160,7 +164,7 @@ if (pai->ai_flags & AI_CANONNAME) {\
memcpy(ai, pai, sizeof(struct addrinfo));\
(ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
memset((ai)->ai_addr, 0, (afd)->a_socklen);\
- SET_SA_LEN(*(ai)->ai_addr, (ai)->ai_addrlen = (afd)->a_socklen);\
+ SET_SA_LEN((ai)->ai_addr, (ai)->ai_addrlen = (afd)->a_socklen);\
(ai)->ai_addr->sa_family = (ai)->ai_family = (afd)->a_af;\
((struct sockinet *)(ai)->ai_addr)->si_port = port;\
p = (char *)((ai)->ai_addr);\
@@ -206,6 +210,27 @@ str_isnumber(p)
return YES;
}
+#ifndef HAVE_INET_PTON
+
+#ifndef INADDR_NONE
+# define INADDR_NONE 0xffffffff
+#endif
+
+static int
+inet_pton(af, hostname, pton)
+ int af;
+ const char *hostname;
+ char *pton;
+{
+ struct in_addr in;
+ in.s_addr = inet_addr(hostname);
+ if (in.s_addr == INADDR_NONE)
+ return 0;
+ memcpy(pton, &in, sizeof(in));
+ return 1;
+}
+#endif
+
int
getaddrinfo(hostname, servname, hints, res)
const char *hostname, *servname;