diff options
Diffstat (limited to 'lib/error.c')
-rw-r--r-- | lib/error.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/error.c b/lib/error.c index 67828c9..0b55edb 100644 --- a/lib/error.c +++ b/lib/error.c @@ -1,17 +1,29 @@ -#include "error.h" +#include "lslib.h" #include <stdarg.h> #include <stdio.h> #include <stdlib.h> +#include <errno.h> +#include <string.h> extern char* cmd; +void die (void) { + exit (EXIT_FAILURE); +} + void error_s(const char *format, ...) { va_list list; va_start(list, format); fprintf(stderr, "%s: ", cmd); vfprintf(stderr, format, list); + + if (errno != 0) { + fprintf(stderr, ": %s", strerror(errno)); + errno = 0; + } + fprintf(stderr, "\n"); } @@ -21,8 +33,15 @@ void error(const char *format, ...) { fprintf(stderr, "%s: ", cmd); vfprintf(stderr, format, list); + + if (errno != 0) { + fprintf(stderr, ": %s", strerror(errno)); + errno = 0; + } + fprintf(stderr, "\n"); - exit(EXIT_FAILURE); + + die(); } void output(const char *format, ...) { |