aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Andree <matthias.andree@gmx.de>2013-02-03 15:12:07 +0100
committerMatthias Andree <matthias.andree@gmx.de>2013-02-03 15:12:07 +0100
commit7f6138ffd4935043382ce5f867ee9e177e0a9787 (patch)
tree7442b10e479bdcb397947c941bf377ce0e0772d9
parent5b0e1fdef9c55b9c8a54f5c146fc84dab3b82e63 (diff)
downloadfetchmail-7f6138ffd4935043382ce5f867ee9e177e0a9787.tar.gz
fetchmail-7f6138ffd4935043382ce5f867ee9e177e0a9787.tar.bz2
fetchmail-7f6138ffd4935043382ce5f867ee9e177e0a9787.zip
Add new gai.c debug source.
-rw-r--r--contrib/README5
-rw-r--r--contrib/gai.c42
2 files changed, 47 insertions, 0 deletions
diff --git a/contrib/README b/contrib/README
index 7c6e6e8f..5eaa51e9 100644
--- a/contrib/README
+++ b/contrib/README
@@ -202,3 +202,8 @@ It probably needs to be adjusted for use on other systems.
A MySQL/Tcl/Expect-based client-side script to remove messages at a
certain age. See delete-later.README for details.
(By Carsten Ralle, Yoo GmbH, Germany.)
+
+### gai (added 2013-02-03, --ma)
+
+A trivial getaddrinfo() program to check the getaddrinfo() call from the
+system, as a research tool for the fetchmail developers.
diff --git a/contrib/gai.c b/contrib/gai.c
new file mode 100644
index 00000000..28961382
--- /dev/null
+++ b/contrib/gai.c
@@ -0,0 +1,42 @@
+/*
+ * File: gai.c
+ * Author: Matthias Andree
+ *
+ * Created on 3. Februar 2013, 15:03
+ * A short file to call getaddrinfo with the same arguments as checkalias.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <netdb.h>
+
+/*
+ *
+ */
+int main(int argc, char** argv) {
+ struct addrinfo hints;
+ struct addrinfo *res;
+
+ if (argc != 2 || 0 == strcmp("-h", argv[1])) {
+ fprintf(stderr, "Usage: %s hostname\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ memset(&hints, 0, sizeof hints);
+ hints.ai_family=AF_UNSPEC;
+ hints.ai_protocol=PF_UNSPEC;
+ hints.ai_socktype=SOCK_STREAM;
+ hints.ai_flags=AI_CANONNAME;
+
+ int result = getaddrinfo(argv[1], NULL, &hints, &res);
+ if (result) {
+ fprintf(stderr, "getaddrinfo(\"%s\", ...AI_CANONNAME...) failed: %d (%s)\n", argv[1], result, gai_strerror(result));
+ exit(EXIT_FAILURE);
+ }
+
+ freeaddrinfo(res);
+ return (EXIT_SUCCESS);
+}
+