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/gethostbyname2_r.c | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c (limited to 'mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c') diff --git a/mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c b/mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c new file mode 100644 index 000000000..b505ccfbc --- /dev/null +++ b/mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +extern int __dns_gethostbyx_r(const char* name, struct hostent* result, + char *buf, size_t buflen, + struct hostent **RESULT, int *h_errnop, int lookfor); + +/* Oh boy, this interface sucks so badly, there are no words for it. + * Not one, not two, but _three_ error signalling methods! (*h_errnop + * nonzero? return value nonzero? *RESULT zero?) The glibc goons + * really outdid themselves with this one. */ +int gethostbyname2_r(const char* name, int AF, struct hostent* result, + char *buf, size_t buflen, + struct hostent **RESULT, int *h_errnop) { + int L=strlen(name); + int lookfor=0; + switch (AF) { + case AF_INET: lookfor=1; break; + case AF_INET6: lookfor=28; break; + default: *h_errnop=EINVAL; return 1; + } + result->h_name=buf; + if (buflen