diff options
author | midipix <writeonce@midipix.org> | 2016-10-26 01:28:54 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-10-26 01:28:54 -0400 |
commit | cacd3e5f0c08e96e3bd7fbaebb3bbec3ec3751c1 (patch) | |
tree | a3706492a2f77ee7ed1fc9524829481ffb575ea5 | |
parent | 8ad14bb42706ebf7fe510df76c38e0a3bfa11601 (diff) | |
download | slibtool-cacd3e5f0c08e96e3bd7fbaebb3bbec3ec3751c1.tar.bz2 slibtool-cacd3e5f0c08e96e3bd7fbaebb3bbec3ec3751c1.tar.xz |
driver: struct slbt_error_info: extend and refactor.
-rw-r--r-- | include/slibtool/slibtool.h | 13 | ||||
-rw-r--r-- | src/internal/slibtool_errinfo_impl.c | 25 | ||||
-rw-r--r-- | src/internal/slibtool_errinfo_impl.h | 16 | ||||
-rw-r--r-- | src/output/slbt_output_error.c | 24 |
4 files changed, 40 insertions, 38 deletions
diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h index 4aa2552..812efd3 100644 --- a/include/slibtool/slibtool.h +++ b/include/slibtool/slibtool.h @@ -160,12 +160,13 @@ struct slbt_version_info { }; struct slbt_error_info { - int syserror; - int liberror; - const char * function; - int line; - unsigned flags; - void * ctx; + const struct slbt_driver_ctx * edctx; + int esyscode; + int elibcode; + const char * efunction; + int eline; + unsigned eflags; + void * eany; }; struct slbt_host_params { diff --git a/src/internal/slibtool_errinfo_impl.c b/src/internal/slibtool_errinfo_impl.c index 889f566..c12241d 100644 --- a/src/internal/slibtool_errinfo_impl.c +++ b/src/internal/slibtool_errinfo_impl.c @@ -10,12 +10,12 @@ int slbt_record_error( const struct slbt_driver_ctx * dctx, - int syserror, - int liberror, - const char * function, - int line, - unsigned flags, - void * ctx) + int esyscode, + int elibcode, + const char * efunction, + int eline, + unsigned eflags, + void * eany) { struct slbt_driver_ctx_impl * ictx; struct slbt_error_info * erri; @@ -28,12 +28,13 @@ int slbt_record_error( *ictx->errinfp = &ictx->erribuf[ictx->errinfp - ictx->erriptr]; erri = *ictx->errinfp; - erri->syserror = syserror; - erri->liberror = liberror; - erri->function = function; - erri->line = line; - erri->flags = flags; - erri->ctx = ctx; + erri->edctx = dctx; + erri->esyscode = esyscode; + erri->elibcode = elibcode; + erri->efunction = efunction; + erri->eline = eline; + erri->eflags = eflags; + erri->eany = eany; ictx->errinfp++; diff --git a/src/internal/slibtool_errinfo_impl.h b/src/internal/slibtool_errinfo_impl.h index c830975..23c8263 100644 --- a/src/internal/slibtool_errinfo_impl.h +++ b/src/internal/slibtool_errinfo_impl.h @@ -9,12 +9,12 @@ int slbt_record_error( const struct slbt_driver_ctx *, - int syserror, - int liberror, - const char * function, - int line, - unsigned flags, - void * ctx); + int esyscode, + int elibcode, + const char * efunction, + int eline, + unsigned eflags, + void * eany); #define SLBT_SYSTEM_ERROR(dctx) \ slbt_record_error( \ @@ -58,11 +58,11 @@ int slbt_record_error( SLBT_ERROR_TOP_LEVEL, \ 0) -#define SLBT_CUSTOM_ERROR(dctx,liberror) \ +#define SLBT_CUSTOM_ERROR(dctx,elibcode) \ slbt_record_error( \ dctx, \ 0, \ - liberror, \ + elibcode, \ __func__, \ __LINE__, \ SLBT_ERROR_TOP_LEVEL \ diff --git a/src/output/slbt_output_error.c b/src/output/slbt_output_error.c index cfea7dc..0b8e21d 100644 --- a/src/output/slbt_output_error.c +++ b/src/output/slbt_output_error.c @@ -19,13 +19,13 @@ static const char aclr_magenta[] = "\x1b[35m"; static const char * slbt_output_error_header(const struct slbt_error_info * erri) { - if (erri->flags & SLBT_ERROR_CHILD) + if (erri->eflags & SLBT_ERROR_CHILD) return "exec error upon"; - else if (erri->flags & SLBT_ERROR_TOP_LEVEL) + else if (erri->eflags & SLBT_ERROR_TOP_LEVEL) return "error logged in"; - else if (erri->flags & SLBT_ERROR_NESTED) + else if (erri->eflags & SLBT_ERROR_NESTED) return "< returned to >"; else @@ -34,20 +34,20 @@ static const char * slbt_output_error_header(const struct slbt_error_info * erri static const char * slbt_output_strerror(const struct slbt_error_info * erri) { - if (erri->flags & SLBT_ERROR_CUSTOM) + if (erri->eflags & SLBT_ERROR_CUSTOM) return "flow error: unexpected condition or other"; - else if (erri->flags & SLBT_ERROR_NESTED) + else if (erri->eflags & SLBT_ERROR_NESTED) return ""; - else if (erri->flags & SLBT_ERROR_CHILD) + else if (erri->eflags & SLBT_ERROR_CHILD) return "(see child process error messages)"; - else if (erri->syserror == ENOBUFS) + else if (erri->esyscode == ENOBUFS) return "input error: string length exceeds buffer size."; else - return strerror(erri->syserror); + return strerror(erri->esyscode); } static int slbt_output_error_record_plain( @@ -59,8 +59,8 @@ static int slbt_output_error_record_plain( if (fprintf(stderr,"%s: %s %s(), line %d%s%s.\n", dctx->program, slbt_output_error_header(erri), - erri->function, - erri->line, + erri->efunction, + erri->eline, strlen(errdesc) ? ": " : "", errdesc) < 0) return -1; @@ -87,11 +87,11 @@ static int slbt_output_error_record_annotated( aclr_reset, aclr_bold,aclr_blue, - erri->function, + erri->efunction, aclr_reset, aclr_bold,aclr_green, - erri->line, + erri->eline, aclr_reset, strlen(errdesc) ? ": " : "", |