diff options
Diffstat (limited to 'src/errors.c')
-rw-r--r-- | src/errors.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/errors.c b/src/errors.c new file mode 100644 index 0000000..49eb11d --- /dev/null +++ b/src/errors.c @@ -0,0 +1,27 @@ +#include <errno.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "errors.h" + +void +err(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + int save = errno; + flockfile(stderr); + + fputs("oryx: ", stderr); + vfprintf(stderr, fmt, ap); + if (fmt[strlen(fmt) - 1] == ':') + fprintf(stderr, " %s", strerror(save)); + fputc('\n', stderr); + fflush(stderr); + funlockfile(stderr); + va_end(ap); + exit(EXIT_FAILURE); +} |