From 0d5f145369ee02f0b3f54b5d2f0adeb6db7d3a27 Mon Sep 17 00:00:00 2001
From: Eric Blake <ebb9@byu.net>
Date: Fri, 27 Mar 2009 08:16:39 -0600
Subject: [PATCH] test-strerror: make debugging EAI_SYSTEM easier

* modules/getaddrinfo-tests (Depends-on): Add strerror.
* test-getaddrinfo.c (simple) [ENABLE_DEBUGGING]: Report errno if
failure was EAI_SYSTEM.

Signed-off-by: Eric Blake <ebb9@byu.net>
---
 ChangeLog                 | 7 +++++++
 modules/getaddrinfo-tests | 1 +
 tests/test-getaddrinfo.c  | 7 +++++++
 3 files changed, 15 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 47dba3d884..ccc0e4ec64 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-03-27  Eric Blake  <ebb9@byu.net>
+
+	test-strerror: make debugging EAI_SYSTEM easier
+	* modules/getaddrinfo-tests (Depends-on): Add strerror.
+	* test-getaddrinfo.c (simple) [ENABLE_DEBUGGING]: Report errno if
+	failure was EAI_SYSTEM.
+
 2009-03-25  Bruno Haible  <bruno@clisp.org>
 
 	Fix a problem with --enable-relocatable on Solaris 7.
diff --git a/modules/getaddrinfo-tests b/modules/getaddrinfo-tests
index 5f80523b68..a21fe6fa0f 100644
--- a/modules/getaddrinfo-tests
+++ b/modules/getaddrinfo-tests
@@ -3,6 +3,7 @@ tests/test-getaddrinfo.c
 
 Depends-on:
 inet_ntop
+strerror
 
 configure.ac:
 
diff --git a/tests/test-getaddrinfo.c b/tests/test-getaddrinfo.c
index 5e33bb24f1..4816920a95 100644
--- a/tests/test-getaddrinfo.c
+++ b/tests/test-getaddrinfo.c
@@ -19,7 +19,9 @@
 
 #include <config.h>
 #include <netdb.h>
+
 #include <arpa/inet.h>
+#include <errno.h>
 #include <netinet/in.h>
 #include <stdio.h>
 #include <string.h>
@@ -49,6 +51,7 @@ int simple (char *host, char *service)
   struct addrinfo hints;
   struct addrinfo *ai0, *ai;
   int res;
+  int err;
 
   /* Once we skipped the test, do not try anything else */
   if (skip)
@@ -64,6 +67,7 @@ int simple (char *host, char *service)
   hints.ai_socktype = SOCK_STREAM;
 
   res = getaddrinfo (host, service, 0, &ai0);
+  err = errno;
 
   dbgprintf ("res %d: %s\n", res, gai_strerror (res));
 
@@ -90,6 +94,9 @@ int simple (char *host, char *service)
 	 merely because of this.  */
       if (res == EAI_NODATA)
 	return 0;
+      /* Provide details if errno was set.  */
+      if (res == EAI_SYSTEM)
+         dbgprintf ("system error: %s\n", strerror (err));
 
       return 1;
     }
-- 
2.30.2