diff options
author | Jim Meyering <jim@meyering.net> | 2000-04-30 16:25:30 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2000-04-30 16:25:30 +0000 |
commit | 72d2131b0e2ff186dc276c15e78a55dac4721407 (patch) | |
tree | 03dd76e985ab33722b8722b0717c1227c4c66990 /lib | |
parent | 2edc7371bce3b6a418db687394c3ece6bf76da03 (diff) | |
download | coreutils-72d2131b0e2ff186dc276c15e78a55dac4721407.tar.xz |
.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fatal.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/fatal.c b/lib/fatal.c new file mode 100644 index 000000000..66362b8fe --- /dev/null +++ b/lib/fatal.c @@ -0,0 +1,68 @@ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> + +#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC +# if __STDC__ +# include <stdarg.h> +# define VA_START(args, lastarg) va_start(args, lastarg) +# else +# include <varargs.h> +# 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 <stdlib.h> +# include <string.h> +#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 +} |