terom@1: #include terom@1: #include terom@1: #include terom@1: #include terom@1: #include terom@1: terom@6: #include "log.h" terom@1: terom@16: static void _generic_err_vargs (int flags, const char *func, int err, const char *fmt, va_list va) { terom@16: FILE *stream = flags & LOG_DISPLAY_STDERR ? stderr : stdout; terom@1: terom@1: if (func) terom@1: fprintf(stream, "%s: ", func); terom@1: terom@1: vfprintf(stream, fmt, va); terom@1: terom@16: if (flags & LOG_DISPLAY_PERR) terom@16: fprintf(stream, ": %s\n", strerror(err == 0 ? errno : -err)); terom@16: terom@16: if (!(flags & LOG_DISPLAY_NONL)) terom@16: fprintf(stream, "\n"); terom@1: } terom@1: terom@16: void _generic_err (int flags, const char *func, int err, const char *fmt, ...) { terom@1: va_list va; terom@1: terom@1: va_start(va, fmt); terom@16: _generic_err_vargs(flags, func, err, fmt, va); terom@1: va_end(va); terom@1: } terom@1: terom@16: void _generic_err_exit (int flags, const char *func, int err, const char *fmt, ...) { terom@1: va_list va; terom@1: terom@1: va_start(va, fmt); terom@16: _generic_err_vargs(flags, func, err, fmt, va); terom@1: va_end(va); terom@1: terom@1: exit(EXIT_FAILURE); terom@1: } terom@1: