/*
**  Copyright 2002 University of Illinois Board of Trustees
**  Copyright 2002 Mark D. Roth
**  All rights reserved.
**
**  gethostbyname_r.c - gethostbyname_r() function for compatibility library
**
**  Mark D. Roth <roth@uiuc.edu>
**  Campus Information Technologies and Educational Services
**  University of Illinois at Urbana-Champaign
*/

#include <config.h>

#include <stdio.h>
#include <sys/types.h>
#include <netdb.h>


int
compat_gethostbyname_r(const char *name, struct hostent *hp,
		       char *buf, size_t buflen,
		       struct hostent **hpp, int *herr)
{
#if GETHOSTBYNAME_R_NUM_ARGS == 5
	*hpp = gethostbyname_r(name, hp, buf, buflen, herr);

	if (*hpp == NULL)
		return -1;
	return 0;
#elif GETHOSTBYNAME_R_NUM_ARGS == 3
	struct hostent_data hdata;

	if (gethostbyname_r(name, hp, &hdata) == -1)
		return -1;
	*hpp = hp;
	return 0;
#endif /* GETHOSTBYNAME_R_NUM_ARGS == 5 */
}


