From 464847c5b25588448e550017a6d91447c076b944 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Wed, 23 Nov 2016 21:23:09 +0000 Subject: init commit --- log.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 log.c (limited to 'log.c') diff --git a/log.c b/log.c new file mode 100644 index 0000000..39730bf --- /dev/null +++ b/log.c @@ -0,0 +1,99 @@ +/* log.c -- Error and warning messages. + * + * Copyright (C) 2016 Tomasz Kramkowski + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#include +#include +#include +#include +#include + +#include "log.h" + +const char *argv0; + +void error(int errnum, const char *fmt, ...) +{ + assert(fmt); + + va_list va; + + fprintf(stderr, "%s: error: ", argv0); + + va_start(va, fmt); + vfprintf(stderr, fmt, va); + va_end(va); + + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + + fputc('\n', stderr); + + exit(EXIT_FAILURE); +} + +void errorat(int errnum, const char *file, long line, const char *fmt, ...) +{ + assert(file && fmt); + + va_list va; + + fprintf(stderr, "%s:%s:%ld: error: ", argv0, file, line); + + va_start(va, fmt); + vfprintf(stderr, fmt, va); + va_end(va); + + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + + fputc('\n', stderr); + + exit(EXIT_FAILURE); +} + +void warning(int errnum, const char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, "%s: warning: ", argv0); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + + fputc('\n', stderr); +} + +void warningat(int errnum, const char *file, long line, const char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%s:%ld: warning: ", argv0, file, line); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + + fputc('\n', stderr); +} -- cgit v1.2.3-54-g00ecf