aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2000-05-30 22:27:39 +0000
committerDaniel Stenberg <daniel@haxx.se>2000-05-30 22:27:39 +0000
commit8d76ad6c8e235bf4f558b1c250886b0085ecd1fe (patch)
treeea059d8b9e82957155b26f2ca4b3ea899055c23d /lib
parent784c29c6c5fb53edb0c33b65d6a20902eaa7ef53 (diff)
Adjusted to the GETHOSTBYADDR_R_NARGS style
Diffstat (limited to 'lib')
-rw-r--r--lib/ftp.c24
-rw-r--r--lib/hostip.c14
2 files changed, 32 insertions, 6 deletions
diff --git a/lib/ftp.c b/lib/ftp.c
index 3fd782de0..13ea3b9a0 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -692,20 +692,34 @@ CURLcode _ftp(struct connectdata *conn)
#if defined(HAVE_INET_ADDR)
unsigned long address;
-#if defined(HAVE_GETHOSTBYADDR_R)
+# if defined(HAVE_GETHOSTBYADDR_R)
int h_errnop;
-#endif
+# endif
address = inet_addr(newhost);
-#if defined(HAVE_GETHOSTBYADDR_R)
+# if defined(HAVE_GETHOSTBYADDR_R)
+
+# if (GETHOSTBYADDR_R_NARGS < 8)
+ /* Solaris and IRIX */
answer = gethostbyaddr_r((char *) &address, sizeof(address), AF_INET,
(struct hostent *)hostent_buf,
hostent_buf + sizeof(*answer),
sizeof(hostent_buf) - sizeof(*answer),
&h_errnop);
-#else
+# else
+ /* Linux style */
+ if(gethostbyaddr_r((char *) &address, sizeof(address), AF_INET,
+ (struct hostent *)hostent_buf,
+ hostent_buf + sizeof(*answer),
+ sizeof(hostent_buf) - sizeof(*answer),
+ &answer,
+ &h_errnop))
+ answer=NULL; /* error */
+# endif
+
+# else
answer = gethostbyaddr((char *) &address, sizeof(address), AF_INET);
-#endif
+# endif
#else
answer = NULL;
#endif
diff --git a/lib/hostip.c b/lib/hostip.c
index ca8bf916a..76a781148 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -120,10 +120,22 @@ struct hostent *GetHost(struct UrlData *data,
else {
int h_errnop;
memset(buf,0,buf_size); /* workaround for gethostbyname_r bug in qnx nto */
+#if (GETHOSTBYNAME_R_NARGS < 6)
+ /* Solaris, IRIX and more */
if ((h = gethostbyname_r(hostname,
(struct hostent *)buf,buf +
sizeof(struct hostent),buf_size -
- sizeof(struct hostent),&h_errnop)) == NULL ) {
+ sizeof(struct hostent),&h_errnop)) == NULL )
+#else
+ /* Linux */
+ if( gethostbyname_r(hostname,
+ (struct hostent *)buf,buf +
+ sizeof(struct hostent),buf_size -
+ sizeof(struct hostent),
+ &h, /* DIFFERENCE */
+ &h_errnop))
+#endif
+ {
infof(data, "gethostbyname_r(2) failed for %s\n", hostname);
}
#else