minor touch-up

This commit is contained in:
hyung-hwan 2025-06-09 15:36:46 +09:00
parent 63eb61c5c0
commit 24c48fab9a
4 changed files with 108 additions and 103 deletions

View File

@ -143,9 +143,9 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
/* TODO: this mutex protection is wrong in that if a call to hawk_querymodulewithname() /* TODO: this mutex protection is wrong in that if a call to hawk_querymodulewithname()
* is made outside this hawk module, the call is not protected under * is made outside this hawk module, the call is not protected under
* the same mutex. FIX THIS */ * the same mutex. FIX THIS */
hawk_mtx_lock (&md->mq_mtx, HAWK_NULL); hawk_mtx_lock(&md->mq_mtx, HAWK_NULL);
fncp = hawk_rtx_valtofnc(rtx, hawk_rtx_getarg(rtx, 0), &fnc); fncp = hawk_rtx_valtofnc(rtx, hawk_rtx_getarg(rtx, 0), &fnc);
hawk_mtx_unlock (&md->mq_mtx); hawk_mtx_unlock(&md->mq_mtx);
if (!fncp) return -1; /* hard failure */ if (!fncp) return -1; /* hard failure */
if (f_nargs < fnc.spec.arg.min || f_nargs > fnc.spec.arg.max) if (f_nargs < fnc.spec.arg.min || f_nargs > fnc.spec.arg.max)
@ -176,7 +176,7 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
v = hawk_rtx_evalcall(rtx, &call, fun, push_args_from_stack, (void*)&pafs, HAWK_NULL, HAWK_NULL); v = hawk_rtx_evalcall(rtx, &call, fun, push_args_from_stack, (void*)&pafs, HAWK_NULL, HAWK_NULL);
if (HAWK_UNLIKELY(!v)) return -1; /* hard failure */ if (HAWK_UNLIKELY(!v)) return -1; /* hard failure */
hawk_rtx_setretval (rtx, v); hawk_rtx_setretval(rtx, v);
return 0; return 0;
} }
@ -211,16 +211,16 @@ static int fnc_function_exists (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
md = (mod_data_t*)fi->mod->ctx; md = (mod_data_t*)fi->mod->ctx;
/* hawk_query_module_with_name() may update some shared data under /* hawk_query_module_with_name() may update some shared data under
* the hawk object. use a mutex for shared data safety */ * the hawk object. use a mutex for shared data safety */
hawk_mtx_lock (&md->mq_mtx, HAWK_NULL); hawk_mtx_lock(&md->mq_mtx, HAWK_NULL);
rx = (hawk_querymodulewithname(hawk_rtx_gethawk(rtx), name.ptr, &sym) != HAWK_NULL); rx = (hawk_querymodulewithname(hawk_rtx_gethawk(rtx), name.ptr, &sym) != HAWK_NULL);
hawk_mtx_unlock (&md->mq_mtx); hawk_mtx_unlock(&md->mq_mtx);
} }
} }
} }
hawk_rtx_freevaloocstr (rtx, a0, name.ptr); hawk_rtx_freevaloocstr(rtx, a0, name.ptr);
} }
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, rx));
return 0; return 0;
} }
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
@ -241,10 +241,10 @@ static int fnc_cmgr_exists (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
else else
{ {
rx = (hawk_get_cmgr_by_name(str) != HAWK_NULL); rx = (hawk_get_cmgr_by_name(str) != HAWK_NULL);
hawk_rtx_freevaloocstr (rtx, a0, str); hawk_rtx_freevaloocstr(rtx, a0, str);
} }
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, rx));
return 0; return 0;
} }
@ -266,8 +266,8 @@ static int fnc_gc (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
gen = hawk_rtx_gc(rtx, gen); gen = hawk_rtx_gc(rtx, gen);
#endif #endif
HAWK_ASSERT (HAWK_IN_INT_RANGE(gen)); HAWK_ASSERT(HAWK_IN_INT_RANGE(gen));
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, gen)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, gen));
return 0; return 0;
} }
@ -282,8 +282,8 @@ static int fnc_gc_get_pressure (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
pressure = rtx->gc.pressure[gen]; pressure = rtx->gc.pressure[gen];
HAWK_ASSERT (HAWK_IN_INT_RANGE(pressure)); HAWK_ASSERT(HAWK_IN_INT_RANGE(pressure));
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, pressure)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, pressure));
return 0; return 0;
} }
@ -298,8 +298,8 @@ static int fnc_gc_get_threshold (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
threshold = rtx->gc.threshold[gen]; threshold = rtx->gc.threshold[gen];
HAWK_ASSERT (HAWK_IN_INT_RANGE(threshold)); HAWK_ASSERT(HAWK_IN_INT_RANGE(threshold));
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, threshold)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, threshold));
return 0; return 0;
} }
@ -324,8 +324,8 @@ static int fnc_gc_set_threshold (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
threshold = rtx->gc.threshold[gen]; /* no update. but retrieve the existing value */ threshold = rtx->gc.threshold[gen]; /* no update. but retrieve the existing value */
} }
HAWK_ASSERT (HAWK_IN_INT_RANGE(threshold)); HAWK_ASSERT(HAWK_IN_INT_RANGE(threshold));
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, threshold)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, threshold));
return 0; return 0;
} }
@ -333,7 +333,7 @@ static int fnc_gcrefs (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
{ {
hawk_val_t* a0; hawk_val_t* a0;
a0 = hawk_rtx_getarg(rtx, 0); a0 = hawk_rtx_getarg(rtx, 0);
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, HAWK_VTR_IS_POINTER(a0)? a0->v_refs: 0)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, HAWK_VTR_IS_POINTER(a0)? a0->v_refs: 0));
return 0; return 0;
} }
@ -353,12 +353,12 @@ static int fnc_array (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
{ {
if (HAWK_UNLIKELY(hawk_rtx_setarrvalfld(rtx, tmp, i + 1, hawk_rtx_getarg(rtx, i)) == HAWK_NULL)) if (HAWK_UNLIKELY(hawk_rtx_setarrvalfld(rtx, tmp, i + 1, hawk_rtx_getarg(rtx, i)) == HAWK_NULL))
{ {
hawk_rtx_freeval (rtx, tmp, 0); hawk_rtx_freeval(rtx, tmp, 0);
return -1; return -1;
} }
} }
hawk_rtx_setretval (rtx, tmp); hawk_rtx_setretval(rtx, tmp);
return 0; return 0;
} }
@ -387,25 +387,25 @@ static int fnc_map (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
out.type = HAWK_RTX_VALTOSTR_CPLDUP; out.type = HAWK_RTX_VALTOSTR_CPLDUP;
if (hawk_rtx_valtostr(rtx, v, &out) <= -1) if (hawk_rtx_valtostr(rtx, v, &out) <= -1)
{ {
hawk_rtx_freeval (rtx, tmp, 0); hawk_rtx_freeval(rtx, tmp, 0);
return -1; return -1;
} }
} }
v = (++i >= nargs)? hawk_val_nil: hawk_rtx_getarg(rtx, i); v = (++i >= nargs)? hawk_val_nil: hawk_rtx_getarg(rtx, i);
v = hawk_rtx_setmapvalfld(rtx, tmp, out.u.cpldup.ptr, out.u.cpldup.len, v); v = hawk_rtx_setmapvalfld(rtx, tmp, out.u.cpldup.ptr, out.u.cpldup.len, v);
if (out.u.cpldup.ptr != idxbuf) hawk_rtx_freemem (rtx, out.u.cpldup.ptr); if (out.u.cpldup.ptr != idxbuf) hawk_rtx_freemem(rtx, out.u.cpldup.ptr);
if (HAWK_UNLIKELY(!v)) if (HAWK_UNLIKELY(!v))
{ {
hawk_rtx_freeval (rtx, tmp, 0); hawk_rtx_freeval(rtx, tmp, 0);
return -1; return -1;
} }
/* if (i >= nargs) break; this check is probably not needed. another i++ in the 3rd segment of the for statement should be mostly harmless. potential overflow issue is not a real issue as the number of arguments can be so high. */ /* if (i >= nargs) break; this check is probably not needed. another i++ in the 3rd segment of the for statement should be mostly harmless. potential overflow issue is not a real issue as the number of arguments can be so high. */
} }
hawk_rtx_setretval (rtx, tmp); hawk_rtx_setretval(rtx, tmp);
return 0; return 0;
} }
@ -421,7 +421,7 @@ static int fnc_isnil (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_NIL); r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_NIL);
if (HAWK_UNLIKELY(!r)) return -1; if (HAWK_UNLIKELY(!r)) return -1;
hawk_rtx_setretval (rtx, r); hawk_rtx_setretval(rtx, r);
return 0; return 0;
} }
@ -435,7 +435,7 @@ static int fnc_ismap (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_MAP); r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_MAP);
if (HAWK_UNLIKELY(!r)) return -1; if (HAWK_UNLIKELY(!r)) return -1;
hawk_rtx_setretval (rtx, r); hawk_rtx_setretval(rtx, r);
return 0; return 0;
} }
@ -449,7 +449,7 @@ static int fnc_isarr (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_ARR); r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_ARR);
if (HAWK_UNLIKELY(!r)) return -1; if (HAWK_UNLIKELY(!r)) return -1;
hawk_rtx_setretval (rtx, r); hawk_rtx_setretval(rtx, r);
return 0; return 0;
} }
@ -461,7 +461,7 @@ static int fnc_modlibdirs (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
r = hawk_rtx_makestrvalwithoocstr(rtx, (hawk->opt.mod[0].len > 0)? (const hawk_ooch_t*)hawk->opt.mod[0].ptr: (const hawk_ooch_t*)HAWK_T(HAWK_DEFAULT_MODLIBDIRS)); r = hawk_rtx_makestrvalwithoocstr(rtx, (hawk->opt.mod[0].len > 0)? (const hawk_ooch_t*)hawk->opt.mod[0].ptr: (const hawk_ooch_t*)HAWK_T(HAWK_DEFAULT_MODLIBDIRS));
if (HAWK_UNLIKELY(!r)) return -1; if (HAWK_UNLIKELY(!r)) return -1;
hawk_rtx_setretval (rtx, r); hawk_rtx_setretval(rtx, r);
return 0; return 0;
} }
@ -477,7 +477,7 @@ static int fnc_type (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
r = hawk_rtx_makeintval(rtx, _type); r = hawk_rtx_makeintval(rtx, _type);
if (HAWK_UNLIKELY(!r)) return -1; if (HAWK_UNLIKELY(!r)) return -1;
hawk_rtx_setretval (rtx, r); hawk_rtx_setretval(rtx, r);
return 0; return 0;
} }
@ -493,7 +493,7 @@ static int fnc_typename (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
r = hawk_rtx_makestrvalwithoocstr(rtx, name); r = hawk_rtx_makestrvalwithoocstr(rtx, name);
if (HAWK_UNLIKELY(!r)) return -1; if (HAWK_UNLIKELY(!r)) return -1;
hawk_rtx_setretval (rtx, r); hawk_rtx_setretval(rtx, r);
return 0; return 0;
} }
@ -508,7 +508,7 @@ static int fnc_hash (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
a0 = hawk_rtx_getarg(rtx, 0); a0 = hawk_rtx_getarg(rtx, 0);
v = hawk_rtx_hashval(rtx, a0); /* ignore v <= -1 which is an error */ v = hawk_rtx_hashval(rtx, a0); /* ignore v <= -1 which is an error */
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, v)); hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, v));
return 0; return 0;
} }
@ -581,8 +581,8 @@ static void unload (hawk_mod_t* mod, hawk_t* hawk)
{ {
mod_data_t* md = (mod_data_t*)mod->ctx; mod_data_t* md = (mod_data_t*)mod->ctx;
hawk_mtx_fini (&md->mq_mtx); hawk_mtx_fini(&md->mq_mtx);
hawk_freemem (hawk, md); hawk_freemem(hawk, md);
} }
int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* hawk) int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* hawk)
@ -592,7 +592,7 @@ int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* hawk)
md = hawk_allocmem(hawk, HAWK_SIZEOF(*md)); md = hawk_allocmem(hawk, HAWK_SIZEOF(*md));
if (HAWK_UNLIKELY(!md)) return -1; if (HAWK_UNLIKELY(!md)) return -1;
hawk_mtx_init (&md->mq_mtx, hawk_getgem(hawk)); hawk_mtx_init(&md->mq_mtx, hawk_getgem(hawk));
mod->query = query; mod->query = query;
mod->unload = unload; mod->unload = unload;

View File

@ -7714,7 +7714,6 @@ done:
return &mdp->mod; return &mdp->mod;
} }
hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_sym_t* sym) hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_sym_t* sym)
{ {
const hawk_ooch_t* dc; const hawk_ooch_t* dc;
@ -7724,7 +7723,6 @@ hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_
hawk_ooch_t tmp; hawk_ooch_t tmp;
/*TOOD: non-module builtin function? fnc? */ /*TOOD: non-module builtin function? fnc? */
name_len = hawk_count_oocstr(name); name_len = hawk_count_oocstr(name);
dc = hawk_find_oochars_in_oochars(name, name_len, HAWK_T("::"), 2, 0); dc = hawk_find_oochars_in_oochars(name, name_len, HAWK_T("::"), 2, 0);
if (!dc) if (!dc)

112
lib/run.c
View File

@ -338,13 +338,13 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
if (str.ptr[i] == '\0') if (str.ptr[i] == '\0')
{ {
/* '\0' is included in the value */ /* '\0' is included in the value */
hawk_rtx_freemem (rtx, str.ptr); hawk_rtx_freemem(rtx, str.ptr);
hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR); hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR);
return -1; return -1;
} }
} }
if (rtx->gbl.convfmt.ptr) hawk_rtx_freemem (rtx, rtx->gbl.convfmt.ptr); if (rtx->gbl.convfmt.ptr) hawk_rtx_freemem(rtx, rtx->gbl.convfmt.ptr);
rtx->gbl.convfmt.ptr = str.ptr; rtx->gbl.convfmt.ptr = str.ptr;
rtx->gbl.convfmt.len = str.len; rtx->gbl.convfmt.len = str.len;
break; break;
@ -503,13 +503,13 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
if (str.ptr[i] == '\0') if (str.ptr[i] == '\0')
{ {
/* '\0' is included in the value */ /* '\0' is included in the value */
hawk_rtx_freemem (rtx, str.ptr); hawk_rtx_freemem(rtx, str.ptr);
hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR); hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR);
return -1; return -1;
} }
} }
if (rtx->gbl.ofmt.ptr) hawk_rtx_freemem (rtx, rtx->gbl.ofmt.ptr); if (rtx->gbl.ofmt.ptr) hawk_rtx_freemem(rtx, rtx->gbl.ofmt.ptr);
rtx->gbl.ofmt.ptr = str.ptr; rtx->gbl.ofmt.ptr = str.ptr;
rtx->gbl.ofmt.len = str.len; rtx->gbl.ofmt.len = str.len;
} }
@ -521,7 +521,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len); str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
if (HAWK_UNLIKELY(!str.ptr)) return -1; if (HAWK_UNLIKELY(!str.ptr)) return -1;
if (rtx->gbl.ofs.ptr) hawk_rtx_freemem (rtx, rtx->gbl.ofs.ptr); if (rtx->gbl.ofs.ptr) hawk_rtx_freemem(rtx, rtx->gbl.ofs.ptr);
rtx->gbl.ofs.ptr = str.ptr; rtx->gbl.ofs.ptr = str.ptr;
rtx->gbl.ofs.len = str.len; rtx->gbl.ofs.len = str.len;
@ -535,7 +535,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len); str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
if (HAWK_UNLIKELY(!str.ptr)) return -1; if (HAWK_UNLIKELY(!str.ptr)) return -1;
if (rtx->gbl.ors.ptr) hawk_rtx_freemem (rtx, rtx->gbl.ors.ptr); if (rtx->gbl.ors.ptr) hawk_rtx_freemem(rtx, rtx->gbl.ors.ptr);
rtx->gbl.ors.ptr = str.ptr; rtx->gbl.ors.ptr = str.ptr;
rtx->gbl.ors.len = str.len; rtx->gbl.ors.len = str.len;
@ -619,7 +619,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len); str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
if (HAWK_UNLIKELY(!str.ptr)) return -1; if (HAWK_UNLIKELY(!str.ptr)) return -1;
if (rtx->gbl.subsep.ptr) hawk_rtx_freemem (rtx, rtx->gbl.subsep.ptr); if (rtx->gbl.subsep.ptr) hawk_rtx_freemem(rtx, rtx->gbl.subsep.ptr);
rtx->gbl.subsep.ptr = str.ptr; rtx->gbl.subsep.ptr = str.ptr;
rtx->gbl.subsep.len = str.len; rtx->gbl.subsep.len = str.len;
@ -1142,9 +1142,9 @@ static int init_rtx (hawk_rtx_t* rtx, hawk_t* hawk, hawk_rio_cbs_t* rio)
return 0; return 0;
oops_14: oops_14:
hawk_rtx_freemem (rtx, rtx->formatmbs.tmp.ptr); hawk_rtx_freemem(rtx, rtx->formatmbs.tmp.ptr);
oops_13: oops_13:
hawk_rtx_freemem (rtx, rtx->format.tmp.ptr); hawk_rtx_freemem(rtx, rtx->format.tmp.ptr);
oops_12: oops_12:
hawk_htb_close (rtx->named); hawk_htb_close (rtx->named);
oops_11: oops_11:
@ -1168,7 +1168,7 @@ oops_3:
oops_2: oops_2:
hawk_ooecs_fini (&rtx->inrec.line); hawk_ooecs_fini (&rtx->inrec.line);
oops_1: oops_1:
hawk_rtx_freemem (rtx, rtx->stack); hawk_rtx_freemem(rtx, rtx->stack);
oops_0: oops_0:
return -1; return -1;
} }
@ -1181,13 +1181,13 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
{ {
hawk_rtx_refdownval(rtx, rtx->forin.ptr[--rtx->forin.size]); hawk_rtx_refdownval(rtx, rtx->forin.ptr[--rtx->forin.size]);
} }
hawk_rtx_freemem (rtx, rtx->forin.ptr); hawk_rtx_freemem(rtx, rtx->forin.ptr);
rtx->forin.ptr = HAWK_NULL; rtx->forin.ptr = HAWK_NULL;
rtx->forin.capa = 0; rtx->forin.capa = 0;
} }
if (rtx->pattern_range_state) if (rtx->pattern_range_state)
hawk_rtx_freemem (rtx, rtx->pattern_range_state); hawk_rtx_freemem(rtx, rtx->pattern_range_state);
/* close all pending io's */ /* close all pending io's */
/* TODO: what if this operation fails? */ /* TODO: what if this operation fails? */
@ -1210,7 +1210,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
if (rtx->gbl.convfmt.ptr != HAWK_NULL && if (rtx->gbl.convfmt.ptr != HAWK_NULL &&
rtx->gbl.convfmt.ptr != DEFAULT_CONVFMT) rtx->gbl.convfmt.ptr != DEFAULT_CONVFMT)
{ {
hawk_rtx_freemem (rtx, rtx->gbl.convfmt.ptr); hawk_rtx_freemem(rtx, rtx->gbl.convfmt.ptr);
rtx->gbl.convfmt.ptr = HAWK_NULL; rtx->gbl.convfmt.ptr = HAWK_NULL;
rtx->gbl.convfmt.len = 0; rtx->gbl.convfmt.len = 0;
} }
@ -1218,7 +1218,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
if (rtx->gbl.ofmt.ptr != HAWK_NULL && if (rtx->gbl.ofmt.ptr != HAWK_NULL &&
rtx->gbl.ofmt.ptr != DEFAULT_OFMT) rtx->gbl.ofmt.ptr != DEFAULT_OFMT)
{ {
hawk_rtx_freemem (rtx, rtx->gbl.ofmt.ptr); hawk_rtx_freemem(rtx, rtx->gbl.ofmt.ptr);
rtx->gbl.ofmt.ptr = HAWK_NULL; rtx->gbl.ofmt.ptr = HAWK_NULL;
rtx->gbl.ofmt.len = 0; rtx->gbl.ofmt.len = 0;
} }
@ -1226,7 +1226,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
if (rtx->gbl.ofs.ptr != HAWK_NULL && if (rtx->gbl.ofs.ptr != HAWK_NULL &&
rtx->gbl.ofs.ptr != DEFAULT_OFS) rtx->gbl.ofs.ptr != DEFAULT_OFS)
{ {
hawk_rtx_freemem (rtx, rtx->gbl.ofs.ptr); hawk_rtx_freemem(rtx, rtx->gbl.ofs.ptr);
rtx->gbl.ofs.ptr = HAWK_NULL; rtx->gbl.ofs.ptr = HAWK_NULL;
rtx->gbl.ofs.len = 0; rtx->gbl.ofs.len = 0;
} }
@ -1235,7 +1235,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
rtx->gbl.ors.ptr != DEFAULT_ORS && rtx->gbl.ors.ptr != DEFAULT_ORS &&
rtx->gbl.ors.ptr != DEFAULT_ORS_CRLF) rtx->gbl.ors.ptr != DEFAULT_ORS_CRLF)
{ {
hawk_rtx_freemem (rtx, rtx->gbl.ors.ptr); hawk_rtx_freemem(rtx, rtx->gbl.ors.ptr);
rtx->gbl.ors.ptr = HAWK_NULL; rtx->gbl.ors.ptr = HAWK_NULL;
rtx->gbl.ors.len = 0; rtx->gbl.ors.len = 0;
} }
@ -1243,7 +1243,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
if (rtx->gbl.subsep.ptr != HAWK_NULL && if (rtx->gbl.subsep.ptr != HAWK_NULL &&
rtx->gbl.subsep.ptr != DEFAULT_SUBSEP) rtx->gbl.subsep.ptr != DEFAULT_SUBSEP)
{ {
hawk_rtx_freemem (rtx, rtx->gbl.subsep.ptr); hawk_rtx_freemem(rtx, rtx->gbl.subsep.ptr);
rtx->gbl.subsep.ptr = HAWK_NULL; rtx->gbl.subsep.ptr = HAWK_NULL;
rtx->gbl.subsep.len = 0; rtx->gbl.subsep.len = 0;
} }
@ -1251,13 +1251,13 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
hawk_ooecs_fini (&rtx->fnc.oout); hawk_ooecs_fini (&rtx->fnc.oout);
hawk_becs_fini (&rtx->fnc.bout); hawk_becs_fini (&rtx->fnc.bout);
hawk_rtx_freemem (rtx, rtx->formatmbs.tmp.ptr); hawk_rtx_freemem(rtx, rtx->formatmbs.tmp.ptr);
rtx->formatmbs.tmp.ptr = HAWK_NULL; rtx->formatmbs.tmp.ptr = HAWK_NULL;
rtx->formatmbs.tmp.len = 0; rtx->formatmbs.tmp.len = 0;
hawk_becs_fini (&rtx->formatmbs.fmt); hawk_becs_fini (&rtx->formatmbs.fmt);
hawk_becs_fini (&rtx->formatmbs.out); hawk_becs_fini (&rtx->formatmbs.out);
hawk_rtx_freemem (rtx, rtx->format.tmp.ptr); hawk_rtx_freemem(rtx, rtx->format.tmp.ptr);
rtx->format.tmp.ptr = HAWK_NULL; rtx->format.tmp.ptr = HAWK_NULL;
rtx->format.tmp.len = 0; rtx->format.tmp.len = 0;
hawk_ooecs_fini (&rtx->format.fmt); hawk_ooecs_fini (&rtx->format.fmt);
@ -1269,7 +1269,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
hawk_rtx_clrrec (rtx, 0); hawk_rtx_clrrec (rtx, 0);
if (rtx->inrec.flds) if (rtx->inrec.flds)
{ {
hawk_rtx_freemem (rtx, rtx->inrec.flds); hawk_rtx_freemem(rtx, rtx->inrec.flds);
rtx->inrec.flds = HAWK_NULL; rtx->inrec.flds = HAWK_NULL;
rtx->inrec.maxflds = 0; rtx->inrec.maxflds = 0;
} }
@ -1285,7 +1285,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
{ {
HAWK_ASSERT (rtx->stack_top == 0); HAWK_ASSERT (rtx->stack_top == 0);
hawk_rtx_freemem (rtx, rtx->stack); hawk_rtx_freemem(rtx, rtx->stack);
rtx->stack = HAWK_NULL; rtx->stack = HAWK_NULL;
rtx->stack_top = 0; rtx->stack_top = 0;
rtx->stack_base = 0; rtx->stack_base = 0;
@ -1729,7 +1729,7 @@ hawk_fun_t* hawk_rtx_findfunwithbcstr (hawk_rtx_t* rtx, const hawk_bch_t* name)
wcs.ptr = hawk_rtx_dupbtoucstr(rtx, name, &wcs.len, 0); wcs.ptr = hawk_rtx_dupbtoucstr(rtx, name, &wcs.len, 0);
if (!wcs.ptr) return HAWK_NULL; if (!wcs.ptr) return HAWK_NULL;
fun = find_fun(rtx, wcs.ptr); fun = find_fun(rtx, wcs.ptr);
hawk_rtx_freemem (rtx, wcs.ptr); hawk_rtx_freemem(rtx, wcs.ptr);
return fun; return fun;
#endif #endif
} }
@ -1742,7 +1742,7 @@ hawk_fun_t* hawk_rtx_findfunwithucstr (hawk_rtx_t* rtx, const hawk_uch_t* name)
mbs.ptr = hawk_rtx_duputobcstr(rtx, name, &mbs.len); mbs.ptr = hawk_rtx_duputobcstr(rtx, name, &mbs.len);
if (!mbs.ptr) return HAWK_NULL; if (!mbs.ptr) return HAWK_NULL;
fun = find_fun(rtx, mbs.ptr); fun = find_fun(rtx, mbs.ptr);
hawk_rtx_freemem (rtx, mbs.ptr); hawk_rtx_freemem(rtx, mbs.ptr);
return fun; return fun;
#else #else
return find_fun(rtx, name); return find_fun(rtx, name);
@ -1878,7 +1878,7 @@ oops:
{ {
hawk_rtx_refdownval(rtx, v[--i]); hawk_rtx_refdownval(rtx, v[--i]);
} }
hawk_rtx_freemem (rtx, v); hawk_rtx_freemem(rtx, v);
return ret; return ret;
} }
@ -1909,7 +1909,7 @@ oops:
{ {
hawk_rtx_refdownval(rtx, v[--i]); hawk_rtx_refdownval(rtx, v[--i]);
} }
hawk_rtx_freemem (rtx, v); hawk_rtx_freemem(rtx, v);
return ret; return ret;
} }
@ -1940,7 +1940,7 @@ oops:
{ {
hawk_rtx_refdownval(rtx, v[--i]); hawk_rtx_refdownval(rtx, v[--i]);
} }
hawk_rtx_freemem (rtx, v); hawk_rtx_freemem(rtx, v);
return ret; return ret;
} }
@ -1971,7 +1971,7 @@ oops:
{ {
hawk_rtx_refdownval(rtx, v[--i]); hawk_rtx_refdownval(rtx, v[--i]);
} }
hawk_rtx_freemem (rtx, v); hawk_rtx_freemem(rtx, v);
return ret; return ret;
} }
@ -3123,7 +3123,7 @@ static HAWK_INLINE int delete_indexed (hawk_rtx_t* rtx, hawk_val_t* vv, hawk_nde
{ {
case HAWK_VAL_MAP: case HAWK_VAL_MAP:
val_map: val_map:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
len = HAWK_COUNTOF(idxbuf); len = HAWK_COUNTOF(idxbuf);
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL); str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
if (HAWK_UNLIKELY(!str)) goto oops; if (HAWK_UNLIKELY(!str)) goto oops;
@ -3169,11 +3169,11 @@ static HAWK_INLINE int delete_indexed (hawk_rtx_t* rtx, hawk_val_t* vv, hawk_nde
else else
hawk_arr_uplete (arr, idx, 1); /* no reindexing by compaction. keep the place unset */ hawk_arr_uplete (arr, idx, 1); /* no reindexing by compaction. keep the place unset */
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return 0; return 0;
oops: oops:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return -1; return -1;
} }
@ -4128,7 +4128,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var,
{ {
case HAWK_VAL_MAP: case HAWK_VAL_MAP:
val_map: val_map:
if (str != idxbuf) hawk_rtx_freemem (rtx, str); if (str != idxbuf) hawk_rtx_freemem(rtx, str);
len = HAWK_COUNTOF(idxbuf); len = HAWK_COUNTOF(idxbuf);
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL); str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
if (HAWK_UNLIKELY(!str)) goto oops; if (HAWK_UNLIKELY(!str)) goto oops;
@ -4198,7 +4198,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var,
} }
hawk_rtx_refupval(rtx, val); hawk_rtx_refupval(rtx, val);
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return val; return val;
} }
@ -4222,7 +4222,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var,
} }
oops: oops:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return HAWK_NULL; return HAWK_NULL;
} }
@ -4280,7 +4280,7 @@ static hawk_val_t* do_assignment_positional (hawk_rtx_t* rtx, hawk_nde_pos_t* po
} }
else else
{ {
hawk_rtx_freemem (rtx, str.ptr); hawk_rtx_freemem(rtx, str.ptr);
} }
if (n <= -1) return HAWK_NULL; if (n <= -1) return HAWK_NULL;
@ -4536,7 +4536,7 @@ rvalue_ok:
ropv = eval_expression(rtx, right); ropv = eval_expression(rtx, right);
if (HAWK_UNLIKELY(!ropv)) if (HAWK_UNLIKELY(!ropv))
{ {
if (str != idxbuf) hawk_rtx_freemem (rtx, str); if (str != idxbuf) hawk_rtx_freemem(rtx, str);
return HAWK_NULL; return HAWK_NULL;
} }
@ -4579,12 +4579,12 @@ rvalue_ok:
goto oops; goto oops;
} }
if (str != idxbuf) hawk_rtx_freemem (rtx, str); if (str != idxbuf) hawk_rtx_freemem(rtx, str);
hawk_rtx_refdownval(rtx, ropv); hawk_rtx_refdownval(rtx, ropv);
return res; return res;
oops: oops:
if (str != idxbuf) hawk_rtx_freemem (rtx, str); if (str != idxbuf) hawk_rtx_freemem(rtx, str);
hawk_rtx_refdownval(rtx, ropv); hawk_rtx_refdownval(rtx, ropv);
return HAWK_NULL; return HAWK_NULL;
@ -5295,7 +5295,7 @@ static HAWK_INLINE int __cmp_str_mbs (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va
mbsptr = hawk_rtx_duputobchars(rtx, ls->val.ptr, ls->val.len, &mbslen); mbsptr = hawk_rtx_duputobchars(rtx, ls->val.ptr, ls->val.len, &mbslen);
if (!mbsptr) return CMP_ERROR; if (!mbsptr) return CMP_ERROR;
n = hawk_comp_bchars(mbsptr, mbslen, (const hawk_bch_t*)rs->val.ptr, rs->val.len, rtx->gbl.ignorecase); n = hawk_comp_bchars(mbsptr, mbslen, (const hawk_bch_t*)rs->val.ptr, rs->val.len, rtx->gbl.ignorecase);
hawk_rtx_freemem (rtx, mbsptr); hawk_rtx_freemem(rtx, mbsptr);
return n; return n;
#endif #endif
} }
@ -7332,7 +7332,7 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
{ {
case HAWK_VAL_MAP: case HAWK_VAL_MAP:
val_map: val_map:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
len = HAWK_COUNTOF(idxbuf); len = HAWK_COUNTOF(idxbuf);
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL); str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
if (HAWK_UNLIKELY(!str)) goto oops; if (HAWK_UNLIKELY(!str)) goto oops;
@ -7385,12 +7385,12 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
hawk_rtx_refupval(rtx, HAWK_MAP_VPTR(pair)); */ hawk_rtx_refupval(rtx, HAWK_MAP_VPTR(pair)); */
} }
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return (hawk_val_t**)&HAWK_MAP_VPTR(pair); return (hawk_val_t**)&HAWK_MAP_VPTR(pair);
} }
else else
{ {
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
if (idx >= HAWK_ARR_SIZE(arr) || !HAWK_ARR_SLOT(arr, idx)) if (idx >= HAWK_ARR_SIZE(arr) || !HAWK_ARR_SLOT(arr, idx))
{ {
/* if the value doesn't exist for the given index, insert a nil at that position to create a placeholder for the reference */ /* if the value doesn't exist for the given index, insert a nil at that position to create a placeholder for the reference */
@ -7400,7 +7400,7 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
} }
oops: oops:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return HAWK_NULL; return HAWK_NULL;
} }
@ -7645,7 +7645,7 @@ static hawk_val_t* eval_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
{ {
case HAWK_VAL_MAP: case HAWK_VAL_MAP:
val_map: val_map:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
len = HAWK_COUNTOF(idxbuf); len = HAWK_COUNTOF(idxbuf);
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL); str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
if (HAWK_UNLIKELY(!str)) goto oops; if (HAWK_UNLIKELY(!str)) goto oops;
@ -7688,19 +7688,19 @@ static hawk_val_t* eval_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
{ {
hawk_map_pair_t* pair; hawk_map_pair_t* pair;
pair = hawk_map_search(map, str, len); pair = hawk_map_search(map, str, len);
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return pair? (hawk_val_t*)HAWK_MAP_VPTR(pair): hawk_val_nil; return pair? (hawk_val_t*)HAWK_MAP_VPTR(pair): hawk_val_nil;
} }
else else
{ {
/* return nil if the index is out of range or the element at the index is not set. /* return nil if the index is out of range or the element at the index is not set.
* no check for a negative index as it's guaranteed to be positive by idxnde_to_int() */ * no check for a negative index as it's guaranteed to be positive by idxnde_to_int() */
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return (idx < HAWK_ARR_SIZE(arr) && HAWK_ARR_SLOT(arr, idx))? ((hawk_val_t*)HAWK_ARR_DPTR(arr, idx)): hawk_val_nil; return (idx < HAWK_ARR_SIZE(arr) && HAWK_ARR_SLOT(arr, idx))? ((hawk_val_t*)HAWK_ARR_DPTR(arr, idx)): hawk_val_nil;
} }
oops: oops:
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str); if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
return HAWK_NULL; return HAWK_NULL;
@ -8243,7 +8243,7 @@ hawk_ooch_t* hawk_rtx_format (
#define GROW(buf) do { \ #define GROW(buf) do { \
if ((buf)->ptr) \ if ((buf)->ptr) \
{ \ { \
hawk_rtx_freemem (rtx, (buf)->ptr); \ hawk_rtx_freemem(rtx, (buf)->ptr); \
(buf)->ptr = HAWK_NULL; \ (buf)->ptr = HAWK_NULL; \
} \ } \
(buf)->len += (buf)->inc; \ (buf)->len += (buf)->inc; \
@ -8258,7 +8258,7 @@ hawk_ooch_t* hawk_rtx_format (
#define GROW_WITH_INC(buf,incv) do { \ #define GROW_WITH_INC(buf,incv) do { \
if ((buf)->ptr) \ if ((buf)->ptr) \
{ \ { \
hawk_rtx_freemem (rtx, (buf)->ptr); \ hawk_rtx_freemem(rtx, (buf)->ptr); \
(buf)->ptr = HAWK_NULL; \ (buf)->ptr = HAWK_NULL; \
} \ } \
(buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \ (buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \
@ -8992,7 +8992,7 @@ wp_mod_main:
{ {
if (hawk_ooecs_ccat(out, HAWK_T(' ')) == (hawk_oow_t)-1) if (hawk_ooecs_ccat(out, HAWK_T(' ')) == (hawk_oow_t)-1)
{ {
if (str_free) hawk_rtx_freemem (rtx, str_free); if (str_free) hawk_rtx_freemem(rtx, str_free);
hawk_rtx_refdownval(rtx, v); hawk_rtx_refdownval(rtx, v);
return HAWK_NULL; return HAWK_NULL;
} }
@ -9051,14 +9051,14 @@ wp_mod_main:
if (hawk_ooecs_ccat(out, curc) == (hawk_oow_t)-1) if (hawk_ooecs_ccat(out, curc) == (hawk_oow_t)-1)
{ {
s_fail: s_fail:
if (str_free) hawk_rtx_freemem (rtx, str_free); if (str_free) hawk_rtx_freemem(rtx, str_free);
hawk_rtx_refdownval(rtx, v); hawk_rtx_refdownval(rtx, v);
return HAWK_NULL; return HAWK_NULL;
} }
} }
} }
if (str_free) hawk_rtx_freemem (rtx, str_free); if (str_free) hawk_rtx_freemem(rtx, str_free);
if (flags & FLAG_MINUS) if (flags & FLAG_MINUS)
{ {
@ -9119,7 +9119,7 @@ hawk_bch_t* hawk_rtx_formatmbs (
#define GROW_MBSBUF(buf) do { \ #define GROW_MBSBUF(buf) do { \
if ((buf)->ptr) \ if ((buf)->ptr) \
{ \ { \
hawk_rtx_freemem (rtx, (buf)->ptr); \ hawk_rtx_freemem(rtx, (buf)->ptr); \
(buf)->ptr = HAWK_NULL; \ (buf)->ptr = HAWK_NULL; \
} \ } \
(buf)->len += (buf)->inc; \ (buf)->len += (buf)->inc; \
@ -9134,7 +9134,7 @@ hawk_bch_t* hawk_rtx_formatmbs (
#define GROW_MBSBUF_WITH_INC(buf,incv) do { \ #define GROW_MBSBUF_WITH_INC(buf,incv) do { \
if ((buf)->ptr) \ if ((buf)->ptr) \
{ \ { \
hawk_rtx_freemem (rtx, (buf)->ptr); \ hawk_rtx_freemem(rtx, (buf)->ptr); \
(buf)->ptr = HAWK_NULL; \ (buf)->ptr = HAWK_NULL; \
} \ } \
(buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \ (buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \
@ -9876,7 +9876,7 @@ wp_mod_main:
{ {
if (hawk_becs_ccat(out, HAWK_BT(' ')) == (hawk_oow_t)-1) if (hawk_becs_ccat(out, HAWK_BT(' ')) == (hawk_oow_t)-1)
{ {
if (str_free) hawk_rtx_freemem (rtx, str_free); if (str_free) hawk_rtx_freemem(rtx, str_free);
hawk_rtx_refdownval(rtx, v); hawk_rtx_refdownval(rtx, v);
return HAWK_NULL; return HAWK_NULL;
} }
@ -9934,14 +9934,14 @@ wp_mod_main:
if (hawk_becs_ccat(out, curc) == (hawk_oow_t)-1) if (hawk_becs_ccat(out, curc) == (hawk_oow_t)-1)
{ {
s_fail: s_fail:
if (str_free) hawk_rtx_freemem (rtx, str_free); if (str_free) hawk_rtx_freemem(rtx, str_free);
hawk_rtx_refdownval(rtx, v); hawk_rtx_refdownval(rtx, v);
return HAWK_NULL; return HAWK_NULL;
} }
} }
} }
if (str_free) hawk_rtx_freemem (rtx, str_free); if (str_free) hawk_rtx_freemem(rtx, str_free);
if (flags & FLAG_MINUS) if (flags & FLAG_MINUS)
{ {

View File

@ -38,7 +38,7 @@ static int fnc_errno (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
retv = hawk_rtx_makeintval (rtx, list->errnum); retv = hawk_rtx_makeintval (rtx, list->errnum);
if (retv == HAWK_NULL) return -1; if (retv == HAWK_NULL) return -1;
hawk_rtx_setretval (rtx, retv); hawk_rtx_setretval(rtx, retv);
return 0; return 0;
} }
@ -78,11 +78,14 @@ static int fnc_errstr (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
retv = hawk_rtx_makestrvalwithstr (rtx, errmsg[errnum]); retv = hawk_rtx_makestrvalwithstr (rtx, errmsg[errnum]);
if (retv == HAWK_NULL) return -1; if (retv == HAWK_NULL) return -1;
hawk_rtx_setretval (rtx, retv); hawk_rtx_setretval(rtx, retv);
return 0; return 0;
} }
#endif #endif
/*
* sed::file_to_file("s|root|ROOT|g", "/etc/passwd", "/tmp/x");
*/
static int fnc_file_to_file (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) static int fnc_file_to_file (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
{ {
hawk_sed_t* sed = HAWK_NULL; hawk_sed_t* sed = HAWK_NULL;
@ -132,14 +135,18 @@ oops:
while (i > 0) while (i > 0)
{ {
--i; --i;
hawk_rtx_freevaloocstr (rtx, a[i], xstr[i].ptr); hawk_rtx_freevaloocstr(rtx, a[i], xstr[i].ptr);
} }
if (sed) hawk_sed_close (sed); if (sed) hawk_sed_close (sed);
hawk_rtx_setretval (rtx, retv); hawk_rtx_setretval(rtx, retv);
return 0; return 0;
} }
/*
* sed::str_to_str("s|ab|cd|g", "abcdefg", k);
* print k;
*/
static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
{ {
hawk_sed_t* sed = HAWK_NULL; hawk_sed_t* sed = HAWK_NULL;
@ -149,7 +156,7 @@ static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
hawk_oocs_t outstr; hawk_oocs_t outstr;
int i = 0, ret = 0, n; int i = 0, ret = 0, n;
sed = hawk_sed_openstdwithmmgr (hawk_rtx_getmmgr(rtx), 0, hawk_rtx_getcmgr(rtx), HAWK_NULL); sed = hawk_sed_openstdwithmmgr(hawk_rtx_getmmgr(rtx), 0, hawk_rtx_getcmgr(rtx), HAWK_NULL);
if (sed == HAWK_NULL) if (sed == HAWK_NULL)
{ {
ret = -2; ret = -2;
@ -174,14 +181,14 @@ static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
goto oops; goto oops;
} }
if (hawk_sed_execstdxstr (sed, &xstr[1], &outstr, HAWK_NULL) <= -1) if (hawk_sed_execstdxstr(sed, &xstr[1], &outstr, HAWK_NULL) <= -1)
{ {
ret = -4; ret = -4;
goto oops; goto oops;
} }
tmp = hawk_rtx_makestrvalwithoocs(rtx, &outstr); tmp = hawk_rtx_makestrvalwithoocs(rtx, &outstr);
hawk_sed_freemem (sed, outstr.ptr); hawk_sed_freemem(sed, outstr.ptr);
if (!tmp) if (!tmp)
{ {
@ -189,9 +196,9 @@ static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
goto oops; goto oops;
} }
hawk_rtx_refupval (rtx, tmp); hawk_rtx_refupval(rtx, tmp);
n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 2), tmp); n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 2), tmp);
hawk_rtx_refdownval (rtx, tmp); hawk_rtx_refdownval(rtx, tmp);
if (n <= -1) if (n <= -1)
{ {
ret = -5; ret = -5;
@ -205,11 +212,11 @@ oops:
while (i > 0) while (i > 0)
{ {
--i; --i;
hawk_rtx_freevaloocstr (rtx, a[i], xstr[i].ptr); hawk_rtx_freevaloocstr(rtx, a[i], xstr[i].ptr);
} }
if (sed) hawk_sed_close (sed); if (sed) hawk_sed_close (sed);
hawk_rtx_setretval (rtx, retv); hawk_rtx_setretval(rtx, retv);
return 0; return 0;
} }