aboutsummaryrefslogtreecommitdiffstats
path: root/missing_d/getaddrinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'missing_d/getaddrinfo.c')
-rw-r--r--missing_d/getaddrinfo.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/missing_d/getaddrinfo.c b/missing_d/getaddrinfo.c
index 677f27d0..f24ac598 100644
--- a/missing_d/getaddrinfo.c
+++ b/missing_d/getaddrinfo.c
@@ -12,6 +12,8 @@
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
+#include <errno.h>
+#include <string.h> /* strerror */
#include "getaddrinfo.h"
@@ -29,12 +31,12 @@ getaddrinfo(const char *hostname, const char *portname,
{
struct addrinfo *out;
if (res == NULL)
- return -1;
+ return EINVAL;
out = (struct addrinfo *) malloc(sizeof(*out));
if (out == NULL) {
*res = NULL;
- return -1;
+ return ENOMEM;
}
memset(out, '\0', sizeof(*out));
@@ -42,7 +44,7 @@ getaddrinfo(const char *hostname, const char *portname,
if (out->ai_addr == NULL) {
free(out);
*res = NULL;
- return -1;
+ return ENOMEM;
}
out->ai_socktype = SOCK_STREAM;
@@ -78,7 +80,7 @@ getaddrinfo(const char *hostname, const char *portname,
= ((struct in_addr *)he->h_addr_list[0])->s_addr;
} else {
freeaddrinfo(out);
- return -1;
+ return EADDRNOTAVAIL;
}
} else {
if (!(out->ai_flags & AI_PASSIVE))
@@ -109,4 +111,10 @@ getaddrinfo(const char *hostname, const char *portname,
return 0;
}
+
+const char *
+gai_strerror(int errcode)
+{
+ return strerror(errcode);
+}
#endif