diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-03-05 10:08:20 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-03-05 10:08:20 +0900 |
commit | afd456999b076e5e6505dd5ca6942a5e7471c70c (patch) | |
tree | 9ee11bda8c1d6ada1938b0324ed01a2d99e99178 /lib | |
parent | 429760a22c7e2ff8a2de69744b04aa4b2f202119 (diff) | |
download | wget-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.am | 20 | ||||
-rw-r--r-- | lib/Makefile.in | 86 | ||||
-rw-r--r-- | lib/c-ctype.h | 20 | ||||
-rw-r--r-- | lib/getgroups.c | 131 | ||||
-rw-r--r-- | lib/glthread/lock.h | 3 | ||||
-rw-r--r-- | lib/group-member.c | 115 | ||||
-rw-r--r-- | lib/spawn.in.h | 4 | ||||
-rw-r--r-- | lib/unicase/special-casing-table.h | 248 | ||||
-rw-r--r-- | lib/unicase/special-casing.h | 3 | ||||
-rw-r--r-- | lib/verify.h | 7 |
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 |