1 --- gnulib/getaddrinfo.c.orig 2007-10-25 16:46:34.728843739 -0500
2 +++ gnulib/getaddrinfo.c 2007-10-25 16:47:17.395395249 -0500
9 /* BeOS has AF_INET, but not PF_INET. */
11 # define PF_INET AF_INET
13 return getaddrinfo_ptr (nodename, servname, hints, res);
16 - if (hints && (hints->ai_flags & ~(AI_CANONNAME|AI_PASSIVE)))
17 + if (hints && (hints->ai_flags & ~(AI_CANONNAME | AI_PASSIVE)))
18 /* FIXME: Support more flags. */
21 if (hints && !validate_family (hints->ai_family))
25 - hints->ai_socktype != SOCK_STREAM && hints->ai_socktype != SOCK_DGRAM)
26 - /* FIXME: Support other socktype. */
27 - return EAI_SOCKTYPE; /* FIXME: Better return code? */
28 + if ((hints != NULL) &&
29 + (hints->ai_socktype != 0) &&
30 + (hints->ai_socktype != SOCK_STREAM) &&
31 + (hints->ai_socktype != SOCK_DGRAM))
33 + /* FIXME: Support other socktype. */
34 + return EAI_SOCKTYPE; /* FIXME: Better return code? */
39 - if (!(hints->ai_flags & AI_PASSIVE))
40 + if (hints && !(hints->ai_flags & AI_PASSIVE))
44 - nodename = (hints->ai_family == AF_INET6) ? "::" : "0.0.0.0";
45 + nodename = (hints && (hints->ai_family == AF_INET6)) ? "::" : "0.0.0.0";
52 /* FIXME: Use gethostbyname_r if available. */
53 - he = gethostbyname (nodename);
54 + he = gethostbyname(nodename);
55 if (!he || he->h_addr_list[0] == NULL)
62 - if (hints && hints->ai_flags & AI_CANONNAME)
63 + if (hints && (hints->ai_flags & AI_CANONNAME))
70 /* FIXME: Support other flags. */
71 - if ((node && nodelen > 0 && !(flags & NI_NUMERICHOST)) ||
72 - (service && servicelen > 0 && !(flags & NI_NUMERICHOST)) ||
73 - (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV)))
74 + if (flags & ~(NI_NUMERICHOST | NI_NUMERICSERV))
77 if (sa == NULL || salen < sizeof (sa->sa_family))
82 - if (node && nodelen > 0 && flags & NI_NUMERICHOST)
83 + if (node && (nodelen > 0))
87 switch (sa->sa_family)
91 - if (!inet_ntop (AF_INET,
92 + if (flags & NI_NUMERICHOST)
94 + if (!inet_ntop (AF_INET,
95 &(((const struct sockaddr_in *) sa)->sin_addr),
98 + addrbuf, sizeof(addrbuf)))
103 + struct hostent *host_ent = gethostbyaddr(
104 + (char *)&(((struct sockaddr_in *)sa)->sin_addr),
105 + sizeof(struct sockaddr_in),
107 + if (host_ent != NULL)
109 + if (nodelen <= snprintf(node, nodelen, "%s",
111 + return EAI_OVERFLOW;
115 + if (!inet_ntop (AF_INET,
116 + &(((const struct sockaddr_in *) sa)->sin_addr),
117 + addrbuf, sizeof(addrbuf)))
121 + if (nodelen <= snprintf(node, nodelen, "%s", addrbuf))
122 + return EAI_OVERFLOW;
130 - if (!inet_ntop (AF_INET6,
131 + if (flags & NI_NUMERICHOST)
133 + if (!inet_ntop (AF_INET6,
134 + &(((const struct sockaddr_in6 *) sa)->sin6_addr),
135 + addrbuf, sizeof(addrbuf)))
140 + struct hostent *host_ent = gethostbyaddr(
141 + (char *)&(((struct sockaddr_in6 *)sa)->sin6_addr),
142 + sizeof(struct sockaddr_in6),
144 + if (host_ent != NULL)
146 + if (nodelen <= snprintf(node, nodelen, "%s",
148 + return EAI_OVERFLOW;
152 + if (!inet_ntop (AF_INET6,
153 &(((const struct sockaddr_in6 *) sa)->sin6_addr),
156 + addrbuf, sizeof(addrbuf)))
160 + if (nodelen <= snprintf(node, nodelen, "%s", addrbuf))
161 + return EAI_OVERFLOW;
172 - if (service && servicelen > 0 && flags & NI_NUMERICSERV)
173 + if (service && (servicelen > 0))
174 switch (sa->sa_family)