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
# 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)>.
#
@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='hawk'
PACKAGE_TARNAME='hawk'
PACKAGE_VERSION='0.9.8'
PACKAGE_STRING='hawk 0.9.8'
PACKAGE_VERSION='0.9.9'
PACKAGE_STRING='hawk 0.9.9'
PACKAGE_BUGREPORT='Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)'
PACKAGE_URL='https://code.miflux.net/hyung-hwan/hawk'
@ -710,6 +710,8 @@ UNWIND_LIBS
FFI_LIBS
LTDL_LIBS
DL_LIBS
ENABLE_WIDE_CHAR_FALSE
ENABLE_WIDE_CHAR_TRUE
LIBM
MACOSX_FALSE
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.
# This message is too long to be a string in the A/UX 3.1 sh.
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]...
@ -1506,7 +1508,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of hawk 0.9.8:";;
short | recursive ) echo "Configuration of hawk 0.9.9:";;
esac
cat <<\_ACEOF
@ -1647,7 +1649,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
hawk configure 0.9.8
hawk configure 0.9.9
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@ -2376,7 +2378,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by hawk $as_me 0.9.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
$ $0$ac_configure_args_raw
@ -3874,7 +3876,7 @@ fi
# Define the identity of the package.
PACKAGE='hawk'
VERSION='0.9.8'
VERSION='0.9.9'
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
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 "checking for char16_t literal... " >&6; }
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.
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 "${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
as_fn_error $? "conditional \"HAVE_LIBUCI\" was never defined.
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
# values after options handling.
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
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
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
hawk config.status 0.9.8
hawk config.status 0.9.9
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"

View File

@ -1,6 +1,6 @@
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_AUX_DIR([ac])
@ -174,6 +174,15 @@ else
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_LINK_IFELSE(
[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_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

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:
{
hawk_uch_t* ptr;
hawk_ooch_t* ptr;
hawk_oow_t 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.
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

View File

@ -87,6 +87,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
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) \
t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT)
subdir = t
@ -590,7 +591,7 @@ CPPFLAGS_COMMON = \
CFLAGS_COMMON =
LDFLAGS_COMMON = -L$(abs_builddir)/../lib -L$(libdir)
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
EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \
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 (("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 (("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();
}