terom@0: #include terom@0: #include terom@0: #include terom@26: #include terom@0: #include terom@0: terom@0: #include "common.h" terom@0: terom@23: static void _generic_err_vargs (int use_stderr, const char *func, int perr, const char *fmt, va_list va) { terom@24: FILE *stream = use_stderr ? stderr : stdout; terom@23: terom@12: if (func) terom@23: fprintf(stream, "%s: ", func); terom@19: terom@23: vfprintf(stream, fmt, va); terom@19: terom@12: if (perr) terom@23: fprintf(stream, ": %s\n", strerror(errno)); terom@0: terom@23: fprintf(stream, "\n"); terom@19: } terom@19: terom@23: void _generic_err (int use_stderr, const char *func, int perr, const char *fmt, ...) { terom@19: va_list va; terom@19: terom@19: va_start(va, fmt); terom@23: _generic_err_vargs(use_stderr, func, perr, fmt, va); terom@19: va_end(va); terom@19: } terom@19: terom@23: void _generic_err_exit (int use_stderr, const char *func, int perr, const char *fmt, ...) { terom@19: va_list va; terom@19: terom@19: va_start(va, fmt); terom@23: _generic_err_vargs(use_stderr, func, perr, fmt, va); terom@19: va_end(va); terom@19: terom@19: exit(EXIT_FAILURE); terom@11: } terom@11: