File leafnode-1.11.8-gethostbyname-2-getaddrinfo.patch of Package leafnode

Index: miscutil.c
===================================================================
--- miscutil.c.orig	2011-08-18 23:46:27.000000000 +0200
+++ miscutil.c	2011-08-19 01:30:14.948752733 +0200
@@ -491,34 +491,33 @@ chdirgroup(const char *group, int creatd
 static void
 whoami(void)
 {
-    struct hostent *he;
+    struct addrinfo hints, *res, *p;
     int debugqual = 0;
     char *x;
 
     if ((x = getenv("LN_DEBUG_QUALIFICATION")) != NULL
 	&& *x)
 	debugqual = 1;
+    memset(&hints, 0, sizeof hints);
+    hints.ai_flags = AI_CANONNAME;
 
-    if (!gethostname(fqdn, sizeof(fqdn)) && (he = gethostbyname(fqdn)) != NULL) {
-	xstrlcpy(fqdn, he->h_name, sizeof(fqdn));
-	if (debugqual) syslog(LOG_DEBUG, "canonical hostname: %s", fqdn);
-	if (!is_validfqdn(fqdn)) {
-	    char **alias;
-	    alias = he->h_aliases;
-	    while (alias && *alias) {
-		if (debugqual) {
-		    syslog(LOG_DEBUG, "alias for my hostname: %s", *alias);
-		}
-		if (is_validfqdn(*alias)) {
-		    xstrlcpy(fqdn, *alias, sizeof(fqdn));
-		    break;
-		} else {
-		    alias++;
-		}
-	    }
-	}
-	endhostent();
+    if (!gethostname(fqdn, sizeof(fqdn)) && !getaddrinfo(fqdn, NULL, &hints, &res)) {
+        xstrlcpy(fqdn,res->ai_canonname, sizeof(fqdn));
+        if (debugqual) syslog(LOG_DEBUG, "canonical hostname: %s", fqdn);
+        if (!is_validfqdn(fqdn)) {
+            for (p = res; p != NULL; p = p->ai_next) {
+                if (debugqual) {
+                    syslog(LOG_DEBUG, "alias for my hostname: %s", p->ai_canonname);
+                }
+                if (is_validfqdn(p->ai_canonname)) {
+                    xstrlcpy(fqdn, p->ai_canonname, sizeof(fqdn));
+                    break;
+                }
+            }
+        }
+        freeaddrinfo(res);
     }
+
 }
 
 /*
openSUSE Build Service is sponsored by