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