| 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;
|
| +}
|
|
|