From 99959cf35d05dd7dbe726f1d2158c46ce4d418c7 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 1 Oct 2025 13:55:02 +0900 Subject: [PATCH] fixed the assertion failure that arose when a built-in global variable is set with -v. changed multiple open functions to accept hawk_errinfo_t* instead of hawk_errnum_t* --- Makefile.in | 4 +-- bin/cut.c | 15 ++++++-- bin/hawk.c | 53 +++++++++++++++++++--------- bin/sed.c | 15 ++++++-- configure | 20 +++++------ configure.ac | 2 +- lib/Hawk.cpp | 17 ++++----- lib/Sed.cpp | 41 ++++++++++----------- lib/arr.c | 42 +++++++++++----------- lib/cut.c | 11 ++++-- lib/err.c | 22 ++++++------ lib/hawk-cut.h | 10 +++--- lib/hawk-gem.h | 42 +++++++++++----------- lib/hawk-json.h | 6 ++-- lib/hawk-sed.h | 6 ++-- lib/hawk-std.h | 4 +-- lib/hawk.c | 17 +++++---- lib/hawk.h | 3 +- lib/json.c | 9 +++-- lib/parse.c | 65 +++++++++++++++++++++++----------- lib/rio.c | 94 ++++++++++++++++++++++++++++++++++--------------- lib/run.c | 22 ++++++------ lib/sed.c | 11 ++++-- lib/std-cut.c | 8 ++--- lib/std-json.c | 10 +++--- lib/std-sed.c | 8 ++--- lib/std.c | 14 ++++---- 27 files changed, 344 insertions(+), 227 deletions(-) diff --git a/Makefile.in b/Makefile.in index e52f8394..58c6b445 100644 --- a/Makefile.in +++ b/Makefile.in @@ -168,8 +168,8 @@ am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/ac/ar-lib \ $(top_srcdir)/ac/ltmain.sh $(top_srcdir)/ac/missing \ $(top_srcdir)/ac/tap-driver.sh $(top_srcdir)/ac/test-driver \ $(top_srcdir)/pkgs/hawk.spec.in README.md ac/ar-lib ac/compile \ - ac/config.guess ac/config.sub ac/install-sh ac/ltmain.sh \ - ac/missing + ac/config.guess ac/config.sub ac/depcomp ac/install-sh \ + ac/ltmain.sh ac/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) diff --git a/bin/cut.c b/bin/cut.c index 5fd2b8f8..a9f68797 100644 --- a/bin/cut.c +++ b/bin/cut.c @@ -368,6 +368,7 @@ int main_cut(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) hawk_mmgr_t* mmgr = hawk_get_sys_mmgr(); hawk_cmgr_t* cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); hawk_mmgr_t xma_mmgr; + hawk_errinf_t errinf; memset (&arg, 0, HAWK_SIZEOF(arg)); ret = handle_args(argc, argv, real_argv0, &arg); @@ -387,10 +388,20 @@ int main_cut(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) } - cut = hawk_cut_openstdwithmmgr(mmgr, 0, cmgr, HAWK_NULL); + cut = hawk_cut_openstdwithmmgr(mmgr, 0, cmgr, &errinf); if (!cut) { - hawk_main_print_error("cannot open stream editor\n"); + const hawk_bch_t* msg; + #if defined(HAWK_OOCH_IS_UCH) + hawk_bch_t msgbuf[HAWK_ERRMSG_CAPA]; + hawk_oow_t msglen, wcslen; + msglen = HAWK_COUNTOF(msgbuf); + hawk_conv_ucstr_to_bcstr_with_cmgr(errinf.msg, &wcslen, msgbuf, &msglen, cmgr); + msg = msgbuf; + #else + msg = errinf.msg; + #endif + hawk_main_print_error("cannot open text cutter - %s\n", msg); goto oops; } diff --git a/bin/hawk.c b/bin/hawk.c index aba626e8..07841f5b 100644 --- a/bin/hawk.c +++ b/bin/hawk.c @@ -187,18 +187,18 @@ static hawk_htb_walk_t print_awk_value (hawk_htb_t* map, hawk_htb_pair_t* pair, { if (hawk_rtx_geterrnum(rtx) == HAWK_EVALTOSTR) { - hawk_logfmt (hawk, HAWK_LOG_STDERR, HAWK_T("%.*js = [not printable]\n"), HAWK_HTB_KLEN(pair), HAWK_HTB_KPTR(pair)); - hawk_rtx_seterrinf (rtx, &oerrinf); + hawk_logfmt(hawk, HAWK_LOG_STDERR, HAWK_T("%.*js = [not printable]\n"), HAWK_HTB_KLEN(pair), HAWK_HTB_KPTR(pair)); + hawk_rtx_seterrinf(rtx, &oerrinf); } else { - hawk_logfmt (hawk, HAWK_LOG_STDERR, HAWK_T("***OUT OF MEMORY***\n")); + hawk_logfmt(hawk, HAWK_LOG_STDERR, HAWK_T("***OUT OF MEMORY***\n")); } } else { - hawk_logfmt (hawk, HAWK_LOG_STDERR, HAWK_T("%.*js = %.*js\n"), HAWK_HTB_KLEN(pair), HAWK_HTB_KPTR(pair), len, str); - hawk_rtx_freevaloocstr (rtx, HAWK_HTB_VPTR(pair), str); + hawk_logfmt(hawk, HAWK_LOG_STDERR, HAWK_T("%.*js = %.*js\n"), HAWK_HTB_KLEN(pair), HAWK_HTB_KPTR(pair), len, str); + hawk_rtx_freevaloocstr(rtx, HAWK_HTB_VPTR(pair), str); } return HAWK_HTB_WALK_FORWARD; @@ -212,8 +212,16 @@ static int add_gvs_to_hawk (hawk_t* hawk, arg_t* arg) for (i = 0; i < arg->gvm.size; i++) { - arg->gvm.ptr[i].idx = arg->gvm.ptr[i].uc? hawk_addgblwithucstr(hawk, arg->gvm.ptr[i].name): - hawk_addgblwithbcstr(hawk, arg->gvm.ptr[i].name); + /* search includes the builtin variables in case an existing variable name is given. */ + arg->gvm.ptr[i].idx = arg->gvm.ptr[i].uc? hawk_findgblwithucstr(hawk, arg->gvm.ptr[i].name, 1): + hawk_findgblwithbcstr(hawk, arg->gvm.ptr[i].name, 1); + if (arg->gvm.ptr[i].idx <= -1) + { + /* if it doesn't exist, add it */ + arg->gvm.ptr[i].idx = arg->gvm.ptr[i].uc? hawk_addgblwithucstr(hawk, arg->gvm.ptr[i].name): + hawk_addgblwithbcstr(hawk, arg->gvm.ptr[i].name); + if (arg->gvm.ptr[i].idx <= -1) return -1; + } } } @@ -234,9 +242,9 @@ static int apply_fs_and_gvs_to_rtx (hawk_rtx_t* rtx, const arg_t* arg) if (HAWK_UNLIKELY(!fs)) return -1; /* change FS according to the command line argument */ - hawk_rtx_refupval (rtx, fs); - hawk_rtx_setgbl (rtx, HAWK_GBL_FS, fs); - hawk_rtx_refdownval (rtx, fs); + hawk_rtx_refupval(rtx, fs); + hawk_rtx_setgbl(rtx, HAWK_GBL_FS, fs); + hawk_rtx_refdownval(rtx, fs); } if (arg->gvm.capa > 0) @@ -251,9 +259,9 @@ static int apply_fs_and_gvs_to_rtx (hawk_rtx_t* rtx, const arg_t* arg) hawk_rtx_makenumorstrvalwithbchars(rtx, arg->gvm.ptr[i].value.ptr, arg->gvm.ptr[i].value.len); if (HAWK_UNLIKELY(!v)) return -1; - hawk_rtx_refupval (rtx, v); - hawk_rtx_setgbl (rtx, arg->gvm.ptr[i].idx, v); - hawk_rtx_refdownval (rtx, v); + hawk_rtx_refupval(rtx, v); + hawk_rtx_setgbl(rtx, arg->gvm.ptr[i].idx, v); + hawk_rtx_refdownval(rtx, v); } } @@ -765,6 +773,8 @@ int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) hawk_rtx_t* rtx = HAWK_NULL; hawk_val_t* retv; hawk_mmgr_t xma_mmgr; + hawk_cmgr_t* cmgr; + hawk_errinf_t errinf; int i; struct arg_t arg; int ret = -1; @@ -811,10 +821,21 @@ int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) set_intr_pipe(); - hawk = hawk_openstdwithmmgr(mmgr, 0, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), HAWK_NULL); + cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); + hawk = hawk_openstdwithmmgr(mmgr, 0, cmgr, &errinf); if (HAWK_UNLIKELY(!hawk)) { - hawk_main_print_error("cannot open hawk\n"); + const hawk_bch_t* msg; + #if defined(HAWK_OOCH_IS_UCH) + hawk_bch_t msgbuf[HAWK_ERRMSG_CAPA]; + hawk_oow_t msglen, wcslen; + msglen = HAWK_COUNTOF(msgbuf); + hawk_conv_ucstr_to_bcstr_with_cmgr(errinf.msg, &wcslen, msgbuf, &msglen, cmgr); + msg = msgbuf; + #else + msg = errinf.msg; + #endif + hawk_main_print_error("cannot open hawk - %s\n", msg); goto oops; } @@ -926,7 +947,7 @@ int main_hawk(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) hawk_rtx_execwithbcstrarr(rtx, (const hawk_bch_t**)arg.icf.ptr, arg.icf.size); #endif - unset_intr_run (); + unset_intr_run(); if (retv) { diff --git a/bin/sed.c b/bin/sed.c index 50a45129..ef080bf1 100644 --- a/bin/sed.c +++ b/bin/sed.c @@ -459,6 +459,7 @@ int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) hawk_mmgr_t* mmgr = hawk_get_sys_mmgr(); hawk_cmgr_t* cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); hawk_mmgr_t xma_mmgr; + hawk_errinf_t errinf; memset (&arg, 0, HAWK_SIZEOF(arg)); ret = handle_args(argc, argv, real_argv0, &arg); @@ -478,10 +479,20 @@ int main_sed(int argc, hawk_bch_t* argv[], const hawk_bch_t* real_argv0) } - sed = hawk_sed_openstdwithmmgr(mmgr, 0, cmgr, HAWK_NULL); + sed = hawk_sed_openstdwithmmgr(mmgr, 0, cmgr, &errinf); if (!sed) { - hawk_main_print_error("cannot open stream editor\n"); + const hawk_bch_t* msg; + #if defined(HAWK_OOCH_IS_UCH) + hawk_bch_t msgbuf[HAWK_ERRMSG_CAPA]; + hawk_oow_t msglen, wcslen; + msglen = HAWK_COUNTOF(msgbuf); + hawk_conv_ucstr_to_bcstr_with_cmgr(errinf.msg, &wcslen, msgbuf, &msglen, cmgr); + msg = msgbuf; + #else + msg = errinf.msg; + #endif + hawk_main_print_error("cannot open stream editor - %s\n", msg); goto oops; } diff --git a/configure b/configure index 53a28eac..590a68ef 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for hawk 0.9.9. +# Generated by GNU Autoconf 2.72 for hawk 0.9.10. # # Report bugs to . # @@ -614,8 +614,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='hawk' PACKAGE_TARNAME='hawk' -PACKAGE_VERSION='0.9.9' -PACKAGE_STRING='hawk 0.9.9' +PACKAGE_VERSION='0.9.10' +PACKAGE_STRING='hawk 0.9.10' PACKAGE_BUGREPORT='Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)' PACKAGE_URL='https://code.miflux.net/hyung-hwan/hawk' @@ -1443,7 +1443,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures hawk 0.9.9 to adapt to many kinds of systems. +'configure' configures hawk 0.9.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1514,7 +1514,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of hawk 0.9.9:";; + short | recursive ) echo "Configuration of hawk 0.9.10:";; esac cat <<\_ACEOF @@ -1658,7 +1658,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -hawk configure 0.9.9 +hawk configure 0.9.10 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2409,7 +2409,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by hawk $as_me 0.9.9, which was +It was created by hawk $as_me 0.9.10, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -4111,7 +4111,7 @@ fi # Define the identity of the package. PACKAGE='hawk' - VERSION='0.9.9' + VERSION='0.9.10' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -29613,7 +29613,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by hawk $as_me 0.9.9, which was +This file was extended by hawk $as_me 0.9.10, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29682,7 +29682,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -hawk config.status 0.9.9 +hawk config.status 0.9.10 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 8d2ab785..bcb61842 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl AC_PREREQ([2.71]) -AC_INIT([hawk],[0.9.9],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[https://code.miflux.net/hyung-hwan/hawk]) +AC_INIT([hawk],[0.9.10],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[https://code.miflux.net/hyung-hwan/hawk]) AC_CONFIG_HEADERS([lib/hawk-cfg.h]) AC_CONFIG_AUX_DIR([ac]) diff --git a/lib/Hawk.cpp b/lib/Hawk.cpp index 59d28f4e..347ac853 100644 --- a/lib/Hawk.cpp +++ b/lib/Hawk.cpp @@ -1634,8 +1634,8 @@ Hawk::Hawk (Mmgr* mmgr): console_handler(HAWK_NULL), runctx(this) { - HAWK_MEMSET (&errinf, 0, HAWK_SIZEOF(errinf)); - errinf.num = HAWK_ENOERR; + HAWK_MEMSET (&this->errinf, 0, HAWK_SIZEOF(this->errinf)); + this->errinf.num = HAWK_ENOERR; this->_cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); } @@ -1796,7 +1796,7 @@ void Hawk::retrieveError() } else { - hawk_geterrinf (this->hawk, &errinf); + hawk_geterrinf(this->hawk, &this->errinf); } } @@ -1804,7 +1804,7 @@ void Hawk::retrieveError(Run* run) { HAWK_ASSERT (run != HAWK_NULL); if (run->rtx == HAWK_NULL) return; - hawk_rtx_geterrinf (run->rtx, &errinf); + hawk_rtx_geterrinf(run->rtx, &this->errinf); } static void fini_xtn (hawk_t* hawk, void* ctx) @@ -1835,13 +1835,8 @@ int Hawk::open () prm.modclose = &Hawk::modclose; prm.modgetsym = &Hawk::modgetsym; - hawk_errnum_t errnum; - this->hawk = hawk_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), this->getCmgr(), &prm, &errnum); - if (!this->hawk) - { - this->setError(errnum); - return -1; - } + this->hawk = hawk_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), this->getCmgr(), &prm, &this->errinf); + if (HAWK_UNLIKELY(!this->hawk)) return -1; this->hawk->_instsize += HAWK_SIZEOF(xtn_t); diff --git a/lib/Sed.cpp b/lib/Sed.cpp index c6e51cf7..c899ecea 100644 --- a/lib/Sed.cpp +++ b/lib/Sed.cpp @@ -60,11 +60,13 @@ void Sed::setCmgr (hawk_cmgr_t* cmgr) int Sed::open () { - hawk_errnum_t errnum; - this->sed = hawk_sed_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), this->getCmgr(), &errnum); - if (!this->sed) +// TODO: create this->errinf just like the Hawk class. + hawk_errinf_t errinf; + this->sed = hawk_sed_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), this->getCmgr(), &errinf); + if (HAWK_UNLIKELY(!this->sed)) { - this->setError (errnum); + // TODO: set error information like the Hawk class + // can not set error as this->sed is null until I update this class like Hawk. return -1; } @@ -77,7 +79,6 @@ int Sed::open () // TODO: revive this too when hawk_sed_seterrstr is revived() // hawk_sed_seterrstr (this->sed, Sed::xerrstr); - return 0; } @@ -92,7 +93,7 @@ void Sed::close () int Sed::compile (Stream& sstream) { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); this->sstream = &sstream; return hawk_sed_comp(this->sed, Sed::sin); @@ -100,7 +101,7 @@ int Sed::compile (Stream& sstream) int Sed::execute (Stream& istream, Stream& ostream) { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); this->istream = &istream; this->ostream = &ostream; @@ -109,19 +110,19 @@ int Sed::execute (Stream& istream, Stream& ostream) void Sed::halt () { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); hawk_sed_halt (this->sed); } bool Sed::isHalt () const { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); return hawk_sed_ishalt(this->sed); } int Sed::getTrait () const { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); int val; hawk_sed_getopt (this->sed, HAWK_SED_TRAIT, &val); return val; @@ -129,8 +130,8 @@ int Sed::getTrait () const void Sed::setTrait (int trait) { - HAWK_ASSERT (this->sed != HAWK_NULL); - hawk_sed_setopt (this->sed, HAWK_SED_TRAIT, &trait); + HAWK_ASSERT(this->sed != HAWK_NULL); + hawk_sed_setopt(this->sed, HAWK_SED_TRAIT, &trait); } const hawk_ooch_t* Sed::getErrorMessage () const @@ -167,22 +168,22 @@ hawk_errnum_t Sed::getErrorNumber () const void Sed::setError (hawk_errnum_t err, const hawk_oocs_t* args, const hawk_loc_t* loc) { - HAWK_ASSERT (this->sed != HAWK_NULL); - hawk_sed_seterror (this->sed, loc, err, args); + HAWK_ASSERT(this->sed != HAWK_NULL); + hawk_sed_seterror(this->sed, loc, err, args); } void Sed::formatError (hawk_errnum_t code, const hawk_loc_t* loc, const hawk_bch_t* fmt, ...) { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); va_list ap; va_start (ap, fmt); - hawk_sed_seterrbvfmt (this->sed, loc, code, fmt, ap); + hawk_sed_seterrbvfmt(this->sed, loc, code, fmt, ap); va_end (ap); } void Sed::formatError (hawk_errnum_t code, const hawk_loc_t* loc, const hawk_uch_t* fmt, ...) { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); va_list ap; va_start (ap, fmt); hawk_sed_seterruvfmt (this->sed, loc, code, fmt, ap); @@ -201,13 +202,13 @@ const hawk_ooch_t* Sed::setCompileId (const hawk_ooch_t* id) hawk_oow_t Sed::getConsoleLine () { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); return hawk_sed_getlinenum(this->sed); } void Sed::setConsoleLine (hawk_oow_t num) { - HAWK_ASSERT (this->sed != HAWK_NULL); + HAWK_ASSERT(this->sed != HAWK_NULL); hawk_sed_setlinenum (this->sed, num); } @@ -291,7 +292,7 @@ hawk_ooi_t Sed::xout (hawk_sed_t* s, hawk_sed_io_cmd_t cmd, hawk_sed_io_arg_t* a const hawk_ooch_t* Sed::getErrorString (hawk_errnum_t num) const { - HAWK_ASSERT (this->dflerrstr != HAWK_NULL); + HAWK_ASSERT(this->dflerrstr != HAWK_NULL); return this->dflerrstr(num); } diff --git a/lib/arr.c b/lib/arr.c index a01d4633..7a4494bf 100644 --- a/lib/arr.c +++ b/lib/arr.c @@ -145,7 +145,7 @@ const hawk_arr_style_t* hawk_get_arr_style (hawk_arr_style_kind_t kind) int hawk_arr_init (hawk_arr_t* arr, hawk_gem_t* gem, hawk_oow_t capa) { - HAWK_MEMSET (arr, 0, HAWK_SIZEOF(*arr)); + HAWK_MEMSET(arr, 0, HAWK_SIZEOF(*arr)); arr->gem = gem; arr->size = 0; @@ -284,7 +284,7 @@ hawk_oow_t hawk_arr_rsearch (hawk_arr_t* arr, hawk_oow_t pos, const void* dptr, hawk_oow_t hawk_arr_upsert (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oow_t dlen) { - if (pos < arr->size) return hawk_arr_update (arr, pos, dptr, dlen); + if (pos < arr->size) return hawk_arr_update(arr, pos, dptr, dlen); return hawk_arr_insert(arr, pos, dptr, dlen); } @@ -390,7 +390,7 @@ hawk_oow_t hawk_arr_update (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oo if (dptr == DPTR(c) && dlen == DLEN(c)) { /* updated to the same data */ - if (arr->style->keeper) arr->style->keeper (arr, dptr, dlen); + if (arr->style->keeper) arr->style->keeper(arr, dptr, dlen); } else { @@ -524,9 +524,9 @@ hawk_oow_t hawk_arr_rwalk (hawk_arr_t* arr, walker_t walker, void* ctx) while (1) { - if (arr->slot[i] != HAWK_NULL) + if (arr->slot[i]) { - w = walker (arr, i, ctx); + w = walker(arr, i, ctx); nwalks++; } @@ -549,13 +549,13 @@ hawk_oow_t hawk_arr_rwalk (hawk_arr_t* arr, walker_t walker, void* ctx) hawk_oow_t hawk_arr_pushstack (hawk_arr_t* arr, void* dptr, hawk_oow_t dlen) { - return hawk_arr_insert (arr, arr->size, dptr, dlen); + return hawk_arr_insert(arr, arr->size, dptr, dlen); } void hawk_arr_popstack (hawk_arr_t* arr) { - HAWK_ASSERT (arr->size > 0); - hawk_arr_delete (arr, arr->size - 1, 1); + HAWK_ASSERT(arr->size > 0); + hawk_arr_delete(arr, arr->size - 1, 1); } #define HEAP_PARENT(x) (((x)-1) / 2) @@ -587,7 +587,7 @@ static hawk_oow_t sift_up (hawk_arr_t* arr, hawk_oow_t index) while (1) { arr->slot[index] = arr->slot[parent]; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); index = parent; parent = HEAP_PARENT(parent); @@ -599,7 +599,7 @@ static hawk_oow_t sift_up (hawk_arr_t* arr, hawk_oow_t index) } arr->slot[index] = tmp; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); } } return index; @@ -641,13 +641,13 @@ static hawk_oow_t sift_down (hawk_arr_t* arr, hawk_oow_t index) if (n > 0) break; arr->slot[index] = arr->slot[child]; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); index = child; } while (index < base); arr->slot[index] = tmp; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); } return index; @@ -660,19 +660,19 @@ hawk_oow_t hawk_arr_pushheap (hawk_arr_t* arr, void* dptr, hawk_oow_t dlen) /* add a value at the back of the array */ index = arr->size; if (hawk_arr_insert(arr, index, dptr, dlen) == HAWK_ARR_NIL) return HAWK_ARR_NIL; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); HAWK_ASSERT (arr->size == index + 1); /* move the item upto the top if it's greater than the parent items */ - sift_up (arr, index); + sift_up(arr, index); return arr->size; } void hawk_arr_popheap (hawk_arr_t* arr) { HAWK_ASSERT (arr->size > 0); - hawk_arr_deleteheap (arr, 0); + hawk_arr_deleteheap(arr, 0); } void hawk_arr_deleteheap (hawk_arr_t* arr, hawk_oow_t index) @@ -692,13 +692,13 @@ void hawk_arr_deleteheap (hawk_arr_t* arr, hawk_oow_t index) /* move the last item to the deleting position */ arr->slot[index] = arr->slot[arr->size]; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); /* move it up if the last item is greater than the item to be deleted, * move it down otherwise. */ n = arr->style->comper(arr, DPTR(arr->slot[index]), DLEN(arr->slot[index]), DPTR(tmp), DLEN(tmp)); - if (n > 0) sift_up (arr, index); - else if (n < 0) sift_down (arr, index); + if (n > 0) sift_up(arr, index); + else if (n < 0) sift_down(arr, index); } /* destroy the actual item */ @@ -722,10 +722,10 @@ hawk_oow_t hawk_arr_updateheap (hawk_arr_t* arr, hawk_oow_t index, void* dptr, h if (n) { if (hawk_arr_update(arr, index, dptr, dlen) == HAWK_ARR_NIL) return HAWK_ARR_NIL; - HEAP_UPDATE_POS (arr, index); + HEAP_UPDATE_POS(arr, index); - if (n > 0) sift_up (arr, index); - else sift_down (arr, index); + if (n > 0) sift_up(arr, index); + else sift_down(arr, index); } return index; diff --git a/lib/cut.c b/lib/cut.c index 9d2d6ed7..dfc73d4a 100644 --- a/lib/cut.c +++ b/lib/cut.c @@ -73,7 +73,7 @@ static void free_all_selector_blocks (hawk_cut_t* cut) cut->sel.ccount = 0; } -hawk_cut_t* hawk_cut_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errnum_t* errnum) +hawk_cut_t* hawk_cut_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errinf_t* errinf) { hawk_cut_t* cut; @@ -82,13 +82,18 @@ hawk_cut_t* hawk_cut_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* c { if (hawk_cut_init(cut, mmgr, cmgr) <= -1) { - if (errnum) *errnum = hawk_cut_geterrnum(cut); + if (errinf) hawk_cut_geterrinf(cut, errinf); HAWK_MMGR_FREE (mmgr, cut); cut = HAWK_NULL; } else HAWK_MEMSET(cut + 1, 0, xtnsize); } - else if (errnum) *errnum = HAWK_ENOMEM; + else if (errinf) + { + HAWK_MEMSET(errinf, 0, HAWK_SIZEOF(*errinf)); + errinf->num = HAWK_ENOMEM; + hawk_copy_oocstr(errinf->msg, HAWK_COUNTOF(errinf->msg), hawk_dfl_errstr(errinf->num)); + } return cut; } diff --git a/lib/err.c b/lib/err.c index 36496e68..c9f89929 100644 --- a/lib/err.c +++ b/lib/err.c @@ -289,7 +289,7 @@ void hawk_rtx_errortohawk (hawk_rtx_t* rtx, hawk_t* hawk) /* copy error information in 'rtx' to the 'hawk' object */ hawk->_gem.errnum = rtx->_gem.errnum; hawk->_gem.errloc = rtx->_gem.errloc; - hawk_copy_oocstr (hawk->_gem.errmsg, HAWK_COUNTOF(hawk->_gem.errmsg), rtx->_gem.errmsg); + hawk_copy_oocstr(hawk->_gem.errmsg, HAWK_COUNTOF(hawk->_gem.errmsg), rtx->_gem.errmsg); } /* ------------------------------------------------------------------------- */ @@ -299,7 +299,7 @@ void hawk_gem_geterrbinf (hawk_gem_t* gem, hawk_errbinf_t* errinf) #if defined(HAWK_OOCH_IS_BCH) errinf->num = gem->errnum; errinf->loc = gem->errloc; - hawk_copy_oocstr (errinf->msg, HAWK_COUNTOF(errinf->msg), (gem->errmsg[0] == '\0'? gem->errstr(gem->errnum): gem->errmsg)); + hawk_copy_oocstr(errinf->msg, HAWK_COUNTOF(errinf->msg), (gem->errmsg[0] == '\0'? gem->errstr(gem->errnum): gem->errmsg)); #else const hawk_ooch_t* msg; hawk_oow_t wcslen, mbslen; @@ -317,7 +317,7 @@ void hawk_gem_geterrbinf (hawk_gem_t* gem, hawk_errbinf_t* errinf) msg = (gem->errmsg[0] == '\0')? gem->errstr(gem->errnum): gem->errmsg; mbslen = HAWK_COUNTOF(errinf->msg); - hawk_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, errinf->msg, &mbslen, gem->cmgr); + hawk_conv_ucstr_to_bcstr_with_cmgr(msg, &wcslen, errinf->msg, &mbslen, gem->cmgr); #endif } @@ -340,11 +340,11 @@ void hawk_gem_geterruinf (hawk_gem_t* gem, hawk_erruinf_t* errinf) msg = (gem->errmsg[0] == '\0')? gem->errstr(gem->errnum): gem->errmsg; wcslen = HAWK_COUNTOF(errinf->msg); - hawk_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, errinf->msg, &wcslen, gem->cmgr, 1); + hawk_conv_bcstr_to_ucstr_with_cmgr(msg, &mbslen, errinf->msg, &wcslen, gem->cmgr, 1); #else errinf->num = gem->errnum; errinf->loc = gem->errloc; - hawk_copy_oocstr (errinf->msg, HAWK_COUNTOF(errinf->msg), (gem->errmsg[0] == '\0'? gem->errstr(gem->errnum): gem->errmsg)); + hawk_copy_oocstr(errinf->msg, HAWK_COUNTOF(errinf->msg), (gem->errmsg[0] == '\0'? gem->errstr(gem->errnum): gem->errmsg)); #endif } @@ -366,7 +366,7 @@ const hawk_bch_t* hawk_gem_geterrbmsg (hawk_gem_t* gem) msg = (gem->errmsg[0] == '\0')? gem->errstr(gem->errnum): gem->errmsg; mbslen = HAWK_COUNTOF(gem->xerrmsg); - hawk_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, gem->xerrmsg, &mbslen, gem->cmgr); + hawk_conv_ucstr_to_bcstr_with_cmgr(msg, &wcslen, gem->xerrmsg, &mbslen, gem->cmgr); return gem->xerrmsg; #endif @@ -381,7 +381,7 @@ const hawk_uch_t* hawk_gem_geterrumsg (hawk_gem_t* gem) msg = (gem->errmsg[0] == '\0')? gem->errstr(gem->errnum): gem->errmsg; wcslen = HAWK_COUNTOF(gem->xerrmsg); - hawk_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, gem->xerrmsg, &wcslen, gem->cmgr, 1); + hawk_conv_bcstr_to_ucstr_with_cmgr(msg, &mbslen, gem->xerrmsg, &wcslen, gem->cmgr, 1); return gem->xerrmsg; #else @@ -412,7 +412,7 @@ static int gem_err_bchars (hawk_fmtout_t* fmtout, const hawk_bch_t* ptr, hawk_oo #if defined(HAWK_OOCH_IS_UCH) if (max <= 0) return 1; - hawk_conv_bchars_to_uchars_with_cmgr (ptr, &len, &gem->errmsg[gem->errmsg_len], &max, gem->cmgr, 1); + hawk_conv_bchars_to_uchars_with_cmgr(ptr, &len, &gem->errmsg[gem->errmsg_len], &max, gem->cmgr, 1); gem->errmsg_len += max; #else if (len > max) len = max; @@ -440,7 +440,7 @@ static int gem_err_uchars (hawk_fmtout_t* fmtout, const hawk_uch_t* ptr, hawk_oo gem->errmsg_len += len; #else if (max <= 0) return 1; - hawk_conv_uchars_to_bchars_with_cmgr (ptr, &len, &gem->errmsg[gem->errmsg_len], &max, gem->cmgr); + hawk_conv_uchars_to_bchars_with_cmgr(ptr, &len, &gem->errmsg[gem->errmsg_len], &max, gem->cmgr); gem->errmsg_len += max; #endif gem->errmsg[gem->errmsg_len] = '\0'; @@ -538,7 +538,7 @@ void hawk_gem_seterror (hawk_gem_t* gem, const hawk_loc_t* errloc, hawk_errnum_t errfmt = gem->errstr(gem->errnum); HAWK_ASSERT (errfmt != HAWK_NULL); - hawk_copy_fmt_oocses_to_oocstr (gem->errmsg, HAWK_COUNTOF(gem->errmsg), errfmt, errarg); + hawk_copy_fmt_oocses_to_oocstr(gem->errmsg, HAWK_COUNTOF(gem->errmsg), errfmt, errarg); if (errloc != HAWK_NULL) gem->errloc = *errloc; else HAWK_MEMSET (&gem->errloc, 0, HAWK_SIZEOF(gem->errloc)); @@ -546,6 +546,6 @@ void hawk_gem_seterror (hawk_gem_t* gem, const hawk_loc_t* errloc, hawk_errnum_t const hawk_ooch_t* hawk_gem_backuperrmsg (hawk_gem_t* gem) { - hawk_copy_oocstr (gem->errmsg_backup, HAWK_COUNTOF(gem->errmsg_backup), hawk_gem_geterrmsg(gem)); + hawk_copy_oocstr(gem->errmsg_backup, HAWK_COUNTOF(gem->errmsg_backup), hawk_gem_geterrmsg(gem)); return gem->errmsg_backup; } diff --git a/lib/hawk-cut.h b/lib/hawk-cut.h index 9d41a77e..34f7697c 100644 --- a/lib/hawk-cut.h +++ b/lib/hawk-cut.h @@ -205,7 +205,7 @@ HAWK_EXPORT hawk_cut_t* hawk_cut_open ( hawk_mmgr_t* mmgr, /**< memory manager */ hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_cmgr_t* cmgr, - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); /** @@ -424,7 +424,7 @@ HAWK_EXPORT void hawk_cut_freemem ( */ HAWK_EXPORT hawk_cut_t* hawk_cut_openstd ( hawk_oow_t xtnsize, /**< extension size in bytes */ - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); /** @@ -435,9 +435,9 @@ HAWK_EXPORT hawk_cut_t* hawk_cut_openstd ( */ HAWK_EXPORT hawk_cut_t* hawk_cut_openstdwithmmgr ( hawk_mmgr_t* mmgr, /**< memory manager */ - hawk_oow_t xtnsize, /**< extension size in bytes */ - hawk_cmgr_t* cmgr, - hawk_errnum_t* errnum + hawk_oow_t xtnsize, /**< extension size in bytes */ + hawk_cmgr_t* cmgr, + hawk_errinf_t* errinf ); /** diff --git a/lib/hawk-gem.h b/lib/hawk-gem.h index f06b568b..5ed9642f 100644 --- a/lib/hawk-gem.h +++ b/lib/hawk-gem.h @@ -502,41 +502,41 @@ HAWK_EXPORT void hawk_gem_seterror ( ); HAWK_EXPORT void hawk_gem_seterrnum ( - hawk_gem_t* gem, - const hawk_loc_t* errloc, - hawk_errnum_t errnum + hawk_gem_t* gem, + const hawk_loc_t* errloc, + hawk_errnum_t errnum ); HAWK_EXPORT void hawk_gem_seterrbfmt ( - hawk_gem_t* gem, - const hawk_loc_t* errloc, - hawk_errnum_t errnum, - const hawk_bch_t* errfmt, + hawk_gem_t* gem, + const hawk_loc_t* errloc, + hawk_errnum_t errnum, + const hawk_bch_t* errfmt, ... ); HAWK_EXPORT void hawk_gem_seterrufmt ( - hawk_gem_t* gem, - const hawk_loc_t* errloc, - hawk_errnum_t errnum, - const hawk_uch_t* errfmt, + hawk_gem_t* gem, + const hawk_loc_t* errloc, + hawk_errnum_t errnum, + const hawk_uch_t* errfmt, ... ); HAWK_EXPORT void hawk_gem_seterrbvfmt ( - hawk_gem_t* gem, - const hawk_loc_t* errloc, - hawk_errnum_t errnum, - const hawk_bch_t* errfmt, - va_list ap + hawk_gem_t* gem, + const hawk_loc_t* errloc, + hawk_errnum_t errnum, + const hawk_bch_t* errfmt, + va_list ap ); HAWK_EXPORT void hawk_gem_seterruvfmt ( - hawk_gem_t* gem, - const hawk_loc_t* errloc, - hawk_errnum_t errnum, - const hawk_uch_t* errfmt, - va_list ap + hawk_gem_t* gem, + const hawk_loc_t* errloc, + hawk_errnum_t errnum, + const hawk_uch_t* errfmt, + va_list ap ); HAWK_EXPORT const hawk_ooch_t* hawk_gem_backuperrmsg ( diff --git a/lib/hawk-json.h b/lib/hawk-json.h index ce3053b8..91240575 100644 --- a/lib/hawk-json.h +++ b/lib/hawk-json.h @@ -115,7 +115,7 @@ HAWK_EXPORT hawk_json_t* hawk_json_open ( hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_json_prim_t* prim, - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); HAWK_EXPORT void hawk_json_close ( @@ -314,7 +314,7 @@ HAWK_EXPORT void hawk_json_freemem ( HAWK_EXPORT hawk_json_t* hawk_json_openstd ( hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_json_prim_t* prim, - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); /** @@ -328,7 +328,7 @@ HAWK_EXPORT hawk_json_t* hawk_json_openstdwithmmgr ( hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_cmgr_t* cmgr, hawk_json_prim_t* prim, - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); #if defined(__cplusplus) diff --git a/lib/hawk-sed.h b/lib/hawk-sed.h index a6b1138e..de953844 100644 --- a/lib/hawk-sed.h +++ b/lib/hawk-sed.h @@ -462,7 +462,7 @@ HAWK_EXPORT hawk_sed_t* hawk_sed_open ( hawk_mmgr_t* mmgr, /**< memory manager */ hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_cmgr_t* cmgr, - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); /** @@ -791,7 +791,7 @@ HAWK_EXPORT void hawk_sed_freemem ( */ HAWK_EXPORT hawk_sed_t* hawk_sed_openstd ( hawk_oow_t xtnsize, /**< extension size in bytes */ - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); /** @@ -804,7 +804,7 @@ HAWK_EXPORT hawk_sed_t* hawk_sed_openstdwithmmgr ( hawk_mmgr_t* mmgr, /**< memory manager */ hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_cmgr_t* cmgr, - hawk_errnum_t* errnum + hawk_errinf_t* errinf ); /** diff --git a/lib/hawk-std.h b/lib/hawk-std.h index a11183a6..659cdd04 100644 --- a/lib/hawk-std.h +++ b/lib/hawk-std.h @@ -128,7 +128,7 @@ extern "C" { */ HAWK_EXPORT hawk_t* hawk_openstd ( hawk_oow_t xtnsize, /**< extension size in bytes */ - hawk_errnum_t* errnum /**< pointer to an error number variable */ + hawk_errinf_t* errinf /**< pointer to an error information variable */ ); /** @@ -140,7 +140,7 @@ HAWK_EXPORT hawk_t* hawk_openstdwithmmgr ( hawk_mmgr_t* mmgr, /**< memory manager */ hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_cmgr_t* cmgr, /**< character encoding manager */ - hawk_errnum_t* errnum /**< pointer to an error number variable */ + hawk_errinf_t* errinf /**< pointer to an error information variable */ ); /** diff --git a/lib/hawk.c b/lib/hawk.c index d37aa584..e93420f8 100644 --- a/lib/hawk.c +++ b/lib/hawk.c @@ -75,7 +75,7 @@ static void clear_token (hawk_tok_t* tok) tok->loc.colm = 0; } -hawk_t* hawk_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, const hawk_prm_t* prm, hawk_errnum_t* errnum) +hawk_t* hawk_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, const hawk_prm_t* prm, hawk_errinf_t* errinf) { hawk_t* hawk; @@ -87,13 +87,18 @@ hawk_t* hawk_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, con xret = hawk_init(hawk, mmgr, cmgr, prm); if (xret <= -1) { - if (errnum) *errnum = hawk_geterrnum(hawk); - HAWK_MMGR_FREE (mmgr, hawk); + if (errinf) hawk_geterrinf(hawk, errinf); + HAWK_MMGR_FREE(mmgr, hawk); hawk = HAWK_NULL; } - else HAWK_MEMSET (hawk + 1, 0, xtnsize); + else HAWK_MEMSET(hawk + 1, 0, xtnsize); + } + else if (errinf) + { + HAWK_MEMSET(errinf, 0, HAWK_SIZEOF(*errinf)); + errinf->num = HAWK_ENOMEM; + hawk_copy_oocstr(errinf->msg, HAWK_COUNTOF(errinf->msg), hawk_dfl_errstr(errinf->num)); } - else if (errnum) *errnum = HAWK_ENOMEM; return hawk; } @@ -101,7 +106,7 @@ hawk_t* hawk_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, con void hawk_close (hawk_t* hawk) { hawk_fini (hawk); - HAWK_MMGR_FREE (hawk_getmmgr(hawk), hawk); + HAWK_MMGR_FREE(hawk_getmmgr(hawk), hawk); } int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_prm_t* prm) diff --git a/lib/hawk.h b/lib/hawk.h index 406e4b72..d89fea6e 100644 --- a/lib/hawk.h +++ b/lib/hawk.h @@ -1570,7 +1570,7 @@ HAWK_EXPORT hawk_t* hawk_open ( hawk_oow_t xtnsize, /**< extension size in bytes */ hawk_cmgr_t* cmgr, /**< character conversion manager */ const hawk_prm_t* prm, /**< pointer to a primitive function structure */ - hawk_errnum_t* errnum /**< pointer to an error number varaible */ + hawk_errinf_t* errinf /**< pointer to an error number varaible */ ); /** @@ -3566,7 +3566,6 @@ HAWK_EXPORT void hawk_rtx_getnrflt ( hawk_nrflt_t* nrflt ); - #if defined(HAWK_HAVE_INLINE) static HAWK_INLINE void* hawk_rtx_allocmem (hawk_rtx_t* rtx, hawk_oow_t size) { return hawk_gem_allocmem(hawk_rtx_getgem(rtx), size); } static HAWK_INLINE void* hawk_rtx_reallocmem (hawk_rtx_t* rtx, void* ptr, hawk_oow_t size) { return hawk_gem_reallocmem(hawk_rtx_getgem(rtx), ptr, size); } diff --git a/lib/json.c b/lib/json.c index c7f1f6f1..da016d27 100644 --- a/lib/json.c +++ b/lib/json.c @@ -792,14 +792,19 @@ oops: /* ========================================================================= */ -hawk_json_t* hawk_json_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_json_prim_t* prim, hawk_errnum_t* errnum) +hawk_json_t* hawk_json_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_json_prim_t* prim, hawk_errinf_t* errinf) { hawk_json_t* json; json = (hawk_json_t*)HAWK_MMGR_ALLOC(mmgr, HAWK_SIZEOF(hawk_json_t) + xtnsize); if (!json) { - if (errnum) *errnum = HAWK_ENOMEM; + if (errinf) + { + HAWK_MEMSET(errinf, 0, HAWK_SIZEOF(*errinf)); + errinf->num = HAWK_ENOMEM; + hawk_copy_oocstr(errinf->msg, HAWK_COUNTOF(errinf->msg), hawk_dfl_errstr(errinf->num)); + } return HAWK_NULL; } diff --git a/lib/parse.c b/lib/parse.c index eb1e1a6f..6159721a 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -1972,14 +1972,18 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, /* check if it is a keyword */ if (classify_ident(hawk, name) != TOK_IDENT) { - hawk_seterrfmt(hawk, xloc, HAWK_EKWRED, HAWK_T("keyword '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EKWRED, + HAWK_T("unable to add global '%.*js' - keyword '%.*js' redefined"), + name->len, name->ptr, name->len, name->ptr); return -1; } /* check if it conflicts with a builtin function name */ if (hawk_findfncwithoocs(hawk, name) != HAWK_NULL) { - hawk_seterrfmt(hawk, xloc, HAWK_EFNCRED, HAWK_T("intrinsic function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFNCRED, + HAWK_T("unable to add global '%.*js' - intrinsic function '%.*js' redefined"), + name->len, name->ptr, name->len, name->ptr); return -1; } @@ -1988,14 +1992,18 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, /* check if it conflicts with a function name caught in the function call table */ hawk_htb_search(hawk->parse.funs, name->ptr, name->len) != HAWK_NULL) { - hawk_seterrfmt(hawk, xloc, HAWK_EFUNRED, HAWK_T("function '%.*js' redefined"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EFUNRED, + HAWK_T("unable to add global '%.*js' - function '%.*js' redefined"), + name->len, name->ptr, name->len, name->ptr); return -1; } /* check if it conflicts with other global variable names */ if (find_global(hawk, name) != HAWK_ARR_NIL) { - hawk_seterrfmt(hawk, xloc, HAWK_EDUPGBL, HAWK_T("duplicate global variable name '%.*js'"), name->len, name->ptr); + hawk_seterrfmt(hawk, xloc, HAWK_EDUPGBL, + HAWK_T("unable to add global '%.*js' - duplicate global variable name '%.*js'"), + name->len, name->ptr, name->len, name->ptr); return -1; } @@ -2016,13 +2024,18 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, ngbls = HAWK_ARR_SIZE(hawk->parse.gbls); if (ngbls >= HAWK_MAX_GBLS) { - hawk_seterrnum(hawk, xloc, HAWK_EGBLTM); + hawk_seterrfmt(hawk, xloc, HAWK_EGBLTM, + HAWK_T("unable to add global '%.*js' - too many globals"), + name->len, name->ptr); return -1; } if (hawk_arr_insert(hawk->parse.gbls, HAWK_ARR_SIZE(hawk->parse.gbls), (hawk_ooch_t*)name->ptr, name->len) == HAWK_ARR_NIL) { - ADJERR_LOC(hawk, xloc); + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); + hawk_seterrfmt(hawk, xloc, hawk_geterrnum(hawk), + HAWK_T("unable to add global '%.*js' - %js"), + name->len, name->ptr, bem); return -1; } @@ -2033,7 +2046,7 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc, if (disabled) HAWK_ARR_DLEN(hawk->parse.gbls,ngbls) = 0; hawk->tree.ngbls = HAWK_ARR_SIZE (hawk->parse.gbls); - HAWK_ASSERT(ngbls == hawk->tree.ngbls-1); + HAWK_ASSERT(ngbls == hawk->tree.ngbls - 1); /* return the id which is the index to the gbl table. */ return (int)ngbls; @@ -2046,16 +2059,16 @@ int hawk_addgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) if (hawk->tree.ngbls > hawk->tree.ngbls_base) { - /* this function is not allowed after hawk_parse is called */ - hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); + /* this function is not allowed after hawk_parse() is called */ + hawk_seterrbfmt(hawk, HAWK_NULL, HAWK_EPERM, "not permitted to add global '%hs'", name); return -1; } ncs.ptr = (hawk_bch_t*)name; - ncs.len = hawk_count_bcstr(name);; + ncs.len = hawk_count_bcstr(name); if (ncs.len <= 0) { - hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrbfmt(hawk, HAWK_NULL, HAWK_EINVAL, "blank global name not permitted"); return -1; } @@ -2065,7 +2078,13 @@ int hawk_addgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) { hawk_ucs_t wcs; wcs.ptr = hawk_dupbtoucstr(hawk, ncs.ptr, &wcs.len, 0); - if (!wcs.ptr) return -1; + if (HAWK_UNLIKELY(!wcs.ptr)) + { + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); + hawk_seterrfmt(hawk, HAWK_NULL, hawk_geterrnum(hawk), + HAWK_T("unable to add global '%hs' - %js"), name, bem); + return -1; + } n = add_global(hawk, &wcs, HAWK_NULL, 0); hawk_freemem(hawk, wcs.ptr); } @@ -2086,15 +2105,15 @@ int hawk_addgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allowed after hawk_parse is called */ - hawk_seterrnum(hawk, HAWK_NULL, HAWK_EPERM); + hawk_seterrbfmt(hawk, HAWK_NULL, HAWK_EPERM, "not permitted to add global '%ls'", name); return -1; } ncs.ptr = (hawk_uch_t*)name; - ncs.len = hawk_count_ucstr(name);; + ncs.len = hawk_count_ucstr(name); if (ncs.len <= 0) { - hawk_seterrnum(hawk, HAWK_NULL, HAWK_EINVAL); + hawk_seterrbfmt(hawk, HAWK_NULL, HAWK_EINVAL, "blank global name not permitted"); return -1; } @@ -2102,7 +2121,13 @@ int hawk_addgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) { hawk_bcs_t mbs; mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); - if (!mbs.ptr) return -1; + if (HAWK_UNLIKELY(!mbs.ptr)) + { + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); + hawk_seterrfmt(hawk, HAWK_NULL, hawk_geterrnum(hawk), + HAWK_T("unable to add global '%ls' - %js"), name, bem); + return -1; + } n = add_global(hawk, &mbs, HAWK_NULL, 0); hawk_freemem(hawk, mbs.ptr); } @@ -2145,7 +2170,7 @@ int hawk_delgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) } #else wcs.ptr = hawk_dupbtoucstr(hawk, ncs.ptr, &wcs.len, 0); - if (!wcs.ptr) return -1; + if (HAWK_UNLIKELY(!wcs.ptr)) return -1; n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, wcs.ptr, wcs.len); if (n == HAWK_ARR_NIL) { @@ -2189,7 +2214,7 @@ int hawk_delgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) #if defined(HAWK_OOCH_IS_BCH) mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); - if (!mbs.ptr) return -1; + if (HAWK_UNLIKELY(!mbs.ptr)) return -1; n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, mbs.ptr, mbs.len); if (n == HAWK_ARR_NIL) { @@ -2240,7 +2265,7 @@ int hawk_findgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name, int inc_builtin } #else wcs.ptr = hawk_dupbtoucstr(hawk, ncs.ptr, &wcs.len, 0); - if (!wcs.ptr) return -1; + if (HAWK_UNLIKELY(!wcs.ptr)) return -1; n = hawk_arr_search(hawk->parse.gbls, (inc_builtins? 0: HAWK_NUM_STATIC_GBLS), wcs.ptr, wcs.len); if (n == HAWK_ARR_NIL) { @@ -2265,7 +2290,7 @@ int hawk_findgblwithucstr (hawk_t* hawk, const hawk_uch_t* name, int inc_builtin #if defined(HAWK_OOCH_IS_BCH) mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); - if (!mbs.ptr) return -1; + if (HAWK_UNLIKELY(!mbs.ptr)) return -1; n = hawk_arr_search(hawk->parse.gbls, (inc_builtins? 0: HAWK_NUM_STATIC_GBLS), mbs.ptr, mbs.len); if (n == HAWK_ARR_NIL) { diff --git a/lib/rio.c b/lib/rio.c index 39dfb84e..48f8eb9d 100644 --- a/lib/rio.c +++ b/lib/rio.c @@ -147,7 +147,7 @@ static int find_rio_in ( p->name = hawk_rtx_dupoocstr(rtx, name, HAWK_NULL); if (p->name == HAWK_NULL) { - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p); return -1; } @@ -171,8 +171,8 @@ static int find_rio_in ( x = handler(rtx, HAWK_RIO_CMD_OPEN, p, HAWK_NULL, 0); if (x <= -1) { - hawk_rtx_freemem (rtx, p->name); - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p->name); + hawk_rtx_freemem(rtx, p); return -1; } @@ -192,7 +192,6 @@ static HAWK_INLINE int resolve_rs (hawk_rtx_t* rtx, hawk_val_t* rs, hawk_oocs_t* int ret = 0; hawk_val_type_t rs_vtype; - rs_vtype = HAWK_RTX_GETVALTYPE(rtx, rs); switch (rs_vtype) @@ -209,7 +208,7 @@ static HAWK_INLINE int resolve_rs (hawk_rtx_t* rtx, hawk_val_t* rs, hawk_oocs_t* default: rrs->ptr = hawk_rtx_valtooocstrdup(rtx, rs, &rrs->len); - if (rrs->ptr == HAWK_NULL) ret = -1; + if (HAWK_UNLIKELY(!rrs->ptr)) ret = -1; break; } @@ -371,10 +370,17 @@ int hawk_rtx_readio (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_ooch_t* hawk_rio_arg_t* p; hawk_rio_impl_t handler; int ret; +#if 0 + int esc_lq_rq; + hawk_ooch_t esc, lq, rq; +#endif hawk_val_t* rs; hawk_oocs_t rrs; + hawk_val_t* fs; + hawk_oocs_t ffs; + hawk_oow_t line_len = 0; hawk_ooch_t c = HAWK_T('\0'), pc; @@ -390,18 +396,41 @@ int hawk_rtx_readio (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_ooch_t* } /* ready to read a record(typically a line). clear the buffer. */ - hawk_ooecs_clear (buf); + hawk_ooecs_clear(buf); /* get the record separator */ rs = hawk_rtx_getgbl(rtx, HAWK_GBL_RS); - hawk_rtx_refupval (rtx, rs); + hawk_rtx_refupval(rtx, rs); - if (resolve_rs(rtx, rs, &rrs) <= -1) + fs = hawk_rtx_getgbl(rtx, HAWK_GBL_FS); + hawk_rtx_refupval(rtx, fs); + + if (resolve_rs(rtx, rs, &rrs) <= -1) /* TODO: resolve it upon assignment for optimization? */ { - hawk_rtx_refdownval (rtx, rs); + hawk_rtx_refdownval(rtx, rs); return -1; } + if (resolve_rs(rtx, fs, &ffs) <= -1) + { + hawk_rtx_refdownval(rtx, fs); + hawk_rtx_refdownval(rtx, rs); + return -1; + } + +#if 0 + /* RS set to @nil, FS set to a special string starting with ?, followed by esc lq rq */ + esc_lq_rq = 0; + if (ffs.len == 5 && ffs.ptr[0] == '?' && !rrs.ptr) + { + esc_lq_rq = 1; + esc_lq_rq += (esc == lq && esc == rq); + esc = ffs.ptr[2]; + lq = ffs.ptr[3]; + rq = ffs.ptr[4]; + } +#endif + ret = 1; /* call the I/O handler */ @@ -482,6 +511,13 @@ int hawk_rtx_readio (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_ooch_t* p->in.pos = 0; } +#if 0 + if (esc_lq_rq == 2) + { +/* TODO: */ + } + else +#endif if (rrs.ptr == HAWK_NULL) { hawk_oow_t start_pos = p->in.pos; @@ -610,7 +646,6 @@ int hawk_rtx_readio (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_ooch_t* if (hawk_ooecs_ccat(buf, c) == (hawk_oow_t)-1) { - ret = -1; done = 1; break; @@ -677,8 +712,9 @@ int hawk_rtx_readio (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_ooch_t* } } - if (rrs.ptr && HAWK_RTX_GETVALTYPE(rtx, rs) != HAWK_VAL_STR) hawk_rtx_freemem (rtx, rrs.ptr); - hawk_rtx_refdownval (rtx, rs); + if (rrs.ptr && HAWK_RTX_GETVALTYPE(rtx, rs) != HAWK_VAL_STR) hawk_rtx_freemem(rtx, rrs.ptr); + hawk_rtx_refdownval(rtx, fs); + hawk_rtx_refdownval(rtx, rs); return ret; } @@ -707,15 +743,15 @@ int hawk_rtx_readiobytes (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_oo } /* ready to read a record(typically a line). clear the buffer. */ - hawk_becs_clear (buf); + hawk_becs_clear(buf); /* get the record separator */ brs = hawk_rtx_getgbl(rtx, HAWK_GBL_RS); - hawk_rtx_refupval (rtx, brs); + hawk_rtx_refupval(rtx, brs); if (resolve_brs(rtx, brs, &rrs) <= -1) { - hawk_rtx_refdownval (rtx, brs); + hawk_rtx_refdownval(rtx, brs); return -1; } @@ -994,8 +1030,8 @@ int hawk_rtx_readiobytes (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_oo } } - if (rrs.ptr && HAWK_RTX_GETVALTYPE(rtx, brs) != HAWK_VAL_MBS) hawk_rtx_freemem (rtx, rrs.ptr); - hawk_rtx_refdownval (rtx, brs); + if (rrs.ptr && HAWK_RTX_GETVALTYPE(rtx, brs) != HAWK_VAL_MBS) hawk_rtx_freemem(rtx, rrs.ptr); + hawk_rtx_refdownval(rtx, brs); return ret; } @@ -1036,7 +1072,7 @@ int hawk_rtx_writeioval (hawk_rtx_t* rtx, hawk_out_type_t out_type, const hawk_o out.type = HAWK_RTX_VALTOSTR_CPLDUP | HAWK_RTX_VALTOSTR_PRINT; if (hawk_rtx_valtostr(rtx, v, &out) <= -1) return -1; n = hawk_rtx_writeiostr(rtx, out_type, name, out.u.cpldup.ptr, out.u.cpldup.len); - hawk_rtx_freemem (rtx, out.u.cpldup.ptr); + hawk_rtx_freemem(rtx, out.u.cpldup.ptr); return n; } } @@ -1100,7 +1136,7 @@ static int prepare_for_write_io_data (hawk_rtx_t* rtx, hawk_out_type_t out_type, p->name = hawk_rtx_dupoocstr(rtx, name, HAWK_NULL); if (HAWK_UNLIKELY(!p->name)) { - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p); return -1; } @@ -1119,8 +1155,8 @@ static int prepare_for_write_io_data (hawk_rtx_t* rtx, hawk_out_type_t out_type, n = handler(rtx, HAWK_RIO_CMD_OPEN, p, HAWK_NULL, 0); if (n <= -1) { - hawk_rtx_freemem (rtx, p->name); - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p->name); + hawk_rtx_freemem(rtx, p); return -1; } @@ -1418,8 +1454,8 @@ int hawk_rtx_closio_read (hawk_rtx_t* rtx, hawk_in_type_t in_type, const hawk_oo if (px) px->next = p->next; else rtx->rio.chain = p->next; - hawk_rtx_freemem (rtx, p->name); - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p->name); + hawk_rtx_freemem(rtx, p); return 0; } @@ -1467,8 +1503,8 @@ int hawk_rtx_closio_write (hawk_rtx_t* rtx, hawk_out_type_t out_type, const hawk if (px) px->next = p->next; else rtx->rio.chain = p->next; - hawk_rtx_freemem (rtx, p->name); - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p->name); + hawk_rtx_freemem(rtx, p); return 0; } @@ -1554,8 +1590,8 @@ int hawk_rtx_closeio (hawk_rtx_t* rtx, const hawk_ooch_t* name, const hawk_ooch_ if (px) px->next = p->next; else rtx->rio.chain = p->next; - hawk_rtx_freemem (rtx, p->name); - hawk_rtx_freemem (rtx, p); + hawk_rtx_freemem(rtx, p->name); + hawk_rtx_freemem(rtx, p); return 0; } @@ -1605,8 +1641,8 @@ void hawk_rtx_clearallios (hawk_rtx_t* rtx) } } - hawk_rtx_freemem (rtx, rtx->rio.chain->name); - hawk_rtx_freemem (rtx, rtx->rio.chain); + hawk_rtx_freemem(rtx, rtx->rio.chain->name); + hawk_rtx_freemem(rtx, rtx->rio.chain); rtx->rio.chain = next; } diff --git a/lib/run.c b/lib/run.c index ac251301..2fb04738 100644 --- a/lib/run.c +++ b/lib/run.c @@ -8442,12 +8442,12 @@ hawk_ooch_t* hawk_rtx_format ( if (fmt[i] == HAWK_T('%')) { /* add % to format specifier (fbu) */ - FMT_CHAR (fmt[i]); + FMT_CHAR(fmt[i]); } else { /* normal output */ - OUT_CHAR (fmt[i]); + OUT_CHAR(fmt[i]); } continue; } @@ -8477,7 +8477,7 @@ hawk_ooch_t* hawk_rtx_format ( goto wp_mod_init; } - FMT_CHAR (fmt[i]); i++; + FMT_CHAR(fmt[i]); i++; } wp_mod_init: @@ -8564,7 +8564,7 @@ wp_mod_main: do { wp[wp_idx] = wp[wp_idx] * 10 + fmt[i] - HAWK_T('0'); - FMT_CHAR (fmt[i]); i++; + FMT_CHAR(fmt[i]); i++; } while (i < fmt_len && hawk_is_ooch_digit(fmt[i])); } @@ -8572,7 +8572,7 @@ wp_mod_main: if (wp_idx == WP_WIDTH && i < fmt_len && fmt[i] == HAWK_T('.')) { - FMT_CHAR (fmt[i]); i++; + FMT_CHAR(fmt[i]); i++; wp[WP_PRECISION] = 0; wp_idx = WP_PRECISION; /* change index to precision */ goto wp_mod_main; @@ -8839,14 +8839,14 @@ wp_mod_main: if (n <= -1) return HAWK_NULL; #if defined(HAWK_USE_FLTMAX) - /*FMT_CHAR (HAWK_T('j'));*/ + /*FMT_CHAR(HAWK_T('j'));*/ FMT_STR (HAWK_T("jj"), 2); /* see fmt.c for info on jj */ - FMT_CHAR (fmt[i]); + FMT_CHAR(fmt[i]); /*if (hawk_ooecs_fcat(out, HAWK_OOECS_PTR(fbu), r) == (hawk_oow_t)-1) return HAWK_NULL;*/ if (hawk_ooecs_fcat(out, HAWK_OOECS_PTR(fbu), &r) == (hawk_oow_t)-1) return HAWK_NULL; #else - FMT_CHAR (HAWK_T('z')); - FMT_CHAR (fmt[i]); + FMT_CHAR(HAWK_T('z')); + FMT_CHAR(fmt[i]); if (hawk_ooecs_fcat(out, HAWK_OOECS_PTR(fbu), r) == (hawk_oow_t)-1) return HAWK_NULL; #endif } @@ -9228,7 +9228,7 @@ wp_mod_main: else { if (fmt[i] != HAWK_T('%')) OUT_STR (HAWK_OOECS_PTR(fbu), HAWK_OOECS_LEN(fbu)); - OUT_CHAR (fmt[i]); + OUT_CHAR(fmt[i]); goto skip_taking_arg; } @@ -10156,8 +10156,6 @@ void hawk_rtx_getnrflt (hawk_rtx_t* rtx, hawk_nrflt_t* nrflt) *nrflt = rtx->nrflt; } - - /* ------------------------------------------------------------------------ */ hawk_oow_t hawk_rtx_fmttoucstr_ (hawk_rtx_t* rtx, hawk_uch_t* buf, hawk_oow_t bufsz, const hawk_uch_t* fmt, ...) diff --git a/lib/sed.c b/lib/sed.c index e20d0fd1..d7e5476f 100644 --- a/lib/sed.c +++ b/lib/sed.c @@ -46,7 +46,7 @@ do { \ static void free_all_cut_selector_blocks (hawk_sed_t* sed, hawk_sed_cmd_t* cmd); -hawk_sed_t* hawk_sed_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errnum_t* errnum) +hawk_sed_t* hawk_sed_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errinf_t* errinf) { hawk_sed_t* sed; @@ -55,13 +55,18 @@ hawk_sed_t* hawk_sed_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* c { if (hawk_sed_init(sed, mmgr, cmgr) <= -1) { - if (errnum) *errnum = hawk_sed_geterrnum(sed); + if (errinf) hawk_sed_geterrinf(sed, errinf); HAWK_MMGR_FREE (mmgr, sed); sed = HAWK_NULL; } else HAWK_MEMSET(sed + 1, 0, xtnsize); } - else if (errnum) *errnum = HAWK_ENOMEM; + else if (errinf) + { + HAWK_MEMSET(errinf, 0, HAWK_SIZEOF(*errinf)); + errinf->num = HAWK_ENOMEM; + hawk_copy_oocstr(errinf->msg, HAWK_COUNTOF(errinf->msg), hawk_dfl_errstr(errinf->num)); + } return sed; } diff --git a/lib/std-cut.c b/lib/std-cut.c index cffdb222..21c13e56 100644 --- a/lib/std-cut.c +++ b/lib/std-cut.c @@ -70,12 +70,12 @@ static HAWK_INLINE xtn_t* GET_XTN(hawk_cut_t* cut) { return (xtn_t*)((hawk_uint8 #endif -hawk_cut_t* hawk_cut_openstd (hawk_oow_t xtnsize, hawk_errnum_t* errnum) +hawk_cut_t* hawk_cut_openstd (hawk_oow_t xtnsize, hawk_errinf_t* errinf) { - return hawk_cut_openstdwithmmgr(hawk_get_sys_mmgr(), xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), errnum); + return hawk_cut_openstdwithmmgr(hawk_get_sys_mmgr(), xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), errinf); } -hawk_cut_t* hawk_cut_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errnum_t* errnum) +hawk_cut_t* hawk_cut_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errinf_t* errinf) { hawk_cut_t* cut; xtn_t* xtn; @@ -84,7 +84,7 @@ hawk_cut_t* hawk_cut_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, haw if (!cmgr) cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); /* create an object */ - cut = hawk_cut_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, errnum); + cut = hawk_cut_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, errinf); if (HAWK_UNLIKELY(!cut)) return HAWK_NULL; cut->_instsize += HAWK_SIZEOF(xtn_t); diff --git a/lib/std-json.c b/lib/std-json.c index fe06efe7..2503f786 100644 --- a/lib/std-json.c +++ b/lib/std-json.c @@ -37,20 +37,20 @@ static HAWK_INLINE xtn_t* GET_XTN(hawk_json_t* json) { return (xtn_t*)((hawk_uin #define GET_XTN(json) ((xtn_t*)((hawk_uint8_t*)hawk_json_getxtn(json) - HAWK_SIZEOF(xtn_t))) #endif -hawk_json_t* hawk_json_openstd (hawk_oow_t xtnsize, hawk_json_prim_t* prim, hawk_errnum_t* errnum) +hawk_json_t* hawk_json_openstd (hawk_oow_t xtnsize, hawk_json_prim_t* prim, hawk_errinf_t* errinf) { - return hawk_json_openstdwithmmgr (hawk_get_sys_mmgr(), xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), prim, errnum); + return hawk_json_openstdwithmmgr (hawk_get_sys_mmgr(), xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), prim, errinf); } -hawk_json_t* hawk_json_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_json_prim_t* prim, hawk_errnum_t* errnum) +hawk_json_t* hawk_json_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_json_prim_t* prim, hawk_errinf_t* errinf) { hawk_json_t* json; if (!mmgr) mmgr = hawk_get_sys_mmgr(); if (!cmgr) cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); - json = hawk_json_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, prim, errnum); - if (!json) return HAWK_NULL; + json = hawk_json_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, prim, errinf); + if (HAWK_UNLIKELY(!json)) return HAWK_NULL; json->_instsize += HAWK_SIZEOF(xtn_t); diff --git a/lib/std-sed.c b/lib/std-sed.c index 62f886f7..77f76b27 100644 --- a/lib/std-sed.c +++ b/lib/std-sed.c @@ -107,19 +107,19 @@ static int int_to_str (hawk_oow_t val, hawk_ooch_t* buf, hawk_oow_t buflen) return 0; } -hawk_sed_t* hawk_sed_openstd (hawk_oow_t xtnsize, hawk_errnum_t* errnum) +hawk_sed_t* hawk_sed_openstd (hawk_oow_t xtnsize, hawk_errinf_t* errinf) { - return hawk_sed_openstdwithmmgr (hawk_get_sys_mmgr(), xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), errnum); + return hawk_sed_openstdwithmmgr(hawk_get_sys_mmgr(), xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), errinf); } -hawk_sed_t* hawk_sed_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errnum_t* errnum) +hawk_sed_t* hawk_sed_openstdwithmmgr(hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errinf_t* errinf) { hawk_sed_t* sed; if (!mmgr) mmgr = hawk_get_sys_mmgr(); if (!cmgr) cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); - sed = hawk_sed_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, errnum); + sed = hawk_sed_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, errinf); if (HAWK_UNLIKELY(!sed)) return HAWK_NULL; sed->_instsize += HAWK_SIZEOF(xtn_t); diff --git a/lib/std.c b/lib/std.c index 34aafe09..771c00eb 100644 --- a/lib/std.c +++ b/lib/std.c @@ -970,9 +970,9 @@ static void log_write (hawk_t* hawk, hawk_bitmask_t mask, const hawk_ooch_t* msg static int add_globals (hawk_t* hawk); static int add_functions (hawk_t* hawk); -hawk_t* hawk_openstd (hawk_oow_t xtnsize, hawk_errnum_t* errnum) +hawk_t* hawk_openstd (hawk_oow_t xtnsize, hawk_errinf_t* errinf) { - return hawk_openstdwithmmgr(&sys_mmgr, xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), errnum); + return hawk_openstdwithmmgr(&sys_mmgr, xtnsize, hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), errinf); } static void fini_xtn (hawk_t* hawk, void* ctx) @@ -993,7 +993,7 @@ static void clear_xtn (hawk_t* hawk, void* ctx) /* nothing to do */ } -hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errnum_t* errnum) +hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, hawk_errinf_t* errinf) { hawk_t* hawk; hawk_prm_t prm; @@ -1012,7 +1012,7 @@ hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t if (!cmgr) cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); /* create an object */ - hawk = hawk_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, &prm, errnum); + hawk = hawk_open(mmgr, HAWK_SIZEOF(xtn_t) + xtnsize, cmgr, &prm, errinf); if (HAWK_UNLIKELY(!hawk)) return HAWK_NULL; /* adjust the object size by the sizeof xtn_t so that hawk_getxtn() returns the right pointer. */ @@ -1022,7 +1022,7 @@ hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t #if defined(USE_DLFCN) if (hawk_setopt(hawk, HAWK_OPT_MODPOSTFIX, HAWK_T(".so")) <= -1) { - if (errnum) *errnum = hawk_geterrnum(hawk); + if (errinf) hawk_geterrinf(hawk, errinf); goto oops; } #endif @@ -1036,7 +1036,7 @@ hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t /* add intrinsic global variables and functions */ if (add_globals(hawk) <= -1 || add_functions(hawk) <= -1) { - if (errnum) *errnum = hawk_geterrnum(hawk); + if (errinf) hawk_geterrinf(hawk, errinf); goto oops; } @@ -1058,7 +1058,7 @@ hawk_t* hawk_openstdwithmmgr (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t return hawk; oops: - if (hawk) hawk_close (hawk); + if (hawk) hawk_close(hawk); return HAWK_NULL; }