Adjusted to the GETHOSTBYADDR_R_NARGS style

This commit is contained in:
Daniel Stenberg 2000-05-30 22:27:39 +00:00
parent 784c29c6c5
commit 8d76ad6c8e
2 changed files with 32 additions and 6 deletions

View File

@ -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

View File

@ -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