common.c
changeset 23 31307efd7e78
parent 19 d18606bb6f20
child 24 8307d28329ae
--- a/common.c	Tue Jun 17 19:08:05 2008 +0300
+++ b/common.c	Thu Jun 26 01:32:56 2008 +0300
@@ -7,31 +7,33 @@
 
 #include "common.h"
 
-static void _generic_err_vargs (const char *func, int perr, const char *fmt, va_list va) {
+static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) {
+    FILE *stream = use_stderr ? stderr : stdin;
+
     if (func)
-        fprintf(stderr, "%s: ", func);
+        fprintf(stream, "%s: ", func);
     
-    vfprintf(stderr, fmt, va);
+    vfprintf(stream, fmt, va);
     
     if (perr)
-        fprintf(stderr, ": %s\n", strerror(errno));
+        fprintf(stream, ": %s\n", strerror(errno));
 
-    fprintf(stderr, "\n");
+    fprintf(stream, "\n");
 }
 
-void _generic_err (const char *func, int perr, const char *fmt, ...) {
+void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) {
     va_list va;
 
     va_start(va, fmt);
-    _generic_err_vargs(func, perr, fmt, va);
+    _generic_err_vargs(use_stderr, func, perr, fmt, va);
     va_end(va);
 }
 
-void _generic_err_exit (const char *func, int perr, const char *fmt, ...) {
+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(func, perr, fmt, va);
+    _generic_err_vargs(use_stderr, func, perr, fmt, va);
     va_end(va);
       
     exit(EXIT_FAILURE);