chiark / gitweb /
log: more general error message formatting
[disorder] / lib / client.c
index 55cfe1c838002147e0382a6eac42c0e5a8a5f0cf..08d70e762c1c37a87c2bf2c54638f354e8da1342 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004-2010 Richard Kettlewell
+ * Copyright (C) 2004-13 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #include "common.h"
 
 #include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <sys/un.h>
-#include <unistd.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+#if HAVE_SYS_UN_H
+# include <sys/un.h>
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
 #include <errno.h>
-#include <netdb.h>
-#include <pcre.h>
+#if HAVE_NETDB_H
+# include <netdb.h>
+#endif
+#if HAVE_PCRE_H
+# include <pcre.h>
+#endif
 
 #include "log.h"
 #include "mem.h"
@@ -66,6 +78,8 @@ struct disorder_client {
   int verbose;
   /** @brief Last error string */
   const char *last;
+  /** @brief Address family */
+  int family;
 };
 
 /** @brief Create a new client
@@ -80,9 +94,15 @@ disorder_client *disorder_new(int verbose) {
   disorder_client *c = xmalloc(sizeof (struct disorder_client));
 
   c->verbose = verbose;
+  c->family = -1;
   return c;
 }
 
+/** @brief Return the address family used by this client */
+int disorder_client_af(disorder_client *c) {
+  return c->family;
+}
+
 /** @brief Read a response line
  * @param c Client
  * @param rp Where to store response, or NULL (UTF-8)
@@ -407,6 +427,7 @@ int disorder_connect_generic(struct config *conf,
     disorder_error(errno, "error calling socket");
     return -1;
   }
+  c->family = sa->sa_family;
   if(connect(fd, sa, salen) < 0) {
     byte_xasprintf((char **)&c->last, "connect: %s", strerror(errno));
     disorder_error(errno, "error calling connect");