1 /* Declaration for error-reporting function 2 Copyright (C) 1995-1997, 2003, 2006, 2008-2020 Free Software Foundation, 3 Inc. 4 This file is part of the GNU C Library. 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _ERROR_H 20 #define _ERROR_H 1 21 22 /* On mingw, the flavor of printf depends on whether the extensions module 23 * is in use; the check for <stdio.h> determines the witness macro. */ 24 #ifndef _GL_ATTRIBUTE_SPEC_PRINTF 25 # if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 26 # define _GL_ATTRIBUTE_SPEC_PRINTF __gnu_printf__ 27 # else 28 # define _GL_ATTRIBUTE_SPEC_PRINTF __printf__ 29 # endif 30 #endif 31 32 #if GNULIB_REPLACE_ERROR 33 # undef error_print_progname 34 # undef error_message_count 35 # undef error_one_per_line 36 # define error_print_progname rpl_error_print_progname 37 # define error_message_count rpl_error_message_count 38 # define error_one_per_line rpl_error_one_per_line 39 #endif 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 /* Print a message with 'fprintf (stderr, FORMAT, ...)'; 46 if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). 47 If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */ 48 49 extern void error (int __status, int __errnum, const char *__format, ...) 50 _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF, 3, 4)); 51 52 extern void error_at_line (int __status, int __errnum, const char *__fname, 53 unsigned int __lineno, const char *__format, ...) 54 _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF, 5, 6)); 55 56 /* If NULL, error will flush stdout, then print on stderr the program 57 name, a colon and a space. Otherwise, error will call this 58 function without parameters instead. */ 59 extern DLL_VARIABLE void (*error_print_progname) (void); 60 61 /* This variable is incremented each time 'error' is called. */ 62 extern DLL_VARIABLE unsigned int error_message_count; 63 64 /* Sometimes we want to have at most one error per line. This 65 variable controls whether this mode is selected or not. */ 66 extern DLL_VARIABLE int error_one_per_line; 67 68 #ifdef __cplusplus 69 } 70 #endif 71 72 #endif /* error.h */ 73