Index: fusl/src/network/gethostbyname2.c |
diff --git a/fusl/src/network/gethostbyname2.c b/fusl/src/network/gethostbyname2.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dc9d6621be5655389327813001e8e49dfadbe79a |
--- /dev/null |
+++ b/fusl/src/network/gethostbyname2.c |
@@ -0,0 +1,25 @@ |
+#define _GNU_SOURCE |
+ |
+#include <sys/socket.h> |
+#include <netdb.h> |
+#include <errno.h> |
+#include <stdlib.h> |
+ |
+struct hostent *gethostbyname2(const char *name, int af) |
+{ |
+ static struct hostent *h; |
+ size_t size = 63; |
+ struct hostent *res; |
+ int err; |
+ do { |
+ free(h); |
+ h = malloc(size+=size+1); |
+ if (!h) { |
+ h_errno = NO_RECOVERY; |
+ return 0; |
+ } |
+ err = gethostbyname2_r(name, af, h, |
+ (void *)(h+1), size-sizeof *h, &res, &h_errno); |
+ } while (err == ERANGE); |
+ return err ? 0 : h; |
+} |