src/lib/common.c
changeset 1 b31db3248246
child 2 11757d6b43a6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib/common.c	Thu Sep 25 15:03:09 2008 +0300
@@ -0,0 +1,40 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+
+#include "common.h"
+
+static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) {
+    FILE *stream = use_stderr ? stderr : stdout;
+
+    if (func)
+        fprintf(stream, "%s: ", func);
+    
+    vfprintf(stream, fmt, va);
+    
+    if (perr)
+        fprintf(stream, ": %s\n", strerror(errno));
+
+    fprintf(stream, "\n");
+}
+
+void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) {
+    va_list va;
+
+    va_start(va, fmt);
+    _generic_err_vargs(use_stderr, func, perr, fmt, va);
+    va_end(va);
+}
+
+void _generic_err_exit (int use_stderr, const char *func, int perr, const char *fmt, ...) {
+    va_list va;
+
+    va_start(va, fmt);
+    _generic_err_vargs(use_stderr, func, perr, fmt, va);
+    va_end(va);
+      
+    exit(EXIT_FAILURE);
+}
+