function that makes error messages added
authorMarcel Poul <marcel.poul@cern.ch>
Wed, 2 Nov 2011 10:06:07 +0000 (10:06 +0000)
committerMarcel Poul <marcel.poul@cern.ch>
Wed, 2 Nov 2011 10:06:07 +0000 (10:06 +0000)
emi.canl.canl-c/Makefile
emi.canl.canl-c/src/canl_err.c [new file with mode: 0644]
emi.canl.canl-c/src/canl_locl.h

index 6894403..07ec35a 100644 (file)
@@ -3,7 +3,7 @@ PATH_ROOT=/home/marvel/canl/emi.canl.canl-c
 PATH_SRC=${PATH_ROOT}/src
 CC=gcc
 CFLAGS_LIB=-Wall -fPIC -c
-LFLAGS_LIB=-shared -o libcanl.so
+LFLAGS_LIB=-shared -o libcanl.so -lcares
 
 CFLAGS_CLI=-Wall -c
 LFLAGS_CLI=-L${PATH_ROOT} -I${PATH_ROOT} -o client -lcanl
@@ -11,9 +11,7 @@ LFLAGS_CLI=-L${PATH_ROOT} -I${PATH_ROOT} -o client -lcanl
 CFLAGS_SER=-Wall -c
 LFLAGS_SER=-L${PATH_ROOT} -I${PATH_ROOT} -o server -lcanl
 
-SRC_CANL=${PATH_SRC}/canl.c ${PATH_SRC}/canl_dns.c
 HEAD_CANL=${PATH_SRC}/canl.h ${PATH_SRC}/canl_locl.h
-OBJ_CANL=canl.o
 
 SRC_CLI=${PATH_SRC}/canl_sample_client.c
 HEAD_CLI=${PATH_SRC}/canl.h
@@ -23,11 +21,17 @@ SRC_SER=${PATH_SRC}/canl_sample_server.c
 HEAD_SER=${PATH_SRC}/canl.h
 OBJ_SER=canl_sample_server.o
 
-libcanl.so: ${OBJ_CANL}
-       ${CC} ${OBJ_CANL} ${LFLAGS_LIB}
+libcanl.so: canl.o canl_err.o canl_dns.o
+       ${CC} canl.o canl_err.o canl_dns.o ${LFLAGS_LIB}
 
-${OBJ_CANL}: ${SRC_CANL} ${HEAD_CANL}
-       ${CC} ${SRC_CANL} ${CFLAGS_LIB}
+canl.o: ${PATH_SRC}/canl.c ${HEAD_CANL}
+       ${CC} ${PATH_SRC}/canl.c ${CFLAGS_LIB}
+
+canl_dns.o: ${PATH_SRC}/canl_dns.c ${HEAD_CANL}
+       ${CC} ${PATH_SRC}/canl_dns.c ${CFLAGS_LIB}
+
+canl_err.o: ${PATH_SRC}/canl_err.c ${HEAD_CANL}
+       ${CC} ${PATH_SRC}/canl_err.c ${CFLAGS_LIB}
 
 client: ${OBJ_CLI}
        ${CC} ${OBJ_CLI} ${LFLAGS_CLI}
diff --git a/emi.canl.canl-c/src/canl_err.c b/emi.canl.canl-c/src/canl_err.c
new file mode 100644 (file)
index 0000000..b56fa2e
--- /dev/null
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include "canl_locl.h"
+
+/* Save error message into err_msg
+ * use NULL for empty err_format */
+void make_err_msg (char **err_msg, const char *err_format, ...)
+{
+    unsigned int err_msg_len = 0;
+    va_list ap;
+    char *new_msg = NULL;
+    int err_format_len = 0;
+    unsigned int err_msg_sum = 0; // sum of msg and format lengths
+
+    if (err_format == NULL)
+        return;
+
+    if (*err_msg != NULL)
+        err_msg_len = strlen(*err_msg);
+
+    /* make new error message */
+    va_start(ap, err_format);
+    err_format_len = vsnprintf(NULL, 0, err_format, ap );
+    new_msg = (char*) malloc ( (err_format_len +1) * sizeof(char));
+    vsprintf(new_msg, err_format, ap);
+    if (err_format_len < 1)
+        return;
+
+    /* Add new error message to older one */
+    err_msg_sum = err_format_len + err_msg_len;
+    /* separator ; and ending '\0' -> 2 bytes */
+    *err_msg = (char *) realloc (*err_msg, (err_msg_sum + 2)*sizeof(char));
+    if (*err_msg == NULL)
+    {
+        free(new_msg);
+        return;
+    }
+    if (err_msg_len == 0)
+        (*err_msg)[0] = '\0';
+    strcat (*err_msg, new_msg);
+    strcat (*err_msg, ";");
+
+    free(new_msg);
+}
index a0f64c3..5831123 100644 (file)
@@ -24,4 +24,6 @@ struct asyn_result {
     int err;
 };
 
+void make_err_msg (char **err_msg, const char *err_format, ...);
+
 #endif