diff --git a/bin/hawkgo.go b/bin/hawkgo.go index 267f7761..847082a7 100644 --- a/bin/hawkgo.go +++ b/bin/hawkgo.go @@ -301,13 +301,19 @@ func main() { } } + err = h.AddMod("go") + if err != nil { + fmt.Fprintf(os.Stderr, "ERROR: failed to builtin 'go' module - %s\n", err.Error()) + goto oops + } + if (len(cfg.srcfiles) > 0) { err = h.ParseFiles(cfg.srcfiles) } else { err = h.ParseText(cfg.srcstr) } if err != nil { - fmt.Fprintf(os.Stderr, "ERROR: failed to make hawk - %s\n", err.Error()) + fmt.Fprintf(os.Stderr, "ERROR: failed to parse - %s\n", err.Error()) goto oops } diff --git a/hawk.go b/hawk.go index 9eabea60..6dd77e5b 100644 --- a/hawk.go +++ b/hawk.go @@ -5,6 +5,8 @@ package hawk #include #include +#include + struct rtx_xtn_t { hawk_oow_t inst_no; @@ -54,11 +56,7 @@ static int hawk_fnc_handler_for_go(hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) rtx_xtn_t* xtn; name = hawk_rtx_duputobchars(rtx, fi->name.ptr, fi->name.len, &namelen); - if (!name) - { - // TODO: set error information - return -1; - } + if (!name) return -1; xtn = hawk_rtx_getxtn(rtx); n = hawk_go_fnc_handler(xtn, name, namelen); @@ -87,6 +85,56 @@ static void set_rtx_errmsg(hawk_rtx_t* rtx, hawk_errnum_t errnum, const hawk_bch { hawk_rtx_seterrbfmt(rtx, HAWK_NULL, errnum, "%hs", msg); } + +// ----------------------------------------------- + +extern int hawk_mod_go_fnc_stats(rtx_xtn_t* rtx_xtn); +static int fnc_stats(hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) +{ + rtx_xtn_t* xtn; + xtn = hawk_rtx_getxtn(rtx); + return hawk_mod_go_fnc_stats(xtn); +} + +static hawk_mod_fnc_tab_t fnctab[] = +{ + { HAWK_T("stats"), { { 0, 0, HAWK_NULL }, fnc_stats, 0 } }, +}; + +static int query(hawk_mod_t* mod, hawk_t* hawk, const hawk_ooch_t* name, hawk_mod_sym_t* sym) +{ + //if (hawk_findmodsymfnc_noseterr(hawk, fnctab, HAWK_COUNTOF(fnctab), name, sym) >= 0) return 0; + //return hawk_findmodsymint(hawk, inttab, HAWK_COUNTOF(inttab), name, sym); + return hawk_findmodsymfnc_noseterr(hawk, fnctab, HAWK_COUNTOF(fnctab), name, sym); +} + +static void unload(hawk_mod_t* mod, hawk_t* hawk) +{ +} + +static int init(hawk_mod_t* mod, hawk_rtx_t* rtx) +{ + return 0; +} + +static void fini(hawk_mod_t* mod, hawk_rtx_t* rtx) +{ +} + +static int hawk_mod_go(hawk_mod_t* mod, hawk_t* hawk) +{ + mod->query = query; + mod->unload = unload; + mod->init = init; + mod->fini = fini; + //mod->ctx = ...; + return 0; +} + +static int add_static_mod(hawk_t* hawk, const hawk_bch_t* name) +{ + return hawk_addstaticmodwithbcstr(hawk, name, hawk_mod_go); +} */ import "C" @@ -96,7 +144,7 @@ import "runtime" import "sync" import "unsafe" -type Fnc func(rtx *Rtx) error +type Func func(rtx *Rtx) error type Err struct { Line uint @@ -108,7 +156,7 @@ type Err struct { type Hawk struct { c *C.hawk_t inst_no int - fnctab map[string]Fnc + fnctab map[string]Func rtx_mtx sync.Mutex rtx_count int @@ -206,7 +254,7 @@ func New() (*Hawk, error) { g = &Hawk{c: c, inst_no: -1} - g.fnctab = make(map[string]Fnc) + g.fnctab = make(map[string]Func) g.rtx_count = 0 g.rtx_head = nil g.rtx_tail = nil @@ -223,23 +271,6 @@ func (hawk *Hawk) Close() { } func (hawk *Hawk) make_errinfo() *Err { -/* - var errinf C.hawk_erruinf_t - var err Err - - C.hawk_geterruinf(hawk.c, &errinf) - - err.Line = uint(errinf.loc.line) - err.Colm = uint(errinf.loc.colm) - if errinf.loc.file != nil { - err.File = string(ucstr_to_rune_slice(errinf.loc.file)) - } else { - // TODO: - //err.File = hawk.io.cci_main - } - err.Msg = string(ucstr_to_rune_slice(&errinf.msg[0])) - return &err -*/ var loc *C.hawk_loc_t var err Err @@ -251,9 +282,6 @@ func (hawk *Hawk) make_errinfo() *Err { err.Colm = uint(loc.colm) if loc.file != nil { err.File = string(ucstr_to_rune_slice(loc.file)) - } else { -// TODO: -// err.File = hawk.io.cci_main } } return &err @@ -328,37 +356,17 @@ func (hawk *Hawk) AddGlobal(name string) (int, error) { return int(x), nil } -//export hawk_go_fnc_handler -func hawk_go_fnc_handler(rtx_xtn *C.rtx_xtn_t, name *C.hawk_bch_t, namelen C.hawk_oow_t) C.int { - var fn Fnc - var inst HawkInstance - var rtx_inst RtxInstance - var rtx *Rtx - var fnname string - var ok bool - var err error - - inst = inst_table.slot_to_instance(int(rtx_xtn.inst_no)) - rtx_inst = rtx_inst_table.slot_to_instance(int(rtx_xtn.rtx_inst_no)) - rtx = rtx_inst.g.Value() - - fnname = C.GoStringN(name, C.int(namelen)) - fn, ok = inst.g.Value().fnctab[fnname] - if !ok { - rtx.set_errmsg(C.HAWK_ENOENT, fmt.Sprintf("function '%s' not found", fnname)) - return -1; - } - - err = fn(rtx_inst.g.Value()) - if err != nil { - rtx.set_errmsg(C.HAWK_EOTHER, fmt.Sprintf("function '%s' failure - %s", fnname, err.Error())) - return -1 - } - - return 0 +func (hawk *Hawk) AddMod(name string) error { + var cname *C.hawk_bch_t; + var n C.int + cname = C.CString(name) + n = C.add_static_mod(hawk.c, cname) + C.free(unsafe.Pointer(cname)) + if n <= -1 { return hawk.make_errinfo() } + return nil } -func (hawk *Hawk) AddFunc(name string, min_args uint, max_args uint, spec string, fn Fnc) error { +func (hawk *Hawk) AddFunc(name string, min_args uint, max_args uint, spec string, fn Func) error { var fnc *C.hawk_fnc_t var cname *C.hawk_bch_t var cspec *C.hawk_bch_t @@ -471,6 +479,7 @@ func (hawk *Hawk) unchain_rtx(rtx *Rtx) { } // ----------------------------------------------------------- + func deregister_rtx_instance(rtx *Rtx) { if rtx.h != nil { //fmt.Printf("RTX CLOSING UNCHAIN %p\n", rtx) @@ -570,9 +579,6 @@ func (rtx *Rtx) make_errinfo() *Err { err.Colm = uint(loc.colm) if loc.file != nil { err.File = string(ucstr_to_rune_slice(loc.file)) - } else { -// TODO: -// err.File = hawk.io.cci_main } } return &err @@ -728,6 +734,91 @@ func (rtx *Rtx) GetNamedVars(vars map[string]*Val) { // ----------------------------------------------------------- +//export hawk_go_fnc_handler +func hawk_go_fnc_handler(rtx_xtn *C.rtx_xtn_t, name *C.hawk_bch_t, namelen C.hawk_oow_t) C.int { + var fn Func + var inst HawkInstance + var rtx_inst RtxInstance + var rtx *Rtx + var fnname string + var ok bool + var err error + + inst = inst_table.slot_to_instance(int(rtx_xtn.inst_no)) + rtx_inst = rtx_inst_table.slot_to_instance(int(rtx_xtn.rtx_inst_no)) + rtx = rtx_inst.g.Value() + + fnname = C.GoStringN(name, C.int(namelen)) + fn, ok = inst.g.Value().fnctab[fnname] + if !ok { + rtx.set_errmsg(C.HAWK_ENOENT, fmt.Sprintf("function '%s' not found", fnname)) + return -1; + } + + err = fn(rtx_inst.g.Value()) + if err != nil { + rtx.set_errmsg(C.HAWK_EOTHER, fmt.Sprintf("function '%s' failure - %s", fnname, err.Error())) + return -1 + } + + return 0 +} + +//export hawk_mod_go_fnc_stats +func hawk_mod_go_fnc_stats(rtx_xtn *C.rtx_xtn_t) C.int { + var rtx_inst RtxInstance + var rtx *Rtx + var v *Val + + rtx_inst = rtx_inst_table.slot_to_instance(int(rtx_xtn.rtx_inst_no)) + rtx = rtx_inst.g.Value() + +// TODO: the memory management of the values created is wrong. +// Close() musted be called for each of them... + //runtime.ReadMemStats(&mstat) + v = Must(rtx.NewMapVal()) + v.MapSetField("CPUs", Must(rtx.NewIntVal(runtime.NumCPU()))) + v.MapSetField("Goroutines", Must(rtx.NewIntVal(runtime.NumGoroutine()))) + v.MapSetField("NumCgoCalls", Must(rtx.NewIntVal(int(runtime.NumCgoCall())))) + //v.MapSetField("NumGCs", Must(rtx.NewIntVal(mstat.NumGC))) + + rtx.SetFuncRet(v) + v.Close() +/* + stats.CPUs = runtime.NumCPU() + stats.Goroutines = runtime.NumGoroutine() + stats.NumCgoCalls = runtime.NumCgoCall() + stats.NumGCs = mstat.NumGC + + stats.AllocBytes = mstat.Alloc + stats.TotalAllocBytes = mstat.TotalAlloc + stats.SysBytes = mstat.Sys + stats.Lookups = mstat.Lookups + stats.MemAllocs = mstat.Mallocs + stats.MemFrees = mstat.Frees + + stats.HeapAllocBytes = mstat.HeapAlloc + stats.HeapSysBytes = mstat.HeapSys + stats.HeapIdleBytes = mstat.HeapIdle + stats.HeapInuseBytes = mstat.HeapInuse + stats.HeapReleasedBytes = mstat.HeapReleased + stats.HeapObjects = mstat.HeapObjects + stats.StackInuseBytes = mstat.StackInuse + stats.StackSysBytes = mstat.StackSys + stats.MSpanInuseBytes = mstat.MSpanInuse + stats.MSpanSysBytes = mstat.MSpanSys + stats.MCacheInuseBytes = mstat.MCacheInuse + stats.MCacheSysBytes = mstat.MCacheSys + stats.BuckHashSysBytes = mstat.BuckHashSys + stats.GCSysBytes = mstat.GCSys + stats.OtherSysBytes = mstat.OtherSys +*/ + + return 0 +} + +// ----------------------------------------------------------- + func (hawk *Hawk) get_errmsg() string { return C.GoString(C.hawk_geterrbmsg(hawk.c)) } @@ -879,6 +970,8 @@ func (rtx *Rtx) NewArrVal(init_capa int) (*Val, error) { }) } +// ----------------------------------------------------------- + func (val *Val) Close() { if val.rtx != nil { var rtx *C.hawk_rtx_t @@ -960,7 +1053,7 @@ func (val *Val) ArrayTally() int { return int(v) } -// TODO: function get the first index and last index or the capacity +// TODO: function to get the first index and last index or the capacity // function to traverse? func (val *Val) ArrayField(index int) (*Val, error) { var v *C.hawk_val_t diff --git a/lib/hawk-prv.h b/lib/hawk-prv.h index 1f8034e6..fd3e0374 100644 --- a/lib/hawk-prv.h +++ b/lib/hawk-prv.h @@ -373,7 +373,8 @@ struct hawk_t int haltall; hawk_ecb_t* ecb; - hawk_rbt_t* modtab; + hawk_htb_t* static_mods; /* per-instance static modules */ + hawk_rbt_t* modtab; /* resolved modules for runtime */ }; struct hawk_chain_t diff --git a/lib/hawk.c b/lib/hawk.c index 95ebd5d4..629f96ad 100644 --- a/lib/hawk.c +++ b/lib/hawk.c @@ -223,6 +223,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr hawk->fnc.sys = HAWK_NULL; hawk->fnc.user = hawk_htb_open(hawk_getgem(hawk), HAWK_SIZEOF(hawk), 512, 70, HAWK_SIZEOF(hawk_ooch_t), 1); + hawk->static_mods = hawk_htb_open(hawk_getgem(hawk), HAWK_SIZEOF(hawk), 128, 70, HAWK_SIZEOF(hawk_ooch_t), 1); hawk->modtab = hawk_rbt_open(hawk_getgem(hawk), 0, HAWK_SIZEOF(hawk_ooch_t), 1); if (hawk->tree.funs == HAWK_NULL || @@ -232,6 +233,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr hawk->parse.lcls == HAWK_NULL || hawk->parse.params == HAWK_NULL || hawk->fnc.user == HAWK_NULL || + hawk->static_mods == HAWK_NULL || hawk->modtab == HAWK_NULL) { hawk_seterrnum(hawk, HAWK_NULL, HAWK_ENOMEM); @@ -264,6 +266,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr *(hawk_t**)(hawk->fnc.user + 1) = hawk; hawk_htb_setstyle(hawk->fnc.user, &fncusercbs); + hawk_htb_setstyle(hawk->static_mods, hawk_get_htb_style(HAWK_HTB_STYLE_INLINE_KEY_COPIER)); hawk_rbt_setstyle(hawk->modtab, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); if (hawk_initgbls(hawk) <= -1) goto oops; @@ -271,6 +274,7 @@ int hawk_init (hawk_t* hawk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_pr oops: if (hawk->modtab) hawk_rbt_close(hawk->modtab); + if (hawk->static_mods) hawk_htb_close(hawk->static_mods); if (hawk->fnc.user) hawk_htb_close(hawk->fnc.user); if (hawk->parse.params) hawk_arr_close(hawk->parse.params); if (hawk->parse.lcls) hawk_arr_close(hawk->parse.lcls); @@ -278,9 +282,9 @@ oops: if (hawk->parse.named) hawk_htb_close(hawk->parse.named); if (hawk->parse.funs) hawk_htb_close(hawk->parse.funs); if (hawk->tree.funs) hawk_htb_close(hawk->tree.funs); - fini_token (&hawk->ntok); - fini_token (&hawk->tok); - fini_token (&hawk->ptok); + fini_token(&hawk->ntok); + fini_token(&hawk->tok); + fini_token(&hawk->ptok); if (hawk->log.ptr) hawk_freemem(hawk, hawk->log.ptr); hawk->log.capa = 0; @@ -313,6 +317,7 @@ void hawk_fini (hawk_t* hawk) HAWK_ASSERT (hawk->ecb == (hawk_ecb_t*)hawk); hawk_rbt_close(hawk->modtab); + hawk_htb_close(hawk->static_mods); hawk_htb_close(hawk->fnc.user); hawk_arr_close(hawk->parse.params); @@ -338,7 +343,6 @@ void hawk_fini (hawk_t* hawk) if (hawk->opt.includedirs.ptr) hawk_freemem(hawk, hawk->opt.includedirs.ptr); - for (i = 0; i < HAWK_COUNTOF(hawk->sbuf); i++) { if (hawk->sbuf[i].ptr) @@ -399,7 +403,7 @@ void hawk_clear (hawk_t* hawk) clear_token(&hawk->ntok); clear_token(&hawk->ptok); - /* clear all loaded modules */ + /* clear all loaded modules. keep hawk->static_mods untouched */ hawk_rbt_walk(hawk->modtab, unload_module, hawk); hawk_rbt_clear(hawk->modtab); @@ -659,14 +663,11 @@ hawk_oow_t hawk_fmttobcstr_ (hawk_t* hawk, hawk_bch_t* buf, hawk_oow_t bufsz, co return n; } - int hawk_buildrex (hawk_t* hawk, const hawk_ooch_t* ptn, hawk_oow_t len, hawk_tre_t** code, hawk_tre_t** icode) { return hawk_gem_buildrex(hawk_getgem(hawk), ptn, len, !(hawk->opt.trait & HAWK_REXBOUND), code, icode); } - - /* ------------------------------------------------------------------------ */ int hawk_findmodsymfnc_noseterr (hawk_t* hawk, hawk_mod_fnc_tab_t* fnctab, hawk_oow_t count, const hawk_ooch_t* name, hawk_mod_sym_t* sym) diff --git a/lib/hawk.h b/lib/hawk.h index e91dd857..b36ee9a9 100644 --- a/lib/hawk.h +++ b/lib/hawk.h @@ -1101,6 +1101,13 @@ struct hawk_mod_sym_t /* ------------------------------------------------------------------------ */ +typedef struct hawk_mod_desc_t hawk_mod_desc_t; +struct hawk_mod_desc_t +{ + const hawk_ooch_t* name; + hawk_mod_load_t load; +}; + typedef struct hawk_mod_fnc_tab_t hawk_mod_fnc_tab_t; struct hawk_mod_fnc_tab_t { @@ -2053,6 +2060,24 @@ HAWK_EXPORT void hawk_clrfnc ( hawk_t* hawk /**< hawk */ ); +HAWK_EXPORT int hawk_addstaticmodwithbcstr ( + hawk_t* hawk, + const hawk_bch_t* name, + hawk_mod_load_t load +); + +HAWK_EXPORT int hawk_addstaticmodwithucstr ( + hawk_t* hawk, + const hawk_uch_t* name, + hawk_mod_load_t load +); + +#if defined(HAWK_OOCH_IS_BCH) +# define hawk_addstaticmod hawk_addstaticmodwithbcstr +#else +# define hawk_addstaticmod hawk_addstaticmodwithucstr +#endif + /** * The hawk_parse() function parses a source script, and optionally * deparses it back. diff --git a/lib/htb.c b/lib/htb.c index 70470738..24f576b9 100644 --- a/lib/htb.c +++ b/lib/htb.c @@ -43,8 +43,8 @@ #define VLEN(p) HAWK_HTB_VLEN(p) #define NEXT(p) HAWK_HTB_NEXT(p) -#define KTOB(htb,len) ((len)*(htb)->scale[HAWK_HTB_KEY]) -#define VTOB(htb,len) ((len)*(htb)->scale[HAWK_HTB_VAL]) +#define KTOB(htb,len) ((len) * (htb)->scale[HAWK_HTB_KEY]) +#define VTOB(htb,len) ((len) * (htb)->scale[HAWK_HTB_VAL]) HAWK_INLINE pair_t* hawk_htb_allocpair (hawk_htb_t* htb, void* kptr, hawk_oow_t klen, void* vptr, hawk_oow_t vlen) { @@ -272,7 +272,7 @@ hawk_htb_t* hawk_htb_open (hawk_gem_t* gem, hawk_oow_t xtnsize, hawk_oow_t capa, void hawk_htb_close (hawk_htb_t* htb) { - hawk_htb_fini (htb); + hawk_htb_fini(htb); hawk_gem_freemem(htb->gem, htb); } @@ -280,14 +280,14 @@ int hawk_htb_init (hawk_htb_t* htb, hawk_gem_t* gem, hawk_oow_t capa, int factor { /* The initial capacity should be greater than 0. * Otherwise, it is adjusted to 1 in the release mode */ - HAWK_ASSERT (capa > 0); + HAWK_ASSERT(capa > 0); /* The load factor should be between 0 and 100 inclusive. * In the release mode, a value out of the range is adjusted to 100 */ - HAWK_ASSERT (factor >= 0 && factor <= 100); + HAWK_ASSERT(factor >= 0 && factor <= 100); - HAWK_ASSERT (kscale >= 0 && kscale <= HAWK_TYPE_MAX(hawk_uint8_t)); - HAWK_ASSERT (vscale >= 0 && vscale <= HAWK_TYPE_MAX(hawk_uint8_t)); + HAWK_ASSERT(kscale >= 0 && kscale <= HAWK_TYPE_MAX(hawk_uint8_t)); + HAWK_ASSERT(vscale >= 0 && vscale <= HAWK_TYPE_MAX(hawk_uint8_t)); /* some initial adjustment */ if (capa <= 0) capa = 1; @@ -329,7 +329,7 @@ const style_t* hawk_htb_getstyle (const hawk_htb_t* htb) void hawk_htb_setstyle (hawk_htb_t* htb, const style_t* style) { - HAWK_ASSERT (style != HAWK_NULL); + HAWK_ASSERT(style != HAWK_NULL); htb->style = style; } @@ -498,7 +498,7 @@ static HAWK_INLINE pair_t* insert (hawk_htb_t* htb, void* kptr, hawk_oow_t klen, } } - HAWK_ASSERT (pair == HAWK_NULL); + HAWK_ASSERT(pair == HAWK_NULL); pair = hawk_htb_allocpair(htb, kptr, klen, vptr, vlen); if (HAWK_UNLIKELY(!pair)) return HAWK_NULL; /* error */ @@ -579,7 +579,7 @@ pair_t* hawk_htb_cbsert (hawk_htb_t* htb, void* kptr, hawk_oow_t klen, cbserter_ } } - HAWK_ASSERT (pair == HAWK_NULL); + HAWK_ASSERT(pair == HAWK_NULL); pair = cbserter(htb, HAWK_NULL, kptr, klen, ctx); if (HAWK_UNLIKELY(!pair)) return HAWK_NULL; /* error */ diff --git a/lib/parse.c b/lib/parse.c index 510bdc6f..f521cc4a 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -665,12 +665,7 @@ hawk_ooch_t* hawk_addsionamewithuchars (hawk_t* hawk, const hawk_uch_t* ptr, haw /* TODO: duplication check? */ -#if defined(HAWK_OOCH_IS_UCH) - link = (hawk_link_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*link) + HAWK_SIZEOF(hawk_uch_t) * (len + 1)); - if (HAWK_UNLIKELY(!link)) return HAWK_NULL; - - hawk_copy_uchars_to_ucstr_unlimited ((hawk_uch_t*)(link + 1), ptr, len); -#else +#if defined(HAWK_OOCH_IS_BCH) hawk_oow_t bcslen, ucslen; ucslen = len; @@ -683,6 +678,10 @@ hawk_ooch_t* hawk_addsionamewithuchars (hawk_t* hawk, const hawk_uch_t* ptr, haw bcslen = bcslen + 1; hawk_convutobchars(hawk, ptr, &ucslen, (hawk_bch_t*)(link + 1), &bcslen); ((hawk_bch_t*)(link + 1))[bcslen] = '\0'; +#else + link = (hawk_link_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*link) + HAWK_SIZEOF(hawk_uch_t) * (len + 1)); + if (HAWK_UNLIKELY(!link)) return HAWK_NULL; + hawk_copy_uchars_to_ucstr_unlimited ((hawk_uch_t*)(link + 1), ptr, len); #endif link->link = hawk->sio_names; @@ -697,7 +696,11 @@ hawk_ooch_t* hawk_addsionamewithbchars (hawk_t* hawk, const hawk_bch_t* ptr, haw /* TODO: duplication check? */ -#if defined(HAWK_OOCH_IS_UCH) +#if defined(HAWK_OOCH_IS_BCH) + link = (hawk_link_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*link) + HAWK_SIZEOF(hawk_bch_t) * (len + 1)); + if (HAWK_UNLIKELY(!link)) return HAWK_NULL; + hawk_copy_bchars_to_bcstr_unlimited ((hawk_bch_t*)(link + 1), ptr, len); +#else hawk_oow_t bcslen, ucslen; bcslen = len; @@ -711,11 +714,6 @@ hawk_ooch_t* hawk_addsionamewithbchars (hawk_t* hawk, const hawk_bch_t* ptr, haw hawk_convbtouchars(hawk, ptr, &bcslen, (hawk_uch_t*)(link + 1), &ucslen, 0); ((hawk_uch_t*)(link + 1))[ucslen] = '\0'; -#else - link = (hawk_link_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*link) + HAWK_SIZEOF(hawk_bch_t) * (len + 1)); - if (HAWK_UNLIKELY(!link)) return HAWK_NULL; - - hawk_copy_bchars_to_bcstr_unlimited ((hawk_bch_t*)(link + 1), ptr, len); #endif link->link = hawk->sio_names; @@ -757,7 +755,7 @@ int hawk_parse (hawk_t* hawk, hawk_sio_cbs_t* sio) hawk_clear(hawk); hawk_clearsionames(hawk); - HAWK_MEMSET (&hawk->sio, 0, HAWK_SIZEOF(hawk->sio)); + HAWK_MEMSET(&hawk->sio, 0, HAWK_SIZEOF(hawk->sio)); hawk->sio.inf = sio->in; hawk->sio.outf = sio->out; hawk->sio.last.c = HAWK_OOCI_EOF; @@ -840,7 +838,7 @@ static int record_ever_included (hawk_t* hawk, hawk_sio_arg_t* arg) hawk->parse.incl_hist.capa = newcapa; } - HAWK_MEMCPY (&hawk->parse.incl_hist.ptr[hawk->parse.incl_hist.count * HAWK_SIZEOF(arg->unique_id)], arg->unique_id, HAWK_SIZEOF(arg->unique_id)); + HAWK_MEMCPY(&hawk->parse.incl_hist.ptr[hawk->parse.incl_hist.count * HAWK_SIZEOF(arg->unique_id)], arg->unique_id, HAWK_SIZEOF(arg->unique_id)); hawk->parse.incl_hist.count++; return 0; } @@ -2267,7 +2265,9 @@ int hawk_delgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) { hawk_oow_t n; hawk_ucs_t ncs; +#if defined(HAWK_OOCH_IS_BCH) hawk_bcs_t mbs; +#endif ncs.ptr = (hawk_uch_t*)name; ncs.len = hawk_count_ucstr(name); @@ -2350,7 +2350,9 @@ int hawk_findgblwithucstr (hawk_t* hawk, const hawk_uch_t* name, int inc_builtin { hawk_oow_t n; hawk_ucs_t ncs; +#if defined(HAWK_OOCH_IS_BCH) hawk_bcs_t mbs; +#endif ncs.ptr = (hawk_uch_t*)name; ncs.len = hawk_count_ucstr(name); @@ -5252,7 +5254,7 @@ static hawk_nde_t* _parse_primary_array_or_map (hawk_t* hawk, const hawk_loc_t* return HAWK_NULL; } - HAWK_MEMSET (&fnc, 0, HAWK_SIZEOF(fnc)); + HAWK_MEMSET(&fnc, 0, HAWK_SIZEOF(fnc)); fnc.name.ptr = full->ptr; fnc.name.len = full->len; fnc.spec = sym.u.fnc_; @@ -6190,7 +6192,7 @@ static hawk_nde_t* parse_primary_ident_segs (hawk_t* hawk, const hawk_loc_t* xlo if (MATCH(hawk,TOK_LPAREN)) { - HAWK_MEMSET (&fnc, 0, HAWK_SIZEOF(fnc)); + HAWK_MEMSET(&fnc, 0, HAWK_SIZEOF(fnc)); fnc.name.ptr = full->ptr; fnc.name.len = full->len; fnc.spec = sym.u.fnc_; @@ -7463,20 +7465,20 @@ retry: else if (hawk_comp_oochars_bcstr(HAWK_OOECS_PTR(tok->name), HAWK_OOECS_LEN(tok->name), "@UCH_ON", 0) == 0) { /* special parser-level word @SCRIPTLINE. subsitute an actual value for it */ - #if defined(HAWK_OOCH_IS_UCH) - if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 1) == (hawk_oow_t)-1)) return -1; - #else + #if defined(HAWK_OOCH_IS_BCH) if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 0) == (hawk_oow_t)-1)) return -1; + #else + if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 1) == (hawk_oow_t)-1)) return -1; #endif SET_TOKEN_TYPE(hawk, tok, TOK_INT); } else if (hawk_comp_oochars_bcstr(HAWK_OOECS_PTR(tok->name), HAWK_OOECS_LEN(tok->name), "@BCH_ON", 0) == 0) { /* special parser-level word @SCRIPTLINE. subsitute an actual value for it */ - #if defined(HAWK_OOCH_IS_UCH) - if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 0) == (hawk_oow_t)-1)) return -1; - #else + #if defined(HAWK_OOCH_IS_BCH) if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 1) == (hawk_oow_t)-1)) return -1; + #else + if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), 0) == (hawk_oow_t)-1)) return -1; #endif SET_TOKEN_TYPE(hawk, tok, TOK_INT); } @@ -7711,7 +7713,7 @@ static int deparse (hawk_t* hawk) HAWK_ASSERT(hawk->sio.outf != HAWK_NULL); - HAWK_MEMSET (&hawk->sio.arg, 0, HAWK_SIZEOF(hawk->sio.arg)); + HAWK_MEMSET(&hawk->sio.arg, 0, HAWK_SIZEOF(hawk->sio.arg)); op = hawk->sio.outf(hawk, HAWK_SIO_CMD_OPEN, &hawk->sio.arg, HAWK_NULL, 0); if (op <= -1) return -1; @@ -8001,6 +8003,10 @@ int hawk_putsrcoochars (hawk_t* hawk, const hawk_ooch_t* str, hawk_oow_t len) #include "../mod/mod-ffi.h" #endif +#if defined(HAWK_ENABLE_MOD_MEMC_STATIC) +#include "../mod/mod-memc.h" +#endif + #if defined(HAWK_ENABLE_MOD_MYSQL_STATIC) #include "../mod/mod-mysql.h" #endif @@ -8013,27 +8019,22 @@ int hawk_putsrcoochars (hawk_t* hawk, const hawk_ooch_t* str, hawk_oow_t len) #include "../mod/mod-uci.h" #endif -#if defined(HAWK_ENABLE_MOD_MEMC_STATIC) -#include "../mod/mod-memc.h" -#endif - /* * if modules are linked statically into the main hawk module, * this table is used to find the entry point of the modules. * you must update this table if you add more modules */ -static struct -{ - hawk_ooch_t* modname; - int (*modload) (hawk_mod_t* mod, hawk_t* hawk); -} static_modtab[] = +static hawk_mod_desc_t static_modtab[] = { #if defined(HAWK_ENABLE_MOD_FFI_STATIC) { HAWK_T("ffi"), hawk_mod_ffi }, #endif { HAWK_T("hawk"), hawk_mod_hawk }, { HAWK_T("math"), hawk_mod_math }, +#if defined(HAWK_ENABLE_MOD_MEMC_STATIC) + { HAWK_T("memc"), hawk_mod_memc }, +#endif #if defined(HAWK_ENABLE_MOD_MYSQL_STATIC) { HAWK_T("mysql"), hawk_mod_mysql }, #endif @@ -8045,9 +8046,6 @@ static struct #if defined(HAWK_ENABLE_MOD_UCI_STATIC) { HAWK_T("uci"), hawk_mod_uci }, #endif -#if defined(HAWK_ENABLE_MOD_MEMC_STATIC) - { HAWK_T("memc"), hawk_mod_memc }, -#endif }; #endif @@ -8080,7 +8078,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse hawk_ooch_t buf[64 + 12]; /* the terminating null isn't needed in buf here */ - HAWK_MEMCPY (buf, HAWK_T("_hawk_mod_"), HAWK_SIZEOF(hawk_ooch_t) * 10); + HAWK_MEMCPY(buf, HAWK_T("_hawk_mod_"), HAWK_SIZEOF(hawk_ooch_t) * 10); if (segs[0].len > HAWK_COUNTOF(buf) - 15) { /* module name too long */ @@ -8094,30 +8092,32 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse /* TODO: binary search ... */ for (n = 0; n < HAWK_COUNTOF(static_modtab); n++) { - if (hawk_comp_oochars_oocstr(segs[0].ptr, segs[0].len, static_modtab[n].modname, 0) == 0) + if (hawk_comp_oochars_oocstr(segs[0].ptr, segs[0].len, static_modtab[n].name, 0) == 0) { - load = static_modtab[n].modload; + load = static_modtab[n].load; break; } } +#endif - /*if (n >= HAWK_COUNTOF(static_modtab)) + if (!load) { - hawk_seterrfmt(hawk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%.*js' not found"), segs[0].len, segs[0].ptr); - return HAWK_NULL; - }*/ + /* check in the user-added static module table */ + hawk_htb_pair_t* pair; + pair = hawk_htb_search(hawk->static_mods, segs[0].ptr, segs[0].len); + if (pair) load = (hawk_mod_load_t)pair->val.ptr; + } if (load) { /* found the module in the staic module table */ - - HAWK_MEMSET (&md, 0, HAWK_SIZEOF(md)); + HAWK_MEMSET(&md, 0, HAWK_SIZEOF(md)); /* Note md.handle is HAWK_NULL for a static module */ /* i copy-insert 'md' into the table before calling 'load'. * to pass the same address to load(), query(), etc */ pair = hawk_rbt_insert(hawk->modtab, segs[0].ptr, segs[0].len, &md, HAWK_SIZEOF(md)); - if (!pair) return HAWK_NULL; + if (HAWK_UNLIKELY(!pair)) return HAWK_NULL; mdp = (hawk_mod_data_t*)HAWK_RBT_VPTR(pair); if (load(&mdp->mod, hawk) <= -1) @@ -8128,9 +8128,10 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse goto done; } -#endif + + /* attempt to find an external module */ - HAWK_MEMSET (&spec, 0, HAWK_SIZEOF(spec)); + HAWK_MEMSET(&spec, 0, HAWK_SIZEOF(spec)); spec.prefix = (hawk->opt.mod[1].len > 0)? (const hawk_ooch_t*)hawk->opt.mod[1].ptr: (const hawk_ooch_t*)HAWK_T(HAWK_DEFAULT_MODPREFIX); spec.postfix = (hawk->opt.mod[2].len > 0)? (const hawk_ooch_t*)hawk->opt.mod[2].ptr: (const hawk_ooch_t*)HAWK_T(HAWK_DEFAULT_MODPOSTFIX); spec.name = segs[0].ptr; /* the caller must ensure that this segment is null-terminated */ @@ -8153,7 +8154,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse colon = hawk_find_oochar_in_oocstr(spec.libdir, LIBDIR_SEPARATOR); if (colon) *colon = '\0'; - HAWK_MEMSET (&md, 0, HAWK_SIZEOF(md)); + HAWK_MEMSET(&md, 0, HAWK_SIZEOF(md)); md.handle = hawk->prm.modopen(hawk, &spec); if (!colon) break; @@ -8232,6 +8233,68 @@ done: return &mdp->mod; } +int hawk_addstaticmodwithbcstr (hawk_t* hawk, const hawk_bch_t* name, hawk_mod_load_t load) +{ + hawk_htb_pair_t* pair; + +#if defined(HAWK_OOCH_IS_BCH) + pair = hawk_htb_insert(hawk->static_mods, (hawk_bch_t*)name, hawk_count_bcstr(name), load, 0); +#else + { + hawk_ucs_t wcs; + wcs.ptr = hawk_dupbtoucstr(hawk, name, &wcs.len, 0); + 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 static module '%hs' - %js"), name, bem); + return -1; + } + pair = hawk_htb_insert(hawk->static_mods, wcs.ptr, wcs.len, load, 0); + hawk_freemem(hawk, wcs.ptr); + } +#endif + if (HAWK_UNLIKELY(!pair)) + { + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); + hawk_seterrfmt(hawk, HAWK_NULL, hawk_geterrnum(hawk), HAWK_T("unable to add static module '%js' - %js"), name, bem); + return -1; + } + + return 0; +} + +int hawk_addstaticmodwithucstr (hawk_t* hawk, const hawk_uch_t* name, hawk_mod_load_t load) +{ + hawk_htb_pair_t* pair; + +#if defined(HAWK_OOCH_IS_BCH) + { + hawk_bcs_t mbs; + mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); + 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 static module '%ls' - %js"), name, bem); + return -1; + } + pair = hawk_htb_insert(hawk->static_mods, mbs.ptr, mbs.len, load, 0); + hawk_freemem(hawk, mbs.ptr); + } +#else + pair = hawk_htb_insert(hawk->static_mods, (hawk_uch_t*)name, hawk_count_ucstr(name), load, 0); +#endif + if (HAWK_UNLIKELY(!pair)) + { + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); + hawk_seterrfmt(hawk, HAWK_NULL, hawk_geterrnum(hawk), HAWK_T("unable to add static module '%js' - %js"), name, bem); + return -1; + } + + return 0; +} + hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_sym_t* sym) { const hawk_ooch_t* dc; @@ -8252,13 +8315,13 @@ hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_ segs[0].len = dc - name; segs[0].ptr = name; tmp = name[segs[0].len]; - name[segs[0].len] = '\0'; + name[segs[0].len] = '\0'; /* name is not const hawk_ooch_t* because it's temporarily modifed ... */ segs[1].len = name_len - segs[0].len - 2; segs[1].ptr = (hawk_ooch_t*)name + segs[0].len + 2; mod = query_module(hawk, segs, 2, sym); - name[segs[0].len] = tmp; + name[segs[0].len] = tmp; /* and restored ... */ return mod; } diff --git a/lib/std.c b/lib/std.c index 962375a3..776e5aa7 100644 --- a/lib/std.c +++ b/lib/std.c @@ -1471,8 +1471,8 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da n = hawk_sio_getoochars(arg->handle, data, size); if (n <= -1) { - const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); const hawk_uch_t* path; + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); path = xtn->s.in.x[xtn->s.in.xindex].u.fileu.path; if (path) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %ls - %js"), path, bem); @@ -1489,8 +1489,8 @@ static hawk_ooi_t sf_in_read (hawk_t* hawk, hawk_sio_arg_t* arg, hawk_ooch_t* da n = hawk_sio_getoochars(arg->handle, data, size); if (n <= -1) { - const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); const hawk_bch_t* path; + const hawk_ooch_t* bem = hawk_backuperrmsg(hawk); path = xtn->s.in.x[xtn->s.in.xindex].u.fileb.path; if (path) hawk_seterrfmt(hawk, HAWK_NULL, HAWK_EREAD, HAWK_T("unable to read %hs - %js"), path, bem); diff --git a/lib/val.c b/lib/val.c index 38a3de6b..49f0f988 100644 --- a/lib/val.c +++ b/lib/val.c @@ -2987,15 +2987,21 @@ hawk_fnc_t* hawk_rtx_valtofnc (hawk_rtx_t* rtx, hawk_val_t* v, hawk_fnc_t* rfnc) hawk_mod_sym_t sym; mod = hawk_querymodulewithname(hawk, x.ptr, &sym); - hawk_rtx_freevaloocstr(rtx, v, x.ptr); - if (!mod) return HAWK_NULL; + if (!mod) + { + hawk_rtx_freevaloocstr(rtx, v, x.ptr); + return HAWK_NULL; + } if (sym.type != HAWK_MOD_FNC || (hawk->opt.trait & sym.u.fnc_.trait) != sym.u.fnc_.trait) { - hawk_rtx_seterrnum(rtx, HAWK_NULL, HAWK_ENOENT); + hawk_rtx_seterrfmt(rtx, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%.*js' not a function or unsupported"), x.len, x.ptr); + hawk_rtx_freevaloocstr(rtx, v, x.ptr); return HAWK_NULL; } + hawk_rtx_freevaloocstr(rtx, v, x.ptr); + HAWK_MEMSET(rfnc, 0, HAWK_SIZEOF(*rfnc)); rfnc->name.ptr = sym.name; rfnc->name.len = hawk_count_oocstr(sym.name); diff --git a/mod/mod-ffi.c b/mod/mod-ffi.c index 1bbed1ec..cf132d3a 100644 --- a/mod/mod-ffi.c +++ b/mod/mod-ffi.c @@ -179,7 +179,7 @@ static HAWK_INLINE rtx_data_t* rtx_to_data (hawk_rtx_t* rtx, const hawk_fnc_info { hawk_rbt_pair_t* pair; pair = hawk_rbt_search((hawk_rbt_t*)fi->mod->ctx, &rtx, HAWK_SIZEOF(rtx)); - HAWK_ASSERT (pair != HAWK_NULL); + HAWK_ASSERT(pair != HAWK_NULL); return (rtx_data_t*)HAWK_RBT_VPTR(pair); } @@ -203,7 +203,7 @@ static ffi_node_t* new_ffi_node (hawk_rtx_t* rtx, ffi_list_t* ffi_list, const ha if (name) { hawk_mod_spec_t spec; - HAWK_MEMSET (&spec, 0, HAWK_SIZEOF(spec)); + HAWK_MEMSET(&spec, 0, HAWK_SIZEOF(spec)); spec.name = name; handle = hawk->prm.modopen(hawk, &spec); } @@ -299,13 +299,13 @@ static ffi_node_t* get_ffi_list_node_with_arg (hawk_rtx_t* rtx, ffi_list_t* ffi_ if (hawk_rtx_valtoint(rtx, arg, &id) <= -1) { *rx = ERRNUM_TO_RC(hawk_rtx_geterrnum(rtx)); - set_errmsg_on_ffi_list (rtx, ffi_list, HAWK_T("illegal handle value")); + set_errmsg_on_ffi_list(rtx, ffi_list, HAWK_T("illegal handle value")); return HAWK_NULL; } else if (!(ffi_node = get_ffi_list_node(ffi_list, id))) { *rx = ERRNUM_TO_RC(HAWK_EINVAL); - set_errmsg_on_ffi_list (rtx, ffi_list, HAWK_T("invalid handle - %zd"), (hawk_oow_t)id); + set_errmsg_on_ffi_list(rtx, ffi_list, HAWK_T("invalid handle - %zd"), (hawk_oow_t)id); return HAWK_NULL; } @@ -331,7 +331,7 @@ static int fnc_open (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) name.ptr = hawk_rtx_getvaloocstr(rtx, a0, &name.len); if (HAWK_UNLIKELY(!name.ptr)) { - ret = copy_error_to_ffi_list (rtx, ffi_list); + ret = copy_error_to_ffi_list(rtx, ffi_list); goto done; } @@ -349,7 +349,7 @@ static int fnc_open (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) ffi_node = new_ffi_node(rtx, ffi_list, name.ptr); if (ffi_node) ret = ffi_node->id; - else ret = copy_error_to_ffi_list (rtx, ffi_list); + else ret = copy_error_to_ffi_list(rtx, ffi_list); done: if (name.ptr) hawk_rtx_freevaloocstr (rtx, a0, name.ptr); @@ -781,7 +781,7 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) fun.ptr = hawk_rtx_getvaloocstr(rtx, a2, &fun.len); if (HAWK_UNLIKELY(!fun.ptr)) { - ret = copy_error_to_ffi_list (rtx, ffi_list); + ret = copy_error_to_ffi_list(rtx, ffi_list); goto done; } @@ -795,7 +795,7 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) sig.ptr = hawk_rtx_getvaloocstr(rtx, a3, &sig.len); if (HAWK_UNLIKELY(!sig.ptr)) { - ret = copy_error_to_ffi_list (rtx, ffi_list); + ret = copy_error_to_ffi_list(rtx, ffi_list); goto done; } @@ -950,12 +950,12 @@ static int init (hawk_mod_t* mod, hawk_rtx_t* rtx) rbt = (hawk_rbt_t*)mod->ctx; - HAWK_MEMSET (&data, 0, HAWK_SIZEOF(data)); + HAWK_MEMSET(&data, 0, HAWK_SIZEOF(data)); pair = hawk_rbt_insert(rbt, &rtx, HAWK_SIZEOF(rtx), &data, HAWK_SIZEOF(data)); if (HAWK_UNLIKELY(!pair)) return -1; datap = (rtx_data_t*)HAWK_RBT_VPTR(pair); - __init_ffi_list (rtx, &datap->ffi_list); + __init_ffi_list(rtx, &datap->ffi_list); return 0; } @@ -975,9 +975,9 @@ static void fini (hawk_mod_t* mod, hawk_rtx_t* rtx) data = (rtx_data_t*)HAWK_RBT_VPTR(pair); - __fini_ffi_list (rtx, &data->ffi_list); + __fini_ffi_list(rtx, &data->ffi_list); - hawk_rbt_delete (rbt, &rtx, HAWK_SIZEOF(rtx)); + hawk_rbt_delete(rbt, &rtx, HAWK_SIZEOF(rtx)); } } @@ -987,7 +987,7 @@ static void unload (hawk_mod_t* mod, hawk_t* hawk) rbt = (hawk_rbt_t*)mod->ctx; - HAWK_ASSERT (HAWK_RBT_SIZE(rbt) == 0); + HAWK_ASSERT(HAWK_RBT_SIZE(rbt) == 0); hawk_rbt_close (rbt); } @@ -1003,7 +1003,7 @@ int hawk_mod_ffi (hawk_mod_t* mod, hawk_t* hawk) rbt = hawk_rbt_open(hawk_getgem(hawk), 0, 1, 1); if (HAWK_UNLIKELY(!rbt)) return -1; - hawk_rbt_setstyle (rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); + hawk_rbt_setstyle(rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); mod->ctx = rbt; return 0; diff --git a/mod/mod-memc.c b/mod/mod-memc.c index f4635cb6..68bfd711 100644 --- a/mod/mod-memc.c +++ b/mod/mod-memc.c @@ -433,7 +433,7 @@ int hawk_mod_memc (hawk_mod_t* mod, hawk_t* hawk) rbt = hawk_rbt_open(hawk_getgem(hawk), 0, 1, 1); if (HAWK_UNLIKELY(!rbt)) return -1; - hawk_rbt_setstyle (rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); + hawk_rbt_setstyle(rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); mod->ctx = rbt; return 0; diff --git a/mod/mod-mysql.c b/mod/mod-mysql.c index 7a602853..1b0a8f07 100644 --- a/mod/mod-mysql.c +++ b/mod/mod-mysql.c @@ -120,8 +120,8 @@ static sql_node_t* new_sql_node (hawk_rtx_t* rtx, sql_list_t* sql_list) sql_node->mysql = mysql_init(HAWK_NULL); if (!sql_node->mysql) { - __free_sql_node (rtx, sql_list, sql_node); - hawk_rtx_seterrfmt (rtx, HAWK_NULL, HAWK_ENOMEM, HAWK_T("unable to allocate a mysql object")); + __free_sql_node(rtx, sql_list, sql_node); + hawk_rtx_seterrfmt(rtx, HAWK_NULL, HAWK_ENOMEM, HAWK_T("unable to allocate a mysql object")); return HAWK_NULL; } @@ -249,7 +249,7 @@ static int fnc_errmsg (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) retv = hawk_rtx_makestrvalwithoocstr(rtx, sql_list->errmsg); if (!retv) return -1; - hawk_rtx_setretval (rtx, retv); + hawk_rtx_setretval(rtx, retv); return 0; } @@ -262,12 +262,12 @@ static sql_node_t* get_sql_list_node_with_arg (hawk_rtx_t* rtx, sql_list_t* sql_ if (hawk_rtx_valtoint(rtx, arg, &id) <= -1) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("illegal instance id")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("illegal instance id")); return HAWK_NULL; } else if (!(sql_node = get_sql_list_node(sql_list, id))) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("invalid instance id - %zd"), (hawk_oow_t)id); + set_error_on_sql_list(rtx, sql_list, HAWK_T("invalid instance id - %zd"), (hawk_oow_t)id); return HAWK_NULL; } @@ -281,12 +281,12 @@ static res_node_t* get_res_list_node_with_arg (hawk_rtx_t* rtx, sql_list_t* sql_ if (hawk_rtx_valtoint(rtx, arg, &id) <= -1) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("illegal result id")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("illegal result id")); return HAWK_NULL; } else if (!(res_node = get_res_list_node(res_list, id))) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("invalid result id - %zd"), (hawk_oow_t)id); + set_error_on_sql_list(rtx, sql_list, HAWK_T("invalid result id - %zd"), (hawk_oow_t)id); return HAWK_NULL; } @@ -300,12 +300,12 @@ static stmt_node_t* get_stmt_list_node_with_arg (hawk_rtx_t* rtx, sql_list_t* sq if (hawk_rtx_valtoint(rtx, arg, &id) <= -1) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("illegal statement id")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("illegal statement id")); return HAWK_NULL; } else if (!(stmt_node = get_stmt_list_node(stmt_list, id))) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("invalid statement id - %zd"), (hawk_oow_t)id); + set_error_on_sql_list(rtx, sql_list, HAWK_T("invalid statement id - %zd"), (hawk_oow_t)id); return HAWK_NULL; } @@ -393,18 +393,18 @@ static int fnc_open (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) sql_node = new_sql_node(rtx, sql_list); if (sql_node) ret = sql_node->id; - else set_error_on_sql_list (rtx, sql_list, HAWK_NULL); + else set_error_on_sql_list(rtx, sql_list, HAWK_NULL); /* ret may not be a statically managed number. * error checking is required */ retv = hawk_rtx_makeintval(rtx, ret); if (retv == HAWK_NULL) { - if (sql_node) free_sql_node (rtx, sql_list, sql_node); + if (sql_node) free_sql_node(rtx, sql_list, sql_node); return -1; } - hawk_rtx_setretval (rtx, retv); + hawk_rtx_setretval(rtx, retv); return 0; } @@ -422,7 +422,7 @@ static int fnc_close (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) ret = 0; } - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -458,7 +458,7 @@ static int fnc_get_option (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) /* unsigned int * */ if (mysql_get_option(sql_node->mysql, id, &v.ui) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_errstr(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_errstr(sql_node->mysql)); goto done; } @@ -488,7 +488,7 @@ static int fnc_get_option (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) /* bool * */ if (mysql_get_option(sql_node->mysql, id, &v.b) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_errstr(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_errstr(sql_node->mysql)); goto done; } @@ -506,7 +506,7 @@ static int fnc_get_option (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) #endif default: - set_error_on_sql_list (rtx, sql_list, HAWK_T("unsupported option id - %zd"), (hawk_oow_t)id); + set_error_on_sql_list(rtx, sql_list, HAWK_T("unsupported option id - %zd"), (hawk_oow_t)id); goto done; } @@ -514,8 +514,8 @@ static int fnc_get_option (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } #endif @@ -581,13 +581,13 @@ static int fnc_set_option (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) #endif default: - set_error_on_sql_list (rtx, sql_list, HAWK_T("unsupported option id - %zd"), (hawk_oow_t)id); + set_error_on_sql_list(rtx, sql_list, HAWK_T("unsupported option id - %zd"), (hawk_oow_t)id); goto done; } if (mysql_options(sql_node->mysql, id, vptr) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -595,8 +595,8 @@ static int fnc_set_option (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -650,7 +650,7 @@ static int fnc_connect (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (!mysql_real_connect(sql_node->mysql, host, user, pass, db, port, usck, 0)) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); sql_node->connect_ever_attempted = 1; /* doesn't matter if mysql_real_connect() failed */ goto done; } @@ -660,14 +660,14 @@ static int fnc_connect (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); if (usck) hawk_rtx_freevalbcstr (rtx, a6, usck); if (db) hawk_rtx_freevalbcstr (rtx, a4, db); if (pass) hawk_rtx_freevalbcstr (rtx, a3, pass); if (user) hawk_rtx_freevalbcstr (rtx, a2, user); if (host) hawk_rtx_freevalbcstr (rtx, a1, host); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -675,7 +675,7 @@ done: do { \ if (!(sql_node)->connect_ever_attempted) \ { \ - set_error_on_sql_list (rtx, sql_list, HAWK_T("not connected")); \ + set_error_on_sql_list(rtx, sql_list, HAWK_T("not connected")); \ goto done; \ } \ } while(0) @@ -694,7 +694,7 @@ static int fnc_ping (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_ping(sql_node->mysql) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -702,8 +702,8 @@ static int fnc_ping (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -727,7 +727,7 @@ static int fnc_select_db (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_select_db(sql_node->mysql, db) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -735,9 +735,9 @@ static int fnc_select_db (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); if (db) hawk_rtx_freevalbcstr (rtx, a1, db); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -760,7 +760,7 @@ static int fnc_autocommit (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_autocommit(sql_node->mysql, v) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -768,8 +768,8 @@ static int fnc_autocommit (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -787,7 +787,7 @@ static int fnc_commit (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_commit(sql_node->mysql) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -795,8 +795,8 @@ static int fnc_commit (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -814,7 +814,7 @@ static int fnc_rollback (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_rollback(sql_node->mysql) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -822,8 +822,8 @@ static int fnc_rollback (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -846,7 +846,7 @@ static int fnc_affected_rows (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) nrows = mysql_affected_rows(sql_node->mysql); if (nrows == (my_ulonglong)-1) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -857,9 +857,9 @@ static int fnc_affected_rows (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - hawk_rtx_refupval (rtx, vrows); + hawk_rtx_refupval(rtx, vrows); n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 1), vrows); - hawk_rtx_refdownval (rtx, vrows); + hawk_rtx_refdownval(rtx, vrows); if (n <= -1) { take_rtx_err = 1; @@ -870,8 +870,8 @@ static int fnc_affected_rows (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -894,7 +894,7 @@ static int fnc_insert_id (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) nrows = mysql_insert_id(sql_node->mysql); if (nrows == (my_ulonglong)-1) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -905,9 +905,9 @@ static int fnc_insert_id (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - hawk_rtx_refupval (rtx, vrows); + hawk_rtx_refupval(rtx, vrows); n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 1), vrows); - hawk_rtx_refdownval (rtx, vrows); + hawk_rtx_refdownval(rtx, vrows); if (n <= -1) { take_rtx_err = 1; @@ -918,8 +918,8 @@ static int fnc_insert_id (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -958,9 +958,9 @@ static int fnc_escape_string (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - hawk_rtx_refupval (rtx, retv); + hawk_rtx_refupval(rtx, retv); n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 2), retv); - hawk_rtx_refdownval (rtx, retv); + hawk_rtx_refdownval(rtx, retv); if (n <= -1) { take_rtx_err = 1; @@ -971,10 +971,10 @@ static int fnc_escape_string (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); if (ebuf) hawk_rtx_freemem (rtx, ebuf); if (qstr) hawk_rtx_freevalbcstr (rtx, a1, qstr); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1001,7 +1001,7 @@ static int fnc_query (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_real_query(sql_node->mysql, qstr, qlen) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -1009,9 +1009,9 @@ static int fnc_query (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); if (qstr) hawk_rtx_freevalbcstr (rtx, a1, qstr); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1037,9 +1037,9 @@ static int fnc_store_result (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (!res) { if (mysql_errno(sql_node->mysql) == 0) - set_error_on_sql_list (rtx, sql_list, HAWK_T("no result")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("no result")); else - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -1055,8 +1055,8 @@ static int fnc_store_result (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1076,7 +1076,7 @@ static int fnc_free_result (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) ret = 0; } - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1113,7 +1113,7 @@ static int fnc_fetch_row (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - hawk_rtx_refupval (rtx, row_map); + hawk_rtx_refupval(rtx, row_map); for (i = 0; i < res_node->num_fields; ) { @@ -1141,9 +1141,9 @@ static int fnc_fetch_row (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) key_len = hawk_int_to_oocstr(i, 10, HAWK_NULL, key_buf, HAWK_COUNTOF(key_buf)); /* TOOD: change this function to hawk_rtx_intxxxxx */ HAWK_ASSERT (key_len != (hawk_oow_t)-1); - hawk_rtx_refupval (rtx, row_val); + hawk_rtx_refupval(rtx, row_val); tmp = hawk_rtx_setmapvalfld(rtx, row_map, key_buf, key_len, row_val); - hawk_rtx_refdownval (rtx, row_val); + hawk_rtx_refdownval(rtx, row_val); if (!tmp) { take_rtx_err = 1; @@ -1153,7 +1153,7 @@ static int fnc_fetch_row (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) x = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 1), row_map); - hawk_rtx_refdownval (rtx, row_map); + hawk_rtx_refdownval(rtx, row_map); row_map = HAWK_NULL; if (x <= -1) @@ -1166,9 +1166,9 @@ static int fnc_fetch_row (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - if (row_map) hawk_rtx_refdownval (rtx, row_map); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + if (row_map) hawk_rtx_refdownval(rtx, row_map); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1197,7 +1197,7 @@ static int fnc_stmt_init (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) stmt = mysql_stmt_init(sql_node->mysql); if (!stmt) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_error(sql_node->mysql)); goto done; } @@ -1213,8 +1213,8 @@ static int fnc_stmt_init (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1282,7 +1282,7 @@ static int fnc_stmt_close (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) ret = 0; } - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1310,7 +1310,7 @@ static int fnc_stmt_prepare (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_stmt_prepare(stmt_node->stmt, qstr, qlen) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); goto done; } @@ -1318,9 +1318,9 @@ static int fnc_stmt_prepare (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); if (qstr) hawk_rtx_freevalbcstr (rtx, a1, qstr); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1346,7 +1346,7 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) param_count = mysql_stmt_param_count(stmt_node->stmt); if (nparams != param_count) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("invalid number of paramaters")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("invalid number of paramaters")); goto done; } @@ -1383,8 +1383,8 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) stmt_node->param_capa = nparams; } - HAWK_MEMSET (stmt_node->param_binds, 0, HAWK_SIZEOF(MYSQL_BIND)* stmt_node->param_capa); - HAWK_MEMSET (stmt_node->param_data, 0, HAWK_SIZEOF(param_data_t)* stmt_node->param_capa); + HAWK_MEMSET(stmt_node->param_binds, 0, HAWK_SIZEOF(MYSQL_BIND)* stmt_node->param_capa); + HAWK_MEMSET(stmt_node->param_data, 0, HAWK_SIZEOF(param_data_t)* stmt_node->param_capa); for (i = 1; i < nargs; i += 2) { @@ -1454,7 +1454,7 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } default: - set_error_on_sql_list (rtx, sql_list, HAWK_T("invalid value type")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("invalid value type")); goto done; } @@ -1462,13 +1462,13 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_stmt_bind_param(stmt_node->stmt, stmt_node->param_binds) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); goto done; } if (mysql_stmt_execute(stmt_node->stmt) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); goto done; } @@ -1518,8 +1518,8 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) stmt_node->res_capa = ncols; } - HAWK_MEMSET (stmt_node->res_binds, 0, HAWK_SIZEOF(MYSQL_BIND)* stmt_node->res_capa); - HAWK_MEMSET (stmt_node->res_data, 0, HAWK_SIZEOF(res_data_t)* stmt_node->res_capa); + HAWK_MEMSET(stmt_node->res_binds, 0, HAWK_SIZEOF(MYSQL_BIND)* stmt_node->res_capa); + HAWK_MEMSET(stmt_node->res_data, 0, HAWK_SIZEOF(res_data_t)* stmt_node->res_capa); for (i = 0; i < ncols; i++) @@ -1579,7 +1579,7 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) if (mysql_stmt_bind_result(stmt_node->stmt, stmt_node->res_binds) != 0) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); + set_error_on_sql_list(rtx, sql_list, HAWK_T("%hs"), mysql_stmt_error(stmt_node->stmt)); goto done; } } @@ -1589,8 +1589,8 @@ static int fnc_stmt_execute (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) done: if (res_meta) mysql_free_result (res_meta); - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1649,7 +1649,7 @@ static int fnc_stmt_fetch (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) default: /* this must not happen */ - set_error_on_sql_list (rtx, sql_list, HAWK_T("internal error - invalid buffer_type %d"), (int)bind->buffer_type); + set_error_on_sql_list(rtx, sql_list, HAWK_T("internal error - invalid buffer_type %d"), (int)bind->buffer_type); goto done; } } @@ -1666,7 +1666,7 @@ static int fnc_stmt_fetch (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) #if (MYSQL_VERSION_ID >= 50000) else if (n == MYSQL_DATA_TRUNCATED) { - set_error_on_sql_list (rtx, sql_list, HAWK_T("data truncated")); + set_error_on_sql_list(rtx, sql_list, HAWK_T("data truncated")); } #endif else @@ -1677,8 +1677,8 @@ static int fnc_stmt_fetch (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1709,9 +1709,9 @@ static int fnc_stmt_affected_rows (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - hawk_rtx_refupval (rtx, vrows); + hawk_rtx_refupval(rtx, vrows); n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 1), vrows); - hawk_rtx_refdownval (rtx, vrows); + hawk_rtx_refdownval(rtx, vrows); if (n <= -1) { take_rtx_err = 1; @@ -1722,8 +1722,8 @@ static int fnc_stmt_affected_rows (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1754,9 +1754,9 @@ static int fnc_stmt_insert_id (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) goto done; } - hawk_rtx_refupval (rtx, vrows); + hawk_rtx_refupval(rtx, vrows); n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 1), vrows); - hawk_rtx_refdownval (rtx, vrows); + hawk_rtx_refdownval(rtx, vrows); if (n <= -1) { take_rtx_err = 1; @@ -1767,8 +1767,8 @@ static int fnc_stmt_insert_id (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi) } done: - if (take_rtx_err) set_error_on_sql_list (rtx, sql_list, HAWK_NULL); - hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, ret)); + if (take_rtx_err) set_error_on_sql_list(rtx, sql_list, HAWK_NULL); + hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, ret)); return 0; } @@ -1840,14 +1840,14 @@ static int init (hawk_mod_t* mod, hawk_rtx_t* rtx) rbt = (hawk_rbt_t*)mod->ctx; - HAWK_MEMSET (&data, 0, HAWK_SIZEOF(data)); + HAWK_MEMSET(&data, 0, HAWK_SIZEOF(data)); pair = hawk_rbt_insert(rbt, &rtx, HAWK_SIZEOF(rtx), &data, HAWK_SIZEOF(data)); if (HAWK_UNLIKELY(!pair)) return -1; datap = (rtx_data_t*)HAWK_RBT_VPTR(pair); - __init_sql_list (rtx, &datap->sql_list); - __init_res_list (rtx, &datap->res_list); - __init_stmt_list (rtx, &datap->stmt_list); + __init_sql_list(rtx, &datap->sql_list); + __init_res_list(rtx, &datap->res_list); + __init_stmt_list(rtx, &datap->stmt_list); return 0; } @@ -1867,11 +1867,11 @@ static void fini (hawk_mod_t* mod, hawk_rtx_t* rtx) data = (rtx_data_t*)HAWK_RBT_VPTR(pair); - __fini_stmt_list (rtx, &data->stmt_list); - __fini_res_list (rtx, &data->res_list); - __fini_sql_list (rtx, &data->sql_list); + __fini_stmt_list(rtx, &data->stmt_list); + __fini_res_list(rtx, &data->res_list); + __fini_sql_list(rtx, &data->sql_list); - hawk_rbt_delete (rbt, &rtx, HAWK_SIZEOF(rtx)); + hawk_rbt_delete(rbt, &rtx, HAWK_SIZEOF(rtx)); } } @@ -1881,8 +1881,8 @@ static void unload (hawk_mod_t* mod, hawk_t* hawk) rbt = (hawk_rbt_t*)mod->ctx; - HAWK_ASSERT (HAWK_RBT_SIZE(rbt) == 0); - hawk_rbt_close (rbt); + HAWK_ASSERT(HAWK_RBT_SIZE(rbt) == 0); + hawk_rbt_close(rbt); /*mysql_library_end ();*/ } @@ -1899,7 +1899,7 @@ int hawk_mod_mysql (hawk_mod_t* mod, hawk_t* hawk) rbt = hawk_rbt_open(hawk_getgem(hawk), 0, 1, 1); if (HAWK_UNLIKELY(!rbt)) return -1; - hawk_rbt_setstyle (rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); + hawk_rbt_setstyle(rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); mod->ctx = rbt; return 0; @@ -1913,5 +1913,5 @@ HAWK_EXPORT int hawk_mod_mysql_init (int argc, char* argv[]) HAWK_EXPORT void hawk_mod_mysql_fini (void) { - mysql_library_end (); + mysql_library_end(); } diff --git a/mod/mod-uci.c b/mod/mod-uci.c index 0f1df270..862e1794 100644 --- a/mod/mod-uci.c +++ b/mod/mod-uci.c @@ -1389,7 +1389,7 @@ int hawk_mod_uci (hawk_mod_t* mod, hawk_t* hawk) rbt = hawk_rbt_open(hawk_getgem(hawk), 0, 1, 1); if (!rbt) return -1; - hawk_rbt_setstyle (rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); + hawk_rbt_setstyle(rbt, hawk_get_rbt_style(HAWK_RBT_STYLE_INLINE_COPIERS)); mod->ctx = rbt; return 0; diff --git a/t/e-001.err b/t/e-001.err index 34486e04..ac8e241d 100644 --- a/t/e-001.err +++ b/t/e-001.err @@ -44,3 +44,9 @@ BEGIN { @{}; @{ "hello", "world } ##ERROR: colon expected in place of ',' } + +--- + +BEGIN { + hawk::call("sys::SIGTERM", 10 20); ##ERROR: 'sys::SIGTERM' not a function or unsupported +}