master
1#define _GNU_SOURCE
2
3#include <sys/socket.h>
4#include <netdb.h>
5#include <errno.h>
6#include <stdlib.h>
7
8struct hostent *gethostbyname2(const char *name, int af)
9{
10 static struct hostent *h;
11 size_t size = 63;
12 struct hostent *res;
13 int err;
14 do {
15 free(h);
16 h = malloc(size+=size+1);
17 if (!h) {
18 h_errno = NO_RECOVERY;
19 return 0;
20 }
21 err = gethostbyname2_r(name, af, h,
22 (void *)(h+1), size-sizeof *h, &res, &h_errno);
23 } while (err == ERANGE);
24 return res;
25}