summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2021-03-05 10:08:20 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2021-03-05 10:08:20 +0900
commitafd456999b076e5e6505dd5ca6942a5e7471c70c (patch)
tree9ee11bda8c1d6ada1938b0324ed01a2d99e99178 /lib
parent429760a22c7e2ff8a2de69744b04aa4b2f202119 (diff)
downloadwget-afd456999b076e5e6505dd5ca6942a5e7471c70c.tar.gz
wget-afd456999b076e5e6505dd5ca6942a5e7471c70c.tar.bz2
wget-afd456999b076e5e6505dd5ca6942a5e7471c70c.zip
Imported Upstream version 1.19.2upstream/1.19.2
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile.am20
-rw-r--r--lib/Makefile.in86
-rw-r--r--lib/c-ctype.h20
-rw-r--r--lib/getgroups.c131
-rw-r--r--lib/glthread/lock.h3
-rw-r--r--lib/group-member.c115
-rw-r--r--lib/spawn.in.h4
-rw-r--r--lib/unicase/special-casing-table.h248
-rw-r--r--lib/unicase/special-casing.h3
-rw-r--r--lib/verify.h7
10 files changed, 460 insertions, 177 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 2557a19..b11e393 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -21,7 +21,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --local-dir=gl --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl accept alloca announce-gen base32 bind c-ctype c-strcase c-strcasestr clock-time close connect crypto/md2 crypto/md4 crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dirname fcntl flock fnmatch fopen ftello futimens getaddrinfo getline getopt-gnu getpass-gnu getpeername getsockname gettext git-version-gen gitlog-to-changelog gnupload hostent iconv iconv-h inet_ntop intprops inttypes ioctl langinfo libunistring-optional limits-h link listen maintainer-makefile mbiter mbtowc memrchr mkdir mkostemp mkstemp nanosleep open pipe-posix posix_spawn quote quotearg recv regex select send setsockopt signal-h sigpipe sigprocmask snprintf socket spawn-pipe stat stdbool stdint strcase strerror_r-posix strpbrk strptime strtok_r strtoll symlink sys_types timegm tmpdir unicase/u8-tolower unistr/u8-strlen unlink unlocked-io update-copyright utimens vasprintf vsnprintf wcwidth write xmemdup0 xstrndup
+# Reproduce by: gnulib-tool --import --local-dir=gl --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl accept alloca announce-gen base32 bind c-ctype c-strcase c-strcasestr clock-time close connect crypto/md2 crypto/md4 crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dirname fcntl flock fnmatch fopen ftello futimens getaddrinfo getline getopt-gnu getpass-gnu getpeername getsockname gettext git-version-gen gitlog-to-changelog gnupload group-member hostent iconv iconv-h inet_ntop intprops inttypes ioctl langinfo libunistring-optional limits-h link listen maintainer-makefile mbiter mbtowc memrchr mkdir mkostemp mkstemp nanosleep open pipe-posix posix_spawn quote quotearg recv regex select send setsockopt signal-h sigpipe sigprocmask snprintf socket spawn-pipe stat stdbool stdint strcase strerror_r-posix strpbrk strptime strtok_r strtoll symlink sys_types timegm tmpdir unicase/u8-tolower unistr/u8-strlen unlink unlocked-io update-copyright utimens vasprintf vsnprintf wcwidth write xmemdup0 xstrndup
AUTOMAKE_OPTIONS = 1.9.6 gnits subdir-objects
@@ -638,6 +638,15 @@ EXTRA_libgnu_a_SOURCES += getdtablesize.c
## end gnulib module getdtablesize
+## begin gnulib module getgroups
+
+
+EXTRA_DIST += getgroups.c
+
+EXTRA_libgnu_a_SOURCES += getgroups.c
+
+## end gnulib module getgroups
+
## begin gnulib module getline
@@ -785,6 +794,15 @@ V_GPERF_0 = @echo " GPERF " $@;
## end gnulib module gperf
+## begin gnulib module group-member
+
+
+EXTRA_DIST += group-member.c
+
+EXTRA_libgnu_a_SOURCES += group-member.c
+
+## end gnulib module group-member
+
## begin gnulib module hard-locale
libgnu_a_SOURCES += hard-locale.c
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 1dd2410..2efa04e 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --local-dir=gl --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl accept alloca announce-gen base32 bind c-ctype c-strcase c-strcasestr clock-time close connect crypto/md2 crypto/md4 crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dirname fcntl flock fnmatch fopen ftello futimens getaddrinfo getline getopt-gnu getpass-gnu getpeername getsockname gettext git-version-gen gitlog-to-changelog gnupload hostent iconv iconv-h inet_ntop intprops inttypes ioctl langinfo libunistring-optional limits-h link listen maintainer-makefile mbiter mbtowc memrchr mkdir mkostemp mkstemp nanosleep open pipe-posix posix_spawn quote quotearg recv regex select send setsockopt signal-h sigpipe sigprocmask snprintf socket spawn-pipe stat stdbool stdint strcase strerror_r-posix strpbrk strptime strtok_r strtoll symlink sys_types timegm tmpdir unicase/u8-tolower unistr/u8-strlen unlink unlocked-io update-copyright utimens vasprintf vsnprintf wcwidth write xmemdup0 xstrndup
+# Reproduce by: gnulib-tool --import --local-dir=gl --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl accept alloca announce-gen base32 bind c-ctype c-strcase c-strcasestr clock-time close connect crypto/md2 crypto/md4 crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dirname fcntl flock fnmatch fopen ftello futimens getaddrinfo getline getopt-gnu getpass-gnu getpeername getsockname gettext git-version-gen gitlog-to-changelog gnupload group-member hostent iconv iconv-h inet_ntop intprops inttypes ioctl langinfo libunistring-optional limits-h link listen maintainer-makefile mbiter mbtowc memrchr mkdir mkostemp mkstemp nanosleep open pipe-posix posix_spawn quote quotearg recv regex select send setsockopt signal-h sigpipe sigprocmask snprintf socket spawn-pipe stat stdbool stdint strcase strerror_r-posix strpbrk strptime strtok_r strtoll symlink sys_types timegm tmpdir unicase/u8-tolower unistr/u8-strlen unlink unlocked-io update-copyright utimens vasprintf vsnprintf wcwidth write xmemdup0 xstrndup
@@ -148,13 +148,14 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/ftell.m4 $(top_srcdir)/m4/ftello.m4 \
$(top_srcdir)/m4/futimens.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
$(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
- $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
- $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/getprogname.m4 \
- $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
- $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpass.m4 \
+ $(top_srcdir)/m4/getprogname.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
$(top_srcdir)/m4/gl-openssl.m4 $(top_srcdir)/m4/glibc21.m4 \
$(top_srcdir)/m4/gnulib-common.m4 \
$(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
$(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hostent.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/iconv_h.m4 \
$(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inet_ntop.m4 \
@@ -777,6 +778,9 @@ GNULIB_WRITE = @GNULIB_WRITE@
GNULIB__EXIT = @GNULIB__EXIT@
GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
GNUTLS_LIBS = @GNUTLS_LIBS@
+GPGME_CFLAGS = @GPGME_CFLAGS@
+GPGME_CONFIG = @GPGME_CONFIG@
+GPGME_LIBS = @GPGME_LIBS@
GREP = @GREP@
HAVE_ACCEPT4 = @HAVE_ACCEPT4@
HAVE_ARPA_INET_H = @HAVE_ARPA_INET_H@
@@ -1482,17 +1486,19 @@ EXTRA_DIST = accept.c w32sock.h alloca.c alloca.in.h \
flock.c fnmatch.c fnmatch.in.h fnmatch_loop.c fopen.c fseek.c \
fseeko.c stdio-impl.h fstat.c ftell.c ftello.c stdio-impl.h \
futimens.c gai_strerror.c getaddrinfo.c getdelim.c \
- getdtablesize.c getline.c getopt.c getopt.in.h getopt1.c \
- getopt_int.h getpass.c getpass.h getpeername.c w32sock.h \
- getsockname.c w32sock.h $(top_srcdir)/build-aux/config.rpath \
- gettimeofday.c $(top_srcdir)/build-aux/git-version-gen \
+ getdtablesize.c getgroups.c getline.c getopt.c getopt.in.h \
+ getopt1.c getopt_int.h getpass.c getpass.h getpeername.c \
+ w32sock.h getsockname.c w32sock.h \
+ $(top_srcdir)/build-aux/config.rpath gettimeofday.c \
+ $(top_srcdir)/build-aux/git-version-gen \
$(top_srcdir)/build-aux/gitlog-to-changelog \
$(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \
- hard-locale.h $(top_srcdir)/build-aux/config.rpath iconv.in.h \
- inet_ntop.c intprops.h inttypes.in.h ioctl.c w32sock.h \
- iswblank.c langinfo.in.h libunistring.valgrind limits.in.h \
- link.c listen.c w32sock.h config.charset ref-add.sin \
- ref-del.sin locale.in.h localeconv.c lseek.c lstat.c \
+ group-member.c hard-locale.h \
+ $(top_srcdir)/build-aux/config.rpath iconv.in.h inet_ntop.c \
+ intprops.h inttypes.in.h ioctl.c w32sock.h iswblank.c \
+ langinfo.in.h libunistring.valgrind limits.in.h link.c \
+ listen.c w32sock.h config.charset ref-add.sin ref-del.sin \
+ locale.in.h localeconv.c lseek.c lstat.c \
$(top_srcdir)/maint.mk malloc.c mbchar.h mbrtowc.c mbsinit.c \
mbsrtowcs-impl.h mbsrtowcs-state.c mbsrtowcs.c mbtowc-impl.h \
mbtowc.c memchr.c memchr.valgrind memrchr.c mkdir.c mkostemp.c \
@@ -1629,26 +1635,27 @@ EXTRA_libgnu_a_SOURCES = accept.c alloca.c bind.c btowc.c close.c \
connect.c stripslash.c dup2.c error.c fcntl.c float.c itold.c \
flock.c fnmatch.c fnmatch_loop.c fopen.c fseek.c fseeko.c \
fstat.c ftell.c ftello.c futimens.c gai_strerror.c \
- getaddrinfo.c getdelim.c getdtablesize.c getline.c getopt.c \
- getopt1.c getpass.c getpeername.c getsockname.c gettimeofday.c \
- inet_ntop.c ioctl.c iswblank.c link.c listen.c localeconv.c \
- lseek.c lstat.c malloc.c mbrtowc.c mbsinit.c mbsrtowcs-state.c \
- mbsrtowcs.c mbtowc.c memchr.c memrchr.c mkdir.c mkostemp.c \
- mkstemp.c mktime.c mktime.c msvc-inval.c msvc-nothrow.c \
- nanosleep.c nl_langinfo.c open.c pipe.c spawn.c spawni.c \
- spawn_faction_addclose.c spawn_faction_adddup2.c \
- spawn_faction_addopen.c spawn_faction_destroy.c \
- spawn_faction_init.c spawnattr_destroy.c spawnattr_init.c \
- spawnattr_setflags.c spawnattr_setsigmask.c spawnp.c raise.c \
- rawmemchr.c recv.c regcomp.c regex.c regex_internal.c \
- regexec.c secure_getenv.c select.c send.c setsockopt.c \
- sigaction.c stdio-write.c sigprocmask.c snprintf.c socket.c \
- stat.c strcasecmp.c strncasecmp.c strchrnul.c strdup.c \
- strerror.c strerror-override.c strerror_r.c strndup.c \
- strnlen.c strpbrk.c strptime.c strtok_r.c strtol.c strtoll.c \
- symlink.c time_r.c timegm.c unlink.c asnprintf.c printf-args.c \
- printf-parse.c vasnprintf.c asprintf.c vasprintf.c vsnprintf.c \
- waitpid.c wcrtomb.c wcwidth.c write.c xmemdup0.c
+ getaddrinfo.c getdelim.c getdtablesize.c getgroups.c getline.c \
+ getopt.c getopt1.c getpass.c getpeername.c getsockname.c \
+ gettimeofday.c group-member.c inet_ntop.c ioctl.c iswblank.c \
+ link.c listen.c localeconv.c lseek.c lstat.c malloc.c \
+ mbrtowc.c mbsinit.c mbsrtowcs-state.c mbsrtowcs.c mbtowc.c \
+ memchr.c memrchr.c mkdir.c mkostemp.c mkstemp.c mktime.c \
+ mktime.c msvc-inval.c msvc-nothrow.c nanosleep.c nl_langinfo.c \
+ open.c pipe.c spawn.c spawni.c spawn_faction_addclose.c \
+ spawn_faction_adddup2.c spawn_faction_addopen.c \
+ spawn_faction_destroy.c spawn_faction_init.c \
+ spawnattr_destroy.c spawnattr_init.c spawnattr_setflags.c \
+ spawnattr_setsigmask.c spawnp.c raise.c rawmemchr.c recv.c \
+ regcomp.c regex.c regex_internal.c regexec.c secure_getenv.c \
+ select.c send.c setsockopt.c sigaction.c stdio-write.c \
+ sigprocmask.c snprintf.c socket.c stat.c strcasecmp.c \
+ strncasecmp.c strchrnul.c strdup.c strerror.c \
+ strerror-override.c strerror_r.c strndup.c strnlen.c strpbrk.c \
+ strptime.c strtok_r.c strtol.c strtoll.c symlink.c time_r.c \
+ timegm.c unlink.c asnprintf.c printf-args.c printf-parse.c \
+ vasnprintf.c asprintf.c vasprintf.c vsnprintf.c waitpid.c \
+ wcrtomb.c wcwidth.c write.c xmemdup0.c
# Use this preprocessor expression to decide whether #include_next works.
# Do not rely on a 'configure'-time test for this, since the expression
@@ -1813,7 +1820,6 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asnprintf.Po@am__quote@
@@ -1858,6 +1864,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getaddrinfo.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdelim.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdtablesize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
@@ -1867,6 +1874,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/group-member.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hard-locale.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet_ntop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@
@@ -2236,7 +2244,7 @@ clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-recursive
- -rm -rf $(DEPDIR) ./$(DEPDIR) glthread/$(DEPDIR) unicase/$(DEPDIR) unictype/$(DEPDIR) uninorm/$(DEPDIR) unistr/$(DEPDIR) uniwidth/$(DEPDIR)
+ -rm -rf ./$(DEPDIR) glthread/$(DEPDIR) unicase/$(DEPDIR) unictype/$(DEPDIR) uninorm/$(DEPDIR) unistr/$(DEPDIR) uniwidth/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-local distclean-tags
@@ -2282,7 +2290,7 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
- -rm -rf $(DEPDIR) ./$(DEPDIR) glthread/$(DEPDIR) unicase/$(DEPDIR) unictype/$(DEPDIR) uninorm/$(DEPDIR) unistr/$(DEPDIR) uniwidth/$(DEPDIR)
+ -rm -rf ./$(DEPDIR) glthread/$(DEPDIR) unicase/$(DEPDIR) unictype/$(DEPDIR) uninorm/$(DEPDIR) unistr/$(DEPDIR) uniwidth/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
diff --git a/lib/c-ctype.h b/lib/c-ctype.h
index faf2158..bcdba6b 100644
--- a/lib/c-ctype.h
+++ b/lib/c-ctype.h
@@ -115,16 +115,16 @@ extern "C" {
/* Cases for lowercase hex letters, and lowercase letters, all offset by N. */
-#define _C_CTYPE_LOWER_A_THRU_F_N(n) \
- case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \
- case 'e' + (n): case 'f' + (n)
-#define _C_CTYPE_LOWER_N(n) \
- _C_CTYPE_LOWER_A_THRU_F_N(n): \
- case 'g' + (n): case 'h' + (n): case 'i' + (n): case 'j' + (n): \
- case 'k' + (n): case 'l' + (n): case 'm' + (n): case 'n' + (n): \
- case 'o' + (n): case 'p' + (n): case 'q' + (n): case 'r' + (n): \
- case 's' + (n): case 't' + (n): case 'u' + (n): case 'v' + (n): \
- case 'w' + (n): case 'x' + (n): case 'y' + (n): case 'z' + (n)
+#define _C_CTYPE_LOWER_A_THRU_F_N(N) \
+ case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \
+ case 'e' + (N): case 'f' + (N)
+#define _C_CTYPE_LOWER_N(N) \
+ _C_CTYPE_LOWER_A_THRU_F_N(N): \
+ case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
+ case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
+ case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
+ case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
+ case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
/* Cases for hex letters, digits, lower, punct, and upper. */
diff --git a/lib/getgroups.c b/lib/getgroups.c
new file mode 100644
index 0000000..dce0f2d
--- /dev/null
+++ b/lib/getgroups.c
@@ -0,0 +1,131 @@
+/* provide consistent interface to getgroups for systems that don't allow N==0
+
+ Copyright (C) 1996, 1999, 2003, 2006-2017 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#if !HAVE_GETGROUPS
+
+/* Provide a stub that fails with ENOSYS, since there is no group
+ information available on mingw. */
+int
+getgroups (int n _GL_UNUSED, GETGROUPS_T *groups _GL_UNUSED)
+{
+ errno = ENOSYS;
+ return -1;
+}
+
+#else /* HAVE_GETGROUPS */
+
+# undef getgroups
+# ifndef GETGROUPS_ZERO_BUG
+# define GETGROUPS_ZERO_BUG 0
+# endif
+
+/* On OS X 10.6 and later, use the usual getgroups, not the one
+ supplied when _DARWIN_C_SOURCE is defined. _DARWIN_C_SOURCE is
+ normally defined, since it means "conform to POSIX, but add
+ non-POSIX extensions even if that violates the POSIX namespace
+ rules", which is what we normally want. But with getgroups there
+ is an inconsistency, and _DARWIN_C_SOURCE means "change getgroups()
+ so that it no longer works right". The BUGS section of compat(5)
+ says that the behavior is dubious if you compile different sections
+ of a program with different _DARWIN_C_SOURCE settings, so fix only
+ the offending symbol. */
+# ifdef __APPLE__
+int posix_getgroups (int, gid_t []) __asm ("_getgroups");
+# define getgroups posix_getgroups
+# endif
+
+/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, NULL) always
+ fails. On other systems, it returns the number of supplemental
+ groups for the process. This function handles that special case
+ and lets the system-provided function handle all others. However,
+ it can fail with ENOMEM if memory is tight. It is unspecified
+ whether the effective group id is included in the list. */
+
+int
+rpl_getgroups (int n, gid_t *group)
+{
+ int n_groups;
+ GETGROUPS_T *gbuf;
+ int saved_errno;
+
+ if (n < 0)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (n != 0 || !GETGROUPS_ZERO_BUG)
+ {
+ int result;
+ if (sizeof *group == sizeof *gbuf)
+ return getgroups (n, (GETGROUPS_T *) group);
+
+ if (SIZE_MAX / sizeof *gbuf <= n)
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+ gbuf = malloc (n * sizeof *gbuf);
+ if (!gbuf)
+ return -1;
+ result = getgroups (n, gbuf);
+ if (0 <= result)
+ {
+ n = result;
+ while (n--)
+ group[n] = gbuf[n];
+ }
+ saved_errno = errno;
+ free (gbuf);
+ errno = saved_errno;
+ return result;
+ }
+
+ n = 20;
+ while (1)
+ {
+ /* No need to worry about address arithmetic overflow here,
+ since the ancient systems that we're running on have low
+ limits on the number of secondary groups. */
+ gbuf = malloc (n * sizeof *gbuf);
+ if (!gbuf)
+ return -1;
+ n_groups = getgroups (n, gbuf);
+ if (n_groups == -1 ? errno != EINVAL : n_groups < n)
+ break;
+ free (gbuf);
+ n *= 2;
+ }
+
+ saved_errno = errno;
+ free (gbuf);
+ errno = saved_errno;
+
+ return n_groups;
+}
+
+#endif /* HAVE_GETGROUPS */
diff --git a/lib/glthread/lock.h b/lib/glthread/lock.h
index 9db95c6..ea7a5b5 100644
--- a/lib/glthread/lock.h
+++ b/lib/glthread/lock.h
@@ -139,6 +139,9 @@ extern int glthread_in_use (void);
# pragma weak pthread_mutexattr_init
# pragma weak pthread_mutexattr_settype
# pragma weak pthread_mutexattr_destroy
+# pragma weak pthread_rwlockattr_init
+# pragma weak pthread_rwlockattr_setkind_np
+# pragma weak pthread_rwlockattr_destroy
# ifndef pthread_self
# pragma weak pthread_self
# endif
diff --git a/lib/group-member.c b/lib/group-member.c
new file mode 100644
index 0000000..20f8ee8
--- /dev/null
+++ b/lib/group-member.c
@@ -0,0 +1,115 @@
+/* group-member.c -- determine whether group id is in calling user's group list
+
+ Copyright (C) 1994, 1997-1998, 2003, 2005-2006, 2009-2017 Free Software
+ Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <stdlib.h>
+
+#include "xalloc-oversized.h"
+
+/* Most processes have no more than this many groups, and for these
+ processes we can avoid using malloc. */
+enum { GROUPBUF_SIZE = 100 };
+
+struct group_info
+ {
+ gid_t *group;
+ gid_t groupbuf[GROUPBUF_SIZE];
+ };
+
+static void
+free_group_info (struct group_info const *g)
+{
+ if (g->group != g->groupbuf)
+ free (g->group);
+}
+
+static int
+get_group_info (struct group_info *gi)
+{
+ int n_groups = getgroups (GROUPBUF_SIZE, gi->groupbuf);
+ gi->group = gi->groupbuf;
+
+ if (n_groups < 0)
+ {
+ int n_group_slots = getgroups (0, NULL);
+ if (0 <= n_group_slots
+ && ! xalloc_oversized (n_group_slots, sizeof *gi->group))
+ {
+ gi->group = malloc (n_group_slots * sizeof *gi->group);
+ if (gi->group)
+ n_groups = getgroups (n_group_slots, gi->group);
+ }
+ }
+
+ /* In case of error, the user loses. */
+ return n_groups;
+}
+
+/* Return non-zero if GID is one that we have in our groups list.
+ Note that the groups list is not guaranteed to contain the current
+ or effective group ID, so they should generally be checked
+ separately. */
+
+int
+group_member (gid_t gid)
+{
+ int i;
+ int found;
+ struct group_info gi;
+ int n_groups = get_group_info (&gi);
+
+ /* Search through the list looking for GID. */
+ found = 0;
+ for (i = 0; i < n_groups; i++)
+ {
+ if (gid == gi.group[i])
+ {
+ found = 1;
+ break;
+ }
+ }
+
+ free_group_info (&gi);
+
+ return found;
+}
+
+#ifdef TEST
+
+int
+main (int argc, char **argv)
+{
+ int i;
+
+ for (i = 1; i < argc; i++)
+ {
+ gid_t gid;
+
+ gid = atoi (argv[i]);
+ printf ("%d: %s\n", gid, group_member (gid) ? "yes" : "no");
+ }
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/spawn.in.h b/lib/spawn.in.h
index e8116f9..b4b9197 100644
--- a/lib/spawn.in.h
+++ b/lib/spawn.in.h
@@ -142,7 +142,8 @@ typedef struct
# endif
#endif
/* A GNU extension. Use the next free bit position. */
-#define POSIX_SPAWN_USEVFORK \
+#ifndef POSIX_SPAWN_USEVFORK
+# define POSIX_SPAWN_USEVFORK \
((POSIX_SPAWN_RESETIDS | (POSIX_SPAWN_RESETIDS - 1) \
| POSIX_SPAWN_SETPGROUP | (POSIX_SPAWN_SETPGROUP - 1) \
| POSIX_SPAWN_SETSIGDEF | (POSIX_SPAWN_SETSIGDEF - 1) \
@@ -152,6 +153,7 @@ typedef struct
| POSIX_SPAWN_SETSCHEDULER \
| (POSIX_SPAWN_SETSCHEDULER > 0 ? POSIX_SPAWN_SETSCHEDULER - 1 : 0)) \
+ 1)
+#endif
#if !GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap
typedef int verify_POSIX_SPAWN_USEVFORK_no_overlap
[(((POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP
diff --git a/lib/unicase/special-casing-table.h b/lib/unicase/special-casing-table.h
index c25bb94..45dc431 100644
--- a/lib/unicase/special-casing-table.h
+++ b/lib/unicase/special-casing-table.h
@@ -1,5 +1,5 @@
/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -m 10 ./unicase/special-casing-table.gperf */
+/* Command-line: gperf -m 10 lib/unicase/special-casing-table.gperf */
/* Computed positions: -k'1-3' */
@@ -60,7 +60,7 @@ __attribute__ ((__gnu_inline__))
#endif
#endif
const struct special_casing_rule *
-gl_unicase_special_lookup (register const char *str, register unsigned int len)
+gl_unicase_special_lookup (const char *str, size_t len)
{
static const unsigned char lengthtable[] =
{
@@ -76,249 +76,249 @@ gl_unicase_special_lookup (register const char *str, register unsigned int len)
};
static const struct special_casing_rule wordlist[] =
{
-#line 126 "./unicase/special-casing-table.gperf"
+#line 126 "lib/unicase/special-casing-table.gperf"
{"\373\001\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0049, 0 }, { 0xFB01, 0, 0 }, { 0x0046, 0x0069, 0 }, { 0x0066, 0x0069, 0 }},
-#line 31 "./unicase/special-casing-table.gperf"
+#line 31 "lib/unicase/special-casing-table.gperf"
{"\001I\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x02BC, 0x004E, 0 }, { 0x0149, 0, 0 }, { 0x02BC, 0x004E, 0 }, { 0x02BC, 0x006E, 0 }},
-#line 125 "./unicase/special-casing-table.gperf"
+#line 125 "lib/unicase/special-casing-table.gperf"
{"\373\000\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0 }, { 0xFB00, 0, 0 }, { 0x0046, 0x0066, 0 }, { 0x0066, 0x0066, 0 }},
-#line 15 "./unicase/special-casing-table.gperf"
+#line 15 "lib/unicase/special-casing-table.gperf"
{"\000I\000", 1, SCC_MORE_ABOVE , { 'l', 't' }, { 0x0049, 0, 0 }, { 0x0069, 0x0307, 0 }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }},
-#line 127 "./unicase/special-casing-table.gperf"
+#line 127 "lib/unicase/special-casing-table.gperf"
{"\373\002\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x004C, 0 }, { 0xFB02, 0, 0 }, { 0x0046, 0x006C, 0 }, { 0x0066, 0x006C, 0 }},
-#line 128 "./unicase/special-casing-table.gperf"
+#line 128 "lib/unicase/special-casing-table.gperf"
{"\373\003\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0x0049 }, { 0xFB03, 0, 0 }, { 0x0046, 0x0066, 0x0069 }, { 0x0066, 0x0066, 0x0069 }},
-#line 28 "./unicase/special-casing-table.gperf"
+#line 28 "lib/unicase/special-casing-table.gperf"
{"\0010\000", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
-#line 16 "./unicase/special-casing-table.gperf"
+#line 16 "lib/unicase/special-casing-table.gperf"
{"\000I\001", 1, -SCC_BEFORE_DOT , { 't', 'r' }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
-#line 17 "./unicase/special-casing-table.gperf"
+#line 17 "lib/unicase/special-casing-table.gperf"
{"\000I\002", 1, -SCC_BEFORE_DOT , { 'a', 'z' }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
-#line 33 "./unicase/special-casing-table.gperf"
+#line 33 "lib/unicase/special-casing-table.gperf"
{"\003\007\000", 1, SCC_AFTER_SOFT_DOTTED, { 'l', 't' }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }},
-#line 29 "./unicase/special-casing-table.gperf"
+#line 29 "lib/unicase/special-casing-table.gperf"
{"\0010\001", 1, SCC_ALWAYS , { 'a', 'z' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
-#line 30 "./unicase/special-casing-table.gperf"
+#line 30 "lib/unicase/special-casing-table.gperf"
{"\0010\002", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0130, 0, 0 }, { 0x0069, 0x0307, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0x0307, 0 }},
-#line 130 "./unicase/special-casing-table.gperf"
+#line 130 "lib/unicase/special-casing-table.gperf"
{"\373\005\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0054, 0 }, { 0xFB05, 0, 0 }, { 0x0053, 0x0074, 0 }, { 0x0073, 0x0074, 0 }},
-#line 34 "./unicase/special-casing-table.gperf"
+#line 34 "lib/unicase/special-casing-table.gperf"
{"\003\007\001", 1, SCC_AFTER_I , { 't', 'r' }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0x0307, 0, 0 }},
-#line 35 "./unicase/special-casing-table.gperf"
+#line 35 "lib/unicase/special-casing-table.gperf"
{"\003\007\002", 0, SCC_AFTER_I , { 'a', 'z' }, { 0x0307, 0, 0 }, { 0, 0, 0 }, { 0x0307, 0, 0 }, { 0x0307, 0, 0 }},
-#line 19 "./unicase/special-casing-table.gperf"
+#line 19 "lib/unicase/special-casing-table.gperf"
{"\000I\004", 0, SCC_ALWAYS , { 'a', 'z' }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
-#line 23 "./unicase/special-casing-table.gperf"
+#line 23 "lib/unicase/special-casing-table.gperf"
{"\000\314\000", 0, SCC_ALWAYS , { 'l', 't' }, { 0x00CC, 0, 0 }, { 0x0069, 0x0307, 0x0300 }, { 0x00CC, 0, 0 }, { 0x00EC, 0, 0 }},
-#line 109 "./unicase/special-casing-table.gperf"
+#line 109 "lib/unicase/special-casing-table.gperf"
{"\037\314\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0399, 0 }, { 0x1FC3, 0, 0 }, { 0x1FCC, 0, 0 }, { 0x03B7, 0x03B9, 0 }},
-#line 85 "./unicase/special-casing-table.gperf"
+#line 85 "lib/unicase/special-casing-table.gperf"
{"\037\243\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6B, 0x0399, 0 }, { 0x1FA3, 0, 0 }, { 0x1FAB, 0, 0 }, { 0x1F63, 0x03B9, 0 }},
-#line 80 "./unicase/special-casing-table.gperf"
+#line 80 "lib/unicase/special-casing-table.gperf"
{"\037\236\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2E, 0x0399, 0 }, { 0x1F96, 0, 0 }, { 0x1F9E, 0, 0 }, { 0x1F26, 0x03B9, 0 }},
-#line 37 "./unicase/special-casing-table.gperf"
+#line 37 "lib/unicase/special-casing-table.gperf"
{"\003\243\000", 0, SCC_FINAL_SIGMA , { '\0', '\0' }, { 0x03A3, 0, 0 }, { 0x03C2, 0, 0 }, { 0x03A3, 0, 0 }, { 0x03C3, 0, 0 }},
-#line 45 "./unicase/special-casing-table.gperf"
+#line 45 "lib/unicase/special-casing-table.gperf"
{"\036\236\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1E9E, 0, 0 }, { 0x00DF, 0, 0 }, { 0x1E9E, 0, 0 }, { 0x0073, 0x0073, 0 }},
-#line 76 "./unicase/special-casing-table.gperf"
+#line 76 "lib/unicase/special-casing-table.gperf"
{"\037\232\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2A, 0x0399, 0 }, { 0x1F92, 0, 0 }, { 0x1F9A, 0, 0 }, { 0x1F22, 0x03B9, 0 }},
-#line 75 "./unicase/special-casing-table.gperf"
+#line 75 "lib/unicase/special-casing-table.gperf"
{"\037\231\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F29, 0x0399, 0 }, { 0x1F91, 0, 0 }, { 0x1F99, 0, 0 }, { 0x1F21, 0x03B9, 0 }},
-#line 44 "./unicase/special-casing-table.gperf"
+#line 44 "lib/unicase/special-casing-table.gperf"
{"\036\232\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0041, 0x02BE, 0 }, { 0x1E9A, 0, 0 }, { 0x0041, 0x02BE, 0 }, { 0x0061, 0x02BE, 0 }},
-#line 43 "./unicase/special-casing-table.gperf"
+#line 43 "lib/unicase/special-casing-table.gperf"
{"\036\231\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0059, 0x030A, 0 }, { 0x1E99, 0, 0 }, { 0x0059, 0x030A, 0 }, { 0x0079, 0x030A, 0 }},
-#line 74 "./unicase/special-casing-table.gperf"
+#line 74 "lib/unicase/special-casing-table.gperf"
{"\037\230\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F28, 0x0399, 0 }, { 0x1F90, 0, 0 }, { 0x1F98, 0, 0 }, { 0x1F20, 0x03B9, 0 }},
-#line 73 "./unicase/special-casing-table.gperf"
+#line 73 "lib/unicase/special-casing-table.gperf"
{"\037\227\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2F, 0x0399, 0 }, { 0x1F97, 0, 0 }, { 0x1F9F, 0, 0 }, { 0x1F27, 0x03B9, 0 }},
-#line 42 "./unicase/special-casing-table.gperf"
+#line 42 "lib/unicase/special-casing-table.gperf"
{"\036\230\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0057, 0x030A, 0 }, { 0x1E98, 0, 0 }, { 0x0057, 0x030A, 0 }, { 0x0077, 0x030A, 0 }},
-#line 41 "./unicase/special-casing-table.gperf"
+#line 41 "lib/unicase/special-casing-table.gperf"
{"\036\227\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0054, 0x0308, 0 }, { 0x1E97, 0, 0 }, { 0x0054, 0x0308, 0 }, { 0x0074, 0x0308, 0 }},
-#line 72 "./unicase/special-casing-table.gperf"
+#line 72 "lib/unicase/special-casing-table.gperf"
{"\037\226\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2E, 0x0399, 0 }, { 0x1F96, 0, 0 }, { 0x1F9E, 0, 0 }, { 0x1F26, 0x03B9, 0 }},
-#line 66 "./unicase/special-casing-table.gperf"
+#line 66 "lib/unicase/special-casing-table.gperf"
{"\037\220\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F28, 0x0399, 0 }, { 0x1F90, 0, 0 }, { 0x1F98, 0, 0 }, { 0x1F20, 0x03B9, 0 }},
-#line 40 "./unicase/special-casing-table.gperf"
+#line 40 "lib/unicase/special-casing-table.gperf"
{"\036\226\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0048, 0x0331, 0 }, { 0x1E96, 0, 0 }, { 0x0048, 0x0331, 0 }, { 0x0068, 0x0331, 0 }},
-#line 36 "./unicase/special-casing-table.gperf"
+#line 36 "lib/unicase/special-casing-table.gperf"
{"\003\220\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0301 }, { 0x0390, 0, 0 }, { 0x0399, 0x0308, 0x0301 }, { 0x03B9, 0x0308, 0x0301 }},
-#line 57 "./unicase/special-casing-table.gperf"
+#line 57 "lib/unicase/special-casing-table.gperf"
{"\037\207\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0F, 0x0399, 0 }, { 0x1F87, 0, 0 }, { 0x1F8F, 0, 0 }, { 0x1F07, 0x03B9, 0 }},
-#line 21 "./unicase/special-casing-table.gperf"
+#line 21 "lib/unicase/special-casing-table.gperf"
{"\000i\000", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
-#line 124 "./unicase/special-casing-table.gperf"
+#line 124 "lib/unicase/special-casing-table.gperf"
{"\037\374\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0399, 0 }, { 0x1FF3, 0, 0 }, { 0x1FFC, 0, 0 }, { 0x03C9, 0x03B9, 0 }},
-#line 129 "./unicase/special-casing-table.gperf"
+#line 129 "lib/unicase/special-casing-table.gperf"
{"\373\004\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0046, 0x0046, 0x004C }, { 0xFB04, 0, 0 }, { 0x0046, 0x0066, 0x006C }, { 0x0066, 0x0066, 0x006C }},
-#line 123 "./unicase/special-casing-table.gperf"
+#line 123 "lib/unicase/special-casing-table.gperf"
{"\037\367\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0342, 0x0399 }, { 0x1FF7, 0, 0 }, { 0x03A9, 0x0342, 0x0345 }, { 0x03C9, 0x0342, 0x03B9 }},
-#line 22 "./unicase/special-casing-table.gperf"
+#line 22 "lib/unicase/special-casing-table.gperf"
{"\000i\001", 0, SCC_ALWAYS , { 'a', 'z' }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }, { 0x0130, 0, 0 }, { 0x0069, 0, 0 }},
-#line 18 "./unicase/special-casing-table.gperf"
+#line 18 "lib/unicase/special-casing-table.gperf"
{"\000I\003", 1, SCC_ALWAYS , { 't', 'r' }, { 0x0049, 0, 0 }, { 0x0069, 0, 0 }, { 0x0049, 0, 0 }, { 0x0131, 0, 0 }},
-#line 122 "./unicase/special-casing-table.gperf"
+#line 122 "lib/unicase/special-casing-table.gperf"
{"\037\366\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0342, 0 }, { 0x1FF6, 0, 0 }, { 0x03A9, 0x0342, 0 }, { 0x03C9, 0x0342, 0 }},
-#line 121 "./unicase/special-casing-table.gperf"
+#line 121 "lib/unicase/special-casing-table.gperf"
{"\037\364\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x038F, 0x0399, 0 }, { 0x1FF4, 0, 0 }, { 0x038F, 0x0345, 0 }, { 0x03CE, 0x03B9, 0 }},
-#line 39 "./unicase/special-casing-table.gperf"
+#line 39 "lib/unicase/special-casing-table.gperf"
{"\005\207\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0535, 0x0552, 0 }, { 0x0587, 0, 0 }, { 0x0535, 0x0582, 0 }, { 0x0565, 0x0582, 0 }},
-#line 120 "./unicase/special-casing-table.gperf"
+#line 120 "lib/unicase/special-casing-table.gperf"
{"\037\363\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A9, 0x0399, 0 }, { 0x1FF3, 0, 0 }, { 0x1FFC, 0, 0 }, { 0x03C9, 0x03B9, 0 }},
-#line 119 "./unicase/special-casing-table.gperf"
+#line 119 "lib/unicase/special-casing-table.gperf"
{"\037\362\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FFA, 0x0399, 0 }, { 0x1FF2, 0, 0 }, { 0x1FFA, 0x0345, 0 }, { 0x1F7C, 0x03B9, 0 }},
-#line 32 "./unicase/special-casing-table.gperf"
+#line 32 "lib/unicase/special-casing-table.gperf"
{"\001\360\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x004A, 0x030C, 0 }, { 0x01F0, 0, 0 }, { 0x004A, 0x030C, 0 }, { 0x006A, 0x030C, 0 }},
-#line 118 "./unicase/special-casing-table.gperf"
+#line 118 "lib/unicase/special-casing-table.gperf"
{"\037\347\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0342 }, { 0x1FE7, 0, 0 }, { 0x03A5, 0x0308, 0x0342 }, { 0x03C5, 0x0308, 0x0342 }},
-#line 117 "./unicase/special-casing-table.gperf"
+#line 117 "lib/unicase/special-casing-table.gperf"
{"\037\346\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0342, 0 }, { 0x1FE6, 0, 0 }, { 0x03A5, 0x0342, 0 }, { 0x03C5, 0x0342, 0 }},
-#line 116 "./unicase/special-casing-table.gperf"
+#line 116 "lib/unicase/special-casing-table.gperf"
{"\037\344\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A1, 0x0313, 0 }, { 0x1FE4, 0, 0 }, { 0x03A1, 0x0313, 0 }, { 0x03C1, 0x0313, 0 }},
-#line 115 "./unicase/special-casing-table.gperf"
+#line 115 "lib/unicase/special-casing-table.gperf"
{"\037\343\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0301 }, { 0x1FE3, 0, 0 }, { 0x03A5, 0x0308, 0x0301 }, { 0x03C5, 0x0308, 0x0301 }},
-#line 114 "./unicase/special-casing-table.gperf"
+#line 114 "lib/unicase/special-casing-table.gperf"
{"\037\342\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0300 }, { 0x1FE2, 0, 0 }, { 0x03A5, 0x0308, 0x0300 }, { 0x03C5, 0x0308, 0x0300 }},
-#line 25 "./unicase/special-casing-table.gperf"
+#line 25 "lib/unicase/special-casing-table.gperf"
{"\000\337\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0053, 0 }, { 0x00DF, 0, 0 }, { 0x0053, 0x0073, 0 }, { 0x0073, 0x0073, 0 }},
-#line 113 "./unicase/special-casing-table.gperf"
+#line 113 "lib/unicase/special-casing-table.gperf"
{"\037\327\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0342 }, { 0x1FD7, 0, 0 }, { 0x0399, 0x0308, 0x0342 }, { 0x03B9, 0x0308, 0x0342 }},
-#line 112 "./unicase/special-casing-table.gperf"
+#line 112 "lib/unicase/special-casing-table.gperf"
{"\037\326\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0342, 0 }, { 0x1FD6, 0, 0 }, { 0x0399, 0x0342, 0 }, { 0x03B9, 0x0342, 0 }},
-#line 111 "./unicase/special-casing-table.gperf"
+#line 111 "lib/unicase/special-casing-table.gperf"
{"\037\323\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0301 }, { 0x1FD3, 0, 0 }, { 0x0399, 0x0308, 0x0301 }, { 0x03B9, 0x0308, 0x0301 }},
-#line 110 "./unicase/special-casing-table.gperf"
+#line 110 "lib/unicase/special-casing-table.gperf"
{"\037\322\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0399, 0x0308, 0x0300 }, { 0x1FD2, 0, 0 }, { 0x0399, 0x0308, 0x0300 }, { 0x03B9, 0x0308, 0x0300 }},
-#line 24 "./unicase/special-casing-table.gperf"
+#line 24 "lib/unicase/special-casing-table.gperf"
{"\000\315\000", 0, SCC_ALWAYS , { 'l', 't' }, { 0x00CD, 0, 0 }, { 0x0069, 0x0307, 0x0301 }, { 0x00CD, 0, 0 }, { 0x00ED, 0, 0 }},
-#line 108 "./unicase/special-casing-table.gperf"
+#line 108 "lib/unicase/special-casing-table.gperf"
{"\037\307\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0342, 0x0399 }, { 0x1FC7, 0, 0 }, { 0x0397, 0x0342, 0x0345 }, { 0x03B7, 0x0342, 0x03B9 }},
-#line 107 "./unicase/special-casing-table.gperf"
+#line 107 "lib/unicase/special-casing-table.gperf"
{"\037\306\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0342, 0 }, { 0x1FC6, 0, 0 }, { 0x0397, 0x0342, 0 }, { 0x03B7, 0x0342, 0 }},
-#line 106 "./unicase/special-casing-table.gperf"
+#line 106 "lib/unicase/special-casing-table.gperf"
{"\037\304\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0389, 0x0399, 0 }, { 0x1FC4, 0, 0 }, { 0x0389, 0x0345, 0 }, { 0x03AE, 0x03B9, 0 }},
-#line 105 "./unicase/special-casing-table.gperf"
+#line 105 "lib/unicase/special-casing-table.gperf"
{"\037\303\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0397, 0x0399, 0 }, { 0x1FC3, 0, 0 }, { 0x1FCC, 0, 0 }, { 0x03B7, 0x03B9, 0 }},
-#line 104 "./unicase/special-casing-table.gperf"
+#line 104 "lib/unicase/special-casing-table.gperf"
{"\037\302\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FCA, 0x0399, 0 }, { 0x1FC2, 0, 0 }, { 0x1FCA, 0x0345, 0 }, { 0x1F74, 0x03B9, 0 }},
-#line 103 "./unicase/special-casing-table.gperf"
+#line 103 "lib/unicase/special-casing-table.gperf"
{"\037\274\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0399, 0 }, { 0x1FB3, 0, 0 }, { 0x1FBC, 0, 0 }, { 0x03B1, 0x03B9, 0 }},
-#line 102 "./unicase/special-casing-table.gperf"
+#line 102 "lib/unicase/special-casing-table.gperf"
{"\037\267\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0342, 0x0399 }, { 0x1FB7, 0, 0 }, { 0x0391, 0x0342, 0x0345 }, { 0x03B1, 0x0342, 0x03B9 }},
-#line 101 "./unicase/special-casing-table.gperf"
+#line 101 "lib/unicase/special-casing-table.gperf"
{"\037\266\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0342, 0 }, { 0x1FB6, 0, 0 }, { 0x0391, 0x0342, 0 }, { 0x03B1, 0x0342, 0 }},
-#line 100 "./unicase/special-casing-table.gperf"
+#line 100 "lib/unicase/special-casing-table.gperf"
{"\037\264\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0386, 0x0399, 0 }, { 0x1FB4, 0, 0 }, { 0x0386, 0x0345, 0 }, { 0x03AC, 0x03B9, 0 }},
-#line 99 "./unicase/special-casing-table.gperf"
+#line 99 "lib/unicase/special-casing-table.gperf"
{"\037\263\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0391, 0x0399, 0 }, { 0x1FB3, 0, 0 }, { 0x1FBC, 0, 0 }, { 0x03B1, 0x03B9, 0 }},
-#line 98 "./unicase/special-casing-table.gperf"
+#line 98 "lib/unicase/special-casing-table.gperf"
{"\037\262\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1FBA, 0x0399, 0 }, { 0x1FB2, 0, 0 }, { 0x1FBA, 0x0345, 0 }, { 0x1F70, 0x03B9, 0 }},
-#line 38 "./unicase/special-casing-table.gperf"
+#line 38 "lib/unicase/special-casing-table.gperf"
{"\003\260\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0308, 0x0301 }, { 0x03B0, 0, 0 }, { 0x03A5, 0x0308, 0x0301 }, { 0x03C5, 0x0308, 0x0301 }},
-#line 97 "./unicase/special-casing-table.gperf"
+#line 97 "lib/unicase/special-casing-table.gperf"
{"\037\257\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6F, 0x0399, 0 }, { 0x1FA7, 0, 0 }, { 0x1FAF, 0, 0 }, { 0x1F67, 0x03B9, 0 }},
-#line 96 "./unicase/special-casing-table.gperf"
+#line 96 "lib/unicase/special-casing-table.gperf"
{"\037\256\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6E, 0x0399, 0 }, { 0x1FA6, 0, 0 }, { 0x1FAE, 0, 0 }, { 0x1F66, 0x03B9, 0 }},
-#line 95 "./unicase/special-casing-table.gperf"
+#line 95 "lib/unicase/special-casing-table.gperf"
{"\037\255\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6D, 0x0399, 0 }, { 0x1FA5, 0, 0 }, { 0x1FAD, 0, 0 }, { 0x1F65, 0x03B9, 0 }},
-#line 94 "./unicase/special-casing-table.gperf"
+#line 94 "lib/unicase/special-casing-table.gperf"
{"\037\254\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6C, 0x0399, 0 }, { 0x1FA4, 0, 0 }, { 0x1FAC, 0, 0 }, { 0x1F64, 0x03B9, 0 }},
-#line 93 "./unicase/special-casing-table.gperf"
+#line 93 "lib/unicase/special-casing-table.gperf"
{"\037\253\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6B, 0x0399, 0 }, { 0x1FA3, 0, 0 }, { 0x1FAB, 0, 0 }, { 0x1F63, 0x03B9, 0 }},
-#line 92 "./unicase/special-casing-table.gperf"
+#line 92 "lib/unicase/special-casing-table.gperf"
{"\037\252\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6A, 0x0399, 0 }, { 0x1FA2, 0, 0 }, { 0x1FAA, 0, 0 }, { 0x1F62, 0x03B9, 0 }},
-#line 91 "./unicase/special-casing-table.gperf"
+#line 91 "lib/unicase/special-casing-table.gperf"
{"\037\251\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F69, 0x0399, 0 }, { 0x1FA1, 0, 0 }, { 0x1FA9, 0, 0 }, { 0x1F61, 0x03B9, 0 }},
-#line 90 "./unicase/special-casing-table.gperf"
+#line 90 "lib/unicase/special-casing-table.gperf"
{"\037\250\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F68, 0x0399, 0 }, { 0x1FA0, 0, 0 }, { 0x1FA8, 0, 0 }, { 0x1F60, 0x03B9, 0 }},
-#line 89 "./unicase/special-casing-table.gperf"
+#line 89 "lib/unicase/special-casing-table.gperf"
{"\037\247\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6F, 0x0399, 0 }, { 0x1FA7, 0, 0 }, { 0x1FAF, 0, 0 }, { 0x1F67, 0x03B9, 0 }},
-#line 88 "./unicase/special-casing-table.gperf"
+#line 88 "lib/unicase/special-casing-table.gperf"
{"\037\246\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6E, 0x0399, 0 }, { 0x1FA6, 0, 0 }, { 0x1FAE, 0, 0 }, { 0x1F66, 0x03B9, 0 }},
-#line 87 "./unicase/special-casing-table.gperf"
+#line 87 "lib/unicase/special-casing-table.gperf"
{"\037\245\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6D, 0x0399, 0 }, { 0x1FA5, 0, 0 }, { 0x1FAD, 0, 0 }, { 0x1F65, 0x03B9, 0 }},
-#line 86 "./unicase/special-casing-table.gperf"
+#line 86 "lib/unicase/special-casing-table.gperf"
{"\037\244\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6C, 0x0399, 0 }, { 0x1FA4, 0, 0 }, { 0x1FAC, 0, 0 }, { 0x1F64, 0x03B9, 0 }},
-#line 84 "./unicase/special-casing-table.gperf"
+#line 84 "lib/unicase/special-casing-table.gperf"
{"\037\242\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F6A, 0x0399, 0 }, { 0x1FA2, 0, 0 }, { 0x1FAA, 0, 0 }, { 0x1F62, 0x03B9, 0 }},
-#line 83 "./unicase/special-casing-table.gperf"
+#line 83 "lib/unicase/special-casing-table.gperf"
{"\037\241\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F69, 0x0399, 0 }, { 0x1FA1, 0, 0 }, { 0x1FA9, 0, 0 }, { 0x1F61, 0x03B9, 0 }},
-#line 82 "./unicase/special-casing-table.gperf"
+#line 82 "lib/unicase/special-casing-table.gperf"
{"\037\240\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F68, 0x0399, 0 }, { 0x1FA0, 0, 0 }, { 0x1FA8, 0, 0 }, { 0x1F60, 0x03B9, 0 }},
-#line 81 "./unicase/special-casing-table.gperf"
+#line 81 "lib/unicase/special-casing-table.gperf"
{"\037\237\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2F, 0x0399, 0 }, { 0x1F97, 0, 0 }, { 0x1F9F, 0, 0 }, { 0x1F27, 0x03B9, 0 }},
-#line 79 "./unicase/special-casing-table.gperf"
+#line 79 "lib/unicase/special-casing-table.gperf"
{"\037\235\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2D, 0x0399, 0 }, { 0x1F95, 0, 0 }, { 0x1F9D, 0, 0 }, { 0x1F25, 0x03B9, 0 }},
-#line 78 "./unicase/special-casing-table.gperf"
+#line 78 "lib/unicase/special-casing-table.gperf"
{"\037\234\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2C, 0x0399, 0 }, { 0x1F94, 0, 0 }, { 0x1F9C, 0, 0 }, { 0x1F24, 0x03B9, 0 }},
-#line 77 "./unicase/special-casing-table.gperf"
+#line 77 "lib/unicase/special-casing-table.gperf"
{"\037\233\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2B, 0x0399, 0 }, { 0x1F93, 0, 0 }, { 0x1F9B, 0, 0 }, { 0x1F23, 0x03B9, 0 }},
-#line 71 "./unicase/special-casing-table.gperf"
+#line 71 "lib/unicase/special-casing-table.gperf"
{"\037\225\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2D, 0x0399, 0 }, { 0x1F95, 0, 0 }, { 0x1F9D, 0, 0 }, { 0x1F25, 0x03B9, 0 }},
-#line 70 "./unicase/special-casing-table.gperf"
+#line 70 "lib/unicase/special-casing-table.gperf"
{"\037\224\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2C, 0x0399, 0 }, { 0x1F94, 0, 0 }, { 0x1F9C, 0, 0 }, { 0x1F24, 0x03B9, 0 }},
-#line 69 "./unicase/special-casing-table.gperf"
+#line 69 "lib/unicase/special-casing-table.gperf"
{"\037\223\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2B, 0x0399, 0 }, { 0x1F93, 0, 0 }, { 0x1F9B, 0, 0 }, { 0x1F23, 0x03B9, 0 }},
-#line 68 "./unicase/special-casing-table.gperf"
+#line 68 "lib/unicase/special-casing-table.gperf"
{"\037\222\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F2A, 0x0399, 0 }, { 0x1F92, 0, 0 }, { 0x1F9A, 0, 0 }, { 0x1F22, 0x03B9, 0 }},
-#line 67 "./unicase/special-casing-table.gperf"
+#line 67 "lib/unicase/special-casing-table.gperf"
{"\037\221\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F29, 0x0399, 0 }, { 0x1F91, 0, 0 }, { 0x1F99, 0, 0 }, { 0x1F21, 0x03B9, 0 }},
-#line 65 "./unicase/special-casing-table.gperf"
+#line 65 "lib/unicase/special-casing-table.gperf"
{"\037\217\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0F, 0x0399, 0 }, { 0x1F87, 0, 0 }, { 0x1F8F, 0, 0 }, { 0x1F07, 0x03B9, 0 }},
-#line 64 "./unicase/special-casing-table.gperf"
+#line 64 "lib/unicase/special-casing-table.gperf"
{"\037\216\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0E, 0x0399, 0 }, { 0x1F86, 0, 0 }, { 0x1F8E, 0, 0 }, { 0x1F06, 0x03B9, 0 }},
-#line 63 "./unicase/special-casing-table.gperf"
+#line 63 "lib/unicase/special-casing-table.gperf"
{"\037\215\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0D, 0x0399, 0 }, { 0x1F85, 0, 0 }, { 0x1F8D, 0, 0 }, { 0x1F05, 0x03B9, 0 }},
-#line 62 "./unicase/special-casing-table.gperf"
+#line 62 "lib/unicase/special-casing-table.gperf"
{"\037\214\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0C, 0x0399, 0 }, { 0x1F84, 0, 0 }, { 0x1F8C, 0, 0 }, { 0x1F04, 0x03B9, 0 }},
-#line 61 "./unicase/special-casing-table.gperf"
+#line 61 "lib/unicase/special-casing-table.gperf"
{"\037\213\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0B, 0x0399, 0 }, { 0x1F83, 0, 0 }, { 0x1F8B, 0, 0 }, { 0x1F03, 0x03B9, 0 }},
-#line 60 "./unicase/special-casing-table.gperf"
+#line 60 "lib/unicase/special-casing-table.gperf"
{"\037\212\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0A, 0x0399, 0 }, { 0x1F82, 0, 0 }, { 0x1F8A, 0, 0 }, { 0x1F02, 0x03B9, 0 }},
-#line 59 "./unicase/special-casing-table.gperf"
+#line 59 "lib/unicase/special-casing-table.gperf"
{"\037\211\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F09, 0x0399, 0 }, { 0x1F81, 0, 0 }, { 0x1F89, 0, 0 }, { 0x1F01, 0x03B9, 0 }},
-#line 58 "./unicase/special-casing-table.gperf"
+#line 58 "lib/unicase/special-casing-table.gperf"
{"\037\210\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F08, 0x0399, 0 }, { 0x1F80, 0, 0 }, { 0x1F88, 0, 0 }, { 0x1F00, 0x03B9, 0 }},
-#line 56 "./unicase/special-casing-table.gperf"
+#line 56 "lib/unicase/special-casing-table.gperf"
{"\037\206\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0E, 0x0399, 0 }, { 0x1F86, 0, 0 }, { 0x1F8E, 0, 0 }, { 0x1F06, 0x03B9, 0 }},
-#line 55 "./unicase/special-casing-table.gperf"
+#line 55 "lib/unicase/special-casing-table.gperf"
{"\037\205\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0D, 0x0399, 0 }, { 0x1F85, 0, 0 }, { 0x1F8D, 0, 0 }, { 0x1F05, 0x03B9, 0 }},
-#line 54 "./unicase/special-casing-table.gperf"
+#line 54 "lib/unicase/special-casing-table.gperf"
{"\037\204\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0C, 0x0399, 0 }, { 0x1F84, 0, 0 }, { 0x1F8C, 0, 0 }, { 0x1F04, 0x03B9, 0 }},
-#line 53 "./unicase/special-casing-table.gperf"
+#line 53 "lib/unicase/special-casing-table.gperf"
{"\037\203\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0B, 0x0399, 0 }, { 0x1F83, 0, 0 }, { 0x1F8B, 0, 0 }, { 0x1F03, 0x03B9, 0 }},
-#line 52 "./unicase/special-casing-table.gperf"
+#line 52 "lib/unicase/special-casing-table.gperf"
{"\037\202\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F0A, 0x0399, 0 }, { 0x1F82, 0, 0 }, { 0x1F8A, 0, 0 }, { 0x1F02, 0x03B9, 0 }},
-#line 51 "./unicase/special-casing-table.gperf"
+#line 51 "lib/unicase/special-casing-table.gperf"
{"\037\201\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F09, 0x0399, 0 }, { 0x1F81, 0, 0 }, { 0x1F89, 0, 0 }, { 0x1F01, 0x03B9, 0 }},
-#line 50 "./unicase/special-casing-table.gperf"
+#line 50 "lib/unicase/special-casing-table.gperf"
{"\037\200\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x1F08, 0x0399, 0 }, { 0x1F80, 0, 0 }, { 0x1F88, 0, 0 }, { 0x1F00, 0x03B9, 0 }},
-#line 49 "./unicase/special-casing-table.gperf"
+#line 49 "lib/unicase/special-casing-table.gperf"
{"\037V\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0342 }, { 0x1F56, 0, 0 }, { 0x03A5, 0x0313, 0x0342 }, { 0x03C5, 0x0313, 0x0342 }},
-#line 48 "./unicase/special-casing-table.gperf"
+#line 48 "lib/unicase/special-casing-table.gperf"
{"\037T\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0301 }, { 0x1F54, 0, 0 }, { 0x03A5, 0x0313, 0x0301 }, { 0x03C5, 0x0313, 0x0301 }},
-#line 47 "./unicase/special-casing-table.gperf"
+#line 47 "lib/unicase/special-casing-table.gperf"
{"\037R\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0x0300 }, { 0x1F52, 0, 0 }, { 0x03A5, 0x0313, 0x0300 }, { 0x03C5, 0x0313, 0x0300 }},
-#line 46 "./unicase/special-casing-table.gperf"
+#line 46 "lib/unicase/special-casing-table.gperf"
{"\037P\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x03A5, 0x0313, 0 }, { 0x1F50, 0, 0 }, { 0x03A5, 0x0313, 0 }, { 0x03C5, 0x0313, 0 }},
-#line 20 "./unicase/special-casing-table.gperf"
+#line 20 "lib/unicase/special-casing-table.gperf"
{"\000J\000", 0, SCC_MORE_ABOVE , { 'l', 't' }, { 0x004A, 0, 0 }, { 0x006A, 0x0307, 0 }, { 0x004A, 0, 0 }, { 0x006A, 0, 0 }},
-#line 27 "./unicase/special-casing-table.gperf"
+#line 27 "lib/unicase/special-casing-table.gperf"
{"\001.\000", 0, SCC_MORE_ABOVE , { 'l', 't' }, { 0x012E, 0, 0 }, { 0x012F, 0x0307, 0 }, { 0x012E, 0, 0 }, { 0x012F, 0, 0 }},
-#line 26 "./unicase/special-casing-table.gperf"
+#line 26 "lib/unicase/special-casing-table.gperf"
{"\001(\000", 0, SCC_ALWAYS , { 'l', 't' }, { 0x0128, 0, 0 }, { 0x0069, 0x0307, 0x0303 }, { 0x0128, 0, 0 }, { 0x0129, 0, 0 }},
-#line 136 "./unicase/special-casing-table.gperf"
+#line 136 "lib/unicase/special-casing-table.gperf"
{"\373\027\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x053D, 0 }, { 0xFB17, 0, 0 }, { 0x0544, 0x056D, 0 }, { 0x0574, 0x056D, 0 }},
-#line 135 "./unicase/special-casing-table.gperf"
+#line 135 "lib/unicase/special-casing-table.gperf"
{"\373\026\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x054E, 0x0546, 0 }, { 0xFB16, 0, 0 }, { 0x054E, 0x0576, 0 }, { 0x057E, 0x0576, 0 }},
-#line 134 "./unicase/special-casing-table.gperf"
+#line 134 "lib/unicase/special-casing-table.gperf"
{"\373\025\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x053B, 0 }, { 0xFB15, 0, 0 }, { 0x0544, 0x056B, 0 }, { 0x0574, 0x056B, 0 }},
-#line 133 "./unicase/special-casing-table.gperf"
+#line 133 "lib/unicase/special-casing-table.gperf"
{"\373\024\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x0535, 0 }, { 0xFB14, 0, 0 }, { 0x0544, 0x0565, 0 }, { 0x0574, 0x0565, 0 }},
-#line 132 "./unicase/special-casing-table.gperf"
+#line 132 "lib/unicase/special-casing-table.gperf"
{"\373\023\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0544, 0x0546, 0 }, { 0xFB13, 0, 0 }, { 0x0544, 0x0576, 0 }, { 0x0574, 0x0576, 0 }},
-#line 131 "./unicase/special-casing-table.gperf"
+#line 131 "lib/unicase/special-casing-table.gperf"
{"\373\006\000", 0, SCC_ALWAYS , { '\0', '\0' }, { 0x0053, 0x0054, 0 }, { 0xFB06, 0, 0 }, { 0x0053, 0x0074, 0 }, { 0x0073, 0x0074, 0 }}
};
diff --git a/lib/unicase/special-casing.h b/lib/unicase/special-casing.h
index 937f20c..1a72acf 100644
--- a/lib/unicase/special-casing.h
+++ b/lib/unicase/special-casing.h
@@ -15,6 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
+#include <stddef.h>
/* A special casing context.
A context is negated through x -> -x. */
@@ -57,4 +58,4 @@ struct special_casing_rule
};
extern const struct special_casing_rule *
- gl_unicase_special_lookup (const char *str, unsigned int len);
+ gl_unicase_special_lookup (const char *str, size_t len);
diff --git a/lib/verify.h b/lib/verify.h
index dcaf7ca..dcba9c8 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -248,7 +248,12 @@ template <int w>
/* Verify requirement R at compile-time, as a declaration without a
trailing ';'. */
-#define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+#ifdef __GNUC__
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+#else
+/* PGI barfs if R is long. Play it safe. */
+# define verify(R) _GL_VERIFY (R, "verify (...)")
+#endif
#ifndef __has_builtin
# define __has_builtin(x) 0