/* This file is part of libbrandt. * Copyright (C) 2016 GNUnet e.V. * * libbrandt 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 3 of the License, or (at your option) any later * version. * * libbrandt 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 * libbrandt. If not, see . */ /** * @file util.c * @brief \todo */ #include #include #include #include #include "util.h" /** * xvprintf prints a formatstring with prefix "libbrandt: ". If the format * string ends with a ':', the strerror() from errno.h output will be appended. * The output is always terminated with a newline. * * @param fmt The format string * @param ap The inputs to the format string */ void xvprintf (const char *fmt, va_list ap) { /**\todo: provide other logging target than stderr */ fputs ("libbrandt: ", stderr); vfprintf (stderr, fmt, ap); if (fmt[0] && fmt[strlen (fmt) - 1] == ':') { fputc (' ', stderr); perror (NULL); } else { fputc ('\n', stderr); } } /** * eprintf prints an error message and then calls abort() to terminate the * process. * * @param fmt The format string * @param ... The inputs to the format string */ void eprintf (const char *fmt, ...) { va_list ap; va_start (ap, fmt); xvprintf (fmt, ap); va_end (ap); abort (); } /** * weprintf prints a warning message * * @param fmt The format string * @param ... The inputs to the format string */ void weprintf (const char *fmt, ...) { va_list ap; va_start (ap, fmt); xvprintf (fmt, ap); va_end (ap); }