From f15aa3a552022743398a652165d76bf912c715e5 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Mon, 14 May 2001 13:47:49 +0000 Subject: Initial revision --- mdk-stage1/dietlibc/libcruft/gethostbyname.c | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 mdk-stage1/dietlibc/libcruft/gethostbyname.c (limited to 'mdk-stage1/dietlibc/libcruft/gethostbyname.c') diff --git a/mdk-stage1/dietlibc/libcruft/gethostbyname.c b/mdk-stage1/dietlibc/libcruft/gethostbyname.c new file mode 100644 index 000000000..5db5bf3c5 --- /dev/null +++ b/mdk-stage1/dietlibc/libcruft/gethostbyname.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern int h_errno; + +struct hostent* gethostbyname (const char *host) +{ + static struct hostent hostbuf; + struct hostent *hp; + size_t hstbuflen; + char *tmphstbuf; + int res; + int herr; + + hstbuflen = 1024; + /* Allocate buffer, remember to free it to avoid a memory leakage. */ + tmphstbuf = malloc (hstbuflen); + + while ((res = gethostbyname_r (host, &hostbuf, tmphstbuf, hstbuflen, + &hp, &herr)) == ERANGE) + { + /* Enlarge the buffer. */ + hstbuflen *= 2; + tmphstbuf = realloc (tmphstbuf, hstbuflen); + } + /* Check for errors. */ + if (res || hp == NULL) + return NULL; + return hp; +} + -- cgit v1.2.1