From: Jim Meyering Date: Sun, 30 Apr 2000 16:25:30 +0000 (+0000) Subject: . X-Git-Tag: SH-UTILS-2_0h~117 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=72d2131b0e2ff186dc276c15e78a55dac4721407;p=thirdparty%2Fcoreutils.git . --- diff --git a/lib/fatal.c b/lib/fatal.c new file mode 100644 index 0000000000..66362b8fe5 --- /dev/null +++ b/lib/fatal.c @@ -0,0 +1,68 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC +# if __STDC__ +# include +# define VA_START(args, lastarg) va_start(args, lastarg) +# else +# include +# define VA_START(args, lastarg) va_start(args) +# endif +#else +# define va_alist a1, a2, a3, a4, a5, a6, a7, a8 +# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; +#endif + +#if STDC_HEADERS || _LIBC +# include +# include +#else +void exit (); +#endif + +#ifdef _LIBC +# define program_name program_invocation_name +#else /* not _LIBC */ +/* The calling program should define program_name and set it to the + name of the executing program. */ +extern char *program_name; +#endif + +#include "fatal.h" + +/* Like error, but always exit with EXIT_FAILURE. */ + +void +#if defined VA_START && __STDC__ +fatal (int errnum, const char *message, ...) +#else +fatal (errnum, message, va_alist) + int errnum; + char *message; + va_dcl +#endif +{ +#ifdef VA_START + va_list args; +#endif + + if (error_print_progname) + (*error_print_progname) (); + else + { + fflush (stdout); + fprintf (stderr, "%s: ", program_name); + } + +#ifdef VA_START + VA_START (args, message); + error (EXIT_FAILURE, errnum, message, args); + va_end (args); +#else + error (EXIT_FAILURE, errnum, message, a1, a2, a3, a4, a5, a6, a7, a8); +#endif +}