/* Copyright (C) 2008 Emmanuel Varoquaux
This file is part of XOS.
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 3 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, see . */
#include
#include
#include
#include
#include
void (*error_print_progname)() __attribute__ ((weak, visibility ("default"))) = NULL;
void __attribute__ ((weak, visibility ("default"))) error(int status, int errnum, const char *format, ...)
{
va_list ap;
fflush(stdout);
if (error_print_progname)
error_print_progname();
else
fprintf(stderr, "%s", program_invocation_name);
if (format) {
fputs(": ", stderr);
va_start(ap, format);
vfprintf(stderr, format, ap);
va_end(ap);
}
if (errnum)
fprintf(stderr, ": %s", strerror(errnum));
fputc('\n', stderr);
fflush(stderr);
if (status)
exit(status);
}