1 --- gnulib/getaddrinfo.c 2007-03-06 13:17:25.733225500 -0600
2 +++ gnulib/getaddrinfo.c 2007-03-06 13:17:32.345638750 -0600
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";
51 struct servent *se = NULL;
53 - (hints && hints->ai_socktype == SOCK_DGRAM) ? "udp" : "tcp";
54 + (hints && (hints->ai_socktype == SOCK_DGRAM)) ? "udp" : "tcp";
56 - if (!(hints->ai_flags & AI_NUMERICSERV))
57 - /* FIXME: Use getservbyname_r if available. */
58 - se = getservbyname (servname, proto);
59 + if ((hints == NULL) || !(hints->ai_flags & AI_NUMERICSERV))
61 + /* FIXME: Use getservbyname_r if available. */
62 + se = getservbyname (servname, proto);
70 /* FIXME: Use gethostbyname_r if available. */
71 - he = gethostbyname (nodename);
72 + he = gethostbyname(nodename);
73 if (!he || he->h_addr_list[0] == NULL)
80 - if (hints && hints->ai_flags & AI_CANONNAME)
81 + if (hints && (hints->ai_flags & AI_CANONNAME))
88 /* FIXME: Support other flags. */
89 - if ((node && nodelen > 0 && !(flags & NI_NUMERICHOST)) ||
90 - (service && servicelen > 0 && !(flags & NI_NUMERICHOST)) ||
91 - (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV)))
92 + if (flags & ~(NI_NUMERICHOST | NI_NUMERICSERV))
95 if (sa == NULL || salen < sizeof (sa->sa_family))
100 - if (node && nodelen > 0 && flags & NI_NUMERICHOST)
101 + if (node && (nodelen > 0))
105 switch (sa->sa_family)
109 - if (!inet_ntop (AF_INET,
110 + if (flags & NI_NUMERICHOST)
112 + if (!inet_ntop (AF_INET,
113 &(((const struct sockaddr_in *) sa)->sin_addr),
116 + addrbuf, sizeof(addrbuf)))
121 + struct hostent *host_ent = gethostbyaddr(
122 + (char *)&(((struct sockaddr_in *)sa)->sin_addr),
123 + sizeof(struct sockaddr_in),
125 + if (host_ent != NULL)
127 + if (nodelen <= snprintf(node, nodelen, "%s",
129 + return EAI_OVERFLOW;
133 + if (!inet_ntop (AF_INET,
134 + &(((const struct sockaddr_in *) sa)->sin_addr),
135 + addrbuf, sizeof(addrbuf)))
139 + if (nodelen <= snprintf(node, nodelen, "%s", addrbuf))
140 + return EAI_OVERFLOW;
148 - if (!inet_ntop (AF_INET6,
149 + if (flags & NI_NUMERICHOST)
151 + if (!inet_ntop (AF_INET6,
152 + &(((const struct sockaddr_in6 *) sa)->sin6_addr),
153 + addrbuf, sizeof(addrbuf)))
158 + struct hostent *host_ent = gethostbyaddr(
159 + (char *)&(((struct sockaddr_in6 *)sa)->sin6_addr),
160 + sizeof(struct sockaddr_in6),
162 + if (host_ent != NULL)
164 + if (nodelen <= snprintf(node, nodelen, "%s",
166 + return EAI_OVERFLOW;
170 + if (!inet_ntop (AF_INET6,
171 &(((const struct sockaddr_in6 *) sa)->sin6_addr),
174 + addrbuf, sizeof(addrbuf)))
178 + if (nodelen <= snprintf(node, nodelen, "%s", addrbuf))
179 + return EAI_OVERFLOW;
190 - if (service && servicelen > 0 && flags & NI_NUMERICSERV)
191 + if (service && (servicelen > 0))
192 switch (sa->sa_family)