From b6f827d6939397e99d72b1dc8480c72364d8905c Mon Sep 17 00:00:00 2001 From: midipix Date: Tue, 1 Jan 2019 05:30:34 -0500 Subject: sofort: split-up: keep build-system elements, move extras to sofortex. --- src/output/sfrt_output_error.c | 229 ----------------------------------------- 1 file changed, 229 deletions(-) delete mode 100644 src/output/sfrt_output_error.c (limited to 'src/output/sfrt_output_error.c') diff --git a/src/output/sfrt_output_error.c b/src/output/sfrt_output_error.c deleted file mode 100644 index 24cb21a..0000000 --- a/src/output/sfrt_output_error.c +++ /dev/null @@ -1,229 +0,0 @@ -#include -#include -#include -#include - -#include -#include "sofort_driver_impl.h" -#include "sofort_dprintf_impl.h" - -static const char aclr_reset[] = "\x1b[0m"; -static const char aclr_bold[] = "\x1b[1m"; - -static const char aclr_red[] = "\x1b[31m"; -static const char aclr_green[] = "\x1b[32m"; -static const char aclr_blue[] = "\x1b[34m"; -static const char aclr_magenta[] = "\x1b[35m"; - -static const char const * const sfrt_error_strings[SFRT_ERR_CAP] = { - [SFRT_ERR_FLOW_ERROR] = "flow error: unexpected condition or other", - [SFRT_ERR_FLEE_ERROR] = "flees and bugs and cats and mice", - [SFRT_ERR_NULL_CONTEXT] = "null driver or unit context", - [SFRT_ERR_NULL_SOURCE] = "source file does not define any data", - [SFRT_ERR_INVALID_CONTEXT] = "invalid driver or unit context", - [SFRT_ERR_INVALID_SOURCE] = "invalid source file", - [SFRT_ERR_SOURCE_SIZE_ZERO] = "cannot map an empty source file", -}; - -static const char * sfrt_output_error_header(const struct sfrt_error_info * erri) -{ - if (erri->eflags & SFRT_ERROR_CHILD) - return "exec error upon"; - - else if (erri->eflags & SFRT_ERROR_TOP_LEVEL) - return "error logged in"; - - else if (erri->eflags & SFRT_ERROR_NESTED) - return "< returned to >"; - - else - return "distorted state"; -} - -static const char * sfrt_output_unit_header(const struct sfrt_error_info * erri) -{ - if (!(erri->eflags & SFRT_ERROR_CUSTOM)) - return "while opening"; - - else if (erri->elibcode == SFRT_ERR_SOURCE_SIZE_ZERO) - return "while mapping"; - - else - return "while parsing"; -} - -static const char * sfrt_output_strerror( - const struct sfrt_error_info * erri, - char (*errbuf)[256]) -{ - if (erri->eflags & SFRT_ERROR_CUSTOM) - return ((erri->elibcode < 0) || (erri->elibcode >= SFRT_ERR_CAP)) - ? "internal error: please report to the maintainer" - : sfrt_error_strings[erri->elibcode]; - - else if (erri->eflags & SFRT_ERROR_NESTED) - return ""; - - else if (erri->eflags & SFRT_ERROR_CHILD) - return "(see child process error messages)"; - - else if (erri->esyscode == ENOBUFS) - return "input error: string length exceeds buffer size."; - - else - return strerror_r(erri->esyscode,*errbuf,sizeof(*errbuf)) - ? "internal error: strerror_r(3) call failed" - : *errbuf; -} - -static int sfrt_output_error_record_plain( - const struct sfrt_driver_ctx * dctx, - const struct sfrt_error_info * erri) -{ - const char * epath; - char errbuf[256]; - - int fderr = sfrt_driver_fderr(dctx); - const char * errdesc = sfrt_output_strerror(erri,&errbuf); - - epath = erri->euctx - ? *erri->euctx->path - : erri->eunit; - - if (epath && !(erri->eflags & SFRT_ERROR_NESTED)) - if (sfrt_dprintf( - fderr, - "%s: [%s] '%s':\n", - dctx->program, - sfrt_output_unit_header(erri), - epath) < 0) - return -1; - - if (sfrt_dprintf( - fderr, - "%s: %s %s(), line %d%s%s.\n", - dctx->program, - sfrt_output_error_header(erri), - erri->efunction, - erri->eline, - strlen(errdesc) ? ": " : "", - errdesc) < 0) - return -1; - - return 0; -} - -static int sfrt_output_error_record_annotated( - const struct sfrt_driver_ctx * dctx, - const struct sfrt_error_info * erri) -{ - const char * epath; - char errbuf[256]; - - int fderr = sfrt_driver_fderr(dctx); - const char * errdesc = sfrt_output_strerror(erri,&errbuf); - - epath = erri->euctx - ? *erri->euctx->path - : erri->eunit; - - if (epath && !(erri->eflags & SFRT_ERROR_NESTED)) - if (sfrt_dprintf( - fderr, - "%s%s%s:%s %s[%s]%s %s%s'%s'%s:\n", - - aclr_bold,aclr_magenta, - dctx->program, - aclr_reset, - - aclr_bold, - sfrt_output_unit_header(erri), - aclr_reset, - - aclr_bold,aclr_red, - epath, - aclr_reset) < 0) - return -1; - - if (sfrt_dprintf( - fderr, - "%s%s%s:%s %s%s%s %s%s%s()%s, %s%sline %d%s%s%s%s%s.\n", - - aclr_bold,aclr_magenta, - dctx->program, - aclr_reset, - - aclr_bold, - sfrt_output_error_header(erri), - aclr_reset, - - aclr_bold,aclr_blue, - erri->efunction, - aclr_reset, - - aclr_bold,aclr_green, - erri->eline, - aclr_reset, - strlen(errdesc) ? ": " : "", - - aclr_bold, - errdesc, - aclr_reset) < 0) - return -1; - - return 0; -} - -int sfrt_output_error_record( - const struct sfrt_driver_ctx * dctx, - const struct sfrt_error_info * erri) -{ - if (dctx->cctx->drvflags & SFRT_DRIVER_ANNOTATE_NEVER) - return sfrt_output_error_record_plain(dctx,erri); - - else if (dctx->cctx->drvflags & SFRT_DRIVER_ANNOTATE_ALWAYS) - return sfrt_output_error_record_annotated(dctx,erri); - - else if (isatty(sfrt_driver_fderr(dctx))) - return sfrt_output_error_record_annotated(dctx,erri); - - else - return sfrt_output_error_record_plain(dctx,erri); -} - -static int sfrt_output_error_vector_plain(const struct sfrt_driver_ctx * dctx) -{ - struct sfrt_error_info ** perr; - - for (perr=dctx->errv; *perr; perr++) - if (sfrt_output_error_record_plain(dctx,*perr)) - return -1; - - return 0; -} - -static int sfrt_output_error_vector_annotated(const struct sfrt_driver_ctx * dctx) -{ - struct sfrt_error_info ** perr; - - for (perr=dctx->errv; *perr; perr++) - if (sfrt_output_error_record_annotated(dctx,*perr)) - return -1; - - return 0; -} - -int sfrt_output_error_vector(const struct sfrt_driver_ctx * dctx) -{ - if (dctx->cctx->drvflags & SFRT_DRIVER_ANNOTATE_NEVER) - return sfrt_output_error_vector_plain(dctx); - - else if (dctx->cctx->drvflags & SFRT_DRIVER_ANNOTATE_ALWAYS) - return sfrt_output_error_vector_annotated(dctx); - - else if (isatty(sfrt_driver_fderr(dctx))) - return sfrt_output_error_vector_annotated(dctx); - - else - return sfrt_output_error_vector_plain(dctx); -} -- cgit v1.2.3