diff -r 4627760fc0d1 -r 31307efd7e78 common.c --- 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);