mirror of
https://https.git.savannah.gnu.org/git/diffutils.git
synced 2026-01-27 18:04:32 +00:00
Go back to a single mcel module, instead of trying to break it up into ucore and mcel pieces, as breaking it up hurt performance. Use gnulib-tool’s --local-dir to create diffutils-specific modules for mcel; the idea is that this will eventually migrate into Gnulib. * bootstrap.conf (avoided_gnulib_modules): Add mbuiterf. (gnulib_modules): Add mbscasecmp, mcel-prefer. (gnulib_tool_option_extras): Add --local-dir=gl to pick up new files. * cfg.mk (exclude_file_name_regexp--sc_prohibit_doubled_word): Do not exclude now-removed files lib/ucore.c, lib/ucore.h. * lib/Makefile.am: Adjust to use of modules. (noinst_HEADERS): Remove mcel.h, ucore.h. (libdiffutils_a_SOURCES): Remove mcel.c, mcel-casecmp.c, ucore.c * lib/mcel-casecmp.c, lib/ucore.c, lib/ucore.h: Remove. * lib/mcel.h: Switch to LGPLv2.1+. Do not include ucore.h. All uses of ucore_t changed back to using char32_t. Do what ucore.h used to do: include verify.h, limits.h, stddef.h, uchar.h; require config.h, define _GL_LIKELY, _GL_UNLIKELY. (MCEl_CHAR_MAX, MCEL_ERR_MIN, MCEL_ERR_MAX): New constants. (mcel_t): Switch from single ucore_t c to a char32_t ch and unsigned char err. This has significantly better performance on Fedora 38 x86-64. All uses changed. Check that unsigned char promotes to int. (mcel_ch, mcel_err, mcel_cmp, mcel_tocmp): New functions. (MCEL_ERR_SHIFT): Rename from MCEL_ENCODING_ERROR_SHIFT. All uses changed. (mcel_isbasic): Add a _GL_LIKELY to help compilers. All uses changed. (mcel_scan, mcel_scant): Simplify by using mcel_ch, mcel_err. (mcel_casecmp): Remove decl. Callers changed to use mbscasecmp. * gl/lib/mcel.c, gl/lib/mcel.h: Rename from lib/mcel.c, lib/mcel.h. * gl/lib/mbscasecmp.c: New file. * gl/modules/mcel, gl/modules/mcel-prefer, gl/modules/mcel-tests: * gl/tests/test-mcel.c: New files. * src/io.c: Revert use of ucore API. Use plain c32isspace etc. instead of ucore_is. Use .err instead of ucore_iserr. (same_ch_err): Bring back, and use it instead of ucore_cmp. * src/side.c (print_half_line): Use .err instead of ucore_iserr.