fixed bch mode issues and raised the version to 0.9.9

This commit is contained in:
2025-02-11 17:43:46 +09:00
parent 6a59d3c70b
commit b80ee515b6
11 changed files with 113 additions and 20 deletions

View File

@ -614,8 +614,8 @@ HAWK_EXPORT int hawk_fnmat_bchars_i (
# define hawk_find_oochars_in_oochars hawk_find_bchars_in_bchars
# define hawk_rfind_oochars_in_oochars hawk_rfind_bchars_in_bchars
# define hawk_compact_oochars hawk_compact_uchars
# define hawk_rotate_oochars hawk_rotate_uchars
# define hawk_compact_oochars hawk_compact_bchars
# define hawk_rotate_oochars hawk_rotate_bchars
# define hawk_tokenize_oochars hawk_tokenize_bchars
# define hawk_trim_oochars hawk_trim_bchars
# define hawk_split_oocstr hawk_split_bcstr

View File

@ -204,7 +204,7 @@ static int handle_string_value_char (hawk_json_t* json, hawk_ooci_t c)
hawk_bch_t bcsbuf[HAWK_MBLEN_MAX];
hawk_oow_t n;
n = json->_cmgr->wctomb(json->state_stack->u.sv.acc, bcsbuf, HAWK_COUNTOF(bcsbuf));
n = json->_gem.cmgr->uctobc(json->state_stack->u.sv.acc, bcsbuf, HAWK_COUNTOF(bcsbuf));
if (n == 0 || n > HAWK_COUNTOF(bcsbuf))
{
/* illegal character or buffer to small */

View File

@ -6942,6 +6942,26 @@ retry:
if (HAWK_UNLIKELY(hawk_ooecs_fmt(tok->name, HAWK_T("%zu"), tok->loc.line) == (hawk_oow_t)-1)) return -1;
SET_TOKEN_TYPE (hawk, tok, TOK_INT);
}
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 (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);
}
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 (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
{
type = classify_ident(hawk, HAWK_OOECS_OOCS(tok->name));

View File

@ -1759,7 +1759,7 @@ static hawk_ooi_t sf_out (hawk_t* hawk, hawk_sio_cmd_t cmd, hawk_sio_arg_t* arg,
if (hawk_convbtouchars(hawk, data, &mbslen, HAWK_NULL, &wcslen, 0) <= -1) return -1;
if (wcslen > HAWK_TYPE_MAX(hawk_ooi_t)) wcslen = HAWK_TYPE_MAX(hawk_ooi_t);
orglen = hawk_becs_getlen(xtn->s.out.u.ucs.buf);
orglen = hawk_uecs_getlen(xtn->s.out.u.ucs.buf);
if (hawk_uecs_setlen(xtn->s.out.u.ucs.buf, orglen + wcslen) == (hawk_oow_t)-1) return -1;
mbslen = size;
@ -3070,7 +3070,7 @@ hawk_rtx_t* hawk_rtx_openstdwithbcstr (
#if defined(HAWK_OOCH_IS_UCH)
xocf[i] = hawk_dupbtoucstr(hawk, ocf[i], &wcslen, 0);
#else
xocf[i] = hawk_dupucstr(hawk, ocf[i], HAWK_NULL);
xocf[i] = hawk_dupbcstr(hawk, ocf[i], HAWK_NULL);
#endif
if (!xocf[i]) goto done;
}
@ -3149,7 +3149,7 @@ hawk_rtx_t* hawk_rtx_openstdwithucstr (
for (i = 0; ocf[i]; i++)
{
#if defined(HAWK_OOCH_IS_BCH)
xocf[i] = hawk_dupbtoucstr(hawk, ocf[i], &mbslen, 0);
xocf[i] = hawk_duputobcstr(hawk, ocf[i], &mbslen);
#else
xocf[i] = hawk_dupucstr(hawk, ocf[i], HAWK_NULL);
#endif