1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #ifndef ERROR_SOURCE
- #define ERROR_SOURCE
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
- #include <string.h>
- #include "../tools/types.h"
- #include "../tools/error.h"
- #ifdef __GNUC__
- __attribute__ ((format (printf, 3, 4)))
- #endif
- signed error (signed status, errno_t number, char const * format, ...)
- {
- extern char const *program_name;
- if ((program_name) && (*program_name))
- {
- fprintf (stderr, "%s: ", program_name);
- }
- #if 1
- if ((format) && (*format))
- {
- va_list arglist;
- va_start (arglist, format);
- vfprintf (stderr, format, arglist);
- va_end (arglist);
- }
- if (number)
- {
- fprintf (stderr, ": %s", strerror (number));
- }
- #else
- if (number)
- {
- fprintf (stderr, "%s: ", strerror (number));
- }
- if ((format) && (*format))
- {
- va_list arglist;
- va_start (arglist, format);
- vfprintf (stderr, format, arglist);
- va_end (arglist);
- }
- #endif
- fprintf (stderr, "\n");
- fflush (stderr);
- if (status)
- {
- exit (status);
- }
- return (-1);
- }
- #endif
|