From a2a62554b8e23e464bd98b3db7eac12297c95c84 Mon Sep 17 00:00:00 2001 From: Nick Chambers Date: Thu, 30 Jun 2022 02:30:34 -0500 Subject: [PATCH] Add an error type for recording failures --- Makefile | 2 +- include/gargoyle/delusion.h | 19 +++++++++++++++++++ src/delusion.c | 13 +++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 include/gargoyle/delusion.h create mode 100644 src/delusion.c diff --git a/Makefile b/Makefile index 16365cc..62d5cd5 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ CFLAGS ?= -Wall -Wextra -g -O1 LDFLAGS ?= -g -O1 LIB_CFLAGS ?= -fpic LIB_LDFLAGS ?= -shared -GARGOYLE_OBJS := gargoyle scribe sleuth twine +GARGOYLE_OBJS := delusion gargoyle scribe sleuth twine GARGOYLE_TEST_OBJS := runner sleuth twine #GARGOYLE_TEST_OBJS := runner $(GARGOYLE_OBJS) diff --git a/include/gargoyle/delusion.h b/include/gargoyle/delusion.h new file mode 100644 index 0000000..cd94e2f --- /dev/null +++ b/include/gargoyle/delusion.h @@ -0,0 +1,19 @@ +#ifndef __GARGOYLE_DELUSION_H_ +#define __GARGOYLE_DELUSION_H_ + +#include + +static const uint8_t GARGOYLE_MAX_ERR_SZ = 255; +static const uint8_t GARGOYLE_MAX_FUNC_SZ = 32; + +struct gargoyle_err { + gargoyle_err_type code; + int errno; + char func[GARGOYLE_MAX_FUNC_SZ]; + char errno_func[GARGOYLE_MAX_FUNC_SZ]; + char msg[GARGOYLE_MAX_ERR_SZ]; +}; + +void gargoyle_emit_err(struct gargoyle_err *err); + +#endif diff --git a/src/delusion.c b/src/delusion.c new file mode 100644 index 0000000..abe96e6 --- /dev/null +++ b/src/delusion.c @@ -0,0 +1,13 @@ +#include + +#include + +void gargoyle_emit_err(struct gargoyle_err *err) { + fprintf(stderr, "%s(%u): ", err->func, err->code); + + if(err->errno) { + fprintf(stderr, "%s(%d): ", err->errno_func, err->errno); + } + + fprintf(stderr, "%s\n", err->msg); +}