From 415f33a079786c7a2bbd04daba584fae2c8d9a30 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Thu, 23 Feb 2006 05:02:11 +0000 Subject: [PATCH] start reentrant gethostbyname impl --- src/sigar.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/sigar.c b/src/sigar.c index 2756e265..383745c3 100644 --- a/src/sigar.c +++ b/src/sigar.c @@ -1552,6 +1552,24 @@ static int fqdn_ip_get(sigar_t *sigar, char *name) #include #endif +#define GETHOSTBYNAME_LEN 512 + +static struct hostent *sigar_gethostbyname(const char *name) +{ + char buffer[GETHOSTBYNAME_LEN]; + struct hostent hs, *hp; + int err; + +#if defined(__linux__) + gethostbyname_r(name, &hs, buffer, sizeof(buffer), + &hp, &err); +#else + hp = gethostbyname(name); +#endif + + return hp; +} + #define IS_FQDN(name) \ (name && strchr(name, '.')) @@ -1588,7 +1606,7 @@ SIGAR_DECLARE(int) sigar_fqdn_get(sigar_t *sigar, char *name, int namelen) } /* XXX use _r versions of these functions. */ - if (!(p = gethostbyname(name))) { + if (!(p = sigar_gethostbyname(name))) { if (SIGAR_LOG_IS_DEBUG(sigar)) { sigar_log_printf(sigar, SIGAR_LOG_DEBUG, "[fqdn] gethostbyname(%s) failed: %s",