From 5bf1b058baa3acee54cad80f0d378f105808b555 Mon Sep 17 00:00:00 2001 From: midipix Date: Fri, 2 Sep 2016 14:58:09 -0400 Subject: internals: error trace implementation: added slbt_record_error(). --- src/internal/slibtool_errinfo_impl.h | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/internal/slibtool_errinfo_impl.h (limited to 'src/internal/slibtool_errinfo_impl.h') diff --git a/src/internal/slibtool_errinfo_impl.h b/src/internal/slibtool_errinfo_impl.h new file mode 100644 index 0000000..c830975 --- /dev/null +++ b/src/internal/slibtool_errinfo_impl.h @@ -0,0 +1,80 @@ +/*******************************************************************/ +/* slibtool: a skinny libtool implementation, written in C */ +/* Copyright (C) 2016 Z. Gilboa */ +/* Released under the Standard MIT License; see COPYING.SLIBTOOL. */ +/*******************************************************************/ + +#include +#include + +int slbt_record_error( + const struct slbt_driver_ctx *, + int syserror, + int liberror, + const char * function, + int line, + unsigned flags, + void * ctx); + +#define SLBT_SYSTEM_ERROR(dctx) \ + slbt_record_error( \ + dctx, \ + errno, \ + 0, \ + __func__, \ + __LINE__, \ + SLBT_ERROR_TOP_LEVEL, \ + 0) + +#define SLBT_BUFFER_ERROR(dctx) \ + slbt_record_error( \ + dctx, \ + ENOBUFS, \ + 0, \ + __func__, \ + __LINE__, \ + SLBT_ERROR_TOP_LEVEL, \ + 0) + +#define SLBT_SPAWN_ERROR(dctx) \ + slbt_record_error( \ + dctx, \ + errno, \ + 0, \ + __func__, \ + __LINE__, \ + SLBT_ERROR_TOP_LEVEL \ + | (errno ? 0 \ + : SLBT_ERROR_CHILD), \ + 0) + +#define SLBT_FILE_ERROR(dctx) \ + slbt_record_error( \ + dctx, \ + EIO, \ + 0, \ + __func__, \ + __LINE__, \ + SLBT_ERROR_TOP_LEVEL, \ + 0) + +#define SLBT_CUSTOM_ERROR(dctx,liberror) \ + slbt_record_error( \ + dctx, \ + 0, \ + liberror, \ + __func__, \ + __LINE__, \ + SLBT_ERROR_TOP_LEVEL \ + | SLBT_ERROR_CUSTOM, \ + 0) + +#define SLBT_NESTED_ERROR(dctx) \ + slbt_record_error( \ + dctx, \ + 0, \ + 0, \ + __func__, \ + __LINE__, \ + SLBT_ERROR_NESTED, \ + 0) -- cgit v1.2.3