regexp: Fix generation of _unicode_mapping.c.

* configure.ac (AWK_HEX_NUMBER_OPTION): Detect GNU Awk.
* regexp/Makefile.am: Use AWK_HEX_NUMBER_OPTION.
* regexp/parse-unidata.awk: Don't use strtonum.

GnuPG-bug-id: 4915
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2020-04-15 14:10:08 +09:00
parent 6c28d9343e
commit 50b320952e
3 changed files with 15 additions and 4 deletions

View File

@ -633,6 +633,16 @@ AC_ISC_POSIX
AC_SYS_LARGEFILE
# GNU AWK requires -n option to interpret "0xHH" as a number
if $AWK 'BEGIN { if (PROCINFO@<:@"version"@:>@) exit 1 }'; then
AWK_HEX_NUMBER_OPTION=''
AC_MSG_NOTICE([awk with no option for hexadecimal])
else
AWK_HEX_NUMBER_OPTION='-n'
AC_MSG_NOTICE([awk with an option -n for hexadecimal])
fi
AC_SUBST(AWK_HEX_NUMBER_OPTION)
# We need to compile and run a program on the build machine. A
# comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
# the AC archive is broken for autoconf 2.57. Given that there is no

View File

@ -34,5 +34,6 @@ BUILT_SOURCES = _unicode_mapping.c
MAINTAINERCLEANFILES = _unicode_mapping.c
_unicode_mapping.c: parse-unidata.awk UnicodeData.txt
$(AWK) -f $(srcdir)/parse-unidata.awk $(srcdir)/UnicodeData.txt >$@
$(AWK) $(AWK_HEX_NUMBER_OPTION) -f $(srcdir)/parse-unidata.awk \
$(srcdir)/UnicodeData.txt >$@
endif

View File

@ -32,17 +32,17 @@ BEGIN {
}
{
code = strtonum(("0x" $1))
code = int("0x" $1)
name = $2
class = $3
upper = $13
lower = $14
title = $15
if (code <= 0x7f) {
if (code <= 127) {
next
}
if (code > 0xffff) {
if (code > 65535) {
next
}
if ($3 !~ /^L.*/) {