add error_name function
authorTero Marttila <terom@fixme.fi>
Sun, 22 Feb 2009 07:21:28 +0200
changeset 6 240ae8482d64
parent 5 a09a0797f6f0
child 7 844f014409ff
add error_name function
Makefile
src/error.c
src/error.h
src/nexus.c
--- a/Makefile	Sun Feb 22 07:08:57 2009 +0200
+++ b/Makefile	Sun Feb 22 07:21:28 2009 +0200
@@ -30,6 +30,7 @@
 # modules
 module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
 
+CORE_OBJS = obj/error.o
 SOCK_OBJS = obj/sock.o obj/sock_tcp.o
 SOCK_GNUTLS_OBJS = obj/sock_gnutls.o
 
@@ -40,7 +41,7 @@
 all: ${BIN_PATHS}
 
 # binaries
-bin/nexus: ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS}
+bin/nexus: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS}
 
 # computed
 CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS} ${LIBEVENT_CFLAGS} ${GNUTLS_CFLAGS}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/error.c	Sun Feb 22 07:21:28 2009 +0200
@@ -0,0 +1,28 @@
+
+#include "error.h"
+
+/*
+ * Helper macros
+ */
+#define ERROR_NAME(code, name) case code: return name
+
+const char *error_name (err_t code)
+{
+    switch (code) {
+        ERROR_NAME( ERR_CALLOC,                         "calloc"                                        );
+        ERROR_NAME( ERR_GETADDRINFO,                    "getaddrinfo"                                   );
+        ERROR_NAME( ERR_GETADDRINFO_EMPTY,              "getaddrinfo"                                   );
+        ERROR_NAME( ERR_SOCKET,                         "socket"                                        );
+        ERROR_NAME( ERR_CONNECT,                        "connect"                                       );
+        ERROR_NAME( ERR_READ,                           "read"                                          );
+        ERROR_NAME( ERR_WRITE,                          "write"                                         );
+        ERROR_NAME( ERR_GNUTLS_CERT_ALLOC_CRED,         "gnutls_certificate_allocate_credentials"       );
+        ERROR_NAME( ERR_GNUTLS_GLOBAL_INIT,             "gnutls_global_init"                            );
+        ERROR_NAME( ERR_GNUTLS_INIT,                    "gnutls_init"                                   );
+        ERROR_NAME( ERR_GNUTLS_SET_DEFAULT_PRIORITY,    "gnutls_set_default_priority"                   );
+        ERROR_NAME( ERR_GNUTLS_CRED_SET,                "gnutls_credentials_set"                        );
+        ERROR_NAME( ERR_GNUTLS_HANDSHAKE,               "gnutls_handshake"                              );
+        default: return "[unknown]";
+    }
+}
+
--- a/src/error.h	Sun Feb 22 07:08:57 2009 +0200
+++ b/src/error.h	Sun Feb 22 07:21:28 2009 +0200
@@ -51,6 +51,11 @@
     unsigned int extra;
 };
 
+/*
+ * Translate an err_t into a string.
+ */
+const char *error_name (err_t code);
+
 /** No error, evaulates as logical false */
 #define SUCCESS (0)
 
--- a/src/nexus.c	Sun Feb 22 07:08:57 2009 +0200
+++ b/src/nexus.c	Sun Feb 22 07:21:28 2009 +0200
@@ -11,7 +11,7 @@
 #include "sock.h"
 
 #define CONNECT_HOST "irc.fixme.fi"
-#define CONNECT_SERV "6667"
+#define CONNECT_SERV "6697"
 #define LINE_LENGTH 512
 
 struct recvline_state {
@@ -112,15 +112,13 @@
 
     // initialize
     if (sock_init(&err))
-        // XXX: ...
-        errx(1, "sock_init");
+        errx(1, "sock_init: %s", error_name(ERROR_CODE(&err)));
 
     memset(&recvline_ctx, 0, sizeof(recvline_ctx));
     
     // over-simplified connect
     if (sock_gnutls_connect(&sock, CONNECT_HOST, CONNECT_SERV, &err))
-        // XXX:
-        errx(1, "sock_gnutls_connect");
+        errx(1, "sock_gnutls_connect: %s", error_name(ERROR_CODE(&err)));
 
     // read lines and dump them out
     do {