fixed bch mode issues and raised the version to 0.9.9

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

53
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for hawk 0.9.8. # Generated by GNU Autoconf 2.71 for hawk 0.9.9.
# #
# Report bugs to <Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)>. # Report bugs to <Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)>.
# #
@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='hawk' PACKAGE_NAME='hawk'
PACKAGE_TARNAME='hawk' PACKAGE_TARNAME='hawk'
PACKAGE_VERSION='0.9.8' PACKAGE_VERSION='0.9.9'
PACKAGE_STRING='hawk 0.9.8' PACKAGE_STRING='hawk 0.9.9'
PACKAGE_BUGREPORT='Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)' PACKAGE_BUGREPORT='Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)'
PACKAGE_URL='https://code.miflux.net/hyung-hwan/hawk' PACKAGE_URL='https://code.miflux.net/hyung-hwan/hawk'
@ -710,6 +710,8 @@ UNWIND_LIBS
FFI_LIBS FFI_LIBS
LTDL_LIBS LTDL_LIBS
DL_LIBS DL_LIBS
ENABLE_WIDE_CHAR_FALSE
ENABLE_WIDE_CHAR_TRUE
LIBM LIBM
MACOSX_FALSE MACOSX_FALSE
MACOSX_TRUE MACOSX_TRUE
@ -1435,7 +1437,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures hawk 0.9.8 to adapt to many kinds of systems. \`configure' configures hawk 0.9.9 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1506,7 +1508,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of hawk 0.9.8:";; short | recursive ) echo "Configuration of hawk 0.9.9:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1647,7 +1649,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
hawk configure 0.9.8 hawk configure 0.9.9
generated by GNU Autoconf 2.71 generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc. Copyright (C) 2021 Free Software Foundation, Inc.
@ -2376,7 +2378,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by hawk $as_me 0.9.8, which was It was created by hawk $as_me 0.9.9, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw $ $0$ac_configure_args_raw
@ -3874,7 +3876,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='hawk' PACKAGE='hawk'
VERSION='0.9.8' VERSION='0.9.9'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@ -19791,6 +19793,29 @@ printf "%s\n" "#define HAWK_PREFER_PREFIX_L 1" >>confdefs.h
fi fi
fi fi
case "${enable_wide_char}" in
yes*)
if true; then
ENABLE_WIDE_CHAR_TRUE=
ENABLE_WIDE_CHAR_FALSE='#'
else
ENABLE_WIDE_CHAR_TRUE='#'
ENABLE_WIDE_CHAR_FALSE=
fi
;;
*)
if false; then
ENABLE_WIDE_CHAR_TRUE=
ENABLE_WIDE_CHAR_FALSE='#'
else
ENABLE_WIDE_CHAR_TRUE='#'
ENABLE_WIDE_CHAR_FALSE=
fi
;;
esac
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for char16_t literal" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for char16_t literal" >&5
printf %s "checking for char16_t literal... " >&6; } printf %s "checking for char16_t literal... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@ -26656,6 +26681,14 @@ if test -z "${MACOSX_TRUE}" && test -z "${MACOSX_FALSE}"; then
as_fn_error $? "conditional \"MACOSX\" was never defined. as_fn_error $? "conditional \"MACOSX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi fi
if test -z "${ENABLE_WIDE_CHAR_TRUE}" && test -z "${ENABLE_WIDE_CHAR_FALSE}"; then
as_fn_error $? "conditional \"ENABLE_WIDE_CHAR\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ENABLE_WIDE_CHAR_TRUE}" && test -z "${ENABLE_WIDE_CHAR_FALSE}"; then
as_fn_error $? "conditional \"ENABLE_WIDE_CHAR\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_LIBUCI_TRUE}" && test -z "${HAVE_LIBUCI_FALSE}"; then if test -z "${HAVE_LIBUCI_TRUE}" && test -z "${HAVE_LIBUCI_FALSE}"; then
as_fn_error $? "conditional \"HAVE_LIBUCI\" was never defined. as_fn_error $? "conditional \"HAVE_LIBUCI\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@ -27091,7 +27124,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by hawk $as_me 0.9.8, which was This file was extended by hawk $as_me 0.9.9, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -27160,7 +27193,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped' ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\ ac_cs_version="\\
hawk config.status 0.9.8 hawk config.status 0.9.9
configured by $0, generated by GNU Autoconf 2.71, configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@ -1,6 +1,6 @@
dnl AC_PREREQ([2.71]) dnl AC_PREREQ([2.71])
AC_INIT([hawk],[0.9.8],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[https://code.miflux.net/hyung-hwan/hawk]) AC_INIT([hawk],[0.9.9],[Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)],[],[https://code.miflux.net/hyung-hwan/hawk])
AC_CONFIG_HEADERS([lib/hawk-cfg.h]) AC_CONFIG_HEADERS([lib/hawk-cfg.h])
AC_CONFIG_AUX_DIR([ac]) AC_CONFIG_AUX_DIR([ac])
@ -174,6 +174,15 @@ else
fi fi
fi fi
case "${enable_wide_char}" in
yes*)
AM_CONDITIONAL(ENABLE_WIDE_CHAR, true)
;;
*)
AM_CONDITIONAL(ENABLE_WIDE_CHAR, false)
;;
esac
AC_MSG_CHECKING([for char16_t literal]) AC_MSG_CHECKING([for char16_t literal])
AC_LINK_IFELSE( AC_LINK_IFELSE(
[AC_LANG_PROGRAM([], [const void* x = u"ab cd ef gh";])], [AC_LANG_PROGRAM([], [const void* x = u"ab cd ef gh";])],

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_find_oochars_in_oochars hawk_find_bchars_in_bchars
# define hawk_rfind_oochars_in_oochars hawk_rfind_bchars_in_bchars # define hawk_rfind_oochars_in_oochars hawk_rfind_bchars_in_bchars
# define hawk_compact_oochars hawk_compact_uchars # define hawk_compact_oochars hawk_compact_bchars
# define hawk_rotate_oochars hawk_rotate_uchars # define hawk_rotate_oochars hawk_rotate_bchars
# define hawk_tokenize_oochars hawk_tokenize_bchars # define hawk_tokenize_oochars hawk_tokenize_bchars
# define hawk_trim_oochars hawk_trim_bchars # define hawk_trim_oochars hawk_trim_bchars
# define hawk_split_oocstr hawk_split_bcstr # 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_bch_t bcsbuf[HAWK_MBLEN_MAX];
hawk_oow_t n; 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)) if (n == 0 || n > HAWK_COUNTOF(bcsbuf))
{ {
/* illegal character or buffer to small */ /* 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; 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); 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 else
{ {
type = classify_ident(hawk, HAWK_OOECS_OOCS(tok->name)); 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 (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); 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; if (hawk_uecs_setlen(xtn->s.out.u.ucs.buf, orglen + wcslen) == (hawk_oow_t)-1) return -1;
mbslen = size; mbslen = size;
@ -3070,7 +3070,7 @@ hawk_rtx_t* hawk_rtx_openstdwithbcstr (
#if defined(HAWK_OOCH_IS_UCH) #if defined(HAWK_OOCH_IS_UCH)
xocf[i] = hawk_dupbtoucstr(hawk, ocf[i], &wcslen, 0); xocf[i] = hawk_dupbtoucstr(hawk, ocf[i], &wcslen, 0);
#else #else
xocf[i] = hawk_dupucstr(hawk, ocf[i], HAWK_NULL); xocf[i] = hawk_dupbcstr(hawk, ocf[i], HAWK_NULL);
#endif #endif
if (!xocf[i]) goto done; if (!xocf[i]) goto done;
} }
@ -3149,7 +3149,7 @@ hawk_rtx_t* hawk_rtx_openstdwithucstr (
for (i = 0; ocf[i]; i++) for (i = 0; ocf[i]; i++)
{ {
#if defined(HAWK_OOCH_IS_BCH) #if defined(HAWK_OOCH_IS_BCH)
xocf[i] = hawk_dupbtoucstr(hawk, ocf[i], &mbslen, 0); xocf[i] = hawk_duputobcstr(hawk, ocf[i], &mbslen);
#else #else
xocf[i] = hawk_dupucstr(hawk, ocf[i], HAWK_NULL); xocf[i] = hawk_dupucstr(hawk, ocf[i], HAWK_NULL);
#endif #endif

View File

@ -609,7 +609,7 @@ static HAWK_INLINE int add_ffi_arg (hawk_rtx_t* rtx, ffi_list_t* ffi_list, ffi_n
case FMTC_STR: case FMTC_STR:
{ {
hawk_uch_t* ptr; hawk_ooch_t* ptr;
hawk_oow_t len; hawk_oow_t len;
ptr = hawk_rtx_valtooocstrdup(rtx, arg, &len); ptr = hawk_rtx_valtooocstrdup(rtx, arg, &len);

View File

@ -13,7 +13,11 @@ LDFLAGS_COMMON=-L$(abs_builddir)/../lib -L$(libdir)
## for more information. ## for more information.
LIBADD_COMMON = ../lib/libhawk.la $(LIBM) LIBADD_COMMON = ../lib/libhawk.la $(LIBM)
check_SCRIPTS = h-001.hawk h-002.hawk h-003.hawk h-004.hawk h-009.hawk check_SCRIPTS =
if ENABLE_WIDE_CHAR
check_SCRIPTS += h-001.hawk h-002.hawk
endif
check_SCRIPTS += h-003.hawk h-004.hawk h-009.hawk
check_ERRORS = e-001.err check_ERRORS = e-001.err

View File

@ -87,6 +87,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = : POST_UNINSTALL = :
build_triplet = @build@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
@ENABLE_WIDE_CHAR_TRUE@am__append_1 = h-001.hawk h-002.hawk
check_PROGRAMS = t-001$(EXEEXT) t-002$(EXEEXT) t-003$(EXEEXT) \ check_PROGRAMS = t-001$(EXEEXT) t-002$(EXEEXT) t-003$(EXEEXT) \
t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT) t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT)
subdir = t subdir = t
@ -590,7 +591,7 @@ CPPFLAGS_COMMON = \
CFLAGS_COMMON = CFLAGS_COMMON =
LDFLAGS_COMMON = -L$(abs_builddir)/../lib -L$(libdir) LDFLAGS_COMMON = -L$(abs_builddir)/../lib -L$(libdir)
LIBADD_COMMON = ../lib/libhawk.la $(LIBM) LIBADD_COMMON = ../lib/libhawk.la $(LIBM)
check_SCRIPTS = h-001.hawk h-002.hawk h-003.hawk h-004.hawk h-009.hawk check_SCRIPTS = $(am__append_1) h-003.hawk h-004.hawk h-009.hawk
check_ERRORS = e-001.err check_ERRORS = e-001.err
EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \ EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \
journal-toc.hawk journal-toc.in journal-toc.out journal-toc-html.out \ journal-toc.hawk journal-toc.in journal-toc.out journal-toc-html.out \

View File

@ -307,6 +307,7 @@ function main()
tap_ensure ((@b"hawk" %% '⚾') === @b"hawk\xe2\x9a\xbe", 1, @SCRIPTNAME, @SCRIPTLINE); tap_ensure ((@b"hawk" %% '⚾') === @b"hawk\xe2\x9a\xbe", 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (("hawk" %% '⚾') === "hawk⚾", 1, @SCRIPTNAME, @SCRIPTLINE); tap_ensure (("hawk" %% '⚾') === "hawk⚾", 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure ((@b"hawk" %% str::fromcharcode(65)) === @b"hawkA", 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure ((@b"hawk" %% str::fromcharcode(0x26be)) === @b"hawk\xe2\x9a\xbe", 1, @SCRIPTNAME, @SCRIPTLINE); tap_ensure ((@b"hawk" %% str::fromcharcode(0x26be)) === @b"hawk\xe2\x9a\xbe", 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (("hawk" %% str::fromcharcode(0x26be)) === "hawk⚾", 1, @SCRIPTNAME, @SCRIPTLINE); tap_ensure (("hawk" %% str::fromcharcode(0x26be)) === "hawk⚾", 1, @SCRIPTNAME, @SCRIPTLINE);
} }

25
t/t-007.c Normal file
View File

@ -0,0 +1,25 @@
#include <hawk-json.h>
#include <stdio.h>
#include "tap.h"
static int on_json_element (hawk_json_t* json, hawk_json_inst_t inst, const hawk_oocs_t* str)
{
printf ("%d\n", inst);
return 0;
}
int main ()
{
hawk_json_t* json;
hawk_json_prim_t prim;
no_plan();
prim.instcb = on_json_element;
json = hawk_json_openstd(0, &prim, HAWK_NULL);
OK (json != HAWK_NULL, "instantiation must be successful");
hawk_json_close(json);
return exit_status();
}