github.com/afumu/libc@v0.0.6/musl/src/network/gethostbyname2.c (about)

     1  #define _GNU_SOURCE
     2  
     3  #include <sys/socket.h>
     4  #include <netdb.h>
     5  #include <errno.h>
     6  #include <stdlib.h>
     7  
     8  struct 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 err ? 0 : h;
    25  }