Author | Jamozed <[email protected]> |
Date | 2021-02-17 09:31:06 |
Commit | 4bd4d45f625e72071b9290941dcedc48485bb2c4 |
Parent | d9b7bcc957150589fd03a569bb6886da263531b3 |
Update lib/error to 1.0.2
Diffstat
M | CMakeLists.txt | | | 3 | --- |
M | src/lib/error.c | | | 12 | +++++++++--- |
M | src/lib/error.h | | | 8 | ++++++-- |
3 files changed, 15 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index cfea3e4..a42d286 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,3 @@ -# CMakeLists.txt -# CMakeLists file for OSH - CMAKE_MINIMUM_REQUIRED(VERSION 3.12) PROJECT(OSH VERSION 0.2.1 LANGUAGES C) diff --git a/src/lib/error.c b/src/lib/error.c index f246723..e0c80d3 100644 --- a/src/lib/error.c +++ b/src/lib/error.c @@ -1,4 +1,4 @@ -// error.c, version 1.0.1 +// error.c, version 1.0.2 // Error source file for OMKOV lib // Copyright (C) 2020, Jakob Wakeling // All rights reserved. @@ -34,22 +34,28 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. #include <errno.h> #include <stdarg.h> +#include <stdbool.h> #include <stdio.h> #include <stdlib.h> +#include <stdnoreturn.h> #include <string.h> char *A0 = NULL; +bool warned = false; -_Noreturn void error(int status, const char *format, ...) { +/* Print an error message and exit */ +noreturn void error(int status, const char *format, ...) { fflush(stdout); if (A0) { fputs(A0, stderr); fputs(": ", stderr); } va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); fputc('\n', stderr); exit(status); } +/* Print a warning message and set the warned flag */ void warn(const char *format, ...) { fflush(stdout); if (A0) { fputs(A0, stderr); fputs(": ", stderr); } va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); - fputc('\n', stderr); return; + fputc('\n', stderr); warned = true; return; } +/* Shorthand for strerror(errno) */ char *serr(void) { return strerror(errno); } diff --git a/src/lib/error.h b/src/lib/error.h index d0d4585..16db9cf 100644 --- a/src/lib/error.h +++ b/src/lib/error.h @@ -1,4 +1,4 @@ -// error.h, version 1.0.1 +// error.h, version 1.0.2 // Error header file for OMKOV lib // Copyright (C) 2020, Jakob Wakeling // All rights reserved. @@ -33,9 +33,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. #ifndef OMKOV_LIB_ERROR_H_38W06M3W #define OMKOV_LIB_ERROR_H_38W06M3W +#include <stdbool.h> +#include <stdnoreturn.h> + extern char *A0; +extern bool warned; -extern _Noreturn void error(int status, const char *format, ...); +extern noreturn void error(int status, const char *format, ...); extern void warn(const char *format, ...); extern char *serr(void);