summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2024-03-24 08:54:48 +0100
committerJörg Frings-Fürst <debian@jff.email>2024-03-24 08:54:48 +0100
commit163a663518f33bab48b28431972e580b366b4d49 (patch)
treef518ffabaca4a0b93f0103d617e803792d3b0b43 /tests
parent1b3a8d5ad2ea2f099d514d9dd51ebf926a628076 (diff)
parentdd0000f7e25abe6c28d4329d324fd7fcab54094f (diff)
Merge branch 'release/debian/1.2-1'HEADdebian/1.2-1master
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.gnulib751
-rw-r--r--tests/Makefile.in2879
-rw-r--r--tests/_Noreturn.h7
-rw-r--r--tests/accept.c2
-rw-r--r--tests/arg-nonnull.h2
-rw-r--r--tests/arpa_inet.in.h7
-rw-r--r--tests/atomic-int-gnulib.h3
-rw-r--r--tests/basename-lgpl.c2
-rw-r--r--tests/basename-lgpl.h7
-rw-r--r--tests/binary-io.c2
-rw-r--r--tests/binary-io.h10
-rw-r--r--tests/bind.c2
-rw-r--r--tests/btoc32.c68
-rw-r--r--tests/btowc.c10
-rw-r--r--tests/c++defs.h8
-rw-r--r--tests/c32rtomb.c132
-rw-r--r--tests/c32tob.c70
-rw-r--r--tests/calloc.c2
-rw-r--r--tests/cdefs.h715
-rw-r--r--tests/cloexec.c2
-rw-r--r--tests/cloexec.h2
-rw-r--r--tests/close.c2
-rw-r--r--tests/connect.c2
-rw-r--r--tests/ctype.in.h7
-rw-r--r--tests/dup2.c2
-rw-r--r--tests/error.c7
-rw-r--r--tests/error.h66
-rw-r--r--tests/error.in.h216
-rw-r--r--tests/exitfail.c2
-rw-r--r--tests/exitfail.h2
-rw-r--r--tests/fcntl.c2
-rw-r--r--tests/fcntl.in.h7
-rw-r--r--tests/fd-hook.c2
-rw-r--r--tests/fd-hook.h2
-rw-r--r--tests/fdopen.c2
-rw-r--r--tests/filename.h2
-rw-r--r--tests/fstat.c2
-rw-r--r--tests/ftruncate.c2
-rw-r--r--tests/getcwd-lgpl.c8
-rw-r--r--tests/getdtablesize.c2
-rw-r--r--tests/getpagesize.c2
-rw-r--r--tests/getprogname.c24
-rw-r--r--tests/getprogname.h20
-rw-r--r--tests/gettext.h2
-rw-r--r--tests/gettimeofday.c16
-rw-r--r--tests/glthread/thread.c10
-rw-r--r--tests/glthread/thread.h12
-rw-r--r--tests/glthread/yield.h2
-rw-r--r--tests/ialloc.c2
-rw-r--r--tests/ialloc.h68
-rw-r--r--tests/iconvsupport.c2
-rw-r--r--tests/ignore-value.h2
-rw-r--r--tests/inet_pton.c2
-rw-r--r--tests/infinity.h2
-rw-r--r--tests/init.sh23
-rw-r--r--tests/intprops-internal.h7
-rw-r--r--tests/intprops.h2
-rw-r--r--tests/ioctl.c2
-rw-r--r--tests/isblank.c2
-rw-r--r--tests/libc-config.h204
-rw-r--r--tests/listen.c2
-rw-r--r--tests/locale.c2
-rw-r--r--tests/lstat.c2
-rw-r--r--tests/macros.h2
-rw-r--r--tests/malloc.c2
-rw-r--r--tests/mbtowc-impl.h4
-rw-r--r--tests/mbtowc.c2
-rw-r--r--tests/minus-zero.h2
-rw-r--r--tests/msvc-inval.c2
-rw-r--r--tests/msvc-inval.h7
-rw-r--r--tests/msvc-nothrow.c2
-rw-r--r--tests/msvc-nothrow.h7
-rw-r--r--tests/nan.h38
-rw-r--r--tests/nanosleep.c5
-rw-r--r--tests/nap.h2
-rw-r--r--tests/netinet_in.in.h2
-rw-r--r--tests/open.c8
-rw-r--r--tests/pathmax.h7
-rw-r--r--tests/perror.c2
-rw-r--r--tests/pipe.c2
-rw-r--r--tests/pselect.c14
-rw-r--r--tests/pthread-thread.c2
-rw-r--r--tests/pthread.in.h24
-rw-r--r--tests/pthread_sigmask.c2
-rw-r--r--tests/putenv.c2
-rw-r--r--tests/raise.c2
-rw-r--r--tests/random.c317
-rw-r--r--tests/random_r.c430
-rw-r--r--tests/randomd.c2
-rw-r--r--tests/randoml.c2
-rw-r--r--tests/realloc.c2
-rw-r--r--tests/reallocarray.c2
-rw-r--r--tests/same-inode.c3
-rw-r--r--tests/same-inode.h86
-rw-r--r--tests/sched.in.h14
-rw-r--r--tests/sched_yield.c2
-rw-r--r--tests/select.c9
-rw-r--r--tests/setenv.c8
-rw-r--r--tests/setlocale.c4
-rw-r--r--tests/setsockopt.c2
-rw-r--r--tests/signal.in.h7
-rw-r--r--tests/signature.h2
-rw-r--r--tests/signed-nan.h88
-rw-r--r--tests/signed-snan.h142
-rw-r--r--tests/sigprocmask.c2
-rw-r--r--tests/sleep.c2
-rw-r--r--tests/snan.h276
-rw-r--r--tests/socket.c2
-rw-r--r--tests/sockets.c2
-rw-r--r--tests/sockets.h7
-rw-r--r--tests/stat-time.c2
-rw-r--r--tests/stat-time.h60
-rw-r--r--tests/stat-w32.c2
-rw-r--r--tests/stat-w32.h2
-rw-r--r--tests/stat.c2
-rw-r--r--tests/stdalign.in.h133
-rw-r--r--tests/stdio-read.c2
-rw-r--r--tests/stdio-write.c2
-rw-r--r--tests/stdio.in.h156
-rw-r--r--tests/strerror-override.c2
-rw-r--r--tests/strerror-override.h7
-rw-r--r--tests/strerror.c2
-rw-r--r--tests/strerror_r.c2
-rw-r--r--tests/symlink.c2
-rw-r--r--tests/sys_ioctl.in.h9
-rw-r--r--tests/sys_select.in.h14
-rw-r--r--tests/sys_socket.c4
-rw-r--r--tests/sys_socket.in.h15
-rw-r--r--tests/sys_stat.in.h50
-rw-r--r--tests/sys_time.in.h14
-rw-r--r--tests/sys_uio.in.h2
-rw-r--r--tests/test-accept.c2
-rw-r--r--tests/test-alignasof.c (renamed from tests/test-stdalign.c)5
-rw-r--r--tests/test-alloca-opt.c2
-rw-r--r--tests/test-arpa_inet.c2
-rw-r--r--tests/test-array-mergesort.c2
-rw-r--r--tests/test-assert.c3
-rw-r--r--tests/test-binary-io.c4
-rwxr-xr-xtests/test-binary-io.sh2
-rw-r--r--tests/test-bind.c2
-rwxr-xr-xtests/test-btoc32-1.sh9
-rwxr-xr-xtests/test-btoc32-2.sh (renamed from tests/test-mbrtowc1.sh)2
-rwxr-xr-xtests/test-btoc32-3.sh (renamed from tests/test-mbrtowc2.sh)2
-rw-r--r--tests/test-btoc32.c94
-rwxr-xr-xtests/test-btowc-1.sh9
-rwxr-xr-xtests/test-btowc-2.sh (renamed from tests/test-btowc1.sh)2
-rwxr-xr-xtests/test-btowc-3.sh (renamed from tests/test-btowc2.sh)2
-rw-r--r--tests/test-btowc.c32
-rw-r--r--tests/test-c-ctype.c2
-rw-r--r--tests/test-c-strcasecmp.c2
-rw-r--r--tests/test-c-strncasecmp.c2
-rw-r--r--tests/test-c32isalnum.c261
-rwxr-xr-xtests/test-c32isalnum.sh42
-rw-r--r--tests/test-c32isalpha.c259
-rwxr-xr-xtests/test-c32isalpha.sh42
-rw-r--r--tests/test-c32isblank.c205
-rwxr-xr-xtests/test-c32isblank.sh42
-rw-r--r--tests/test-c32iscntrl.c212
-rwxr-xr-xtests/test-c32iscntrl.sh42
-rw-r--r--tests/test-c32isdigit.c236
-rwxr-xr-xtests/test-c32isdigit.sh42
-rw-r--r--tests/test-c32isgraph.c247
-rwxr-xr-xtests/test-c32isgraph.sh42
-rw-r--r--tests/test-c32islower.c354
-rwxr-xr-xtests/test-c32islower.sh42
-rw-r--r--tests/test-c32isprint.c250
-rwxr-xr-xtests/test-c32isprint.sh42
-rw-r--r--tests/test-c32ispunct.c330
-rwxr-xr-xtests/test-c32ispunct.sh42
-rw-r--r--tests/test-c32isspace.c198
-rwxr-xr-xtests/test-c32isspace.sh42
-rw-r--r--tests/test-c32isupper.c340
-rwxr-xr-xtests/test-c32isupper.sh42
-rw-r--r--tests/test-c32isxdigit.c262
-rwxr-xr-xtests/test-c32isxdigit.sh42
-rwxr-xr-xtests/test-c32rtomb-w32-2.sh4
-rwxr-xr-xtests/test-c32rtomb-w32-3.sh4
-rwxr-xr-xtests/test-c32rtomb-w32-4.sh4
-rwxr-xr-xtests/test-c32rtomb-w32-5.sh4
-rwxr-xr-xtests/test-c32rtomb-w32-6.sh4
-rwxr-xr-xtests/test-c32rtomb-w32-7.sh4
-rwxr-xr-xtests/test-c32rtomb-w32-8.sh4
-rw-r--r--tests/test-c32rtomb-w32.c349
-rw-r--r--tests/test-c32rtomb.c174
-rwxr-xr-xtests/test-c32rtomb.sh42
-rw-r--r--tests/test-c32tolower.c440
-rwxr-xr-xtests/test-c32tolower.sh45
-rw-r--r--tests/test-c32width.c104
-rw-r--r--tests/test-calloc-gnu.c4
-rw-r--r--tests/test-cloexec.c10
-rw-r--r--tests/test-close.c2
-rw-r--r--tests/test-connect.c2
-rw-r--r--tests/test-ctype.c2
-rw-r--r--tests/test-dup2.c16
-rw-r--r--tests/test-environ.c2
-rw-r--r--tests/test-errno.c2
-rw-r--r--tests/test-error.c89
-rwxr-xr-xtests/test-error.sh36
-rw-r--r--tests/test-fcntl-h.c2
-rw-r--r--tests/test-fcntl.c18
-rw-r--r--tests/test-fdopen.c9
-rw-r--r--tests/test-fgetc.c6
-rw-r--r--tests/test-float.c72
-rw-r--r--tests/test-fputc.c6
-rw-r--r--tests/test-fread.c6
-rw-r--r--tests/test-free.c2
-rw-r--r--tests/test-frexp.c2
-rw-r--r--tests/test-frexp.h2
-rw-r--r--tests/test-frexpl.c2
-rw-r--r--tests/test-fseterr.c2
-rw-r--r--tests/test-fstat.c4
-rw-r--r--tests/test-ftruncate.c4
-rw-r--r--tests/test-fwrite.c6
-rw-r--r--tests/test-getcwd-lgpl.c4
-rw-r--r--tests/test-getdtablesize.c9
-rw-r--r--tests/test-getprogname.c5
-rw-r--r--tests/test-gettimeofday.c51
-rw-r--r--tests/test-hard-locale.c20
-rw-r--r--tests/test-iconv-h.c2
-rw-r--r--tests/test-iconv.c2
-rw-r--r--tests/test-ignore-value.c2
-rw-r--r--tests/test-inet_pton.c2
-rwxr-xr-xtests/test-init.sh2
-rw-r--r--tests/test-intprops.c4
-rw-r--r--tests/test-inttypes.c4
-rw-r--r--tests/test-ioctl.c2
-rw-r--r--tests/test-isblank.c4
-rw-r--r--tests/test-isnand-nolibm.c2
-rw-r--r--tests/test-isnand.h22
-rw-r--r--tests/test-isnanf-nolibm.c2
-rw-r--r--tests/test-isnanf.h24
-rw-r--r--tests/test-isnanl-nolibm.c2
-rw-r--r--tests/test-isnanl.h52
-rw-r--r--tests/test-iswblank.c7
-rw-r--r--tests/test-iswdigit.c2
-rw-r--r--tests/test-iswpunct.c153
-rwxr-xr-xtests/test-iswpunct.sh7
-rw-r--r--tests/test-iswxdigit.c2
-rw-r--r--tests/test-langinfo.c2
-rw-r--r--tests/test-largefile.c51
-rw-r--r--tests/test-limits-h.c21
-rw-r--r--tests/test-listen.c7
-rw-r--r--tests/test-localcharset.c2
-rw-r--r--tests/test-locale.c2
-rw-r--r--tests/test-localename.c82
-rw-r--r--tests/test-lock.c24
-rw-r--r--tests/test-lstat.c2
-rw-r--r--tests/test-lstat.h8
-rw-r--r--tests/test-malloc-gnu.c4
-rw-r--r--tests/test-malloca.c2
-rw-r--r--tests/test-math.c10
-rwxr-xr-xtests/test-mbrtoc32-1.sh9
-rwxr-xr-xtests/test-mbrtoc32-2.sh15
-rwxr-xr-xtests/test-mbrtoc32-3.sh15
-rwxr-xr-xtests/test-mbrtoc32-4.sh15
-rwxr-xr-xtests/test-mbrtoc32-5.sh15
-rwxr-xr-xtests/test-mbrtoc32-w32-2.sh4
-rwxr-xr-xtests/test-mbrtoc32-w32-3.sh4
-rwxr-xr-xtests/test-mbrtoc32-w32-4.sh4
-rwxr-xr-xtests/test-mbrtoc32-w32-5.sh4
-rwxr-xr-xtests/test-mbrtoc32-w32-6.sh4
-rwxr-xr-xtests/test-mbrtoc32-w32-7.sh4
-rwxr-xr-xtests/test-mbrtoc32-w32-8.sh4
-rw-r--r--tests/test-mbrtoc32-w32.c750
-rw-r--r--tests/test-mbrtoc32.c441
-rwxr-xr-xtests/test-mbrtowc-1.sh9
-rwxr-xr-xtests/test-mbrtowc-2.sh15
-rwxr-xr-xtests/test-mbrtowc-3.sh15
-rwxr-xr-xtests/test-mbrtowc-4.sh (renamed from tests/test-mbrtowc3.sh)2
-rwxr-xr-xtests/test-mbrtowc-5.sh (renamed from tests/test-mbrtowc4.sh)2
-rwxr-xr-xtests/test-mbrtowc-w32-1.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-2.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-3.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-4.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-5.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-6.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-7.sh4
-rwxr-xr-xtests/test-mbrtowc-w32-8.sh4
-rw-r--r--tests/test-mbrtowc-w32.c242
-rw-r--r--tests/test-mbrtowc.c80
-rwxr-xr-xtests/test-mbrtowc5.sh6
-rw-r--r--tests/test-mbsinit.c2
-rw-r--r--tests/test-memchr.c2
-rw-r--r--tests/test-nanosleep.c2
-rw-r--r--tests/test-netinet_in.c2
-rw-r--r--tests/test-once.c2
-rw-r--r--tests/test-open.c2
-rw-r--r--tests/test-open.h7
-rw-r--r--tests/test-pathmax.c2
-rw-r--r--tests/test-perror.c2
-rw-r--r--tests/test-perror2.c7
-rw-r--r--tests/test-pipe.c2
-rw-r--r--tests/test-printf-frexp.c2
-rw-r--r--tests/test-printf-frexpl.c2
-rw-r--r--tests/test-pselect.c3
-rw-r--r--tests/test-pthread-thread.c4
-rw-r--r--tests/test-pthread.c2
-rw-r--r--tests/test-pthread_sigmask1.c11
-rw-r--r--tests/test-pthread_sigmask2.c8
-rw-r--r--tests/test-raise.c10
-rw-r--r--tests/test-random-mt.c169
-rw-r--r--tests/test-random.c49
-rw-r--r--tests/test-random_r.c68
-rw-r--r--tests/test-realloc-gnu.c4
-rw-r--r--tests/test-reallocarray.c2
-rw-r--r--tests/test-rwlock1.c8
-rw-r--r--tests/test-sched.c2
-rw-r--r--tests/test-select-fd.c2
-rwxr-xr-xtests/test-select-in.sh2
-rwxr-xr-xtests/test-select-out.sh2
-rw-r--r--tests/test-select-stdin.c2
-rw-r--r--tests/test-select.c3
-rw-r--r--tests/test-select.h8
-rw-r--r--tests/test-setenv.c2
-rw-r--r--tests/test-setlocale1.c2
-rw-r--r--tests/test-setlocale2.c2
-rw-r--r--tests/test-setlocale_null-mt-all.c4
-rw-r--r--tests/test-setlocale_null-mt-one.c2
-rw-r--r--tests/test-setlocale_null-unlocked.c35
-rw-r--r--tests/test-setlocale_null.c4
-rw-r--r--tests/test-setsockopt.c2
-rw-r--r--tests/test-signal-h.c2
-rw-r--r--tests/test-signbit.c88
-rw-r--r--tests/test-sigprocmask.c17
-rw-r--r--tests/test-sleep.c2
-rw-r--r--tests/test-sockets.c2
-rw-r--r--tests/test-stat-time.c2
-rw-r--r--tests/test-stat.c2
-rw-r--r--tests/test-stat.h8
-rw-r--r--tests/test-stdbool.c4
-rw-r--r--tests/test-stdckdint.c2
-rw-r--r--tests/test-stddef.c40
-rw-r--r--tests/test-stdint.c20
-rw-r--r--tests/test-stdio.c54
-rw-r--r--tests/test-stdlib.c15
-rw-r--r--tests/test-strerror.c2
-rw-r--r--tests/test-strerror_r.c2
-rw-r--r--tests/test-striconveh.c38
-rw-r--r--tests/test-striconveha.c12
-rw-r--r--tests/test-string.c2
-rw-r--r--tests/test-strncat.c2
-rw-r--r--tests/test-strstr.c10
-rw-r--r--tests/test-symlink.c2
-rw-r--r--tests/test-symlink.h2
-rw-r--r--tests/test-sys_ioctl.c2
-rw-r--r--tests/test-sys_select.c22
-rw-r--r--tests/test-sys_socket.c6
-rw-r--r--tests/test-sys_stat.c2
-rw-r--r--tests/test-sys_time.c2
-rw-r--r--tests/test-sys_types.c2
-rw-r--r--tests/test-sys_uio.c2
-rw-r--r--tests/test-sys_wait.h2
-rw-r--r--tests/test-thread_create.c4
-rw-r--r--tests/test-thread_self.c2
-rw-r--r--tests/test-time-h.c43
-rw-r--r--tests/test-time.c38
-rw-r--r--tests/test-uchar.c57
-rw-r--r--tests/test-unistd.c2
-rw-r--r--tests/test-unsetenv.c5
-rw-r--r--tests/test-usleep.c2
-rw-r--r--tests/test-verify-try.c2
-rw-r--r--tests/test-verify.c2
-rw-r--r--tests/test-wchar.c2
-rwxr-xr-xtests/test-wcrtomb-w32-1.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-2.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-3.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-4.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-5.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-6.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-7.sh4
-rwxr-xr-xtests/test-wcrtomb-w32-8.sh4
-rw-r--r--tests/test-wcrtomb-w32.c42
-rw-r--r--tests/test-wcrtomb.c16
-rwxr-xr-xtests/test-wcrtomb.sh16
-rw-r--r--tests/test-wctype-h.c43
-rw-r--r--tests/test-wcwidth.c2
-rw-r--r--tests/test-xalloc-die.c4
-rwxr-xr-xtests/test-xalloc-die.sh2
-rw-r--r--tests/time.c41
-rw-r--r--tests/time.in.h143
-rw-r--r--tests/unicase/test-casecmp.h2
-rw-r--r--tests/unicase/test-cased.c2
-rw-r--r--tests/unicase/test-ignorable.c2
-rw-r--r--tests/unicase/test-is-cased.h2
-rw-r--r--tests/unicase/test-is-casefolded.h2
-rw-r--r--tests/unicase/test-is-lowercase.h2
-rw-r--r--tests/unicase/test-is-titlecase.h2
-rw-r--r--tests/unicase/test-is-uppercase.h2
-rw-r--r--tests/unicase/test-locale-language.c2
-rw-r--r--tests/unicase/test-mapping-part1.h2
-rw-r--r--tests/unicase/test-mapping-part2.h2
-rw-r--r--tests/unicase/test-predicate-part1.h2
-rw-r--r--tests/unicase/test-predicate-part2.h2
-rw-r--r--tests/unicase/test-u16-casecmp.c2
-rw-r--r--tests/unicase/test-u16-casecoll.c2
-rw-r--r--tests/unicase/test-u16-casefold.c2
-rw-r--r--tests/unicase/test-u16-is-cased.c2
-rw-r--r--tests/unicase/test-u16-is-casefolded.c2
-rw-r--r--tests/unicase/test-u16-is-lowercase.c2
-rw-r--r--tests/unicase/test-u16-is-titlecase.c2
-rw-r--r--tests/unicase/test-u16-is-uppercase.c2
-rw-r--r--tests/unicase/test-u16-tolower.c2
-rw-r--r--tests/unicase/test-u16-totitle.c2
-rw-r--r--tests/unicase/test-u16-toupper.c2
-rw-r--r--tests/unicase/test-u32-casecmp.c2
-rw-r--r--tests/unicase/test-u32-casecoll.c2
-rw-r--r--tests/unicase/test-u32-casefold.c2
-rw-r--r--tests/unicase/test-u32-is-cased.c2
-rw-r--r--tests/unicase/test-u32-is-casefolded.c2
-rw-r--r--tests/unicase/test-u32-is-lowercase.c2
-rw-r--r--tests/unicase/test-u32-is-titlecase.c2
-rw-r--r--tests/unicase/test-u32-is-uppercase.c2
-rw-r--r--tests/unicase/test-u32-tolower.c2
-rw-r--r--tests/unicase/test-u32-totitle.c2
-rw-r--r--tests/unicase/test-u32-toupper.c2
-rw-r--r--tests/unicase/test-u8-casecmp.c2
-rw-r--r--tests/unicase/test-u8-casecoll.c2
-rw-r--r--tests/unicase/test-u8-casefold.c2
-rw-r--r--tests/unicase/test-u8-is-cased.c2
-rw-r--r--tests/unicase/test-u8-is-casefolded.c2
-rw-r--r--tests/unicase/test-u8-is-lowercase.c2
-rw-r--r--tests/unicase/test-u8-is-titlecase.c2
-rw-r--r--tests/unicase/test-u8-is-uppercase.c2
-rw-r--r--tests/unicase/test-u8-tolower.c2
-rw-r--r--tests/unicase/test-u8-totitle.c2
-rw-r--r--tests/unicase/test-u8-toupper.c2
-rw-r--r--tests/unicase/test-uc_tolower.c4
-rw-r--r--tests/unicase/test-uc_totitle.c4
-rw-r--r--tests/unicase/test-uc_toupper.c4
-rw-r--r--tests/unicase/test-ulc-casecmp.c2
-rw-r--r--tests/unicase/test-ulc-casecoll.c2
-rw-r--r--tests/uniconv/test-u16-conv-from-enc.c5
-rw-r--r--tests/uniconv/test-u16-conv-to-enc.c2
-rw-r--r--tests/uniconv/test-u16-strconv-from-enc.c5
-rw-r--r--tests/uniconv/test-u16-strconv-to-enc.c2
-rw-r--r--tests/uniconv/test-u32-conv-from-enc.c5
-rw-r--r--tests/uniconv/test-u32-conv-to-enc.c2
-rw-r--r--tests/uniconv/test-u32-strconv-from-enc.c5
-rw-r--r--tests/uniconv/test-u32-strconv-to-enc.c2
-rw-r--r--tests/uniconv/test-u8-conv-from-enc.c5
-rw-r--r--tests/uniconv/test-u8-conv-to-enc.c2
-rw-r--r--tests/uniconv/test-u8-strconv-from-enc.c5
-rw-r--r--tests/uniconv/test-u8-strconv-to-enc.c2
-rw-r--r--tests/unictype/test-bidi_byname.c2
-rw-r--r--tests/unictype/test-bidi_longname.c2
-rw-r--r--tests/unictype/test-bidi_name.c2
-rw-r--r--tests/unictype/test-bidi_of.c2
-rw-r--r--tests/unictype/test-bidi_test.c2
-rw-r--r--tests/unictype/test-block_list.c2
-rw-r--r--tests/unictype/test-block_of.c2
-rw-r--r--tests/unictype/test-block_test.c2
-rw-r--r--tests/unictype/test-categ_C.c8
-rw-r--r--tests/unictype/test-categ_Cc.c2
-rw-r--r--tests/unictype/test-categ_Cf.c2
-rw-r--r--tests/unictype/test-categ_Cn.c8
-rw-r--r--tests/unictype/test-categ_Co.c2
-rw-r--r--tests/unictype/test-categ_Cs.c2
-rw-r--r--tests/unictype/test-categ_L.c3
-rw-r--r--tests/unictype/test-categ_LC.c2
-rw-r--r--tests/unictype/test-categ_Ll.c2
-rw-r--r--tests/unictype/test-categ_Lm.c2
-rw-r--r--tests/unictype/test-categ_Lo.c3
-rw-r--r--tests/unictype/test-categ_Lt.c2
-rw-r--r--tests/unictype/test-categ_Lu.c2
-rw-r--r--tests/unictype/test-categ_M.c2
-rw-r--r--tests/unictype/test-categ_Mc.c2
-rw-r--r--tests/unictype/test-categ_Me.c2
-rw-r--r--tests/unictype/test-categ_Mn.c2
-rw-r--r--tests/unictype/test-categ_N.c2
-rw-r--r--tests/unictype/test-categ_Nd.c2
-rw-r--r--tests/unictype/test-categ_Nl.c2
-rw-r--r--tests/unictype/test-categ_No.c2
-rw-r--r--tests/unictype/test-categ_P.c2
-rw-r--r--tests/unictype/test-categ_Pc.c2
-rw-r--r--tests/unictype/test-categ_Pd.c2
-rw-r--r--tests/unictype/test-categ_Pe.c2
-rw-r--r--tests/unictype/test-categ_Pf.c2
-rw-r--r--tests/unictype/test-categ_Pi.c2
-rw-r--r--tests/unictype/test-categ_Po.c2
-rw-r--r--tests/unictype/test-categ_Ps.c2
-rw-r--r--tests/unictype/test-categ_S.c5
-rw-r--r--tests/unictype/test-categ_Sc.c2
-rw-r--r--tests/unictype/test-categ_Sk.c2
-rw-r--r--tests/unictype/test-categ_Sm.c2
-rw-r--r--tests/unictype/test-categ_So.c5
-rw-r--r--tests/unictype/test-categ_Z.c2
-rw-r--r--tests/unictype/test-categ_Zl.c2
-rw-r--r--tests/unictype/test-categ_Zp.c2
-rw-r--r--tests/unictype/test-categ_Zs.c2
-rw-r--r--tests/unictype/test-categ_and.c2
-rw-r--r--tests/unictype/test-categ_and_not.c41
-rw-r--r--tests/unictype/test-categ_byname.c14
-rw-r--r--tests/unictype/test-categ_longname.c2
-rw-r--r--tests/unictype/test-categ_name.c2
-rw-r--r--tests/unictype/test-categ_none.c2
-rw-r--r--tests/unictype/test-categ_of.c2
-rw-r--r--tests/unictype/test-categ_or.c2
-rw-r--r--tests/unictype/test-categ_test_withtable.c2
-rw-r--r--tests/unictype/test-combiningclass.c2
-rw-r--r--tests/unictype/test-combiningclass_byname.c2
-rw-r--r--tests/unictype/test-combiningclass_longname.c2
-rw-r--r--tests/unictype/test-combiningclass_name.c2
-rw-r--r--tests/unictype/test-ctype_alnum.c3
-rw-r--r--tests/unictype/test-ctype_alpha.c3
-rw-r--r--tests/unictype/test-ctype_blank.c2
-rw-r--r--tests/unictype/test-ctype_cntrl.c2
-rw-r--r--tests/unictype/test-ctype_digit.c2
-rw-r--r--tests/unictype/test-ctype_graph.c7
-rw-r--r--tests/unictype/test-ctype_lower.c2
-rw-r--r--tests/unictype/test-ctype_print.c8
-rw-r--r--tests/unictype/test-ctype_punct.c5
-rw-r--r--tests/unictype/test-ctype_space.c2
-rw-r--r--tests/unictype/test-ctype_upper.c2
-rw-r--r--tests/unictype/test-ctype_xdigit.c2
-rw-r--r--tests/unictype/test-decdigit.c2
-rw-r--r--tests/unictype/test-decdigit.h4
-rw-r--r--tests/unictype/test-digit.c2
-rw-r--r--tests/unictype/test-digit.h4
-rw-r--r--tests/unictype/test-incb_byname.c43
-rw-r--r--tests/unictype/test-incb_name.c37
-rw-r--r--tests/unictype/test-incb_of.c52
-rw-r--r--tests/unictype/test-incb_of.h1149
-rw-r--r--tests/unictype/test-joininggroup_byname.c2
-rw-r--r--tests/unictype/test-joininggroup_name.c2
-rw-r--r--tests/unictype/test-joininggroup_of.c2
-rw-r--r--tests/unictype/test-joininggroup_of.h4
-rw-r--r--tests/unictype/test-joiningtype_byname.c2
-rw-r--r--tests/unictype/test-joiningtype_longname.c2
-rw-r--r--tests/unictype/test-joiningtype_name.c2
-rw-r--r--tests/unictype/test-joiningtype_of.c2
-rw-r--r--tests/unictype/test-joiningtype_of.h4
-rw-r--r--tests/unictype/test-mirror.c2
-rw-r--r--tests/unictype/test-numeric.c2
-rw-r--r--tests/unictype/test-numeric.h4
-rw-r--r--tests/unictype/test-pr_alphabetic.c3
-rw-r--r--tests/unictype/test-pr_ascii_hex_digit.c2
-rw-r--r--tests/unictype/test-pr_bidi_arabic_digit.c2
-rw-r--r--tests/unictype/test-pr_bidi_arabic_right_to_left.c2
-rw-r--r--tests/unictype/test-pr_bidi_block_separator.c2
-rw-r--r--tests/unictype/test-pr_bidi_boundary_neutral.c2
-rw-r--r--tests/unictype/test-pr_bidi_common_separator.c2
-rw-r--r--tests/unictype/test-pr_bidi_control.c2
-rw-r--r--tests/unictype/test-pr_bidi_embedding_or_override.c2
-rw-r--r--tests/unictype/test-pr_bidi_eur_num_separator.c2
-rw-r--r--tests/unictype/test-pr_bidi_eur_num_terminator.c2
-rw-r--r--tests/unictype/test-pr_bidi_european_digit.c2
-rw-r--r--tests/unictype/test-pr_bidi_hebrew_right_to_left.c2
-rw-r--r--tests/unictype/test-pr_bidi_left_to_right.c6
-rw-r--r--tests/unictype/test-pr_bidi_non_spacing_mark.c2
-rw-r--r--tests/unictype/test-pr_bidi_other_neutral.c5
-rw-r--r--tests/unictype/test-pr_bidi_pdf.c2
-rw-r--r--tests/unictype/test-pr_bidi_segment_separator.c2
-rw-r--r--tests/unictype/test-pr_bidi_whitespace.c2
-rw-r--r--tests/unictype/test-pr_byname.c2
-rw-r--r--tests/unictype/test-pr_case_ignorable.c2
-rw-r--r--tests/unictype/test-pr_cased.c2
-rw-r--r--tests/unictype/test-pr_changes_when_casefolded.c2
-rw-r--r--tests/unictype/test-pr_changes_when_casemapped.c2
-rw-r--r--tests/unictype/test-pr_changes_when_lowercased.c2
-rw-r--r--tests/unictype/test-pr_changes_when_titlecased.c2
-rw-r--r--tests/unictype/test-pr_changes_when_uppercased.c2
-rw-r--r--tests/unictype/test-pr_combining.c2
-rw-r--r--tests/unictype/test-pr_composite.c2
-rw-r--r--tests/unictype/test-pr_currency_symbol.c2
-rw-r--r--tests/unictype/test-pr_dash.c2
-rw-r--r--tests/unictype/test-pr_decimal_digit.c2
-rw-r--r--tests/unictype/test-pr_default_ignorable_code_point.c2
-rw-r--r--tests/unictype/test-pr_deprecated.c2
-rw-r--r--tests/unictype/test-pr_diacritic.c2
-rw-r--r--tests/unictype/test-pr_emoji.c2
-rw-r--r--tests/unictype/test-pr_emoji_component.c2
-rw-r--r--tests/unictype/test-pr_emoji_modifier.c2
-rw-r--r--tests/unictype/test-pr_emoji_modifier_base.c2
-rw-r--r--tests/unictype/test-pr_emoji_presentation.c2
-rw-r--r--tests/unictype/test-pr_extended_pictographic.c2
-rw-r--r--tests/unictype/test-pr_extender.c2
-rw-r--r--tests/unictype/test-pr_format_control.c2
-rw-r--r--tests/unictype/test-pr_grapheme_base.c8
-rw-r--r--tests/unictype/test-pr_grapheme_extend.c2
-rw-r--r--tests/unictype/test-pr_grapheme_link.c2
-rw-r--r--tests/unictype/test-pr_hex_digit.c2
-rw-r--r--tests/unictype/test-pr_hyphen.c2
-rw-r--r--tests/unictype/test-pr_id_compat_math_continue.c40
-rw-r--r--tests/unictype/test-pr_id_compat_math_start.c35
-rw-r--r--tests/unictype/test-pr_id_continue.c9
-rw-r--r--tests/unictype/test-pr_id_start.c3
-rw-r--r--tests/unictype/test-pr_ideographic.c3
-rw-r--r--tests/unictype/test-pr_ids_binary_operator.c5
-rw-r--r--tests/unictype/test-pr_ids_trinary_operator.c2
-rw-r--r--tests/unictype/test-pr_ids_unary_operator.c23
-rw-r--r--tests/unictype/test-pr_ignorable_control.c2
-rw-r--r--tests/unictype/test-pr_iso_control.c2
-rw-r--r--tests/unictype/test-pr_join_control.c2
-rw-r--r--tests/unictype/test-pr_left_of_pair.c2
-rw-r--r--tests/unictype/test-pr_line_separator.c2
-rw-r--r--tests/unictype/test-pr_logical_order_exception.c2
-rw-r--r--tests/unictype/test-pr_lowercase.c2
-rw-r--r--tests/unictype/test-pr_math.c2
-rw-r--r--tests/unictype/test-pr_non_break.c2
-rw-r--r--tests/unictype/test-pr_not_a_character.c2
-rw-r--r--tests/unictype/test-pr_numeric.c2
-rw-r--r--tests/unictype/test-pr_other_alphabetic.c2
-rw-r--r--tests/unictype/test-pr_other_default_ignorable_code_point.c2
-rw-r--r--tests/unictype/test-pr_other_grapheme_extend.c2
-rw-r--r--tests/unictype/test-pr_other_id_continue.c7
-rw-r--r--tests/unictype/test-pr_other_id_start.c2
-rw-r--r--tests/unictype/test-pr_other_lowercase.c2
-rw-r--r--tests/unictype/test-pr_other_math.c2
-rw-r--r--tests/unictype/test-pr_other_uppercase.c2
-rw-r--r--tests/unictype/test-pr_paired_punctuation.c2
-rw-r--r--tests/unictype/test-pr_paragraph_separator.c2
-rw-r--r--tests/unictype/test-pr_pattern_syntax.c2
-rw-r--r--tests/unictype/test-pr_pattern_white_space.c2
-rw-r--r--tests/unictype/test-pr_prepended_concatenation_mark.c29
-rw-r--r--tests/unictype/test-pr_private_use.c2
-rw-r--r--tests/unictype/test-pr_punctuation.c2
-rw-r--r--tests/unictype/test-pr_quotation_mark.c2
-rw-r--r--tests/unictype/test-pr_radical.c2
-rw-r--r--tests/unictype/test-pr_regional_indicator.c2
-rw-r--r--tests/unictype/test-pr_sentence_terminal.c3
-rw-r--r--tests/unictype/test-pr_soft_dotted.c2
-rw-r--r--tests/unictype/test-pr_space.c2
-rw-r--r--tests/unictype/test-pr_terminal_punctuation.c2
-rw-r--r--tests/unictype/test-pr_test.c2
-rw-r--r--tests/unictype/test-pr_titlecase.c2
-rw-r--r--tests/unictype/test-pr_unassigned_code_value.c8
-rw-r--r--tests/unictype/test-pr_unified_ideograph.c3
-rw-r--r--tests/unictype/test-pr_uppercase.c2
-rw-r--r--tests/unictype/test-pr_variation_selector.c2
-rw-r--r--tests/unictype/test-pr_white_space.c2
-rw-r--r--tests/unictype/test-pr_xid_continue.c9
-rw-r--r--tests/unictype/test-pr_xid_start.c3
-rw-r--r--tests/unictype/test-pr_zero_width.c2
-rw-r--r--tests/unictype/test-predicate-part1.h2
-rw-r--r--tests/unictype/test-predicate-part2.h2
-rw-r--r--tests/unictype/test-scripts.c2
-rw-r--r--tests/unictype/test-sy_c_ident.c2
-rw-r--r--tests/unictype/test-sy_c_whitespace.c2
-rw-r--r--tests/unictype/test-sy_java_ident.c2
-rw-r--r--tests/unictype/test-sy_java_whitespace.c2
-rw-r--r--tests/unigbrk/GraphemeBreakTest.txt767
-rw-r--r--tests/unigbrk/test-u16-grapheme-breaks.c9
-rw-r--r--tests/unigbrk/test-u16-grapheme-next.c5
-rw-r--r--tests/unigbrk/test-u16-grapheme-prev.c5
-rw-r--r--tests/unigbrk/test-u32-grapheme-breaks.c9
-rw-r--r--tests/unigbrk/test-u32-grapheme-next.c5
-rw-r--r--tests/unigbrk/test-u32-grapheme-prev.c5
-rw-r--r--tests/unigbrk/test-u8-grapheme-breaks.c5
-rw-r--r--tests/unigbrk/test-u8-grapheme-next.c5
-rw-r--r--tests/unigbrk/test-u8-grapheme-prev.c5
-rw-r--r--tests/unigbrk/test-uc-gbrk-prop.c2
-rw-r--r--tests/unigbrk/test-uc-gbrk-prop.h2
-rw-r--r--tests/unigbrk/test-uc-grapheme-breaks.c11
-rw-r--r--tests/unigbrk/test-uc-is-grapheme-break.c33
-rw-r--r--tests/unigbrk/test-ulc-grapheme-breaks.c5
-rw-r--r--tests/unilbrk/test-u16-possible-linebreaks.c6
-rw-r--r--tests/unilbrk/test-u16-width-linebreaks.c6
-rw-r--r--tests/unilbrk/test-u32-possible-linebreaks.c6
-rw-r--r--tests/unilbrk/test-u32-width-linebreaks.c6
-rw-r--r--tests/unilbrk/test-u8-possible-linebreaks.c6
-rw-r--r--tests/unilbrk/test-u8-width-linebreaks.c6
-rw-r--r--tests/unilbrk/test-ulc-possible-linebreaks.c6
-rw-r--r--tests/unilbrk/test-ulc-width-linebreaks.c6
-rw-r--r--tests/unimetadata/test-u-version.c39
-rw-r--r--tests/uniname/HangulSyllableNames.txt4
-rw-r--r--tests/uniname/NameAliases.txt46
-rw-r--r--tests/uniname/UnicodeData.txt47
-rw-r--r--tests/uniname/test-uninames.c2
-rw-r--r--tests/uninorm/NormalizationTest.txt46
-rw-r--r--tests/uninorm/test-canonical-decomposition.c2
-rw-r--r--tests/uninorm/test-compat-decomposition.c2
-rw-r--r--tests/uninorm/test-composition.c2
-rw-r--r--tests/uninorm/test-decomposing-form.c2
-rw-r--r--tests/uninorm/test-decomposition.c2
-rw-r--r--tests/uninorm/test-nfc.c2
-rw-r--r--tests/uninorm/test-nfd.c2
-rw-r--r--tests/uninorm/test-nfkc.c2
-rw-r--r--tests/uninorm/test-nfkd.c2
-rw-r--r--tests/uninorm/test-u16-nfc.c2
-rw-r--r--tests/uninorm/test-u16-nfd.c2
-rw-r--r--tests/uninorm/test-u16-nfkc.c2
-rw-r--r--tests/uninorm/test-u16-nfkd.c2
-rw-r--r--tests/uninorm/test-u16-normcmp.c2
-rw-r--r--tests/uninorm/test-u16-normcmp.h2
-rw-r--r--tests/uninorm/test-u16-normcoll.c2
-rw-r--r--tests/uninorm/test-u32-nfc-big.c2
-rw-r--r--tests/uninorm/test-u32-nfc.c2
-rw-r--r--tests/uninorm/test-u32-nfd-big.c2
-rw-r--r--tests/uninorm/test-u32-nfd.c2
-rw-r--r--tests/uninorm/test-u32-nfkc-big.c2
-rw-r--r--tests/uninorm/test-u32-nfkc.c2
-rw-r--r--tests/uninorm/test-u32-nfkd-big.c2
-rw-r--r--tests/uninorm/test-u32-nfkd.c2
-rw-r--r--tests/uninorm/test-u32-normalize-big.c2
-rw-r--r--tests/uninorm/test-u32-normalize-big.h2
-rw-r--r--tests/uninorm/test-u32-normcmp.c2
-rw-r--r--tests/uninorm/test-u32-normcmp.h2
-rw-r--r--tests/uninorm/test-u32-normcoll.c2
-rw-r--r--tests/uninorm/test-u8-nfc.c2
-rw-r--r--tests/uninorm/test-u8-nfd.c2
-rw-r--r--tests/uninorm/test-u8-nfkc.c2
-rw-r--r--tests/uninorm/test-u8-nfkd.c2
-rw-r--r--tests/uninorm/test-u8-normcmp.c2
-rw-r--r--tests/uninorm/test-u8-normcmp.h2
-rw-r--r--tests/uninorm/test-u8-normcoll.c2
-rw-r--r--tests/uninorm/test-uninorm-filter-nfc.c2
-rw-r--r--tests/unistdio/test-u16-asnprintf1.c2
-rw-r--r--tests/unistdio/test-u16-asnprintf1.h2
-rw-r--r--tests/unistdio/test-u16-printf1.h372
-rw-r--r--tests/unistdio/test-u16-vasnprintf1.c2
-rw-r--r--tests/unistdio/test-u16-vasnprintf2.c2
-rw-r--r--tests/unistdio/test-u16-vasnprintf3.c2
-rw-r--r--tests/unistdio/test-u16-vasprintf1.c2
-rw-r--r--tests/unistdio/test-u16-vsnprintf1.c2
-rw-r--r--tests/unistdio/test-u16-vsprintf1.c2
-rw-r--r--tests/unistdio/test-u32-asnprintf1.c2
-rw-r--r--tests/unistdio/test-u32-asnprintf1.h2
-rw-r--r--tests/unistdio/test-u32-printf1.h372
-rw-r--r--tests/unistdio/test-u32-vasnprintf1.c2
-rw-r--r--tests/unistdio/test-u32-vasnprintf2.c2
-rw-r--r--tests/unistdio/test-u32-vasnprintf3.c2
-rw-r--r--tests/unistdio/test-u32-vasprintf1.c2
-rw-r--r--tests/unistdio/test-u32-vsnprintf1.c2
-rw-r--r--tests/unistdio/test-u32-vsprintf1.c2
-rw-r--r--tests/unistdio/test-u8-asnprintf1.c2
-rw-r--r--tests/unistdio/test-u8-asnprintf1.h2
-rw-r--r--tests/unistdio/test-u8-printf1.h292
-rw-r--r--tests/unistdio/test-u8-vasnprintf1.c2
-rw-r--r--tests/unistdio/test-u8-vasnprintf2.c2
-rw-r--r--tests/unistdio/test-u8-vasnprintf3.c2
-rw-r--r--tests/unistdio/test-u8-vasprintf1.c2
-rw-r--r--tests/unistdio/test-u8-vsnprintf1.c2
-rw-r--r--tests/unistdio/test-u8-vsprintf1.c2
-rw-r--r--tests/unistdio/test-ulc-asnprintf1.c2
-rw-r--r--tests/unistdio/test-ulc-asnprintf1.h2
-rw-r--r--tests/unistdio/test-ulc-printf1.h206
-rw-r--r--tests/unistdio/test-ulc-vasnprintf1.c2
-rw-r--r--tests/unistdio/test-ulc-vasnprintf2.c2
-rw-r--r--tests/unistdio/test-ulc-vasnprintf3.c2
-rw-r--r--tests/unistdio/test-ulc-vasprintf1.c2
-rw-r--r--tests/unistdio/test-ulc-vsnprintf1.c2
-rw-r--r--tests/unistdio/test-ulc-vsprintf1.c2
-rw-r--r--tests/unistr/test-chr.h19
-rw-r--r--tests/unistr/test-cmp.h2
-rw-r--r--tests/unistr/test-cmp2.h2
-rw-r--r--tests/unistr/test-cpy-alloc.h2
-rw-r--r--tests/unistr/test-cpy.h2
-rw-r--r--tests/unistr/test-move.h2
-rw-r--r--tests/unistr/test-pcpy.h44
-rw-r--r--tests/unistr/test-set.h2
-rw-r--r--tests/unistr/test-stpcpy.h2
-rw-r--r--tests/unistr/test-stpncpy.h2
-rw-r--r--tests/unistr/test-strcat.h2
-rw-r--r--tests/unistr/test-strchr.h7
-rw-r--r--tests/unistr/test-strcmp.h2
-rw-r--r--tests/unistr/test-strcpy.h2
-rw-r--r--tests/unistr/test-strdup.h2
-rw-r--r--tests/unistr/test-strncat.h2
-rw-r--r--tests/unistr/test-strncmp.h2
-rw-r--r--tests/unistr/test-strncpy.h2
-rw-r--r--tests/unistr/test-strnlen.h2
-rw-r--r--tests/unistr/test-u-strstr.h40
-rw-r--r--tests/unistr/test-u-strtok.h12
-rw-r--r--tests/unistr/test-u16-check.c2
-rw-r--r--tests/unistr/test-u16-chr.c2
-rw-r--r--tests/unistr/test-u16-cmp.c2
-rw-r--r--tests/unistr/test-u16-cmp2.c2
-rw-r--r--tests/unistr/test-u16-cpy-alloc.c2
-rw-r--r--tests/unistr/test-u16-cpy.c2
-rw-r--r--tests/unistr/test-u16-mblen.c2
-rw-r--r--tests/unistr/test-u16-mbsnlen.c2
-rw-r--r--tests/unistr/test-u16-mbtouc-unsafe.c2
-rw-r--r--tests/unistr/test-u16-mbtouc.c2
-rw-r--r--tests/unistr/test-u16-mbtouc.h2
-rw-r--r--tests/unistr/test-u16-mbtoucr.c2
-rw-r--r--tests/unistr/test-u16-move.c2
-rw-r--r--tests/unistr/test-u16-next.c2
-rw-r--r--tests/unistr/test-u16-pcpy.c28
-rw-r--r--tests/unistr/test-u16-prev.c2
-rw-r--r--tests/unistr/test-u16-set.c2
-rw-r--r--tests/unistr/test-u16-stpcpy.c2
-rw-r--r--tests/unistr/test-u16-stpncpy.c2
-rw-r--r--tests/unistr/test-u16-strcat.c2
-rw-r--r--tests/unistr/test-u16-strchr.c2
-rw-r--r--tests/unistr/test-u16-strcmp.c2
-rw-r--r--tests/unistr/test-u16-strcmp.h2
-rw-r--r--tests/unistr/test-u16-strcoll.c2
-rw-r--r--tests/unistr/test-u16-strcpy.c2
-rw-r--r--tests/unistr/test-u16-strdup.c2
-rw-r--r--tests/unistr/test-u16-strlen.c2
-rw-r--r--tests/unistr/test-u16-strmblen.c2
-rw-r--r--tests/unistr/test-u16-strmbtouc.c2
-rw-r--r--tests/unistr/test-u16-strncat.c2
-rw-r--r--tests/unistr/test-u16-strncmp.c2
-rw-r--r--tests/unistr/test-u16-strncpy.c2
-rw-r--r--tests/unistr/test-u16-strnlen.c2
-rw-r--r--tests/unistr/test-u16-strstr.c3
-rw-r--r--tests/unistr/test-u16-strtok.c2
-rw-r--r--tests/unistr/test-u16-to-u32.c2
-rw-r--r--tests/unistr/test-u16-to-u8.c2
-rw-r--r--tests/unistr/test-u16-uctomb.c2
-rw-r--r--tests/unistr/test-u32-check.c2
-rw-r--r--tests/unistr/test-u32-chr.c2
-rw-r--r--tests/unistr/test-u32-cmp.c2
-rw-r--r--tests/unistr/test-u32-cmp2.c2
-rw-r--r--tests/unistr/test-u32-cpy-alloc.c2
-rw-r--r--tests/unistr/test-u32-cpy.c2
-rw-r--r--tests/unistr/test-u32-mblen.c2
-rw-r--r--tests/unistr/test-u32-mbsnlen.c2
-rw-r--r--tests/unistr/test-u32-mbtouc-unsafe.c2
-rw-r--r--tests/unistr/test-u32-mbtouc.c2
-rw-r--r--tests/unistr/test-u32-mbtouc.h2
-rw-r--r--tests/unistr/test-u32-mbtoucr.c2
-rw-r--r--tests/unistr/test-u32-move.c2
-rw-r--r--tests/unistr/test-u32-next.c2
-rw-r--r--tests/unistr/test-u32-pcpy.c28
-rw-r--r--tests/unistr/test-u32-prev.c2
-rw-r--r--tests/unistr/test-u32-set.c2
-rw-r--r--tests/unistr/test-u32-stpcpy.c2
-rw-r--r--tests/unistr/test-u32-stpncpy.c2
-rw-r--r--tests/unistr/test-u32-strcat.c2
-rw-r--r--tests/unistr/test-u32-strchr.c2
-rw-r--r--tests/unistr/test-u32-strcmp.c2
-rw-r--r--tests/unistr/test-u32-strcmp.h2
-rw-r--r--tests/unistr/test-u32-strcoll.c2
-rw-r--r--tests/unistr/test-u32-strcpy.c2
-rw-r--r--tests/unistr/test-u32-strdup.c2
-rw-r--r--tests/unistr/test-u32-strlen.c2
-rw-r--r--tests/unistr/test-u32-strmblen.c2
-rw-r--r--tests/unistr/test-u32-strmbtouc.c2
-rw-r--r--tests/unistr/test-u32-strncat.c2
-rw-r--r--tests/unistr/test-u32-strncmp.c2
-rw-r--r--tests/unistr/test-u32-strncpy.c2
-rw-r--r--tests/unistr/test-u32-strnlen.c2
-rw-r--r--tests/unistr/test-u32-strstr.c3
-rw-r--r--tests/unistr/test-u32-strtok.c2
-rw-r--r--tests/unistr/test-u32-to-u16.c2
-rw-r--r--tests/unistr/test-u32-to-u8.c2
-rw-r--r--tests/unistr/test-u32-uctomb.c2
-rw-r--r--tests/unistr/test-u8-check.c2
-rw-r--r--tests/unistr/test-u8-chr.c2
-rw-r--r--tests/unistr/test-u8-cmp.c2
-rw-r--r--tests/unistr/test-u8-cmp2.c2
-rw-r--r--tests/unistr/test-u8-cpy-alloc.c2
-rw-r--r--tests/unistr/test-u8-cpy.c2
-rw-r--r--tests/unistr/test-u8-mblen.c2
-rw-r--r--tests/unistr/test-u8-mbsnlen.c32
-rw-r--r--tests/unistr/test-u8-mbtouc-unsafe.c2
-rw-r--r--tests/unistr/test-u8-mbtouc.c85
-rw-r--r--tests/unistr/test-u8-mbtouc.h2
-rw-r--r--tests/unistr/test-u8-mbtoucr.c2
-rw-r--r--tests/unistr/test-u8-move.c2
-rw-r--r--tests/unistr/test-u8-next.c2
-rw-r--r--tests/unistr/test-u8-pcpy.c28
-rw-r--r--tests/unistr/test-u8-prev.c2
-rw-r--r--tests/unistr/test-u8-set.c2
-rw-r--r--tests/unistr/test-u8-stpcpy.c2
-rw-r--r--tests/unistr/test-u8-stpncpy.c2
-rw-r--r--tests/unistr/test-u8-strcat.c2
-rw-r--r--tests/unistr/test-u8-strchr.c2
-rw-r--r--tests/unistr/test-u8-strcmp.c2
-rw-r--r--tests/unistr/test-u8-strcmp.h2
-rw-r--r--tests/unistr/test-u8-strcoll.c2
-rw-r--r--tests/unistr/test-u8-strcpy.c2
-rw-r--r--tests/unistr/test-u8-strdup.c2
-rw-r--r--tests/unistr/test-u8-strlen.c2
-rw-r--r--tests/unistr/test-u8-strmblen.c2
-rw-r--r--tests/unistr/test-u8-strmbtouc.c2
-rw-r--r--tests/unistr/test-u8-strncat.c2
-rw-r--r--tests/unistr/test-u8-strncmp.c2
-rw-r--r--tests/unistr/test-u8-strncpy.c2
-rw-r--r--tests/unistr/test-u8-strnlen.c2
-rw-r--r--tests/unistr/test-u8-strstr.c3
-rw-r--r--tests/unistr/test-u8-strtok.c2
-rw-r--r--tests/unistr/test-u8-to-u16.c2
-rw-r--r--tests/unistr/test-u8-to-u32.c2
-rw-r--r--tests/unistr/test-u8-uctomb.c2
-rw-r--r--tests/uniwbrk/WordBreakTest.txt51
-rw-r--r--tests/uniwbrk/test-u16-wordbreaks.c2
-rw-r--r--tests/uniwbrk/test-u32-wordbreaks.c2
-rw-r--r--tests/uniwbrk/test-u8-wordbreaks.c2
-rw-r--r--tests/uniwbrk/test-uc-wordbreaks.c2
-rw-r--r--tests/uniwbrk/test-ulc-wordbreaks.c2
-rw-r--r--tests/uniwidth/test-u16-strwidth.c2
-rw-r--r--tests/uniwidth/test-u16-width.c2
-rw-r--r--tests/uniwidth/test-u32-strwidth.c2
-rw-r--r--tests/uniwidth/test-u32-width.c2
-rw-r--r--tests/uniwidth/test-u8-strwidth.c2
-rw-r--r--tests/uniwidth/test-u8-width.c2
-rw-r--r--tests/uniwidth/test-uc_width.c2
-rw-r--r--tests/uniwidth/test-uc_width2.c2
-rwxr-xr-xtests/uniwidth/test-uc_width2.sh30
-rw-r--r--tests/unsetenv.c2
-rw-r--r--tests/usleep.c2
-rw-r--r--tests/verify.h77
-rw-r--r--tests/w32sock.h2
-rw-r--r--tests/warn-on-use.h6
-rw-r--r--tests/wcrtomb.c4
-rw-r--r--tests/wctob.c2
-rw-r--r--tests/wctomb-impl.h4
-rw-r--r--tests/wctomb.c2
-rw-r--r--tests/windows-thread.c2
-rw-r--r--tests/windows-thread.h7
-rw-r--r--tests/windows-tls.c2
-rw-r--r--tests/windows-tls.h2
-rw-r--r--tests/xalloc-die.c4
-rw-r--r--tests/xalloc.h14
-rw-r--r--tests/xmalloc.c2
-rw-r--r--tests/zerosize-ptr.h2
909 files changed, 19018 insertions, 2781 deletions
diff --git a/tests/Makefile.gnulib b/tests/Makefile.gnulib
index 4b3f0ea2..5e989140 100644
--- a/tests/Makefile.gnulib
+++ b/tests/Makefile.gnulib
@@ -1,6 +1,6 @@
## DO NOT EDIT! GENERATED AUTOMATICALLY!
## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+# Copyright (C) 2002-2024 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -81,6 +81,14 @@ EXTRA_DIST += test-accept.c signature.h macros.h
## end gnulib module accept-tests
+## begin gnulib module alignasof-tests
+
+TESTS += test-alignasof
+check_PROGRAMS += test-alignasof
+EXTRA_DIST += test-alignasof.c macros.h
+
+## end gnulib module alignasof-tests
+
## begin gnulib module alloca
@@ -202,6 +210,22 @@ EXTRA_DIST += test-bind.c signature.h macros.h
## end gnulib module bind-tests
+## begin gnulib module btoc32
+
+libtests_a_SOURCES += btoc32.c
+
+## end gnulib module btoc32
+
+## begin gnulib module btoc32-tests
+
+TESTS += test-btoc32-1.sh test-btoc32-2.sh test-btoc32-3.sh
+TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+check_PROGRAMS += test-btoc32
+test_btoc32_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(LIBC32CONV)
+EXTRA_DIST += test-btoc32-1.sh test-btoc32-2.sh test-btoc32-3.sh test-btoc32.c signature.h macros.h
+
+## end gnulib module btoc32-tests
+
## begin gnulib module btowc
if GL_COND_OBJ_BTOWC
@@ -212,11 +236,11 @@ endif
## begin gnulib module btowc-tests
-TESTS += test-btowc1.sh test-btowc2.sh
+TESTS += test-btowc-1.sh test-btowc-2.sh test-btowc-3.sh
TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
check_PROGRAMS += test-btowc
-test_btowc_LDADD = $(LDADD) $(LIB_SETLOCALE)
-EXTRA_DIST += test-btowc1.sh test-btowc2.sh test-btowc.c signature.h macros.h
+test_btowc_LDADD = $(LDADD) $(SETLOCALE_LIB)
+EXTRA_DIST += test-btowc-1.sh test-btowc-2.sh test-btowc-3.sh test-btowc.c signature.h macros.h
## end gnulib module btowc-tests
@@ -224,7 +248,7 @@ EXTRA_DIST += test-btowc1.sh test-btowc2.sh test-btowc.c signature.h macros.h
TESTS += test-c-ctype
check_PROGRAMS += test-c-ctype
-test_c_ctype_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_c_ctype_LDADD = $(LDADD) $(SETLOCALE_LIB)
EXTRA_DIST += test-c-ctype.c macros.h
## end gnulib module c-ctype-tests
@@ -234,12 +258,235 @@ EXTRA_DIST += test-c-ctype.c macros.h
TESTS += test-c-strcase.sh
TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@'
check_PROGRAMS += test-c-strcasecmp test-c-strncasecmp
-test_c_strcasecmp_LDADD = $(LDADD) $(LIB_SETLOCALE)
-test_c_strncasecmp_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_c_strcasecmp_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_c_strncasecmp_LDADD = $(LDADD) $(SETLOCALE_LIB)
EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c macros.h
## end gnulib module c-strcase-tests
+## begin gnulib module c32isalnum-tests
+
+TESTS += test-c32isalnum.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isalnum
+test_c32isalnum_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isalnum.sh test-c32isalnum.c signature.h macros.h
+
+## end gnulib module c32isalnum-tests
+
+## begin gnulib module c32isalpha-tests
+
+TESTS += test-c32isalpha.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isalpha
+test_c32isalpha_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isalpha.sh test-c32isalpha.c signature.h macros.h
+
+## end gnulib module c32isalpha-tests
+
+## begin gnulib module c32isblank-tests
+
+TESTS += test-c32isblank.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isblank
+test_c32isblank_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isblank.sh test-c32isblank.c signature.h macros.h
+
+## end gnulib module c32isblank-tests
+
+## begin gnulib module c32iscntrl-tests
+
+TESTS += test-c32iscntrl.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32iscntrl
+test_c32iscntrl_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32iscntrl.sh test-c32iscntrl.c signature.h macros.h
+
+## end gnulib module c32iscntrl-tests
+
+## begin gnulib module c32isdigit-tests
+
+TESTS += test-c32isdigit.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isdigit
+test_c32isdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isdigit.sh test-c32isdigit.c signature.h macros.h
+
+## end gnulib module c32isdigit-tests
+
+## begin gnulib module c32isgraph-tests
+
+TESTS += test-c32isgraph.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isgraph
+test_c32isgraph_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isgraph.sh test-c32isgraph.c signature.h macros.h
+
+## end gnulib module c32isgraph-tests
+
+## begin gnulib module c32islower-tests
+
+TESTS += test-c32islower.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32islower
+test_c32islower_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32islower.sh test-c32islower.c signature.h macros.h
+
+## end gnulib module c32islower-tests
+
+## begin gnulib module c32isprint-tests
+
+TESTS += test-c32isprint.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isprint
+test_c32isprint_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isprint.sh test-c32isprint.c signature.h macros.h
+
+## end gnulib module c32isprint-tests
+
+## begin gnulib module c32ispunct-tests
+
+TESTS += test-c32ispunct.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32ispunct
+test_c32ispunct_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32ispunct.sh test-c32ispunct.c signature.h macros.h
+
+## end gnulib module c32ispunct-tests
+
+## begin gnulib module c32isspace-tests
+
+TESTS += test-c32isspace.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isspace
+test_c32isspace_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isspace.sh test-c32isspace.c signature.h macros.h
+
+## end gnulib module c32isspace-tests
+
+## begin gnulib module c32isupper-tests
+
+TESTS += test-c32isupper.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isupper
+test_c32isupper_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isupper.sh test-c32isupper.c signature.h macros.h
+
+## end gnulib module c32isupper-tests
+
+## begin gnulib module c32isxdigit-tests
+
+TESTS += test-c32isxdigit.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32isxdigit
+test_c32isxdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32isxdigit.sh test-c32isxdigit.c signature.h macros.h
+
+## end gnulib module c32isxdigit-tests
+
+## begin gnulib module c32rtomb
+
+if GL_COND_OBJ_C32RTOMB
+libtests_a_SOURCES += c32rtomb.c
+endif
+
+## end gnulib module c32rtomb
+
+## begin gnulib module c32rtomb-tests
+
+TESTS += \
+ test-c32rtomb.sh \
+ test-c32rtomb-w32-2.sh test-c32rtomb-w32-3.sh test-c32rtomb-w32-4.sh \
+ test-c32rtomb-w32-5.sh test-c32rtomb-w32-6.sh test-c32rtomb-w32-7.sh \
+ test-c32rtomb-w32-8.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32rtomb test-c32rtomb-w32
+test_c32rtomb_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(LIBC32CONV)
+EXTRA_DIST += test-c32rtomb.sh test-c32rtomb.c test-c32rtomb-w32-2.sh test-c32rtomb-w32-3.sh test-c32rtomb-w32-4.sh test-c32rtomb-w32-5.sh test-c32rtomb-w32-6.sh test-c32rtomb-w32-7.sh test-c32rtomb-w32-8.sh test-c32rtomb-w32.c signature.h macros.h
+
+## end gnulib module c32rtomb-tests
+
+## begin gnulib module c32tob
+
+libtests_a_SOURCES += c32tob.c
+
+## end gnulib module c32tob
+
+## begin gnulib module c32tolower-tests
+
+TESTS += test-c32tolower.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-c32tolower
+test_c32tolower_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32tolower.sh test-c32tolower.c signature.h macros.h
+
+## end gnulib module c32tolower-tests
+
+## begin gnulib module c32width-tests
+
+TESTS += test-c32width
+check_PROGRAMS += test-c32width
+test_c32width_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+EXTRA_DIST += test-c32width.c signature.h macros.h
+
+## end gnulib module c32width-tests
+
## begin gnulib module calloc-gnu
@@ -390,10 +637,41 @@ if GL_COND_OBJ_ERROR
libtests_a_SOURCES += error.c
endif
-EXTRA_DIST += error.h
-
## end gnulib module error
+## begin gnulib module error-h
+
+BUILT_SOURCES += error.h
+
+# We need the following in order to override <error.h>.
+error.h: error.in.h $(top_builddir)/config.status $(CXXDEFS_H)
+ $(gl_V_at)$(SED_HEADER_STDOUT) \
+ -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_ERROR_H''@|$(HAVE_ERROR_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''NEXT_ERROR_H''@|$(NEXT_ERROR_H)|g' \
+ -e 's|@''HAVE_ERROR''@|$(HAVE_ERROR)|g' \
+ -e 's|@''HAVE_ERROR_AT_LINE''@|$(HAVE_ERROR_AT_LINE)|g' \
+ -e 's|@''REPLACE_ERROR''@|$(REPLACE_ERROR)|g' \
+ -e 's|@''REPLACE_ERROR_AT_LINE''@|$(REPLACE_ERROR_AT_LINE)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ $(srcdir)/error.in.h > $@-t
+ $(AM_V_at)mv $@-t $@
+MOSTLYCLEANFILES += error.h error.h-t
+
+EXTRA_DIST += error.in.h
+
+## end gnulib module error-h
+
+## begin gnulib module error-tests
+
+TESTS += test-error.sh
+check_PROGRAMS += test-error
+test_error_LDADD = $(LDADD) $(LIBINTL)
+EXTRA_DIST += test-error.sh test-error.c macros.h
+
+## end gnulib module error-tests
+
## begin gnulib module exitfail
libtests_a_SOURCES += exitfail.c
@@ -539,7 +817,7 @@ EXTRA_DIST += test-free.c macros.h
TESTS += test-frexp-nolibm
check_PROGRAMS += test-frexp-nolibm
test_frexp_nolibm_SOURCES = test-frexp.c randomd.c
-EXTRA_DIST += test-frexp.c test-frexp.h minus-zero.h infinity.h nan.h signature.h macros.h randomd.c
+EXTRA_DIST += test-frexp.c test-frexp.h minus-zero.h infinity.h signature.h macros.h randomd.c
## end gnulib module frexp-nolibm-tests
@@ -548,7 +826,7 @@ EXTRA_DIST += test-frexp.c test-frexp.h minus-zero.h infinity.h nan.h signature.
TESTS += test-frexpl-nolibm
check_PROGRAMS += test-frexpl-nolibm
test_frexpl_nolibm_SOURCES = test-frexpl.c randoml.c
-EXTRA_DIST += test-frexpl.c test-frexp.h minus-zero.h infinity.h nan.h signature.h macros.h randoml.c
+EXTRA_DIST += test-frexpl.c test-frexp.h minus-zero.h infinity.h signature.h macros.h randoml.c
## end gnulib module frexpl-nolibm-tests
@@ -667,7 +945,11 @@ endif
## begin gnulib module getprogname
-libtests_a_SOURCES += getprogname.h getprogname.c
+if GL_COND_OBJ_GETPROGNAME
+libtests_a_SOURCES += getprogname.c
+endif
+
+EXTRA_DIST += getprogname.h
## end gnulib module getprogname
@@ -700,7 +982,7 @@ endif
TESTS += test-gettimeofday
check_PROGRAMS += test-gettimeofday
-EXTRA_DIST += signature.h test-gettimeofday.c
+EXTRA_DIST += test-gettimeofday.c signature.h macros.h
## end gnulib module gettimeofday-tests
@@ -717,7 +999,7 @@ V_GPERF_0 = @echo " GPERF " $@;
TESTS += test-hard-locale
check_PROGRAMS += test-hard-locale
-test_hard_locale_LDADD = $(LDADD) $(LIB_SETLOCALE) @LIB_HARD_LOCALE@
+test_hard_locale_LDADD = $(LDADD) $(SETLOCALE_LIB) @HARD_LOCALE_LIB@
# We cannot call this program 'locale', because the C++ compiler on Mac OS X
# would then barf upon '#include <locale>'. So, call it 'current-locale'.
noinst_PROGRAMS += current-locale
@@ -846,7 +1128,7 @@ EXTRA_DIST += test-isblank.c signature.h macros.h
TESTS += test-isnand-nolibm
check_PROGRAMS += test-isnand-nolibm
-EXTRA_DIST += test-isnand-nolibm.c test-isnand.h minus-zero.h infinity.h nan.h macros.h
+EXTRA_DIST += test-isnand-nolibm.c test-isnand.h minus-zero.h infinity.h macros.h
## end gnulib module isnand-nolibm-tests
@@ -855,7 +1137,7 @@ EXTRA_DIST += test-isnand-nolibm.c test-isnand.h minus-zero.h infinity.h nan.h m
TESTS += test-isnanf-nolibm
check_PROGRAMS += test-isnanf-nolibm
-EXTRA_DIST += test-isnanf-nolibm.c test-isnanf.h minus-zero.h infinity.h nan.h macros.h
+EXTRA_DIST += test-isnanf-nolibm.c test-isnanf.h minus-zero.h infinity.h macros.h
## end gnulib module isnanf-nolibm-tests
@@ -864,7 +1146,7 @@ EXTRA_DIST += test-isnanf-nolibm.c test-isnanf.h minus-zero.h infinity.h nan.h m
TESTS += test-isnanl-nolibm
check_PROGRAMS += test-isnanl-nolibm
-EXTRA_DIST += test-isnanl-nolibm.c test-isnanl.h minus-zero.h infinity.h nan.h macros.h
+EXTRA_DIST += test-isnanl-nolibm.c test-isnanl.h minus-zero.h infinity.h macros.h
## end gnulib module isnanl-nolibm-tests
@@ -885,11 +1167,20 @@ TESTS_ENVIRONMENT += \
LOCALE_JA='@LOCALE_JA@' \
LOCALE_ZH_CN='@LOCALE_ZH_CN@'
check_PROGRAMS += test-iswdigit
-test_iswdigit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
+test_iswdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
EXTRA_DIST += test-iswdigit.sh test-iswdigit.c signature.h macros.h
## end gnulib module iswdigit-tests
+## begin gnulib module iswpunct-tests
+
+TESTS += test-iswpunct.sh
+check_PROGRAMS += test-iswpunct
+test_iswpunct_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
+EXTRA_DIST += test-iswpunct.sh test-iswpunct.c signature.h macros.h
+
+## end gnulib module iswpunct-tests
+
## begin gnulib module iswxdigit-tests
TESTS += test-iswxdigit.sh
@@ -899,7 +1190,7 @@ TESTS_ENVIRONMENT += \
LOCALE_JA='@LOCALE_JA@' \
LOCALE_ZH_CN='@LOCALE_ZH_CN@'
check_PROGRAMS += test-iswxdigit
-test_iswxdigit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
+test_iswxdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
EXTRA_DIST += test-iswxdigit.sh test-iswxdigit.c signature.h macros.h
## end gnulib module iswxdigit-tests
@@ -912,6 +1203,21 @@ EXTRA_DIST += test-langinfo.c
## end gnulib module langinfo-tests
+## begin gnulib module largefile-tests
+
+TESTS += test-largefile
+check_PROGRAMS += test-largefile
+EXTRA_DIST += test-largefile.c
+
+## end gnulib module largefile-tests
+
+## begin gnulib module libc-config
+
+
+EXTRA_DIST += cdefs.h libc-config.h
+
+## end gnulib module libc-config
+
## begin gnulib module limits-h-tests
TESTS += test-limits-h
@@ -942,7 +1248,7 @@ EXTRA_DIST += test-listen.c signature.h macros.h
## begin gnulib module localcharset-tests
noinst_PROGRAMS += test-localcharset
-test_localcharset_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_localcharset_LDADD = $(LDADD) $(SETLOCALE_LIB)
EXTRA_DIST += test-localcharset.c
## end gnulib module localcharset-tests
@@ -959,7 +1265,7 @@ EXTRA_DIST += test-locale.c
TESTS += test-localename
check_PROGRAMS += test-localename
-test_localename_LDADD = $(LDADD) $(LIB_SETLOCALE) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_localename_LDADD = $(LDADD) $(SETLOCALE_LIB) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
EXTRA_DIST += test-localename.c macros.h
@@ -975,7 +1281,7 @@ test_once1_SOURCES = test-once.c
test_once1_LDADD = $(LDADD) @LIBTHREAD@
test_once2_SOURCES = test-once.c
test_once2_LDADD = $(LDADD) @LIBMULTITHREAD@
-EXTRA_DIST += test-rwlock1.c test-lock.c test-once.c atomic-int-gnulib.h
+EXTRA_DIST += test-rwlock1.c test-lock.c test-once.c atomic-int-gnulib.h macros.h
## end gnulib module lock-tests
@@ -1029,22 +1335,41 @@ EXTRA_DIST += test-math.c macros.h
## end gnulib module math-tests
+## begin gnulib module mbrtoc32-tests
+
+TESTS += \
+ test-mbrtoc32-1.sh test-mbrtoc32-2.sh test-mbrtoc32-3.sh test-mbrtoc32-4.sh \
+ test-mbrtoc32-5.sh \
+ test-mbrtoc32-w32-2.sh test-mbrtoc32-w32-3.sh test-mbrtoc32-w32-4.sh \
+ test-mbrtoc32-w32-5.sh test-mbrtoc32-w32-6.sh test-mbrtoc32-w32-7.sh \
+ test-mbrtoc32-w32-8.sh
+TESTS_ENVIRONMENT += \
+ LOCALE_FR='@LOCALE_FR@' \
+ LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' \
+ LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+check_PROGRAMS += test-mbrtoc32 test-mbrtoc32-w32
+test_mbrtoc32_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBC32CONV)
+EXTRA_DIST += test-mbrtoc32-1.sh test-mbrtoc32-2.sh test-mbrtoc32-3.sh test-mbrtoc32-4.sh test-mbrtoc32-5.sh test-mbrtoc32.c test-mbrtoc32-w32-2.sh test-mbrtoc32-w32-3.sh test-mbrtoc32-w32-4.sh test-mbrtoc32-w32-5.sh test-mbrtoc32-w32-6.sh test-mbrtoc32-w32-7.sh test-mbrtoc32-w32-8.sh test-mbrtoc32-w32.c signature.h macros.h
+
+## end gnulib module mbrtoc32-tests
+
## begin gnulib module mbrtowc-tests
TESTS += \
- test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \
- test-mbrtowc5.sh \
- test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \
- test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh \
- test-mbrtowc-w32-7.sh
+ test-mbrtowc-1.sh test-mbrtowc-2.sh test-mbrtowc-3.sh test-mbrtowc-4.sh \
+ test-mbrtowc-5.sh \
+ test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh \
+ test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh \
+ test-mbrtowc-w32-8.sh
TESTS_ENVIRONMENT += \
LOCALE_FR='@LOCALE_FR@' \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
LOCALE_JA='@LOCALE_JA@' \
LOCALE_ZH_CN='@LOCALE_ZH_CN@'
check_PROGRAMS += test-mbrtowc test-mbrtowc-w32
-test_mbrtowc_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
-EXTRA_DIST += test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc5.sh test-mbrtowc.c test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh test-mbrtowc-w32.c signature.h macros.h
+test_mbrtowc_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
+EXTRA_DIST += test-mbrtowc-1.sh test-mbrtowc-2.sh test-mbrtowc-3.sh test-mbrtowc-4.sh test-mbrtowc-5.sh test-mbrtowc.c test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh test-mbrtowc-w32-8.sh test-mbrtowc-w32.c signature.h macros.h
## end gnulib module mbrtowc-tests
@@ -1053,7 +1378,7 @@ EXTRA_DIST += test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.s
TESTS += test-mbsinit.sh
TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
check_PROGRAMS += test-mbsinit
-test_mbsinit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
+test_mbsinit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
EXTRA_DIST += test-mbsinit.sh test-mbsinit.c signature.h macros.h
## end gnulib module mbsinit-tests
@@ -1096,6 +1421,12 @@ EXTRA_DIST += msvc-nothrow.h
## end gnulib module msvc-nothrow
+## begin gnulib module nan
+
+libtests_a_SOURCES += nan.h
+
+## end gnulib module nan
+
## begin gnulib module nanosleep
if GL_COND_OBJ_NANOSLEEP
@@ -1108,7 +1439,7 @@ endif
TESTS += test-nanosleep
check_PROGRAMS += test-nanosleep
-test_nanosleep_LDADD = $(LDADD) $(LIB_NANOSLEEP)
+test_nanosleep_LDADD = $(LDADD) $(NANOSLEEP_LIB)
EXTRA_DIST += test-nanosleep.c signature.h macros.h
## end gnulib module nanosleep-tests
@@ -1241,7 +1572,7 @@ endif
TESTS += test-pselect
check_PROGRAMS += test-pselect
-test_pselect_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ @LIB_PTHREAD_SIGMASK@ $(INET_PTON_LIB)
+test_pselect_LDADD = $(LDADD) @SELECT_LIB@ @LIBSOCKET@ @PTHREAD_SIGMASK_LIB@ $(INET_PTON_LIB)
EXTRA_DIST += test-pselect.c test-select.h macros.h signature.h
## end gnulib module pselect-tests
@@ -1284,6 +1615,8 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e 's|@''HAVE_PTHREAD_DETACH''@|$(HAVE_PTHREAD_DETACH)|g' \
-e 's|@''HAVE_PTHREAD_JOIN''@|$(HAVE_PTHREAD_JOIN)|g' \
-e 's|@''HAVE_PTHREAD_EXIT''@|$(HAVE_PTHREAD_EXIT)|g' \
+ < $(srcdir)/pthread.in.h > $@-t1
+ $(AM_V_at)sed \
-e 's|@''HAVE_PTHREAD_ONCE''@|$(HAVE_PTHREAD_ONCE)|g' \
-e 's|@''HAVE_PTHREAD_MUTEX_INIT''@|$(HAVE_PTHREAD_MUTEX_INIT)|g' \
-e 's|@''HAVE_PTHREAD_MUTEXATTR_INIT''@|$(HAVE_PTHREAD_MUTEXATTR_INIT)|g' \
@@ -1325,8 +1658,9 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e 's|@''HAVE_PTHREAD_SPIN_TRYLOCK''@|$(HAVE_PTHREAD_SPIN_TRYLOCK)|g' \
-e 's|@''HAVE_PTHREAD_SPIN_UNLOCK''@|$(HAVE_PTHREAD_SPIN_UNLOCK)|g' \
-e 's|@''HAVE_PTHREAD_SPIN_DESTROY''@|$(HAVE_PTHREAD_SPIN_DESTROY)|g' \
- < $(srcdir)/pthread.in.h | \
- sed -e 's|@''REPLACE_PTHREAD_CREATE''@|$(REPLACE_PTHREAD_CREATE)|g' \
+ < $@-t1 > $@-t2
+ $(AM_V_at)sed \
+ -e 's|@''REPLACE_PTHREAD_CREATE''@|$(REPLACE_PTHREAD_CREATE)|g' \
-e 's|@''REPLACE_PTHREAD_ATTR_INIT''@|$(REPLACE_PTHREAD_ATTR_INIT)|g' \
-e 's|@''REPLACE_PTHREAD_ATTR_GETDETACHSTATE''@|$(REPLACE_PTHREAD_ATTR_GETDETACHSTATE)|g' \
-e 's|@''REPLACE_PTHREAD_ATTR_SETDETACHSTATE''@|$(REPLACE_PTHREAD_ATTR_SETDETACHSTATE)|g' \
@@ -1360,6 +1694,8 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e 's|@''REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK)|g' \
-e 's|@''REPLACE_PTHREAD_RWLOCK_UNLOCK''@|$(REPLACE_PTHREAD_RWLOCK_UNLOCK)|g' \
-e 's|@''REPLACE_PTHREAD_RWLOCK_DESTROY''@|$(REPLACE_PTHREAD_RWLOCK_DESTROY)|g' \
+ < $@-t2 > $@-t3
+ $(AM_V_at)sed \
-e 's|@''REPLACE_PTHREAD_COND_INIT''@|$(REPLACE_PTHREAD_COND_INIT)|g' \
-e 's|@''REPLACE_PTHREAD_CONDATTR_INIT''@|$(REPLACE_PTHREAD_CONDATTR_INIT)|g' \
-e 's|@''REPLACE_PTHREAD_CONDATTR_DESTROY''@|$(REPLACE_PTHREAD_CONDATTR_DESTROY)|g' \
@@ -1381,9 +1717,10 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e '/definition of _Noreturn/r $(_NORETURN_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- > $@-t
- $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += pthread.h pthread.h-t
+ < $@-t3 > $@-t4
+ $(AM_V_at)rm -f $@-t1 $@-t2 $@-t3
+ $(AM_V_at)mv $@-t4 $@
+MOSTLYCLEANFILES += pthread.h pthread.h-t1 pthread.h-t2 pthread.h-t3 pthread.h-t4
EXTRA_DIST += pthread.in.h
@@ -1426,8 +1763,8 @@ endif
TESTS += test-pthread_sigmask1 test-pthread_sigmask2
check_PROGRAMS += test-pthread_sigmask1 test-pthread_sigmask2
-test_pthread_sigmask1_LDADD = $(LDADD) @LIB_PTHREAD_SIGMASK@
-test_pthread_sigmask2_LDADD = $(LDADD) @LIB_PTHREAD_SIGMASK@ @LIBMULTITHREAD@
+test_pthread_sigmask1_LDADD = $(LDADD) @PTHREAD_SIGMASK_LIB@
+test_pthread_sigmask2_LDADD = $(LDADD) @PTHREAD_SIGMASK_LIB@ @LIBMULTITHREAD@
EXTRA_DIST += test-pthread_sigmask1.c test-pthread_sigmask2.c signature.h macros.h
## end gnulib module pthread_sigmask-tests
@@ -1456,6 +1793,39 @@ EXTRA_DIST += test-raise.c signature.h macros.h
## end gnulib module raise-tests
+## begin gnulib module random
+
+if GL_COND_OBJ_RANDOM
+libtests_a_SOURCES += random.c
+endif
+
+## end gnulib module random
+
+## begin gnulib module random-tests
+
+TESTS += test-random test-random-mt
+check_PROGRAMS += test-random test-random-mt
+test_random_mt_LDADD = $(LDADD) $(LIBINTL) $(LIBMULTITHREAD) $(YIELD_LIB)
+EXTRA_DIST += test-random.c test-random-mt.c signature.h macros.h
+
+## end gnulib module random-tests
+
+## begin gnulib module random_r
+
+if GL_COND_OBJ_RANDOM_R
+libtests_a_SOURCES += random_r.c
+endif
+
+## end gnulib module random_r
+
+## begin gnulib module random_r-tests
+
+TESTS += test-random_r
+check_PROGRAMS += test-random_r
+EXTRA_DIST += test-random_r.c signature.h macros.h
+
+## end gnulib module random_r-tests
+
## begin gnulib module realloc-gnu
@@ -1500,8 +1870,7 @@ EXTRA_DIST += test-reallocarray.c signature.h macros.h
## begin gnulib module same-inode
-
-EXTRA_DIST += same-inode.h
+libtests_a_SOURCES += same-inode.h same-inode.c
## end gnulib module same-inode
@@ -1563,9 +1932,9 @@ endif
TESTS += test-select test-select-in.sh test-select-out.sh
# test-select-stdin has to be run by hand.
check_PROGRAMS += test-select test-select-fd test-select-stdin
-test_select_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ $(INET_PTON_LIB)
-test_select_fd_LDADD = $(LDADD) @LIB_SELECT@
-test_select_stdin_LDADD = $(LDADD) @LIB_SELECT@
+test_select_LDADD = $(LDADD) @SELECT_LIB@ @LIBSOCKET@ $(INET_PTON_LIB)
+test_select_fd_LDADD = $(LDADD) @SELECT_LIB@
+test_select_stdin_LDADD = $(LDADD) @SELECT_LIB@
EXTRA_DIST += macros.h signature.h test-select.c test-select.h test-select-fd.c test-select-in.sh test-select-out.sh test-select-stdin.c
## end gnulib module select-tests
@@ -1604,13 +1973,21 @@ check_PROGRAMS += \
test-setlocale_null \
test-setlocale_null-mt-one \
test-setlocale_null-mt-all
-test_setlocale_null_LDADD = $(LDADD) @LIB_SETLOCALE_NULL@
-test_setlocale_null_mt_one_LDADD = $(LDADD) @LIB_SETLOCALE_NULL@ $(LIBMULTITHREAD) $(LIB_NANOSLEEP)
-test_setlocale_null_mt_all_LDADD = $(LDADD) @LIB_SETLOCALE_NULL@ $(LIBMULTITHREAD) $(LIB_NANOSLEEP)
+test_setlocale_null_LDADD = $(LDADD) @SETLOCALE_NULL_LIB@
+test_setlocale_null_mt_one_LDADD = $(LDADD) @SETLOCALE_NULL_LIB@ $(LIBMULTITHREAD) $(NANOSLEEP_LIB)
+test_setlocale_null_mt_all_LDADD = $(LDADD) @SETLOCALE_NULL_LIB@ $(LIBMULTITHREAD) $(NANOSLEEP_LIB)
EXTRA_DIST += test-setlocale_null.c test-setlocale_null-mt-one.c test-setlocale_null-mt-all.c
## end gnulib module setlocale-null-tests
+## begin gnulib module setlocale-null-unlocked-tests
+
+TESTS += test-setlocale_null-unlocked
+check_PROGRAMS += test-setlocale_null-unlocked
+EXTRA_DIST += test-setlocale_null-unlocked.c
+
+## end gnulib module setlocale-null-unlocked-tests
+
## begin gnulib module setlocale-tests
TESTS += test-setlocale1.sh test-setlocale2.sh
@@ -1620,8 +1997,8 @@ TESTS_ENVIRONMENT += \
LOCALE_JA='@LOCALE_JA@' \
LOCALE_ZH_CN='@LOCALE_ZH_CN@'
check_PROGRAMS += test-setlocale1 test-setlocale2
-test_setlocale1_LDADD = $(LDADD) @LIB_SETLOCALE@
-test_setlocale2_LDADD = $(LDADD) @LIB_SETLOCALE@
+test_setlocale1_LDADD = $(LDADD) @SETLOCALE_LIB@
+test_setlocale2_LDADD = $(LDADD) @SETLOCALE_LIB@
EXTRA_DIST += test-setlocale1.sh test-setlocale1.c test-setlocale2.sh test-setlocale2.c signature.h macros.h
## end gnulib module setlocale-tests
@@ -1702,6 +2079,18 @@ EXTRA_DIST += test-signbit.c minus-zero.h infinity.h macros.h
## end gnulib module signbit-tests
+## begin gnulib module signed-nan
+
+libtests_a_SOURCES += signed-nan.h
+
+## end gnulib module signed-nan
+
+## begin gnulib module signed-snan
+
+libtests_a_SOURCES += signed-snan.h
+
+## end gnulib module signed-snan
+
## begin gnulib module sigprocmask
if GL_COND_OBJ_SIGPROCMASK
@@ -1734,6 +2123,12 @@ EXTRA_DIST += test-sleep.c signature.h macros.h
## end gnulib module sleep-tests
+## begin gnulib module snan
+
+libtests_a_SOURCES += snan.h
+
+## end gnulib module snan
+
## begin gnulib module snippet/_Noreturn
# Because this Makefile snippet defines a variable used by other
@@ -1842,39 +2237,11 @@ EXTRA_DIST += stat-time.h
TESTS += test-stat-time
check_PROGRAMS += test-stat-time
-test_stat_time_LDADD = $(LDADD) $(LIB_NANOSLEEP)
+test_stat_time_LDADD = $(LDADD) $(NANOSLEEP_LIB)
EXTRA_DIST += test-stat-time.c macros.h nap.h
## end gnulib module stat-time-tests
-## begin gnulib module stdalign
-
-BUILT_SOURCES += $(STDALIGN_H)
-
-# We need the following in order to create <stdalign.h> when the system
-# doesn't have one that works.
-if GL_GENERATE_STDALIGN_H
-stdalign.h: stdalign.in.h $(top_builddir)/config.status
- $(gl_V_at)$(SED_HEADER_TO_AT_t) $(srcdir)/stdalign.in.h
- $(AM_V_at)mv $@-t $@
-else
-stdalign.h: $(top_builddir)/config.status
- rm -f $@
-endif
-MOSTLYCLEANFILES += stdalign.h stdalign.h-t
-
-EXTRA_DIST += stdalign.in.h
-
-## end gnulib module stdalign
-
-## begin gnulib module stdalign-tests
-
-TESTS += test-stdalign
-check_PROGRAMS += test-stdalign
-EXTRA_DIST += test-stdalign.c macros.h
-
-## end gnulib module stdalign-tests
-
## begin gnulib module stdbool-tests
TESTS += test-stdbool
@@ -1980,14 +2347,17 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \
-e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \
-e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \
- < $(srcdir)/stdio.in.h | \
- sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
+ < $(srcdir)/stdio.in.h > $@-t1
+ $(AM_V_at)sed \
+ -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
-e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
-e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
-e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
-e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
-e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+ -e 's|@''HAVE_DECL_GETW''@|$(HAVE_DECL_GETW)|g' \
-e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+ -e 's|@''HAVE_DECL_PUTW''@|$(HAVE_DECL_PUTW)|g' \
-e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
-e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
-e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
@@ -1998,6 +2368,8 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
-e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
-e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+ < $@-t1 > $@-t2
+ $(AM_V_at)sed \
-e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
-e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
-e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
@@ -2035,9 +2407,10 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- > $@-t
- $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += stdio.h stdio.h-t
+ < $@-t2 > $@-t3
+ $(AM_V_at)rm -f $@-t1 $@-t2
+ $(AM_V_at)mv $@-t3 $@
+MOSTLYCLEANFILES += stdio.h stdio.h-t1 stdio.h-t2 stdio.h-t3
if GL_COND_OBJ_STDIO_READ
libtests_a_SOURCES += stdio-read.c
@@ -2054,7 +2427,7 @@ EXTRA_DIST += stdio.in.h
TESTS += test-stdio
check_PROGRAMS += test-stdio
-EXTRA_DIST += test-stdio.c
+EXTRA_DIST += test-stdio.c macros.h
## end gnulib module stdio-tests
@@ -2493,6 +2866,14 @@ EXTRA_DIST += test-thread_self.c test-thread_create.c macros.h
## begin gnulib module time
+if GL_COND_OBJ_TIME
+libtests_a_SOURCES += time.c
+endif
+
+## end gnulib module time
+
+## begin gnulib module time-h
+
BUILT_SOURCES += time.h
# We need the following in order to create <time.h> when the system
@@ -2510,6 +2891,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
-e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \
-e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \
-e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \
+ -e 's/@''GNULIB_TIME''@/$(GL_GNULIB_TIME)/g' \
-e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \
-e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \
-e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \
@@ -2531,7 +2913,10 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
-e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
-e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \
+ -e 's|@''REPLACE_TIME''@|$(REPLACE_TIME)|g' \
-e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \
+ -e 's|@''REPLACE_TIMESPEC_GETRES''@|$(REPLACE_TIMESPEC_GETRES)|g' \
-e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \
-e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
-e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
@@ -2547,16 +2932,32 @@ MOSTLYCLEANFILES += time.h time.h-t
EXTRA_DIST += time.in.h
-## end gnulib module time
+## end gnulib module time-h
+
+## begin gnulib module time-h-tests
+
+TESTS += test-time-h
+check_PROGRAMS += test-time-h
+EXTRA_DIST += test-time-h.c
+
+## end gnulib module time-h-tests
## begin gnulib module time-tests
TESTS += test-time
check_PROGRAMS += test-time
-EXTRA_DIST += test-time.c
+EXTRA_DIST += test-time.c signature.h macros.h
## end gnulib module time-tests
+## begin gnulib module uchar-tests
+
+TESTS += test-uchar
+check_PROGRAMS += test-uchar
+EXTRA_DIST += test-uchar.c
+
+## end gnulib module uchar-tests
+
## begin gnulib module unicase/cased-tests
TESTS += test-cased
@@ -2583,7 +2984,7 @@ TESTS += unicase/test-locale-language.sh
TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' LOCALE_ZH_CN='@LOCALE_ZH_CN@'
check_PROGRAMS += test-locale-language
test_locale_language_SOURCES = unicase/test-locale-language.c
-test_locale_language_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_locale_language_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
EXTRA_DIST += unicase/test-locale-language.sh unicase/test-locale-language.c macros.h
## end gnulib module unicase/locale-language-tests
@@ -2959,7 +3360,7 @@ TESTS_ENVIRONMENT += \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
check_PROGRAMS += test-ulc-casecmp
test_ulc_casecmp_SOURCES = unicase/test-ulc-casecmp.c
-test_ulc_casecmp_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_casecmp_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh unicase/test-ulc-casecmp.c unicase/test-casecmp.h macros.h
@@ -2973,7 +3374,7 @@ TESTS_ENVIRONMENT += \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
check_PROGRAMS += test-ulc-casecoll
test_ulc_casecoll_SOURCES = unicase/test-ulc-casecoll.c
-test_ulc_casecoll_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_casecoll_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh unicase/test-ulc-casecoll.c unicase/test-casecmp.h macros.h
@@ -3843,6 +4244,36 @@ EXTRA_DIST += unictype/test-digit.c unictype/test-digit.h macros.h
## end gnulib module unictype/digit-tests
+## begin gnulib module unictype/incb-byname-tests
+
+TESTS += test-incb_byname
+check_PROGRAMS += test-incb_byname
+test_incb_byname_SOURCES = unictype/test-incb_byname.c
+test_incb_byname_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-incb_byname.c macros.h
+
+## end gnulib module unictype/incb-byname-tests
+
+## begin gnulib module unictype/incb-name-tests
+
+TESTS += test-incb_name
+check_PROGRAMS += test-incb_name
+test_incb_name_SOURCES = unictype/test-incb_name.c
+test_incb_name_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-incb_name.c macros.h
+
+## end gnulib module unictype/incb-name-tests
+
+## begin gnulib module unictype/incb-of-tests
+
+TESTS += test-incb_of
+check_PROGRAMS += test-incb_of
+test_incb_of_SOURCES = unictype/test-incb_of.c
+test_incb_of_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-incb_of.c unictype/test-incb_of.h macros.h
+
+## end gnulib module unictype/incb-of-tests
+
## begin gnulib module unictype/joininggroup-byname-tests
TESTS += test-joininggroup_byname
@@ -4413,6 +4844,26 @@ EXTRA_DIST += unictype/test-pr_hyphen.c unictype/test-predicate-part1.h unictype
## end gnulib module unictype/property-hyphen-tests
+## begin gnulib module unictype/property-id-compat-math-continue-tests
+
+TESTS += test-pr_id_compat_math_continue
+check_PROGRAMS += test-pr_id_compat_math_continue
+test_pr_id_compat_math_continue_SOURCES = unictype/test-pr_id_compat_math_continue.c
+test_pr_id_compat_math_continue_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-pr_id_compat_math_continue.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h macros.h
+
+## end gnulib module unictype/property-id-compat-math-continue-tests
+
+## begin gnulib module unictype/property-id-compat-math-start-tests
+
+TESTS += test-pr_id_compat_math_start
+check_PROGRAMS += test-pr_id_compat_math_start
+test_pr_id_compat_math_start_SOURCES = unictype/test-pr_id_compat_math_start.c
+test_pr_id_compat_math_start_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-pr_id_compat_math_start.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h macros.h
+
+## end gnulib module unictype/property-id-compat-math-start-tests
+
## begin gnulib module unictype/property-id-continue-tests
TESTS += test-pr_id_continue
@@ -4463,6 +4914,16 @@ EXTRA_DIST += unictype/test-pr_ids_trinary_operator.c unictype/test-predicate-pa
## end gnulib module unictype/property-ids-trinary-operator-tests
+## begin gnulib module unictype/property-ids-unary-operator-tests
+
+TESTS += test-pr_ids_unary_operator
+check_PROGRAMS += test-pr_ids_unary_operator
+test_pr_ids_unary_operator_SOURCES = unictype/test-pr_ids_unary_operator.c
+test_pr_ids_unary_operator_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-pr_ids_unary_operator.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h macros.h
+
+## end gnulib module unictype/property-ids-unary-operator-tests
+
## begin gnulib module unictype/property-ignorable-control-tests
TESTS += test-pr_ignorable_control
@@ -4693,6 +5154,16 @@ EXTRA_DIST += unictype/test-pr_pattern_white_space.c unictype/test-predicate-par
## end gnulib module unictype/property-pattern-white-space-tests
+## begin gnulib module unictype/property-prepended-concatenation-mark-tests
+
+TESTS += test-pr_prepended_concatenation_mark
+check_PROGRAMS += test-pr_prepended_concatenation_mark
+test_pr_prepended_concatenation_mark_SOURCES = unictype/test-pr_prepended_concatenation_mark.c
+test_pr_prepended_concatenation_mark_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unictype/test-pr_prepended_concatenation_mark.c unictype/test-predicate-part1.h unictype/test-predicate-part2.h macros.h
+
+## end gnulib module unictype/property-prepended-concatenation-mark-tests
+
## begin gnulib module unictype/property-private-use-tests
TESTS += test-pr_private_use
@@ -4939,7 +5410,7 @@ TESTS += test-u16-grapheme-breaks
check_PROGRAMS += test-u16-grapheme-breaks
test_u16_grapheme_breaks_SOURCES = unigbrk/test-u16-grapheme-breaks.c
test_u16_grapheme_breaks_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u16-grapheme-breaks.c
+EXTRA_DIST += unigbrk/test-u16-grapheme-breaks.c macros.h
## end gnulib module unigbrk/u16-grapheme-breaks-tests
@@ -4949,7 +5420,7 @@ TESTS += test-u16-grapheme-next
check_PROGRAMS += test-u16-grapheme-next
test_u16_grapheme_next_SOURCES = unigbrk/test-u16-grapheme-next.c
test_u16_grapheme_next_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u16-grapheme-next.c
+EXTRA_DIST += unigbrk/test-u16-grapheme-next.c macros.h
## end gnulib module unigbrk/u16-grapheme-next-tests
@@ -4959,7 +5430,7 @@ TESTS += test-u16-grapheme-prev
check_PROGRAMS += test-u16-grapheme-prev
test_u16_grapheme_prev_SOURCES = unigbrk/test-u16-grapheme-prev.c
test_u16_grapheme_prev_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u16-grapheme-prev.c
+EXTRA_DIST += unigbrk/test-u16-grapheme-prev.c macros.h
## end gnulib module unigbrk/u16-grapheme-prev-tests
@@ -4969,7 +5440,7 @@ TESTS += test-u32-grapheme-breaks
check_PROGRAMS += test-u32-grapheme-breaks
test_u32_grapheme_breaks_SOURCES = unigbrk/test-u32-grapheme-breaks.c
test_u32_grapheme_breaks_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u32-grapheme-breaks.c
+EXTRA_DIST += unigbrk/test-u32-grapheme-breaks.c macros.h
## end gnulib module unigbrk/u32-grapheme-breaks-tests
@@ -4979,7 +5450,7 @@ TESTS += test-u32-grapheme-next
check_PROGRAMS += test-u32-grapheme-next
test_u32_grapheme_next_SOURCES = unigbrk/test-u32-grapheme-next.c
test_u32_grapheme_next_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u32-grapheme-next.c
+EXTRA_DIST += unigbrk/test-u32-grapheme-next.c macros.h
## end gnulib module unigbrk/u32-grapheme-next-tests
@@ -4989,7 +5460,7 @@ TESTS += test-u32-grapheme-prev
check_PROGRAMS += test-u32-grapheme-prev
test_u32_grapheme_prev_SOURCES = unigbrk/test-u32-grapheme-prev.c
test_u32_grapheme_prev_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u32-grapheme-prev.c
+EXTRA_DIST += unigbrk/test-u32-grapheme-prev.c macros.h
## end gnulib module unigbrk/u32-grapheme-prev-tests
@@ -4999,7 +5470,7 @@ TESTS += test-u8-grapheme-breaks
check_PROGRAMS += test-u8-grapheme-breaks
test_u8_grapheme_breaks_SOURCES = unigbrk/test-u8-grapheme-breaks.c
test_u8_grapheme_breaks_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u8-grapheme-breaks.c
+EXTRA_DIST += unigbrk/test-u8-grapheme-breaks.c macros.h
## end gnulib module unigbrk/u8-grapheme-breaks-tests
@@ -5009,7 +5480,7 @@ TESTS += test-u8-grapheme-next
check_PROGRAMS += test-u8-grapheme-next
test_u8_grapheme_next_SOURCES = unigbrk/test-u8-grapheme-next.c
test_u8_grapheme_next_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u8-grapheme-next.c
+EXTRA_DIST += unigbrk/test-u8-grapheme-next.c macros.h
## end gnulib module unigbrk/u8-grapheme-next-tests
@@ -5019,7 +5490,7 @@ TESTS += test-u8-grapheme-prev
check_PROGRAMS += test-u8-grapheme-prev
test_u8_grapheme_prev_SOURCES = unigbrk/test-u8-grapheme-prev.c
test_u8_grapheme_prev_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-u8-grapheme-prev.c
+EXTRA_DIST += unigbrk/test-u8-grapheme-prev.c macros.h
## end gnulib module unigbrk/u8-grapheme-prev-tests
@@ -5039,7 +5510,7 @@ TESTS += unigbrk/test-uc-grapheme-breaks.sh
check_PROGRAMS += test-uc-grapheme-breaks
test_uc_grapheme_breaks_SOURCES = unigbrk/test-uc-grapheme-breaks.c
test_uc_grapheme_breaks_LDADD = $(LDADD) $(LIBUNISTRING)
-EXTRA_DIST += unigbrk/test-uc-grapheme-breaks.c unigbrk/test-uc-grapheme-breaks.sh unigbrk/GraphemeBreakTest.txt
+EXTRA_DIST += unigbrk/test-uc-grapheme-breaks.c unigbrk/test-uc-grapheme-breaks.sh unigbrk/GraphemeBreakTest.txt macros.h
## end gnulib module unigbrk/uc-grapheme-breaks-tests
@@ -5059,7 +5530,7 @@ TESTS += unigbrk/test-ulc-grapheme-breaks.sh
TESTS_ENVIRONMENT += LOCALE_AR='@LOCALE_AR@'
check_PROGRAMS += test-ulc-grapheme-breaks
test_ulc_grapheme_breaks_SOURCES = unigbrk/test-ulc-grapheme-breaks.c
-test_ulc_grapheme_breaks_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_grapheme_breaks_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += unigbrk/test-ulc-grapheme-breaks.sh unigbrk/test-ulc-grapheme-breaks.c macros.h
## end gnulib module unigbrk/ulc-grapheme-breaks-tests
@@ -5146,6 +5617,16 @@ EXTRA_DIST += unilbrk/test-ulc-width-linebreaks.c macros.h
## end gnulib module unilbrk/ulc-width-linebreaks-tests
+## begin gnulib module unimetadata/u-version-tests
+
+TESTS += test-u-version
+check_PROGRAMS += test-u-version
+test_u_version_SOURCES = unimetadata/test-u-version.c
+test_u_version_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unimetadata/test-u-version.c macros.h
+
+## end gnulib module unimetadata/u-version-tests
+
## begin gnulib module uniname/uniname-tests
# Unlike other libunistring modules, this test passes only when the
@@ -5385,9 +5866,9 @@ check_PROGRAMS += test-u16-vasnprintf1 test-u16-vasnprintf2 test-u16-vasnprintf3
test_u16_vasnprintf1_SOURCES = unistdio/test-u16-vasnprintf1.c
test_u16_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u16_vasnprintf2_SOURCES = unistdio/test-u16-vasnprintf2.c
-test_u16_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u16_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u16_vasnprintf3_SOURCES = unistdio/test-u16-vasnprintf3.c
-test_u16_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u16_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += unistdio/test-u16-vasnprintf1.c unistdio/test-u16-asnprintf1.h unistdio/test-u16-printf1.h unistdio/test-u16-vasnprintf2.sh unistdio/test-u16-vasnprintf2.c unistdio/test-u16-vasnprintf3.sh unistdio/test-u16-vasnprintf3.c macros.h
## end gnulib module unistdio/u16-vasnprintf-tests
@@ -5440,9 +5921,9 @@ check_PROGRAMS += test-u32-vasnprintf1 test-u32-vasnprintf2 test-u32-vasnprintf3
test_u32_vasnprintf1_SOURCES = unistdio/test-u32-vasnprintf1.c
test_u32_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u32_vasnprintf2_SOURCES = unistdio/test-u32-vasnprintf2.c
-test_u32_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u32_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u32_vasnprintf3_SOURCES = unistdio/test-u32-vasnprintf3.c
-test_u32_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u32_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += unistdio/test-u32-vasnprintf1.c unistdio/test-u32-asnprintf1.h unistdio/test-u32-printf1.h unistdio/test-u32-vasnprintf2.sh unistdio/test-u32-vasnprintf2.c unistdio/test-u32-vasnprintf3.sh unistdio/test-u32-vasnprintf3.c macros.h
## end gnulib module unistdio/u32-vasnprintf-tests
@@ -5495,9 +5976,9 @@ check_PROGRAMS += test-u8-vasnprintf1 test-u8-vasnprintf2 test-u8-vasnprintf3
test_u8_vasnprintf1_SOURCES = unistdio/test-u8-vasnprintf1.c
test_u8_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u8_vasnprintf2_SOURCES = unistdio/test-u8-vasnprintf2.c
-test_u8_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u8_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u8_vasnprintf3_SOURCES = unistdio/test-u8-vasnprintf3.c
-test_u8_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u8_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += unistdio/test-u8-vasnprintf1.c unistdio/test-u8-asnprintf1.h unistdio/test-u8-printf1.h unistdio/test-u8-vasnprintf2.sh unistdio/test-u8-vasnprintf2.c unistdio/test-u8-vasnprintf3.sh unistdio/test-u8-vasnprintf3.c macros.h
## end gnulib module unistdio/u8-vasnprintf-tests
@@ -5537,7 +6018,7 @@ EXTRA_DIST += unistdio/test-u8-vsprintf1.c unistdio/test-u8-printf1.h macros.h
TESTS += test-ulc-asnprintf1
check_PROGRAMS += test-ulc-asnprintf1
test_ulc_asnprintf1_SOURCES = unistdio/test-ulc-asnprintf1.c
-test_ulc_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
EXTRA_DIST += unistdio/test-ulc-asnprintf1.c unistdio/test-ulc-asnprintf1.h unistdio/test-ulc-printf1.h macros.h
## end gnulib module unistdio/ulc-asnprintf-tests
@@ -5548,11 +6029,11 @@ TESTS += test-ulc-vasnprintf1 unistdio/test-ulc-vasnprintf2.sh unistdio/test-ulc
TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
check_PROGRAMS += test-ulc-vasnprintf1 test-ulc-vasnprintf2 test-ulc-vasnprintf3
test_ulc_vasnprintf1_SOURCES = unistdio/test-ulc-vasnprintf1.c
-test_ulc_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vasnprintf2_SOURCES = unistdio/test-ulc-vasnprintf2.c
-test_ulc_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vasnprintf3_SOURCES = unistdio/test-ulc-vasnprintf3.c
-test_ulc_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
EXTRA_DIST += unistdio/test-ulc-vasnprintf1.c unistdio/test-ulc-asnprintf1.h unistdio/test-ulc-printf1.h unistdio/test-ulc-vasnprintf2.sh unistdio/test-ulc-vasnprintf2.c unistdio/test-ulc-vasnprintf3.sh unistdio/test-ulc-vasnprintf3.c macros.h
## end gnulib module unistdio/ulc-vasnprintf-tests
@@ -5562,7 +6043,7 @@ EXTRA_DIST += unistdio/test-ulc-vasnprintf1.c unistdio/test-ulc-asnprintf1.h uni
TESTS += test-ulc-vasprintf1
check_PROGRAMS += test-ulc-vasprintf1
test_ulc_vasprintf1_SOURCES = unistdio/test-ulc-vasprintf1.c
-test_ulc_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
EXTRA_DIST += unistdio/test-ulc-vasprintf1.c unistdio/test-ulc-printf1.h macros.h
## end gnulib module unistdio/ulc-vasprintf-tests
@@ -5572,7 +6053,7 @@ EXTRA_DIST += unistdio/test-ulc-vasprintf1.c unistdio/test-ulc-printf1.h macros.
TESTS += test-ulc-vsnprintf1
check_PROGRAMS += test-ulc-vsnprintf1
test_ulc_vsnprintf1_SOURCES = unistdio/test-ulc-vsnprintf1.c
-test_ulc_vsnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vsnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(MBRTOWC_LIB)
EXTRA_DIST += unistdio/test-ulc-vsnprintf1.c unistdio/test-ulc-printf1.h macros.h
## end gnulib module unistdio/ulc-vsnprintf-tests
@@ -5582,7 +6063,7 @@ EXTRA_DIST += unistdio/test-ulc-vsnprintf1.c unistdio/test-ulc-printf1.h macros.
TESTS += test-ulc-vsprintf1
check_PROGRAMS += test-ulc-vsprintf1
test_ulc_vsprintf1_SOURCES = unistdio/test-ulc-vsprintf1.c
-test_ulc_vsprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vsprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(MBRTOWC_LIB)
EXTRA_DIST += unistdio/test-ulc-vsprintf1.c unistdio/test-ulc-printf1.h macros.h
## end gnulib module unistdio/ulc-vsprintf-tests
@@ -5717,6 +6198,16 @@ EXTRA_DIST += unistr/test-u16-next.c macros.h
## end gnulib module unistr/u16-next-tests
+## begin gnulib module unistr/u16-pcpy-tests
+
+TESTS += test-u16-pcpy
+check_PROGRAMS += test-u16-pcpy
+test_u16_pcpy_SOURCES = unistr/test-u16-pcpy.c
+test_u16_pcpy_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unistr/test-u16-pcpy.c unistr/test-pcpy.h macros.h
+
+## end gnulib module unistr/u16-pcpy-tests
+
## begin gnulib module unistr/u16-prev-tests
TESTS += test-u16-prev
@@ -6067,6 +6558,16 @@ EXTRA_DIST += unistr/test-u32-next.c macros.h
## end gnulib module unistr/u32-next-tests
+## begin gnulib module unistr/u32-pcpy-tests
+
+TESTS += test-u32-pcpy
+check_PROGRAMS += test-u32-pcpy
+test_u32_pcpy_SOURCES = unistr/test-u32-pcpy.c
+test_u32_pcpy_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unistr/test-u32-pcpy.c unistr/test-pcpy.h macros.h
+
+## end gnulib module unistr/u32-pcpy-tests
+
## begin gnulib module unistr/u32-prev-tests
TESTS += test-u32-prev
@@ -6417,6 +6918,16 @@ EXTRA_DIST += unistr/test-u8-next.c macros.h
## end gnulib module unistr/u8-next-tests
+## begin gnulib module unistr/u8-pcpy-tests
+
+TESTS += test-u8-pcpy
+check_PROGRAMS += test-u8-pcpy
+test_u8_pcpy_SOURCES = unistr/test-u8-pcpy.c
+test_u8_pcpy_LDADD = $(LDADD) $(LIBUNISTRING)
+EXTRA_DIST += unistr/test-u8-pcpy.c unistr/test-pcpy.h macros.h
+
+## end gnulib module unistr/u8-pcpy-tests
+
## begin gnulib module unistr/u8-prev-tests
TESTS += test-u8-prev
@@ -6675,7 +7186,7 @@ TESTS += uniwbrk/test-ulc-wordbreaks.sh
TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@'
check_PROGRAMS += test-ulc-wordbreaks
test_ulc_wordbreaks_SOURCES = uniwbrk/test-ulc-wordbreaks.c
-test_ulc_wordbreaks_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_wordbreaks_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
EXTRA_DIST += uniwbrk/test-ulc-wordbreaks.sh uniwbrk/test-ulc-wordbreaks.c macros.h
@@ -6829,17 +7340,17 @@ endif
TESTS += \
test-wcrtomb.sh \
- test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh \
- test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh \
- test-wcrtomb-w32-7.sh
+ test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh \
+ test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh test-wcrtomb-w32-7.sh \
+ test-wcrtomb-w32-8.sh
TESTS_ENVIRONMENT += \
LOCALE_FR='@LOCALE_FR@' \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
LOCALE_JA='@LOCALE_JA@' \
LOCALE_ZH_CN='@LOCALE_ZH_CN@'
check_PROGRAMS += test-wcrtomb test-wcrtomb-w32
-test_wcrtomb_LDADD = $(LDADD) $(LIB_SETLOCALE)
-EXTRA_DIST += test-wcrtomb.sh test-wcrtomb.c test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh test-wcrtomb-w32-7.sh test-wcrtomb-w32.c signature.h macros.h
+test_wcrtomb_LDADD = $(LDADD) $(SETLOCALE_LIB)
+EXTRA_DIST += test-wcrtomb.sh test-wcrtomb.c test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh test-wcrtomb-w32-7.sh test-wcrtomb-w32-8.sh test-wcrtomb-w32.c signature.h macros.h
## end gnulib module wcrtomb-tests
@@ -6873,7 +7384,7 @@ EXTRA_DIST += test-wctype-h.c macros.h
TESTS += test-wcwidth
check_PROGRAMS += test-wcwidth
-test_wcwidth_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING)
+test_wcwidth_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING)
EXTRA_DIST += test-wcwidth.c signature.h macros.h
## end gnulib module wcwidth-tests
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 1da30a6a..4f17e0d7 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -14,7 +14,7 @@
@SET_MAKE@
-# Copyright (C) 2002-2022 Free Software Foundation, Inc.
+# Copyright (C) 2002-2024 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -112,17 +112,27 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
- test-arpa_inet$(EXEEXT) test-array-mergesort$(EXEEXT) \
- test-assert$(EXEEXT) test-binary-io.sh test-bind$(EXEEXT) \
- test-btowc1.sh test-btowc2.sh test-c-ctype$(EXEEXT) \
- test-c-strcase.sh test-calloc-gnu$(EXEEXT) \
- test-cloexec$(EXEEXT) test-close$(EXEEXT) \
- test-connect$(EXEEXT) test-ctype$(EXEEXT) test-dup2$(EXEEXT) \
- test-environ$(EXEEXT) test-errno$(EXEEXT) \
- test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) \
- test-fgetc$(EXEEXT) test-float$(EXEEXT) test-fputc$(EXEEXT) \
- test-fread$(EXEEXT) test-free$(EXEEXT) \
+TESTS = test-accept$(EXEEXT) test-alignasof$(EXEEXT) \
+ test-alloca-opt$(EXEEXT) test-arpa_inet$(EXEEXT) \
+ test-array-mergesort$(EXEEXT) test-assert$(EXEEXT) \
+ test-binary-io.sh test-bind$(EXEEXT) test-btoc32-1.sh \
+ test-btoc32-2.sh test-btoc32-3.sh test-btowc-1.sh \
+ test-btowc-2.sh test-btowc-3.sh test-c-ctype$(EXEEXT) \
+ test-c-strcase.sh test-c32isalnum.sh test-c32isalpha.sh \
+ test-c32isblank.sh test-c32iscntrl.sh test-c32isdigit.sh \
+ test-c32isgraph.sh test-c32islower.sh test-c32isprint.sh \
+ test-c32ispunct.sh test-c32isspace.sh test-c32isupper.sh \
+ test-c32isxdigit.sh test-c32rtomb.sh test-c32rtomb-w32-2.sh \
+ test-c32rtomb-w32-3.sh test-c32rtomb-w32-4.sh \
+ test-c32rtomb-w32-5.sh test-c32rtomb-w32-6.sh \
+ test-c32rtomb-w32-7.sh test-c32rtomb-w32-8.sh \
+ test-c32tolower.sh test-c32width$(EXEEXT) \
+ test-calloc-gnu$(EXEEXT) test-cloexec$(EXEEXT) \
+ test-close$(EXEEXT) test-connect$(EXEEXT) test-ctype$(EXEEXT) \
+ test-dup2$(EXEEXT) test-environ$(EXEEXT) test-errno$(EXEEXT) \
+ test-error.sh test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) \
+ test-fdopen$(EXEEXT) test-fgetc$(EXEEXT) test-float$(EXEEXT) \
+ test-fputc$(EXEEXT) test-fread$(EXEEXT) test-free$(EXEEXT) \
test-frexp-nolibm$(EXEEXT) test-frexpl-nolibm$(EXEEXT) \
test-fseterr$(EXEEXT) test-fstat$(EXEEXT) test-ftruncate.sh \
test-fwrite$(EXEEXT) test-getcwd-lgpl$(EXEEXT) \
@@ -134,18 +144,24 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-ioctl$(EXEEXT) test-isblank$(EXEEXT) \
test-isnand-nolibm$(EXEEXT) test-isnanf-nolibm$(EXEEXT) \
test-isnanl-nolibm$(EXEEXT) test-iswblank$(EXEEXT) \
- test-iswdigit.sh test-iswxdigit.sh test-langinfo$(EXEEXT) \
+ test-iswdigit.sh test-iswpunct.sh test-iswxdigit.sh \
+ test-langinfo$(EXEEXT) test-largefile$(EXEEXT) \
test-limits-h$(EXEEXT) test-listen$(EXEEXT) \
test-locale$(EXEEXT) test-localename$(EXEEXT) \
test-rwlock1$(EXEEXT) test-lock$(EXEEXT) test-once1$(EXEEXT) \
test-once2$(EXEEXT) test-lstat$(EXEEXT) \
test-malloc-gnu$(EXEEXT) test-malloca$(EXEEXT) \
- test-math$(EXEEXT) test-mbrtowc1.sh test-mbrtowc2.sh \
- test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc5.sh \
- test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh \
- test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh \
- test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh \
- test-mbrtowc-w32-7.sh test-mbsinit.sh test-memchr$(EXEEXT) \
+ test-math$(EXEEXT) test-mbrtoc32-1.sh test-mbrtoc32-2.sh \
+ test-mbrtoc32-3.sh test-mbrtoc32-4.sh test-mbrtoc32-5.sh \
+ test-mbrtoc32-w32-2.sh test-mbrtoc32-w32-3.sh \
+ test-mbrtoc32-w32-4.sh test-mbrtoc32-w32-5.sh \
+ test-mbrtoc32-w32-6.sh test-mbrtoc32-w32-7.sh \
+ test-mbrtoc32-w32-8.sh test-mbrtowc-1.sh test-mbrtowc-2.sh \
+ test-mbrtowc-3.sh test-mbrtowc-4.sh test-mbrtowc-5.sh \
+ test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \
+ test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh \
+ test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh \
+ test-mbrtowc-w32-8.sh test-mbsinit.sh test-memchr$(EXEEXT) \
test-nanosleep$(EXEEXT) test-netinet_in$(EXEEXT) \
test-open$(EXEEXT) test-pathmax$(EXEEXT) test-perror.sh \
test-perror2$(EXEEXT) test-pipe$(EXEEXT) \
@@ -153,51 +169,53 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-pselect$(EXEEXT) test-pthread$(EXEEXT) \
test-pthread-thread$(EXEEXT) test-pthread_sigmask1$(EXEEXT) \
test-pthread_sigmask2$(EXEEXT) test-raise$(EXEEXT) \
- test-realloc-gnu$(EXEEXT) test-reallocarray$(EXEEXT) \
- test-sched$(EXEEXT) test-select$(EXEEXT) test-select-in.sh \
- test-select-out.sh test-setenv$(EXEEXT) \
- test-setlocale_null$(EXEEXT) \
+ test-random$(EXEEXT) test-random-mt$(EXEEXT) \
+ test-random_r$(EXEEXT) test-realloc-gnu$(EXEEXT) \
+ test-reallocarray$(EXEEXT) test-sched$(EXEEXT) \
+ test-select$(EXEEXT) test-select-in.sh test-select-out.sh \
+ test-setenv$(EXEEXT) test-setlocale_null$(EXEEXT) \
test-setlocale_null-mt-one$(EXEEXT) \
- test-setlocale_null-mt-all$(EXEEXT) test-setlocale1.sh \
+ test-setlocale_null-mt-all$(EXEEXT) \
+ test-setlocale_null-unlocked$(EXEEXT) test-setlocale1.sh \
test-setlocale2.sh test-setsockopt$(EXEEXT) \
test-signal-h$(EXEEXT) test-signbit$(EXEEXT) \
test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \
test-sockets$(EXEEXT) test-stat$(EXEEXT) \
- test-stat-time$(EXEEXT) test-stdalign$(EXEEXT) \
- test-stdbool$(EXEEXT) test-stdckdint$(EXEEXT) \
- test-stddef$(EXEEXT) test-stdint$(EXEEXT) test-stdio$(EXEEXT) \
- test-stdlib$(EXEEXT) test-strerror$(EXEEXT) \
- test-strerror_r$(EXEEXT) test-striconveh$(EXEEXT) \
- test-striconveha$(EXEEXT) test-string$(EXEEXT) \
- test-strncat$(EXEEXT) test-strstr$(EXEEXT) \
- test-symlink$(EXEEXT) test-sys_ioctl$(EXEEXT) \
- test-sys_select$(EXEEXT) test-sys_socket$(EXEEXT) \
- test-sys_stat$(EXEEXT) test-sys_time$(EXEEXT) \
- test-sys_types$(EXEEXT) test-sys_uio$(EXEEXT) test-init.sh \
- test-thread_self$(EXEEXT) test-thread_create$(EXEEXT) \
- test-time$(EXEEXT) test-cased$(EXEEXT) test-ignorable$(EXEEXT) \
- unicase/test-locale-language.sh test-uc_tolower$(EXEEXT) \
- test-uc_totitle$(EXEEXT) test-uc_toupper$(EXEEXT) \
- test-u16-casecmp$(EXEEXT) test-u16-casecoll$(EXEEXT) \
- test-u16-casefold$(EXEEXT) test-u16-is-cased$(EXEEXT) \
- test-u16-is-casefolded$(EXEEXT) test-u16-is-lowercase$(EXEEXT) \
- test-u16-is-titlecase$(EXEEXT) test-u16-is-uppercase$(EXEEXT) \
- test-u16-tolower$(EXEEXT) test-u16-totitle$(EXEEXT) \
- test-u16-toupper$(EXEEXT) test-u32-casecmp$(EXEEXT) \
- test-u32-casecoll$(EXEEXT) test-u32-casefold$(EXEEXT) \
- test-u32-is-cased$(EXEEXT) test-u32-is-casefolded$(EXEEXT) \
- test-u32-is-lowercase$(EXEEXT) test-u32-is-titlecase$(EXEEXT) \
- test-u32-is-uppercase$(EXEEXT) test-u32-tolower$(EXEEXT) \
- test-u32-totitle$(EXEEXT) test-u32-toupper$(EXEEXT) \
- test-u8-casecmp$(EXEEXT) test-u8-casecoll$(EXEEXT) \
- test-u8-casefold$(EXEEXT) test-u8-is-cased$(EXEEXT) \
- test-u8-is-casefolded$(EXEEXT) test-u8-is-lowercase$(EXEEXT) \
- test-u8-is-titlecase$(EXEEXT) test-u8-is-uppercase$(EXEEXT) \
- test-u8-tolower$(EXEEXT) test-u8-totitle$(EXEEXT) \
- test-u8-toupper$(EXEEXT) unicase/test-ulc-casecmp1.sh \
- unicase/test-ulc-casecmp2.sh unicase/test-ulc-casecoll1.sh \
- unicase/test-ulc-casecoll2.sh test-u16-conv-from-enc$(EXEEXT) \
- test-u16-conv-to-enc$(EXEEXT) \
+ test-stat-time$(EXEEXT) test-stdbool$(EXEEXT) \
+ test-stdckdint$(EXEEXT) test-stddef$(EXEEXT) \
+ test-stdint$(EXEEXT) test-stdio$(EXEEXT) test-stdlib$(EXEEXT) \
+ test-strerror$(EXEEXT) test-strerror_r$(EXEEXT) \
+ test-striconveh$(EXEEXT) test-striconveha$(EXEEXT) \
+ test-string$(EXEEXT) test-strncat$(EXEEXT) \
+ test-strstr$(EXEEXT) test-symlink$(EXEEXT) \
+ test-sys_ioctl$(EXEEXT) test-sys_select$(EXEEXT) \
+ test-sys_socket$(EXEEXT) test-sys_stat$(EXEEXT) \
+ test-sys_time$(EXEEXT) test-sys_types$(EXEEXT) \
+ test-sys_uio$(EXEEXT) test-init.sh test-thread_self$(EXEEXT) \
+ test-thread_create$(EXEEXT) test-time-h$(EXEEXT) \
+ test-time$(EXEEXT) test-uchar$(EXEEXT) test-cased$(EXEEXT) \
+ test-ignorable$(EXEEXT) unicase/test-locale-language.sh \
+ test-uc_tolower$(EXEEXT) test-uc_totitle$(EXEEXT) \
+ test-uc_toupper$(EXEEXT) test-u16-casecmp$(EXEEXT) \
+ test-u16-casecoll$(EXEEXT) test-u16-casefold$(EXEEXT) \
+ test-u16-is-cased$(EXEEXT) test-u16-is-casefolded$(EXEEXT) \
+ test-u16-is-lowercase$(EXEEXT) test-u16-is-titlecase$(EXEEXT) \
+ test-u16-is-uppercase$(EXEEXT) test-u16-tolower$(EXEEXT) \
+ test-u16-totitle$(EXEEXT) test-u16-toupper$(EXEEXT) \
+ test-u32-casecmp$(EXEEXT) test-u32-casecoll$(EXEEXT) \
+ test-u32-casefold$(EXEEXT) test-u32-is-cased$(EXEEXT) \
+ test-u32-is-casefolded$(EXEEXT) test-u32-is-lowercase$(EXEEXT) \
+ test-u32-is-titlecase$(EXEEXT) test-u32-is-uppercase$(EXEEXT) \
+ test-u32-tolower$(EXEEXT) test-u32-totitle$(EXEEXT) \
+ test-u32-toupper$(EXEEXT) test-u8-casecmp$(EXEEXT) \
+ test-u8-casecoll$(EXEEXT) test-u8-casefold$(EXEEXT) \
+ test-u8-is-cased$(EXEEXT) test-u8-is-casefolded$(EXEEXT) \
+ test-u8-is-lowercase$(EXEEXT) test-u8-is-titlecase$(EXEEXT) \
+ test-u8-is-uppercase$(EXEEXT) test-u8-tolower$(EXEEXT) \
+ test-u8-totitle$(EXEEXT) test-u8-toupper$(EXEEXT) \
+ unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh \
+ unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh \
+ test-u16-conv-from-enc$(EXEEXT) test-u16-conv-to-enc$(EXEEXT) \
test-u16-strconv-from-enc$(EXEEXT) \
test-u16-strconv-to-enc$(EXEEXT) \
test-u32-conv-from-enc$(EXEEXT) test-u32-conv-to-enc$(EXEEXT) \
@@ -243,7 +261,8 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-ctype_punct$(EXEEXT) test-ctype_space$(EXEEXT) \
test-ctype_upper$(EXEEXT) test-ctype_xdigit$(EXEEXT) \
test-decdigit$(EXEEXT) test-digit$(EXEEXT) \
- test-joininggroup_byname$(EXEEXT) \
+ test-incb_byname$(EXEEXT) test-incb_name$(EXEEXT) \
+ test-incb_of$(EXEEXT) test-joininggroup_byname$(EXEEXT) \
test-joininggroup_name$(EXEEXT) test-joininggroup_of$(EXEEXT) \
test-joiningtype_byname$(EXEEXT) \
test-joiningtype_longname$(EXEEXT) \
@@ -286,10 +305,14 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-pr_grapheme_base$(EXEEXT) \
test-pr_grapheme_extend$(EXEEXT) \
test-pr_grapheme_link$(EXEEXT) test-pr_hex_digit$(EXEEXT) \
- test-pr_hyphen$(EXEEXT) test-pr_id_continue$(EXEEXT) \
- test-pr_id_start$(EXEEXT) test-pr_ideographic$(EXEEXT) \
+ test-pr_hyphen$(EXEEXT) \
+ test-pr_id_compat_math_continue$(EXEEXT) \
+ test-pr_id_compat_math_start$(EXEEXT) \
+ test-pr_id_continue$(EXEEXT) test-pr_id_start$(EXEEXT) \
+ test-pr_ideographic$(EXEEXT) \
test-pr_ids_binary_operator$(EXEEXT) \
test-pr_ids_trinary_operator$(EXEEXT) \
+ test-pr_ids_unary_operator$(EXEEXT) \
test-pr_ignorable_control$(EXEEXT) \
test-pr_iso_control$(EXEEXT) test-pr_join_control$(EXEEXT) \
test-pr_left_of_pair$(EXEEXT) test-pr_line_separator$(EXEEXT) \
@@ -307,6 +330,7 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-pr_paragraph_separator$(EXEEXT) \
test-pr_pattern_syntax$(EXEEXT) \
test-pr_pattern_white_space$(EXEEXT) \
+ test-pr_prepended_concatenation_mark$(EXEEXT) \
test-pr_private_use$(EXEEXT) test-pr_punctuation$(EXEEXT) \
test-pr_quotation_mark$(EXEEXT) test-pr_radical$(EXEEXT) \
test-pr_regional_indicator$(EXEEXT) \
@@ -340,8 +364,8 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-u8-possible-linebreaks$(EXEEXT) \
test-u8-width-linebreaks$(EXEEXT) \
test-ulc-possible-linebreaks$(EXEEXT) \
- test-ulc-width-linebreaks$(EXEEXT) $(am__append_50) \
- test-canonical-decomposition$(EXEEXT) \
+ test-ulc-width-linebreaks$(EXEEXT) test-u-version$(EXEEXT) \
+ $(am__append_55) test-canonical-decomposition$(EXEEXT) \
test-compat-decomposition$(EXEEXT) test-composition$(EXEEXT) \
test-decomposing-form$(EXEEXT) test-decomposition$(EXEEXT) \
test-uninorm-filter-nfc$(EXEEXT) test-nfc$(EXEEXT) \
@@ -374,24 +398,25 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-u16-mblen$(EXEEXT) test-u16-mbsnlen$(EXEEXT) \
test-u16-mbtouc$(EXEEXT) test-u16-mbtouc-unsafe$(EXEEXT) \
test-u16-mbtoucr$(EXEEXT) test-u16-move$(EXEEXT) \
- test-u16-next$(EXEEXT) test-u16-prev$(EXEEXT) \
- test-u16-set$(EXEEXT) test-u16-stpcpy$(EXEEXT) \
- test-u16-stpncpy$(EXEEXT) test-u16-strcat$(EXEEXT) \
- test-u16-strchr$(EXEEXT) test-u16-strcmp$(EXEEXT) \
- test-u16-strcoll$(EXEEXT) test-u16-strcpy$(EXEEXT) \
- test-u16-strdup$(EXEEXT) test-u16-strlen$(EXEEXT) \
- test-u16-strmblen$(EXEEXT) test-u16-strmbtouc$(EXEEXT) \
- test-u16-strncat$(EXEEXT) test-u16-strncmp$(EXEEXT) \
- test-u16-strncpy$(EXEEXT) test-u16-strnlen$(EXEEXT) \
- test-u16-strstr$(EXEEXT) test-u16-strtok$(EXEEXT) \
- test-u16-to-u32$(EXEEXT) test-u16-to-u8$(EXEEXT) \
- test-u16-uctomb$(EXEEXT) test-u32-check$(EXEEXT) \
- test-u32-chr$(EXEEXT) test-u32-cmp$(EXEEXT) \
- test-u32-cmp2$(EXEEXT) test-u32-cpy-alloc$(EXEEXT) \
- test-u32-cpy$(EXEEXT) test-u32-mblen$(EXEEXT) \
- test-u32-mbsnlen$(EXEEXT) test-u32-mbtouc$(EXEEXT) \
- test-u32-mbtouc-unsafe$(EXEEXT) test-u32-mbtoucr$(EXEEXT) \
- test-u32-move$(EXEEXT) test-u32-next$(EXEEXT) \
+ test-u16-next$(EXEEXT) test-u16-pcpy$(EXEEXT) \
+ test-u16-prev$(EXEEXT) test-u16-set$(EXEEXT) \
+ test-u16-stpcpy$(EXEEXT) test-u16-stpncpy$(EXEEXT) \
+ test-u16-strcat$(EXEEXT) test-u16-strchr$(EXEEXT) \
+ test-u16-strcmp$(EXEEXT) test-u16-strcoll$(EXEEXT) \
+ test-u16-strcpy$(EXEEXT) test-u16-strdup$(EXEEXT) \
+ test-u16-strlen$(EXEEXT) test-u16-strmblen$(EXEEXT) \
+ test-u16-strmbtouc$(EXEEXT) test-u16-strncat$(EXEEXT) \
+ test-u16-strncmp$(EXEEXT) test-u16-strncpy$(EXEEXT) \
+ test-u16-strnlen$(EXEEXT) test-u16-strstr$(EXEEXT) \
+ test-u16-strtok$(EXEEXT) test-u16-to-u32$(EXEEXT) \
+ test-u16-to-u8$(EXEEXT) test-u16-uctomb$(EXEEXT) \
+ test-u32-check$(EXEEXT) test-u32-chr$(EXEEXT) \
+ test-u32-cmp$(EXEEXT) test-u32-cmp2$(EXEEXT) \
+ test-u32-cpy-alloc$(EXEEXT) test-u32-cpy$(EXEEXT) \
+ test-u32-mblen$(EXEEXT) test-u32-mbsnlen$(EXEEXT) \
+ test-u32-mbtouc$(EXEEXT) test-u32-mbtouc-unsafe$(EXEEXT) \
+ test-u32-mbtoucr$(EXEEXT) test-u32-move$(EXEEXT) \
+ test-u32-next$(EXEEXT) test-u32-pcpy$(EXEEXT) \
test-u32-prev$(EXEEXT) test-u32-set$(EXEEXT) \
test-u32-stpcpy$(EXEEXT) test-u32-stpncpy$(EXEEXT) \
test-u32-strcat$(EXEEXT) test-u32-strchr$(EXEEXT) \
@@ -409,44 +434,54 @@ TESTS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-u8-mblen$(EXEEXT) test-u8-mbsnlen$(EXEEXT) \
test-u8-mbtouc$(EXEEXT) test-u8-mbtouc-unsafe$(EXEEXT) \
test-u8-mbtoucr$(EXEEXT) test-u8-move$(EXEEXT) \
- test-u8-next$(EXEEXT) test-u8-prev$(EXEEXT) \
- test-u8-set$(EXEEXT) test-u8-stpcpy$(EXEEXT) \
- test-u8-stpncpy$(EXEEXT) test-u8-strcat$(EXEEXT) \
- test-u8-strchr$(EXEEXT) test-u8-strcmp$(EXEEXT) \
- test-u8-strcoll$(EXEEXT) test-u8-strcpy$(EXEEXT) \
- test-u8-strdup$(EXEEXT) test-u8-strlen$(EXEEXT) \
- test-u8-strmblen$(EXEEXT) test-u8-strmbtouc$(EXEEXT) \
- test-u8-strncat$(EXEEXT) test-u8-strncmp$(EXEEXT) \
- test-u8-strncpy$(EXEEXT) test-u8-strnlen$(EXEEXT) \
- test-u8-strstr$(EXEEXT) test-u8-strtok$(EXEEXT) \
- test-u8-to-u16$(EXEEXT) test-u8-to-u32$(EXEEXT) \
- test-u8-uctomb$(EXEEXT) test-u16-wordbreaks$(EXEEXT) \
- test-u32-wordbreaks$(EXEEXT) uniwbrk/test-uc-wordbreaks.sh \
- test-u8-wordbreaks$(EXEEXT) uniwbrk/test-ulc-wordbreaks.sh \
- test-u16-strwidth$(EXEEXT) test-u16-width$(EXEEXT) \
- test-u32-strwidth$(EXEEXT) test-u32-width$(EXEEXT) \
- test-u8-strwidth$(EXEEXT) test-u8-width$(EXEEXT) \
- test-uc_width$(EXEEXT) uniwidth/test-uc_width2.sh \
- test-unsetenv$(EXEEXT) test-usleep$(EXEEXT) \
- test-verify$(EXEEXT) test-verify.sh test-wchar$(EXEEXT) \
- test-wcrtomb.sh test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh \
+ test-u8-next$(EXEEXT) test-u8-pcpy$(EXEEXT) \
+ test-u8-prev$(EXEEXT) test-u8-set$(EXEEXT) \
+ test-u8-stpcpy$(EXEEXT) test-u8-stpncpy$(EXEEXT) \
+ test-u8-strcat$(EXEEXT) test-u8-strchr$(EXEEXT) \
+ test-u8-strcmp$(EXEEXT) test-u8-strcoll$(EXEEXT) \
+ test-u8-strcpy$(EXEEXT) test-u8-strdup$(EXEEXT) \
+ test-u8-strlen$(EXEEXT) test-u8-strmblen$(EXEEXT) \
+ test-u8-strmbtouc$(EXEEXT) test-u8-strncat$(EXEEXT) \
+ test-u8-strncmp$(EXEEXT) test-u8-strncpy$(EXEEXT) \
+ test-u8-strnlen$(EXEEXT) test-u8-strstr$(EXEEXT) \
+ test-u8-strtok$(EXEEXT) test-u8-to-u16$(EXEEXT) \
+ test-u8-to-u32$(EXEEXT) test-u8-uctomb$(EXEEXT) \
+ test-u16-wordbreaks$(EXEEXT) test-u32-wordbreaks$(EXEEXT) \
+ uniwbrk/test-uc-wordbreaks.sh test-u8-wordbreaks$(EXEEXT) \
+ uniwbrk/test-ulc-wordbreaks.sh test-u16-strwidth$(EXEEXT) \
+ test-u16-width$(EXEEXT) test-u32-strwidth$(EXEEXT) \
+ test-u32-width$(EXEEXT) test-u8-strwidth$(EXEEXT) \
+ test-u8-width$(EXEEXT) test-uc_width$(EXEEXT) \
+ uniwidth/test-uc_width2.sh test-unsetenv$(EXEEXT) \
+ test-usleep$(EXEEXT) test-verify$(EXEEXT) test-verify.sh \
+ test-wchar$(EXEEXT) test-wcrtomb.sh test-wcrtomb-w32-2.sh \
test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh \
test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh \
- test-wcrtomb-w32-7.sh test-wctype-h$(EXEEXT) \
- test-wcwidth$(EXEEXT) test-xalloc-die.sh
+ test-wcrtomb-w32-7.sh test-wcrtomb-w32-8.sh \
+ test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \
+ test-xalloc-die.sh
XFAIL_TESTS =
noinst_PROGRAMS = current-locale$(EXEEXT) test-localcharset$(EXEEXT)
-check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
- test-arpa_inet$(EXEEXT) test-array-mergesort$(EXEEXT) \
- test-assert$(EXEEXT) test-binary-io$(EXEEXT) \
- test-bind$(EXEEXT) test-btowc$(EXEEXT) test-c-ctype$(EXEEXT) \
+check_PROGRAMS = test-accept$(EXEEXT) test-alignasof$(EXEEXT) \
+ test-alloca-opt$(EXEEXT) test-arpa_inet$(EXEEXT) \
+ test-array-mergesort$(EXEEXT) test-assert$(EXEEXT) \
+ test-binary-io$(EXEEXT) test-bind$(EXEEXT) \
+ test-btoc32$(EXEEXT) test-btowc$(EXEEXT) test-c-ctype$(EXEEXT) \
test-c-strcasecmp$(EXEEXT) test-c-strncasecmp$(EXEEXT) \
+ test-c32isalnum$(EXEEXT) test-c32isalpha$(EXEEXT) \
+ test-c32isblank$(EXEEXT) test-c32iscntrl$(EXEEXT) \
+ test-c32isdigit$(EXEEXT) test-c32isgraph$(EXEEXT) \
+ test-c32islower$(EXEEXT) test-c32isprint$(EXEEXT) \
+ test-c32ispunct$(EXEEXT) test-c32isspace$(EXEEXT) \
+ test-c32isupper$(EXEEXT) test-c32isxdigit$(EXEEXT) \
+ test-c32rtomb$(EXEEXT) test-c32rtomb-w32$(EXEEXT) \
+ test-c32tolower$(EXEEXT) test-c32width$(EXEEXT) \
test-calloc-gnu$(EXEEXT) test-cloexec$(EXEEXT) \
test-close$(EXEEXT) test-connect$(EXEEXT) test-ctype$(EXEEXT) \
test-dup2$(EXEEXT) test-environ$(EXEEXT) test-errno$(EXEEXT) \
- test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) \
- test-fgetc$(EXEEXT) test-float$(EXEEXT) test-fputc$(EXEEXT) \
- test-fread$(EXEEXT) test-free$(EXEEXT) \
+ test-error$(EXEEXT) test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) \
+ test-fdopen$(EXEEXT) test-fgetc$(EXEEXT) test-float$(EXEEXT) \
+ test-fputc$(EXEEXT) test-fread$(EXEEXT) test-free$(EXEEXT) \
test-frexp-nolibm$(EXEEXT) test-frexpl-nolibm$(EXEEXT) \
test-fseterr$(EXEEXT) test-fstat$(EXEEXT) \
test-ftruncate$(EXEEXT) test-fwrite$(EXEEXT) \
@@ -459,13 +494,15 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-isblank$(EXEEXT) test-isnand-nolibm$(EXEEXT) \
test-isnanf-nolibm$(EXEEXT) test-isnanl-nolibm$(EXEEXT) \
test-iswblank$(EXEEXT) test-iswdigit$(EXEEXT) \
- test-iswxdigit$(EXEEXT) test-langinfo$(EXEEXT) \
+ test-iswpunct$(EXEEXT) test-iswxdigit$(EXEEXT) \
+ test-langinfo$(EXEEXT) test-largefile$(EXEEXT) \
test-limits-h$(EXEEXT) test-listen$(EXEEXT) \
test-locale$(EXEEXT) test-localename$(EXEEXT) \
test-rwlock1$(EXEEXT) test-lock$(EXEEXT) test-once1$(EXEEXT) \
test-once2$(EXEEXT) test-lstat$(EXEEXT) \
test-malloc-gnu$(EXEEXT) test-malloca$(EXEEXT) \
- test-math$(EXEEXT) test-mbrtowc$(EXEEXT) \
+ test-math$(EXEEXT) test-mbrtoc32$(EXEEXT) \
+ test-mbrtoc32-w32$(EXEEXT) test-mbrtowc$(EXEEXT) \
test-mbrtowc-w32$(EXEEXT) test-mbsinit$(EXEEXT) \
test-memchr$(EXEEXT) test-nanosleep$(EXEEXT) \
test-netinet_in$(EXEEXT) test-open$(EXEEXT) \
@@ -475,50 +512,53 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-pselect$(EXEEXT) test-pthread$(EXEEXT) \
test-pthread-thread$(EXEEXT) test-pthread_sigmask1$(EXEEXT) \
test-pthread_sigmask2$(EXEEXT) test-raise$(EXEEXT) \
- test-realloc-gnu$(EXEEXT) test-reallocarray$(EXEEXT) \
- test-sched$(EXEEXT) test-select$(EXEEXT) \
- test-select-fd$(EXEEXT) test-select-stdin$(EXEEXT) \
- test-setenv$(EXEEXT) test-setlocale_null$(EXEEXT) \
+ test-random$(EXEEXT) test-random-mt$(EXEEXT) \
+ test-random_r$(EXEEXT) test-realloc-gnu$(EXEEXT) \
+ test-reallocarray$(EXEEXT) test-sched$(EXEEXT) \
+ test-select$(EXEEXT) test-select-fd$(EXEEXT) \
+ test-select-stdin$(EXEEXT) test-setenv$(EXEEXT) \
+ test-setlocale_null$(EXEEXT) \
test-setlocale_null-mt-one$(EXEEXT) \
- test-setlocale_null-mt-all$(EXEEXT) test-setlocale1$(EXEEXT) \
+ test-setlocale_null-mt-all$(EXEEXT) \
+ test-setlocale_null-unlocked$(EXEEXT) test-setlocale1$(EXEEXT) \
test-setlocale2$(EXEEXT) test-setsockopt$(EXEEXT) \
test-signal-h$(EXEEXT) test-signbit$(EXEEXT) \
test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \
test-sockets$(EXEEXT) test-stat$(EXEEXT) \
- test-stat-time$(EXEEXT) test-stdalign$(EXEEXT) \
- test-stdbool$(EXEEXT) test-stdckdint$(EXEEXT) \
- test-stddef$(EXEEXT) test-stdint$(EXEEXT) test-stdio$(EXEEXT) \
- test-stdlib$(EXEEXT) test-strerror$(EXEEXT) \
- test-strerror_r$(EXEEXT) test-striconveh$(EXEEXT) \
- test-striconveha$(EXEEXT) test-string$(EXEEXT) \
- test-strncat$(EXEEXT) test-strstr$(EXEEXT) \
- test-symlink$(EXEEXT) test-sys_ioctl$(EXEEXT) \
- test-sys_select$(EXEEXT) test-sys_socket$(EXEEXT) \
- test-sys_stat$(EXEEXT) test-sys_time$(EXEEXT) \
- test-sys_types$(EXEEXT) test-sys_uio$(EXEEXT) \
- test-thread_self$(EXEEXT) test-thread_create$(EXEEXT) \
- test-time$(EXEEXT) test-cased$(EXEEXT) test-ignorable$(EXEEXT) \
- test-locale-language$(EXEEXT) test-uc_tolower$(EXEEXT) \
- test-uc_totitle$(EXEEXT) test-uc_toupper$(EXEEXT) \
- test-u16-casecmp$(EXEEXT) test-u16-casecoll$(EXEEXT) \
- test-u16-casefold$(EXEEXT) test-u16-is-cased$(EXEEXT) \
- test-u16-is-casefolded$(EXEEXT) test-u16-is-lowercase$(EXEEXT) \
- test-u16-is-titlecase$(EXEEXT) test-u16-is-uppercase$(EXEEXT) \
- test-u16-tolower$(EXEEXT) test-u16-totitle$(EXEEXT) \
- test-u16-toupper$(EXEEXT) test-u32-casecmp$(EXEEXT) \
- test-u32-casecoll$(EXEEXT) test-u32-casefold$(EXEEXT) \
- test-u32-is-cased$(EXEEXT) test-u32-is-casefolded$(EXEEXT) \
- test-u32-is-lowercase$(EXEEXT) test-u32-is-titlecase$(EXEEXT) \
- test-u32-is-uppercase$(EXEEXT) test-u32-tolower$(EXEEXT) \
- test-u32-totitle$(EXEEXT) test-u32-toupper$(EXEEXT) \
- test-u8-casecmp$(EXEEXT) test-u8-casecoll$(EXEEXT) \
- test-u8-casefold$(EXEEXT) test-u8-is-cased$(EXEEXT) \
- test-u8-is-casefolded$(EXEEXT) test-u8-is-lowercase$(EXEEXT) \
- test-u8-is-titlecase$(EXEEXT) test-u8-is-uppercase$(EXEEXT) \
- test-u8-tolower$(EXEEXT) test-u8-totitle$(EXEEXT) \
- test-u8-toupper$(EXEEXT) test-ulc-casecmp$(EXEEXT) \
- test-ulc-casecoll$(EXEEXT) test-u16-conv-from-enc$(EXEEXT) \
- test-u16-conv-to-enc$(EXEEXT) \
+ test-stat-time$(EXEEXT) test-stdbool$(EXEEXT) \
+ test-stdckdint$(EXEEXT) test-stddef$(EXEEXT) \
+ test-stdint$(EXEEXT) test-stdio$(EXEEXT) test-stdlib$(EXEEXT) \
+ test-strerror$(EXEEXT) test-strerror_r$(EXEEXT) \
+ test-striconveh$(EXEEXT) test-striconveha$(EXEEXT) \
+ test-string$(EXEEXT) test-strncat$(EXEEXT) \
+ test-strstr$(EXEEXT) test-symlink$(EXEEXT) \
+ test-sys_ioctl$(EXEEXT) test-sys_select$(EXEEXT) \
+ test-sys_socket$(EXEEXT) test-sys_stat$(EXEEXT) \
+ test-sys_time$(EXEEXT) test-sys_types$(EXEEXT) \
+ test-sys_uio$(EXEEXT) test-thread_self$(EXEEXT) \
+ test-thread_create$(EXEEXT) test-time-h$(EXEEXT) \
+ test-time$(EXEEXT) test-uchar$(EXEEXT) test-cased$(EXEEXT) \
+ test-ignorable$(EXEEXT) test-locale-language$(EXEEXT) \
+ test-uc_tolower$(EXEEXT) test-uc_totitle$(EXEEXT) \
+ test-uc_toupper$(EXEEXT) test-u16-casecmp$(EXEEXT) \
+ test-u16-casecoll$(EXEEXT) test-u16-casefold$(EXEEXT) \
+ test-u16-is-cased$(EXEEXT) test-u16-is-casefolded$(EXEEXT) \
+ test-u16-is-lowercase$(EXEEXT) test-u16-is-titlecase$(EXEEXT) \
+ test-u16-is-uppercase$(EXEEXT) test-u16-tolower$(EXEEXT) \
+ test-u16-totitle$(EXEEXT) test-u16-toupper$(EXEEXT) \
+ test-u32-casecmp$(EXEEXT) test-u32-casecoll$(EXEEXT) \
+ test-u32-casefold$(EXEEXT) test-u32-is-cased$(EXEEXT) \
+ test-u32-is-casefolded$(EXEEXT) test-u32-is-lowercase$(EXEEXT) \
+ test-u32-is-titlecase$(EXEEXT) test-u32-is-uppercase$(EXEEXT) \
+ test-u32-tolower$(EXEEXT) test-u32-totitle$(EXEEXT) \
+ test-u32-toupper$(EXEEXT) test-u8-casecmp$(EXEEXT) \
+ test-u8-casecoll$(EXEEXT) test-u8-casefold$(EXEEXT) \
+ test-u8-is-cased$(EXEEXT) test-u8-is-casefolded$(EXEEXT) \
+ test-u8-is-lowercase$(EXEEXT) test-u8-is-titlecase$(EXEEXT) \
+ test-u8-is-uppercase$(EXEEXT) test-u8-tolower$(EXEEXT) \
+ test-u8-totitle$(EXEEXT) test-u8-toupper$(EXEEXT) \
+ test-ulc-casecmp$(EXEEXT) test-ulc-casecoll$(EXEEXT) \
+ test-u16-conv-from-enc$(EXEEXT) test-u16-conv-to-enc$(EXEEXT) \
test-u16-strconv-from-enc$(EXEEXT) \
test-u16-strconv-to-enc$(EXEEXT) \
test-u32-conv-from-enc$(EXEEXT) test-u32-conv-to-enc$(EXEEXT) \
@@ -564,7 +604,8 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-ctype_punct$(EXEEXT) test-ctype_space$(EXEEXT) \
test-ctype_upper$(EXEEXT) test-ctype_xdigit$(EXEEXT) \
test-decdigit$(EXEEXT) test-digit$(EXEEXT) \
- test-joininggroup_byname$(EXEEXT) \
+ test-incb_byname$(EXEEXT) test-incb_name$(EXEEXT) \
+ test-incb_of$(EXEEXT) test-joininggroup_byname$(EXEEXT) \
test-joininggroup_name$(EXEEXT) test-joininggroup_of$(EXEEXT) \
test-joiningtype_byname$(EXEEXT) \
test-joiningtype_longname$(EXEEXT) \
@@ -607,10 +648,14 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-pr_grapheme_base$(EXEEXT) \
test-pr_grapheme_extend$(EXEEXT) \
test-pr_grapheme_link$(EXEEXT) test-pr_hex_digit$(EXEEXT) \
- test-pr_hyphen$(EXEEXT) test-pr_id_continue$(EXEEXT) \
- test-pr_id_start$(EXEEXT) test-pr_ideographic$(EXEEXT) \
+ test-pr_hyphen$(EXEEXT) \
+ test-pr_id_compat_math_continue$(EXEEXT) \
+ test-pr_id_compat_math_start$(EXEEXT) \
+ test-pr_id_continue$(EXEEXT) test-pr_id_start$(EXEEXT) \
+ test-pr_ideographic$(EXEEXT) \
test-pr_ids_binary_operator$(EXEEXT) \
test-pr_ids_trinary_operator$(EXEEXT) \
+ test-pr_ids_unary_operator$(EXEEXT) \
test-pr_ignorable_control$(EXEEXT) \
test-pr_iso_control$(EXEEXT) test-pr_join_control$(EXEEXT) \
test-pr_left_of_pair$(EXEEXT) test-pr_line_separator$(EXEEXT) \
@@ -628,6 +673,7 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-pr_paragraph_separator$(EXEEXT) \
test-pr_pattern_syntax$(EXEEXT) \
test-pr_pattern_white_space$(EXEEXT) \
+ test-pr_prepended_concatenation_mark$(EXEEXT) \
test-pr_private_use$(EXEEXT) test-pr_punctuation$(EXEEXT) \
test-pr_quotation_mark$(EXEEXT) test-pr_radical$(EXEEXT) \
test-pr_regional_indicator$(EXEEXT) \
@@ -661,8 +707,8 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-u8-possible-linebreaks$(EXEEXT) \
test-u8-width-linebreaks$(EXEEXT) \
test-ulc-possible-linebreaks$(EXEEXT) \
- test-ulc-width-linebreaks$(EXEEXT) $(am__EXEEXT_2) \
- test-canonical-decomposition$(EXEEXT) \
+ test-ulc-width-linebreaks$(EXEEXT) test-u-version$(EXEEXT) \
+ $(am__EXEEXT_2) test-canonical-decomposition$(EXEEXT) \
test-compat-decomposition$(EXEEXT) test-composition$(EXEEXT) \
test-decomposing-form$(EXEEXT) test-decomposition$(EXEEXT) \
test-uninorm-filter-nfc$(EXEEXT) test-nfc$(EXEEXT) \
@@ -693,24 +739,25 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-u16-mblen$(EXEEXT) test-u16-mbsnlen$(EXEEXT) \
test-u16-mbtouc$(EXEEXT) test-u16-mbtouc-unsafe$(EXEEXT) \
test-u16-mbtoucr$(EXEEXT) test-u16-move$(EXEEXT) \
- test-u16-next$(EXEEXT) test-u16-prev$(EXEEXT) \
- test-u16-set$(EXEEXT) test-u16-stpcpy$(EXEEXT) \
- test-u16-stpncpy$(EXEEXT) test-u16-strcat$(EXEEXT) \
- test-u16-strchr$(EXEEXT) test-u16-strcmp$(EXEEXT) \
- test-u16-strcoll$(EXEEXT) test-u16-strcpy$(EXEEXT) \
- test-u16-strdup$(EXEEXT) test-u16-strlen$(EXEEXT) \
- test-u16-strmblen$(EXEEXT) test-u16-strmbtouc$(EXEEXT) \
- test-u16-strncat$(EXEEXT) test-u16-strncmp$(EXEEXT) \
- test-u16-strncpy$(EXEEXT) test-u16-strnlen$(EXEEXT) \
- test-u16-strstr$(EXEEXT) test-u16-strtok$(EXEEXT) \
- test-u16-to-u32$(EXEEXT) test-u16-to-u8$(EXEEXT) \
- test-u16-uctomb$(EXEEXT) test-u32-check$(EXEEXT) \
- test-u32-chr$(EXEEXT) test-u32-cmp$(EXEEXT) \
- test-u32-cmp2$(EXEEXT) test-u32-cpy-alloc$(EXEEXT) \
- test-u32-cpy$(EXEEXT) test-u32-mblen$(EXEEXT) \
- test-u32-mbsnlen$(EXEEXT) test-u32-mbtouc$(EXEEXT) \
- test-u32-mbtouc-unsafe$(EXEEXT) test-u32-mbtoucr$(EXEEXT) \
- test-u32-move$(EXEEXT) test-u32-next$(EXEEXT) \
+ test-u16-next$(EXEEXT) test-u16-pcpy$(EXEEXT) \
+ test-u16-prev$(EXEEXT) test-u16-set$(EXEEXT) \
+ test-u16-stpcpy$(EXEEXT) test-u16-stpncpy$(EXEEXT) \
+ test-u16-strcat$(EXEEXT) test-u16-strchr$(EXEEXT) \
+ test-u16-strcmp$(EXEEXT) test-u16-strcoll$(EXEEXT) \
+ test-u16-strcpy$(EXEEXT) test-u16-strdup$(EXEEXT) \
+ test-u16-strlen$(EXEEXT) test-u16-strmblen$(EXEEXT) \
+ test-u16-strmbtouc$(EXEEXT) test-u16-strncat$(EXEEXT) \
+ test-u16-strncmp$(EXEEXT) test-u16-strncpy$(EXEEXT) \
+ test-u16-strnlen$(EXEEXT) test-u16-strstr$(EXEEXT) \
+ test-u16-strtok$(EXEEXT) test-u16-to-u32$(EXEEXT) \
+ test-u16-to-u8$(EXEEXT) test-u16-uctomb$(EXEEXT) \
+ test-u32-check$(EXEEXT) test-u32-chr$(EXEEXT) \
+ test-u32-cmp$(EXEEXT) test-u32-cmp2$(EXEEXT) \
+ test-u32-cpy-alloc$(EXEEXT) test-u32-cpy$(EXEEXT) \
+ test-u32-mblen$(EXEEXT) test-u32-mbsnlen$(EXEEXT) \
+ test-u32-mbtouc$(EXEEXT) test-u32-mbtouc-unsafe$(EXEEXT) \
+ test-u32-mbtoucr$(EXEEXT) test-u32-move$(EXEEXT) \
+ test-u32-next$(EXEEXT) test-u32-pcpy$(EXEEXT) \
test-u32-prev$(EXEEXT) test-u32-set$(EXEEXT) \
test-u32-stpcpy$(EXEEXT) test-u32-stpncpy$(EXEEXT) \
test-u32-strcat$(EXEEXT) test-u32-strchr$(EXEEXT) \
@@ -728,93 +775,100 @@ check_PROGRAMS = test-accept$(EXEEXT) test-alloca-opt$(EXEEXT) \
test-u8-mblen$(EXEEXT) test-u8-mbsnlen$(EXEEXT) \
test-u8-mbtouc$(EXEEXT) test-u8-mbtouc-unsafe$(EXEEXT) \
test-u8-mbtoucr$(EXEEXT) test-u8-move$(EXEEXT) \
- test-u8-next$(EXEEXT) test-u8-prev$(EXEEXT) \
- test-u8-set$(EXEEXT) test-u8-stpcpy$(EXEEXT) \
- test-u8-stpncpy$(EXEEXT) test-u8-strcat$(EXEEXT) \
- test-u8-strchr$(EXEEXT) test-u8-strcmp$(EXEEXT) \
- test-u8-strcoll$(EXEEXT) test-u8-strcpy$(EXEEXT) \
- test-u8-strdup$(EXEEXT) test-u8-strlen$(EXEEXT) \
- test-u8-strmblen$(EXEEXT) test-u8-strmbtouc$(EXEEXT) \
- test-u8-strncat$(EXEEXT) test-u8-strncmp$(EXEEXT) \
- test-u8-strncpy$(EXEEXT) test-u8-strnlen$(EXEEXT) \
- test-u8-strstr$(EXEEXT) test-u8-strtok$(EXEEXT) \
- test-u8-to-u16$(EXEEXT) test-u8-to-u32$(EXEEXT) \
- test-u8-uctomb$(EXEEXT) test-u16-wordbreaks$(EXEEXT) \
- test-u32-wordbreaks$(EXEEXT) test-uc-wordbreaks$(EXEEXT) \
- test-u8-wordbreaks$(EXEEXT) test-ulc-wordbreaks$(EXEEXT) \
- test-u16-strwidth$(EXEEXT) test-u16-width$(EXEEXT) \
- test-u32-strwidth$(EXEEXT) test-u32-width$(EXEEXT) \
- test-u8-strwidth$(EXEEXT) test-u8-width$(EXEEXT) \
- test-uc_width$(EXEEXT) test-uc_width2$(EXEEXT) \
- test-unsetenv$(EXEEXT) test-usleep$(EXEEXT) \
- test-verify$(EXEEXT) test-wchar$(EXEEXT) test-wcrtomb$(EXEEXT) \
- test-wcrtomb-w32$(EXEEXT) test-wctype-h$(EXEEXT) \
- test-wcwidth$(EXEEXT) test-xalloc-die$(EXEEXT)
+ test-u8-next$(EXEEXT) test-u8-pcpy$(EXEEXT) \
+ test-u8-prev$(EXEEXT) test-u8-set$(EXEEXT) \
+ test-u8-stpcpy$(EXEEXT) test-u8-stpncpy$(EXEEXT) \
+ test-u8-strcat$(EXEEXT) test-u8-strchr$(EXEEXT) \
+ test-u8-strcmp$(EXEEXT) test-u8-strcoll$(EXEEXT) \
+ test-u8-strcpy$(EXEEXT) test-u8-strdup$(EXEEXT) \
+ test-u8-strlen$(EXEEXT) test-u8-strmblen$(EXEEXT) \
+ test-u8-strmbtouc$(EXEEXT) test-u8-strncat$(EXEEXT) \
+ test-u8-strncmp$(EXEEXT) test-u8-strncpy$(EXEEXT) \
+ test-u8-strnlen$(EXEEXT) test-u8-strstr$(EXEEXT) \
+ test-u8-strtok$(EXEEXT) test-u8-to-u16$(EXEEXT) \
+ test-u8-to-u32$(EXEEXT) test-u8-uctomb$(EXEEXT) \
+ test-u16-wordbreaks$(EXEEXT) test-u32-wordbreaks$(EXEEXT) \
+ test-uc-wordbreaks$(EXEEXT) test-u8-wordbreaks$(EXEEXT) \
+ test-ulc-wordbreaks$(EXEEXT) test-u16-strwidth$(EXEEXT) \
+ test-u16-width$(EXEEXT) test-u32-strwidth$(EXEEXT) \
+ test-u32-width$(EXEEXT) test-u8-strwidth$(EXEEXT) \
+ test-u8-width$(EXEEXT) test-uc_width$(EXEEXT) \
+ test-uc_width2$(EXEEXT) test-unsetenv$(EXEEXT) \
+ test-usleep$(EXEEXT) test-verify$(EXEEXT) test-wchar$(EXEEXT) \
+ test-wcrtomb$(EXEEXT) test-wcrtomb-w32$(EXEEXT) \
+ test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \
+ test-xalloc-die$(EXEEXT)
EXTRA_PROGRAMS = test-verify-try$(EXEEXT)
@GL_COND_OBJ_ACCEPT_TRUE@am__append_1 = accept.c
@GL_COND_OBJ_BIND_TRUE@am__append_2 = bind.c
@GL_COND_OBJ_BTOWC_TRUE@am__append_3 = btowc.c
-@GL_COND_OBJ_CLOSE_TRUE@am__append_4 = close.c
-@GL_COND_OBJ_CONNECT_TRUE@am__append_5 = connect.c
-@GL_COND_OBJ_DUP2_TRUE@am__append_6 = dup2.c
-@GL_COND_OBJ_ERROR_TRUE@am__append_7 = error.c
-@GL_COND_OBJ_FCNTL_TRUE@am__append_8 = fcntl.c
-@GL_COND_OBJ_FDOPEN_TRUE@am__append_9 = fdopen.c
-@GL_COND_OBJ_FSTAT_TRUE@am__append_10 = fstat.c
-@GL_COND_OBJ_FTRUNCATE_TRUE@am__append_11 = ftruncate.c
-@GL_COND_OBJ_GETCWD_LGPL_TRUE@am__append_12 = getcwd-lgpl.c
-@GL_COND_OBJ_GETDTABLESIZE_TRUE@am__append_13 = getdtablesize.c
-@GL_COND_OBJ_GETPAGESIZE_TRUE@am__append_14 = getpagesize.c
-@GL_COND_OBJ_GETTIMEOFDAY_TRUE@am__append_15 = gettimeofday.c
-@GL_COND_OBJ_INET_PTON_TRUE@am__append_16 = inet_pton.c
-@GL_COND_OBJ_IOCTL_TRUE@am__append_17 = ioctl.c
-@GL_COND_OBJ_ISBLANK_TRUE@am__append_18 = isblank.c
-@GL_COND_OBJ_LISTEN_TRUE@am__append_19 = listen.c
-@GL_COND_OBJ_LSTAT_TRUE@am__append_20 = lstat.c
-@GL_COND_OBJ_MBTOWC_TRUE@am__append_21 = mbtowc.c
-@GL_COND_OBJ_MSVC_INVAL_TRUE@am__append_22 = msvc-inval.c
-@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__append_23 = msvc-nothrow.c
-@GL_COND_OBJ_NANOSLEEP_TRUE@am__append_24 = nanosleep.c
-@GL_COND_OBJ_OPEN_TRUE@am__append_25 = open.c
-@GL_COND_OBJ_PERROR_TRUE@am__append_26 = perror.c
-@GL_COND_OBJ_PIPE_TRUE@am__append_27 = pipe.c
-@GL_COND_OBJ_PSELECT_TRUE@am__append_28 = pselect.c
-@GL_COND_OBJ_PTHREAD_THREAD_TRUE@am__append_29 = pthread-thread.c
-@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@am__append_30 = pthread_sigmask.c
-@GL_COND_OBJ_PUTENV_TRUE@am__append_31 = putenv.c
-@GL_COND_OBJ_RAISE_TRUE@am__append_32 = raise.c
-@GL_COND_OBJ_REALLOCARRAY_TRUE@am__append_33 = reallocarray.c
-@GL_COND_OBJ_SCHED_YIELD_TRUE@am__append_34 = sched_yield.c
-@GL_COND_OBJ_SELECT_TRUE@am__append_35 = select.c
-@GL_COND_OBJ_SETENV_TRUE@am__append_36 = setenv.c
-@GL_COND_OBJ_SETLOCALE_TRUE@am__append_37 = setlocale.c
-@GL_COND_OBJ_SETSOCKOPT_TRUE@am__append_38 = setsockopt.c
-@GL_COND_OBJ_SIGPROCMASK_TRUE@am__append_39 = sigprocmask.c
-@GL_COND_OBJ_SLEEP_TRUE@am__append_40 = sleep.c
-@GL_COND_OBJ_SOCKET_TRUE@am__append_41 = socket.c
-@GL_COND_OBJ_STAT_TRUE@am__append_42 = stat.c
-@GL_COND_OBJ_STDIO_READ_TRUE@am__append_43 = stdio-read.c
-@GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_44 = stdio-write.c
-@GL_COND_OBJ_STRERROR_TRUE@am__append_45 = strerror.c
-@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_46 = strerror-override.c
-@GL_COND_OBJ_SYMLINK_TRUE@am__append_47 = symlink.c
-@WOE32DLL_FALSE@am__append_48 = test-categ_none
-@WOE32DLL_FALSE@am__append_49 = test-categ_none
+@GL_COND_OBJ_C32RTOMB_TRUE@am__append_4 = c32rtomb.c
+@GL_COND_OBJ_CLOSE_TRUE@am__append_5 = close.c
+@GL_COND_OBJ_CONNECT_TRUE@am__append_6 = connect.c
+@GL_COND_OBJ_DUP2_TRUE@am__append_7 = dup2.c
+@GL_COND_OBJ_ERROR_TRUE@am__append_8 = error.c
+@GL_COND_OBJ_FCNTL_TRUE@am__append_9 = fcntl.c
+@GL_COND_OBJ_FDOPEN_TRUE@am__append_10 = fdopen.c
+@GL_COND_OBJ_FSTAT_TRUE@am__append_11 = fstat.c
+@GL_COND_OBJ_FTRUNCATE_TRUE@am__append_12 = ftruncate.c
+@GL_COND_OBJ_GETCWD_LGPL_TRUE@am__append_13 = getcwd-lgpl.c
+@GL_COND_OBJ_GETDTABLESIZE_TRUE@am__append_14 = getdtablesize.c
+@GL_COND_OBJ_GETPAGESIZE_TRUE@am__append_15 = getpagesize.c
+@GL_COND_OBJ_GETPROGNAME_TRUE@am__append_16 = getprogname.c
+@GL_COND_OBJ_GETTIMEOFDAY_TRUE@am__append_17 = gettimeofday.c
+@GL_COND_OBJ_INET_PTON_TRUE@am__append_18 = inet_pton.c
+@GL_COND_OBJ_IOCTL_TRUE@am__append_19 = ioctl.c
+@GL_COND_OBJ_ISBLANK_TRUE@am__append_20 = isblank.c
+@GL_COND_OBJ_LISTEN_TRUE@am__append_21 = listen.c
+@GL_COND_OBJ_LSTAT_TRUE@am__append_22 = lstat.c
+@GL_COND_OBJ_MBTOWC_TRUE@am__append_23 = mbtowc.c
+@GL_COND_OBJ_MSVC_INVAL_TRUE@am__append_24 = msvc-inval.c
+@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__append_25 = msvc-nothrow.c
+@GL_COND_OBJ_NANOSLEEP_TRUE@am__append_26 = nanosleep.c
+@GL_COND_OBJ_OPEN_TRUE@am__append_27 = open.c
+@GL_COND_OBJ_PERROR_TRUE@am__append_28 = perror.c
+@GL_COND_OBJ_PIPE_TRUE@am__append_29 = pipe.c
+@GL_COND_OBJ_PSELECT_TRUE@am__append_30 = pselect.c
+@GL_COND_OBJ_PTHREAD_THREAD_TRUE@am__append_31 = pthread-thread.c
+@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@am__append_32 = pthread_sigmask.c
+@GL_COND_OBJ_PUTENV_TRUE@am__append_33 = putenv.c
+@GL_COND_OBJ_RAISE_TRUE@am__append_34 = raise.c
+@GL_COND_OBJ_RANDOM_TRUE@am__append_35 = random.c
+@GL_COND_OBJ_RANDOM_R_TRUE@am__append_36 = random_r.c
+@GL_COND_OBJ_REALLOCARRAY_TRUE@am__append_37 = reallocarray.c
+@GL_COND_OBJ_SCHED_YIELD_TRUE@am__append_38 = sched_yield.c
+@GL_COND_OBJ_SELECT_TRUE@am__append_39 = select.c
+@GL_COND_OBJ_SETENV_TRUE@am__append_40 = setenv.c
+@GL_COND_OBJ_SETLOCALE_TRUE@am__append_41 = setlocale.c
+@GL_COND_OBJ_SETSOCKOPT_TRUE@am__append_42 = setsockopt.c
+@GL_COND_OBJ_SIGPROCMASK_TRUE@am__append_43 = sigprocmask.c
+@GL_COND_OBJ_SLEEP_TRUE@am__append_44 = sleep.c
+@GL_COND_OBJ_SOCKET_TRUE@am__append_45 = socket.c
+@GL_COND_OBJ_STAT_TRUE@am__append_46 = stat.c
+@GL_COND_OBJ_STDIO_READ_TRUE@am__append_47 = stdio-read.c
+@GL_COND_OBJ_STDIO_WRITE_TRUE@am__append_48 = stdio-write.c
+@GL_COND_OBJ_STRERROR_TRUE@am__append_49 = strerror.c
+@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__append_50 = strerror-override.c
+@GL_COND_OBJ_SYMLINK_TRUE@am__append_51 = symlink.c
+@GL_COND_OBJ_TIME_TRUE@am__append_52 = time.c
+@WOE32DLL_FALSE@am__append_53 = test-categ_none
+@WOE32DLL_FALSE@am__append_54 = test-categ_none
# Unlike other libunistring modules, this test passes only when the
# same version of uniname/uniname.c is used (even if it is newer).
-@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__append_50 = uniname/test-uninames.sh
-@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__append_51 = test-uninames
-@GL_COND_OBJ_UNSETENV_TRUE@am__append_52 = unsetenv.c
-@GL_COND_OBJ_USLEEP_TRUE@am__append_53 = usleep.c
-@GL_COND_OBJ_WCRTOMB_TRUE@am__append_54 = wcrtomb.c
-@GL_COND_OBJ_WCTOB_TRUE@am__append_55 = wctob.c
-@GL_COND_OBJ_WCTOMB_TRUE@am__append_56 = wctomb.c
-@GL_COND_OBJ_WINDOWS_THREAD_TRUE@am__append_57 = windows-thread.c
-@GL_COND_OBJ_WINDOWS_TLS_TRUE@am__append_58 = windows-tls.c
+@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__append_55 = uniname/test-uninames.sh
+@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__append_56 = test-uninames
+@GL_COND_OBJ_UNSETENV_TRUE@am__append_57 = unsetenv.c
+@GL_COND_OBJ_USLEEP_TRUE@am__append_58 = usleep.c
+@GL_COND_OBJ_WCRTOMB_TRUE@am__append_59 = wcrtomb.c
+@GL_COND_OBJ_WCTOB_TRUE@am__append_60 = wctob.c
+@GL_COND_OBJ_WCTOMB_TRUE@am__append_61 = wctomb.c
+@GL_COND_OBJ_WINDOWS_THREAD_TRUE@am__append_62 = windows-thread.c
+@GL_COND_OBJ_WINDOWS_TLS_TRUE@am__append_63 = windows-tls.c
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
+ $(top_srcdir)/gnulib-m4/__inline.m4 \
$(top_srcdir)/gnulib-m4/absolute-header.m4 \
$(top_srcdir)/gnulib-m4/alloca.m4 \
$(top_srcdir)/gnulib-m4/arpa_inet_h.m4 \
@@ -822,6 +876,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/btowc.m4 \
$(top_srcdir)/gnulib-m4/builtin-expect.m4 \
$(top_srcdir)/gnulib-m4/c-bool.m4 \
+ $(top_srcdir)/gnulib-m4/c32rtomb.m4 \
$(top_srcdir)/gnulib-m4/calloc.m4 \
$(top_srcdir)/gnulib-m4/close.m4 \
$(top_srcdir)/gnulib-m4/codeset.m4 \
@@ -832,6 +887,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/environ.m4 \
$(top_srcdir)/gnulib-m4/errno_h.m4 \
$(top_srcdir)/gnulib-m4/error.m4 \
+ $(top_srcdir)/gnulib-m4/error_h.m4 \
$(top_srcdir)/gnulib-m4/exponentd.m4 \
$(top_srcdir)/gnulib-m4/exponentf.m4 \
$(top_srcdir)/gnulib-m4/exponentl.m4 \
@@ -876,6 +932,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/isnanl.m4 \
$(top_srcdir)/gnulib-m4/iswblank.m4 \
$(top_srcdir)/gnulib-m4/iswdigit.m4 \
+ $(top_srcdir)/gnulib-m4/iswpunct.m4 \
$(top_srcdir)/gnulib-m4/iswxdigit.m4 \
$(top_srcdir)/gnulib-m4/langinfo_h.m4 \
$(top_srcdir)/gnulib-m4/largefile.m4 \
@@ -901,6 +958,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/math_h.m4 \
$(top_srcdir)/gnulib-m4/mbchar.m4 \
$(top_srcdir)/gnulib-m4/mbiter.m4 \
+ $(top_srcdir)/gnulib-m4/mbrtoc32.m4 \
$(top_srcdir)/gnulib-m4/mbrtowc.m4 \
$(top_srcdir)/gnulib-m4/mbsinit.m4 \
$(top_srcdir)/gnulib-m4/mbstate_t.m4 \
@@ -913,6 +971,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/msvc-nothrow.m4 \
$(top_srcdir)/gnulib-m4/multiarch.m4 \
$(top_srcdir)/gnulib-m4/musl.m4 \
+ $(top_srcdir)/gnulib-m4/nan-mips.m4 \
$(top_srcdir)/gnulib-m4/nanosleep.m4 \
$(top_srcdir)/gnulib-m4/netinet_in_h.m4 \
$(top_srcdir)/gnulib-m4/nocrash.m4 \
@@ -933,6 +992,8 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/pthread_sigmask.m4 \
$(top_srcdir)/gnulib-m4/putenv.m4 \
$(top_srcdir)/gnulib-m4/raise.m4 \
+ $(top_srcdir)/gnulib-m4/random.m4 \
+ $(top_srcdir)/gnulib-m4/random_r.m4 \
$(top_srcdir)/gnulib-m4/realloc.m4 \
$(top_srcdir)/gnulib-m4/reallocarray.m4 \
$(top_srcdir)/gnulib-m4/relocatable-lib.m4 \
@@ -948,6 +1009,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/signbit.m4 \
$(top_srcdir)/gnulib-m4/size_max.m4 \
$(top_srcdir)/gnulib-m4/sleep.m4 \
+ $(top_srcdir)/gnulib-m4/snan.m4 \
$(top_srcdir)/gnulib-m4/socketlib.m4 \
$(top_srcdir)/gnulib-m4/sockets.m4 \
$(top_srcdir)/gnulib-m4/socklen.m4 \
@@ -976,7 +1038,13 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/sys_uio_h.m4 \
$(top_srcdir)/gnulib-m4/thread.m4 \
$(top_srcdir)/gnulib-m4/threadlib.m4 \
+ $(top_srcdir)/gnulib-m4/time.m4 \
$(top_srcdir)/gnulib-m4/time_h.m4 \
+ $(top_srcdir)/gnulib-m4/uchar_h.m4 \
+ $(top_srcdir)/gnulib-m4/unicase_h.m4 \
+ $(top_srcdir)/gnulib-m4/unictype_h.m4 \
+ $(top_srcdir)/gnulib-m4/unimetadata_h.m4 \
+ $(top_srcdir)/gnulib-m4/uninorm_h.m4 \
$(top_srcdir)/gnulib-m4/unistd_h.m4 \
$(top_srcdir)/gnulib-m4/usleep.m4 \
$(top_srcdir)/gnulib-m4/vasnprintf.m4 \
@@ -992,7 +1060,6 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/wint_t.m4 \
$(top_srcdir)/gnulib-m4/xalloc.m4 \
$(top_srcdir)/gnulib-m4/xsize.m4 \
- $(top_srcdir)/gnulib-m4/year2038.m4 \
$(top_srcdir)/gnulib-m4/yield.m4 \
$(top_srcdir)/gnulib-m4/zzgnulib.m4 \
$(top_srcdir)/m4/exported.m4 \
@@ -1020,105 +1087,115 @@ am__v_AR_1 =
libtests_a_AR = $(AR) $(ARFLAGS)
am__DEPENDENCIES_1 =
am__libtests_a_SOURCES_DIST = accept.c basename-lgpl.c binary-io.h \
- binary-io.c bind.c btowc.c cloexec.c close.c connect.c dup2.c \
- error.c exitfail.c fcntl.c fd-hook.c fdopen.c fstat.c \
- ftruncate.c getcwd-lgpl.c getdtablesize.c getpagesize.c \
- getprogname.h getprogname.c gettext.h gettimeofday.c ialloc.c \
- inet_pton.c ioctl.c isblank.c listen.c lstat.c mbtowc.c \
- msvc-inval.c msvc-nothrow.c nanosleep.c open.c perror.c pipe.c \
- pselect.c pthread-thread.c pthread_sigmask.c putenv.c raise.c \
- reallocarray.c sched_yield.c select.c setenv.c setlocale.c \
- setsockopt.c sigprocmask.c sleep.c socket.c sockets.h \
+ binary-io.c bind.c btoc32.c btowc.c c32rtomb.c c32tob.c \
+ cloexec.c close.c connect.c dup2.c error.c exitfail.c fcntl.c \
+ fd-hook.c fdopen.c fstat.c ftruncate.c getcwd-lgpl.c \
+ getdtablesize.c getpagesize.c getprogname.c gettext.h \
+ gettimeofday.c ialloc.c inet_pton.c ioctl.c isblank.c listen.c \
+ lstat.c mbtowc.c msvc-inval.c msvc-nothrow.c nan.h nanosleep.c \
+ open.c perror.c pipe.c pselect.c pthread-thread.c \
+ pthread_sigmask.c putenv.c raise.c random.c random_r.c \
+ reallocarray.c same-inode.h same-inode.c sched_yield.c \
+ select.c setenv.c setlocale.c setsockopt.c signed-nan.h \
+ signed-snan.h sigprocmask.c sleep.c snan.h socket.c sockets.h \
sockets.c stat.c stat-time.c stdio-read.c stdio-write.c \
strerror.c strerror-override.c symlink.c sys_socket.c \
- glthread/thread.h glthread/thread.c unsetenv.c usleep.c \
+ glthread/thread.h glthread/thread.c time.c unsetenv.c usleep.c \
wcrtomb.c wctob.c wctomb.c windows-thread.c windows-tls.c \
xmalloc.c xalloc-die.c glthread/yield.h
@GL_COND_OBJ_ACCEPT_TRUE@am__objects_1 = accept.$(OBJEXT)
@GL_COND_OBJ_BIND_TRUE@am__objects_2 = bind.$(OBJEXT)
@GL_COND_OBJ_BTOWC_TRUE@am__objects_3 = btowc.$(OBJEXT)
-@GL_COND_OBJ_CLOSE_TRUE@am__objects_4 = close.$(OBJEXT)
-@GL_COND_OBJ_CONNECT_TRUE@am__objects_5 = connect.$(OBJEXT)
-@GL_COND_OBJ_DUP2_TRUE@am__objects_6 = dup2.$(OBJEXT)
-@GL_COND_OBJ_ERROR_TRUE@am__objects_7 = error.$(OBJEXT)
-@GL_COND_OBJ_FCNTL_TRUE@am__objects_8 = fcntl.$(OBJEXT)
-@GL_COND_OBJ_FDOPEN_TRUE@am__objects_9 = fdopen.$(OBJEXT)
-@GL_COND_OBJ_FSTAT_TRUE@am__objects_10 = fstat.$(OBJEXT)
-@GL_COND_OBJ_FTRUNCATE_TRUE@am__objects_11 = ftruncate.$(OBJEXT)
-@GL_COND_OBJ_GETCWD_LGPL_TRUE@am__objects_12 = getcwd-lgpl.$(OBJEXT)
-@GL_COND_OBJ_GETDTABLESIZE_TRUE@am__objects_13 = \
+@GL_COND_OBJ_C32RTOMB_TRUE@am__objects_4 = c32rtomb.$(OBJEXT)
+@GL_COND_OBJ_CLOSE_TRUE@am__objects_5 = close.$(OBJEXT)
+@GL_COND_OBJ_CONNECT_TRUE@am__objects_6 = connect.$(OBJEXT)
+@GL_COND_OBJ_DUP2_TRUE@am__objects_7 = dup2.$(OBJEXT)
+@GL_COND_OBJ_ERROR_TRUE@am__objects_8 = error.$(OBJEXT)
+@GL_COND_OBJ_FCNTL_TRUE@am__objects_9 = fcntl.$(OBJEXT)
+@GL_COND_OBJ_FDOPEN_TRUE@am__objects_10 = fdopen.$(OBJEXT)
+@GL_COND_OBJ_FSTAT_TRUE@am__objects_11 = fstat.$(OBJEXT)
+@GL_COND_OBJ_FTRUNCATE_TRUE@am__objects_12 = ftruncate.$(OBJEXT)
+@GL_COND_OBJ_GETCWD_LGPL_TRUE@am__objects_13 = getcwd-lgpl.$(OBJEXT)
+@GL_COND_OBJ_GETDTABLESIZE_TRUE@am__objects_14 = \
@GL_COND_OBJ_GETDTABLESIZE_TRUE@ getdtablesize.$(OBJEXT)
-@GL_COND_OBJ_GETPAGESIZE_TRUE@am__objects_14 = getpagesize.$(OBJEXT)
-@GL_COND_OBJ_GETTIMEOFDAY_TRUE@am__objects_15 = \
+@GL_COND_OBJ_GETPAGESIZE_TRUE@am__objects_15 = getpagesize.$(OBJEXT)
+@GL_COND_OBJ_GETPROGNAME_TRUE@am__objects_16 = getprogname.$(OBJEXT)
+@GL_COND_OBJ_GETTIMEOFDAY_TRUE@am__objects_17 = \
@GL_COND_OBJ_GETTIMEOFDAY_TRUE@ gettimeofday.$(OBJEXT)
-@GL_COND_OBJ_INET_PTON_TRUE@am__objects_16 = inet_pton.$(OBJEXT)
-@GL_COND_OBJ_IOCTL_TRUE@am__objects_17 = ioctl.$(OBJEXT)
-@GL_COND_OBJ_ISBLANK_TRUE@am__objects_18 = isblank.$(OBJEXT)
-@GL_COND_OBJ_LISTEN_TRUE@am__objects_19 = listen.$(OBJEXT)
-@GL_COND_OBJ_LSTAT_TRUE@am__objects_20 = lstat.$(OBJEXT)
-@GL_COND_OBJ_MBTOWC_TRUE@am__objects_21 = mbtowc.$(OBJEXT)
-@GL_COND_OBJ_MSVC_INVAL_TRUE@am__objects_22 = msvc-inval.$(OBJEXT)
-@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__objects_23 = \
+@GL_COND_OBJ_INET_PTON_TRUE@am__objects_18 = inet_pton.$(OBJEXT)
+@GL_COND_OBJ_IOCTL_TRUE@am__objects_19 = ioctl.$(OBJEXT)
+@GL_COND_OBJ_ISBLANK_TRUE@am__objects_20 = isblank.$(OBJEXT)
+@GL_COND_OBJ_LISTEN_TRUE@am__objects_21 = listen.$(OBJEXT)
+@GL_COND_OBJ_LSTAT_TRUE@am__objects_22 = lstat.$(OBJEXT)
+@GL_COND_OBJ_MBTOWC_TRUE@am__objects_23 = mbtowc.$(OBJEXT)
+@GL_COND_OBJ_MSVC_INVAL_TRUE@am__objects_24 = msvc-inval.$(OBJEXT)
+@GL_COND_OBJ_MSVC_NOTHROW_TRUE@am__objects_25 = \
@GL_COND_OBJ_MSVC_NOTHROW_TRUE@ msvc-nothrow.$(OBJEXT)
-@GL_COND_OBJ_NANOSLEEP_TRUE@am__objects_24 = nanosleep.$(OBJEXT)
-@GL_COND_OBJ_OPEN_TRUE@am__objects_25 = open.$(OBJEXT)
-@GL_COND_OBJ_PERROR_TRUE@am__objects_26 = perror.$(OBJEXT)
-@GL_COND_OBJ_PIPE_TRUE@am__objects_27 = pipe.$(OBJEXT)
-@GL_COND_OBJ_PSELECT_TRUE@am__objects_28 = pselect.$(OBJEXT)
-@GL_COND_OBJ_PTHREAD_THREAD_TRUE@am__objects_29 = \
+@GL_COND_OBJ_NANOSLEEP_TRUE@am__objects_26 = nanosleep.$(OBJEXT)
+@GL_COND_OBJ_OPEN_TRUE@am__objects_27 = open.$(OBJEXT)
+@GL_COND_OBJ_PERROR_TRUE@am__objects_28 = perror.$(OBJEXT)
+@GL_COND_OBJ_PIPE_TRUE@am__objects_29 = pipe.$(OBJEXT)
+@GL_COND_OBJ_PSELECT_TRUE@am__objects_30 = pselect.$(OBJEXT)
+@GL_COND_OBJ_PTHREAD_THREAD_TRUE@am__objects_31 = \
@GL_COND_OBJ_PTHREAD_THREAD_TRUE@ pthread-thread.$(OBJEXT)
-@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@am__objects_30 = \
+@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@am__objects_32 = \
@GL_COND_OBJ_PTHREAD_SIGMASK_TRUE@ pthread_sigmask.$(OBJEXT)
-@GL_COND_OBJ_PUTENV_TRUE@am__objects_31 = putenv.$(OBJEXT)
-@GL_COND_OBJ_RAISE_TRUE@am__objects_32 = raise.$(OBJEXT)
-@GL_COND_OBJ_REALLOCARRAY_TRUE@am__objects_33 = \
+@GL_COND_OBJ_PUTENV_TRUE@am__objects_33 = putenv.$(OBJEXT)
+@GL_COND_OBJ_RAISE_TRUE@am__objects_34 = raise.$(OBJEXT)
+@GL_COND_OBJ_RANDOM_TRUE@am__objects_35 = random.$(OBJEXT)
+@GL_COND_OBJ_RANDOM_R_TRUE@am__objects_36 = random_r.$(OBJEXT)
+@GL_COND_OBJ_REALLOCARRAY_TRUE@am__objects_37 = \
@GL_COND_OBJ_REALLOCARRAY_TRUE@ reallocarray.$(OBJEXT)
-@GL_COND_OBJ_SCHED_YIELD_TRUE@am__objects_34 = sched_yield.$(OBJEXT)
-@GL_COND_OBJ_SELECT_TRUE@am__objects_35 = select.$(OBJEXT)
-@GL_COND_OBJ_SETENV_TRUE@am__objects_36 = setenv.$(OBJEXT)
-@GL_COND_OBJ_SETLOCALE_TRUE@am__objects_37 = setlocale.$(OBJEXT)
-@GL_COND_OBJ_SETSOCKOPT_TRUE@am__objects_38 = setsockopt.$(OBJEXT)
-@GL_COND_OBJ_SIGPROCMASK_TRUE@am__objects_39 = sigprocmask.$(OBJEXT)
-@GL_COND_OBJ_SLEEP_TRUE@am__objects_40 = sleep.$(OBJEXT)
-@GL_COND_OBJ_SOCKET_TRUE@am__objects_41 = socket.$(OBJEXT)
-@GL_COND_OBJ_STAT_TRUE@am__objects_42 = stat.$(OBJEXT)
-@GL_COND_OBJ_STDIO_READ_TRUE@am__objects_43 = stdio-read.$(OBJEXT)
-@GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_44 = stdio-write.$(OBJEXT)
-@GL_COND_OBJ_STRERROR_TRUE@am__objects_45 = strerror.$(OBJEXT)
-@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_46 = strerror-override.$(OBJEXT)
-@GL_COND_OBJ_SYMLINK_TRUE@am__objects_47 = symlink.$(OBJEXT)
+@GL_COND_OBJ_SCHED_YIELD_TRUE@am__objects_38 = sched_yield.$(OBJEXT)
+@GL_COND_OBJ_SELECT_TRUE@am__objects_39 = select.$(OBJEXT)
+@GL_COND_OBJ_SETENV_TRUE@am__objects_40 = setenv.$(OBJEXT)
+@GL_COND_OBJ_SETLOCALE_TRUE@am__objects_41 = setlocale.$(OBJEXT)
+@GL_COND_OBJ_SETSOCKOPT_TRUE@am__objects_42 = setsockopt.$(OBJEXT)
+@GL_COND_OBJ_SIGPROCMASK_TRUE@am__objects_43 = sigprocmask.$(OBJEXT)
+@GL_COND_OBJ_SLEEP_TRUE@am__objects_44 = sleep.$(OBJEXT)
+@GL_COND_OBJ_SOCKET_TRUE@am__objects_45 = socket.$(OBJEXT)
+@GL_COND_OBJ_STAT_TRUE@am__objects_46 = stat.$(OBJEXT)
+@GL_COND_OBJ_STDIO_READ_TRUE@am__objects_47 = stdio-read.$(OBJEXT)
+@GL_COND_OBJ_STDIO_WRITE_TRUE@am__objects_48 = stdio-write.$(OBJEXT)
+@GL_COND_OBJ_STRERROR_TRUE@am__objects_49 = strerror.$(OBJEXT)
+@GL_COND_OBJ_STRERROR_OVERRIDE_TRUE@am__objects_50 = strerror-override.$(OBJEXT)
+@GL_COND_OBJ_SYMLINK_TRUE@am__objects_51 = symlink.$(OBJEXT)
am__dirstamp = $(am__leading_dot)dirstamp
-@GL_COND_OBJ_UNSETENV_TRUE@am__objects_48 = unsetenv.$(OBJEXT)
-@GL_COND_OBJ_USLEEP_TRUE@am__objects_49 = usleep.$(OBJEXT)
-@GL_COND_OBJ_WCRTOMB_TRUE@am__objects_50 = wcrtomb.$(OBJEXT)
-@GL_COND_OBJ_WCTOB_TRUE@am__objects_51 = wctob.$(OBJEXT)
-@GL_COND_OBJ_WCTOMB_TRUE@am__objects_52 = wctomb.$(OBJEXT)
-@GL_COND_OBJ_WINDOWS_THREAD_TRUE@am__objects_53 = \
+@GL_COND_OBJ_TIME_TRUE@am__objects_52 = time.$(OBJEXT)
+@GL_COND_OBJ_UNSETENV_TRUE@am__objects_53 = unsetenv.$(OBJEXT)
+@GL_COND_OBJ_USLEEP_TRUE@am__objects_54 = usleep.$(OBJEXT)
+@GL_COND_OBJ_WCRTOMB_TRUE@am__objects_55 = wcrtomb.$(OBJEXT)
+@GL_COND_OBJ_WCTOB_TRUE@am__objects_56 = wctob.$(OBJEXT)
+@GL_COND_OBJ_WCTOMB_TRUE@am__objects_57 = wctomb.$(OBJEXT)
+@GL_COND_OBJ_WINDOWS_THREAD_TRUE@am__objects_58 = \
@GL_COND_OBJ_WINDOWS_THREAD_TRUE@ windows-thread.$(OBJEXT)
-@GL_COND_OBJ_WINDOWS_TLS_TRUE@am__objects_54 = windows-tls.$(OBJEXT)
+@GL_COND_OBJ_WINDOWS_TLS_TRUE@am__objects_59 = windows-tls.$(OBJEXT)
am_libtests_a_OBJECTS = $(am__objects_1) basename-lgpl.$(OBJEXT) \
- binary-io.$(OBJEXT) $(am__objects_2) $(am__objects_3) \
- cloexec.$(OBJEXT) $(am__objects_4) $(am__objects_5) \
- $(am__objects_6) $(am__objects_7) exitfail.$(OBJEXT) \
- $(am__objects_8) fd-hook.$(OBJEXT) $(am__objects_9) \
- $(am__objects_10) $(am__objects_11) $(am__objects_12) \
- $(am__objects_13) $(am__objects_14) getprogname.$(OBJEXT) \
- $(am__objects_15) ialloc.$(OBJEXT) $(am__objects_16) \
- $(am__objects_17) $(am__objects_18) $(am__objects_19) \
- $(am__objects_20) $(am__objects_21) $(am__objects_22) \
- $(am__objects_23) $(am__objects_24) $(am__objects_25) \
- $(am__objects_26) $(am__objects_27) $(am__objects_28) \
- $(am__objects_29) $(am__objects_30) $(am__objects_31) \
- $(am__objects_32) $(am__objects_33) $(am__objects_34) \
- $(am__objects_35) $(am__objects_36) $(am__objects_37) \
- $(am__objects_38) $(am__objects_39) $(am__objects_40) \
- $(am__objects_41) sockets.$(OBJEXT) $(am__objects_42) \
- stat-time.$(OBJEXT) $(am__objects_43) $(am__objects_44) \
- $(am__objects_45) $(am__objects_46) $(am__objects_47) \
+ binary-io.$(OBJEXT) $(am__objects_2) btoc32.$(OBJEXT) \
+ $(am__objects_3) $(am__objects_4) c32tob.$(OBJEXT) \
+ cloexec.$(OBJEXT) $(am__objects_5) $(am__objects_6) \
+ $(am__objects_7) $(am__objects_8) exitfail.$(OBJEXT) \
+ $(am__objects_9) fd-hook.$(OBJEXT) $(am__objects_10) \
+ $(am__objects_11) $(am__objects_12) $(am__objects_13) \
+ $(am__objects_14) $(am__objects_15) $(am__objects_16) \
+ $(am__objects_17) ialloc.$(OBJEXT) $(am__objects_18) \
+ $(am__objects_19) $(am__objects_20) $(am__objects_21) \
+ $(am__objects_22) $(am__objects_23) $(am__objects_24) \
+ $(am__objects_25) $(am__objects_26) $(am__objects_27) \
+ $(am__objects_28) $(am__objects_29) $(am__objects_30) \
+ $(am__objects_31) $(am__objects_32) $(am__objects_33) \
+ $(am__objects_34) $(am__objects_35) $(am__objects_36) \
+ $(am__objects_37) same-inode.$(OBJEXT) $(am__objects_38) \
+ $(am__objects_39) $(am__objects_40) $(am__objects_41) \
+ $(am__objects_42) $(am__objects_43) $(am__objects_44) \
+ $(am__objects_45) sockets.$(OBJEXT) $(am__objects_46) \
+ stat-time.$(OBJEXT) $(am__objects_47) $(am__objects_48) \
+ $(am__objects_49) $(am__objects_50) $(am__objects_51) \
sys_socket.$(OBJEXT) glthread/thread.$(OBJEXT) \
- $(am__objects_48) $(am__objects_49) $(am__objects_50) \
- $(am__objects_51) $(am__objects_52) $(am__objects_53) \
- $(am__objects_54) xmalloc.$(OBJEXT) xalloc-die.$(OBJEXT)
+ $(am__objects_52) $(am__objects_53) $(am__objects_54) \
+ $(am__objects_55) $(am__objects_56) $(am__objects_57) \
+ $(am__objects_58) $(am__objects_59) xmalloc.$(OBJEXT) \
+ xalloc-die.$(OBJEXT)
libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
am_current_locale_OBJECTS = locale.$(OBJEXT)
current_locale_OBJECTS = $(am_current_locale_OBJECTS)
@@ -1135,6 +1212,12 @@ test_accept_OBJECTS = test-accept.$(OBJEXT)
am__DEPENDENCIES_2 = libtests.a ../lib/libunistring.la libtests.a \
../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
test_accept_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_alignasof_SOURCES = test-alignasof.c
+test_alignasof_OBJECTS = test-alignasof.$(OBJEXT)
+test_alignasof_LDADD = $(LDADD)
+test_alignasof_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
test_alloca_opt_SOURCES = test-alloca-opt.c
test_alloca_opt_OBJECTS = test-alloca-opt.$(OBJEXT)
test_alloca_opt_LDADD = $(LDADD)
@@ -1192,6 +1275,9 @@ test_block_of_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_block_test_OBJECTS = unictype/test-block_test.$(OBJEXT)
test_block_test_OBJECTS = $(am_test_block_test_OBJECTS)
test_block_test_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_btoc32_SOURCES = test-btoc32.c
+test_btoc32_OBJECTS = test-btoc32.$(OBJEXT)
+test_btoc32_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
test_btowc_SOURCES = test-btowc.c
test_btowc_OBJECTS = test-btowc.$(OBJEXT)
test_btowc_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
@@ -1207,6 +1293,72 @@ test_c_strncasecmp_SOURCES = test-c-strncasecmp.c
test_c_strncasecmp_OBJECTS = test-c-strncasecmp.$(OBJEXT)
test_c_strncasecmp_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1)
+test_c32isalnum_SOURCES = test-c32isalnum.c
+test_c32isalnum_OBJECTS = test-c32isalnum.$(OBJEXT)
+test_c32isalnum_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isalpha_SOURCES = test-c32isalpha.c
+test_c32isalpha_OBJECTS = test-c32isalpha.$(OBJEXT)
+test_c32isalpha_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isblank_SOURCES = test-c32isblank.c
+test_c32isblank_OBJECTS = test-c32isblank.$(OBJEXT)
+test_c32isblank_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32iscntrl_SOURCES = test-c32iscntrl.c
+test_c32iscntrl_OBJECTS = test-c32iscntrl.$(OBJEXT)
+test_c32iscntrl_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isdigit_SOURCES = test-c32isdigit.c
+test_c32isdigit_OBJECTS = test-c32isdigit.$(OBJEXT)
+test_c32isdigit_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isgraph_SOURCES = test-c32isgraph.c
+test_c32isgraph_OBJECTS = test-c32isgraph.$(OBJEXT)
+test_c32isgraph_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32islower_SOURCES = test-c32islower.c
+test_c32islower_OBJECTS = test-c32islower.$(OBJEXT)
+test_c32islower_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isprint_SOURCES = test-c32isprint.c
+test_c32isprint_OBJECTS = test-c32isprint.$(OBJEXT)
+test_c32isprint_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32ispunct_SOURCES = test-c32ispunct.c
+test_c32ispunct_OBJECTS = test-c32ispunct.$(OBJEXT)
+test_c32ispunct_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isspace_SOURCES = test-c32isspace.c
+test_c32isspace_OBJECTS = test-c32isspace.$(OBJEXT)
+test_c32isspace_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isupper_SOURCES = test-c32isupper.c
+test_c32isupper_OBJECTS = test-c32isupper.$(OBJEXT)
+test_c32isupper_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32isxdigit_SOURCES = test-c32isxdigit.c
+test_c32isxdigit_OBJECTS = test-c32isxdigit.$(OBJEXT)
+test_c32isxdigit_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32rtomb_SOURCES = test-c32rtomb.c
+test_c32rtomb_OBJECTS = test-c32rtomb.$(OBJEXT)
+test_c32rtomb_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
+test_c32rtomb_w32_SOURCES = test-c32rtomb-w32.c
+test_c32rtomb_w32_OBJECTS = test-c32rtomb-w32.$(OBJEXT)
+test_c32rtomb_w32_LDADD = $(LDADD)
+test_c32rtomb_w32_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+test_c32tolower_SOURCES = test-c32tolower.c
+test_c32tolower_OBJECTS = test-c32tolower.$(OBJEXT)
+test_c32tolower_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_c32width_SOURCES = test-c32width.c
+test_c32width_OBJECTS = test-c32width.$(OBJEXT)
+test_c32width_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
test_calloc_gnu_SOURCES = test-calloc-gnu.c
test_calloc_gnu_OBJECTS = test-calloc-gnu.$(OBJEXT)
test_calloc_gnu_LDADD = $(LDADD)
@@ -1479,6 +1631,9 @@ test_errno_OBJECTS = test-errno.$(OBJEXT)
test_errno_LDADD = $(LDADD)
test_errno_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+test_error_SOURCES = test-error.c
+test_error_OBJECTS = test-error.$(OBJEXT)
+test_error_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
test_fcntl_SOURCES = test-fcntl.c
test_fcntl_OBJECTS = test-fcntl.$(OBJEXT)
test_fcntl_LDADD = $(LDADD)
@@ -1598,6 +1753,15 @@ test_ignore_value_LDADD = $(LDADD)
test_ignore_value_DEPENDENCIES = libtests.a ../lib/libunistring.la \
libtests.a ../lib/libunistring.la libtests.a \
$(am__DEPENDENCIES_1)
+am_test_incb_byname_OBJECTS = unictype/test-incb_byname.$(OBJEXT)
+test_incb_byname_OBJECTS = $(am_test_incb_byname_OBJECTS)
+test_incb_byname_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_incb_name_OBJECTS = unictype/test-incb_name.$(OBJEXT)
+test_incb_name_OBJECTS = $(am_test_incb_name_OBJECTS)
+test_incb_name_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_incb_of_OBJECTS = unictype/test-incb_of.$(OBJEXT)
+test_incb_of_OBJECTS = $(am_test_incb_of_OBJECTS)
+test_incb_of_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_inet_pton_SOURCES = test-inet_pton.c
test_inet_pton_OBJECTS = test-inet_pton.$(OBJEXT)
test_inet_pton_DEPENDENCIES = $(am__DEPENDENCIES_2)
@@ -1652,6 +1816,10 @@ test_iswdigit_SOURCES = test-iswdigit.c
test_iswdigit_OBJECTS = test-iswdigit.$(OBJEXT)
test_iswdigit_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_iswpunct_SOURCES = test-iswpunct.c
+test_iswpunct_OBJECTS = test-iswpunct.$(OBJEXT)
+test_iswpunct_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_iswxdigit_SOURCES = test-iswxdigit.c
test_iswxdigit_OBJECTS = test-iswxdigit.$(OBJEXT)
test_iswxdigit_DEPENDENCIES = $(am__DEPENDENCIES_2) \
@@ -1693,6 +1861,12 @@ test_langinfo_LDADD = $(LDADD)
test_langinfo_DEPENDENCIES = libtests.a ../lib/libunistring.la \
libtests.a ../lib/libunistring.la libtests.a \
$(am__DEPENDENCIES_1)
+test_largefile_SOURCES = test-largefile.c
+test_largefile_OBJECTS = test-largefile.$(OBJEXT)
+test_largefile_LDADD = $(LDADD)
+test_largefile_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
test_limits_h_SOURCES = test-limits-h.c
test_limits_h_OBJECTS = test-limits-h.$(OBJEXT)
test_limits_h_LDADD = $(LDADD)
@@ -1746,6 +1920,16 @@ test_math_OBJECTS = test-math.$(OBJEXT)
test_math_LDADD = $(LDADD)
test_math_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+test_mbrtoc32_SOURCES = test-mbrtoc32.c
+test_mbrtoc32_OBJECTS = test-mbrtoc32.$(OBJEXT)
+test_mbrtoc32_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_mbrtoc32_w32_SOURCES = test-mbrtoc32-w32.c
+test_mbrtoc32_w32_OBJECTS = test-mbrtoc32-w32.$(OBJEXT)
+test_mbrtoc32_w32_LDADD = $(LDADD)
+test_mbrtoc32_w32_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
test_mbrtowc_SOURCES = test-mbrtowc.c
test_mbrtowc_OBJECTS = test-mbrtowc.$(OBJEXT)
test_mbrtowc_DEPENDENCIES = $(am__DEPENDENCIES_2) \
@@ -2047,6 +2231,16 @@ test_pr_hex_digit_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_pr_hyphen_OBJECTS = unictype/test-pr_hyphen.$(OBJEXT)
test_pr_hyphen_OBJECTS = $(am_test_pr_hyphen_OBJECTS)
test_pr_hyphen_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_pr_id_compat_math_continue_OBJECTS = \
+ unictype/test-pr_id_compat_math_continue.$(OBJEXT)
+test_pr_id_compat_math_continue_OBJECTS = \
+ $(am_test_pr_id_compat_math_continue_OBJECTS)
+test_pr_id_compat_math_continue_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_pr_id_compat_math_start_OBJECTS = \
+ unictype/test-pr_id_compat_math_start.$(OBJEXT)
+test_pr_id_compat_math_start_OBJECTS = \
+ $(am_test_pr_id_compat_math_start_OBJECTS)
+test_pr_id_compat_math_start_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_pr_id_continue_OBJECTS = \
unictype/test-pr_id_continue.$(OBJEXT)
test_pr_id_continue_OBJECTS = $(am_test_pr_id_continue_OBJECTS)
@@ -2068,6 +2262,11 @@ am_test_pr_ids_trinary_operator_OBJECTS = \
test_pr_ids_trinary_operator_OBJECTS = \
$(am_test_pr_ids_trinary_operator_OBJECTS)
test_pr_ids_trinary_operator_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_pr_ids_unary_operator_OBJECTS = \
+ unictype/test-pr_ids_unary_operator.$(OBJEXT)
+test_pr_ids_unary_operator_OBJECTS = \
+ $(am_test_pr_ids_unary_operator_OBJECTS)
+test_pr_ids_unary_operator_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_pr_ignorable_control_OBJECTS = \
unictype/test-pr_ignorable_control.$(OBJEXT)
test_pr_ignorable_control_OBJECTS = \
@@ -2168,6 +2367,12 @@ am_test_pr_pattern_white_space_OBJECTS = \
test_pr_pattern_white_space_OBJECTS = \
$(am_test_pr_pattern_white_space_OBJECTS)
test_pr_pattern_white_space_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_pr_prepended_concatenation_mark_OBJECTS = \
+ unictype/test-pr_prepended_concatenation_mark.$(OBJEXT)
+test_pr_prepended_concatenation_mark_OBJECTS = \
+ $(am_test_pr_prepended_concatenation_mark_OBJECTS)
+test_pr_prepended_concatenation_mark_DEPENDENCIES = \
+ $(am__DEPENDENCIES_2)
am_test_pr_private_use_OBJECTS = \
unictype/test-pr_private_use.$(OBJEXT)
test_pr_private_use_OBJECTS = $(am_test_pr_private_use_OBJECTS)
@@ -2279,6 +2484,23 @@ test_raise_OBJECTS = test-raise.$(OBJEXT)
test_raise_LDADD = $(LDADD)
test_raise_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+test_random_SOURCES = test-random.c
+test_random_OBJECTS = test-random.$(OBJEXT)
+test_random_LDADD = $(LDADD)
+test_random_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+test_random_mt_SOURCES = test-random-mt.c
+test_random_mt_OBJECTS = test-random-mt.$(OBJEXT)
+test_random_mt_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+test_random_r_SOURCES = test-random_r.c
+test_random_r_OBJECTS = test-random_r.$(OBJEXT)
+test_random_r_LDADD = $(LDADD)
+test_random_r_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
test_realloc_gnu_SOURCES = test-realloc-gnu.c
test_realloc_gnu_OBJECTS = test-realloc-gnu.$(OBJEXT)
test_realloc_gnu_LDADD = $(LDADD)
@@ -2336,6 +2558,13 @@ test_setlocale_null_mt_one_OBJECTS = \
test-setlocale_null-mt-one.$(OBJEXT)
test_setlocale_null_mt_one_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_setlocale_null_unlocked_SOURCES = test-setlocale_null-unlocked.c
+test_setlocale_null_unlocked_OBJECTS = \
+ test-setlocale_null-unlocked.$(OBJEXT)
+test_setlocale_null_unlocked_LDADD = $(LDADD)
+test_setlocale_null_unlocked_DEPENDENCIES = libtests.a \
+ ../lib/libunistring.la libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
test_setsockopt_SOURCES = test-setsockopt.c
test_setsockopt_OBJECTS = test-setsockopt.$(OBJEXT)
test_setsockopt_DEPENDENCIES = $(am__DEPENDENCIES_2)
@@ -2372,12 +2601,6 @@ test_stat_time_SOURCES = test-stat-time.c
test_stat_time_OBJECTS = test-stat-time.$(OBJEXT)
test_stat_time_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1)
-test_stdalign_SOURCES = test-stdalign.c
-test_stdalign_OBJECTS = test-stdalign.$(OBJEXT)
-test_stdalign_LDADD = $(LDADD)
-test_stdalign_DEPENDENCIES = libtests.a ../lib/libunistring.la \
- libtests.a ../lib/libunistring.la libtests.a \
- $(am__DEPENDENCIES_1)
test_stdbool_SOURCES = test-stdbool.c
test_stdbool_OBJECTS = test-stdbool.$(OBJEXT)
test_stdbool_LDADD = $(LDADD)
@@ -2524,6 +2747,15 @@ test_time_OBJECTS = test-time.$(OBJEXT)
test_time_LDADD = $(LDADD)
test_time_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
+test_time_h_SOURCES = test-time-h.c
+test_time_h_OBJECTS = test-time-h.$(OBJEXT)
+test_time_h_LDADD = $(LDADD)
+test_time_h_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
+am_test_u_version_OBJECTS = unimetadata/test-u-version.$(OBJEXT)
+test_u_version_OBJECTS = $(am_test_u_version_OBJECTS)
+test_u_version_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u16_asnprintf1_OBJECTS = \
unistdio/test-u16-asnprintf1.$(OBJEXT)
test_u16_asnprintf1_OBJECTS = $(am_test_u16_asnprintf1_OBJECTS)
@@ -2624,6 +2856,9 @@ test_u16_normcmp_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u16_normcoll_OBJECTS = uninorm/test-u16-normcoll.$(OBJEXT)
test_u16_normcoll_OBJECTS = $(am_test_u16_normcoll_OBJECTS)
test_u16_normcoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u16_pcpy_OBJECTS = unistr/test-u16-pcpy.$(OBJEXT)
+test_u16_pcpy_OBJECTS = $(am_test_u16_pcpy_OBJECTS)
+test_u16_pcpy_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u16_possible_linebreaks_OBJECTS = \
unilbrk/test-u16-possible-linebreaks.$(OBJEXT)
test_u16_possible_linebreaks_OBJECTS = \
@@ -2871,6 +3106,9 @@ test_u32_normcmp_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u32_normcoll_OBJECTS = uninorm/test-u32-normcoll.$(OBJEXT)
test_u32_normcoll_OBJECTS = $(am_test_u32_normcoll_OBJECTS)
test_u32_normcoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u32_pcpy_OBJECTS = unistr/test-u32-pcpy.$(OBJEXT)
+test_u32_pcpy_OBJECTS = $(am_test_u32_pcpy_OBJECTS)
+test_u32_pcpy_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u32_possible_linebreaks_OBJECTS = \
unilbrk/test-u32-possible-linebreaks.$(OBJEXT)
test_u32_possible_linebreaks_OBJECTS = \
@@ -3100,6 +3338,9 @@ test_u8_normcmp_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u8_normcoll_OBJECTS = uninorm/test-u8-normcoll.$(OBJEXT)
test_u8_normcoll_OBJECTS = $(am_test_u8_normcoll_OBJECTS)
test_u8_normcoll_DEPENDENCIES = $(am__DEPENDENCIES_2)
+am_test_u8_pcpy_OBJECTS = unistr/test-u8-pcpy.$(OBJEXT)
+test_u8_pcpy_OBJECTS = $(am_test_u8_pcpy_OBJECTS)
+test_u8_pcpy_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_u8_possible_linebreaks_OBJECTS = \
unilbrk/test-u8-possible-linebreaks.$(OBJEXT)
test_u8_possible_linebreaks_OBJECTS = \
@@ -3258,6 +3499,11 @@ test_uc_width_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_test_uc_width2_OBJECTS = uniwidth/test-uc_width2.$(OBJEXT)
test_uc_width2_OBJECTS = $(am_test_uc_width2_OBJECTS)
test_uc_width2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_uchar_SOURCES = test-uchar.c
+test_uchar_OBJECTS = test-uchar.$(OBJEXT)
+test_uchar_LDADD = $(LDADD)
+test_uchar_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ ../lib/libunistring.la libtests.a $(am__DEPENDENCIES_1)
am_test_ulc_asnprintf1_OBJECTS = \
unistdio/test-ulc-asnprintf1.$(OBJEXT)
test_ulc_asnprintf1_OBJECTS = $(am_test_ulc_asnprintf1_OBJECTS)
@@ -3404,56 +3650,67 @@ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
./$(DEPDIR)/basename-lgpl.Po ./$(DEPDIR)/binary-io.Po \
- ./$(DEPDIR)/bind.Po ./$(DEPDIR)/btowc.Po ./$(DEPDIR)/calloc.Po \
- ./$(DEPDIR)/cloexec.Po ./$(DEPDIR)/close.Po \
- ./$(DEPDIR)/connect.Po ./$(DEPDIR)/dup2.Po \
- ./$(DEPDIR)/error.Po ./$(DEPDIR)/exitfail.Po \
- ./$(DEPDIR)/fcntl.Po ./$(DEPDIR)/fd-hook.Po \
- ./$(DEPDIR)/fdopen.Po ./$(DEPDIR)/fstat.Po \
- ./$(DEPDIR)/ftruncate.Po ./$(DEPDIR)/getcwd-lgpl.Po \
- ./$(DEPDIR)/getdtablesize.Po ./$(DEPDIR)/getpagesize.Po \
- ./$(DEPDIR)/getprogname.Po ./$(DEPDIR)/gettimeofday.Po \
- ./$(DEPDIR)/ialloc.Po ./$(DEPDIR)/iconvsupport.Po \
- ./$(DEPDIR)/inet_pton.Po ./$(DEPDIR)/ioctl.Po \
- ./$(DEPDIR)/isblank.Po ./$(DEPDIR)/listen.Po \
- ./$(DEPDIR)/locale.Po ./$(DEPDIR)/lstat.Po \
- ./$(DEPDIR)/malloc.Po ./$(DEPDIR)/mbtowc.Po \
- ./$(DEPDIR)/msvc-inval.Po ./$(DEPDIR)/msvc-nothrow.Po \
- ./$(DEPDIR)/nanosleep.Po ./$(DEPDIR)/open.Po \
- ./$(DEPDIR)/perror.Po ./$(DEPDIR)/pipe.Po \
+ ./$(DEPDIR)/bind.Po ./$(DEPDIR)/btoc32.Po ./$(DEPDIR)/btowc.Po \
+ ./$(DEPDIR)/c32rtomb.Po ./$(DEPDIR)/c32tob.Po \
+ ./$(DEPDIR)/calloc.Po ./$(DEPDIR)/cloexec.Po \
+ ./$(DEPDIR)/close.Po ./$(DEPDIR)/connect.Po \
+ ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/error.Po \
+ ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/fcntl.Po \
+ ./$(DEPDIR)/fd-hook.Po ./$(DEPDIR)/fdopen.Po \
+ ./$(DEPDIR)/fstat.Po ./$(DEPDIR)/ftruncate.Po \
+ ./$(DEPDIR)/getcwd-lgpl.Po ./$(DEPDIR)/getdtablesize.Po \
+ ./$(DEPDIR)/getpagesize.Po ./$(DEPDIR)/getprogname.Po \
+ ./$(DEPDIR)/gettimeofday.Po ./$(DEPDIR)/ialloc.Po \
+ ./$(DEPDIR)/iconvsupport.Po ./$(DEPDIR)/inet_pton.Po \
+ ./$(DEPDIR)/ioctl.Po ./$(DEPDIR)/isblank.Po \
+ ./$(DEPDIR)/listen.Po ./$(DEPDIR)/locale.Po \
+ ./$(DEPDIR)/lstat.Po ./$(DEPDIR)/malloc.Po \
+ ./$(DEPDIR)/mbtowc.Po ./$(DEPDIR)/msvc-inval.Po \
+ ./$(DEPDIR)/msvc-nothrow.Po ./$(DEPDIR)/nanosleep.Po \
+ ./$(DEPDIR)/open.Po ./$(DEPDIR)/perror.Po ./$(DEPDIR)/pipe.Po \
./$(DEPDIR)/pselect.Po ./$(DEPDIR)/pthread-thread.Po \
./$(DEPDIR)/pthread_sigmask.Po ./$(DEPDIR)/putenv.Po \
- ./$(DEPDIR)/raise.Po ./$(DEPDIR)/randomd.Po \
+ ./$(DEPDIR)/raise.Po ./$(DEPDIR)/random.Po \
+ ./$(DEPDIR)/random_r.Po ./$(DEPDIR)/randomd.Po \
./$(DEPDIR)/randoml.Po ./$(DEPDIR)/realloc.Po \
- ./$(DEPDIR)/reallocarray.Po ./$(DEPDIR)/sched_yield.Po \
- ./$(DEPDIR)/select.Po ./$(DEPDIR)/setenv.Po \
- ./$(DEPDIR)/setlocale.Po ./$(DEPDIR)/setsockopt.Po \
- ./$(DEPDIR)/sigprocmask.Po ./$(DEPDIR)/sleep.Po \
- ./$(DEPDIR)/socket.Po ./$(DEPDIR)/sockets.Po \
- ./$(DEPDIR)/stat-time.Po ./$(DEPDIR)/stat-w32.Po \
- ./$(DEPDIR)/stat.Po ./$(DEPDIR)/stdio-read.Po \
- ./$(DEPDIR)/stdio-write.Po ./$(DEPDIR)/strerror-override.Po \
- ./$(DEPDIR)/strerror.Po ./$(DEPDIR)/strerror_r.Po \
- ./$(DEPDIR)/symlink.Po ./$(DEPDIR)/sys_socket.Po \
- ./$(DEPDIR)/test-accept.Po ./$(DEPDIR)/test-alloca-opt.Po \
+ ./$(DEPDIR)/reallocarray.Po ./$(DEPDIR)/same-inode.Po \
+ ./$(DEPDIR)/sched_yield.Po ./$(DEPDIR)/select.Po \
+ ./$(DEPDIR)/setenv.Po ./$(DEPDIR)/setlocale.Po \
+ ./$(DEPDIR)/setsockopt.Po ./$(DEPDIR)/sigprocmask.Po \
+ ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/socket.Po \
+ ./$(DEPDIR)/sockets.Po ./$(DEPDIR)/stat-time.Po \
+ ./$(DEPDIR)/stat-w32.Po ./$(DEPDIR)/stat.Po \
+ ./$(DEPDIR)/stdio-read.Po ./$(DEPDIR)/stdio-write.Po \
+ ./$(DEPDIR)/strerror-override.Po ./$(DEPDIR)/strerror.Po \
+ ./$(DEPDIR)/strerror_r.Po ./$(DEPDIR)/symlink.Po \
+ ./$(DEPDIR)/sys_socket.Po ./$(DEPDIR)/test-accept.Po \
+ ./$(DEPDIR)/test-alignasof.Po ./$(DEPDIR)/test-alloca-opt.Po \
./$(DEPDIR)/test-arpa_inet.Po \
./$(DEPDIR)/test-array-mergesort.Po ./$(DEPDIR)/test-assert.Po \
./$(DEPDIR)/test-binary-io.Po ./$(DEPDIR)/test-bind.Po \
- ./$(DEPDIR)/test-btowc.Po ./$(DEPDIR)/test-c-ctype.Po \
- ./$(DEPDIR)/test-c-strcasecmp.Po \
+ ./$(DEPDIR)/test-btoc32.Po ./$(DEPDIR)/test-btowc.Po \
+ ./$(DEPDIR)/test-c-ctype.Po ./$(DEPDIR)/test-c-strcasecmp.Po \
./$(DEPDIR)/test-c-strncasecmp.Po \
+ ./$(DEPDIR)/test-c32isalnum.Po ./$(DEPDIR)/test-c32isalpha.Po \
+ ./$(DEPDIR)/test-c32isblank.Po ./$(DEPDIR)/test-c32iscntrl.Po \
+ ./$(DEPDIR)/test-c32isdigit.Po ./$(DEPDIR)/test-c32isgraph.Po \
+ ./$(DEPDIR)/test-c32islower.Po ./$(DEPDIR)/test-c32isprint.Po \
+ ./$(DEPDIR)/test-c32ispunct.Po ./$(DEPDIR)/test-c32isspace.Po \
+ ./$(DEPDIR)/test-c32isupper.Po ./$(DEPDIR)/test-c32isxdigit.Po \
+ ./$(DEPDIR)/test-c32rtomb-w32.Po ./$(DEPDIR)/test-c32rtomb.Po \
+ ./$(DEPDIR)/test-c32tolower.Po ./$(DEPDIR)/test-c32width.Po \
./$(DEPDIR)/test-calloc-gnu.Po ./$(DEPDIR)/test-cloexec.Po \
./$(DEPDIR)/test-close.Po ./$(DEPDIR)/test-connect.Po \
./$(DEPDIR)/test-ctype.Po ./$(DEPDIR)/test-dup2.Po \
./$(DEPDIR)/test-environ.Po ./$(DEPDIR)/test-errno.Po \
- ./$(DEPDIR)/test-fcntl-h.Po ./$(DEPDIR)/test-fcntl.Po \
- ./$(DEPDIR)/test-fdopen.Po ./$(DEPDIR)/test-fgetc.Po \
- ./$(DEPDIR)/test-float.Po ./$(DEPDIR)/test-fputc.Po \
- ./$(DEPDIR)/test-fread.Po ./$(DEPDIR)/test-free.Po \
- ./$(DEPDIR)/test-frexp.Po ./$(DEPDIR)/test-frexpl.Po \
- ./$(DEPDIR)/test-fseterr.Po ./$(DEPDIR)/test-fstat.Po \
- ./$(DEPDIR)/test-ftruncate.Po ./$(DEPDIR)/test-fwrite.Po \
- ./$(DEPDIR)/test-getcwd-lgpl.Po \
+ ./$(DEPDIR)/test-error.Po ./$(DEPDIR)/test-fcntl-h.Po \
+ ./$(DEPDIR)/test-fcntl.Po ./$(DEPDIR)/test-fdopen.Po \
+ ./$(DEPDIR)/test-fgetc.Po ./$(DEPDIR)/test-float.Po \
+ ./$(DEPDIR)/test-fputc.Po ./$(DEPDIR)/test-fread.Po \
+ ./$(DEPDIR)/test-free.Po ./$(DEPDIR)/test-frexp.Po \
+ ./$(DEPDIR)/test-frexpl.Po ./$(DEPDIR)/test-fseterr.Po \
+ ./$(DEPDIR)/test-fstat.Po ./$(DEPDIR)/test-ftruncate.Po \
+ ./$(DEPDIR)/test-fwrite.Po ./$(DEPDIR)/test-getcwd-lgpl.Po \
./$(DEPDIR)/test-getdtablesize.Po \
./$(DEPDIR)/test-getprogname.Po \
./$(DEPDIR)/test-gettimeofday.Po \
@@ -3464,13 +3721,15 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
./$(DEPDIR)/test-isblank.Po ./$(DEPDIR)/test-isnand-nolibm.Po \
./$(DEPDIR)/test-isnanf-nolibm.Po \
./$(DEPDIR)/test-isnanl-nolibm.Po ./$(DEPDIR)/test-iswblank.Po \
- ./$(DEPDIR)/test-iswdigit.Po ./$(DEPDIR)/test-iswxdigit.Po \
- ./$(DEPDIR)/test-langinfo.Po ./$(DEPDIR)/test-limits-h.Po \
+ ./$(DEPDIR)/test-iswdigit.Po ./$(DEPDIR)/test-iswpunct.Po \
+ ./$(DEPDIR)/test-iswxdigit.Po ./$(DEPDIR)/test-langinfo.Po \
+ ./$(DEPDIR)/test-largefile.Po ./$(DEPDIR)/test-limits-h.Po \
./$(DEPDIR)/test-listen.Po ./$(DEPDIR)/test-localcharset.Po \
./$(DEPDIR)/test-locale.Po ./$(DEPDIR)/test-localename.Po \
./$(DEPDIR)/test-lock.Po ./$(DEPDIR)/test-lstat.Po \
./$(DEPDIR)/test-malloc-gnu.Po ./$(DEPDIR)/test-malloca.Po \
- ./$(DEPDIR)/test-math.Po ./$(DEPDIR)/test-mbrtowc-w32.Po \
+ ./$(DEPDIR)/test-math.Po ./$(DEPDIR)/test-mbrtoc32-w32.Po \
+ ./$(DEPDIR)/test-mbrtoc32.Po ./$(DEPDIR)/test-mbrtowc-w32.Po \
./$(DEPDIR)/test-mbrtowc.Po ./$(DEPDIR)/test-mbsinit.Po \
./$(DEPDIR)/test-memchr.Po ./$(DEPDIR)/test-nanosleep.Po \
./$(DEPDIR)/test-netinet_in.Po ./$(DEPDIR)/test-once.Po \
@@ -3481,7 +3740,8 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
./$(DEPDIR)/test-pthread-thread.Po ./$(DEPDIR)/test-pthread.Po \
./$(DEPDIR)/test-pthread_sigmask1.Po \
./$(DEPDIR)/test-pthread_sigmask2.Po ./$(DEPDIR)/test-raise.Po \
- ./$(DEPDIR)/test-realloc-gnu.Po \
+ ./$(DEPDIR)/test-random-mt.Po ./$(DEPDIR)/test-random.Po \
+ ./$(DEPDIR)/test-random_r.Po ./$(DEPDIR)/test-realloc-gnu.Po \
./$(DEPDIR)/test-reallocarray.Po ./$(DEPDIR)/test-rwlock1.Po \
./$(DEPDIR)/test-sched.Po ./$(DEPDIR)/test-select-fd.Po \
./$(DEPDIR)/test-select-stdin.Po ./$(DEPDIR)/test-select.Po \
@@ -3489,35 +3749,37 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
./$(DEPDIR)/test-setlocale2.Po \
./$(DEPDIR)/test-setlocale_null-mt-all.Po \
./$(DEPDIR)/test-setlocale_null-mt-one.Po \
+ ./$(DEPDIR)/test-setlocale_null-unlocked.Po \
./$(DEPDIR)/test-setlocale_null.Po \
./$(DEPDIR)/test-setsockopt.Po ./$(DEPDIR)/test-signal-h.Po \
./$(DEPDIR)/test-signbit.Po ./$(DEPDIR)/test-sigprocmask.Po \
./$(DEPDIR)/test-sleep.Po ./$(DEPDIR)/test-sockets.Po \
./$(DEPDIR)/test-stat-time.Po ./$(DEPDIR)/test-stat.Po \
- ./$(DEPDIR)/test-stdalign.Po ./$(DEPDIR)/test-stdbool.Po \
- ./$(DEPDIR)/test-stdckdint.Po ./$(DEPDIR)/test-stddef.Po \
- ./$(DEPDIR)/test-stdint.Po ./$(DEPDIR)/test-stdio.Po \
- ./$(DEPDIR)/test-stdlib.Po ./$(DEPDIR)/test-strerror.Po \
- ./$(DEPDIR)/test-strerror_r.Po ./$(DEPDIR)/test-striconveh.Po \
- ./$(DEPDIR)/test-striconveha.Po ./$(DEPDIR)/test-string.Po \
- ./$(DEPDIR)/test-strncat.Po ./$(DEPDIR)/test-strstr.Po \
- ./$(DEPDIR)/test-symlink.Po ./$(DEPDIR)/test-sys_ioctl.Po \
- ./$(DEPDIR)/test-sys_select.Po ./$(DEPDIR)/test-sys_socket.Po \
- ./$(DEPDIR)/test-sys_stat.Po ./$(DEPDIR)/test-sys_time.Po \
- ./$(DEPDIR)/test-sys_types.Po ./$(DEPDIR)/test-sys_uio.Po \
- ./$(DEPDIR)/test-thread_create.Po \
- ./$(DEPDIR)/test-thread_self.Po ./$(DEPDIR)/test-time.Po \
+ ./$(DEPDIR)/test-stdbool.Po ./$(DEPDIR)/test-stdckdint.Po \
+ ./$(DEPDIR)/test-stddef.Po ./$(DEPDIR)/test-stdint.Po \
+ ./$(DEPDIR)/test-stdio.Po ./$(DEPDIR)/test-stdlib.Po \
+ ./$(DEPDIR)/test-strerror.Po ./$(DEPDIR)/test-strerror_r.Po \
+ ./$(DEPDIR)/test-striconveh.Po ./$(DEPDIR)/test-striconveha.Po \
+ ./$(DEPDIR)/test-string.Po ./$(DEPDIR)/test-strncat.Po \
+ ./$(DEPDIR)/test-strstr.Po ./$(DEPDIR)/test-symlink.Po \
+ ./$(DEPDIR)/test-sys_ioctl.Po ./$(DEPDIR)/test-sys_select.Po \
+ ./$(DEPDIR)/test-sys_socket.Po ./$(DEPDIR)/test-sys_stat.Po \
+ ./$(DEPDIR)/test-sys_time.Po ./$(DEPDIR)/test-sys_types.Po \
+ ./$(DEPDIR)/test-sys_uio.Po ./$(DEPDIR)/test-thread_create.Po \
+ ./$(DEPDIR)/test-thread_self.Po ./$(DEPDIR)/test-time-h.Po \
+ ./$(DEPDIR)/test-time.Po ./$(DEPDIR)/test-uchar.Po \
./$(DEPDIR)/test-unistd.Po ./$(DEPDIR)/test-unsetenv.Po \
./$(DEPDIR)/test-usleep.Po ./$(DEPDIR)/test-verify-try.Po \
./$(DEPDIR)/test-verify.Po ./$(DEPDIR)/test-wchar.Po \
./$(DEPDIR)/test-wcrtomb-w32.Po ./$(DEPDIR)/test-wcrtomb.Po \
./$(DEPDIR)/test-wctype-h.Po ./$(DEPDIR)/test-wcwidth.Po \
- ./$(DEPDIR)/test-xalloc-die.Po ./$(DEPDIR)/unsetenv.Po \
- ./$(DEPDIR)/usleep.Po ./$(DEPDIR)/wcrtomb.Po \
- ./$(DEPDIR)/wctob.Po ./$(DEPDIR)/wctomb.Po \
- ./$(DEPDIR)/windows-thread.Po ./$(DEPDIR)/windows-tls.Po \
- ./$(DEPDIR)/xalloc-die.Po ./$(DEPDIR)/xmalloc.Po \
- glthread/$(DEPDIR)/thread.Po unicase/$(DEPDIR)/test-cased.Po \
+ ./$(DEPDIR)/test-xalloc-die.Po ./$(DEPDIR)/time.Po \
+ ./$(DEPDIR)/unsetenv.Po ./$(DEPDIR)/usleep.Po \
+ ./$(DEPDIR)/wcrtomb.Po ./$(DEPDIR)/wctob.Po \
+ ./$(DEPDIR)/wctomb.Po ./$(DEPDIR)/windows-thread.Po \
+ ./$(DEPDIR)/windows-tls.Po ./$(DEPDIR)/xalloc-die.Po \
+ ./$(DEPDIR)/xmalloc.Po glthread/$(DEPDIR)/thread.Po \
+ unicase/$(DEPDIR)/test-cased.Po \
unicase/$(DEPDIR)/test-ignorable.Po \
unicase/$(DEPDIR)/test-locale-language.Po \
unicase/$(DEPDIR)/test-u16-casecmp.Po \
@@ -3643,6 +3905,9 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unictype/$(DEPDIR)/test-ctype_xdigit.Po \
unictype/$(DEPDIR)/test-decdigit.Po \
unictype/$(DEPDIR)/test-digit.Po \
+ unictype/$(DEPDIR)/test-incb_byname.Po \
+ unictype/$(DEPDIR)/test-incb_name.Po \
+ unictype/$(DEPDIR)/test-incb_of.Po \
unictype/$(DEPDIR)/test-joininggroup_byname.Po \
unictype/$(DEPDIR)/test-joininggroup_name.Po \
unictype/$(DEPDIR)/test-joininggroup_of.Po \
@@ -3700,11 +3965,14 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unictype/$(DEPDIR)/test-pr_grapheme_link.Po \
unictype/$(DEPDIR)/test-pr_hex_digit.Po \
unictype/$(DEPDIR)/test-pr_hyphen.Po \
+ unictype/$(DEPDIR)/test-pr_id_compat_math_continue.Po \
+ unictype/$(DEPDIR)/test-pr_id_compat_math_start.Po \
unictype/$(DEPDIR)/test-pr_id_continue.Po \
unictype/$(DEPDIR)/test-pr_id_start.Po \
unictype/$(DEPDIR)/test-pr_ideographic.Po \
unictype/$(DEPDIR)/test-pr_ids_binary_operator.Po \
unictype/$(DEPDIR)/test-pr_ids_trinary_operator.Po \
+ unictype/$(DEPDIR)/test-pr_ids_unary_operator.Po \
unictype/$(DEPDIR)/test-pr_ignorable_control.Po \
unictype/$(DEPDIR)/test-pr_iso_control.Po \
unictype/$(DEPDIR)/test-pr_join_control.Po \
@@ -3728,6 +3996,7 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unictype/$(DEPDIR)/test-pr_paragraph_separator.Po \
unictype/$(DEPDIR)/test-pr_pattern_syntax.Po \
unictype/$(DEPDIR)/test-pr_pattern_white_space.Po \
+ unictype/$(DEPDIR)/test-pr_prepended_concatenation_mark.Po \
unictype/$(DEPDIR)/test-pr_private_use.Po \
unictype/$(DEPDIR)/test-pr_punctuation.Po \
unictype/$(DEPDIR)/test-pr_quotation_mark.Po \
@@ -3773,6 +4042,7 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unilbrk/$(DEPDIR)/test-u8-width-linebreaks.Po \
unilbrk/$(DEPDIR)/test-ulc-possible-linebreaks.Po \
unilbrk/$(DEPDIR)/test-ulc-width-linebreaks.Po \
+ unimetadata/$(DEPDIR)/test-u-version.Po \
uniname/$(DEPDIR)/test-uninames.Po \
uninorm/$(DEPDIR)/test-canonical-decomposition.Po \
uninorm/$(DEPDIR)/test-compat-decomposition.Po \
@@ -3846,6 +4116,7 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unistr/$(DEPDIR)/test-u16-mbtoucr.Po \
unistr/$(DEPDIR)/test-u16-move.Po \
unistr/$(DEPDIR)/test-u16-next.Po \
+ unistr/$(DEPDIR)/test-u16-pcpy.Po \
unistr/$(DEPDIR)/test-u16-prev.Po \
unistr/$(DEPDIR)/test-u16-set.Po \
unistr/$(DEPDIR)/test-u16-stpcpy.Po \
@@ -3881,6 +4152,7 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unistr/$(DEPDIR)/test-u32-mbtoucr.Po \
unistr/$(DEPDIR)/test-u32-move.Po \
unistr/$(DEPDIR)/test-u32-next.Po \
+ unistr/$(DEPDIR)/test-u32-pcpy.Po \
unistr/$(DEPDIR)/test-u32-prev.Po \
unistr/$(DEPDIR)/test-u32-set.Po \
unistr/$(DEPDIR)/test-u32-stpcpy.Po \
@@ -3916,6 +4188,7 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/alloca.Po \
unistr/$(DEPDIR)/test-u8-mbtoucr.Po \
unistr/$(DEPDIR)/test-u8-move.Po \
unistr/$(DEPDIR)/test-u8-next.Po \
+ unistr/$(DEPDIR)/test-u8-pcpy.Po \
unistr/$(DEPDIR)/test-u8-prev.Po \
unistr/$(DEPDIR)/test-u8-set.Po \
unistr/$(DEPDIR)/test-u8-stpcpy.Po \
@@ -3971,14 +4244,20 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
- $(current_locale_SOURCES) test-accept.c test-alloca-opt.c \
- test-arpa_inet.c test-array-mergesort.c test-assert.c \
- $(test_bidi_byname_SOURCES) $(test_bidi_longname_SOURCES) \
- $(test_bidi_name_SOURCES) $(test_bidi_of_SOURCES) \
- $(test_bidi_test_SOURCES) test-binary-io.c test-bind.c \
- $(test_block_list_SOURCES) $(test_block_of_SOURCES) \
- $(test_block_test_SOURCES) test-btowc.c test-c-ctype.c \
- test-c-strcasecmp.c test-c-strncasecmp.c test-calloc-gnu.c \
+ $(current_locale_SOURCES) test-accept.c test-alignasof.c \
+ test-alloca-opt.c test-arpa_inet.c test-array-mergesort.c \
+ test-assert.c $(test_bidi_byname_SOURCES) \
+ $(test_bidi_longname_SOURCES) $(test_bidi_name_SOURCES) \
+ $(test_bidi_of_SOURCES) $(test_bidi_test_SOURCES) \
+ test-binary-io.c test-bind.c $(test_block_list_SOURCES) \
+ $(test_block_of_SOURCES) $(test_block_test_SOURCES) \
+ test-btoc32.c test-btowc.c test-c-ctype.c test-c-strcasecmp.c \
+ test-c-strncasecmp.c test-c32isalnum.c test-c32isalpha.c \
+ test-c32isblank.c test-c32iscntrl.c test-c32isdigit.c \
+ test-c32isgraph.c test-c32islower.c test-c32isprint.c \
+ test-c32ispunct.c test-c32isspace.c test-c32isupper.c \
+ test-c32isxdigit.c test-c32rtomb.c test-c32rtomb-w32.c \
+ test-c32tolower.c test-c32width.c test-calloc-gnu.c \
$(test_canonical_decomposition_SOURCES) $(test_cased_SOURCES) \
$(test_categ_C_SOURCES) $(test_categ_Cc_SOURCES) \
$(test_categ_Cf_SOURCES) $(test_categ_Cn_SOURCES) \
@@ -4018,28 +4297,32 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_ctype_upper_SOURCES) $(test_ctype_xdigit_SOURCES) \
$(test_decdigit_SOURCES) $(test_decomposing_form_SOURCES) \
$(test_decomposition_SOURCES) $(test_digit_SOURCES) \
- test-dup2.c test-environ.c test-errno.c test-fcntl.c \
- test-fcntl-h.c test-fdopen.c test-fgetc.c test-float.c \
- test-fputc.c test-fread.c test-free.c \
+ test-dup2.c test-environ.c test-errno.c test-error.c \
+ test-fcntl.c test-fcntl-h.c test-fdopen.c test-fgetc.c \
+ test-float.c test-fputc.c test-fread.c test-free.c \
$(test_frexp_nolibm_SOURCES) $(test_frexpl_nolibm_SOURCES) \
test-fseterr.c test-fstat.c test-ftruncate.c test-fwrite.c \
test-getcwd-lgpl.c test-getdtablesize.c test-getprogname.c \
test-gettimeofday.c test-hard-locale.c test-iconv.c \
test-iconv-h.c $(test_ignorable_SOURCES) test-ignore-value.c \
- test-inet_pton.c test-intprops.c test-inttypes.c test-ioctl.c \
- test-isblank.c test-isnand-nolibm.c test-isnanf-nolibm.c \
- test-isnanl-nolibm.c test-iswblank.c test-iswdigit.c \
+ $(test_incb_byname_SOURCES) $(test_incb_name_SOURCES) \
+ $(test_incb_of_SOURCES) test-inet_pton.c test-intprops.c \
+ test-inttypes.c test-ioctl.c test-isblank.c \
+ test-isnand-nolibm.c test-isnanf-nolibm.c test-isnanl-nolibm.c \
+ test-iswblank.c test-iswdigit.c test-iswpunct.c \
test-iswxdigit.c $(test_joininggroup_byname_SOURCES) \
$(test_joininggroup_name_SOURCES) \
$(test_joininggroup_of_SOURCES) \
$(test_joiningtype_byname_SOURCES) \
$(test_joiningtype_longname_SOURCES) \
$(test_joiningtype_name_SOURCES) \
- $(test_joiningtype_of_SOURCES) test-langinfo.c test-limits-h.c \
- test-listen.c test-localcharset.c test-locale.c \
+ $(test_joiningtype_of_SOURCES) test-langinfo.c \
+ test-largefile.c test-limits-h.c test-listen.c \
+ test-localcharset.c test-locale.c \
$(test_locale_language_SOURCES) test-localename.c test-lock.c \
test-lstat.c test-malloc-gnu.c test-malloca.c test-math.c \
- test-mbrtowc.c test-mbrtowc-w32.c test-mbsinit.c test-memchr.c \
+ test-mbrtoc32.c test-mbrtoc32-w32.c test-mbrtowc.c \
+ test-mbrtowc-w32.c test-mbsinit.c test-memchr.c \
$(test_mirror_SOURCES) test-nanosleep.c test-netinet_in.c \
$(test_nfc_SOURCES) $(test_nfd_SOURCES) $(test_nfkc_SOURCES) \
$(test_nfkd_SOURCES) $(test_numeric_SOURCES) \
@@ -4084,10 +4367,14 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_pr_grapheme_base_SOURCES) \
$(test_pr_grapheme_extend_SOURCES) \
$(test_pr_grapheme_link_SOURCES) $(test_pr_hex_digit_SOURCES) \
- $(test_pr_hyphen_SOURCES) $(test_pr_id_continue_SOURCES) \
- $(test_pr_id_start_SOURCES) $(test_pr_ideographic_SOURCES) \
+ $(test_pr_hyphen_SOURCES) \
+ $(test_pr_id_compat_math_continue_SOURCES) \
+ $(test_pr_id_compat_math_start_SOURCES) \
+ $(test_pr_id_continue_SOURCES) $(test_pr_id_start_SOURCES) \
+ $(test_pr_ideographic_SOURCES) \
$(test_pr_ids_binary_operator_SOURCES) \
$(test_pr_ids_trinary_operator_SOURCES) \
+ $(test_pr_ids_unary_operator_SOURCES) \
$(test_pr_ignorable_control_SOURCES) \
$(test_pr_iso_control_SOURCES) $(test_pr_join_control_SOURCES) \
$(test_pr_left_of_pair_SOURCES) \
@@ -4108,6 +4395,7 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_pr_paragraph_separator_SOURCES) \
$(test_pr_pattern_syntax_SOURCES) \
$(test_pr_pattern_white_space_SOURCES) \
+ $(test_pr_prepended_concatenation_mark_SOURCES) \
$(test_pr_private_use_SOURCES) $(test_pr_punctuation_SOURCES) \
$(test_pr_quotation_mark_SOURCES) $(test_pr_radical_SOURCES) \
$(test_pr_regional_indicator_SOURCES) \
@@ -4123,15 +4411,16 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_pr_xid_start_SOURCES) $(test_pr_zero_width_SOURCES) \
test-printf-frexp.c test-printf-frexpl.c test-pselect.c \
test-pthread.c test-pthread-thread.c test-pthread_sigmask1.c \
- test-pthread_sigmask2.c test-raise.c test-realloc-gnu.c \
+ test-pthread_sigmask2.c test-raise.c test-random.c \
+ test-random-mt.c test-random_r.c test-realloc-gnu.c \
test-reallocarray.c test-rwlock1.c test-sched.c \
$(test_scripts_SOURCES) test-select.c test-select-fd.c \
test-select-stdin.c test-setenv.c test-setlocale1.c \
test-setlocale2.c test-setlocale_null.c \
test-setlocale_null-mt-all.c test-setlocale_null-mt-one.c \
- test-setsockopt.c test-signal-h.c test-signbit.c \
- test-sigprocmask.c test-sleep.c test-sockets.c test-stat.c \
- test-stat-time.c test-stdalign.c test-stdbool.c \
+ test-setlocale_null-unlocked.c test-setsockopt.c \
+ test-signal-h.c test-signbit.c test-sigprocmask.c test-sleep.c \
+ test-sockets.c test-stat.c test-stat-time.c test-stdbool.c \
test-stdckdint.c test-stddef.c test-stdint.c test-stdio.c \
test-stdlib.c test-strerror.c test-strerror_r.c \
test-striconveh.c $(test_striconveha_SOURCES) test-string.c \
@@ -4141,11 +4430,12 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
test-sys_ioctl.c test-sys_select.c test-sys_socket.c \
test-sys_stat.c test-sys_time.c test-sys_types.c \
test-sys_uio.c test-thread_create.c test-thread_self.c \
- test-time.c $(test_u16_asnprintf1_SOURCES) \
- $(test_u16_casecmp_SOURCES) $(test_u16_casecoll_SOURCES) \
- $(test_u16_casefold_SOURCES) $(test_u16_check_SOURCES) \
- $(test_u16_chr_SOURCES) $(test_u16_cmp_SOURCES) \
- $(test_u16_cmp2_SOURCES) $(test_u16_conv_from_enc_SOURCES) \
+ test-time.c test-time-h.c $(test_u_version_SOURCES) \
+ $(test_u16_asnprintf1_SOURCES) $(test_u16_casecmp_SOURCES) \
+ $(test_u16_casecoll_SOURCES) $(test_u16_casefold_SOURCES) \
+ $(test_u16_check_SOURCES) $(test_u16_chr_SOURCES) \
+ $(test_u16_cmp_SOURCES) $(test_u16_cmp2_SOURCES) \
+ $(test_u16_conv_from_enc_SOURCES) \
$(test_u16_conv_to_enc_SOURCES) $(test_u16_cpy_SOURCES) \
$(test_u16_cpy_alloc_SOURCES) \
$(test_u16_grapheme_breaks_SOURCES) \
@@ -4159,6 +4449,7 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_u16_mbtouc_unsafe_SOURCES) $(test_u16_mbtoucr_SOURCES) \
$(test_u16_move_SOURCES) $(test_u16_next_SOURCES) \
$(test_u16_normcmp_SOURCES) $(test_u16_normcoll_SOURCES) \
+ $(test_u16_pcpy_SOURCES) \
$(test_u16_possible_linebreaks_SOURCES) \
$(test_u16_prev_SOURCES) $(test_u16_set_SOURCES) \
$(test_u16_stpcpy_SOURCES) $(test_u16_stpncpy_SOURCES) \
@@ -4199,6 +4490,7 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_u32_nfc_big_SOURCES) $(test_u32_nfd_big_SOURCES) \
$(test_u32_nfkc_big_SOURCES) $(test_u32_nfkd_big_SOURCES) \
$(test_u32_normcmp_SOURCES) $(test_u32_normcoll_SOURCES) \
+ $(test_u32_pcpy_SOURCES) \
$(test_u32_possible_linebreaks_SOURCES) \
$(test_u32_prev_SOURCES) $(test_u32_set_SOURCES) \
$(test_u32_stpcpy_SOURCES) $(test_u32_stpncpy_SOURCES) \
@@ -4237,11 +4529,12 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_u8_mbtouc_unsafe_SOURCES) $(test_u8_mbtoucr_SOURCES) \
$(test_u8_move_SOURCES) $(test_u8_next_SOURCES) \
$(test_u8_normcmp_SOURCES) $(test_u8_normcoll_SOURCES) \
- $(test_u8_possible_linebreaks_SOURCES) $(test_u8_prev_SOURCES) \
- $(test_u8_set_SOURCES) $(test_u8_stpcpy_SOURCES) \
- $(test_u8_stpncpy_SOURCES) $(test_u8_strcat_SOURCES) \
- $(test_u8_strchr_SOURCES) $(test_u8_strcmp_SOURCES) \
- $(test_u8_strcoll_SOURCES) $(test_u8_strconv_from_enc_SOURCES) \
+ $(test_u8_pcpy_SOURCES) $(test_u8_possible_linebreaks_SOURCES) \
+ $(test_u8_prev_SOURCES) $(test_u8_set_SOURCES) \
+ $(test_u8_stpcpy_SOURCES) $(test_u8_stpncpy_SOURCES) \
+ $(test_u8_strcat_SOURCES) $(test_u8_strchr_SOURCES) \
+ $(test_u8_strcmp_SOURCES) $(test_u8_strcoll_SOURCES) \
+ $(test_u8_strconv_from_enc_SOURCES) \
$(test_u8_strconv_to_enc_SOURCES) $(test_u8_strcpy_SOURCES) \
$(test_u8_strdup_SOURCES) $(test_u8_strlen_SOURCES) \
$(test_u8_strmblen_SOURCES) $(test_u8_strmbtouc_SOURCES) \
@@ -4262,8 +4555,8 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_uc_wordbreaks_SOURCES) $(test_uc_tolower_SOURCES) \
$(test_uc_totitle_SOURCES) $(test_uc_toupper_SOURCES) \
$(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \
- $(test_ulc_asnprintf1_SOURCES) $(test_ulc_casecmp_SOURCES) \
- $(test_ulc_casecoll_SOURCES) \
+ test-uchar.c $(test_ulc_asnprintf1_SOURCES) \
+ $(test_ulc_casecmp_SOURCES) $(test_ulc_casecoll_SOURCES) \
$(test_ulc_grapheme_breaks_SOURCES) \
$(test_ulc_possible_linebreaks_SOURCES) \
$(test_ulc_vasnprintf1_SOURCES) \
@@ -4278,14 +4571,20 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
test-wcwidth.c test-xalloc-die.c
DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(EXTRA_libtests_a_SOURCES) $(current_locale_SOURCES) \
- test-accept.c test-alloca-opt.c test-arpa_inet.c \
- test-array-mergesort.c test-assert.c \
+ test-accept.c test-alignasof.c test-alloca-opt.c \
+ test-arpa_inet.c test-array-mergesort.c test-assert.c \
$(test_bidi_byname_SOURCES) $(test_bidi_longname_SOURCES) \
$(test_bidi_name_SOURCES) $(test_bidi_of_SOURCES) \
$(test_bidi_test_SOURCES) test-binary-io.c test-bind.c \
$(test_block_list_SOURCES) $(test_block_of_SOURCES) \
- $(test_block_test_SOURCES) test-btowc.c test-c-ctype.c \
- test-c-strcasecmp.c test-c-strncasecmp.c test-calloc-gnu.c \
+ $(test_block_test_SOURCES) test-btoc32.c test-btowc.c \
+ test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \
+ test-c32isalnum.c test-c32isalpha.c test-c32isblank.c \
+ test-c32iscntrl.c test-c32isdigit.c test-c32isgraph.c \
+ test-c32islower.c test-c32isprint.c test-c32ispunct.c \
+ test-c32isspace.c test-c32isupper.c test-c32isxdigit.c \
+ test-c32rtomb.c test-c32rtomb-w32.c test-c32tolower.c \
+ test-c32width.c test-calloc-gnu.c \
$(test_canonical_decomposition_SOURCES) $(test_cased_SOURCES) \
$(test_categ_C_SOURCES) $(test_categ_Cc_SOURCES) \
$(test_categ_Cf_SOURCES) $(test_categ_Cn_SOURCES) \
@@ -4325,28 +4624,32 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_ctype_upper_SOURCES) $(test_ctype_xdigit_SOURCES) \
$(test_decdigit_SOURCES) $(test_decomposing_form_SOURCES) \
$(test_decomposition_SOURCES) $(test_digit_SOURCES) \
- test-dup2.c test-environ.c test-errno.c test-fcntl.c \
- test-fcntl-h.c test-fdopen.c test-fgetc.c test-float.c \
- test-fputc.c test-fread.c test-free.c \
+ test-dup2.c test-environ.c test-errno.c test-error.c \
+ test-fcntl.c test-fcntl-h.c test-fdopen.c test-fgetc.c \
+ test-float.c test-fputc.c test-fread.c test-free.c \
$(test_frexp_nolibm_SOURCES) $(test_frexpl_nolibm_SOURCES) \
test-fseterr.c test-fstat.c test-ftruncate.c test-fwrite.c \
test-getcwd-lgpl.c test-getdtablesize.c test-getprogname.c \
test-gettimeofday.c test-hard-locale.c test-iconv.c \
test-iconv-h.c $(test_ignorable_SOURCES) test-ignore-value.c \
- test-inet_pton.c test-intprops.c test-inttypes.c test-ioctl.c \
- test-isblank.c test-isnand-nolibm.c test-isnanf-nolibm.c \
- test-isnanl-nolibm.c test-iswblank.c test-iswdigit.c \
+ $(test_incb_byname_SOURCES) $(test_incb_name_SOURCES) \
+ $(test_incb_of_SOURCES) test-inet_pton.c test-intprops.c \
+ test-inttypes.c test-ioctl.c test-isblank.c \
+ test-isnand-nolibm.c test-isnanf-nolibm.c test-isnanl-nolibm.c \
+ test-iswblank.c test-iswdigit.c test-iswpunct.c \
test-iswxdigit.c $(test_joininggroup_byname_SOURCES) \
$(test_joininggroup_name_SOURCES) \
$(test_joininggroup_of_SOURCES) \
$(test_joiningtype_byname_SOURCES) \
$(test_joiningtype_longname_SOURCES) \
$(test_joiningtype_name_SOURCES) \
- $(test_joiningtype_of_SOURCES) test-langinfo.c test-limits-h.c \
- test-listen.c test-localcharset.c test-locale.c \
+ $(test_joiningtype_of_SOURCES) test-langinfo.c \
+ test-largefile.c test-limits-h.c test-listen.c \
+ test-localcharset.c test-locale.c \
$(test_locale_language_SOURCES) test-localename.c test-lock.c \
test-lstat.c test-malloc-gnu.c test-malloca.c test-math.c \
- test-mbrtowc.c test-mbrtowc-w32.c test-mbsinit.c test-memchr.c \
+ test-mbrtoc32.c test-mbrtoc32-w32.c test-mbrtowc.c \
+ test-mbrtowc-w32.c test-mbsinit.c test-memchr.c \
$(test_mirror_SOURCES) test-nanosleep.c test-netinet_in.c \
$(test_nfc_SOURCES) $(test_nfd_SOURCES) $(test_nfkc_SOURCES) \
$(test_nfkd_SOURCES) $(test_numeric_SOURCES) \
@@ -4391,10 +4694,14 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_pr_grapheme_base_SOURCES) \
$(test_pr_grapheme_extend_SOURCES) \
$(test_pr_grapheme_link_SOURCES) $(test_pr_hex_digit_SOURCES) \
- $(test_pr_hyphen_SOURCES) $(test_pr_id_continue_SOURCES) \
- $(test_pr_id_start_SOURCES) $(test_pr_ideographic_SOURCES) \
+ $(test_pr_hyphen_SOURCES) \
+ $(test_pr_id_compat_math_continue_SOURCES) \
+ $(test_pr_id_compat_math_start_SOURCES) \
+ $(test_pr_id_continue_SOURCES) $(test_pr_id_start_SOURCES) \
+ $(test_pr_ideographic_SOURCES) \
$(test_pr_ids_binary_operator_SOURCES) \
$(test_pr_ids_trinary_operator_SOURCES) \
+ $(test_pr_ids_unary_operator_SOURCES) \
$(test_pr_ignorable_control_SOURCES) \
$(test_pr_iso_control_SOURCES) $(test_pr_join_control_SOURCES) \
$(test_pr_left_of_pair_SOURCES) \
@@ -4415,6 +4722,7 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_pr_paragraph_separator_SOURCES) \
$(test_pr_pattern_syntax_SOURCES) \
$(test_pr_pattern_white_space_SOURCES) \
+ $(test_pr_prepended_concatenation_mark_SOURCES) \
$(test_pr_private_use_SOURCES) $(test_pr_punctuation_SOURCES) \
$(test_pr_quotation_mark_SOURCES) $(test_pr_radical_SOURCES) \
$(test_pr_regional_indicator_SOURCES) \
@@ -4430,15 +4738,16 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_pr_xid_start_SOURCES) $(test_pr_zero_width_SOURCES) \
test-printf-frexp.c test-printf-frexpl.c test-pselect.c \
test-pthread.c test-pthread-thread.c test-pthread_sigmask1.c \
- test-pthread_sigmask2.c test-raise.c test-realloc-gnu.c \
+ test-pthread_sigmask2.c test-raise.c test-random.c \
+ test-random-mt.c test-random_r.c test-realloc-gnu.c \
test-reallocarray.c test-rwlock1.c test-sched.c \
$(test_scripts_SOURCES) test-select.c test-select-fd.c \
test-select-stdin.c test-setenv.c test-setlocale1.c \
test-setlocale2.c test-setlocale_null.c \
test-setlocale_null-mt-all.c test-setlocale_null-mt-one.c \
- test-setsockopt.c test-signal-h.c test-signbit.c \
- test-sigprocmask.c test-sleep.c test-sockets.c test-stat.c \
- test-stat-time.c test-stdalign.c test-stdbool.c \
+ test-setlocale_null-unlocked.c test-setsockopt.c \
+ test-signal-h.c test-signbit.c test-sigprocmask.c test-sleep.c \
+ test-sockets.c test-stat.c test-stat-time.c test-stdbool.c \
test-stdckdint.c test-stddef.c test-stdint.c test-stdio.c \
test-stdlib.c test-strerror.c test-strerror_r.c \
test-striconveh.c $(test_striconveha_SOURCES) test-string.c \
@@ -4448,11 +4757,12 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
test-sys_ioctl.c test-sys_select.c test-sys_socket.c \
test-sys_stat.c test-sys_time.c test-sys_types.c \
test-sys_uio.c test-thread_create.c test-thread_self.c \
- test-time.c $(test_u16_asnprintf1_SOURCES) \
- $(test_u16_casecmp_SOURCES) $(test_u16_casecoll_SOURCES) \
- $(test_u16_casefold_SOURCES) $(test_u16_check_SOURCES) \
- $(test_u16_chr_SOURCES) $(test_u16_cmp_SOURCES) \
- $(test_u16_cmp2_SOURCES) $(test_u16_conv_from_enc_SOURCES) \
+ test-time.c test-time-h.c $(test_u_version_SOURCES) \
+ $(test_u16_asnprintf1_SOURCES) $(test_u16_casecmp_SOURCES) \
+ $(test_u16_casecoll_SOURCES) $(test_u16_casefold_SOURCES) \
+ $(test_u16_check_SOURCES) $(test_u16_chr_SOURCES) \
+ $(test_u16_cmp_SOURCES) $(test_u16_cmp2_SOURCES) \
+ $(test_u16_conv_from_enc_SOURCES) \
$(test_u16_conv_to_enc_SOURCES) $(test_u16_cpy_SOURCES) \
$(test_u16_cpy_alloc_SOURCES) \
$(test_u16_grapheme_breaks_SOURCES) \
@@ -4466,6 +4776,7 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_u16_mbtouc_unsafe_SOURCES) $(test_u16_mbtoucr_SOURCES) \
$(test_u16_move_SOURCES) $(test_u16_next_SOURCES) \
$(test_u16_normcmp_SOURCES) $(test_u16_normcoll_SOURCES) \
+ $(test_u16_pcpy_SOURCES) \
$(test_u16_possible_linebreaks_SOURCES) \
$(test_u16_prev_SOURCES) $(test_u16_set_SOURCES) \
$(test_u16_stpcpy_SOURCES) $(test_u16_stpncpy_SOURCES) \
@@ -4506,6 +4817,7 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_u32_nfc_big_SOURCES) $(test_u32_nfd_big_SOURCES) \
$(test_u32_nfkc_big_SOURCES) $(test_u32_nfkd_big_SOURCES) \
$(test_u32_normcmp_SOURCES) $(test_u32_normcoll_SOURCES) \
+ $(test_u32_pcpy_SOURCES) \
$(test_u32_possible_linebreaks_SOURCES) \
$(test_u32_prev_SOURCES) $(test_u32_set_SOURCES) \
$(test_u32_stpcpy_SOURCES) $(test_u32_stpncpy_SOURCES) \
@@ -4544,11 +4856,12 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_u8_mbtouc_unsafe_SOURCES) $(test_u8_mbtoucr_SOURCES) \
$(test_u8_move_SOURCES) $(test_u8_next_SOURCES) \
$(test_u8_normcmp_SOURCES) $(test_u8_normcoll_SOURCES) \
- $(test_u8_possible_linebreaks_SOURCES) $(test_u8_prev_SOURCES) \
- $(test_u8_set_SOURCES) $(test_u8_stpcpy_SOURCES) \
- $(test_u8_stpncpy_SOURCES) $(test_u8_strcat_SOURCES) \
- $(test_u8_strchr_SOURCES) $(test_u8_strcmp_SOURCES) \
- $(test_u8_strcoll_SOURCES) $(test_u8_strconv_from_enc_SOURCES) \
+ $(test_u8_pcpy_SOURCES) $(test_u8_possible_linebreaks_SOURCES) \
+ $(test_u8_prev_SOURCES) $(test_u8_set_SOURCES) \
+ $(test_u8_stpcpy_SOURCES) $(test_u8_stpncpy_SOURCES) \
+ $(test_u8_strcat_SOURCES) $(test_u8_strchr_SOURCES) \
+ $(test_u8_strcmp_SOURCES) $(test_u8_strcoll_SOURCES) \
+ $(test_u8_strconv_from_enc_SOURCES) \
$(test_u8_strconv_to_enc_SOURCES) $(test_u8_strcpy_SOURCES) \
$(test_u8_strdup_SOURCES) $(test_u8_strlen_SOURCES) \
$(test_u8_strmblen_SOURCES) $(test_u8_strmbtouc_SOURCES) \
@@ -4569,8 +4882,8 @@ DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \
$(test_uc_wordbreaks_SOURCES) $(test_uc_tolower_SOURCES) \
$(test_uc_totitle_SOURCES) $(test_uc_toupper_SOURCES) \
$(test_uc_width_SOURCES) $(test_uc_width2_SOURCES) \
- $(test_ulc_asnprintf1_SOURCES) $(test_ulc_casecmp_SOURCES) \
- $(test_ulc_casecoll_SOURCES) \
+ test-uchar.c $(test_ulc_asnprintf1_SOURCES) \
+ $(test_ulc_casecmp_SOURCES) $(test_ulc_casecoll_SOURCES) \
$(test_ulc_grapheme_breaks_SOURCES) \
$(test_ulc_possible_linebreaks_SOURCES) \
$(test_ulc_vasnprintf1_SOURCES) \
@@ -4884,6 +5197,8 @@ CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
+CXX_HAS_CHAR8_TYPE = @CXX_HAS_CHAR8_TYPE@
+CXX_HAS_UCHAR_TYPES = @CXX_HAS_UCHAR_TYPES@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@ -DEXEEXT=\"@EXEEXT@\"
DEPDIR = @DEPDIR@
@@ -4925,7 +5240,33 @@ GL_GNULIB_ATANF = @GL_GNULIB_ATANF@
GL_GNULIB_ATANL = @GL_GNULIB_ATANL@
GL_GNULIB_ATOLL = @GL_GNULIB_ATOLL@
GL_GNULIB_BIND = @GL_GNULIB_BIND@
+GL_GNULIB_BTOC32 = @GL_GNULIB_BTOC32@
GL_GNULIB_BTOWC = @GL_GNULIB_BTOWC@
+GL_GNULIB_C32ISALNUM = @GL_GNULIB_C32ISALNUM@
+GL_GNULIB_C32ISALPHA = @GL_GNULIB_C32ISALPHA@
+GL_GNULIB_C32ISBLANK = @GL_GNULIB_C32ISBLANK@
+GL_GNULIB_C32ISCNTRL = @GL_GNULIB_C32ISCNTRL@
+GL_GNULIB_C32ISDIGIT = @GL_GNULIB_C32ISDIGIT@
+GL_GNULIB_C32ISGRAPH = @GL_GNULIB_C32ISGRAPH@
+GL_GNULIB_C32ISLOWER = @GL_GNULIB_C32ISLOWER@
+GL_GNULIB_C32ISPRINT = @GL_GNULIB_C32ISPRINT@
+GL_GNULIB_C32ISPUNCT = @GL_GNULIB_C32ISPUNCT@
+GL_GNULIB_C32ISSPACE = @GL_GNULIB_C32ISSPACE@
+GL_GNULIB_C32ISUPPER = @GL_GNULIB_C32ISUPPER@
+GL_GNULIB_C32ISXDIGIT = @GL_GNULIB_C32ISXDIGIT@
+GL_GNULIB_C32RTOMB = @GL_GNULIB_C32RTOMB@
+GL_GNULIB_C32SNRTOMBS = @GL_GNULIB_C32SNRTOMBS@
+GL_GNULIB_C32SRTOMBS = @GL_GNULIB_C32SRTOMBS@
+GL_GNULIB_C32STOMBS = @GL_GNULIB_C32STOMBS@
+GL_GNULIB_C32SWIDTH = @GL_GNULIB_C32SWIDTH@
+GL_GNULIB_C32TOB = @GL_GNULIB_C32TOB@
+GL_GNULIB_C32TOLOWER = @GL_GNULIB_C32TOLOWER@
+GL_GNULIB_C32TOUPPER = @GL_GNULIB_C32TOUPPER@
+GL_GNULIB_C32WIDTH = @GL_GNULIB_C32WIDTH@
+GL_GNULIB_C32_APPLY_MAPPING = @GL_GNULIB_C32_APPLY_MAPPING@
+GL_GNULIB_C32_APPLY_TYPE_TEST = @GL_GNULIB_C32_APPLY_TYPE_TEST@
+GL_GNULIB_C32_GET_MAPPING = @GL_GNULIB_C32_GET_MAPPING@
+GL_GNULIB_C32_GET_TYPE_TEST = @GL_GNULIB_C32_GET_TYPE_TEST@
GL_GNULIB_CALLOC_GNU = @GL_GNULIB_CALLOC_GNU@
GL_GNULIB_CALLOC_POSIX = @GL_GNULIB_CALLOC_POSIX@
GL_GNULIB_CANONICALIZE_FILE_NAME = @GL_GNULIB_CANONICALIZE_FILE_NAME@
@@ -5038,6 +5379,7 @@ GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@
GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@
GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@
GL_GNULIB_GETPEERNAME = @GL_GNULIB_GETPEERNAME@
+GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@
GL_GNULIB_GETSOCKNAME = @GL_GNULIB_GETSOCKNAME@
GL_GNULIB_GETSOCKOPT = @GL_GNULIB_GETSOCKOPT@
GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@
@@ -5069,16 +5411,18 @@ GL_GNULIB_ISNANL = @GL_GNULIB_ISNANL@
GL_GNULIB_ISWBLANK = @GL_GNULIB_ISWBLANK@
GL_GNULIB_ISWCTYPE = @GL_GNULIB_ISWCTYPE@
GL_GNULIB_ISWDIGIT = @GL_GNULIB_ISWDIGIT@
+GL_GNULIB_ISWPUNCT = @GL_GNULIB_ISWPUNCT@
GL_GNULIB_ISWXDIGIT = @GL_GNULIB_ISWXDIGIT@
GL_GNULIB_LCHMOD = @GL_GNULIB_LCHMOD@
GL_GNULIB_LCHOWN = @GL_GNULIB_LCHOWN@
+GL_GNULIB_LDEXP = @GL_GNULIB_LDEXP@
GL_GNULIB_LDEXPF = @GL_GNULIB_LDEXPF@
GL_GNULIB_LDEXPL = @GL_GNULIB_LDEXPL@
GL_GNULIB_LINK = @GL_GNULIB_LINK@
GL_GNULIB_LINKAT = @GL_GNULIB_LINKAT@
GL_GNULIB_LISTEN = @GL_GNULIB_LISTEN@
GL_GNULIB_LOCALECONV = @GL_GNULIB_LOCALECONV@
-GL_GNULIB_LOCALENAME = @GL_GNULIB_LOCALENAME@
+GL_GNULIB_LOCALENAME_UNSAFE = @GL_GNULIB_LOCALENAME_UNSAFE@
GL_GNULIB_LOCALTIME = @GL_GNULIB_LOCALTIME@
GL_GNULIB_LOG = @GL_GNULIB_LOG@
GL_GNULIB_LOG10 = @GL_GNULIB_LOG10@
@@ -5100,6 +5444,8 @@ GL_GNULIB_LSTAT = @GL_GNULIB_LSTAT@
GL_GNULIB_MALLOC_GNU = @GL_GNULIB_MALLOC_GNU@
GL_GNULIB_MALLOC_POSIX = @GL_GNULIB_MALLOC_POSIX@
GL_GNULIB_MBRLEN = @GL_GNULIB_MBRLEN@
+GL_GNULIB_MBRTOC16 = @GL_GNULIB_MBRTOC16@
+GL_GNULIB_MBRTOC32 = @GL_GNULIB_MBRTOC32@
GL_GNULIB_MBRTOWC = @GL_GNULIB_MBRTOWC@
GL_GNULIB_MBSCASECMP = @GL_GNULIB_MBSCASECMP@
GL_GNULIB_MBSCASESTR = @GL_GNULIB_MBSCASESTR@
@@ -5109,15 +5455,20 @@ GL_GNULIB_MBSINIT = @GL_GNULIB_MBSINIT@
GL_GNULIB_MBSLEN = @GL_GNULIB_MBSLEN@
GL_GNULIB_MBSNCASECMP = @GL_GNULIB_MBSNCASECMP@
GL_GNULIB_MBSNLEN = @GL_GNULIB_MBSNLEN@
+GL_GNULIB_MBSNRTOC32S = @GL_GNULIB_MBSNRTOC32S@
GL_GNULIB_MBSNRTOWCS = @GL_GNULIB_MBSNRTOWCS@
GL_GNULIB_MBSPBRK = @GL_GNULIB_MBSPBRK@
GL_GNULIB_MBSPCASECMP = @GL_GNULIB_MBSPCASECMP@
GL_GNULIB_MBSRCHR = @GL_GNULIB_MBSRCHR@
+GL_GNULIB_MBSRTOC32S = @GL_GNULIB_MBSRTOC32S@
GL_GNULIB_MBSRTOWCS = @GL_GNULIB_MBSRTOWCS@
GL_GNULIB_MBSSEP = @GL_GNULIB_MBSSEP@
GL_GNULIB_MBSSPN = @GL_GNULIB_MBSSPN@
GL_GNULIB_MBSSTR = @GL_GNULIB_MBSSTR@
+GL_GNULIB_MBSTOC32S = @GL_GNULIB_MBSTOC32S@
GL_GNULIB_MBSTOK_R = @GL_GNULIB_MBSTOK_R@
+GL_GNULIB_MBSTOWCS = @GL_GNULIB_MBSTOWCS@
+GL_GNULIB_MBSZERO = @GL_GNULIB_MBSZERO@
GL_GNULIB_MBTOWC = @GL_GNULIB_MBTOWC@
GL_GNULIB_MDA_ACCESS = @GL_GNULIB_MDA_ACCESS@
GL_GNULIB_MDA_CHDIR = @GL_GNULIB_MDA_CHDIR@
@@ -5170,6 +5521,7 @@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@
GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@
GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@
GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@
+GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@
GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@
GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@
GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@
@@ -5223,6 +5575,7 @@ GL_GNULIB_PUTS = @GL_GNULIB_PUTS@
GL_GNULIB_PWRITE = @GL_GNULIB_PWRITE@
GL_GNULIB_QSORT_R = @GL_GNULIB_QSORT_R@
GL_GNULIB_RAISE = @GL_GNULIB_RAISE@
+GL_GNULIB_RAND = @GL_GNULIB_RAND@
GL_GNULIB_RANDOM = @GL_GNULIB_RANDOM@
GL_GNULIB_RANDOM_R = @GL_GNULIB_RANDOM_R@
GL_GNULIB_RAWMEMCHR = @GL_GNULIB_RAWMEMCHR@
@@ -5297,6 +5650,7 @@ GL_GNULIB_STRSEP = @GL_GNULIB_STRSEP@
GL_GNULIB_STRSIGNAL = @GL_GNULIB_STRSIGNAL@
GL_GNULIB_STRSTR = @GL_GNULIB_STRSTR@
GL_GNULIB_STRTOD = @GL_GNULIB_STRTOD@
+GL_GNULIB_STRTOF = @GL_GNULIB_STRTOF@
GL_GNULIB_STRTOIMAX = @GL_GNULIB_STRTOIMAX@
GL_GNULIB_STRTOK_R = @GL_GNULIB_STRTOK_R@
GL_GNULIB_STRTOL = @GL_GNULIB_STRTOL@
@@ -5312,12 +5666,16 @@ GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@
GL_GNULIB_TANF = @GL_GNULIB_TANF@
GL_GNULIB_TANHF = @GL_GNULIB_TANHF@
GL_GNULIB_TANL = @GL_GNULIB_TANL@
+GL_GNULIB_TIME = @GL_GNULIB_TIME@
GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@
GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@
GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@
GL_GNULIB_TIME_R = @GL_GNULIB_TIME_R@
GL_GNULIB_TIME_RZ = @GL_GNULIB_TIME_RZ@
GL_GNULIB_TMPFILE = @GL_GNULIB_TMPFILE@
+GL_GNULIB_TOTALORDER = @GL_GNULIB_TOTALORDER@
+GL_GNULIB_TOTALORDERF = @GL_GNULIB_TOTALORDERF@
+GL_GNULIB_TOTALORDERL = @GL_GNULIB_TOTALORDERL@
GL_GNULIB_TOWCTRANS = @GL_GNULIB_TOWCTRANS@
GL_GNULIB_TRUNC = @GL_GNULIB_TRUNC@
GL_GNULIB_TRUNCATE = @GL_GNULIB_TRUNCATE@
@@ -5325,6 +5683,148 @@ GL_GNULIB_TRUNCF = @GL_GNULIB_TRUNCF@
GL_GNULIB_TRUNCL = @GL_GNULIB_TRUNCL@
GL_GNULIB_TTYNAME_R = @GL_GNULIB_TTYNAME_R@
GL_GNULIB_TZSET = @GL_GNULIB_TZSET@
+GL_GNULIB_UNICASE_EMPTY_PREFIX_CONTEXT_DLL_VARIABLE = @GL_GNULIB_UNICASE_EMPTY_PREFIX_CONTEXT_DLL_VARIABLE@
+GL_GNULIB_UNICASE_EMPTY_SUFFIX_CONTEXT_DLL_VARIABLE = @GL_GNULIB_UNICASE_EMPTY_SUFFIX_CONTEXT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_CC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_CF_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CF_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_CN_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CN_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_CO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CO_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_CS_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_CS_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_C_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_C_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_LC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_LL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_LM_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LM_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_LO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LO_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_LT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_LU_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_LU_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_L_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_L_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_MC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_MC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_ME_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ME_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_MN_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_MN_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_M_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_M_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_ND_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ND_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_NL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_NL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_NO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_NO_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_N_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_N_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PD_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PD_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PF_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PF_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PI_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PI_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PO_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_PS_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_PS_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_P_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_P_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_SC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_SK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SK_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_SM_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SM_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_SO_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_SO_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_S_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_S_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_ZL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ZL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_ZP_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ZP_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_ZS_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_ZS_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_CATEGORY_Z_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_CATEGORY_Z_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ALPHABETIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ALPHABETIC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_DIGIT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BLOCK_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BLOCK_SEPARATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BOUNDARY_NEUTRAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_BOUNDARY_NEUTRAL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_COMMON_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_COMMON_SEPARATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUROPEAN_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUROPEAN_DIGIT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_SEPARATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_TERMINATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_TERMINATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_NON_SPACING_MARK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_NON_SPACING_MARK_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_OTHER_NEUTRAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_OTHER_NEUTRAL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_PDF_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_PDF_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_SEGMENT_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_SEGMENT_SEPARATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_BIDI_WHITESPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_BIDI_WHITESPACE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CASED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CASE_IGNORABLE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CASE_IGNORABLE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEFOLDED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEFOLDED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEMAPPED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEMAPPED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_LOWERCASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_LOWERCASED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_TITLECASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_TITLECASED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_UPPERCASED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_UPPERCASED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_COMBINING_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_COMBINING_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_COMPOSITE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_COMPOSITE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_CURRENCY_SYMBOL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_CURRENCY_SYMBOL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_DECIMAL_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DECIMAL_DIGIT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_DEPRECATED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DEPRECATED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_DIACRITIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_DIACRITIC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_COMPONENT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_COMPONENT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_BASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_BASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_PRESENTATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_PRESENTATION_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EXTENDED_PICTOGRAPHIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EXTENDED_PICTOGRAPHIC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_EXTENDER_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_EXTENDER_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_BASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_BASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_HEX_DIGIT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_HEX_DIGIT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ID_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_CONTINUE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ID_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ID_START_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_IGNORABLE_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_IGNORABLE_CONTROL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_LEFT_OF_PAIR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LEFT_OF_PAIR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_LINE_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LINE_SEPARATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_LOGICAL_ORDER_EXCEPTION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LOGICAL_ORDER_EXCEPTION_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_LOWERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_LOWERCASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_MATH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_MATH_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_NOT_A_CHARACTER_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_NOT_A_CHARACTER_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_NUMERIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_NUMERIC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ALPHABETIC_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ALPHABETIC_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_START_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_LOWERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_LOWERCASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_MATH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_MATH_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_OTHER_UPPERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_OTHER_UPPERCASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PAIRED_PUNCTUATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PAIRED_PUNCTUATION_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PARAGRAPH_SEPARATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PARAGRAPH_SEPARATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PRIVATE_USE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PRIVATE_USE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_QUOTATION_MARK_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_QUOTATION_MARK_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_REGIONAL_INDICATOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_REGIONAL_INDICATOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_SENTENCE_TERMINAL_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_SENTENCE_TERMINAL_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_SOFT_DOTTED_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_SOFT_DOTTED_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_TERMINAL_PUNCTUATION_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_TERMINAL_PUNCTUATION_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_TITLECASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_TITLECASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_UNASSIGNED_CODE_VALUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_UNASSIGNED_CODE_VALUE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_UPPERCASE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_UPPERCASE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_VARIATION_SELECTOR_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_VARIATION_SELECTOR_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_WHITE_SPACE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_WHITE_SPACE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE@
+GL_GNULIB_UNICTYPE_PROPERTY_ZERO_WIDTH_DLL_VARIABLE = @GL_GNULIB_UNICTYPE_PROPERTY_ZERO_WIDTH_DLL_VARIABLE@
+GL_GNULIB_UNIMETADATA_UNICODE_VERSION_DLL_VARIABLE = @GL_GNULIB_UNIMETADATA_UNICODE_VERSION_DLL_VARIABLE@
+GL_GNULIB_UNINORM_NFC_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFC_DLL_VARIABLE@
+GL_GNULIB_UNINORM_NFD_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFD_DLL_VARIABLE@
+GL_GNULIB_UNINORM_NFKC_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFKC_DLL_VARIABLE@
+GL_GNULIB_UNINORM_NFKD_DLL_VARIABLE = @GL_GNULIB_UNINORM_NFKD_DLL_VARIABLE@
GL_GNULIB_UNISTD_H_GETOPT = @GL_GNULIB_UNISTD_H_GETOPT@
GL_GNULIB_UNISTD_H_NONBLOCKING = @GL_GNULIB_UNISTD_H_NONBLOCKING@
GL_GNULIB_UNISTD_H_SIGPIPE = @GL_GNULIB_UNISTD_H_SIGPIPE@
@@ -5376,6 +5876,7 @@ GL_GNULIB_WCTOMB = @GL_GNULIB_WCTOMB@
GL_GNULIB_WCTRANS = @GL_GNULIB_WCTRANS@
GL_GNULIB_WCTYPE = @GL_GNULIB_WCTYPE@
GL_GNULIB_WCWIDTH = @GL_GNULIB_WCWIDTH@
+GL_GNULIB_WGETCWD = @GL_GNULIB_WGETCWD@
GL_GNULIB_WMEMCHR = @GL_GNULIB_WMEMCHR@
GL_GNULIB_WMEMCMP = @GL_GNULIB_WMEMCMP@
GL_GNULIB_WMEMCPY = @GL_GNULIB_WMEMCPY@
@@ -5384,9 +5885,12 @@ GL_GNULIB_WMEMPCPY = @GL_GNULIB_WMEMPCPY@
GL_GNULIB_WMEMSET = @GL_GNULIB_WMEMSET@
GL_GNULIB_WRITE = @GL_GNULIB_WRITE@
GL_GNULIB__EXIT = @GL_GNULIB__EXIT@
+GNULIBHEADERS_OVERRIDE_CHAR16_T = @GNULIBHEADERS_OVERRIDE_CHAR16_T@
+GNULIBHEADERS_OVERRIDE_CHAR32_T = @GNULIBHEADERS_OVERRIDE_CHAR32_T@
+GNULIBHEADERS_OVERRIDE_CHAR8_T = @GNULIBHEADERS_OVERRIDE_CHAR8_T@
GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@
-GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
GREP = @GREP@
+HARD_LOCALE_LIB = @HARD_LOCALE_LIB@
HAVE_ACCEPT4 = @HAVE_ACCEPT4@
HAVE_ACOSF = @HAVE_ACOSF@
HAVE_ACOSL = @HAVE_ACOSL@
@@ -5400,6 +5904,7 @@ HAVE_ATANF = @HAVE_ATANF@
HAVE_ATANL = @HAVE_ATANL@
HAVE_ATOLL = @HAVE_ATOLL@
HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_C32RTOMB = @HAVE_C32RTOMB@
HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
HAVE_CBRT = @HAVE_CBRT@
@@ -5449,6 +5954,7 @@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@
HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_GETW = @HAVE_DECL_GETW@
HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
HAVE_DECL_INET_NTOP = @HAVE_DECL_INET_NTOP@
@@ -5465,6 +5971,8 @@ HAVE_DECL_LOGL = @HAVE_DECL_LOGL@
HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_PROGRAM_INVOCATION_NAME = @HAVE_DECL_PROGRAM_INVOCATION_NAME@
+HAVE_DECL_PUTW = @HAVE_DECL_PUTW@
HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@
HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@
HAVE_DECL_RINTF = @HAVE_DECL_RINTF@
@@ -5499,6 +6007,9 @@ HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
HAVE_DPRINTF = @HAVE_DPRINTF@
HAVE_DUP3 = @HAVE_DUP3@
HAVE_DUPLOCALE = @HAVE_DUPLOCALE@
+HAVE_ERROR = @HAVE_ERROR@
+HAVE_ERROR_AT_LINE = @HAVE_ERROR_AT_LINE@
+HAVE_ERROR_H = @HAVE_ERROR_H@
HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
HAVE_EXECVPE = @HAVE_EXECVPE@
HAVE_EXPF = @HAVE_EXPF@
@@ -5537,6 +6048,7 @@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
HAVE_GETLOGIN = @HAVE_GETLOGIN@
HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
HAVE_GETPASS = @HAVE_GETPASS@
+HAVE_GETPROGNAME = @HAVE_GETPROGNAME@
HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
HAVE_GETUMASK = @HAVE_GETUMASK@
@@ -5548,6 +6060,8 @@ HAVE_HYPOTL = @HAVE_HYPOTL@
HAVE_ILOGB = @HAVE_ILOGB@
HAVE_ILOGBF = @HAVE_ILOGBF@
HAVE_ILOGBL = @HAVE_ILOGBL@
+HAVE_IMAXABS = @HAVE_IMAXABS@
+HAVE_IMAXDIV = @HAVE_IMAXDIV@
HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@
HAVE_INITSTATE = @HAVE_INITSTATE@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
@@ -5580,6 +6094,8 @@ HAVE_LOGL = @HAVE_LOGL@
HAVE_LSTAT = @HAVE_LSTAT@
HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOC16 = @HAVE_MBRTOC16@
+HAVE_MBRTOC32 = @HAVE_MBRTOC32@
HAVE_MBRTOWC = @HAVE_MBRTOWC@
HAVE_MBSINIT = @HAVE_MBSINIT@
HAVE_MBSLEN = @HAVE_MBSLEN@
@@ -5587,6 +6103,7 @@ HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
HAVE_MBTOWC = @HAVE_MBTOWC@
HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@
HAVE_MKDIRAT = @HAVE_MKDIRAT@
HAVE_MKDTEMP = @HAVE_MKDTEMP@
HAVE_MKFIFO = @HAVE_MKFIFO@
@@ -5727,6 +6244,7 @@ HAVE_STRPBRK = @HAVE_STRPBRK@
HAVE_STRPTIME = @HAVE_STRPTIME@
HAVE_STRSEP = @HAVE_STRSEP@
HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOF = @HAVE_STRTOF@
HAVE_STRTOL = @HAVE_STRTOL@
HAVE_STRTOLD = @HAVE_STRTOLD@
HAVE_STRTOLL = @HAVE_STRTOLL@
@@ -5759,8 +6277,13 @@ HAVE_TIMEGM = @HAVE_TIMEGM@
HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@
HAVE_TIMESPEC_GETRES = @HAVE_TIMESPEC_GETRES@
HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@
+HAVE_TOTALORDER = @HAVE_TOTALORDER@
+HAVE_TOTALORDERF = @HAVE_TOTALORDERF@
+HAVE_TOTALORDERL = @HAVE_TOTALORDERL@
HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
+HAVE_UCHAR_H = @HAVE_UCHAR_H@
HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNISTRING_WOE32DLL_H = @HAVE_UNISTRING_WOE32DLL_H@
HAVE_UNLINKAT = @HAVE_UNLINKAT@
HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
HAVE_USLEEP = @HAVE_USLEEP@
@@ -5808,6 +6331,7 @@ HAVE_WMEMCPY = @HAVE_WMEMCPY@
HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
HAVE_WMEMPCPY = @HAVE_WMEMPCPY@
HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE_WORKING_MBRTOC32 = @HAVE_WORKING_MBRTOC32@
HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
HAVE_XLOCALE_H = @HAVE_XLOCALE_H@
HAVE__EXIT = @HAVE__EXIT@
@@ -5825,6 +6349,10 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LC_COLLATE_IMPLEMENTED = @LC_COLLATE_IMPLEMENTED@
+LC_MONETARY_IMPLEMENTED = @LC_MONETARY_IMPLEMENTED@
+LC_NUMERIC_IMPLEMENTED = @LC_NUMERIC_IMPLEMENTED@
+LC_TIME_IMPLEMENTED = @LC_TIME_IMPLEMENTED@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
@@ -5844,6 +6372,7 @@ LIBUNISTRING_UNICONV_H = @LIBUNISTRING_UNICONV_H@
LIBUNISTRING_UNICTYPE_H = @LIBUNISTRING_UNICTYPE_H@
LIBUNISTRING_UNIGBRK_H = @LIBUNISTRING_UNIGBRK_H@
LIBUNISTRING_UNILBRK_H = @LIBUNISTRING_UNILBRK_H@
+LIBUNISTRING_UNIMETADATA_H = @LIBUNISTRING_UNIMETADATA_H@
LIBUNISTRING_UNINAME_H = @LIBUNISTRING_UNINAME_H@
LIBUNISTRING_UNINORM_H = @LIBUNISTRING_UNINORM_H@
LIBUNISTRING_UNISTDIO_H = @LIBUNISTRING_UNISTDIO_H@
@@ -5880,8 +6409,10 @@ LTLIBTHREAD = @LTLIBTHREAD@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
+MBRTOWC_LIB = @MBRTOWC_LIB@
MKDIR_P = @MKDIR_P@
NAMESPACING = @NAMESPACING@
+NANOSLEEP_LIB = @NANOSLEEP_LIB@
NETINET_IN_H = @NETINET_IN_H@
NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@
NEXT_ASSERT_H = @NEXT_ASSERT_H@
@@ -5889,6 +6420,7 @@ NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H = @NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H@
NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@
NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ERROR_H = @NEXT_AS_FIRST_DIRECTIVE_ERROR_H@
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
@@ -5914,11 +6446,13 @@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H@
NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
+NEXT_AS_FIRST_DIRECTIVE_UCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_UCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
NEXT_CTYPE_H = @NEXT_CTYPE_H@
NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ERROR_H = @NEXT_ERROR_H@
NEXT_FCNTL_H = @NEXT_FCNTL_H@
NEXT_FLOAT_H = @NEXT_FLOAT_H@
NEXT_ICONV_H = @NEXT_ICONV_H@
@@ -5944,6 +6478,7 @@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@
NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
NEXT_SYS_UIO_H = @NEXT_SYS_UIO_H@
NEXT_TIME_H = @NEXT_TIME_H@
+NEXT_UCHAR_H = @NEXT_UCHAR_H@
NEXT_UNISTD_H = @NEXT_UNISTD_H@
NEXT_WCHAR_H = @NEXT_WCHAR_H@
NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
@@ -5966,6 +6501,7 @@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
PRIPTR_PREFIX = @PRIPTR_PREFIX@
PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTHREAD_SIGMASK_LIB = @PTHREAD_SIGMASK_LIB@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
RC = @RC@
@@ -5977,6 +6513,7 @@ REPLACE_ASINF = @REPLACE_ASINF@
REPLACE_ATAN2F = @REPLACE_ATAN2F@
REPLACE_ATANF = @REPLACE_ATANF@
REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_C32RTOMB = @REPLACE_C32RTOMB@
REPLACE_CALLOC_FOR_CALLOC_GNU = @REPLACE_CALLOC_FOR_CALLOC_GNU@
REPLACE_CALLOC_FOR_CALLOC_POSIX = @REPLACE_CALLOC_FOR_CALLOC_POSIX@
REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
@@ -5996,7 +6533,10 @@ REPLACE_CTIME = @REPLACE_CTIME@
REPLACE_DPRINTF = @REPLACE_DPRINTF@
REPLACE_DUP = @REPLACE_DUP@
REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUP3 = @REPLACE_DUP3@
REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@
+REPLACE_ERROR = @REPLACE_ERROR@
+REPLACE_ERROR_AT_LINE = @REPLACE_ERROR_AT_LINE@
REPLACE_EXECL = @REPLACE_EXECL@
REPLACE_EXECLE = @REPLACE_EXECLE@
REPLACE_EXECLP = @REPLACE_EXECLP@
@@ -6013,10 +6553,12 @@ REPLACE_EXPM1F = @REPLACE_EXPM1F@
REPLACE_EXPM1L = @REPLACE_EXPM1L@
REPLACE_FABSL = @REPLACE_FABSL@
REPLACE_FACCESSAT = @REPLACE_FACCESSAT@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
REPLACE_FCHMODAT = @REPLACE_FCHMODAT@
REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
REPLACE_FCLOSE = @REPLACE_FCLOSE@
REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FDATASYNC = @REPLACE_FDATASYNC@
REPLACE_FDOPEN = @REPLACE_FDOPEN@
REPLACE_FFLUSH = @REPLACE_FFLUSH@
REPLACE_FFSLL = @REPLACE_FFSLL@
@@ -6051,12 +6593,16 @@ REPLACE_GETCWD = @REPLACE_GETCWD@
REPLACE_GETDELIM = @REPLACE_GETDELIM@
REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@
+REPLACE_GETENTROPY = @REPLACE_GETENTROPY@
REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@
REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
REPLACE_GETPASS = @REPLACE_GETPASS@
REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@
+REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@
+REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@
REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
REPLACE_GMTIME = @REPLACE_GMTIME@
REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@
@@ -6069,6 +6615,8 @@ REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
REPLACE_ILOGB = @REPLACE_ILOGB@
REPLACE_ILOGBF = @REPLACE_ILOGBF@
REPLACE_ILOGBL = @REPLACE_ILOGBL@
+REPLACE_IMAXABS = @REPLACE_IMAXABS@
+REPLACE_IMAXDIV = @REPLACE_IMAXDIV@
REPLACE_INET_NTOP = @REPLACE_INET_NTOP@
REPLACE_INET_PTON = @REPLACE_INET_PTON@
REPLACE_INITSTATE = @REPLACE_INITSTATE@
@@ -6080,9 +6628,11 @@ REPLACE_ISNAN = @REPLACE_ISNAN@
REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
REPLACE_ISWDIGIT = @REPLACE_ISWDIGIT@
+REPLACE_ISWPUNCT = @REPLACE_ISWPUNCT@
REPLACE_ISWXDIGIT = @REPLACE_ISWXDIGIT@
REPLACE_ITOLD = @REPLACE_ITOLD@
REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LDEXP = @REPLACE_LDEXP@
REPLACE_LDEXPL = @REPLACE_LDEXPL@
REPLACE_LINK = @REPLACE_LINK@
REPLACE_LINKAT = @REPLACE_LINKAT@
@@ -6109,19 +6659,27 @@ REPLACE_LSTAT = @REPLACE_LSTAT@
REPLACE_MALLOC_FOR_MALLOC_GNU = @REPLACE_MALLOC_FOR_MALLOC_GNU@
REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@
REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOC16 = @REPLACE_MBRTOC16@
+REPLACE_MBRTOC32 = @REPLACE_MBRTOC32@
REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
REPLACE_MBSINIT = @REPLACE_MBSINIT@
REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MBSTOWCS = @REPLACE_MBSTOWCS@
REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MB_CUR_MAX = @REPLACE_MB_CUR_MAX@
REPLACE_MEMCHR = @REPLACE_MEMCHR@
REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MEMPCPY = @REPLACE_MEMPCPY@
+REPLACE_MEMSET_EXPLICIT = @REPLACE_MEMSET_EXPLICIT@
REPLACE_MKDIR = @REPLACE_MKDIR@
REPLACE_MKFIFO = @REPLACE_MKFIFO@
REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@
REPLACE_MKNOD = @REPLACE_MKNOD@
REPLACE_MKNODAT = @REPLACE_MKNODAT@
+REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@
+REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
REPLACE_MKTIME = @REPLACE_MKTIME@
REPLACE_MODF = @REPLACE_MODF@
@@ -6136,8 +6694,10 @@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
REPLACE_OPEN = @REPLACE_OPEN@
REPLACE_OPENAT = @REPLACE_OPENAT@
REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_PIPE2 = @REPLACE_PIPE2@
REPLACE_POPEN = @REPLACE_POPEN@
REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@
+REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@
REPLACE_PREAD = @REPLACE_PREAD@
REPLACE_PRINTF = @REPLACE_PRINTF@
REPLACE_PSELECT = @REPLACE_PSELECT@
@@ -6199,6 +6759,7 @@ REPLACE_PUTENV = @REPLACE_PUTENV@
REPLACE_PWRITE = @REPLACE_PWRITE@
REPLACE_QSORT_R = @REPLACE_QSORT_R@
REPLACE_RAISE = @REPLACE_RAISE@
+REPLACE_RAND = @REPLACE_RAND@
REPLACE_RANDOM = @REPLACE_RANDOM@
REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
REPLACE_READ = @REPLACE_READ@
@@ -6222,6 +6783,7 @@ REPLACE_ROUNDL = @REPLACE_ROUNDL@
REPLACE_SCHED_YIELD = @REPLACE_SCHED_YIELD@
REPLACE_SELECT = @REPLACE_SELECT@
REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@
REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
REPLACE_SETSTATE = @REPLACE_SETSTATE@
REPLACE_SIGNBIT = @REPLACE_SIGNBIT@
@@ -6236,6 +6798,7 @@ REPLACE_SQRTL = @REPLACE_SQRTL@
REPLACE_STAT = @REPLACE_STAT@
REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPCPY = @REPLACE_STPCPY@
REPLACE_STPNCPY = @REPLACE_STPNCPY@
REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
@@ -6250,6 +6813,7 @@ REPLACE_STRNLEN = @REPLACE_STRNLEN@
REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
REPLACE_STRSTR = @REPLACE_STRSTR@
REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOF = @REPLACE_STRTOF@
REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
REPLACE_STRTOL = @REPLACE_STRTOL@
@@ -6260,12 +6824,19 @@ REPLACE_STRTOULL = @REPLACE_STRTOULL@
REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@
REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@
REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@
+REPLACE_STRVERSCMP = @REPLACE_STRVERSCMP@
REPLACE_SYMLINK = @REPLACE_SYMLINK@
REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
REPLACE_TANF = @REPLACE_TANF@
REPLACE_TANHF = @REPLACE_TANHF@
+REPLACE_TIME = @REPLACE_TIME@
REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@
+REPLACE_TIMESPEC_GETRES = @REPLACE_TIMESPEC_GETRES@
REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TOTALORDER = @REPLACE_TOTALORDER@
+REPLACE_TOTALORDERF = @REPLACE_TOTALORDERF@
+REPLACE_TOTALORDERL = @REPLACE_TOTALORDERL@
REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
REPLACE_TRUNC = @REPLACE_TRUNC@
REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
@@ -6285,21 +6856,33 @@ REPLACE_VPRINTF = @REPLACE_VPRINTF@
REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSCMP = @REPLACE_WCSCMP@
REPLACE_WCSFTIME = @REPLACE_WCSFTIME@
+REPLACE_WCSNCMP = @REPLACE_WCSNCMP@
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSSTR = @REPLACE_WCSSTR@
REPLACE_WCSTOK = @REPLACE_WCSTOK@
REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
REPLACE_WCTOB = @REPLACE_WCTOB@
REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WCTRANS = @REPLACE_WCTRANS@
+REPLACE_WCTYPE = @REPLACE_WCTYPE@
REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WMEMCMP = @REPLACE_WMEMCMP@
+REPLACE_WMEMPCPY = @REPLACE_WMEMPCPY@
REPLACE_WRITE = @REPLACE_WRITE@
+REPLACE__EXIT = @REPLACE__EXIT@
+SCHED_YIELD_LIB = @SCHED_YIELD_LIB@
SED = @SED@
+SELECT_LIB = @SELECT_LIB@
+SETLOCALE_LIB = @SETLOCALE_LIB@
+SETLOCALE_NULL_LIB = @SETLOCALE_NULL_LIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
-STDALIGN_H = @STDALIGN_H@
+SMALL_WCHAR_T = @SMALL_WCHAR_T@
STDCKDINT_H = @STDCKDINT_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@
@@ -6396,6 +6979,7 @@ SUBDIRS = .
# This must be the last thing that gets added to TESTS_ENVIRONMENT.
TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' srcdir='$(srcdir)' \
LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
LOCALE_FR='@LOCALE_FR@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' \
LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
@@ -6403,6 +6987,36 @@ TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' srcdir='$(srcdir)' \
LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
+ LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+ LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_FR='@LOCALE_FR@' \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' \
LOCALE_ZH_CN='@LOCALE_ZH_CN@' LOCALE_FR='@LOCALE_FR@' \
@@ -6422,72 +7036,103 @@ TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' srcdir='$(srcdir)' \
noinst_HEADERS =
noinst_LIBRARIES =
check_LIBRARIES = libtests.a
-EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
- test-alloca-opt.c arpa_inet.in.h test-arpa_inet.c \
- test-array-mergesort.c macros.h test-assert.c basename-lgpl.h \
- test-binary-io.sh test-binary-io.c macros.h w32sock.h \
- test-bind.c signature.h macros.h test-btowc1.sh test-btowc2.sh \
- test-btowc.c signature.h macros.h test-c-ctype.c macros.h \
- test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c \
- macros.h calloc.c test-calloc-gnu.c macros.h calloc.c \
- cloexec.h test-cloexec.c macros.h test-close.c signature.h \
- macros.h w32sock.h test-connect.c signature.h macros.h \
- ctype.in.h test-ctype.c test-dup2.c signature.h macros.h \
- test-environ.c test-errno.c error.h exitfail.h fcntl.in.h \
- test-fcntl-h.c test-fcntl.c signature.h macros.h fd-hook.h \
- test-fdopen.c signature.h macros.h test-fgetc.c signature.h \
- macros.h filename.h test-float.c macros.h test-fputc.c \
- signature.h macros.h test-fread.c signature.h macros.h \
- test-free.c macros.h test-frexp.c test-frexp.h minus-zero.h \
- infinity.h nan.h signature.h macros.h randomd.c test-frexpl.c \
- test-frexp.h minus-zero.h infinity.h nan.h signature.h \
- macros.h randoml.c test-fseterr.c stat-w32.c stat-w32.h \
- test-fstat.c signature.h macros.h test-ftruncate.c \
- test-ftruncate.sh signature.h macros.h test-fwrite.c \
- signature.h macros.h test-getcwd-lgpl.c signature.h macros.h \
- test-getdtablesize.c signature.h macros.h test-getprogname.c \
- signature.h test-gettimeofday.c test-hard-locale.c locale.c \
- ialloc.h test-iconv-h.c test-iconv.c signature.h macros.h \
+EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h \
+ test-alignasof.c macros.h alloca.c test-alloca-opt.c \
+ arpa_inet.in.h test-arpa_inet.c test-array-mergesort.c \
+ macros.h test-assert.c basename-lgpl.h test-binary-io.sh \
+ test-binary-io.c macros.h w32sock.h test-bind.c signature.h \
+ macros.h test-btoc32-1.sh test-btoc32-2.sh test-btoc32-3.sh \
+ test-btoc32.c signature.h macros.h test-btowc-1.sh \
+ test-btowc-2.sh test-btowc-3.sh test-btowc.c signature.h \
+ macros.h test-c-ctype.c macros.h test-c-strcase.sh \
+ test-c-strcasecmp.c test-c-strncasecmp.c macros.h \
+ test-c32isalnum.sh test-c32isalnum.c signature.h macros.h \
+ test-c32isalpha.sh test-c32isalpha.c signature.h macros.h \
+ test-c32isblank.sh test-c32isblank.c signature.h macros.h \
+ test-c32iscntrl.sh test-c32iscntrl.c signature.h macros.h \
+ test-c32isdigit.sh test-c32isdigit.c signature.h macros.h \
+ test-c32isgraph.sh test-c32isgraph.c signature.h macros.h \
+ test-c32islower.sh test-c32islower.c signature.h macros.h \
+ test-c32isprint.sh test-c32isprint.c signature.h macros.h \
+ test-c32ispunct.sh test-c32ispunct.c signature.h macros.h \
+ test-c32isspace.sh test-c32isspace.c signature.h macros.h \
+ test-c32isupper.sh test-c32isupper.c signature.h macros.h \
+ test-c32isxdigit.sh test-c32isxdigit.c signature.h macros.h \
+ test-c32rtomb.sh test-c32rtomb.c test-c32rtomb-w32-2.sh \
+ test-c32rtomb-w32-3.sh test-c32rtomb-w32-4.sh \
+ test-c32rtomb-w32-5.sh test-c32rtomb-w32-6.sh \
+ test-c32rtomb-w32-7.sh test-c32rtomb-w32-8.sh \
+ test-c32rtomb-w32.c signature.h macros.h test-c32tolower.sh \
+ test-c32tolower.c signature.h macros.h test-c32width.c \
+ signature.h macros.h calloc.c test-calloc-gnu.c macros.h \
+ calloc.c cloexec.h test-cloexec.c macros.h test-close.c \
+ signature.h macros.h w32sock.h test-connect.c signature.h \
+ macros.h ctype.in.h test-ctype.c test-dup2.c signature.h \
+ macros.h test-environ.c test-errno.c error.in.h test-error.sh \
+ test-error.c macros.h exitfail.h fcntl.in.h test-fcntl-h.c \
+ test-fcntl.c signature.h macros.h fd-hook.h test-fdopen.c \
+ signature.h macros.h test-fgetc.c signature.h macros.h \
+ filename.h test-float.c macros.h test-fputc.c signature.h \
+ macros.h test-fread.c signature.h macros.h test-free.c \
+ macros.h test-frexp.c test-frexp.h minus-zero.h infinity.h \
+ signature.h macros.h randomd.c test-frexpl.c test-frexp.h \
+ minus-zero.h infinity.h signature.h macros.h randoml.c \
+ test-fseterr.c stat-w32.c stat-w32.h test-fstat.c signature.h \
+ macros.h test-ftruncate.c test-ftruncate.sh signature.h \
+ macros.h test-fwrite.c signature.h macros.h test-getcwd-lgpl.c \
+ signature.h macros.h test-getdtablesize.c signature.h macros.h \
+ getprogname.h test-getprogname.c test-gettimeofday.c \
+ signature.h macros.h test-hard-locale.c locale.c ialloc.h \
+ test-iconv-h.c test-iconv.c signature.h macros.h \
ignore-value.h test-ignore-value.c test-inet_pton.c \
signature.h macros.h intprops-internal.h intprops.h \
test-intprops.c macros.h test-inttypes.c w32sock.h \
test-ioctl.c signature.h macros.h test-isblank.c signature.h \
macros.h test-isnand-nolibm.c test-isnand.h minus-zero.h \
- infinity.h nan.h macros.h test-isnanf-nolibm.c test-isnanf.h \
- minus-zero.h infinity.h nan.h macros.h test-isnanl-nolibm.c \
- test-isnanl.h minus-zero.h infinity.h nan.h macros.h \
- test-iswblank.c macros.h test-iswdigit.sh test-iswdigit.c \
- signature.h macros.h test-iswxdigit.sh test-iswxdigit.c \
- signature.h macros.h test-langinfo.c test-limits-h.c w32sock.h \
- test-listen.c signature.h macros.h test-localcharset.c \
- test-locale.c test-localename.c macros.h test-rwlock1.c \
- test-lock.c test-once.c atomic-int-gnulib.h test-lstat.h \
- test-lstat.c signature.h macros.h malloc.c test-malloc-gnu.c \
- macros.h test-malloca.c test-math.c macros.h test-mbrtowc1.sh \
- test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \
- test-mbrtowc5.sh test-mbrtowc.c test-mbrtowc-w32-1.sh \
+ infinity.h macros.h test-isnanf-nolibm.c test-isnanf.h \
+ minus-zero.h infinity.h macros.h test-isnanl-nolibm.c \
+ test-isnanl.h minus-zero.h infinity.h macros.h test-iswblank.c \
+ macros.h test-iswdigit.sh test-iswdigit.c signature.h macros.h \
+ test-iswpunct.sh test-iswpunct.c signature.h macros.h \
+ test-iswxdigit.sh test-iswxdigit.c signature.h macros.h \
+ test-langinfo.c test-largefile.c cdefs.h libc-config.h \
+ test-limits-h.c w32sock.h test-listen.c signature.h macros.h \
+ test-localcharset.c test-locale.c test-localename.c macros.h \
+ test-rwlock1.c test-lock.c test-once.c atomic-int-gnulib.h \
+ macros.h test-lstat.h test-lstat.c signature.h macros.h \
+ malloc.c test-malloc-gnu.c macros.h test-malloca.c test-math.c \
+ macros.h test-mbrtoc32-1.sh test-mbrtoc32-2.sh \
+ test-mbrtoc32-3.sh test-mbrtoc32-4.sh test-mbrtoc32-5.sh \
+ test-mbrtoc32.c test-mbrtoc32-w32-2.sh test-mbrtoc32-w32-3.sh \
+ test-mbrtoc32-w32-4.sh test-mbrtoc32-w32-5.sh \
+ test-mbrtoc32-w32-6.sh test-mbrtoc32-w32-7.sh \
+ test-mbrtoc32-w32-8.sh test-mbrtoc32-w32.c signature.h \
+ macros.h test-mbrtowc-1.sh test-mbrtowc-2.sh test-mbrtowc-3.sh \
+ test-mbrtowc-4.sh test-mbrtowc-5.sh test-mbrtowc.c \
test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \
test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh \
- test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh test-mbrtowc-w32.c \
- signature.h macros.h test-mbsinit.sh test-mbsinit.c \
- signature.h macros.h mbtowc-impl.h test-memchr.c \
- zerosize-ptr.h signature.h macros.h msvc-inval.h \
- msvc-nothrow.h test-nanosleep.c signature.h macros.h \
- netinet_in.in.h test-netinet_in.c test-open.h test-open.c \
- signature.h macros.h pathmax.h test-pathmax.c macros.h \
- signature.h test-perror.c test-perror2.c test-perror.sh \
- test-pipe.c signature.h macros.h test-printf-frexp.c macros.h \
- test-printf-frexpl.c macros.h test-pselect.c test-select.h \
- macros.h signature.h pthread.in.h test-pthread.c \
- test-pthread-thread.c macros.h test-pthread_sigmask1.c \
- test-pthread_sigmask2.c signature.h macros.h test-raise.c \
+ test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh \
+ test-mbrtowc-w32-8.sh test-mbrtowc-w32.c signature.h macros.h \
+ test-mbsinit.sh test-mbsinit.c signature.h macros.h \
+ mbtowc-impl.h test-memchr.c zerosize-ptr.h signature.h \
+ macros.h msvc-inval.h msvc-nothrow.h test-nanosleep.c \
+ signature.h macros.h netinet_in.in.h test-netinet_in.c \
+ test-open.h test-open.c signature.h macros.h pathmax.h \
+ test-pathmax.c macros.h signature.h test-perror.c \
+ test-perror2.c test-perror.sh test-pipe.c signature.h macros.h \
+ test-printf-frexp.c macros.h test-printf-frexpl.c macros.h \
+ test-pselect.c test-select.h macros.h signature.h pthread.in.h \
+ test-pthread.c test-pthread-thread.c macros.h \
+ test-pthread_sigmask1.c test-pthread_sigmask2.c signature.h \
+ macros.h test-raise.c signature.h macros.h test-random.c \
+ test-random-mt.c signature.h macros.h test-random_r.c \
signature.h macros.h realloc.c test-realloc-gnu.c macros.h \
- realloc.c test-reallocarray.c signature.h macros.h \
- same-inode.h sched.in.h test-sched.c macros.h signature.h \
- test-select.c test-select.h test-select-fd.c test-select-in.sh \
- test-select-out.sh test-select-stdin.c test-setenv.c \
- signature.h macros.h test-setlocale_null.c \
- test-setlocale_null-mt-one.c test-setlocale_null-mt-all.c \
+ realloc.c test-reallocarray.c signature.h macros.h sched.in.h \
+ test-sched.c macros.h signature.h test-select.c test-select.h \
+ test-select-fd.c test-select-in.sh test-select-out.sh \
+ test-select-stdin.c test-setenv.c signature.h macros.h \
+ test-setlocale_null.c test-setlocale_null-mt-one.c \
+ test-setlocale_null-mt-all.c test-setlocale_null-unlocked.c \
test-setlocale1.sh test-setlocale1.c test-setlocale2.sh \
test-setlocale2.c signature.h macros.h w32sock.h \
test-setsockopt.c signature.h macros.h signal.in.h \
@@ -6496,23 +7141,23 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
signature.h macros.h _Noreturn.h arg-nonnull.h c++defs.h \
warn-on-use.h w32sock.h w32sock.h test-sockets.c stat-w32.c \
stat-w32.h test-stat.h test-stat.c signature.h macros.h \
- stat-time.h test-stat-time.c macros.h nap.h stdalign.in.h \
- test-stdalign.c macros.h test-stdbool.c macros.h \
- test-intprops.c test-stdckdint.c test-stddef.c test-stdint.c \
- stdio.in.h test-stdio.c test-stdlib.c test-sys_wait.h \
- strerror-override.h test-strerror.c signature.h macros.h \
- strerror_r.c test-strerror_r.c signature.h macros.h \
- test-striconveh.c macros.h test-striconveha.c iconvsupport.c \
- macros.h test-string.c test-strncat.c unistr/test-strncat.h \
- zerosize-ptr.h signature.h macros.h test-strstr.c \
- zerosize-ptr.h signature.h macros.h test-symlink.h \
- test-symlink.c signature.h macros.h sys_ioctl.in.h \
- test-sys_ioctl.c sys_select.in.h test-sys_select.c signature.h \
- sys_socket.in.h test-sys_socket.c sys_stat.in.h \
- test-sys_stat.c sys_time.in.h test-sys_time.c test-sys_types.c \
- sys_uio.in.h test-sys_uio.c init.sh test-init.sh \
- test-thread_self.c test-thread_create.c macros.h time.in.h \
- test-time.c unicase/test-cased.c \
+ stat-time.h test-stat-time.c macros.h nap.h test-stdbool.c \
+ macros.h test-intprops.c test-stdckdint.c test-stddef.c \
+ test-stdint.c stdio.in.h test-stdio.c macros.h test-stdlib.c \
+ test-sys_wait.h strerror-override.h test-strerror.c \
+ signature.h macros.h strerror_r.c test-strerror_r.c \
+ signature.h macros.h test-striconveh.c macros.h \
+ test-striconveha.c iconvsupport.c macros.h test-string.c \
+ test-strncat.c unistr/test-strncat.h zerosize-ptr.h \
+ signature.h macros.h test-strstr.c zerosize-ptr.h signature.h \
+ macros.h test-symlink.h test-symlink.c signature.h macros.h \
+ sys_ioctl.in.h test-sys_ioctl.c sys_select.in.h \
+ test-sys_select.c signature.h sys_socket.in.h \
+ test-sys_socket.c sys_stat.in.h test-sys_stat.c sys_time.in.h \
+ test-sys_time.c test-sys_types.c sys_uio.in.h test-sys_uio.c \
+ init.sh test-init.sh test-thread_self.c test-thread_create.c \
+ macros.h time.in.h test-time-h.c test-time.c signature.h \
+ macros.h test-uchar.c unicase/test-cased.c \
unicase/test-predicate-part1.h unicase/test-predicate-part2.h \
macros.h unicase/test-ignorable.c \
unicase/test-predicate-part1.h unicase/test-predicate-part2.h \
@@ -6696,7 +7341,9 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unictype/test-predicate-part2.h macros.h \
unictype/test-decdigit.c unictype/test-decdigit.h macros.h \
unictype/test-digit.c unictype/test-digit.h macros.h \
- unictype/test-joininggroup_byname.c macros.h \
+ unictype/test-incb_byname.c macros.h unictype/test-incb_name.c \
+ macros.h unictype/test-incb_of.c unictype/test-incb_of.h \
+ macros.h unictype/test-joininggroup_byname.c macros.h \
unictype/test-joininggroup_name.c macros.h \
unictype/test-joininggroup_of.c \
unictype/test-joininggroup_of.h macros.h \
@@ -6836,6 +7483,12 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unictype/test-predicate-part2.h macros.h \
unictype/test-pr_hyphen.c unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
+ unictype/test-pr_id_compat_math_continue.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h macros.h \
+ unictype/test-pr_id_compat_math_start.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h macros.h \
unictype/test-pr_id_continue.c unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
unictype/test-pr_id_start.c unictype/test-predicate-part1.h \
@@ -6848,6 +7501,9 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unictype/test-pr_ids_trinary_operator.c \
unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
+ unictype/test-pr_ids_unary_operator.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h macros.h \
unictype/test-pr_ignorable_control.c \
unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
@@ -6911,6 +7567,9 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unictype/test-pr_pattern_white_space.c \
unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
+ unictype/test-pr_prepended_concatenation_mark.c \
+ unictype/test-predicate-part1.h \
+ unictype/test-predicate-part2.h macros.h \
unictype/test-pr_private_use.c unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
unictype/test-pr_punctuation.c unictype/test-predicate-part1.h \
@@ -6964,19 +7623,19 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unictype/test-sy_java_whitespace.c \
unictype/test-predicate-part1.h \
unictype/test-predicate-part2.h macros.h \
- unigbrk/test-u16-grapheme-breaks.c \
- unigbrk/test-u16-grapheme-next.c \
- unigbrk/test-u16-grapheme-prev.c \
- unigbrk/test-u32-grapheme-breaks.c \
- unigbrk/test-u32-grapheme-next.c \
- unigbrk/test-u32-grapheme-prev.c \
- unigbrk/test-u8-grapheme-breaks.c \
- unigbrk/test-u8-grapheme-next.c \
- unigbrk/test-u8-grapheme-prev.c unigbrk/test-uc-gbrk-prop.c \
- unigbrk/test-uc-gbrk-prop.h macros.h \
- unigbrk/test-uc-grapheme-breaks.c \
+ unigbrk/test-u16-grapheme-breaks.c macros.h \
+ unigbrk/test-u16-grapheme-next.c macros.h \
+ unigbrk/test-u16-grapheme-prev.c macros.h \
+ unigbrk/test-u32-grapheme-breaks.c macros.h \
+ unigbrk/test-u32-grapheme-next.c macros.h \
+ unigbrk/test-u32-grapheme-prev.c macros.h \
+ unigbrk/test-u8-grapheme-breaks.c macros.h \
+ unigbrk/test-u8-grapheme-next.c macros.h \
+ unigbrk/test-u8-grapheme-prev.c macros.h \
+ unigbrk/test-uc-gbrk-prop.c unigbrk/test-uc-gbrk-prop.h \
+ macros.h unigbrk/test-uc-grapheme-breaks.c \
unigbrk/test-uc-grapheme-breaks.sh \
- unigbrk/GraphemeBreakTest.txt \
+ unigbrk/GraphemeBreakTest.txt macros.h \
unigbrk/test-uc-is-grapheme-break.c \
unigbrk/test-uc-is-grapheme-break.sh \
unigbrk/GraphemeBreakTest.txt \
@@ -6990,10 +7649,11 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unilbrk/test-u8-width-linebreaks.c macros.h \
unilbrk/test-ulc-possible-linebreaks.c macros.h \
unilbrk/test-ulc-width-linebreaks.c macros.h \
- uniname/test-uninames.sh uniname/test-uninames.c \
- uniname/UnicodeData.txt uniname/HangulSyllableNames.txt \
- uniname/NameAliases.txt uninorm/test-canonical-decomposition.c \
- macros.h uninorm/test-compat-decomposition.c macros.h \
+ unimetadata/test-u-version.c macros.h uniname/test-uninames.sh \
+ uniname/test-uninames.c uniname/UnicodeData.txt \
+ uniname/HangulSyllableNames.txt uniname/NameAliases.txt \
+ uninorm/test-canonical-decomposition.c macros.h \
+ uninorm/test-compat-decomposition.c macros.h \
uninorm/test-composition.c macros.h \
uninorm/test-decomposing-form.c macros.h \
uninorm/test-decomposition.c macros.h \
@@ -7082,8 +7742,9 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
unistr/test-u16-mbtouc-unsafe.c unistr/test-u16-mbtouc.h \
macros.h unistr/test-u16-mbtoucr.c macros.h \
unistr/test-u16-move.c unistr/test-move.h macros.h \
- unistr/test-u16-next.c macros.h unistr/test-u16-prev.c \
- macros.h unistr/test-u16-set.c unistr/test-set.h macros.h \
+ unistr/test-u16-next.c macros.h unistr/test-u16-pcpy.c \
+ unistr/test-pcpy.h macros.h unistr/test-u16-prev.c macros.h \
+ unistr/test-u16-set.c unistr/test-set.h macros.h \
unistr/test-u16-stpcpy.c unistr/test-stpcpy.h macros.h \
unistr/test-u16-stpncpy.c unistr/test-stpncpy.h zerosize-ptr.h \
macros.h unistr/test-u16-strcat.c unistr/test-strcat.h \
@@ -7116,8 +7777,9 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
macros.h unistr/test-u32-mbtouc-unsafe.c \
unistr/test-u32-mbtouc.h macros.h unistr/test-u32-mbtoucr.c \
macros.h unistr/test-u32-move.c unistr/test-move.h macros.h \
- unistr/test-u32-next.c macros.h unistr/test-u32-prev.c \
- macros.h unistr/test-u32-set.c unistr/test-set.h macros.h \
+ unistr/test-u32-next.c macros.h unistr/test-u32-pcpy.c \
+ unistr/test-pcpy.h macros.h unistr/test-u32-prev.c macros.h \
+ unistr/test-u32-set.c unistr/test-set.h macros.h \
unistr/test-u32-stpcpy.c unistr/test-stpcpy.h macros.h \
unistr/test-u32-stpncpy.c unistr/test-stpncpy.h zerosize-ptr.h \
macros.h unistr/test-u32-strcat.c unistr/test-strcat.h \
@@ -7149,7 +7811,8 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
macros.h unistr/test-u8-mbtouc-unsafe.c \
unistr/test-u8-mbtouc.h macros.h unistr/test-u8-mbtoucr.c \
macros.h unistr/test-u8-move.c unistr/test-move.h macros.h \
- unistr/test-u8-next.c macros.h unistr/test-u8-prev.c macros.h \
+ unistr/test-u8-next.c macros.h unistr/test-u8-pcpy.c \
+ unistr/test-pcpy.h macros.h unistr/test-u8-prev.c macros.h \
unistr/test-u8-set.c unistr/test-set.h macros.h \
unistr/test-u8-stpcpy.c unistr/test-stpcpy.h macros.h \
unistr/test-u8-stpncpy.c unistr/test-stpncpy.h zerosize-ptr.h \
@@ -7186,29 +7849,29 @@ EXTRA_DIST = w32sock.h test-accept.c signature.h macros.h alloca.c \
signature.h macros.h test-usleep.c signature.h macros.h \
verify.h test-verify.c test-verify-try.c test-verify.sh \
test-wchar.c test-wcrtomb.sh test-wcrtomb.c \
- test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh \
- test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh \
- test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh \
- test-wcrtomb-w32-7.sh test-wcrtomb-w32.c signature.h macros.h \
+ test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh \
+ test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh \
+ test-wcrtomb-w32-6.sh test-wcrtomb-w32-7.sh \
+ test-wcrtomb-w32-8.sh test-wcrtomb-w32.c signature.h macros.h \
wctomb-impl.h test-wctype-h.c macros.h test-wcwidth.c \
signature.h macros.h windows-thread.h windows-tls.h xalloc.h \
xalloc.h test-xalloc-die.c test-xalloc-die.sh
-BUILT_SOURCES = arpa/inet.h ctype.h fcntl.h $(NETINET_IN_H) pthread.h \
- sched.h signal.h $(STDALIGN_H) stdio.h sys/ioctl.h \
- sys/select.h sys/socket.h sys/stat.h sys/time.h sys/uio.h \
- time.h
+BUILT_SOURCES = arpa/inet.h ctype.h error.h fcntl.h $(NETINET_IN_H) \
+ pthread.h sched.h signal.h stdio.h sys/ioctl.h sys/select.h \
+ sys/socket.h sys/stat.h sys/time.h sys/uio.h time.h
SUFFIXES =
# This test expects compilation of test-verify-try.c to fail, and
# each time it fails, the makefile rule does not perform the usual
# "mv -f $name.Tpo $name.po, so tell make clean to remove that file.
MOSTLYCLEANFILES = core *.stackdump arpa/inet.h arpa/inet.h-t ctype.h \
- ctype.h-t fcntl.h fcntl.h-t netinet/in.h netinet/in.h-t \
- pthread.h pthread.h-t sched.h sched.h-t signal.h signal.h-t \
- stdalign.h stdalign.h-t stdio.h stdio.h-t sys/ioctl.h \
- sys/ioctl.h-t sys/select.h sys/select.h-t sys/socket.h \
- sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \
- sys/uio.h sys/uio.h-t time.h time.h-t \
+ ctype.h-t error.h error.h-t fcntl.h fcntl.h-t netinet/in.h \
+ netinet/in.h-t pthread.h pthread.h-t1 pthread.h-t2 \
+ pthread.h-t3 pthread.h-t4 sched.h sched.h-t signal.h \
+ signal.h-t stdio.h stdio.h-t1 stdio.h-t2 stdio.h-t3 \
+ sys/ioctl.h sys/ioctl.h-t sys/select.h sys/select.h-t \
+ sys/socket.h sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h \
+ sys/time.h-t sys/uio.h sys/uio.h-t time.h time.h-t \
.deps/test-verify-try.Tpo
MOSTLYCLEANDIRS = arpa netinet sys sys sys sys sys
CLEANFILES =
@@ -7223,27 +7886,29 @@ AM_CPPFLAGS = \
LDADD = libtests.a ../lib/libunistring.la libtests.a ../lib/libunistring.la libtests.a $(LIBTESTS_LIBDEPS)
libtests_a_SOURCES = $(am__append_1) basename-lgpl.c binary-io.h \
- binary-io.c $(am__append_2) $(am__append_3) cloexec.c \
- $(am__append_4) $(am__append_5) $(am__append_6) \
- $(am__append_7) exitfail.c $(am__append_8) fd-hook.c \
- $(am__append_9) $(am__append_10) $(am__append_11) \
+ binary-io.c $(am__append_2) btoc32.c $(am__append_3) \
+ $(am__append_4) c32tob.c cloexec.c $(am__append_5) \
+ $(am__append_6) $(am__append_7) $(am__append_8) exitfail.c \
+ $(am__append_9) fd-hook.c $(am__append_10) $(am__append_11) \
$(am__append_12) $(am__append_13) $(am__append_14) \
- getprogname.h getprogname.c gettext.h $(am__append_15) \
- ialloc.c $(am__append_16) $(am__append_17) $(am__append_18) \
- $(am__append_19) $(am__append_20) $(am__append_21) \
- $(am__append_22) $(am__append_23) $(am__append_24) \
- $(am__append_25) $(am__append_26) $(am__append_27) \
- $(am__append_28) $(am__append_29) $(am__append_30) \
- $(am__append_31) $(am__append_32) $(am__append_33) \
- $(am__append_34) $(am__append_35) $(am__append_36) \
- $(am__append_37) $(am__append_38) $(am__append_39) \
- $(am__append_40) $(am__append_41) sockets.h sockets.c \
- $(am__append_42) stat-time.c $(am__append_43) $(am__append_44) \
- $(am__append_45) $(am__append_46) $(am__append_47) \
- sys_socket.c glthread/thread.h glthread/thread.c \
- $(am__append_52) $(am__append_53) $(am__append_54) \
- $(am__append_55) $(am__append_56) $(am__append_57) \
- $(am__append_58) xmalloc.c xalloc-die.c glthread/yield.h
+ $(am__append_15) $(am__append_16) gettext.h $(am__append_17) \
+ ialloc.c $(am__append_18) $(am__append_19) $(am__append_20) \
+ $(am__append_21) $(am__append_22) $(am__append_23) \
+ $(am__append_24) $(am__append_25) nan.h $(am__append_26) \
+ $(am__append_27) $(am__append_28) $(am__append_29) \
+ $(am__append_30) $(am__append_31) $(am__append_32) \
+ $(am__append_33) $(am__append_34) $(am__append_35) \
+ $(am__append_36) $(am__append_37) same-inode.h same-inode.c \
+ $(am__append_38) $(am__append_39) $(am__append_40) \
+ $(am__append_41) $(am__append_42) signed-nan.h signed-snan.h \
+ $(am__append_43) $(am__append_44) snan.h $(am__append_45) \
+ sockets.h sockets.c $(am__append_46) stat-time.c \
+ $(am__append_47) $(am__append_48) $(am__append_49) \
+ $(am__append_50) $(am__append_51) sys_socket.c \
+ glthread/thread.h glthread/thread.c $(am__append_52) \
+ $(am__append_57) $(am__append_58) $(am__append_59) \
+ $(am__append_60) $(am__append_61) $(am__append_62) \
+ $(am__append_63) xmalloc.c xalloc-die.c glthread/yield.h
libtests_a_LIBADD = $(gltests_LIBOBJS) @ALLOCA@
libtests_a_DEPENDENCIES = $(gltests_LIBOBJS) @ALLOCA@
EXTRA_libtests_a_SOURCES = alloca.c calloc.c calloc.c stat-w32.c \
@@ -7251,11 +7916,28 @@ EXTRA_libtests_a_SOURCES = alloca.c calloc.c calloc.c stat-w32.c \
AM_LIBTOOLFLAGS = --preserve-dup-deps
test_accept_LDADD = $(LDADD) @LIBSOCKET@
test_bind_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
-test_btowc_LDADD = $(LDADD) $(LIB_SETLOCALE)
-test_c_ctype_LDADD = $(LDADD) $(LIB_SETLOCALE)
-test_c_strcasecmp_LDADD = $(LDADD) $(LIB_SETLOCALE)
-test_c_strncasecmp_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_btoc32_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(LIBC32CONV)
+test_btowc_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_c_ctype_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_c_strcasecmp_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_c_strncasecmp_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_c32isalnum_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isalpha_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isblank_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32iscntrl_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isgraph_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32islower_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isprint_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32ispunct_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isspace_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isupper_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32isxdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32rtomb_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(LIBC32CONV)
+test_c32tolower_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBUNISTRING) $(LIBC32CONV)
+test_c32width_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) $(LIBC32CONV)
test_connect_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
+test_error_LDADD = $(LDADD) $(LIBINTL)
test_frexp_nolibm_SOURCES = test-frexp.c randomd.c
test_frexpl_nolibm_SOURCES = test-frexpl.c randoml.c
@@ -7279,36 +7961,39 @@ GPERF = gperf
V_GPERF = $(V_GPERF_@AM_V@)
V_GPERF_ = $(V_GPERF_@AM_DEFAULT_V@)
V_GPERF_0 = @echo " GPERF " $@;
-test_hard_locale_LDADD = $(LDADD) $(LIB_SETLOCALE) @LIB_HARD_LOCALE@
+test_hard_locale_LDADD = $(LDADD) $(SETLOCALE_LIB) @HARD_LOCALE_LIB@
current_locale_SOURCES = locale.c
test_iconv_LDADD = $(LDADD) @LIBICONV@
test_inet_pton_LDADD = $(LDADD) @INET_PTON_LIB@
-test_iswdigit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
-test_iswxdigit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
+test_iswdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
+test_iswpunct_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
+test_iswxdigit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
test_listen_LDADD = $(LDADD) @LIBSOCKET@
-test_localcharset_LDADD = $(LDADD) $(LIB_SETLOCALE)
-test_localename_LDADD = $(LDADD) $(LIB_SETLOCALE) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_localcharset_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_localename_LDADD = $(LDADD) $(SETLOCALE_LIB) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
test_rwlock1_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@
test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ @LIB_SEMAPHORE@
test_once1_SOURCES = test-once.c
test_once1_LDADD = $(LDADD) @LIBTHREAD@
test_once2_SOURCES = test-once.c
test_once2_LDADD = $(LDADD) @LIBMULTITHREAD@
-test_mbrtowc_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
-test_mbsinit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
-test_nanosleep_LDADD = $(LDADD) $(LIB_NANOSLEEP)
-test_pselect_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ @LIB_PTHREAD_SIGMASK@ $(INET_PTON_LIB)
+test_mbrtoc32_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBC32CONV)
+test_mbrtowc_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
+test_mbsinit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
+test_nanosleep_LDADD = $(LDADD) $(NANOSLEEP_LIB)
+test_pselect_LDADD = $(LDADD) @SELECT_LIB@ @LIBSOCKET@ @PTHREAD_SIGMASK_LIB@ $(INET_PTON_LIB)
test_pthread_thread_LDADD = $(LDADD) @LIBPMULTITHREAD@
-test_pthread_sigmask1_LDADD = $(LDADD) @LIB_PTHREAD_SIGMASK@
-test_pthread_sigmask2_LDADD = $(LDADD) @LIB_PTHREAD_SIGMASK@ @LIBMULTITHREAD@
-test_select_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ $(INET_PTON_LIB)
-test_select_fd_LDADD = $(LDADD) @LIB_SELECT@
-test_select_stdin_LDADD = $(LDADD) @LIB_SELECT@
-test_setlocale_null_LDADD = $(LDADD) @LIB_SETLOCALE_NULL@
-test_setlocale_null_mt_one_LDADD = $(LDADD) @LIB_SETLOCALE_NULL@ $(LIBMULTITHREAD) $(LIB_NANOSLEEP)
-test_setlocale_null_mt_all_LDADD = $(LDADD) @LIB_SETLOCALE_NULL@ $(LIBMULTITHREAD) $(LIB_NANOSLEEP)
-test_setlocale1_LDADD = $(LDADD) @LIB_SETLOCALE@
-test_setlocale2_LDADD = $(LDADD) @LIB_SETLOCALE@
+test_pthread_sigmask1_LDADD = $(LDADD) @PTHREAD_SIGMASK_LIB@
+test_pthread_sigmask2_LDADD = $(LDADD) @PTHREAD_SIGMASK_LIB@ @LIBMULTITHREAD@
+test_random_mt_LDADD = $(LDADD) $(LIBINTL) $(LIBMULTITHREAD) $(YIELD_LIB)
+test_select_LDADD = $(LDADD) @SELECT_LIB@ @LIBSOCKET@ $(INET_PTON_LIB)
+test_select_fd_LDADD = $(LDADD) @SELECT_LIB@
+test_select_stdin_LDADD = $(LDADD) @SELECT_LIB@
+test_setlocale_null_LDADD = $(LDADD) @SETLOCALE_NULL_LIB@
+test_setlocale_null_mt_one_LDADD = $(LDADD) @SETLOCALE_NULL_LIB@ $(LIBMULTITHREAD) $(NANOSLEEP_LIB)
+test_setlocale_null_mt_all_LDADD = $(LDADD) @SETLOCALE_NULL_LIB@ $(LIBMULTITHREAD) $(NANOSLEEP_LIB)
+test_setlocale1_LDADD = $(LDADD) @SETLOCALE_LIB@
+test_setlocale2_LDADD = $(LDADD) @SETLOCALE_LIB@
test_setsockopt_LDADD = $(LDADD) @LIBSOCKET@
# Because this Makefile snippet defines a variable used by other
@@ -7332,7 +8017,7 @@ CXXDEFS_H = $(srcdir)/c++defs.h
WARN_ON_USE_H = $(srcdir)/warn-on-use.h
test_sockets_LDADD = $(LDADD) @LIBSOCKET@
test_stat_LDADD = $(LDADD) $(LIBINTL)
-test_stat_time_LDADD = $(LDADD) $(LIB_NANOSLEEP)
+test_stat_time_LDADD = $(LDADD) $(NANOSLEEP_LIB)
test_striconveh_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_striconveha_SOURCES = test-striconveha.c iconvsupport.c
test_striconveha_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
@@ -7343,7 +8028,7 @@ test_cased_LDADD = $(LDADD) $(LIBUNISTRING)
test_ignorable_SOURCES = unicase/test-ignorable.c
test_ignorable_LDADD = $(LDADD) $(LIBUNISTRING)
test_locale_language_SOURCES = unicase/test-locale-language.c
-test_locale_language_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_locale_language_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
test_uc_tolower_SOURCES = unicase/test-uc_tolower.c
test_uc_tolower_LDADD = $(LDADD) $(LIBUNISTRING)
test_uc_totitle_SOURCES = unicase/test-uc_totitle.c
@@ -7417,9 +8102,9 @@ test_u8_totitle_LDADD = $(LDADD) $(LIBUNISTRING)
test_u8_toupper_SOURCES = unicase/test-u8-toupper.c
test_u8_toupper_LDADD = $(LDADD) $(LIBUNISTRING)
test_ulc_casecmp_SOURCES = unicase/test-ulc-casecmp.c
-test_ulc_casecmp_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_casecmp_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_ulc_casecoll_SOURCES = unicase/test-ulc-casecoll.c
-test_ulc_casecoll_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_casecoll_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u16_conv_from_enc_SOURCES = uniconv/test-u16-conv-from-enc.c iconvsupport.c
test_u16_conv_from_enc_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u16_conv_to_enc_SOURCES = uniconv/test-u16-conv-to-enc.c
@@ -7590,6 +8275,12 @@ test_decdigit_SOURCES = unictype/test-decdigit.c
test_decdigit_LDADD = $(LDADD) $(LIBUNISTRING)
test_digit_SOURCES = unictype/test-digit.c
test_digit_LDADD = $(LDADD) $(LIBUNISTRING)
+test_incb_byname_SOURCES = unictype/test-incb_byname.c
+test_incb_byname_LDADD = $(LDADD) $(LIBUNISTRING)
+test_incb_name_SOURCES = unictype/test-incb_name.c
+test_incb_name_LDADD = $(LDADD) $(LIBUNISTRING)
+test_incb_of_SOURCES = unictype/test-incb_of.c
+test_incb_of_LDADD = $(LDADD) $(LIBUNISTRING)
test_joininggroup_byname_SOURCES = unictype/test-joininggroup_byname.c
test_joininggroup_byname_LDADD = $(LDADD) $(LIBUNISTRING)
test_joininggroup_name_SOURCES = unictype/test-joininggroup_name.c
@@ -7704,6 +8395,10 @@ test_pr_hex_digit_SOURCES = unictype/test-pr_hex_digit.c
test_pr_hex_digit_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_hyphen_SOURCES = unictype/test-pr_hyphen.c
test_pr_hyphen_LDADD = $(LDADD) $(LIBUNISTRING)
+test_pr_id_compat_math_continue_SOURCES = unictype/test-pr_id_compat_math_continue.c
+test_pr_id_compat_math_continue_LDADD = $(LDADD) $(LIBUNISTRING)
+test_pr_id_compat_math_start_SOURCES = unictype/test-pr_id_compat_math_start.c
+test_pr_id_compat_math_start_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_id_continue_SOURCES = unictype/test-pr_id_continue.c
test_pr_id_continue_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_id_start_SOURCES = unictype/test-pr_id_start.c
@@ -7714,6 +8409,8 @@ test_pr_ids_binary_operator_SOURCES = unictype/test-pr_ids_binary_operator.c
test_pr_ids_binary_operator_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_ids_trinary_operator_SOURCES = unictype/test-pr_ids_trinary_operator.c
test_pr_ids_trinary_operator_LDADD = $(LDADD) $(LIBUNISTRING)
+test_pr_ids_unary_operator_SOURCES = unictype/test-pr_ids_unary_operator.c
+test_pr_ids_unary_operator_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_ignorable_control_SOURCES = unictype/test-pr_ignorable_control.c
test_pr_ignorable_control_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_iso_control_SOURCES = unictype/test-pr_iso_control.c
@@ -7760,6 +8457,8 @@ test_pr_pattern_syntax_SOURCES = unictype/test-pr_pattern_syntax.c
test_pr_pattern_syntax_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_pattern_white_space_SOURCES = unictype/test-pr_pattern_white_space.c
test_pr_pattern_white_space_LDADD = $(LDADD) $(LIBUNISTRING)
+test_pr_prepended_concatenation_mark_SOURCES = unictype/test-pr_prepended_concatenation_mark.c
+test_pr_prepended_concatenation_mark_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_private_use_SOURCES = unictype/test-pr_private_use.c
test_pr_private_use_LDADD = $(LDADD) $(LIBUNISTRING)
test_pr_punctuation_SOURCES = unictype/test-pr_punctuation.c
@@ -7833,7 +8532,7 @@ test_uc_grapheme_breaks_LDADD = $(LDADD) $(LIBUNISTRING)
test_uc_is_grapheme_break_SOURCES = unigbrk/test-uc-is-grapheme-break.c
test_uc_is_grapheme_break_LDADD = $(LDADD) $(LIBUNISTRING)
test_ulc_grapheme_breaks_SOURCES = unigbrk/test-ulc-grapheme-breaks.c
-test_ulc_grapheme_breaks_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_grapheme_breaks_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u16_possible_linebreaks_SOURCES = unilbrk/test-u16-possible-linebreaks.c
test_u16_possible_linebreaks_LDADD = $(LDADD) $(LIBUNISTRING)
test_u16_width_linebreaks_SOURCES = unilbrk/test-u16-width-linebreaks.c
@@ -7850,6 +8549,8 @@ test_ulc_possible_linebreaks_SOURCES = unilbrk/test-ulc-possible-linebreaks.c
test_ulc_possible_linebreaks_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_ulc_width_linebreaks_SOURCES = unilbrk/test-ulc-width-linebreaks.c
test_ulc_width_linebreaks_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
+test_u_version_SOURCES = unimetadata/test-u-version.c
+test_u_version_LDADD = $(LDADD) $(LIBUNISTRING)
@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@test_uninames_SOURCES = uniname/test-uninames.c
@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@test_uninames_LDADD = $(LDADD) @LIBINTL@
test_canonical_decomposition_SOURCES = uninorm/test-canonical-decomposition.c
@@ -7929,9 +8630,9 @@ test_u16_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u16_vasnprintf1_SOURCES = unistdio/test-u16-vasnprintf1.c
test_u16_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u16_vasnprintf2_SOURCES = unistdio/test-u16-vasnprintf2.c
-test_u16_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u16_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u16_vasnprintf3_SOURCES = unistdio/test-u16-vasnprintf3.c
-test_u16_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u16_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u16_vasprintf1_SOURCES = unistdio/test-u16-vasprintf1.c
test_u16_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u16_vsnprintf1_SOURCES = unistdio/test-u16-vsnprintf1.c
@@ -7943,9 +8644,9 @@ test_u32_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u32_vasnprintf1_SOURCES = unistdio/test-u32-vasnprintf1.c
test_u32_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u32_vasnprintf2_SOURCES = unistdio/test-u32-vasnprintf2.c
-test_u32_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u32_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u32_vasnprintf3_SOURCES = unistdio/test-u32-vasnprintf3.c
-test_u32_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u32_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u32_vasprintf1_SOURCES = unistdio/test-u32-vasprintf1.c
test_u32_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u32_vsnprintf1_SOURCES = unistdio/test-u32-vsnprintf1.c
@@ -7957,9 +8658,9 @@ test_u8_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u8_vasnprintf1_SOURCES = unistdio/test-u8-vasnprintf1.c
test_u8_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u8_vasnprintf2_SOURCES = unistdio/test-u8-vasnprintf2.c
-test_u8_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u8_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u8_vasnprintf3_SOURCES = unistdio/test-u8-vasnprintf3.c
-test_u8_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_u8_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u8_vasprintf1_SOURCES = unistdio/test-u8-vasprintf1.c
test_u8_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@
test_u8_vsnprintf1_SOURCES = unistdio/test-u8-vsnprintf1.c
@@ -7967,19 +8668,19 @@ test_u8_vsnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@
test_u8_vsprintf1_SOURCES = unistdio/test-u8-vsprintf1.c
test_u8_vsprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@
test_ulc_asnprintf1_SOURCES = unistdio/test-ulc-asnprintf1.c
-test_ulc_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_asnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vasnprintf1_SOURCES = unistdio/test-ulc-vasnprintf1.c
-test_ulc_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vasnprintf2_SOURCES = unistdio/test-ulc-vasnprintf2.c
-test_ulc_vasnprintf2_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasnprintf2_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vasnprintf3_SOURCES = unistdio/test-ulc-vasnprintf3.c
-test_ulc_vasnprintf3_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasnprintf3_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vasprintf1_SOURCES = unistdio/test-ulc-vasprintf1.c
-test_ulc_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vasprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vsnprintf1_SOURCES = unistdio/test-ulc-vsnprintf1.c
-test_ulc_vsnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vsnprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(MBRTOWC_LIB)
test_ulc_vsprintf1_SOURCES = unistdio/test-ulc-vsprintf1.c
-test_ulc_vsprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(LIB_MBRTOWC)
+test_ulc_vsprintf1_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ @LIBICONV@ $(MBRTOWC_LIB)
test_u16_check_SOURCES = unistr/test-u16-check.c
test_u16_check_LDADD = $(LDADD) $(LIBUNISTRING)
test_u16_chr_SOURCES = unistr/test-u16-chr.c
@@ -8006,6 +8707,8 @@ test_u16_move_SOURCES = unistr/test-u16-move.c
test_u16_move_LDADD = $(LDADD) $(LIBUNISTRING)
test_u16_next_SOURCES = unistr/test-u16-next.c
test_u16_next_LDADD = $(LDADD) $(LIBUNISTRING)
+test_u16_pcpy_SOURCES = unistr/test-u16-pcpy.c
+test_u16_pcpy_LDADD = $(LDADD) $(LIBUNISTRING)
test_u16_prev_SOURCES = unistr/test-u16-prev.c
test_u16_prev_LDADD = $(LDADD) $(LIBUNISTRING)
test_u16_set_SOURCES = unistr/test-u16-set.c
@@ -8076,6 +8779,8 @@ test_u32_move_SOURCES = unistr/test-u32-move.c
test_u32_move_LDADD = $(LDADD) $(LIBUNISTRING)
test_u32_next_SOURCES = unistr/test-u32-next.c
test_u32_next_LDADD = $(LDADD) $(LIBUNISTRING)
+test_u32_pcpy_SOURCES = unistr/test-u32-pcpy.c
+test_u32_pcpy_LDADD = $(LDADD) $(LIBUNISTRING)
test_u32_prev_SOURCES = unistr/test-u32-prev.c
test_u32_prev_LDADD = $(LDADD) $(LIBUNISTRING)
test_u32_set_SOURCES = unistr/test-u32-set.c
@@ -8146,6 +8851,8 @@ test_u8_move_SOURCES = unistr/test-u8-move.c
test_u8_move_LDADD = $(LDADD) $(LIBUNISTRING)
test_u8_next_SOURCES = unistr/test-u8-next.c
test_u8_next_LDADD = $(LDADD) $(LIBUNISTRING)
+test_u8_pcpy_SOURCES = unistr/test-u8-pcpy.c
+test_u8_pcpy_LDADD = $(LDADD) $(LIBUNISTRING)
test_u8_prev_SOURCES = unistr/test-u8-prev.c
test_u8_prev_LDADD = $(LDADD) $(LIBUNISTRING)
test_u8_set_SOURCES = unistr/test-u8-set.c
@@ -8199,7 +8906,7 @@ test_uc_wordbreaks_LDADD = $(LDADD) $(LIBUNISTRING)
test_u8_wordbreaks_SOURCES = uniwbrk/test-u8-wordbreaks.c
test_u8_wordbreaks_LDADD = $(LDADD) $(LIBUNISTRING)
test_ulc_wordbreaks_SOURCES = uniwbrk/test-ulc-wordbreaks.c
-test_ulc_wordbreaks_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING) @LIBICONV@
+test_ulc_wordbreaks_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING) @LIBICONV@
test_u16_strwidth_SOURCES = uniwidth/test-u16-strwidth.c
test_u16_strwidth_LDADD = $(LDADD) $(LIBUNISTRING)
test_u16_width_SOURCES = uniwidth/test-u16-width.c
@@ -8216,8 +8923,8 @@ test_uc_width_SOURCES = uniwidth/test-uc_width.c
test_uc_width_LDADD = $(LDADD) $(LIBUNISTRING)
test_uc_width2_SOURCES = uniwidth/test-uc_width2.c
test_uc_width2_LDADD = $(LDADD) $(LIBUNISTRING)
-test_wcrtomb_LDADD = $(LDADD) $(LIB_SETLOCALE)
-test_wcwidth_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBUNISTRING)
+test_wcrtomb_LDADD = $(LDADD) $(SETLOCALE_LIB)
+test_wcwidth_LDADD = $(LDADD) $(SETLOCALE_LIB) $(LIBUNISTRING)
test_xalloc_die_LDADD = $(LDADD) @LIBINTL@
# Ensure that ../lib/config.h is seen before ../config.h.
@@ -8310,6 +9017,10 @@ test-accept$(EXEEXT): $(test_accept_OBJECTS) $(test_accept_DEPENDENCIES) $(EXTRA
@rm -f test-accept$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_accept_OBJECTS) $(test_accept_LDADD) $(LIBS)
+test-alignasof$(EXEEXT): $(test_alignasof_OBJECTS) $(test_alignasof_DEPENDENCIES) $(EXTRA_test_alignasof_DEPENDENCIES)
+ @rm -f test-alignasof$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_alignasof_OBJECTS) $(test_alignasof_LDADD) $(LIBS)
+
test-alloca-opt$(EXEEXT): $(test_alloca_opt_OBJECTS) $(test_alloca_opt_DEPENDENCIES) $(EXTRA_test_alloca_opt_DEPENDENCIES)
@rm -f test-alloca-opt$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_alloca_opt_OBJECTS) $(test_alloca_opt_LDADD) $(LIBS)
@@ -8388,6 +9099,10 @@ test-block_test$(EXEEXT): $(test_block_test_OBJECTS) $(test_block_test_DEPENDENC
@rm -f test-block_test$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_block_test_OBJECTS) $(test_block_test_LDADD) $(LIBS)
+test-btoc32$(EXEEXT): $(test_btoc32_OBJECTS) $(test_btoc32_DEPENDENCIES) $(EXTRA_test_btoc32_DEPENDENCIES)
+ @rm -f test-btoc32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_btoc32_OBJECTS) $(test_btoc32_LDADD) $(LIBS)
+
test-btowc$(EXEEXT): $(test_btowc_OBJECTS) $(test_btowc_DEPENDENCIES) $(EXTRA_test_btowc_DEPENDENCIES)
@rm -f test-btowc$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_btowc_OBJECTS) $(test_btowc_LDADD) $(LIBS)
@@ -8404,6 +9119,70 @@ test-c-strncasecmp$(EXEEXT): $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_
@rm -f test-c-strncasecmp$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_LDADD) $(LIBS)
+test-c32isalnum$(EXEEXT): $(test_c32isalnum_OBJECTS) $(test_c32isalnum_DEPENDENCIES) $(EXTRA_test_c32isalnum_DEPENDENCIES)
+ @rm -f test-c32isalnum$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isalnum_OBJECTS) $(test_c32isalnum_LDADD) $(LIBS)
+
+test-c32isalpha$(EXEEXT): $(test_c32isalpha_OBJECTS) $(test_c32isalpha_DEPENDENCIES) $(EXTRA_test_c32isalpha_DEPENDENCIES)
+ @rm -f test-c32isalpha$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isalpha_OBJECTS) $(test_c32isalpha_LDADD) $(LIBS)
+
+test-c32isblank$(EXEEXT): $(test_c32isblank_OBJECTS) $(test_c32isblank_DEPENDENCIES) $(EXTRA_test_c32isblank_DEPENDENCIES)
+ @rm -f test-c32isblank$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isblank_OBJECTS) $(test_c32isblank_LDADD) $(LIBS)
+
+test-c32iscntrl$(EXEEXT): $(test_c32iscntrl_OBJECTS) $(test_c32iscntrl_DEPENDENCIES) $(EXTRA_test_c32iscntrl_DEPENDENCIES)
+ @rm -f test-c32iscntrl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32iscntrl_OBJECTS) $(test_c32iscntrl_LDADD) $(LIBS)
+
+test-c32isdigit$(EXEEXT): $(test_c32isdigit_OBJECTS) $(test_c32isdigit_DEPENDENCIES) $(EXTRA_test_c32isdigit_DEPENDENCIES)
+ @rm -f test-c32isdigit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isdigit_OBJECTS) $(test_c32isdigit_LDADD) $(LIBS)
+
+test-c32isgraph$(EXEEXT): $(test_c32isgraph_OBJECTS) $(test_c32isgraph_DEPENDENCIES) $(EXTRA_test_c32isgraph_DEPENDENCIES)
+ @rm -f test-c32isgraph$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isgraph_OBJECTS) $(test_c32isgraph_LDADD) $(LIBS)
+
+test-c32islower$(EXEEXT): $(test_c32islower_OBJECTS) $(test_c32islower_DEPENDENCIES) $(EXTRA_test_c32islower_DEPENDENCIES)
+ @rm -f test-c32islower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32islower_OBJECTS) $(test_c32islower_LDADD) $(LIBS)
+
+test-c32isprint$(EXEEXT): $(test_c32isprint_OBJECTS) $(test_c32isprint_DEPENDENCIES) $(EXTRA_test_c32isprint_DEPENDENCIES)
+ @rm -f test-c32isprint$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isprint_OBJECTS) $(test_c32isprint_LDADD) $(LIBS)
+
+test-c32ispunct$(EXEEXT): $(test_c32ispunct_OBJECTS) $(test_c32ispunct_DEPENDENCIES) $(EXTRA_test_c32ispunct_DEPENDENCIES)
+ @rm -f test-c32ispunct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32ispunct_OBJECTS) $(test_c32ispunct_LDADD) $(LIBS)
+
+test-c32isspace$(EXEEXT): $(test_c32isspace_OBJECTS) $(test_c32isspace_DEPENDENCIES) $(EXTRA_test_c32isspace_DEPENDENCIES)
+ @rm -f test-c32isspace$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isspace_OBJECTS) $(test_c32isspace_LDADD) $(LIBS)
+
+test-c32isupper$(EXEEXT): $(test_c32isupper_OBJECTS) $(test_c32isupper_DEPENDENCIES) $(EXTRA_test_c32isupper_DEPENDENCIES)
+ @rm -f test-c32isupper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isupper_OBJECTS) $(test_c32isupper_LDADD) $(LIBS)
+
+test-c32isxdigit$(EXEEXT): $(test_c32isxdigit_OBJECTS) $(test_c32isxdigit_DEPENDENCIES) $(EXTRA_test_c32isxdigit_DEPENDENCIES)
+ @rm -f test-c32isxdigit$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32isxdigit_OBJECTS) $(test_c32isxdigit_LDADD) $(LIBS)
+
+test-c32rtomb$(EXEEXT): $(test_c32rtomb_OBJECTS) $(test_c32rtomb_DEPENDENCIES) $(EXTRA_test_c32rtomb_DEPENDENCIES)
+ @rm -f test-c32rtomb$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32rtomb_OBJECTS) $(test_c32rtomb_LDADD) $(LIBS)
+
+test-c32rtomb-w32$(EXEEXT): $(test_c32rtomb_w32_OBJECTS) $(test_c32rtomb_w32_DEPENDENCIES) $(EXTRA_test_c32rtomb_w32_DEPENDENCIES)
+ @rm -f test-c32rtomb-w32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32rtomb_w32_OBJECTS) $(test_c32rtomb_w32_LDADD) $(LIBS)
+
+test-c32tolower$(EXEEXT): $(test_c32tolower_OBJECTS) $(test_c32tolower_DEPENDENCIES) $(EXTRA_test_c32tolower_DEPENDENCIES)
+ @rm -f test-c32tolower$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32tolower_OBJECTS) $(test_c32tolower_LDADD) $(LIBS)
+
+test-c32width$(EXEEXT): $(test_c32width_OBJECTS) $(test_c32width_DEPENDENCIES) $(EXTRA_test_c32width_DEPENDENCIES)
+ @rm -f test-c32width$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_c32width_OBJECTS) $(test_c32width_LDADD) $(LIBS)
+
test-calloc-gnu$(EXEEXT): $(test_calloc_gnu_OBJECTS) $(test_calloc_gnu_DEPENDENCIES) $(EXTRA_test_calloc_gnu_DEPENDENCIES)
@rm -f test-calloc-gnu$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_calloc_gnu_OBJECTS) $(test_calloc_gnu_LDADD) $(LIBS)
@@ -8874,6 +9653,10 @@ test-errno$(EXEEXT): $(test_errno_OBJECTS) $(test_errno_DEPENDENCIES) $(EXTRA_te
@rm -f test-errno$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS)
+test-error$(EXEEXT): $(test_error_OBJECTS) $(test_error_DEPENDENCIES) $(EXTRA_test_error_DEPENDENCIES)
+ @rm -f test-error$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_error_OBJECTS) $(test_error_LDADD) $(LIBS)
+
test-fcntl$(EXEEXT): $(test_fcntl_OBJECTS) $(test_fcntl_DEPENDENCIES) $(EXTRA_test_fcntl_DEPENDENCIES)
@rm -f test-fcntl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_fcntl_OBJECTS) $(test_fcntl_LDADD) $(LIBS)
@@ -8967,6 +9750,24 @@ test-ignorable$(EXEEXT): $(test_ignorable_OBJECTS) $(test_ignorable_DEPENDENCIES
test-ignore-value$(EXEEXT): $(test_ignore_value_OBJECTS) $(test_ignore_value_DEPENDENCIES) $(EXTRA_test_ignore_value_DEPENDENCIES)
@rm -f test-ignore-value$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_ignore_value_OBJECTS) $(test_ignore_value_LDADD) $(LIBS)
+unictype/test-incb_byname.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-incb_byname$(EXEEXT): $(test_incb_byname_OBJECTS) $(test_incb_byname_DEPENDENCIES) $(EXTRA_test_incb_byname_DEPENDENCIES)
+ @rm -f test-incb_byname$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_incb_byname_OBJECTS) $(test_incb_byname_LDADD) $(LIBS)
+unictype/test-incb_name.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-incb_name$(EXEEXT): $(test_incb_name_OBJECTS) $(test_incb_name_DEPENDENCIES) $(EXTRA_test_incb_name_DEPENDENCIES)
+ @rm -f test-incb_name$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_incb_name_OBJECTS) $(test_incb_name_LDADD) $(LIBS)
+unictype/test-incb_of.$(OBJEXT): unictype/$(am__dirstamp) \
+ unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-incb_of$(EXEEXT): $(test_incb_of_OBJECTS) $(test_incb_of_DEPENDENCIES) $(EXTRA_test_incb_of_DEPENDENCIES)
+ @rm -f test-incb_of$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_incb_of_OBJECTS) $(test_incb_of_LDADD) $(LIBS)
test-inet_pton$(EXEEXT): $(test_inet_pton_OBJECTS) $(test_inet_pton_DEPENDENCIES) $(EXTRA_test_inet_pton_DEPENDENCIES)
@rm -f test-inet_pton$(EXEEXT)
@@ -9008,6 +9809,10 @@ test-iswdigit$(EXEEXT): $(test_iswdigit_OBJECTS) $(test_iswdigit_DEPENDENCIES) $
@rm -f test-iswdigit$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_iswdigit_OBJECTS) $(test_iswdigit_LDADD) $(LIBS)
+test-iswpunct$(EXEEXT): $(test_iswpunct_OBJECTS) $(test_iswpunct_DEPENDENCIES) $(EXTRA_test_iswpunct_DEPENDENCIES)
+ @rm -f test-iswpunct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_iswpunct_OBJECTS) $(test_iswpunct_LDADD) $(LIBS)
+
test-iswxdigit$(EXEEXT): $(test_iswxdigit_OBJECTS) $(test_iswxdigit_DEPENDENCIES) $(EXTRA_test_iswxdigit_DEPENDENCIES)
@rm -f test-iswxdigit$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_iswxdigit_OBJECTS) $(test_iswxdigit_LDADD) $(LIBS)
@@ -9058,6 +9863,10 @@ test-langinfo$(EXEEXT): $(test_langinfo_OBJECTS) $(test_langinfo_DEPENDENCIES) $
@rm -f test-langinfo$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_langinfo_OBJECTS) $(test_langinfo_LDADD) $(LIBS)
+test-largefile$(EXEEXT): $(test_largefile_OBJECTS) $(test_largefile_DEPENDENCIES) $(EXTRA_test_largefile_DEPENDENCIES)
+ @rm -f test-largefile$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_largefile_OBJECTS) $(test_largefile_LDADD) $(LIBS)
+
test-limits-h$(EXEEXT): $(test_limits_h_OBJECTS) $(test_limits_h_DEPENDENCIES) $(EXTRA_test_limits_h_DEPENDENCIES)
@rm -f test-limits-h$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_limits_h_OBJECTS) $(test_limits_h_LDADD) $(LIBS)
@@ -9104,6 +9913,14 @@ test-math$(EXEEXT): $(test_math_OBJECTS) $(test_math_DEPENDENCIES) $(EXTRA_test_
@rm -f test-math$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_math_OBJECTS) $(test_math_LDADD) $(LIBS)
+test-mbrtoc32$(EXEEXT): $(test_mbrtoc32_OBJECTS) $(test_mbrtoc32_DEPENDENCIES) $(EXTRA_test_mbrtoc32_DEPENDENCIES)
+ @rm -f test-mbrtoc32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_mbrtoc32_OBJECTS) $(test_mbrtoc32_LDADD) $(LIBS)
+
+test-mbrtoc32-w32$(EXEEXT): $(test_mbrtoc32_w32_OBJECTS) $(test_mbrtoc32_w32_DEPENDENCIES) $(EXTRA_test_mbrtoc32_w32_DEPENDENCIES)
+ @rm -f test-mbrtoc32-w32$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_mbrtoc32_w32_OBJECTS) $(test_mbrtoc32_w32_LDADD) $(LIBS)
+
test-mbrtowc$(EXEEXT): $(test_mbrtowc_OBJECTS) $(test_mbrtowc_DEPENDENCIES) $(EXTRA_test_mbrtowc_DEPENDENCIES)
@rm -f test-mbrtowc$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_mbrtowc_OBJECTS) $(test_mbrtowc_LDADD) $(LIBS)
@@ -9503,6 +10320,18 @@ unictype/test-pr_hyphen.$(OBJEXT): unictype/$(am__dirstamp) \
test-pr_hyphen$(EXEEXT): $(test_pr_hyphen_OBJECTS) $(test_pr_hyphen_DEPENDENCIES) $(EXTRA_test_pr_hyphen_DEPENDENCIES)
@rm -f test-pr_hyphen$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_pr_hyphen_OBJECTS) $(test_pr_hyphen_LDADD) $(LIBS)
+unictype/test-pr_id_compat_math_continue.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-pr_id_compat_math_continue$(EXEEXT): $(test_pr_id_compat_math_continue_OBJECTS) $(test_pr_id_compat_math_continue_DEPENDENCIES) $(EXTRA_test_pr_id_compat_math_continue_DEPENDENCIES)
+ @rm -f test-pr_id_compat_math_continue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_id_compat_math_continue_OBJECTS) $(test_pr_id_compat_math_continue_LDADD) $(LIBS)
+unictype/test-pr_id_compat_math_start.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-pr_id_compat_math_start$(EXEEXT): $(test_pr_id_compat_math_start_OBJECTS) $(test_pr_id_compat_math_start_DEPENDENCIES) $(EXTRA_test_pr_id_compat_math_start_DEPENDENCIES)
+ @rm -f test-pr_id_compat_math_start$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_id_compat_math_start_OBJECTS) $(test_pr_id_compat_math_start_LDADD) $(LIBS)
unictype/test-pr_id_continue.$(OBJEXT): unictype/$(am__dirstamp) \
unictype/$(DEPDIR)/$(am__dirstamp)
@@ -9533,6 +10362,12 @@ unictype/test-pr_ids_trinary_operator.$(OBJEXT): \
test-pr_ids_trinary_operator$(EXEEXT): $(test_pr_ids_trinary_operator_OBJECTS) $(test_pr_ids_trinary_operator_DEPENDENCIES) $(EXTRA_test_pr_ids_trinary_operator_DEPENDENCIES)
@rm -f test-pr_ids_trinary_operator$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_pr_ids_trinary_operator_OBJECTS) $(test_pr_ids_trinary_operator_LDADD) $(LIBS)
+unictype/test-pr_ids_unary_operator.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-pr_ids_unary_operator$(EXEEXT): $(test_pr_ids_unary_operator_OBJECTS) $(test_pr_ids_unary_operator_DEPENDENCIES) $(EXTRA_test_pr_ids_unary_operator_DEPENDENCIES)
+ @rm -f test-pr_ids_unary_operator$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_ids_unary_operator_OBJECTS) $(test_pr_ids_unary_operator_LDADD) $(LIBS)
unictype/test-pr_ignorable_control.$(OBJEXT): \
unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
@@ -9671,6 +10506,12 @@ unictype/test-pr_pattern_white_space.$(OBJEXT): \
test-pr_pattern_white_space$(EXEEXT): $(test_pr_pattern_white_space_OBJECTS) $(test_pr_pattern_white_space_DEPENDENCIES) $(EXTRA_test_pr_pattern_white_space_DEPENDENCIES)
@rm -f test-pr_pattern_white_space$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_pr_pattern_white_space_OBJECTS) $(test_pr_pattern_white_space_LDADD) $(LIBS)
+unictype/test-pr_prepended_concatenation_mark.$(OBJEXT): \
+ unictype/$(am__dirstamp) unictype/$(DEPDIR)/$(am__dirstamp)
+
+test-pr_prepended_concatenation_mark$(EXEEXT): $(test_pr_prepended_concatenation_mark_OBJECTS) $(test_pr_prepended_concatenation_mark_DEPENDENCIES) $(EXTRA_test_pr_prepended_concatenation_mark_DEPENDENCIES)
+ @rm -f test-pr_prepended_concatenation_mark$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pr_prepended_concatenation_mark_OBJECTS) $(test_pr_prepended_concatenation_mark_LDADD) $(LIBS)
unictype/test-pr_private_use.$(OBJEXT): unictype/$(am__dirstamp) \
unictype/$(DEPDIR)/$(am__dirstamp)
@@ -9818,6 +10659,18 @@ test-raise$(EXEEXT): $(test_raise_OBJECTS) $(test_raise_DEPENDENCIES) $(EXTRA_te
@rm -f test-raise$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_raise_OBJECTS) $(test_raise_LDADD) $(LIBS)
+test-random$(EXEEXT): $(test_random_OBJECTS) $(test_random_DEPENDENCIES) $(EXTRA_test_random_DEPENDENCIES)
+ @rm -f test-random$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_random_OBJECTS) $(test_random_LDADD) $(LIBS)
+
+test-random-mt$(EXEEXT): $(test_random_mt_OBJECTS) $(test_random_mt_DEPENDENCIES) $(EXTRA_test_random_mt_DEPENDENCIES)
+ @rm -f test-random-mt$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_random_mt_OBJECTS) $(test_random_mt_LDADD) $(LIBS)
+
+test-random_r$(EXEEXT): $(test_random_r_OBJECTS) $(test_random_r_DEPENDENCIES) $(EXTRA_test_random_r_DEPENDENCIES)
+ @rm -f test-random_r$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_random_r_OBJECTS) $(test_random_r_LDADD) $(LIBS)
+
test-realloc-gnu$(EXEEXT): $(test_realloc_gnu_OBJECTS) $(test_realloc_gnu_DEPENDENCIES) $(EXTRA_test_realloc_gnu_DEPENDENCIES)
@rm -f test-realloc-gnu$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_realloc_gnu_OBJECTS) $(test_realloc_gnu_LDADD) $(LIBS)
@@ -9876,6 +10729,10 @@ test-setlocale_null-mt-one$(EXEEXT): $(test_setlocale_null_mt_one_OBJECTS) $(tes
@rm -f test-setlocale_null-mt-one$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_setlocale_null_mt_one_OBJECTS) $(test_setlocale_null_mt_one_LDADD) $(LIBS)
+test-setlocale_null-unlocked$(EXEEXT): $(test_setlocale_null_unlocked_OBJECTS) $(test_setlocale_null_unlocked_DEPENDENCIES) $(EXTRA_test_setlocale_null_unlocked_DEPENDENCIES)
+ @rm -f test-setlocale_null-unlocked$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_setlocale_null_unlocked_OBJECTS) $(test_setlocale_null_unlocked_LDADD) $(LIBS)
+
test-setsockopt$(EXEEXT): $(test_setsockopt_OBJECTS) $(test_setsockopt_DEPENDENCIES) $(EXTRA_test_setsockopt_DEPENDENCIES)
@rm -f test-setsockopt$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_setsockopt_OBJECTS) $(test_setsockopt_LDADD) $(LIBS)
@@ -9908,10 +10765,6 @@ test-stat-time$(EXEEXT): $(test_stat_time_OBJECTS) $(test_stat_time_DEPENDENCIES
@rm -f test-stat-time$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_stat_time_OBJECTS) $(test_stat_time_LDADD) $(LIBS)
-test-stdalign$(EXEEXT): $(test_stdalign_OBJECTS) $(test_stdalign_DEPENDENCIES) $(EXTRA_test_stdalign_DEPENDENCIES)
- @rm -f test-stdalign$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(test_stdalign_OBJECTS) $(test_stdalign_LDADD) $(LIBS)
-
test-stdbool$(EXEEXT): $(test_stdbool_OBJECTS) $(test_stdbool_DEPENDENCIES) $(EXTRA_test_stdbool_DEPENDENCIES)
@rm -f test-stdbool$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_stdbool_OBJECTS) $(test_stdbool_LDADD) $(LIBS)
@@ -10031,6 +10884,22 @@ test-thread_self$(EXEEXT): $(test_thread_self_OBJECTS) $(test_thread_self_DEPEND
test-time$(EXEEXT): $(test_time_OBJECTS) $(test_time_DEPENDENCIES) $(EXTRA_test_time_DEPENDENCIES)
@rm -f test-time$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_time_OBJECTS) $(test_time_LDADD) $(LIBS)
+
+test-time-h$(EXEEXT): $(test_time_h_OBJECTS) $(test_time_h_DEPENDENCIES) $(EXTRA_test_time_h_DEPENDENCIES)
+ @rm -f test-time-h$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_time_h_OBJECTS) $(test_time_h_LDADD) $(LIBS)
+unimetadata/$(am__dirstamp):
+ @$(MKDIR_P) unimetadata
+ @: > unimetadata/$(am__dirstamp)
+unimetadata/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unimetadata/$(DEPDIR)
+ @: > unimetadata/$(DEPDIR)/$(am__dirstamp)
+unimetadata/test-u-version.$(OBJEXT): unimetadata/$(am__dirstamp) \
+ unimetadata/$(DEPDIR)/$(am__dirstamp)
+
+test-u-version$(EXEEXT): $(test_u_version_OBJECTS) $(test_u_version_DEPENDENCIES) $(EXTRA_test_u_version_DEPENDENCIES)
+ @rm -f test-u-version$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u_version_OBJECTS) $(test_u_version_LDADD) $(LIBS)
unistdio/$(am__dirstamp):
@$(MKDIR_P) unistdio
@: > unistdio/$(am__dirstamp)
@@ -10229,6 +11098,12 @@ uninorm/test-u16-normcoll.$(OBJEXT): uninorm/$(am__dirstamp) \
test-u16-normcoll$(EXEEXT): $(test_u16_normcoll_OBJECTS) $(test_u16_normcoll_DEPENDENCIES) $(EXTRA_test_u16_normcoll_DEPENDENCIES)
@rm -f test-u16-normcoll$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_u16_normcoll_OBJECTS) $(test_u16_normcoll_LDADD) $(LIBS)
+unistr/test-u16-pcpy.$(OBJEXT): unistr/$(am__dirstamp) \
+ unistr/$(DEPDIR)/$(am__dirstamp)
+
+test-u16-pcpy$(EXEEXT): $(test_u16_pcpy_OBJECTS) $(test_u16_pcpy_DEPENDENCIES) $(EXTRA_test_u16_pcpy_DEPENDENCIES)
+ @rm -f test-u16-pcpy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u16_pcpy_OBJECTS) $(test_u16_pcpy_LDADD) $(LIBS)
unilbrk/$(am__dirstamp):
@$(MKDIR_P) unilbrk
@: > unilbrk/$(am__dirstamp)
@@ -10675,6 +11550,12 @@ uninorm/test-u32-normcoll.$(OBJEXT): uninorm/$(am__dirstamp) \
test-u32-normcoll$(EXEEXT): $(test_u32_normcoll_OBJECTS) $(test_u32_normcoll_DEPENDENCIES) $(EXTRA_test_u32_normcoll_DEPENDENCIES)
@rm -f test-u32-normcoll$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_u32_normcoll_OBJECTS) $(test_u32_normcoll_LDADD) $(LIBS)
+unistr/test-u32-pcpy.$(OBJEXT): unistr/$(am__dirstamp) \
+ unistr/$(DEPDIR)/$(am__dirstamp)
+
+test-u32-pcpy$(EXEEXT): $(test_u32_pcpy_OBJECTS) $(test_u32_pcpy_DEPENDENCIES) $(EXTRA_test_u32_pcpy_DEPENDENCIES)
+ @rm -f test-u32-pcpy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u32_pcpy_OBJECTS) $(test_u32_pcpy_LDADD) $(LIBS)
unilbrk/test-u32-possible-linebreaks.$(OBJEXT): \
unilbrk/$(am__dirstamp) unilbrk/$(DEPDIR)/$(am__dirstamp)
@@ -11077,6 +11958,12 @@ uninorm/test-u8-normcoll.$(OBJEXT): uninorm/$(am__dirstamp) \
test-u8-normcoll$(EXEEXT): $(test_u8_normcoll_OBJECTS) $(test_u8_normcoll_DEPENDENCIES) $(EXTRA_test_u8_normcoll_DEPENDENCIES)
@rm -f test-u8-normcoll$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_u8_normcoll_OBJECTS) $(test_u8_normcoll_LDADD) $(LIBS)
+unistr/test-u8-pcpy.$(OBJEXT): unistr/$(am__dirstamp) \
+ unistr/$(DEPDIR)/$(am__dirstamp)
+
+test-u8-pcpy$(EXEEXT): $(test_u8_pcpy_OBJECTS) $(test_u8_pcpy_DEPENDENCIES) $(EXTRA_test_u8_pcpy_DEPENDENCIES)
+ @rm -f test-u8-pcpy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_u8_pcpy_OBJECTS) $(test_u8_pcpy_LDADD) $(LIBS)
unilbrk/test-u8-possible-linebreaks.$(OBJEXT): \
unilbrk/$(am__dirstamp) unilbrk/$(DEPDIR)/$(am__dirstamp)
@@ -11359,6 +12246,10 @@ uniwidth/test-uc_width2.$(OBJEXT): uniwidth/$(am__dirstamp) \
test-uc_width2$(EXEEXT): $(test_uc_width2_OBJECTS) $(test_uc_width2_DEPENDENCIES) $(EXTRA_test_uc_width2_DEPENDENCIES)
@rm -f test-uc_width2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_uc_width2_OBJECTS) $(test_uc_width2_LDADD) $(LIBS)
+
+test-uchar$(EXEEXT): $(test_uchar_OBJECTS) $(test_uchar_DEPENDENCIES) $(EXTRA_test_uchar_DEPENDENCIES)
+ @rm -f test-uchar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_uchar_OBJECTS) $(test_uchar_LDADD) $(LIBS)
unistdio/test-ulc-asnprintf1.$(OBJEXT): unistdio/$(am__dirstamp) \
unistdio/$(DEPDIR)/$(am__dirstamp)
@@ -11508,6 +12399,7 @@ mostlyclean-compile:
-rm -f unictype/*.$(OBJEXT)
-rm -f unigbrk/*.$(OBJEXT)
-rm -f unilbrk/*.$(OBJEXT)
+ -rm -f unimetadata/*.$(OBJEXT)
-rm -f uniname/*.$(OBJEXT)
-rm -f uninorm/*.$(OBJEXT)
-rm -f unistdio/*.$(OBJEXT)
@@ -11523,7 +12415,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary-io.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bind.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btoc32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btowc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c32rtomb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c32tob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cloexec.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@ # am--include-marker
@@ -11562,10 +12457,13 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pthread_sigmask.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putenv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random_r.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randomd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randoml.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reallocarray.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/same-inode.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setenv.Po@am__quote@ # am--include-marker
@@ -11586,16 +12484,34 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sys_socket.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-accept.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-alignasof.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-alloca-opt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-arpa_inet.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-array-mergesort.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-assert.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-binary-io.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-bind.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-btoc32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-btowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-ctype.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasecmp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strncasecmp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isalnum.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isalpha.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isblank.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32iscntrl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isdigit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isgraph.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32islower.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isprint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32ispunct.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isspace.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isupper.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32isxdigit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32rtomb-w32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32rtomb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32tolower.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c32width.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-calloc-gnu.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-cloexec.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-close.Po@am__quote@ # am--include-marker
@@ -11604,6 +12520,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-environ.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-error.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl-h.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fdopen.Po@am__quote@ # am--include-marker
@@ -11636,8 +12553,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-isnanl-nolibm.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iswblank.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iswdigit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iswpunct.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iswxdigit.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-langinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-largefile.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-limits-h.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-listen.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-localcharset.Po@am__quote@ # am--include-marker
@@ -11648,6 +12567,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-malloc-gnu.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-malloca.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-math.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtoc32-w32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtoc32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc-w32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsinit.Po@am__quote@ # am--include-marker
@@ -11668,6 +12589,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pthread_sigmask1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pthread_sigmask2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-raise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-random-mt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-random.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-random_r.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-realloc-gnu.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-reallocarray.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rwlock1.Po@am__quote@ # am--include-marker
@@ -11680,6 +12604,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale_null-mt-all.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale_null-mt-one.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale_null-unlocked.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale_null.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setsockopt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signal-h.Po@am__quote@ # am--include-marker
@@ -11689,7 +12614,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sockets.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stat-time.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdalign.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdbool.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdckdint.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stddef.Po@am__quote@ # am--include-marker
@@ -11713,7 +12637,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_uio.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-thread_create.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-thread_self.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-time-h.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-time.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-uchar.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unistd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unsetenv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-usleep.Po@am__quote@ # am--include-marker
@@ -11725,6 +12651,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wctype-h.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wcwidth.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-xalloc-die.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unsetenv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usleep.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcrtomb.Po@am__quote@ # am--include-marker
@@ -11861,6 +12788,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-ctype_xdigit.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-decdigit.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-digit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-incb_byname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-incb_name.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-incb_of.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-joininggroup_byname.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-joininggroup_name.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-joininggroup_of.Po@am__quote@ # am--include-marker
@@ -11918,11 +12848,14 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_grapheme_link.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_hex_digit.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_hyphen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_id_compat_math_continue.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_id_compat_math_start.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_id_continue.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_id_start.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ideographic.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ids_binary_operator.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ids_trinary_operator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ids_unary_operator.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_ignorable_control.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_iso_control.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_join_control.Po@am__quote@ # am--include-marker
@@ -11946,6 +12879,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_paragraph_separator.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_pattern_syntax.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_pattern_white_space.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_prepended_concatenation_mark.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_private_use.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_punctuation.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unictype/$(DEPDIR)/test-pr_quotation_mark.Po@am__quote@ # am--include-marker
@@ -11991,6 +12925,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u8-width-linebreaks.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-ulc-possible-linebreaks.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-ulc-width-linebreaks.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unimetadata/$(DEPDIR)/test-u-version.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@uniname/$(DEPDIR)/test-uninames.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-canonical-decomposition.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@uninorm/$(DEPDIR)/test-compat-decomposition.Po@am__quote@ # am--include-marker
@@ -12066,6 +13001,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-mbtoucr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-move.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-next.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-pcpy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-prev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-set.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-stpcpy.Po@am__quote@ # am--include-marker
@@ -12101,6 +13037,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-mbtoucr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-move.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-next.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-pcpy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-prev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-set.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u32-stpcpy.Po@am__quote@ # am--include-marker
@@ -12136,6 +13073,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-mbtoucr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-move.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-next.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-pcpy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-prev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-set.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-stpcpy.Po@am__quote@ # am--include-marker
@@ -12455,6 +13393,13 @@ test-accept.log: test-accept$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-alignasof.log: test-alignasof$(EXEEXT)
+ @p='test-alignasof$(EXEEXT)'; \
+ b='test-alignasof'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-alloca-opt.log: test-alloca-opt$(EXEEXT)
@p='test-alloca-opt$(EXEEXT)'; \
b='test-alloca-opt'; \
@@ -12497,16 +13442,44 @@ test-bind.log: test-bind$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-btowc1.sh.log: test-btowc1.sh
- @p='test-btowc1.sh'; \
- b='test-btowc1.sh'; \
+test-btoc32-1.sh.log: test-btoc32-1.sh
+ @p='test-btoc32-1.sh'; \
+ b='test-btoc32-1.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-btoc32-2.sh.log: test-btoc32-2.sh
+ @p='test-btoc32-2.sh'; \
+ b='test-btoc32-2.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-btowc2.sh.log: test-btowc2.sh
- @p='test-btowc2.sh'; \
- b='test-btowc2.sh'; \
+test-btoc32-3.sh.log: test-btoc32-3.sh
+ @p='test-btoc32-3.sh'; \
+ b='test-btoc32-3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-btowc-1.sh.log: test-btowc-1.sh
+ @p='test-btowc-1.sh'; \
+ b='test-btowc-1.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-btowc-2.sh.log: test-btowc-2.sh
+ @p='test-btowc-2.sh'; \
+ b='test-btowc-2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-btowc-3.sh.log: test-btowc-3.sh
+ @p='test-btowc-3.sh'; \
+ b='test-btowc-3.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
@@ -12525,6 +13498,160 @@ test-c-strcase.sh.log: test-c-strcase.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isalnum.sh.log: test-c32isalnum.sh
+ @p='test-c32isalnum.sh'; \
+ b='test-c32isalnum.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isalpha.sh.log: test-c32isalpha.sh
+ @p='test-c32isalpha.sh'; \
+ b='test-c32isalpha.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isblank.sh.log: test-c32isblank.sh
+ @p='test-c32isblank.sh'; \
+ b='test-c32isblank.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32iscntrl.sh.log: test-c32iscntrl.sh
+ @p='test-c32iscntrl.sh'; \
+ b='test-c32iscntrl.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isdigit.sh.log: test-c32isdigit.sh
+ @p='test-c32isdigit.sh'; \
+ b='test-c32isdigit.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isgraph.sh.log: test-c32isgraph.sh
+ @p='test-c32isgraph.sh'; \
+ b='test-c32isgraph.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32islower.sh.log: test-c32islower.sh
+ @p='test-c32islower.sh'; \
+ b='test-c32islower.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isprint.sh.log: test-c32isprint.sh
+ @p='test-c32isprint.sh'; \
+ b='test-c32isprint.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32ispunct.sh.log: test-c32ispunct.sh
+ @p='test-c32ispunct.sh'; \
+ b='test-c32ispunct.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isspace.sh.log: test-c32isspace.sh
+ @p='test-c32isspace.sh'; \
+ b='test-c32isspace.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isupper.sh.log: test-c32isupper.sh
+ @p='test-c32isupper.sh'; \
+ b='test-c32isupper.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32isxdigit.sh.log: test-c32isxdigit.sh
+ @p='test-c32isxdigit.sh'; \
+ b='test-c32isxdigit.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb.sh.log: test-c32rtomb.sh
+ @p='test-c32rtomb.sh'; \
+ b='test-c32rtomb.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-2.sh.log: test-c32rtomb-w32-2.sh
+ @p='test-c32rtomb-w32-2.sh'; \
+ b='test-c32rtomb-w32-2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-3.sh.log: test-c32rtomb-w32-3.sh
+ @p='test-c32rtomb-w32-3.sh'; \
+ b='test-c32rtomb-w32-3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-4.sh.log: test-c32rtomb-w32-4.sh
+ @p='test-c32rtomb-w32-4.sh'; \
+ b='test-c32rtomb-w32-4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-5.sh.log: test-c32rtomb-w32-5.sh
+ @p='test-c32rtomb-w32-5.sh'; \
+ b='test-c32rtomb-w32-5.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-6.sh.log: test-c32rtomb-w32-6.sh
+ @p='test-c32rtomb-w32-6.sh'; \
+ b='test-c32rtomb-w32-6.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-7.sh.log: test-c32rtomb-w32-7.sh
+ @p='test-c32rtomb-w32-7.sh'; \
+ b='test-c32rtomb-w32-7.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32rtomb-w32-8.sh.log: test-c32rtomb-w32-8.sh
+ @p='test-c32rtomb-w32-8.sh'; \
+ b='test-c32rtomb-w32-8.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32tolower.sh.log: test-c32tolower.sh
+ @p='test-c32tolower.sh'; \
+ b='test-c32tolower.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-c32width.log: test-c32width$(EXEEXT)
+ @p='test-c32width$(EXEEXT)'; \
+ b='test-c32width'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-calloc-gnu.log: test-calloc-gnu$(EXEEXT)
@p='test-calloc-gnu$(EXEEXT)'; \
b='test-calloc-gnu'; \
@@ -12581,6 +13708,13 @@ test-errno.log: test-errno$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-error.sh.log: test-error.sh
+ @p='test-error.sh'; \
+ b='test-error.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-fcntl-h.log: test-fcntl-h$(EXEEXT)
@p='test-fcntl-h$(EXEEXT)'; \
b='test-fcntl-h'; \
@@ -12805,6 +13939,13 @@ test-iswdigit.sh.log: test-iswdigit.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-iswpunct.sh.log: test-iswpunct.sh
+ @p='test-iswpunct.sh'; \
+ b='test-iswpunct.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-iswxdigit.sh.log: test-iswxdigit.sh
@p='test-iswxdigit.sh'; \
b='test-iswxdigit.sh'; \
@@ -12819,6 +13960,13 @@ test-langinfo.log: test-langinfo$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-largefile.log: test-largefile$(EXEEXT)
+ @p='test-largefile$(EXEEXT)'; \
+ b='test-largefile'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-limits-h.log: test-limits-h$(EXEEXT)
@p='test-limits-h$(EXEEXT)'; \
b='test-limits-h'; \
@@ -12903,44 +14051,121 @@ test-math.log: test-math$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-mbrtowc1.sh.log: test-mbrtowc1.sh
- @p='test-mbrtowc1.sh'; \
- b='test-mbrtowc1.sh'; \
+test-mbrtoc32-1.sh.log: test-mbrtoc32-1.sh
+ @p='test-mbrtoc32-1.sh'; \
+ b='test-mbrtoc32-1.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtoc32-2.sh.log: test-mbrtoc32-2.sh
+ @p='test-mbrtoc32-2.sh'; \
+ b='test-mbrtoc32-2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtoc32-3.sh.log: test-mbrtoc32-3.sh
+ @p='test-mbrtoc32-3.sh'; \
+ b='test-mbrtoc32-3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtoc32-4.sh.log: test-mbrtoc32-4.sh
+ @p='test-mbrtoc32-4.sh'; \
+ b='test-mbrtoc32-4.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-mbrtowc2.sh.log: test-mbrtowc2.sh
- @p='test-mbrtowc2.sh'; \
- b='test-mbrtowc2.sh'; \
+test-mbrtoc32-5.sh.log: test-mbrtoc32-5.sh
+ @p='test-mbrtoc32-5.sh'; \
+ b='test-mbrtoc32-5.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-mbrtowc3.sh.log: test-mbrtowc3.sh
- @p='test-mbrtowc3.sh'; \
- b='test-mbrtowc3.sh'; \
+test-mbrtoc32-w32-2.sh.log: test-mbrtoc32-w32-2.sh
+ @p='test-mbrtoc32-w32-2.sh'; \
+ b='test-mbrtoc32-w32-2.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-mbrtowc4.sh.log: test-mbrtowc4.sh
- @p='test-mbrtowc4.sh'; \
- b='test-mbrtowc4.sh'; \
+test-mbrtoc32-w32-3.sh.log: test-mbrtoc32-w32-3.sh
+ @p='test-mbrtoc32-w32-3.sh'; \
+ b='test-mbrtoc32-w32-3.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-mbrtowc5.sh.log: test-mbrtowc5.sh
- @p='test-mbrtowc5.sh'; \
- b='test-mbrtowc5.sh'; \
+test-mbrtoc32-w32-4.sh.log: test-mbrtoc32-w32-4.sh
+ @p='test-mbrtoc32-w32-4.sh'; \
+ b='test-mbrtoc32-w32-4.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-mbrtowc-w32-1.sh.log: test-mbrtowc-w32-1.sh
- @p='test-mbrtowc-w32-1.sh'; \
- b='test-mbrtowc-w32-1.sh'; \
+test-mbrtoc32-w32-5.sh.log: test-mbrtoc32-w32-5.sh
+ @p='test-mbrtoc32-w32-5.sh'; \
+ b='test-mbrtoc32-w32-5.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtoc32-w32-6.sh.log: test-mbrtoc32-w32-6.sh
+ @p='test-mbrtoc32-w32-6.sh'; \
+ b='test-mbrtoc32-w32-6.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtoc32-w32-7.sh.log: test-mbrtoc32-w32-7.sh
+ @p='test-mbrtoc32-w32-7.sh'; \
+ b='test-mbrtoc32-w32-7.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtoc32-w32-8.sh.log: test-mbrtoc32-w32-8.sh
+ @p='test-mbrtoc32-w32-8.sh'; \
+ b='test-mbrtoc32-w32-8.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtowc-1.sh.log: test-mbrtowc-1.sh
+ @p='test-mbrtowc-1.sh'; \
+ b='test-mbrtowc-1.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtowc-2.sh.log: test-mbrtowc-2.sh
+ @p='test-mbrtowc-2.sh'; \
+ b='test-mbrtowc-2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtowc-3.sh.log: test-mbrtowc-3.sh
+ @p='test-mbrtowc-3.sh'; \
+ b='test-mbrtowc-3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtowc-4.sh.log: test-mbrtowc-4.sh
+ @p='test-mbrtowc-4.sh'; \
+ b='test-mbrtowc-4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtowc-5.sh.log: test-mbrtowc-5.sh
+ @p='test-mbrtowc-5.sh'; \
+ b='test-mbrtowc-5.sh'; \
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
@@ -12987,6 +14212,13 @@ test-mbrtowc-w32-7.sh.log: test-mbrtowc-w32-7.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-mbrtowc-w32-8.sh.log: test-mbrtowc-w32-8.sh
+ @p='test-mbrtowc-w32-8.sh'; \
+ b='test-mbrtowc-w32-8.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-mbsinit.sh.log: test-mbsinit.sh
@p='test-mbsinit.sh'; \
b='test-mbsinit.sh'; \
@@ -13106,6 +14338,27 @@ test-raise.log: test-raise$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-random.log: test-random$(EXEEXT)
+ @p='test-random$(EXEEXT)'; \
+ b='test-random'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-random-mt.log: test-random-mt$(EXEEXT)
+ @p='test-random-mt$(EXEEXT)'; \
+ b='test-random-mt'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-random_r.log: test-random_r$(EXEEXT)
+ @p='test-random_r$(EXEEXT)'; \
+ b='test-random_r'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-realloc-gnu.log: test-realloc-gnu$(EXEEXT)
@p='test-realloc-gnu$(EXEEXT)'; \
b='test-realloc-gnu'; \
@@ -13176,6 +14429,13 @@ test-setlocale_null-mt-all.log: test-setlocale_null-mt-all$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-setlocale_null-unlocked.log: test-setlocale_null-unlocked$(EXEEXT)
+ @p='test-setlocale_null-unlocked$(EXEEXT)'; \
+ b='test-setlocale_null-unlocked'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-setlocale1.sh.log: test-setlocale1.sh
@p='test-setlocale1.sh'; \
b='test-setlocale1.sh'; \
@@ -13246,13 +14506,6 @@ test-stat-time.log: test-stat-time$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-stdalign.log: test-stdalign$(EXEEXT)
- @p='test-stdalign$(EXEEXT)'; \
- b='test-stdalign'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
test-stdbool.log: test-stdbool$(EXEEXT)
@p='test-stdbool$(EXEEXT)'; \
b='test-stdbool'; \
@@ -13421,6 +14674,13 @@ test-thread_create.log: test-thread_create$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-time-h.log: test-time-h$(EXEEXT)
+ @p='test-time-h$(EXEEXT)'; \
+ b='test-time-h'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-time.log: test-time$(EXEEXT)
@p='test-time$(EXEEXT)'; \
b='test-time'; \
@@ -13428,6 +14688,13 @@ test-time.log: test-time$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-uchar.log: test-uchar$(EXEEXT)
+ @p='test-uchar$(EXEEXT)'; \
+ b='test-uchar'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-cased.log: test-cased$(EXEEXT)
@p='test-cased$(EXEEXT)'; \
b='test-cased'; \
@@ -14324,6 +15591,27 @@ test-digit.log: test-digit$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-incb_byname.log: test-incb_byname$(EXEEXT)
+ @p='test-incb_byname$(EXEEXT)'; \
+ b='test-incb_byname'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-incb_name.log: test-incb_name$(EXEEXT)
+ @p='test-incb_name$(EXEEXT)'; \
+ b='test-incb_name'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-incb_of.log: test-incb_of$(EXEEXT)
+ @p='test-incb_of$(EXEEXT)'; \
+ b='test-incb_of'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-joininggroup_byname.log: test-joininggroup_byname$(EXEEXT)
@p='test-joininggroup_byname$(EXEEXT)'; \
b='test-joininggroup_byname'; \
@@ -14723,6 +16011,20 @@ test-pr_hyphen.log: test-pr_hyphen$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-pr_id_compat_math_continue.log: test-pr_id_compat_math_continue$(EXEEXT)
+ @p='test-pr_id_compat_math_continue$(EXEEXT)'; \
+ b='test-pr_id_compat_math_continue'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test-pr_id_compat_math_start.log: test-pr_id_compat_math_start$(EXEEXT)
+ @p='test-pr_id_compat_math_start$(EXEEXT)'; \
+ b='test-pr_id_compat_math_start'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-pr_id_continue.log: test-pr_id_continue$(EXEEXT)
@p='test-pr_id_continue$(EXEEXT)'; \
b='test-pr_id_continue'; \
@@ -14758,6 +16060,13 @@ test-pr_ids_trinary_operator.log: test-pr_ids_trinary_operator$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-pr_ids_unary_operator.log: test-pr_ids_unary_operator$(EXEEXT)
+ @p='test-pr_ids_unary_operator$(EXEEXT)'; \
+ b='test-pr_ids_unary_operator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-pr_ignorable_control.log: test-pr_ignorable_control$(EXEEXT)
@p='test-pr_ignorable_control$(EXEEXT)'; \
b='test-pr_ignorable_control'; \
@@ -14919,6 +16228,13 @@ test-pr_pattern_white_space.log: test-pr_pattern_white_space$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-pr_prepended_concatenation_mark.log: test-pr_prepended_concatenation_mark$(EXEEXT)
+ @p='test-pr_prepended_concatenation_mark$(EXEEXT)'; \
+ b='test-pr_prepended_concatenation_mark'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-pr_private_use.log: test-pr_private_use$(EXEEXT)
@p='test-pr_private_use$(EXEEXT)'; \
b='test-pr_private_use'; \
@@ -15234,6 +16550,13 @@ test-ulc-width-linebreaks.log: test-ulc-width-linebreaks$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-u-version.log: test-u-version$(EXEEXT)
+ @p='test-u-version$(EXEEXT)'; \
+ b='test-u-version'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
uniname/test-uninames.sh.log: uniname/test-uninames.sh
@p='uniname/test-uninames.sh'; \
b='uniname/test-uninames.sh'; \
@@ -15675,6 +16998,13 @@ test-u16-next.log: test-u16-next$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-u16-pcpy.log: test-u16-pcpy$(EXEEXT)
+ @p='test-u16-pcpy$(EXEEXT)'; \
+ b='test-u16-pcpy'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-u16-prev.log: test-u16-prev$(EXEEXT)
@p='test-u16-prev$(EXEEXT)'; \
b='test-u16-prev'; \
@@ -15920,6 +17250,13 @@ test-u32-next.log: test-u32-next$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-u32-pcpy.log: test-u32-pcpy$(EXEEXT)
+ @p='test-u32-pcpy$(EXEEXT)'; \
+ b='test-u32-pcpy'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-u32-prev.log: test-u32-prev$(EXEEXT)
@p='test-u32-prev$(EXEEXT)'; \
b='test-u32-prev'; \
@@ -16165,6 +17502,13 @@ test-u8-next.log: test-u8-next$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-u8-pcpy.log: test-u8-pcpy$(EXEEXT)
+ @p='test-u8-pcpy$(EXEEXT)'; \
+ b='test-u8-pcpy'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-u8-prev.log: test-u8-prev$(EXEEXT)
@p='test-u8-prev$(EXEEXT)'; \
b='test-u8-prev'; \
@@ -16452,13 +17796,6 @@ test-wcrtomb.sh.log: test-wcrtomb.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-test-wcrtomb-w32-1.sh.log: test-wcrtomb-w32-1.sh
- @p='test-wcrtomb-w32-1.sh'; \
- b='test-wcrtomb-w32-1.sh'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
test-wcrtomb-w32-2.sh.log: test-wcrtomb-w32-2.sh
@p='test-wcrtomb-w32-2.sh'; \
b='test-wcrtomb-w32-2.sh'; \
@@ -16501,6 +17838,13 @@ test-wcrtomb-w32-7.sh.log: test-wcrtomb-w32-7.sh
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test-wcrtomb-w32-8.sh.log: test-wcrtomb-w32-8.sh
+ @p='test-wcrtomb-w32-8.sh'; \
+ b='test-wcrtomb-w32-8.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test-wctype-h.log: test-wctype-h$(EXEEXT)
@p='test-wctype-h$(EXEEXT)'; \
b='test-wctype-h'; \
@@ -16647,6 +17991,8 @@ distclean-generic:
-rm -f unigbrk/$(am__dirstamp)
-rm -f unilbrk/$(DEPDIR)/$(am__dirstamp)
-rm -f unilbrk/$(am__dirstamp)
+ -rm -f unimetadata/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unimetadata/$(am__dirstamp)
-rm -f uniname/$(DEPDIR)/$(am__dirstamp)
-rm -f uniname/$(am__dirstamp)
-rm -f uninorm/$(DEPDIR)/$(am__dirstamp)
@@ -16678,7 +18024,10 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/basename-lgpl.Po
-rm -f ./$(DEPDIR)/binary-io.Po
-rm -f ./$(DEPDIR)/bind.Po
+ -rm -f ./$(DEPDIR)/btoc32.Po
-rm -f ./$(DEPDIR)/btowc.Po
+ -rm -f ./$(DEPDIR)/c32rtomb.Po
+ -rm -f ./$(DEPDIR)/c32tob.Po
-rm -f ./$(DEPDIR)/calloc.Po
-rm -f ./$(DEPDIR)/cloexec.Po
-rm -f ./$(DEPDIR)/close.Po
@@ -16717,10 +18066,13 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/pthread_sigmask.Po
-rm -f ./$(DEPDIR)/putenv.Po
-rm -f ./$(DEPDIR)/raise.Po
+ -rm -f ./$(DEPDIR)/random.Po
+ -rm -f ./$(DEPDIR)/random_r.Po
-rm -f ./$(DEPDIR)/randomd.Po
-rm -f ./$(DEPDIR)/randoml.Po
-rm -f ./$(DEPDIR)/realloc.Po
-rm -f ./$(DEPDIR)/reallocarray.Po
+ -rm -f ./$(DEPDIR)/same-inode.Po
-rm -f ./$(DEPDIR)/sched_yield.Po
-rm -f ./$(DEPDIR)/select.Po
-rm -f ./$(DEPDIR)/setenv.Po
@@ -16741,16 +18093,34 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/symlink.Po
-rm -f ./$(DEPDIR)/sys_socket.Po
-rm -f ./$(DEPDIR)/test-accept.Po
+ -rm -f ./$(DEPDIR)/test-alignasof.Po
-rm -f ./$(DEPDIR)/test-alloca-opt.Po
-rm -f ./$(DEPDIR)/test-arpa_inet.Po
-rm -f ./$(DEPDIR)/test-array-mergesort.Po
-rm -f ./$(DEPDIR)/test-assert.Po
-rm -f ./$(DEPDIR)/test-binary-io.Po
-rm -f ./$(DEPDIR)/test-bind.Po
+ -rm -f ./$(DEPDIR)/test-btoc32.Po
-rm -f ./$(DEPDIR)/test-btowc.Po
-rm -f ./$(DEPDIR)/test-c-ctype.Po
-rm -f ./$(DEPDIR)/test-c-strcasecmp.Po
-rm -f ./$(DEPDIR)/test-c-strncasecmp.Po
+ -rm -f ./$(DEPDIR)/test-c32isalnum.Po
+ -rm -f ./$(DEPDIR)/test-c32isalpha.Po
+ -rm -f ./$(DEPDIR)/test-c32isblank.Po
+ -rm -f ./$(DEPDIR)/test-c32iscntrl.Po
+ -rm -f ./$(DEPDIR)/test-c32isdigit.Po
+ -rm -f ./$(DEPDIR)/test-c32isgraph.Po
+ -rm -f ./$(DEPDIR)/test-c32islower.Po
+ -rm -f ./$(DEPDIR)/test-c32isprint.Po
+ -rm -f ./$(DEPDIR)/test-c32ispunct.Po
+ -rm -f ./$(DEPDIR)/test-c32isspace.Po
+ -rm -f ./$(DEPDIR)/test-c32isupper.Po
+ -rm -f ./$(DEPDIR)/test-c32isxdigit.Po
+ -rm -f ./$(DEPDIR)/test-c32rtomb-w32.Po
+ -rm -f ./$(DEPDIR)/test-c32rtomb.Po
+ -rm -f ./$(DEPDIR)/test-c32tolower.Po
+ -rm -f ./$(DEPDIR)/test-c32width.Po
-rm -f ./$(DEPDIR)/test-calloc-gnu.Po
-rm -f ./$(DEPDIR)/test-cloexec.Po
-rm -f ./$(DEPDIR)/test-close.Po
@@ -16759,6 +18129,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-dup2.Po
-rm -f ./$(DEPDIR)/test-environ.Po
-rm -f ./$(DEPDIR)/test-errno.Po
+ -rm -f ./$(DEPDIR)/test-error.Po
-rm -f ./$(DEPDIR)/test-fcntl-h.Po
-rm -f ./$(DEPDIR)/test-fcntl.Po
-rm -f ./$(DEPDIR)/test-fdopen.Po
@@ -16791,8 +18162,10 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-isnanl-nolibm.Po
-rm -f ./$(DEPDIR)/test-iswblank.Po
-rm -f ./$(DEPDIR)/test-iswdigit.Po
+ -rm -f ./$(DEPDIR)/test-iswpunct.Po
-rm -f ./$(DEPDIR)/test-iswxdigit.Po
-rm -f ./$(DEPDIR)/test-langinfo.Po
+ -rm -f ./$(DEPDIR)/test-largefile.Po
-rm -f ./$(DEPDIR)/test-limits-h.Po
-rm -f ./$(DEPDIR)/test-listen.Po
-rm -f ./$(DEPDIR)/test-localcharset.Po
@@ -16803,6 +18176,8 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-malloc-gnu.Po
-rm -f ./$(DEPDIR)/test-malloca.Po
-rm -f ./$(DEPDIR)/test-math.Po
+ -rm -f ./$(DEPDIR)/test-mbrtoc32-w32.Po
+ -rm -f ./$(DEPDIR)/test-mbrtoc32.Po
-rm -f ./$(DEPDIR)/test-mbrtowc-w32.Po
-rm -f ./$(DEPDIR)/test-mbrtowc.Po
-rm -f ./$(DEPDIR)/test-mbsinit.Po
@@ -16823,6 +18198,9 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-pthread_sigmask1.Po
-rm -f ./$(DEPDIR)/test-pthread_sigmask2.Po
-rm -f ./$(DEPDIR)/test-raise.Po
+ -rm -f ./$(DEPDIR)/test-random-mt.Po
+ -rm -f ./$(DEPDIR)/test-random.Po
+ -rm -f ./$(DEPDIR)/test-random_r.Po
-rm -f ./$(DEPDIR)/test-realloc-gnu.Po
-rm -f ./$(DEPDIR)/test-reallocarray.Po
-rm -f ./$(DEPDIR)/test-rwlock1.Po
@@ -16835,6 +18213,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-setlocale2.Po
-rm -f ./$(DEPDIR)/test-setlocale_null-mt-all.Po
-rm -f ./$(DEPDIR)/test-setlocale_null-mt-one.Po
+ -rm -f ./$(DEPDIR)/test-setlocale_null-unlocked.Po
-rm -f ./$(DEPDIR)/test-setlocale_null.Po
-rm -f ./$(DEPDIR)/test-setsockopt.Po
-rm -f ./$(DEPDIR)/test-signal-h.Po
@@ -16844,7 +18223,6 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-sockets.Po
-rm -f ./$(DEPDIR)/test-stat-time.Po
-rm -f ./$(DEPDIR)/test-stat.Po
- -rm -f ./$(DEPDIR)/test-stdalign.Po
-rm -f ./$(DEPDIR)/test-stdbool.Po
-rm -f ./$(DEPDIR)/test-stdckdint.Po
-rm -f ./$(DEPDIR)/test-stddef.Po
@@ -16868,7 +18246,9 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-sys_uio.Po
-rm -f ./$(DEPDIR)/test-thread_create.Po
-rm -f ./$(DEPDIR)/test-thread_self.Po
+ -rm -f ./$(DEPDIR)/test-time-h.Po
-rm -f ./$(DEPDIR)/test-time.Po
+ -rm -f ./$(DEPDIR)/test-uchar.Po
-rm -f ./$(DEPDIR)/test-unistd.Po
-rm -f ./$(DEPDIR)/test-unsetenv.Po
-rm -f ./$(DEPDIR)/test-usleep.Po
@@ -16880,6 +18260,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-wctype-h.Po
-rm -f ./$(DEPDIR)/test-wcwidth.Po
-rm -f ./$(DEPDIR)/test-xalloc-die.Po
+ -rm -f ./$(DEPDIR)/time.Po
-rm -f ./$(DEPDIR)/unsetenv.Po
-rm -f ./$(DEPDIR)/usleep.Po
-rm -f ./$(DEPDIR)/wcrtomb.Po
@@ -17016,6 +18397,9 @@ distclean: distclean-recursive
-rm -f unictype/$(DEPDIR)/test-ctype_xdigit.Po
-rm -f unictype/$(DEPDIR)/test-decdigit.Po
-rm -f unictype/$(DEPDIR)/test-digit.Po
+ -rm -f unictype/$(DEPDIR)/test-incb_byname.Po
+ -rm -f unictype/$(DEPDIR)/test-incb_name.Po
+ -rm -f unictype/$(DEPDIR)/test-incb_of.Po
-rm -f unictype/$(DEPDIR)/test-joininggroup_byname.Po
-rm -f unictype/$(DEPDIR)/test-joininggroup_name.Po
-rm -f unictype/$(DEPDIR)/test-joininggroup_of.Po
@@ -17073,11 +18457,14 @@ distclean: distclean-recursive
-rm -f unictype/$(DEPDIR)/test-pr_grapheme_link.Po
-rm -f unictype/$(DEPDIR)/test-pr_hex_digit.Po
-rm -f unictype/$(DEPDIR)/test-pr_hyphen.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_id_compat_math_continue.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_id_compat_math_start.Po
-rm -f unictype/$(DEPDIR)/test-pr_id_continue.Po
-rm -f unictype/$(DEPDIR)/test-pr_id_start.Po
-rm -f unictype/$(DEPDIR)/test-pr_ideographic.Po
-rm -f unictype/$(DEPDIR)/test-pr_ids_binary_operator.Po
-rm -f unictype/$(DEPDIR)/test-pr_ids_trinary_operator.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_ids_unary_operator.Po
-rm -f unictype/$(DEPDIR)/test-pr_ignorable_control.Po
-rm -f unictype/$(DEPDIR)/test-pr_iso_control.Po
-rm -f unictype/$(DEPDIR)/test-pr_join_control.Po
@@ -17101,6 +18488,7 @@ distclean: distclean-recursive
-rm -f unictype/$(DEPDIR)/test-pr_paragraph_separator.Po
-rm -f unictype/$(DEPDIR)/test-pr_pattern_syntax.Po
-rm -f unictype/$(DEPDIR)/test-pr_pattern_white_space.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_prepended_concatenation_mark.Po
-rm -f unictype/$(DEPDIR)/test-pr_private_use.Po
-rm -f unictype/$(DEPDIR)/test-pr_punctuation.Po
-rm -f unictype/$(DEPDIR)/test-pr_quotation_mark.Po
@@ -17146,6 +18534,7 @@ distclean: distclean-recursive
-rm -f unilbrk/$(DEPDIR)/test-u8-width-linebreaks.Po
-rm -f unilbrk/$(DEPDIR)/test-ulc-possible-linebreaks.Po
-rm -f unilbrk/$(DEPDIR)/test-ulc-width-linebreaks.Po
+ -rm -f unimetadata/$(DEPDIR)/test-u-version.Po
-rm -f uniname/$(DEPDIR)/test-uninames.Po
-rm -f uninorm/$(DEPDIR)/test-canonical-decomposition.Po
-rm -f uninorm/$(DEPDIR)/test-compat-decomposition.Po
@@ -17221,6 +18610,7 @@ distclean: distclean-recursive
-rm -f unistr/$(DEPDIR)/test-u16-mbtoucr.Po
-rm -f unistr/$(DEPDIR)/test-u16-move.Po
-rm -f unistr/$(DEPDIR)/test-u16-next.Po
+ -rm -f unistr/$(DEPDIR)/test-u16-pcpy.Po
-rm -f unistr/$(DEPDIR)/test-u16-prev.Po
-rm -f unistr/$(DEPDIR)/test-u16-set.Po
-rm -f unistr/$(DEPDIR)/test-u16-stpcpy.Po
@@ -17256,6 +18646,7 @@ distclean: distclean-recursive
-rm -f unistr/$(DEPDIR)/test-u32-mbtoucr.Po
-rm -f unistr/$(DEPDIR)/test-u32-move.Po
-rm -f unistr/$(DEPDIR)/test-u32-next.Po
+ -rm -f unistr/$(DEPDIR)/test-u32-pcpy.Po
-rm -f unistr/$(DEPDIR)/test-u32-prev.Po
-rm -f unistr/$(DEPDIR)/test-u32-set.Po
-rm -f unistr/$(DEPDIR)/test-u32-stpcpy.Po
@@ -17291,6 +18682,7 @@ distclean: distclean-recursive
-rm -f unistr/$(DEPDIR)/test-u8-mbtoucr.Po
-rm -f unistr/$(DEPDIR)/test-u8-move.Po
-rm -f unistr/$(DEPDIR)/test-u8-next.Po
+ -rm -f unistr/$(DEPDIR)/test-u8-pcpy.Po
-rm -f unistr/$(DEPDIR)/test-u8-prev.Po
-rm -f unistr/$(DEPDIR)/test-u8-set.Po
-rm -f unistr/$(DEPDIR)/test-u8-stpcpy.Po
@@ -17376,7 +18768,10 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/basename-lgpl.Po
-rm -f ./$(DEPDIR)/binary-io.Po
-rm -f ./$(DEPDIR)/bind.Po
+ -rm -f ./$(DEPDIR)/btoc32.Po
-rm -f ./$(DEPDIR)/btowc.Po
+ -rm -f ./$(DEPDIR)/c32rtomb.Po
+ -rm -f ./$(DEPDIR)/c32tob.Po
-rm -f ./$(DEPDIR)/calloc.Po
-rm -f ./$(DEPDIR)/cloexec.Po
-rm -f ./$(DEPDIR)/close.Po
@@ -17415,10 +18810,13 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/pthread_sigmask.Po
-rm -f ./$(DEPDIR)/putenv.Po
-rm -f ./$(DEPDIR)/raise.Po
+ -rm -f ./$(DEPDIR)/random.Po
+ -rm -f ./$(DEPDIR)/random_r.Po
-rm -f ./$(DEPDIR)/randomd.Po
-rm -f ./$(DEPDIR)/randoml.Po
-rm -f ./$(DEPDIR)/realloc.Po
-rm -f ./$(DEPDIR)/reallocarray.Po
+ -rm -f ./$(DEPDIR)/same-inode.Po
-rm -f ./$(DEPDIR)/sched_yield.Po
-rm -f ./$(DEPDIR)/select.Po
-rm -f ./$(DEPDIR)/setenv.Po
@@ -17439,16 +18837,34 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/symlink.Po
-rm -f ./$(DEPDIR)/sys_socket.Po
-rm -f ./$(DEPDIR)/test-accept.Po
+ -rm -f ./$(DEPDIR)/test-alignasof.Po
-rm -f ./$(DEPDIR)/test-alloca-opt.Po
-rm -f ./$(DEPDIR)/test-arpa_inet.Po
-rm -f ./$(DEPDIR)/test-array-mergesort.Po
-rm -f ./$(DEPDIR)/test-assert.Po
-rm -f ./$(DEPDIR)/test-binary-io.Po
-rm -f ./$(DEPDIR)/test-bind.Po
+ -rm -f ./$(DEPDIR)/test-btoc32.Po
-rm -f ./$(DEPDIR)/test-btowc.Po
-rm -f ./$(DEPDIR)/test-c-ctype.Po
-rm -f ./$(DEPDIR)/test-c-strcasecmp.Po
-rm -f ./$(DEPDIR)/test-c-strncasecmp.Po
+ -rm -f ./$(DEPDIR)/test-c32isalnum.Po
+ -rm -f ./$(DEPDIR)/test-c32isalpha.Po
+ -rm -f ./$(DEPDIR)/test-c32isblank.Po
+ -rm -f ./$(DEPDIR)/test-c32iscntrl.Po
+ -rm -f ./$(DEPDIR)/test-c32isdigit.Po
+ -rm -f ./$(DEPDIR)/test-c32isgraph.Po
+ -rm -f ./$(DEPDIR)/test-c32islower.Po
+ -rm -f ./$(DEPDIR)/test-c32isprint.Po
+ -rm -f ./$(DEPDIR)/test-c32ispunct.Po
+ -rm -f ./$(DEPDIR)/test-c32isspace.Po
+ -rm -f ./$(DEPDIR)/test-c32isupper.Po
+ -rm -f ./$(DEPDIR)/test-c32isxdigit.Po
+ -rm -f ./$(DEPDIR)/test-c32rtomb-w32.Po
+ -rm -f ./$(DEPDIR)/test-c32rtomb.Po
+ -rm -f ./$(DEPDIR)/test-c32tolower.Po
+ -rm -f ./$(DEPDIR)/test-c32width.Po
-rm -f ./$(DEPDIR)/test-calloc-gnu.Po
-rm -f ./$(DEPDIR)/test-cloexec.Po
-rm -f ./$(DEPDIR)/test-close.Po
@@ -17457,6 +18873,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-dup2.Po
-rm -f ./$(DEPDIR)/test-environ.Po
-rm -f ./$(DEPDIR)/test-errno.Po
+ -rm -f ./$(DEPDIR)/test-error.Po
-rm -f ./$(DEPDIR)/test-fcntl-h.Po
-rm -f ./$(DEPDIR)/test-fcntl.Po
-rm -f ./$(DEPDIR)/test-fdopen.Po
@@ -17489,8 +18906,10 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-isnanl-nolibm.Po
-rm -f ./$(DEPDIR)/test-iswblank.Po
-rm -f ./$(DEPDIR)/test-iswdigit.Po
+ -rm -f ./$(DEPDIR)/test-iswpunct.Po
-rm -f ./$(DEPDIR)/test-iswxdigit.Po
-rm -f ./$(DEPDIR)/test-langinfo.Po
+ -rm -f ./$(DEPDIR)/test-largefile.Po
-rm -f ./$(DEPDIR)/test-limits-h.Po
-rm -f ./$(DEPDIR)/test-listen.Po
-rm -f ./$(DEPDIR)/test-localcharset.Po
@@ -17501,6 +18920,8 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-malloc-gnu.Po
-rm -f ./$(DEPDIR)/test-malloca.Po
-rm -f ./$(DEPDIR)/test-math.Po
+ -rm -f ./$(DEPDIR)/test-mbrtoc32-w32.Po
+ -rm -f ./$(DEPDIR)/test-mbrtoc32.Po
-rm -f ./$(DEPDIR)/test-mbrtowc-w32.Po
-rm -f ./$(DEPDIR)/test-mbrtowc.Po
-rm -f ./$(DEPDIR)/test-mbsinit.Po
@@ -17521,6 +18942,9 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-pthread_sigmask1.Po
-rm -f ./$(DEPDIR)/test-pthread_sigmask2.Po
-rm -f ./$(DEPDIR)/test-raise.Po
+ -rm -f ./$(DEPDIR)/test-random-mt.Po
+ -rm -f ./$(DEPDIR)/test-random.Po
+ -rm -f ./$(DEPDIR)/test-random_r.Po
-rm -f ./$(DEPDIR)/test-realloc-gnu.Po
-rm -f ./$(DEPDIR)/test-reallocarray.Po
-rm -f ./$(DEPDIR)/test-rwlock1.Po
@@ -17533,6 +18957,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-setlocale2.Po
-rm -f ./$(DEPDIR)/test-setlocale_null-mt-all.Po
-rm -f ./$(DEPDIR)/test-setlocale_null-mt-one.Po
+ -rm -f ./$(DEPDIR)/test-setlocale_null-unlocked.Po
-rm -f ./$(DEPDIR)/test-setlocale_null.Po
-rm -f ./$(DEPDIR)/test-setsockopt.Po
-rm -f ./$(DEPDIR)/test-signal-h.Po
@@ -17542,7 +18967,6 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-sockets.Po
-rm -f ./$(DEPDIR)/test-stat-time.Po
-rm -f ./$(DEPDIR)/test-stat.Po
- -rm -f ./$(DEPDIR)/test-stdalign.Po
-rm -f ./$(DEPDIR)/test-stdbool.Po
-rm -f ./$(DEPDIR)/test-stdckdint.Po
-rm -f ./$(DEPDIR)/test-stddef.Po
@@ -17566,7 +18990,9 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-sys_uio.Po
-rm -f ./$(DEPDIR)/test-thread_create.Po
-rm -f ./$(DEPDIR)/test-thread_self.Po
+ -rm -f ./$(DEPDIR)/test-time-h.Po
-rm -f ./$(DEPDIR)/test-time.Po
+ -rm -f ./$(DEPDIR)/test-uchar.Po
-rm -f ./$(DEPDIR)/test-unistd.Po
-rm -f ./$(DEPDIR)/test-unsetenv.Po
-rm -f ./$(DEPDIR)/test-usleep.Po
@@ -17578,6 +19004,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-wctype-h.Po
-rm -f ./$(DEPDIR)/test-wcwidth.Po
-rm -f ./$(DEPDIR)/test-xalloc-die.Po
+ -rm -f ./$(DEPDIR)/time.Po
-rm -f ./$(DEPDIR)/unsetenv.Po
-rm -f ./$(DEPDIR)/usleep.Po
-rm -f ./$(DEPDIR)/wcrtomb.Po
@@ -17714,6 +19141,9 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unictype/$(DEPDIR)/test-ctype_xdigit.Po
-rm -f unictype/$(DEPDIR)/test-decdigit.Po
-rm -f unictype/$(DEPDIR)/test-digit.Po
+ -rm -f unictype/$(DEPDIR)/test-incb_byname.Po
+ -rm -f unictype/$(DEPDIR)/test-incb_name.Po
+ -rm -f unictype/$(DEPDIR)/test-incb_of.Po
-rm -f unictype/$(DEPDIR)/test-joininggroup_byname.Po
-rm -f unictype/$(DEPDIR)/test-joininggroup_name.Po
-rm -f unictype/$(DEPDIR)/test-joininggroup_of.Po
@@ -17771,11 +19201,14 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unictype/$(DEPDIR)/test-pr_grapheme_link.Po
-rm -f unictype/$(DEPDIR)/test-pr_hex_digit.Po
-rm -f unictype/$(DEPDIR)/test-pr_hyphen.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_id_compat_math_continue.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_id_compat_math_start.Po
-rm -f unictype/$(DEPDIR)/test-pr_id_continue.Po
-rm -f unictype/$(DEPDIR)/test-pr_id_start.Po
-rm -f unictype/$(DEPDIR)/test-pr_ideographic.Po
-rm -f unictype/$(DEPDIR)/test-pr_ids_binary_operator.Po
-rm -f unictype/$(DEPDIR)/test-pr_ids_trinary_operator.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_ids_unary_operator.Po
-rm -f unictype/$(DEPDIR)/test-pr_ignorable_control.Po
-rm -f unictype/$(DEPDIR)/test-pr_iso_control.Po
-rm -f unictype/$(DEPDIR)/test-pr_join_control.Po
@@ -17799,6 +19232,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unictype/$(DEPDIR)/test-pr_paragraph_separator.Po
-rm -f unictype/$(DEPDIR)/test-pr_pattern_syntax.Po
-rm -f unictype/$(DEPDIR)/test-pr_pattern_white_space.Po
+ -rm -f unictype/$(DEPDIR)/test-pr_prepended_concatenation_mark.Po
-rm -f unictype/$(DEPDIR)/test-pr_private_use.Po
-rm -f unictype/$(DEPDIR)/test-pr_punctuation.Po
-rm -f unictype/$(DEPDIR)/test-pr_quotation_mark.Po
@@ -17844,6 +19278,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unilbrk/$(DEPDIR)/test-u8-width-linebreaks.Po
-rm -f unilbrk/$(DEPDIR)/test-ulc-possible-linebreaks.Po
-rm -f unilbrk/$(DEPDIR)/test-ulc-width-linebreaks.Po
+ -rm -f unimetadata/$(DEPDIR)/test-u-version.Po
-rm -f uniname/$(DEPDIR)/test-uninames.Po
-rm -f uninorm/$(DEPDIR)/test-canonical-decomposition.Po
-rm -f uninorm/$(DEPDIR)/test-compat-decomposition.Po
@@ -17919,6 +19354,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unistr/$(DEPDIR)/test-u16-mbtoucr.Po
-rm -f unistr/$(DEPDIR)/test-u16-move.Po
-rm -f unistr/$(DEPDIR)/test-u16-next.Po
+ -rm -f unistr/$(DEPDIR)/test-u16-pcpy.Po
-rm -f unistr/$(DEPDIR)/test-u16-prev.Po
-rm -f unistr/$(DEPDIR)/test-u16-set.Po
-rm -f unistr/$(DEPDIR)/test-u16-stpcpy.Po
@@ -17954,6 +19390,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unistr/$(DEPDIR)/test-u32-mbtoucr.Po
-rm -f unistr/$(DEPDIR)/test-u32-move.Po
-rm -f unistr/$(DEPDIR)/test-u32-next.Po
+ -rm -f unistr/$(DEPDIR)/test-u32-pcpy.Po
-rm -f unistr/$(DEPDIR)/test-u32-prev.Po
-rm -f unistr/$(DEPDIR)/test-u32-set.Po
-rm -f unistr/$(DEPDIR)/test-u32-stpcpy.Po
@@ -17989,6 +19426,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f unistr/$(DEPDIR)/test-u8-mbtoucr.Po
-rm -f unistr/$(DEPDIR)/test-u8-move.Po
-rm -f unistr/$(DEPDIR)/test-u8-next.Po
+ -rm -f unistr/$(DEPDIR)/test-u8-pcpy.Po
-rm -f unistr/$(DEPDIR)/test-u8-prev.Po
-rm -f unistr/$(DEPDIR)/test-u8-set.Po
-rm -f unistr/$(DEPDIR)/test-u8-stpcpy.Po
@@ -18106,6 +19544,21 @@ ctype.h: ctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
$(srcdir)/ctype.in.h > $@-t
$(AM_V_at)mv $@-t $@
+# We need the following in order to override <error.h>.
+error.h: error.in.h $(top_builddir)/config.status $(CXXDEFS_H)
+ $(gl_V_at)$(SED_HEADER_STDOUT) \
+ -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_ERROR_H''@|$(HAVE_ERROR_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''NEXT_ERROR_H''@|$(NEXT_ERROR_H)|g' \
+ -e 's|@''HAVE_ERROR''@|$(HAVE_ERROR)|g' \
+ -e 's|@''HAVE_ERROR_AT_LINE''@|$(HAVE_ERROR_AT_LINE)|g' \
+ -e 's|@''REPLACE_ERROR''@|$(REPLACE_ERROR)|g' \
+ -e 's|@''REPLACE_ERROR_AT_LINE''@|$(REPLACE_ERROR_AT_LINE)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ $(srcdir)/error.in.h > $@-t
+ $(AM_V_at)mv $@-t $@
+
# We need the following in order to create <fcntl.h> when the system
# doesn't have one that works with the given compiler.
fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
@@ -18184,6 +19637,8 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e 's|@''HAVE_PTHREAD_DETACH''@|$(HAVE_PTHREAD_DETACH)|g' \
-e 's|@''HAVE_PTHREAD_JOIN''@|$(HAVE_PTHREAD_JOIN)|g' \
-e 's|@''HAVE_PTHREAD_EXIT''@|$(HAVE_PTHREAD_EXIT)|g' \
+ < $(srcdir)/pthread.in.h > $@-t1
+ $(AM_V_at)sed \
-e 's|@''HAVE_PTHREAD_ONCE''@|$(HAVE_PTHREAD_ONCE)|g' \
-e 's|@''HAVE_PTHREAD_MUTEX_INIT''@|$(HAVE_PTHREAD_MUTEX_INIT)|g' \
-e 's|@''HAVE_PTHREAD_MUTEXATTR_INIT''@|$(HAVE_PTHREAD_MUTEXATTR_INIT)|g' \
@@ -18225,8 +19680,9 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e 's|@''HAVE_PTHREAD_SPIN_TRYLOCK''@|$(HAVE_PTHREAD_SPIN_TRYLOCK)|g' \
-e 's|@''HAVE_PTHREAD_SPIN_UNLOCK''@|$(HAVE_PTHREAD_SPIN_UNLOCK)|g' \
-e 's|@''HAVE_PTHREAD_SPIN_DESTROY''@|$(HAVE_PTHREAD_SPIN_DESTROY)|g' \
- < $(srcdir)/pthread.in.h | \
- sed -e 's|@''REPLACE_PTHREAD_CREATE''@|$(REPLACE_PTHREAD_CREATE)|g' \
+ < $@-t1 > $@-t2
+ $(AM_V_at)sed \
+ -e 's|@''REPLACE_PTHREAD_CREATE''@|$(REPLACE_PTHREAD_CREATE)|g' \
-e 's|@''REPLACE_PTHREAD_ATTR_INIT''@|$(REPLACE_PTHREAD_ATTR_INIT)|g' \
-e 's|@''REPLACE_PTHREAD_ATTR_GETDETACHSTATE''@|$(REPLACE_PTHREAD_ATTR_GETDETACHSTATE)|g' \
-e 's|@''REPLACE_PTHREAD_ATTR_SETDETACHSTATE''@|$(REPLACE_PTHREAD_ATTR_SETDETACHSTATE)|g' \
@@ -18260,6 +19716,8 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e 's|@''REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK)|g' \
-e 's|@''REPLACE_PTHREAD_RWLOCK_UNLOCK''@|$(REPLACE_PTHREAD_RWLOCK_UNLOCK)|g' \
-e 's|@''REPLACE_PTHREAD_RWLOCK_DESTROY''@|$(REPLACE_PTHREAD_RWLOCK_DESTROY)|g' \
+ < $@-t2 > $@-t3
+ $(AM_V_at)sed \
-e 's|@''REPLACE_PTHREAD_COND_INIT''@|$(REPLACE_PTHREAD_COND_INIT)|g' \
-e 's|@''REPLACE_PTHREAD_CONDATTR_INIT''@|$(REPLACE_PTHREAD_CONDATTR_INIT)|g' \
-e 's|@''REPLACE_PTHREAD_CONDATTR_DESTROY''@|$(REPLACE_PTHREAD_CONDATTR_DESTROY)|g' \
@@ -18281,8 +19739,9 @@ pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H
-e '/definition of _Noreturn/r $(_NORETURN_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- > $@-t
- $(AM_V_at)mv $@-t $@
+ < $@-t3 > $@-t4
+ $(AM_V_at)rm -f $@-t1 $@-t2 $@-t3
+ $(AM_V_at)mv $@-t4 $@
# We need the following in order to create a replacement for <sched.h> when
# the system doesn't have one.
@@ -18335,14 +19794,6 @@ signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
$(srcdir)/signal.in.h > $@-t
$(AM_V_at)mv $@-t $@
-# We need the following in order to create <stdalign.h> when the system
-# doesn't have one that works.
-@GL_GENERATE_STDALIGN_H_TRUE@stdalign.h: stdalign.in.h $(top_builddir)/config.status
-@GL_GENERATE_STDALIGN_H_TRUE@ $(gl_V_at)$(SED_HEADER_TO_AT_t) $(srcdir)/stdalign.in.h
-@GL_GENERATE_STDALIGN_H_TRUE@ $(AM_V_at)mv $@-t $@
-@GL_GENERATE_STDALIGN_H_FALSE@stdalign.h: $(top_builddir)/config.status
-@GL_GENERATE_STDALIGN_H_FALSE@ rm -f $@
-
# We need the following in order to create <stdio.h> when the system
# doesn't have one that works with the given compiler.
stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
@@ -18412,14 +19863,17 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \
-e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \
-e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \
- < $(srcdir)/stdio.in.h | \
- sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
+ < $(srcdir)/stdio.in.h > $@-t1
+ $(AM_V_at)sed \
+ -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
-e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
-e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
-e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
-e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
-e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+ -e 's|@''HAVE_DECL_GETW''@|$(HAVE_DECL_GETW)|g' \
-e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+ -e 's|@''HAVE_DECL_PUTW''@|$(HAVE_DECL_PUTW)|g' \
-e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
-e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
-e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
@@ -18430,6 +19884,8 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
-e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
-e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+ < $@-t1 > $@-t2
+ $(AM_V_at)sed \
-e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
-e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
-e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
@@ -18467,8 +19923,9 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- > $@-t
- $(AM_V_at)mv $@-t $@
+ < $@-t2 > $@-t3
+ $(AM_V_at)rm -f $@-t1 $@-t2
+ $(AM_V_at)mv $@-t3 $@
# We need the following in order to create <sys/ioctl.h> when the system
# does not have a complete one.
@@ -18666,6 +20123,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
-e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \
-e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \
-e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \
+ -e 's/@''GNULIB_TIME''@/$(GL_GNULIB_TIME)/g' \
-e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \
-e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \
-e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \
@@ -18687,7 +20145,10 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
-e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
-e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \
+ -e 's|@''REPLACE_TIME''@|$(REPLACE_TIME)|g' \
-e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \
+ -e 's|@''REPLACE_TIMESPEC_GETRES''@|$(REPLACE_TIMESPEC_GETRES)|g' \
-e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \
-e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
-e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
diff --git a/tests/_Noreturn.h b/tests/_Noreturn.h
index e914627a..7326bd47 100644
--- a/tests/_Noreturn.h
+++ b/tests/_Noreturn.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that a function does not return.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -26,6 +26,11 @@
AIX system header files and several gnulib header files use precisely
this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
+# elif (defined __clang__ && __clang_major__ < 16 \
+ && defined _GL_WORK_AROUND_LLVM_BUG_59792)
+ /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around
+ that rare LLVM bug, though you may get many false-alarm warnings. */
+# define _Noreturn
# elif ((!defined __cplusplus || defined __clang__) \
&& (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
|| (!defined __STRICT_ANSI__ \
diff --git a/tests/accept.c b/tests/accept.c
index 5c4d1f35..18ce80c6 100644
--- a/tests/accept.c
+++ b/tests/accept.c
@@ -1,6 +1,6 @@
/* accept.c --- wrappers for Windows accept function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/arg-nonnull.h b/tests/arg-nonnull.h
index e4513efe..46c711ca 100644
--- a/tests/arg-nonnull.h
+++ b/tests/arg-nonnull.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that specific arguments must not be NULL.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
diff --git a/tests/arpa_inet.in.h b/tests/arpa_inet.in.h
index f5d7db2d..523a448c 100644
--- a/tests/arpa_inet.in.h
+++ b/tests/arpa_inet.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <arpa/inet.h>.
- Copyright (C) 2005-2006, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2006, 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -49,6 +49,11 @@
#ifndef _@GUARD_PREFIX@_ARPA_INET_H
#define _@GUARD_PREFIX@_ARPA_INET_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* Get all possible declarations of inet_ntop() and inet_pton(). */
#if (@GNULIB_INET_NTOP@ || @GNULIB_INET_PTON@ || defined GNULIB_POSIXCHECK) \
&& @HAVE_WS2TCPIP_H@
diff --git a/tests/atomic-int-gnulib.h b/tests/atomic-int-gnulib.h
index d1c68a2b..b459f344 100644
--- a/tests/atomic-int-gnulib.h
+++ b/tests/atomic-int-gnulib.h
@@ -1,5 +1,5 @@
/* Atomic integers. Useful for testing multithreaded locking primitives.
- Copyright (C) 2005, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2008-2024 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
@@ -107,6 +107,7 @@ init_atomic_int (struct atomic_int *ai)
else
{
perror ("sem_open failed");
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/basename-lgpl.c b/tests/basename-lgpl.c
index f8da1484..256f8460 100644
--- a/tests/basename-lgpl.c
+++ b/tests/basename-lgpl.c
@@ -1,6 +1,6 @@
/* basename.c -- return the last element in a file name
- Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2022 Free Software
+ Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2024 Free Software
Foundation, Inc.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/basename-lgpl.h b/tests/basename-lgpl.h
index 5569f219..2a56be98 100644
--- a/tests/basename-lgpl.h
+++ b/tests/basename-lgpl.h
@@ -1,6 +1,6 @@
/* Extract the last component (base name) of a file name.
- Copyright (C) 1998, 2001, 2003-2006, 2009-2022 Free Software Foundation,
+ Copyright (C) 1998, 2001, 2003-2006, 2009-2024 Free Software Foundation,
Inc.
This file is free software: you can redistribute it and/or modify
@@ -19,6 +19,11 @@
#ifndef _BASENAME_LGPL_H
#define _BASENAME_LGPL_H
+/* This file uses _GL_ATTRIBUTE_PURE. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#include <stddef.h>
#ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
diff --git a/tests/binary-io.c b/tests/binary-io.c
index ea407fd7..40f01d67 100644
--- a/tests/binary-io.c
+++ b/tests/binary-io.c
@@ -1,5 +1,5 @@
/* Binary mode I/O.
- Copyright 2017-2022 Free Software Foundation, Inc.
+ Copyright 2017-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/binary-io.h b/tests/binary-io.h
index 5b7661e2..0cc5c117 100644
--- a/tests/binary-io.h
+++ b/tests/binary-io.h
@@ -1,5 +1,5 @@
/* Binary mode I/O.
- Copyright (C) 2001, 2003, 2005, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2005, 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -17,6 +17,11 @@
#ifndef _BINARY_H
#define _BINARY_H
+/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, _GL_UNUSED. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* For systems that distinguish between text and binary I/O.
O_BINARY is guaranteed by the gnulib <fcntl.h>. */
#include <fcntl.h>
@@ -25,9 +30,6 @@
so we include it here first. */
#include <stdio.h>
-#ifndef _GL_INLINE_HEADER_BEGIN
- #error "Please include config.h first."
-#endif
_GL_INLINE_HEADER_BEGIN
#ifndef BINARY_IO_INLINE
# define BINARY_IO_INLINE _GL_INLINE
diff --git a/tests/bind.c b/tests/bind.c
index 199e0ba9..7c557448 100644
--- a/tests/bind.c
+++ b/tests/bind.c
@@ -1,6 +1,6 @@
/* bind.c --- wrappers for Windows bind function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/btoc32.c b/tests/btoc32.c
new file mode 100644
index 00000000..4f223059
--- /dev/null
+++ b/tests/btoc32.c
@@ -0,0 +1,68 @@
+/* Convert unibyte character to 32-bit wide character.
+ Copyright (C) 2020-2024 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2020. */
+
+#include <config.h>
+
+#define IN_BTOC32
+/* Specification. */
+#include <uchar.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+
+#if GL_CHAR32_T_IS_UNICODE
+# include "lc-charset-unicode.h"
+#endif
+
+#if _GL_WCHAR_T_IS_UCS4
+_GL_EXTERN_INLINE
+#endif
+wint_t
+btoc32 (int c)
+{
+#if HAVE_WORKING_MBRTOC32 && !_GL_WCHAR_T_IS_UCS4
+ /* The char32_t encoding of a multibyte character may be different than its
+ wchar_t encoding. */
+ if (c != EOF)
+ {
+ mbstate_t state;
+ char s[1];
+ char32_t wc;
+
+ mbszero (&state);
+ s[0] = (unsigned char) c;
+ if (mbrtoc32 (&wc, s, 1, &state) <= 1)
+ return wc;
+ }
+ return WEOF;
+#else
+ /* In all known locale encodings, unibyte characters correspond only to
+ characters in the BMP. */
+ wint_t wc = btowc (c);
+# if GL_CHAR32_T_IS_UNICODE && GL_CHAR32_T_VS_WCHAR_T_NEEDS_CONVERSION
+ if (wc != WEOF && wc != 0)
+ {
+ wc = locale_encoding_to_unicode (wc);
+ if (wc == 0)
+ return WEOF;
+ }
+# endif
+ return wc;
+#endif
+}
diff --git a/tests/btowc.c b/tests/btowc.c
index 4af58bb0..8bf21aa6 100644
--- a/tests/btowc.c
+++ b/tests/btowc.c
@@ -1,5 +1,5 @@
/* Convert unibyte character to wide character.
- Copyright (C) 2008, 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This file is free software: you can redistribute it and/or modify
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
wint_t
btowc (int c)
@@ -32,7 +33,14 @@ btowc (int c)
wchar_t wc;
buf[0] = c;
+#if HAVE_MBRTOWC
+ mbstate_t state;
+ mbszero (&state);
+ size_t ret = mbrtowc (&wc, buf, 1, &state);
+ if (!(ret == (size_t)(-1) || ret == (size_t)(-2)))
+#else
if (mbtowc (&wc, buf, 1) >= 0)
+#endif
return wc;
}
return WEOF;
diff --git a/tests/c++defs.h b/tests/c++defs.h
index ad181558..eb66967b 100644
--- a/tests/c++defs.h
+++ b/tests/c++defs.h
@@ -1,5 +1,5 @@
/* C++ compatible function declaration macros.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -99,6 +99,12 @@
Example:
_GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
_GL_ARG_NONNULL ((1)));
+
+ Note: Attributes, such as _GL_ATTRIBUTE_DEPRECATED, are supported in front
+ of a _GL_FUNCDECL_RPL invocation only in C mode, not in C++ mode. (That's
+ because
+ [[...]] extern "C" <declaration>;
+ is invalid syntax in C++.)
*/
#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
_GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
diff --git a/tests/c32rtomb.c b/tests/c32rtomb.c
new file mode 100644
index 00000000..260bf097
--- /dev/null
+++ b/tests/c32rtomb.c
@@ -0,0 +1,132 @@
+/* Convert 32-bit wide character to multibyte character.
+ Copyright (C) 2020-2024 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2020. */
+
+#include <config.h>
+
+/* Specification. */
+#include <uchar.h>
+
+#include <errno.h>
+#include <wchar.h>
+
+#include "attribute.h" /* FALLTHROUGH */
+#include "localcharset.h"
+#include "streq.h"
+
+#if GL_CHAR32_T_IS_UNICODE
+# include "lc-charset-unicode.h"
+#endif
+
+size_t
+c32rtomb (char *s, char32_t wc, mbstate_t *ps)
+#undef c32rtomb
+{
+#if HAVE_WORKING_MBRTOC32
+
+# if C32RTOMB_RETVAL_BUG
+ if (s == NULL)
+ /* We know the NUL wide character corresponds to the NUL character. */
+ return 1;
+# endif
+
+ return c32rtomb (s, wc, ps);
+
+#elif _GL_SMALL_WCHAR_T
+
+ if (s == NULL)
+ return wcrtomb (NULL, 0, ps);
+ else
+ {
+ /* Special-case all encodings that may produce wide character values
+ > WCHAR_MAX. */
+ const char *encoding = locale_charset ();
+ if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
+ {
+ /* Special-case the UTF-8 encoding. Assume that the wide-character
+ encoding in a UTF-8 locale is UCS-2 or, equivalently, UTF-16. */
+ if (wc < 0x80)
+ {
+ s[0] = (unsigned char) wc;
+ return 1;
+ }
+ else
+ {
+ int count;
+
+ if (wc < 0x800)
+ count = 2;
+ else if (wc < 0x10000)
+ {
+ if (wc < 0xd800 || wc >= 0xe000)
+ count = 3;
+ else
+ {
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+ }
+ else if (wc < 0x110000)
+ count = 4;
+ else
+ {
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+
+ switch (count) /* note: code falls through cases! */
+ {
+ case 4: s[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
+ FALLTHROUGH;
+ case 3: s[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
+ FALLTHROUGH;
+ case 2: s[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
+ /*case 1:*/ s[0] = wc;
+ }
+ return count;
+ }
+ }
+ else
+ {
+ if ((wchar_t) wc == wc)
+ return wcrtomb (s, (wchar_t) wc, ps);
+ else
+ {
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+ }
+ }
+
+#else
+
+ /* char32_t and wchar_t are equivalent. */
+# if GL_CHAR32_T_IS_UNICODE && GL_CHAR32_T_VS_WCHAR_T_NEEDS_CONVERSION
+ if (wc != 0)
+ {
+ wc = unicode_to_locale_encoding (wc);
+ if (wc == 0)
+ {
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+ }
+# endif
+ return wcrtomb (s, (wchar_t) wc, ps);
+
+#endif
+}
diff --git a/tests/c32tob.c b/tests/c32tob.c
new file mode 100644
index 00000000..901c9249
--- /dev/null
+++ b/tests/c32tob.c
@@ -0,0 +1,70 @@
+/* Convert 32-bit wide character to unibyte character.
+ Copyright (C) 2020-2024 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2020. */
+
+#include <config.h>
+
+#define IN_C32TOB
+/* Specification. */
+#include <uchar.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+
+#if GL_CHAR32_T_IS_UNICODE
+# include "lc-charset-unicode.h"
+#endif
+
+#if _GL_WCHAR_T_IS_UCS4
+_GL_EXTERN_INLINE
+#endif
+int
+c32tob (wint_t wc)
+{
+#if HAVE_WORKING_MBRTOC32 && !_GL_WCHAR_T_IS_UCS4
+ /* The char32_t encoding of a multibyte character may be different than its
+ wchar_t encoding. */
+ if (wc != WEOF)
+ {
+ mbstate_t state;
+ char buf[8];
+
+ mbszero (&state);
+ if (c32rtomb (buf, wc, &state) == 1)
+ return (unsigned char) buf[0];
+ }
+ return EOF;
+#elif _GL_SMALL_WCHAR_T
+ /* In all known encodings, unibyte characters correspond only to
+ characters in the BMP. */
+ if (wc != WEOF && (wchar_t) wc == wc)
+ return wctob ((wchar_t) wc);
+ else
+ return EOF;
+#else
+# if GL_CHAR32_T_IS_UNICODE && GL_CHAR32_T_VS_WCHAR_T_NEEDS_CONVERSION
+ if (wc != 0)
+ {
+ wc = unicode_to_locale_encoding (wc);
+ if (wc == 0)
+ return EOF;
+ }
+# endif
+ return wctob (wc);
+#endif
+}
diff --git a/tests/calloc.c b/tests/calloc.c
index 0a934b30..81dfd3ef 100644
--- a/tests/calloc.c
+++ b/tests/calloc.c
@@ -1,6 +1,6 @@
/* calloc() function that is glibc compatible.
This wrapper function is required at least on Tru64 UNIX 5.1 and mingw.
- Copyright (C) 2004-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2004-2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/cdefs.h b/tests/cdefs.h
new file mode 100644
index 00000000..d38382ad
--- /dev/null
+++ b/tests/cdefs.h
@@ -0,0 +1,715 @@
+/* Copyright (C) 1992-2024 Free Software Foundation, Inc.
+ Copyright The GNU Toolchain Authors.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_CDEFS_H
+#define _SYS_CDEFS_H 1
+
+/* We are almost always included from features.h. */
+#ifndef _FEATURES_H
+# include <features.h>
+#endif
+
+/* The GNU libc does not support any K&R compilers or the traditional mode
+ of ISO C compilers anymore. Check for some of the combinations not
+ supported anymore. */
+#if defined __GNUC__ && !defined __STDC__
+# error "You need a ISO C conforming compiler to use the glibc headers"
+#endif
+
+/* Some user header file might have defined this before. */
+#undef __P
+#undef __PMT
+
+/* Compilers that lack __has_attribute may object to
+ #if defined __has_attribute && __has_attribute (...)
+ even though they do not need to evaluate the right-hand side of the &&.
+ Similarly for __has_builtin, etc. */
+#if (defined __has_attribute \
+ && (!defined __clang_minor__ \
+ || (defined __apple_build_version__ \
+ ? 7000000 <= __apple_build_version__ \
+ : 5 <= __clang_major__)))
+# define __glibc_has_attribute(attr) __has_attribute (attr)
+#else
+# define __glibc_has_attribute(attr) 0
+#endif
+#ifdef __has_builtin
+# define __glibc_has_builtin(name) __has_builtin (name)
+#else
+# define __glibc_has_builtin(name) 0
+#endif
+#ifdef __has_extension
+# define __glibc_has_extension(ext) __has_extension (ext)
+#else
+# define __glibc_has_extension(ext) 0
+#endif
+
+#if defined __GNUC__ || defined __clang__
+
+/* All functions, except those with callbacks or those that
+ synchronize memory, are leaf functions. */
+# if __GNUC_PREREQ (4, 6) && !defined _LIBC
+# define __LEAF , __leaf__
+# define __LEAF_ATTR __attribute__ ((__leaf__))
+# else
+# define __LEAF
+# define __LEAF_ATTR
+# endif
+
+/* GCC can always grok prototypes. For C++ programs we add throw()
+ to help it optimize the function calls. But this only works with
+ gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
+ as non-throwing using a function attribute since programs can use
+ the -fexceptions options for C code as well. */
+# if !defined __cplusplus \
+ && (__GNUC_PREREQ (3, 4) || __glibc_has_attribute (__nothrow__))
+# define __THROW __attribute__ ((__nothrow__ __LEAF))
+# define __THROWNL __attribute__ ((__nothrow__))
+# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
+# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
+# else
+# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major >= 4)
+# if __cplusplus >= 201103L
+# define __THROW noexcept (true)
+# else
+# define __THROW throw ()
+# endif
+# define __THROWNL __THROW
+# define __NTH(fct) __LEAF_ATTR fct __THROW
+# define __NTHNL(fct) fct __THROW
+# else
+# define __THROW
+# define __THROWNL
+# define __NTH(fct) fct
+# define __NTHNL(fct) fct
+# endif
+# endif
+
+#else /* Not GCC or clang. */
+
+# if (defined __cplusplus \
+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
+# define __inline inline
+# else
+# define __inline /* No inline functions. */
+# endif
+
+# define __THROW
+# define __THROWNL
+# define __NTH(fct) fct
+
+#endif /* GCC || clang. */
+
+/* These two macros are not used in glibc anymore. They are kept here
+ only because some other projects expect the macros to be defined. */
+#define __P(args) args
+#define __PMT(args) args
+
+/* For these things, GCC behaves the ANSI way normally,
+ and the non-ANSI way under -traditional. */
+
+#define __CONCAT(x,y) x ## y
+#define __STRING(x) #x
+
+/* This is not a typedef so `const __ptr_t' does the right thing. */
+#define __ptr_t void *
+
+
+/* C++ needs to know that types and declarations are C, not C++. */
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS
+# define __END_DECLS
+#endif
+
+
+/* Gnulib avoids these definitions, as they don't work on non-glibc platforms.
+ In particular, __bos and __bos0 are defined differently in the Android libc.
+ */
+#ifndef __GNULIB_CDEFS
+
+/* Fortify support. */
+# define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+# define __bos0(ptr) __builtin_object_size (ptr, 0)
+
+/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */
+# if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \
+ || __GNUC_PREREQ (12, 0))
+# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0)
+# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1)
+# else
+# define __glibc_objsize0(__o) __bos0 (__o)
+# define __glibc_objsize(__o) __bos (__o)
+# endif
+
+/* Compile time conditions to choose between the regular, _chk and _chk_warn
+ variants. These conditions should get evaluated to constant and optimized
+ away. */
+
+# define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s))
+# define __glibc_unsigned_or_positive(__l) \
+ ((__typeof (__l)) 0 < (__typeof (__l)) -1 \
+ || (__builtin_constant_p (__l) && (__l) > 0))
+
+/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ
+ condition can be folded to a constant and if it is true, or unknown (-1) */
+# define __glibc_safe_or_unknown_len(__l, __s, __osz) \
+ ((__osz) == (__SIZE_TYPE__) -1 \
+ || (__glibc_unsigned_or_positive (__l) \
+ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
+ (__s), (__osz))) \
+ && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), (__s), (__osz))))
+
+/* Conversely, we know at compile time that the length is unsafe if the
+ __L * __S <= __OBJSZ condition can be folded to a constant and if it is
+ false. */
+# define __glibc_unsafe_len(__l, __s, __osz) \
+ (__glibc_unsigned_or_positive (__l) \
+ && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
+ __s, __osz)) \
+ && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
+
+/* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be
+ declared. */
+
+# define __glibc_fortify(f, __l, __s, __osz, ...) \
+ (__glibc_safe_or_unknown_len (__l, __s, __osz) \
+ ? __ ## f ## _alias (__VA_ARGS__) \
+ : (__glibc_unsafe_len (__l, __s, __osz) \
+ ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) \
+ : __ ## f ## _chk (__VA_ARGS__, __osz))) \
+
+/* Fortify function f, where object size argument passed to f is the number of
+ elements and not total size. */
+
+# define __glibc_fortify_n(f, __l, __s, __osz, ...) \
+ (__glibc_safe_or_unknown_len (__l, __s, __osz) \
+ ? __ ## f ## _alias (__VA_ARGS__) \
+ : (__glibc_unsafe_len (__l, __s, __osz) \
+ ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \
+ : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \
+
+#endif
+
+
+#if __GNUC_PREREQ (4,3)
+# define __warnattr(msg) __attribute__((__warning__ (msg)))
+# define __errordecl(name, msg) \
+ extern void name (void) __attribute__((__error__ (msg)))
+#else
+# define __warnattr(msg)
+# define __errordecl(name, msg) extern void name (void)
+#endif
+
+/* Support for flexible arrays.
+ Headers that should use flexible arrays only if they're "real"
+ (e.g. only if they won't affect sizeof()) should test
+ #if __glibc_c99_flexarr_available. */
+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc
+# define __flexarr []
+# define __glibc_c99_flexarr_available 1
+#elif __GNUC_PREREQ (2,97) || defined __clang__
+/* GCC 2.97 and clang support C99 flexible array members as an extension,
+ even when in C89 mode or compiling C++ (any version). */
+# define __flexarr []
+# define __glibc_c99_flexarr_available 1
+#elif defined __GNUC__
+/* Pre-2.97 GCC did not support C99 flexible arrays but did have
+ an equivalent extension with slightly different notation. */
+# define __flexarr [0]
+# define __glibc_c99_flexarr_available 1
+#else
+/* Some other non-C99 compiler. Approximate with [1]. */
+# define __flexarr [1]
+# define __glibc_c99_flexarr_available 0
+#endif
+
+
+/* __asm__ ("xyz") is used throughout the headers to rename functions
+ at the assembly language level. This is wrapped by the __REDIRECT
+ macro, in order to support compilers that can do this some other
+ way. When compilers don't support asm-names at all, we have to do
+ preprocessor tricks instead (which don't have exactly the right
+ semantics, but it's the best we can do).
+
+ Example:
+ int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
+
+#if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4)
+
+# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
+# ifdef __cplusplus
+# define __REDIRECT_NTH(name, proto, alias) \
+ name proto __THROW __asm__ (__ASMNAME (#alias))
+# define __REDIRECT_NTHNL(name, proto, alias) \
+ name proto __THROWNL __asm__ (__ASMNAME (#alias))
+# else
+# define __REDIRECT_NTH(name, proto, alias) \
+ name proto __asm__ (__ASMNAME (#alias)) __THROW
+# define __REDIRECT_NTHNL(name, proto, alias) \
+ name proto __asm__ (__ASMNAME (#alias)) __THROWNL
+# endif
+# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+# define __ASMNAME2(prefix, cname) __STRING (prefix) cname
+
+/*
+#elif __SOME_OTHER_COMPILER__
+
+# define __REDIRECT(name, proto, alias) name proto; \
+ _Pragma("let " #name " = " #alias)
+*/
+#endif
+
+/* GCC and clang have various useful declarations that can be made with
+ the '__attribute__' syntax. All of the ways we use this do fine if
+ they are omitted for compilers that don't understand it. */
+#if !(defined __GNUC__ || defined __clang__)
+# define __attribute__(xyz) /* Ignore */
+#endif
+
+/* At some point during the gcc 2.96 development the `malloc' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings. */
+#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__)
+# define __attribute_malloc__ __attribute__ ((__malloc__))
+#else
+# define __attribute_malloc__ /* Ignore */
+#endif
+
+/* Tell the compiler which arguments to an allocation function
+ indicate the size of the allocation. */
+#if __GNUC_PREREQ (4, 3)
+# define __attribute_alloc_size__(params) \
+ __attribute__ ((__alloc_size__ params))
+#else
+# define __attribute_alloc_size__(params) /* Ignore. */
+#endif
+
+/* Tell the compiler which argument to an allocation function
+ indicates the alignment of the allocation. */
+#if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__alloc_align__)
+# define __attribute_alloc_align__(param) \
+ __attribute__ ((__alloc_align__ param))
+#else
+# define __attribute_alloc_align__(param) /* Ignore. */
+#endif
+
+/* At some point during the gcc 2.96 development the `pure' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings. */
+#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__)
+# define __attribute_pure__ __attribute__ ((__pure__))
+#else
+# define __attribute_pure__ /* Ignore */
+#endif
+
+/* This declaration tells the compiler that the value is constant. */
+#if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__)
+# define __attribute_const__ __attribute__ ((__const__))
+#else
+# define __attribute_const__ /* Ignore */
+#endif
+
+#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
+# define __attribute_maybe_unused__ __attribute__ ((__unused__))
+#else
+# define __attribute_maybe_unused__ /* Ignore */
+#endif
+
+/* At some point during the gcc 3.1 development the `used' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings. */
+#if __GNUC_PREREQ (3,1) || __glibc_has_attribute (__used__)
+# define __attribute_used__ __attribute__ ((__used__))
+# define __attribute_noinline__ __attribute__ ((__noinline__))
+#else
+# define __attribute_used__ __attribute__ ((__unused__))
+# define __attribute_noinline__ /* Ignore */
+#endif
+
+/* Since version 3.2, gcc allows marking deprecated functions. */
+#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__deprecated__)
+# define __attribute_deprecated__ __attribute__ ((__deprecated__))
+#else
+# define __attribute_deprecated__ /* Ignore */
+#endif
+
+/* Since version 4.5, gcc also allows one to specify the message printed
+ when a deprecated function is used. clang claims to be gcc 4.2, but
+ may also support this feature. */
+#if __GNUC_PREREQ (4,5) \
+ || __glibc_has_extension (__attribute_deprecated_with_message__)
+# define __attribute_deprecated_msg__(msg) \
+ __attribute__ ((__deprecated__ (msg)))
+#else
+# define __attribute_deprecated_msg__(msg) __attribute_deprecated__
+#endif
+
+/* At some point during the gcc 2.8 development the `format_arg' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings.
+ If several `format_arg' attributes are given for the same function, in
+ gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+ all designated arguments are considered. */
+#if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__)
+# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
+#else
+# define __attribute_format_arg__(x) /* Ignore */
+#endif
+
+/* At some point during the gcc 2.97 development the `strfmon' format
+ attribute for functions was introduced. We don't want to use it
+ unconditionally (although this would be possible) since it
+ generates warnings. */
+#if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__)
+# define __attribute_format_strfmon__(a,b) \
+ __attribute__ ((__format__ (__strfmon__, a, b)))
+#else
+# define __attribute_format_strfmon__(a,b) /* Ignore */
+#endif
+
+/* The nonnull function attribute marks pointer parameters that
+ must not be NULL. This has the name __nonnull in glibc,
+ and __attribute_nonnull__ in files shared with Gnulib to avoid
+ collision with a different __nonnull in DragonFlyBSD 5.9. */
+#ifndef __attribute_nonnull__
+# if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__)
+# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))
+# else
+# define __attribute_nonnull__(params)
+# endif
+#endif
+#ifndef __nonnull
+# define __nonnull(params) __attribute_nonnull__ (params)
+#endif
+
+/* The returns_nonnull function attribute marks the return type of the function
+ as always being non-null. */
+#ifndef __returns_nonnull
+# if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__returns_nonnull__)
+# define __returns_nonnull __attribute__ ((__returns_nonnull__))
+# else
+# define __returns_nonnull
+# endif
+#endif
+
+/* If fortification mode, we warn about unused results of certain
+ function calls which can lead to problems. */
+#if __GNUC_PREREQ (3,4) || __glibc_has_attribute (__warn_unused_result__)
+# define __attribute_warn_unused_result__ \
+ __attribute__ ((__warn_unused_result__))
+# if defined __USE_FORTIFY_LEVEL && __USE_FORTIFY_LEVEL > 0
+# define __wur __attribute_warn_unused_result__
+# endif
+#else
+# define __attribute_warn_unused_result__ /* empty */
+#endif
+#ifndef __wur
+# define __wur /* Ignore */
+#endif
+
+/* Forces a function to be always inlined. */
+#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__always_inline__)
+/* The Linux kernel defines __always_inline in stddef.h (283d7573), and
+ it conflicts with this definition. Therefore undefine it first to
+ allow either header to be included first. */
+# undef __always_inline
+# define __always_inline __inline __attribute__ ((__always_inline__))
+#else
+# undef __always_inline
+# define __always_inline __inline
+#endif
+
+/* Associate error messages with the source location of the call site rather
+ than with the source location inside the function. */
+#if __GNUC_PREREQ (4,3) || __glibc_has_attribute (__artificial__)
+# define __attribute_artificial__ __attribute__ ((__artificial__))
+#else
+# define __attribute_artificial__ /* Ignore */
+#endif
+
+/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
+ or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
+ older than 4.3 may define these macros and still not guarantee GNU inlining
+ semantics.
+
+ clang++ identifies itself as gcc-4.2, but has support for GNU inlining
+ semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
+ __GNUC_GNU_INLINE__ macro definitions. */
+#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \
+ || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \
+ || defined __GNUC_GNU_INLINE__)))
+# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
+# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
+# define __extern_always_inline \
+ extern __always_inline __attribute__ ((__gnu_inline__))
+# else
+# define __extern_inline extern __inline
+# define __extern_always_inline extern __always_inline
+# endif
+#endif
+
+#ifdef __extern_always_inline
+# define __fortify_function __extern_always_inline __attribute_artificial__
+#endif
+
+/* GCC 4.3 and above allow passing all anonymous arguments of an
+ __extern_always_inline function to some other vararg function. */
+#if __GNUC_PREREQ (4,3)
+# define __va_arg_pack() __builtin_va_arg_pack ()
+# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
+#endif
+
+/* It is possible to compile containing GCC extensions even if GCC is
+ run in pedantic mode if the uses are carefully marked using the
+ `__extension__' keyword. But this is not generally available before
+ version 2.8. */
+#if !(__GNUC_PREREQ (2,8) || defined __clang__)
+# define __extension__ /* Ignore */
+#endif
+
+/* __restrict is known in EGCS 1.2 and above, and in clang.
+ It works also in C++ mode (outside of arrays), but only when spelled
+ as '__restrict', not 'restrict'. */
+#if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3)
+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+# define __restrict restrict
+# else
+# define __restrict /* Ignore */
+# endif
+#endif
+
+/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+ array_name[restrict]
+ GCC 3.1 and clang support this.
+ This syntax is not usable in C++ mode. */
+#if (__GNUC_PREREQ (3,1) || __clang_major__ >= 3) && !defined __cplusplus
+# define __restrict_arr __restrict
+#else
+# ifdef __GNUC__
+# define __restrict_arr /* Not supported in old GCC. */
+# else
+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+# define __restrict_arr restrict
+# else
+/* Some other non-C99 compiler. */
+# define __restrict_arr /* Not supported. */
+# endif
+# endif
+#endif
+
+#if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect)
+# define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
+# define __glibc_likely(cond) __builtin_expect ((cond), 1)
+#else
+# define __glibc_unlikely(cond) (cond)
+# define __glibc_likely(cond) (cond)
+#endif
+
+#if (!defined _Noreturn \
+ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
+ && !(__GNUC_PREREQ (4,7) \
+ || (3 < __clang_major__ + (5 <= __clang_minor__))))
+# if __GNUC_PREREQ (2,8)
+# define _Noreturn __attribute__ ((__noreturn__))
+# else
+# define _Noreturn
+# endif
+#endif
+
+#if __GNUC_PREREQ (8, 0)
+/* Describes a char array whose address can safely be passed as the first
+ argument to strncpy and strncat, as the char array is not necessarily
+ a NUL-terminated string. */
+# define __attribute_nonstring__ __attribute__ ((__nonstring__))
+#else
+# define __attribute_nonstring__
+#endif
+
+/* Undefine (also defined in libc-symbols.h). */
+#undef __attribute_copy__
+#if __GNUC_PREREQ (9, 0)
+/* Copies attributes from the declaration or type referenced by
+ the argument. */
+# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
+#else
+# define __attribute_copy__(arg)
+#endif
+
+#if (!defined _Static_assert && !defined __cplusplus \
+ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
+ && (!(__GNUC_PREREQ (4, 6) || __clang_major__ >= 4) \
+ || defined __STRICT_ANSI__))
+# define _Static_assert(expr, diagnostic) \
+ extern int (*__Static_assert_function (void)) \
+ [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
+#endif
+
+/* Gnulib avoids including these, as they don't work on non-glibc or
+ older glibc platforms. */
+#ifndef __GNULIB_CDEFS
+# include <bits/wordsize.h>
+# include <bits/long-double.h>
+#endif
+
+#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
+# ifdef __REDIRECT
+
+/* Alias name defined automatically. */
+# define __LDBL_REDIR(name, proto) ... unused__ldbl_redir
+# define __LDBL_REDIR_DECL(name) \
+ extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128"));
+
+/* Alias name defined automatically, with leading underscores. */
+# define __LDBL_REDIR2_DECL(name) \
+ extern __typeof (__##name) __##name \
+ __asm (__ASMNAME ("__" #name "ieee128"));
+
+/* Alias name defined manually. */
+# define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1
+# define __LDBL_REDIR1_DECL(name, alias) \
+ extern __typeof (name) name __asm (__ASMNAME (#alias));
+
+# define __LDBL_REDIR1_NTH(name, proto, alias) \
+ __REDIRECT_NTH (name, proto, alias)
+# define __REDIRECT_NTH_LDBL(name, proto, alias) \
+ __LDBL_REDIR1_NTH (name, proto, __##alias##ieee128)
+
+/* Unused. */
+# define __REDIRECT_LDBL(name, proto, alias) ... unused__redirect_ldbl
+# define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth
+
+# else
+_Static_assert (0, "IEEE 128-bits long double requires redirection on this platform");
+# endif
+#elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
+# define __LDBL_COMPAT 1
+# ifdef __REDIRECT
+# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)
+# define __LDBL_REDIR(name, proto) \
+ __LDBL_REDIR1 (name, proto, __nldbl_##name)
+# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
+# define __LDBL_REDIR_NTH(name, proto) \
+ __LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
+# define __LDBL_REDIR2_DECL(name) \
+ extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name));
+# define __LDBL_REDIR1_DECL(name, alias) \
+ extern __typeof (name) name __asm (__ASMNAME (#alias));
+# define __LDBL_REDIR_DECL(name) \
+ extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name));
+# define __REDIRECT_LDBL(name, proto, alias) \
+ __LDBL_REDIR1 (name, proto, __nldbl_##alias)
+# define __REDIRECT_NTH_LDBL(name, proto, alias) \
+ __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)
+# endif
+#endif
+#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \
+ || !defined __REDIRECT
+# define __LDBL_REDIR1(name, proto, alias) name proto
+# define __LDBL_REDIR(name, proto) name proto
+# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
+# define __LDBL_REDIR_NTH(name, proto) name proto __THROW
+# define __LDBL_REDIR2_DECL(name)
+# define __LDBL_REDIR_DECL(name)
+# ifdef __REDIRECT
+# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
+# define __REDIRECT_NTH_LDBL(name, proto, alias) \
+ __REDIRECT_NTH (name, proto, alias)
+# endif
+#endif
+
+/* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+ intended for use in preprocessor macros.
+
+ Note: MESSAGE must be a _single_ string; concatenation of string
+ literals is not supported. */
+#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
+# define __glibc_macro_warning1(message) _Pragma (#message)
+# define __glibc_macro_warning(message) \
+ __glibc_macro_warning1 (GCC warning message)
+#else
+# define __glibc_macro_warning(msg)
+#endif
+
+/* Generic selection (ISO C11) is a C-only feature, available in GCC
+ since version 4.9. Previous versions do not provide generic
+ selection, even though they might set __STDC_VERSION__ to 201112L,
+ when in -std=c11 mode. Thus, we must check for !defined __GNUC__
+ when testing __STDC_VERSION__ for generic selection support.
+ On the other hand, Clang also defines __GNUC__, so a clang-specific
+ check is required to enable the use of generic selection. */
+#if !defined __cplusplus \
+ && (__GNUC_PREREQ (4, 9) \
+ || __glibc_has_extension (c_generic_selections) \
+ || (!defined __GNUC__ && defined __STDC_VERSION__ \
+ && __STDC_VERSION__ >= 201112L))
+# define __HAVE_GENERIC_SELECTION 1
+#else
+# define __HAVE_GENERIC_SELECTION 0
+#endif
+
+#if __GNUC_PREREQ (10, 0)
+/* Designates a 1-based positional argument ref-index of pointer type
+ that can be used to access size-index elements of the pointed-to
+ array according to access mode, or at least one element when
+ size-index is not provided:
+ access (access-mode, <ref-index> [, <size-index>]) */
+# define __attr_access(x) __attribute__ ((__access__ x))
+/* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may
+ use the access attribute to get object sizes from function definition
+ arguments, so we can't use them on functions we fortify. Drop the object
+ size hints for such functions. */
+# if __USE_FORTIFY_LEVEL == 3
+# define __fortified_attr_access(a, o, s) __attribute__ ((__access__ (a, o)))
+# else
+# define __fortified_attr_access(a, o, s) __attr_access ((a, o, s))
+# endif
+# if __GNUC_PREREQ (11, 0)
+# define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno)))
+# else
+# define __attr_access_none(argno)
+# endif
+#else
+# define __fortified_attr_access(a, o, s)
+# define __attr_access(x)
+# define __attr_access_none(argno)
+#endif
+
+#if __GNUC_PREREQ (11, 0)
+/* Designates dealloc as a function to call to deallocate objects
+ allocated by the declared function. */
+# define __attr_dealloc(dealloc, argno) \
+ __attribute__ ((__malloc__ (dealloc, argno)))
+# define __attr_dealloc_free __attr_dealloc (__builtin_free, 1)
+#else
+# define __attr_dealloc(dealloc, argno)
+# define __attr_dealloc_free
+#endif
+
+/* Specify that a function such as setjmp or vfork may return
+ twice. */
+#if __GNUC_PREREQ (4, 1)
+# define __attribute_returns_twice__ __attribute__ ((__returns_twice__))
+#else
+# define __attribute_returns_twice__ /* Ignore. */
+#endif
+
+#endif /* sys/cdefs.h */
diff --git a/tests/cloexec.c b/tests/cloexec.c
index 812be01a..cdb0d740 100644
--- a/tests/cloexec.c
+++ b/tests/cloexec.c
@@ -1,6 +1,6 @@
/* cloexec.c - set or clear the close-on-exec descriptor flag
- Copyright (C) 1991, 2004-2006, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 1991, 2004-2006, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/cloexec.h b/tests/cloexec.h
index 15d2d5ef..f52e5f2e 100644
--- a/tests/cloexec.h
+++ b/tests/cloexec.h
@@ -1,6 +1,6 @@
/* cloexec.c - set or clear the close-on-exec descriptor flag
- Copyright (C) 2004, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/close.c b/tests/close.c
index 44990ba7..830fd820 100644
--- a/tests/close.c
+++ b/tests/close.c
@@ -1,5 +1,5 @@
/* close replacement.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/connect.c b/tests/connect.c
index d1600634..421849c1 100644
--- a/tests/connect.c
+++ b/tests/connect.c
@@ -1,6 +1,6 @@
/* connect.c --- wrappers for Windows connect function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/ctype.in.h b/tests/ctype.in.h
index dc81170d..61bcbf16 100644
--- a/tests/ctype.in.h
+++ b/tests/ctype.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C99 <ctype.h>, for platforms on which it is incomplete.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -36,6 +36,11 @@
#ifndef _@GUARD_PREFIX@_CTYPE_H
#define _@GUARD_PREFIX@_CTYPE_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_WARN_ON_USE is copied here. */
diff --git a/tests/dup2.c b/tests/dup2.c
index 1c766ab3..916e113d 100644
--- a/tests/dup2.c
+++ b/tests/dup2.c
@@ -1,6 +1,6 @@
/* Duplicate an open file descriptor to a specified file descriptor.
- Copyright (C) 1999, 2004-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2004-2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/error.c b/tests/error.c
index 272d45e4..c53dfeb6 100644
--- a/tests/error.c
+++ b/tests/error.c
@@ -1,5 +1,5 @@
/* Error handler for noninteractive utilities
- Copyright (C) 1990-1998, 2000-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 1990-1998, 2000-2007, 2009-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
@@ -19,9 +19,10 @@
#if !_LIBC
# include <config.h>
+# define _GL_NO_INLINE_ERROR
#endif
-#include "error.h"
+#include <error.h>
#include <stdarg.h>
#include <stdio.h>
@@ -42,8 +43,6 @@
# define USE_UNLOCKED_IO 0
# define _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD(a, b)
# define _GL_ARG_NONNULL(a)
-#else
-# include "getprogname.h"
#endif
#if USE_UNLOCKED_IO
diff --git a/tests/error.h b/tests/error.h
deleted file mode 100644
index 45ec2a5e..00000000
--- a/tests/error.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Declaration for error-reporting function
- Copyright (C) 1995-1997, 2003, 2006, 2008-2022 Free Software Foundation,
- Inc.
- This file is part of the GNU C Library.
-
- This file is free software: you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- This file 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 Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>. */
-
-#ifndef _ERROR_H
-#define _ERROR_H 1
-
-/* Get _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM. */
-#include <stdio.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Print a message with 'fprintf (stderr, FORMAT, ...)';
- if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
- If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */
-
-extern void error (int __status, int __errnum, const char *__format, ...)
-#if GNULIB_VFPRINTF_POSIX
- _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 4))
-#else
- _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM, 3, 4))
-#endif
- ;
-
-extern void error_at_line (int __status, int __errnum, const char *__fname,
- unsigned int __lineno, const char *__format, ...)
-#if GNULIB_VFPRINTF_POSIX
- _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 5, 6))
-#else
- _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM, 5, 6))
-#endif
- ;
-
-/* If NULL, error will flush stdout, then print on stderr the program
- name, a colon and a space. Otherwise, error will call this
- function without parameters instead. */
-extern void (*error_print_progname) (void);
-
-/* This variable is incremented each time 'error' is called. */
-extern unsigned int error_message_count;
-
-/* Sometimes we want to have at most one error per line. This
- variable controls whether this mode is selected or not. */
-extern int error_one_per_line;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* error.h */
diff --git a/tests/error.in.h b/tests/error.in.h
new file mode 100644
index 00000000..51f8cafd
--- /dev/null
+++ b/tests/error.in.h
@@ -0,0 +1,216 @@
+/* Declarations for error-reporting functions.
+ Copyright (C) 1995-1997, 2003, 2006, 2008-2024 Free Software Foundation,
+ Inc.
+ This file is part of the GNU C Library.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _@GUARD_PREFIX@_ERROR_H
+
+/* No @PRAGMA_SYSTEM_HEADER@ here, because it would prevent
+ -Wimplicit-fallthrough warnings for missing FALLTHROUGH after error(...)
+ or error_at_line(...) invocations. */
+
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_ERROR_H@
+# @INCLUDE_NEXT@ @NEXT_ERROR_H@
+#endif
+
+#ifndef _@GUARD_PREFIX@_ERROR_H
+#define _@GUARD_PREFIX@_ERROR_H
+
+/* This file uses _GL_ATTRIBUTE_ALWAYS_INLINE, _GL_ATTRIBUTE_FORMAT,
+ _GL_ATTRIBUTE_MAYBE_UNUSED. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
+/* Get 'unreachable'. */
+#include <stddef.h>
+
+/* Get _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM. */
+#include <stdio.h>
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+#if GNULIB_VFPRINTF_POSIX
+# define _GL_ATTRIBUTE_SPEC_PRINTF_ERROR _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD
+#else
+# define _GL_ATTRIBUTE_SPEC_PRINTF_ERROR _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM
+#endif
+
+/* Helper macro for supporting the compiler's control flow analysis better.
+ It evaluates its arguments only once.
+ Test case: Compile copy-file.c with "gcc -Wimplicit-fallthrough". */
+#if defined __GNUC__ || defined __clang__
+/* Use 'unreachable' to tell the compiler when the function call does not
+ return. */
+# define __gl_error_call1(function, status, ...) \
+ ((function) (status, __VA_ARGS__), \
+ (status) != 0 ? unreachable () : (void) 0)
+/* If STATUS is a not a constant, the function call may or may not return;
+ therefore -Wimplicit-fallthrough will produce a warning. Use a compound
+ statement in order to evaluate STATUS only once.
+ If STATUS is a constant, we don't use a compound statement, because that
+ would trigger a -Wimplicit-fallthrough warning even when STATUS is != 0,
+ when not optimizing. This causes STATUS to be evaluated twice, but
+ that's OK since it does not have side effects. */
+# define __gl_error_call(function, status, ...) \
+ (__builtin_constant_p (status) \
+ ? __gl_error_call1 (function, status, __VA_ARGS__) \
+ : __extension__ \
+ ({ \
+ int const __errstatus = status; \
+ __gl_error_call1 (function, __errstatus, __VA_ARGS__); \
+ }))
+#else
+# define __gl_error_call(function, status, ...) \
+ (function) (status, __VA_ARGS__)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with 'fprintf (stderr, FORMAT, ...)';
+ if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+ If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */
+#if @REPLACE_ERROR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef error
+# define error rpl_error
+# endif
+_GL_FUNCDECL_RPL (error, void,
+ (int __status, int __errnum, const char *__format, ...)
+ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 4)));
+_GL_CXXALIAS_RPL (error, void,
+ (int __status, int __errnum, const char *__format, ...));
+# ifndef _GL_NO_INLINE_ERROR
+# undef error
+# define error(status, ...) \
+ __gl_error_call (rpl_error, status, __VA_ARGS__)
+# endif
+#else
+# if ! @HAVE_ERROR@
+_GL_FUNCDECL_SYS (error, void,
+ (int __status, int __errnum, const char *__format, ...)
+ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 4)));
+# endif
+_GL_CXXALIAS_SYS (error, void,
+ (int __status, int __errnum, const char *__format, ...));
+# ifndef _GL_NO_INLINE_ERROR
+# ifdef error
+/* Only gcc ≥ 4.7 has __builtin_va_arg_pack. */
+# if _GL_GNUC_PREREQ (4, 7)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wattributes"
+_GL_ATTRIBUTE_MAYBE_UNUSED
+static void
+_GL_ATTRIBUTE_ALWAYS_INLINE
+_GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 4))
+_gl_inline_error (int __status, int __errnum, const char *__format, ...)
+{
+ return error (__status, __errnum, __format, __builtin_va_arg_pack ());
+}
+# pragma GCC diagnostic pop
+# undef error
+# define error(status, ...) \
+ __gl_error_call (_gl_inline_error, status, __VA_ARGS__)
+# endif
+# else
+# define error(status, ...) \
+ __gl_error_call (error, status, __VA_ARGS__)
+# endif
+# endif
+#endif
+#if __GLIBC__ >= 2
+_GL_CXXALIASWARN (error);
+#endif
+
+/* Likewise. If FILENAME is non-NULL, include FILENAME:LINENO: in the
+ message. */
+#if @REPLACE_ERROR_AT_LINE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef error_at_line
+# define error_at_line rpl_error_at_line
+# endif
+_GL_FUNCDECL_RPL (error_at_line, void,
+ (int __status, int __errnum, const char *__filename,
+ unsigned int __lineno, const char *__format, ...)
+ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 6)));
+_GL_CXXALIAS_RPL (error_at_line, void,
+ (int __status, int __errnum, const char *__filename,
+ unsigned int __lineno, const char *__format, ...));
+# ifndef _GL_NO_INLINE_ERROR
+# undef error_at_line
+# define error_at_line(status, ...) \
+ __gl_error_call (rpl_error_at_line, status, __VA_ARGS__)
+# endif
+#else
+# if ! @HAVE_ERROR_AT_LINE@
+_GL_FUNCDECL_SYS (error_at_line, void,
+ (int __status, int __errnum, const char *__filename,
+ unsigned int __lineno, const char *__format, ...)
+ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 6)));
+# endif
+_GL_CXXALIAS_SYS (error_at_line, void,
+ (int __status, int __errnum, const char *__filename,
+ unsigned int __lineno, const char *__format, ...));
+# ifndef _GL_NO_INLINE_ERROR
+# ifdef error_at_line
+/* Only gcc ≥ 4.7 has __builtin_va_arg_pack. */
+# if _GL_GNUC_PREREQ (4, 7)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wattributes"
+_GL_ATTRIBUTE_MAYBE_UNUSED
+static void
+_GL_ATTRIBUTE_ALWAYS_INLINE
+_GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 6))
+_gl_inline_error_at_line (int __status, int __errnum, const char *__filename,
+ unsigned int __lineno, const char *__format, ...)
+{
+ return error_at_line (__status, __errnum, __filename, __lineno, __format,
+ __builtin_va_arg_pack ());
+}
+# pragma GCC diagnostic pop
+# undef error_at_line
+# define error_at_line(status, ...) \
+ __gl_error_call (_gl_inline_error_at_line, status, __VA_ARGS__)
+# endif
+# else
+# define error_at_line(status, ...) \
+ __gl_error_call (error_at_line, status, __VA_ARGS__)
+# endif
+# endif
+#endif
+_GL_CXXALIASWARN (error_at_line);
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time 'error' is called. */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _@GUARD_PREFIX@_ERROR_H */
+#endif /* _@GUARD_PREFIX@_ERROR_H */
diff --git a/tests/exitfail.c b/tests/exitfail.c
index 84fb0eff..8a5962e8 100644
--- a/tests/exitfail.c
+++ b/tests/exitfail.c
@@ -1,6 +1,6 @@
/* Failure exit status
- Copyright (C) 2002-2003, 2005-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/exitfail.h b/tests/exitfail.h
index 865f096a..20ac506b 100644
--- a/tests/exitfail.h
+++ b/tests/exitfail.h
@@ -1,6 +1,6 @@
/* Failure exit status
- Copyright (C) 2002, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/fcntl.c b/tests/fcntl.c
index f9753c40..7cd3a0f9 100644
--- a/tests/fcntl.c
+++ b/tests/fcntl.c
@@ -1,6 +1,6 @@
/* Provide file descriptor control.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/fcntl.in.h b/tests/fcntl.in.h
index 9270ced8..eea3b954 100644
--- a/tests/fcntl.in.h
+++ b/tests/fcntl.in.h
@@ -1,6 +1,6 @@
/* Like <fcntl.h>, but with non-working flags defined to 0.
- Copyright (C) 2006-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -74,6 +74,11 @@
#ifndef _@GUARD_PREFIX@_FCNTL_H
#define _@GUARD_PREFIX@_FCNTL_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */
# include <unistd.h>
#endif
diff --git a/tests/fd-hook.c b/tests/fd-hook.c
index 64a7a80c..75bbe49c 100644
--- a/tests/fd-hook.c
+++ b/tests/fd-hook.c
@@ -1,5 +1,5 @@
/* Hook for making file descriptor functions close(), ioctl() extensible.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2009.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/fd-hook.h b/tests/fd-hook.h
index d6c4964d..2150460b 100644
--- a/tests/fd-hook.h
+++ b/tests/fd-hook.h
@@ -1,5 +1,5 @@
/* Hook for making file descriptor functions close(), ioctl() extensible.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/fdopen.c b/tests/fdopen.c
index f1c5dff1..5a8cd535 100644
--- a/tests/fdopen.c
+++ b/tests/fdopen.c
@@ -1,5 +1,5 @@
/* Open a stream with a given file descriptor.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/filename.h b/tests/filename.h
index ab77ca2d..4f0f0fbc 100644
--- a/tests/filename.h
+++ b/tests/filename.h
@@ -1,5 +1,5 @@
/* Basic filename support macros.
- Copyright (C) 2001-2022 Free Software Foundation, Inc.
+ Copyright (C) 2001-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
diff --git a/tests/fstat.c b/tests/fstat.c
index 3928c860..205d5aab 100644
--- a/tests/fstat.c
+++ b/tests/fstat.c
@@ -1,5 +1,5 @@
/* fstat() replacement.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/ftruncate.c b/tests/ftruncate.c
index 4a9279b7..63947257 100644
--- a/tests/ftruncate.c
+++ b/tests/ftruncate.c
@@ -1,5 +1,5 @@
/* ftruncate emulations for native Windows.
- Copyright (C) 1992-2022 Free Software Foundation, Inc.
+ Copyright (C) 1992-2024 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
diff --git a/tests/getcwd-lgpl.c b/tests/getcwd-lgpl.c
index f449ac85..67ed2878 100644
--- a/tests/getcwd-lgpl.c
+++ b/tests/getcwd-lgpl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is part of gnulib.
This file is free software: you can redistribute it and/or modify
@@ -45,12 +45,12 @@ typedef int dummy;
char *
rpl_getcwd (char *buf, size_t size)
{
- char *ptr;
char *result;
/* Handle single size operations. */
if (buf)
{
+ /* Check SIZE argument. */
if (!size)
{
errno = EINVAL;
@@ -79,7 +79,7 @@ rpl_getcwd (char *buf, size_t size)
{
char tmp[4032];
size = sizeof tmp;
- ptr = getcwd (tmp, size);
+ char *ptr = getcwd (tmp, size);
if (ptr)
{
result = strdup (ptr);
@@ -95,7 +95,7 @@ rpl_getcwd (char *buf, size_t size)
do
{
size <<= 1;
- ptr = realloc (buf, size);
+ char *ptr = realloc (buf, size);
if (ptr == NULL)
{
free (buf);
diff --git a/tests/getdtablesize.c b/tests/getdtablesize.c
index 793e0f88..762c100b 100644
--- a/tests/getdtablesize.c
+++ b/tests/getdtablesize.c
@@ -1,5 +1,5 @@
/* getdtablesize() function: Return maximum possible file descriptor value + 1.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/getpagesize.c b/tests/getpagesize.c
index a19669f6..d2031553 100644
--- a/tests/getpagesize.c
+++ b/tests/getpagesize.c
@@ -1,6 +1,6 @@
/* getpagesize emulation for systems where it cannot be done in a C macro.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/getprogname.c b/tests/getprogname.c
index 62a48004..392a9a2f 100644
--- a/tests/getprogname.c
+++ b/tests/getprogname.c
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2016-2022 Free Software Foundation, Inc.
+ Copyright (C) 2016-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
@@ -16,11 +16,10 @@
#include <config.h>
-/* Specification. */
-#include "getprogname.h"
+/* Specification. Also get __argv declaration. */
+#include <stdlib.h>
#include <errno.h> /* get program_invocation_name declaration */
-#include <stdlib.h> /* get __argv declaration */
#ifdef _AIX
# include <unistd.h>
@@ -53,13 +52,12 @@
#if defined __SCO_VERSION__ || defined __sysv5__
# include <fcntl.h>
-# include <stdlib.h>
# include <string.h>
#endif
#include "basename-lgpl.h"
-#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */
+#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Solaris >= 11, Cygwin, Android API level >= 21 */
char const *
getprogname (void)
{
@@ -214,7 +212,19 @@ getprogname (void)
{
char *s = strdup (last_component (buf.ps_pathptr));
if (s)
- p = s;
+ {
+# if defined __XPLINK__ && __CHARSET_LIB == 1
+ /* The compiler option -qascii is in use.
+ https://makingdeveloperslivesbetter.wordpress.com/2022/01/07/is-z-os-ascii-or-ebcdic-yes/
+ https://www.ibm.com/docs/en/zos/2.5.0?topic=features-macros-related-compiler-option-settings
+ So, convert the result from EBCDIC to ASCII.
+ https://www.ibm.com/docs/en/zos/2.5.0?topic=functions-e2a-s-convert-string-from-ebcdic-ascii */
+ if (__e2a_s (s) == (size_t)-1)
+ free (s);
+ else
+# endif
+ p = s;
+ }
break;
}
}
diff --git a/tests/getprogname.h b/tests/getprogname.h
index 9a35e584..bee1c1a2 100644
--- a/tests/getprogname.h
+++ b/tests/getprogname.h
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2016-2022 Free Software Foundation, Inc.
+ Copyright (C) 2016-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
@@ -19,22 +19,8 @@
#include <stdlib.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Return the base name of the executing program.
- On native Windows this will usually end in ".exe" or ".EXE". */
-#ifndef HAVE_GETPROGNAME
-extern char const *getprogname (void)
-# ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME
- _GL_ATTRIBUTE_PURE
-# endif
- ;
-#endif
-
-#ifdef __cplusplus
-}
+#if __GNUC__ || (__clang_major__ >= 4)
+# warning "The include file getprogname.h is deprecated. Use <stdlib.h> instead."
#endif
#endif
diff --git a/tests/gettext.h b/tests/gettext.h
index b3577a04..39d5ae4d 100644
--- a/tests/gettext.h
+++ b/tests/gettext.h
@@ -1,5 +1,5 @@
/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2022 Free Software
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2024 Free Software
Foundation, Inc.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/gettimeofday.c b/tests/gettimeofday.c
index 36c7920a..8dd26f73 100644
--- a/tests/gettimeofday.c
+++ b/tests/gettimeofday.c
@@ -1,6 +1,6 @@
/* Provide gettimeofday for systems that don't have it or for which it's broken.
- Copyright (C) 2001-2003, 2005-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -113,8 +113,10 @@ gettimeofday (struct timeval *restrict tv, void *restrict tz)
ULONGLONG since_1970 =
since_1601 - (ULONGLONG) 134774 * (ULONGLONG) 86400 * (ULONGLONG) 10000000;
ULONGLONG microseconds_since_1970 = since_1970 / (ULONGLONG) 10;
- tv->tv_sec = microseconds_since_1970 / (ULONGLONG) 1000000;
- tv->tv_usec = microseconds_since_1970 % (ULONGLONG) 1000000;
+ *tv = (struct timeval) {
+ .tv_sec = microseconds_since_1970 / (ULONGLONG) 1000000,
+ .tv_usec = microseconds_since_1970 % (ULONGLONG) 1000000
+ };
return 0;
@@ -127,10 +129,7 @@ gettimeofday (struct timeval *restrict tv, void *restrict tz)
struct timeval otv;
int result = gettimeofday (&otv, (struct timezone *) tz);
if (result == 0)
- {
- tv->tv_sec = otv.tv_sec;
- tv->tv_usec = otv.tv_usec;
- }
+ *tv = otv;
# else
int result = gettimeofday (tv, (struct timezone *) tz);
# endif
@@ -143,8 +142,7 @@ gettimeofday (struct timeval *restrict tv, void *restrict tz)
# error "Only 1-second nominal clock resolution found. Is that intended?" \
"If so, compile with the -DOK_TO_USE_1S_CLOCK option."
# endif
- tv->tv_sec = time (NULL);
- tv->tv_usec = 0;
+ *tv = (struct timeval) { .tv_sec = time (NULL), .tv_usec = 0 };
return 0;
diff --git a/tests/glthread/thread.c b/tests/glthread/thread.c
index 0b923c04..9c8c3035 100644
--- a/tests/glthread/thread.c
+++ b/tests/glthread/thread.c
@@ -1,5 +1,5 @@
/* Creating and controlling threads.
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -139,9 +139,11 @@ gl_thread_self (void)
/* Memory allocation failed. There is not much we can do. Have to
busy-loop, waiting for the availability of memory. */
{
- struct timespec ts;
- ts.tv_sec = 1;
- ts.tv_nsec = 0;
+ struct timespec ts =
+ {
+ .tv_sec = 1,
+ .tv_nsec = 0
+ };
thrd_sleep (&ts, NULL);
}
}
diff --git a/tests/glthread/thread.h b/tests/glthread/thread.h
index 6d98f2d6..748bb045 100644
--- a/tests/glthread/thread.h
+++ b/tests/glthread/thread.h
@@ -1,5 +1,5 @@
/* Creating and controlling threads.
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -70,6 +70,11 @@
#ifndef _GLTHREAD_THREAD_H
#define _GLTHREAD_THREAD_H
+/* This file uses _Noreturn, HAVE_THREADS_H, HAVE_PTHREAD_ATFORK. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#include <errno.h>
#include <stdlib.h>
@@ -125,6 +130,9 @@ extern _Noreturn void gl_thread_exit (void *return_value);
# include <pthread.h>
+/* Get intptr_t. */
+# include <stdint.h>
+
/* On IRIX, pthread_atfork is declared in <unistd.h>, not in <pthread.h>. */
# if defined __sgi
# include <unistd.h>
@@ -228,7 +236,7 @@ extern const gl_thread_t gl_null_thread;
# define gl_thread_self() \
(pthread_in_use () ? pthread_self () : (pthread_t) 0)
# define gl_thread_self_pointer() \
- (pthread_in_use () ? (void *) pthread_self () : NULL)
+ (pthread_in_use () ? (void *) (intptr_t) (pthread_t) pthread_self () : NULL)
# endif
# define gl_thread_exit(RETVAL) \
(void) (pthread_in_use () ? (pthread_exit (RETVAL), 0) : 0)
diff --git a/tests/glthread/yield.h b/tests/glthread/yield.h
index f74267ea..29105cc2 100644
--- a/tests/glthread/yield.h
+++ b/tests/glthread/yield.h
@@ -1,5 +1,5 @@
/* Yielding the processor to other threads and processes.
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/ialloc.c b/tests/ialloc.c
index 43c10433..8564a15b 100644
--- a/tests/ialloc.c
+++ b/tests/ialloc.c
@@ -1,6 +1,6 @@
/* malloc with idx_t rather than size_t
- Copyright 2021-2022 Free Software Foundation, Inc.
+ Copyright 2021-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/ialloc.h b/tests/ialloc.h
index 37cf4bfb..2aa94ae7 100644
--- a/tests/ialloc.h
+++ b/tests/ialloc.h
@@ -1,6 +1,6 @@
/* ialloc.h -- malloc with idx_t rather than size_t
- Copyright 2021-2022 Free Software Foundation, Inc.
+ Copyright 2021-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -18,15 +18,21 @@
#ifndef IALLOC_H_
#define IALLOC_H_
+/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, _GL_ATTRIBUTE_COLD,
+ _GL_ATTRIBUTE_MALLOC. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#include "idx.h"
#include <errno.h>
#include <stdint.h>
#include <stdlib.h>
-
-#ifndef _GL_INLINE_HEADER_BEGIN
- #error "Please include config.h first."
+#if defined __CHERI_PURE_CAPABILITY__
+# include <cheri.h>
#endif
+
_GL_INLINE_HEADER_BEGIN
#ifndef IALLOC_INLINE
# define IALLOC_INLINE _GL_INLINE
@@ -43,6 +49,9 @@ _gl_alloc_nomem (void)
return NULL;
}
+/* imalloc (size) is like malloc (size).
+ It returns a non-NULL pointer to size bytes of memory.
+ Upon failure, it returns NULL with errno set. */
IALLOC_INLINE
_GL_ATTRIBUTE_MALLOC /*_GL_ATTRIBUTE_DEALLOC_FREE*/
void *
@@ -51,16 +60,32 @@ imalloc (idx_t s)
return s <= SIZE_MAX ? malloc (s) : _gl_alloc_nomem ();
}
+/* irealloc (ptr, size) is like realloc (ptr, size).
+ It returns a non-NULL pointer to size bytes of memory.
+ Upon failure, it returns NULL with errno set. */
IALLOC_INLINE
/*_GL_ATTRIBUTE_DEALLOC_FREE*/
void *
irealloc (void *p, idx_t s)
{
- /* Work around GNU realloc glitch by treating a zero size as if it
- were 1, so that returning NULL is equivalent to failing. */
- return s <= SIZE_MAX ? realloc (p, s | !s) : _gl_alloc_nomem ();
+ if (s <= SIZE_MAX)
+ {
+ /* Work around GNU realloc glitch by treating a zero size as if it
+ were 1, so that returning NULL is equivalent to failing. */
+ p = realloc (p, s | !s);
+#if defined __CHERI_PURE_CAPABILITY__
+ if (p != NULL)
+ p = cheri_bounds_set (p, s);
+#endif
+ return p;
+ }
+ else
+ return _gl_alloc_nomem ();
}
+/* icalloc (num, size) is like calloc (num, size).
+ It returns a non-NULL pointer to num * size bytes of memory.
+ Upon failure, it returns NULL with errno set. */
IALLOC_INLINE
_GL_ATTRIBUTE_MALLOC /*_GL_ATTRIBUTE_DEALLOC_FREE*/
void *
@@ -81,20 +106,35 @@ icalloc (idx_t n, idx_t s)
return calloc (n, s);
}
+/* ireallocarray (ptr, num, size) is like reallocarray (ptr, num, size).
+ It returns a non-NULL pointer to num * size bytes of memory.
+ Upon failure, it returns NULL with errno set. */
IALLOC_INLINE void *
ireallocarray (void *p, idx_t n, idx_t s)
{
- /* Work around GNU reallocarray glitch by treating a zero size as if
- it were 1, so that returning NULL is equivalent to failing. */
- if (n == 0 || s == 0)
- n = s = 1;
- return (n <= SIZE_MAX && s <= SIZE_MAX
- ? reallocarray (p, n, s)
- : _gl_alloc_nomem ());
+ if (n <= SIZE_MAX && s <= SIZE_MAX)
+ {
+ /* Work around GNU reallocarray glitch by treating a zero size as if
+ it were 1, so that returning NULL is equivalent to failing. */
+ size_t nx = n;
+ size_t sx = s;
+ if (n == 0 || s == 0)
+ nx = sx = 1;
+ p = reallocarray (p, nx, sx);
+#if defined __CHERI_PURE_CAPABILITY__
+ if (p != NULL && (n == 0 || s == 0))
+ p = cheri_bounds_set (p, 0);
+#endif
+ return p;
+ }
+ else
+ return _gl_alloc_nomem ();
}
#ifdef __cplusplus
}
#endif
+_GL_INLINE_HEADER_END
+
#endif
diff --git a/tests/iconvsupport.c b/tests/iconvsupport.c
index ee2af0dd..e887eb0d 100644
--- a/tests/iconvsupport.c
+++ b/tests/iconvsupport.c
@@ -1,5 +1,5 @@
/* Test iconv support.
- Copyright (C) 2018-2022 Free Software Foundation, Inc.
+ Copyright (C) 2018-2024 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
diff --git a/tests/ignore-value.h b/tests/ignore-value.h
index 173b63f5..de4a240c 100644
--- a/tests/ignore-value.h
+++ b/tests/ignore-value.h
@@ -1,6 +1,6 @@
/* ignore a function return without a compiler warning. -*- coding: utf-8 -*-
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/inet_pton.c b/tests/inet_pton.c
index a239b7d1..2d29608d 100644
--- a/tests/inet_pton.c
+++ b/tests/inet_pton.c
@@ -1,6 +1,6 @@
/* inet_pton.c -- convert IPv4 and IPv6 addresses from text to binary form
- Copyright (C) 2006, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/infinity.h b/tests/infinity.h
index 6f68f368..40e663ff 100644
--- a/tests/infinity.h
+++ b/tests/infinity.h
@@ -1,5 +1,5 @@
/* Macros for infinity.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/init.sh b/tests/init.sh
index d5d37c98..c5ec5cfd 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -1,6 +1,6 @@
# source this file; set up for tests
-# Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# Copyright (C) 2009-2024 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
@@ -434,15 +434,15 @@ setup_ ()
# Remove relative and non-accessible directories from PATH, including '.'
# and Zero-length entries.
- saved_IFS="$IFS"
- IFS=:
+ saved_IFS="$IFS"; IFS="$PATH_SEPARATOR"
new_PATH=
- sep_=
for dir in $PATH; do
+ IFS="$saved_IFS"
case "$dir" in
- /*) test -d "$dir/." || continue
- new_PATH="${new_PATH}${sep_}${dir}"
- sep_=':';;
+ [\\/]* | ?:[\\/]*)
+ test -d "$dir/." || continue
+ new_PATH="${new_PATH}${new_PATH:+$PATH_SEPARATOR}${dir}"
+ ;;
esac
done
IFS="$saved_IFS"
@@ -646,18 +646,19 @@ compare_dev_null_ ()
for diff_opt_ in -u -U3 -c '' no; do
test "$diff_opt_" != no &&
- diff_out_=`exec 2>/dev/null; diff $diff_opt_ "$0" "$0" < /dev/null` &&
+ diff_out_=`exec 2>/dev/null
+ LC_ALL=C diff $diff_opt_ "$0" "$0" < /dev/null` &&
break
done
if test "$diff_opt_" != no; then
if test -z "$diff_out_"; then
- compare_ () { diff $diff_opt_ "$@"; }
+ compare_ () { LC_ALL=C diff $diff_opt_ "$@"; }
else
compare_ ()
{
# If no differences were found, AIX and HP-UX 'diff' produce output
# like "No differences encountered". Hide this output.
- diff $diff_opt_ "$@" > diff.out
+ LC_ALL=C diff $diff_opt_ "$@" > diff.out
diff_status_=$?
test $diff_status_ -eq 0 || cat diff.out || diff_status_=2
rm -f diff.out || diff_status_=2
@@ -702,4 +703,4 @@ test -f "$srcdir/init.cfg" \
setup_ "$@"
# This trap is here, rather than in the setup_ function, because some
# shells run the exit trap at shell function exit, rather than script exit.
-trap remove_tmp_ 0
+trap remove_tmp_ EXIT
diff --git a/tests/intprops-internal.h b/tests/intprops-internal.h
index f6455f78..c8a87d2b 100644
--- a/tests/intprops-internal.h
+++ b/tests/intprops-internal.h
@@ -1,6 +1,6 @@
/* intprops-internal.h -- properties of integer types not visible to users
- Copyright (C) 2001-2022 Free Software Foundation, Inc.
+ Copyright (C) 2001-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -20,6 +20,11 @@
#include <limits.h>
+/* Pacify GCC 13.2 in some calls to _GL_EXPR_SIGNED. */
+#if defined __GNUC__ && 4 < __GNUC__ + (3 <= __GNUC_MINOR__)
+# pragma GCC diagnostic ignored "-Wtype-limits"
+#endif
+
/* Return a value with the common real type of E and V and the value of V.
Do not evaluate E. */
#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v))
diff --git a/tests/intprops.h b/tests/intprops.h
index f182ddc1..43734f34 100644
--- a/tests/intprops.h
+++ b/tests/intprops.h
@@ -1,6 +1,6 @@
/* intprops.h -- properties of integer types
- Copyright (C) 2001-2022 Free Software Foundation, Inc.
+ Copyright (C) 2001-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
diff --git a/tests/ioctl.c b/tests/ioctl.c
index b1c7b2ee..3ee63fd8 100644
--- a/tests/ioctl.c
+++ b/tests/ioctl.c
@@ -1,6 +1,6 @@
/* ioctl.c --- wrappers for Windows ioctl function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/isblank.c b/tests/isblank.c
index e3545593..d16450aa 100644
--- a/tests/isblank.c
+++ b/tests/isblank.c
@@ -1,6 +1,6 @@
/* Test whether a character is a blank.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/libc-config.h b/tests/libc-config.h
new file mode 100644
index 00000000..70114608
--- /dev/null
+++ b/tests/libc-config.h
@@ -0,0 +1,204 @@
+/* System definitions for code taken from the GNU C Library
+
+ Copyright 2017-2024 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert. */
+
+/* This is intended to be a good-enough substitute for glibc system
+ macros like those defined in <sys/cdefs.h>, so that Gnulib code
+ shared with glibc can do this as the first #include:
+
+ #ifndef _LIBC
+ # include <libc-config.h>
+ #endif
+
+ When compiled as part of glibc this is a no-op; when compiled as
+ part of Gnulib this includes Gnulib's <config.h> and defines macros
+ that glibc library code would normally assume.
+
+ Note: This header file MUST NOT be included by public header files
+ of Gnulib. */
+
+#include <config.h>
+
+/* On glibc this includes <features.h> and <sys/cdefs.h> and #defines
+ _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 and
+ DragonFlyBSD 5.9 it includes <sys/cdefs.h> which defines __nonnull.
+ Elsewhere it is harmless. */
+#include <errno.h>
+
+/* From glibc <errno.h>. */
+#ifndef __set_errno
+# define __set_errno(val) (errno = (val))
+#endif
+
+/* From glibc <features.h>. */
+
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_MINOR__
+# define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= __GNUC_MINOR__))
+# else
+# define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#ifndef __glibc_clang_prereq
+# if defined __clang_major__ && defined __clang_minor__
+# ifdef __apple_build_version__
+/* Apple for some reason renumbers __clang_major__ and __clang_minor__.
+ Gnulib code uses only __glibc_clang_prereq (3, 5); map it to
+ 6000000 <= __apple_build_version__. Support for other calls to
+ __glibc_clang_prereq can be added here as needed. */
+# define __glibc_clang_prereq(maj, min) \
+ ((maj) == 3 && (min) == 5 ? 6000000 <= __apple_build_version__ : 0)
+# else
+# define __glibc_clang_prereq(maj, min) \
+ ((maj) < __clang_major__ + ((min) <= __clang_minor__))
+# endif
+# else
+# define __glibc_clang_prereq(maj, min) 0
+# endif
+#endif
+
+#ifndef __attribute_nonnull__
+/* <sys/cdefs.h> either does not exist, or is too old for Gnulib.
+ Prepare to include <cdefs.h>, which is Gnulib's version of a
+ more-recent glibc <sys/cdefs.h>. */
+
+/* Define _FEATURES_H so that <cdefs.h> does not include <features.h>. */
+# ifndef _FEATURES_H
+# define _FEATURES_H 1
+# endif
+/* Define __GNULIB_CDEFS so that <cdefs.h> does not attempt to include
+ nonexistent files. */
+# define __GNULIB_CDEFS
+/* Undef the macros unconditionally defined by our copy of glibc
+ <sys/cdefs.h>, so that they do not clash with any system-defined
+ versions. */
+# undef _SYS_CDEFS_H
+# undef __ASMNAME
+# undef __ASMNAME2
+# undef __BEGIN_DECLS
+# undef __CONCAT
+# undef __END_DECLS
+# undef __HAVE_GENERIC_SELECTION
+# undef __LDBL_COMPAT
+# undef __LDBL_REDIR
+# undef __LDBL_REDIR1
+# undef __LDBL_REDIR1_DECL
+# undef __LDBL_REDIR1_NTH
+# undef __LDBL_REDIR2_DECL
+# undef __LDBL_REDIR_DECL
+# undef __LDBL_REDIR_NTH
+# undef __LEAF
+# undef __LEAF_ATTR
+# undef __NTH
+# undef __NTHNL
+# undef __REDIRECT
+# undef __REDIRECT_LDBL
+# undef __REDIRECT_NTH
+# undef __REDIRECT_NTHNL
+# undef __REDIRECT_NTH_LDBL
+# undef __STRING
+# undef __THROW
+# undef __THROWNL
+# undef __attr_access
+# undef __attr_access_none
+# undef __attr_dealloc
+# undef __attr_dealloc_free
+# undef __attribute__
+# undef __attribute_alloc_align__
+# undef __attribute_alloc_size__
+# undef __attribute_artificial__
+# undef __attribute_const__
+# undef __attribute_deprecated__
+# undef __attribute_deprecated_msg__
+# undef __attribute_format_arg__
+# undef __attribute_format_strfmon__
+# undef __attribute_malloc__
+# undef __attribute_maybe_unused__
+# undef __attribute_noinline__
+# undef __attribute_nonstring__
+# undef __attribute_pure__
+# undef __attribute_returns_twice__
+# undef __attribute_used__
+# undef __attribute_warn_unused_result__
+# undef __errordecl
+# undef __extension__
+# undef __extern_always_inline
+# undef __extern_inline
+# undef __flexarr
+# undef __fortified_attr_access
+# undef __fortify_function
+# undef __glibc_c99_flexarr_available
+# undef __glibc_has_attribute
+# undef __glibc_has_builtin
+# undef __glibc_has_extension
+# undef __glibc_likely
+# undef __glibc_macro_warning
+# undef __glibc_macro_warning1
+# undef __glibc_unlikely
+# undef __inline
+# undef __ptr_t
+# undef __restrict
+# undef __restrict_arr
+# undef __va_arg_pack
+# undef __va_arg_pack_len
+# undef __warnattr
+# undef __wur
+# ifndef __GNULIB_CDEFS
+# undef __bos
+# undef __bos0
+# undef __glibc_fortify
+# undef __glibc_fortify_n
+# undef __glibc_objsize
+# undef __glibc_objsize0
+# undef __glibc_safe_len_cond
+# undef __glibc_safe_or_unknown_len
+# undef __glibc_unsafe_len
+# undef __glibc_unsigned_or_positive
+# endif
+
+/* Include our copy of glibc <sys/cdefs.h>. */
+# include <cdefs.h>
+
+/* <cdefs.h> __inline is too pessimistic for non-GCC. */
+# undef __inline
+# ifndef HAVE___INLINE
+# if 199901 <= __STDC_VERSION__ || defined inline
+# define __inline inline
+# else
+# define __inline
+# endif
+# endif
+
+#endif /* defined __glibc_likely */
+
+
+/* A substitute for glibc <libc-symbols.h>, good enough for Gnulib. */
+#define attribute_hidden
+#define libc_hidden_proto(name)
+#define libc_hidden_def(name)
+#define libc_hidden_weak(name)
+#define libc_hidden_ver(local, name)
+#define strong_alias(name, aliasname)
+#define weak_alias(name, aliasname)
+
+/* A substitute for glibc <shlib-compat.h>, good enough for Gnulib. */
+#define SHLIB_COMPAT(lib, introduced, obsoleted) 0
+#define compat_symbol(lib, local, symbol, version) extern int dummy
+#define versioned_symbol(lib, local, symbol, version) extern int dummy
diff --git a/tests/listen.c b/tests/listen.c
index e67bdc9e..785b1319 100644
--- a/tests/listen.c
+++ b/tests/listen.c
@@ -1,6 +1,6 @@
/* listen.c --- wrappers for Windows listen function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/locale.c b/tests/locale.c
index d7ae6103..bd2bc00e 100644
--- a/tests/locale.c
+++ b/tests/locale.c
@@ -1,5 +1,5 @@
/* Program that prints the names of the categories of the current locale.
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 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
diff --git a/tests/lstat.c b/tests/lstat.c
index 472bfbce..7c09957e 100644
--- a/tests/lstat.c
+++ b/tests/lstat.c
@@ -1,6 +1,6 @@
/* Work around a bug of lstat on some systems
- Copyright (C) 1997-2006, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 1997-2006, 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/macros.h b/tests/macros.h
index 7f5eb2de..d182cd6f 100644
--- a/tests/macros.h
+++ b/tests/macros.h
@@ -1,5 +1,5 @@
/* Common macros used by gnulib tests.
- Copyright (C) 2006-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006-2024 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
diff --git a/tests/malloc.c b/tests/malloc.c
index f334dd6e..2a7867a1 100644
--- a/tests/malloc.c
+++ b/tests/malloc.c
@@ -1,6 +1,6 @@
/* malloc() function that is glibc compatible.
- Copyright (C) 1997-1998, 2006-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 1997-1998, 2006-2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/mbtowc-impl.h b/tests/mbtowc-impl.h
index 2b27bafd..92efb4a7 100644
--- a/tests/mbtowc-impl.h
+++ b/tests/mbtowc-impl.h
@@ -1,5 +1,5 @@
/* Convert multibyte character to wide character.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This file is free software: you can redistribute it and/or modify
@@ -30,7 +30,7 @@ mbtowc (wchar_t *pwc, const char *s, size_t n)
wchar_t wc;
size_t result;
- memset (&state, 0, sizeof (mbstate_t));
+ mbszero (&state);
result = mbrtowc (&wc, s, n, &state);
if (result == (size_t)-1 || result == (size_t)-2)
{
diff --git a/tests/mbtowc.c b/tests/mbtowc.c
index a9a79951..31a2d635 100644
--- a/tests/mbtowc.c
+++ b/tests/mbtowc.c
@@ -1,5 +1,5 @@
/* Convert multibyte character to wide character.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/minus-zero.h b/tests/minus-zero.h
index d43d8e32..73a388f6 100644
--- a/tests/minus-zero.h
+++ b/tests/minus-zero.h
@@ -1,5 +1,5 @@
/* Macros for floating-point negative zero.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/msvc-inval.c b/tests/msvc-inval.c
index d6651caa..da3fc86a 100644
--- a/tests/msvc-inval.c
+++ b/tests/msvc-inval.c
@@ -1,5 +1,5 @@
/* Invalid parameter handler for MSVC runtime libraries.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/msvc-inval.h b/tests/msvc-inval.h
index 1230b899..7aee6e5d 100644
--- a/tests/msvc-inval.h
+++ b/tests/msvc-inval.h
@@ -1,5 +1,5 @@
/* Invalid parameter handler for MSVC runtime libraries.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -52,6 +52,11 @@
AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING])
*/
+/* This file uses HAVE_MSVC_INVALID_PARAMETER_HANDLER. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#define DEFAULT_HANDLING 0
#define HAIRY_LIBRARY_HANDLING 1
#define SANE_LIBRARY_HANDLING 2
diff --git a/tests/msvc-nothrow.c b/tests/msvc-nothrow.c
index aa069643..06b35a61 100644
--- a/tests/msvc-nothrow.c
+++ b/tests/msvc-nothrow.c
@@ -1,6 +1,6 @@
/* Wrappers that don't throw invalid parameter notifications
with MSVC runtime libraries.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/msvc-nothrow.h b/tests/msvc-nothrow.h
index 53451557..dc6dd35d 100644
--- a/tests/msvc-nothrow.h
+++ b/tests/msvc-nothrow.h
@@ -1,6 +1,6 @@
/* Wrappers that don't throw invalid parameter notifications
with MSVC runtime libraries.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -25,6 +25,11 @@
This file defines wrappers that turn such an invalid parameter notification
into an error code. */
+/* This file uses HAVE_MSVC_INVALID_PARAMETER_HANDLER. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#if defined _WIN32 && ! defined __CYGWIN__
/* Get original declaration of _get_osfhandle. */
diff --git a/tests/nan.h b/tests/nan.h
index 6a3a239a..d540a0bb 100644
--- a/tests/nan.h
+++ b/tests/nan.h
@@ -1,5 +1,5 @@
-/* Macros for not-a-number.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+/* Macros for quiet not-a-number.
+ Copyright (C) 2007-2024 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
@@ -14,6 +14,9 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
+#ifndef _GL_NAN_H
+#define _GL_NAN_H
+
/* IBM z/OS supports both hexadecimal and IEEE floating-point formats. The
former does not support NaN and its isnan() implementation returns zero
@@ -26,14 +29,15 @@
/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke
on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains.
- PGI 16.10 complains. */
+ PGI 16.10 complains. clang 13 on mips64 does incorrect constant-folding. */
#if (defined __DECC || defined _MSC_VER \
- || (defined __MVS__ && defined __IBMC__) \
- || defined __PGI)
+ || (defined __MVS__ && defined __IBMC__) \
+ || defined __PGI \
+ || defined __mips__)
static float
NaNf ()
{
- static float zero = 0.0f;
+ static float volatile zero = 0.0f;
return zero / zero;
}
#else
@@ -45,14 +49,15 @@ NaNf ()
/* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke
on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains.
- PGI 16.10 complains. */
+ PGI 16.10 complains. clang 13 on mips64 does incorrect constant-folding. */
#if (defined __DECC || defined _MSC_VER \
- || (defined __MVS__ && defined __IBMC__) \
- || defined __PGI)
+ || (defined __MVS__ && defined __IBMC__) \
+ || defined __PGI \
+ || defined __mips__)
static double
NaNd ()
{
- static double zero = 0.0;
+ static double volatile zero = 0.0;
return zero / zero;
}
#else
@@ -66,20 +71,27 @@ NaNd ()
runtime type conversion.
The Microsoft MSVC 9 compiler chokes on the expression 0.0L / 0.0L.
The IBM XL C compiler on z/OS complains.
- PGI 16.10 complains. */
+ PGI 16.10 complains.
+ Avoid possible incorrect constant-folding on mips. */
#ifdef __sgi
static long double NaNl ()
{
double zero = 0.0;
return zero / zero;
}
-#elif defined _MSC_VER || (defined __MVS__ && defined __IBMC__) || defined __PGI
+#elif (defined _MSC_VER \
+ || (defined __MVS__ && defined __IBMC__) \
+ || defined __PGI \
+ || defined __mips__)
static long double
NaNl ()
{
- static long double zero = 0.0L;
+ static long double volatile zero = 0.0L;
return zero / zero;
}
#else
# define NaNl() (0.0L / 0.0L)
#endif
+
+
+#endif /* _GL_NAN_H */
diff --git a/tests/nanosleep.c b/tests/nanosleep.c
index 55d6fa65..c6a76ec0 100644
--- a/tests/nanosleep.c
+++ b/tests/nanosleep.c
@@ -1,6 +1,6 @@
/* Provide a replacement for the POSIX nanosleep function.
- Copyright (C) 1999-2000, 2002, 2004-2022 Free Software Foundation, Inc.
+ Copyright (C) 1999-2000, 2002, 2004-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -60,8 +60,7 @@ nanosleep (const struct timespec *requested_delay,
static_assert (TYPE_MAXIMUM (time_t) / 24 / 24 / 60 / 60);
const time_t limit = 24 * 24 * 60 * 60;
time_t seconds = requested_delay->tv_sec;
- struct timespec intermediate;
- intermediate.tv_nsec = requested_delay->tv_nsec;
+ struct timespec intermediate = *requested_delay;
while (limit < seconds)
{
diff --git a/tests/nap.h b/tests/nap.h
index 37f8009c..cf7d998b 100644
--- a/tests/nap.h
+++ b/tests/nap.h
@@ -1,5 +1,5 @@
/* Assist in file system timestamp tests.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/netinet_in.in.h b/tests/netinet_in.in.h
index e23807ca..4e9f6f2d 100644
--- a/tests/netinet_in.in.h
+++ b/tests/netinet_in.in.h
@@ -1,5 +1,5 @@
/* Substitute for <netinet/in.h>.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/open.c b/tests/open.c
index 170bff10..e690c9ea 100644
--- a/tests/open.c
+++ b/tests/open.c
@@ -1,5 +1,5 @@
/* Open a descriptor to a file.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -38,9 +38,13 @@ orig_open (const char *filename, int flags, mode_t mode)
}
/* Specification. */
+#ifdef __osf__
/* Write "fcntl.h" here, not <fcntl.h>, otherwise OSF/1 5.1 DTK cc eliminates
this include because of the preliminary #include <fcntl.h> above. */
-#include "fcntl.h"
+# include "fcntl.h"
+#else
+# include <fcntl.h>
+#endif
#include "cloexec.h"
diff --git a/tests/pathmax.h b/tests/pathmax.h
index 19b93d7e..d6512c6f 100644
--- a/tests/pathmax.h
+++ b/tests/pathmax.h
@@ -1,5 +1,5 @@
/* Define PATH_MAX somehow. Requires sys/types.h.
- Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2022 Free Software
+ Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2024 Free Software
Foundation, Inc.
This file is free software: you can redistribute it and/or modify
@@ -39,6 +39,11 @@
#endif
*/
+/* This file uses HAVE_SYS_PARAM_H. */
+# if !_GL_CONFIG_H_INCLUDED
+# error "Please include config.h first."
+# endif
+
# include <unistd.h>
# include <limits.h>
diff --git a/tests/perror.c b/tests/perror.c
index 977a9a55..f29cd031 100644
--- a/tests/perror.c
+++ b/tests/perror.c
@@ -1,5 +1,5 @@
/* Print a message describing error code.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
Written by Bruno Haible and Simon Josefsson.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/pipe.c b/tests/pipe.c
index ce909b9f..fa6db541 100644
--- a/tests/pipe.c
+++ b/tests/pipe.c
@@ -1,5 +1,5 @@
/* Create a pipe.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/pselect.c b/tests/pselect.c
index a1eca0c6..54732e5c 100644
--- a/tests/pselect.c
+++ b/tests/pselect.c
@@ -1,6 +1,6 @@
/* pselect - synchronous I/O multiplexing
- Copyright 2011-2022 Free Software Foundation, Inc.
+ Copyright 2011-2024 Free Software Foundation, Inc.
This file is part of gnulib.
@@ -45,6 +45,12 @@ pselect (int nfds, fd_set *restrict rfds,
sigset_t origmask;
struct timeval tv, *tvp;
+ if (nfds < 0 || nfds > FD_SETSIZE)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
if (timeout)
{
if (! (0 <= timeout->tv_nsec && timeout->tv_nsec < 1000000000))
@@ -53,8 +59,10 @@ pselect (int nfds, fd_set *restrict rfds,
return -1;
}
- tv.tv_sec = timeout->tv_sec;
- tv.tv_usec = (timeout->tv_nsec + 999) / 1000;
+ tv = (struct timeval) {
+ .tv_sec = timeout->tv_sec,
+ .tv_usec = (timeout->tv_nsec + 999) / 1000
+ };
tvp = &tv;
}
else
diff --git a/tests/pthread-thread.c b/tests/pthread-thread.c
index a5f07fb2..b81748d1 100644
--- a/tests/pthread-thread.c
+++ b/tests/pthread-thread.c
@@ -1,5 +1,5 @@
/* Creating and controlling POSIX threads.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/pthread.in.h b/tests/pthread.in.h
index cf9ca3a4..cd705fbd 100644
--- a/tests/pthread.in.h
+++ b/tests/pthread.in.h
@@ -1,6 +1,6 @@
/* Implement the most essential subset of POSIX 1003.1-2008 pthread.h.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -51,6 +51,12 @@
#ifndef _@GUARD_PREFIX@_PTHREAD_H_
#define _@GUARD_PREFIX@_PTHREAD_H_
+/* This file uses _Noreturn, _GL_ATTRIBUTE_PURE, GNULIB_POSIXCHECK,
+ HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#define __need_system_stdlib_h
#include <stdlib.h>
#undef __need_system_stdlib_h
@@ -409,7 +415,21 @@ typedef pthread_mutex_t pthread_spinlock_t;
# define PTHREAD_PROCESS_PRIVATE 0
# define PTHREAD_PROCESS_SHARED 1
#else
-# if !@HAVE_PTHREAD_SPINLOCK_T@
+# if @HAVE_PTHREAD_SPINLOCK_T@
+/* <pthread.h> exists and defines pthread_spinlock_t. */
+# if !(((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) \
+ || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) \
+ || (((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) \
+ && !defined __ANDROID__) \
+ || __clang_major__ >= 3)) \
+ && !defined __ibmxl__)
+/* We can't use GCC built-ins. Approximate spinlocks with mutexes. */
+# if !GNULIB_defined_pthread_spin_types
+# define pthread_spinlock_t pthread_mutex_t
+# define GNULIB_defined_pthread_spin_types 1
+# endif
+# endif
+# else
/* Approximate spinlocks with mutexes. */
# if !GNULIB_defined_pthread_spin_types
typedef pthread_mutex_t pthread_spinlock_t;
diff --git a/tests/pthread_sigmask.c b/tests/pthread_sigmask.c
index cd4eb807..3b6e6e45 100644
--- a/tests/pthread_sigmask.c
+++ b/tests/pthread_sigmask.c
@@ -1,5 +1,5 @@
/* POSIX compatible signal blocking for threads.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/putenv.c b/tests/putenv.c
index b0d27e2f..2ab6f248 100644
--- a/tests/putenv.c
+++ b/tests/putenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2022 Free Software
+/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2024 Free Software
Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
diff --git a/tests/raise.c b/tests/raise.c
index 385ddd38..891f355a 100644
--- a/tests/raise.c
+++ b/tests/raise.c
@@ -1,6 +1,6 @@
/* Provide a non-threads replacement for the POSIX raise function.
- Copyright (C) 2002-2003, 2005-2006, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2006, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/random.c b/tests/random.c
new file mode 100644
index 00000000..97ba1691
--- /dev/null
+++ b/tests/random.c
@@ -0,0 +1,317 @@
+/* Copyright (C) 1995-2024 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/*
+ * This is derived from the Berkeley source:
+ * @(#)random.c 5.5 (Berkeley) 7/6/88
+ * It was reworked for the GNU C Library by Roland McGrath.
+ * Rewritten to use reentrant functions by Ulrich Drepper, 1995.
+ */
+
+/*
+ Copyright (C) 1983 Regents of the University of California.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.*/
+
+#ifndef _LIBC
+# include <libc-config.h>
+# define __srandom srandom
+# define __initstate initstate
+# define __setstate setstate
+# define __random random
+# define __srandom_r srandom_r
+# define __initstate_r initstate_r
+# define __setstate_r setstate_r
+# define __random_r random_r
+#endif
+
+/* Specification. */
+#include <stdlib.h>
+
+#ifdef _LIBC
+# include <libc-lock.h>
+#else
+# include "glthread/lock.h"
+# define __libc_lock_define_initialized gl_lock_define_initialized
+# define __libc_lock_lock gl_lock_lock
+# define __libc_lock_unlock gl_lock_unlock
+#endif
+
+/* An improved random number generation package. In addition to the standard
+ rand()/srand() like interface, this package also has a special state info
+ interface. The initstate() routine is called with a seed, an array of
+ bytes, and a count of how many bytes are being passed in; this array is
+ then initialized to contain information for random number generation with
+ that much state information. Good sizes for the amount of state
+ information are 32, 64, 128, and 256 bytes. The state can be switched by
+ calling the setstate() function with the same array as was initialized
+ with initstate(). By default, the package runs with 128 bytes of state
+ information and generates far better random numbers than a linear
+ congruential generator. If the amount of state information is less than
+ 32 bytes, a simple linear congruential R.N.G. is used. Internally, the
+ state information is treated as an array of longs; the zeroth element of
+ the array is the type of R.N.G. being used (small integer); the remainder
+ of the array is the state information for the R.N.G. Thus, 32 bytes of
+ state information will give 7 longs worth of state information, which will
+ allow a degree seven polynomial. (Note: The zeroth word of state
+ information also has some other information stored in it; see setstate
+ for details). The random number generation technique is a linear feedback
+ shift register approach, employing trinomials (since there are fewer terms
+ to sum up that way). In this approach, the least significant bit of all
+ the numbers in the state table will act as a linear feedback shift register,
+ and will have period 2^deg - 1 (where deg is the degree of the polynomial
+ being used, assuming that the polynomial is irreducible and primitive).
+ The higher order bits will have longer periods, since their values are
+ also influenced by pseudo-random carries out of the lower bits. The
+ total period of the generator is approximately deg*(2**deg - 1); thus
+ doubling the amount of state information has a vast influence on the
+ period of the generator. Note: The deg*(2**deg - 1) is an approximation
+ only good for large deg, when the period of the shift register is the
+ dominant factor. With deg equal to seven, the period is actually much
+ longer than the 7*(2**7 - 1) predicted by this formula. */
+
+
+
+/* For each of the currently supported random number generators, we have a
+ break value on the amount of state information (you need at least this many
+ bytes of state info to support this random number generator), a degree for
+ the polynomial (actually a trinomial) that the R.N.G. is based on, and
+ separation between the two lower order coefficients of the trinomial. */
+
+/* Linear congruential. */
+#define TYPE_0 0
+#define BREAK_0 8
+#define DEG_0 0
+#define SEP_0 0
+
+/* x**7 + x**3 + 1. */
+#define TYPE_1 1
+#define BREAK_1 32
+#define DEG_1 7
+#define SEP_1 3
+
+/* x**15 + x + 1. */
+#define TYPE_2 2
+#define BREAK_2 64
+#define DEG_2 15
+#define SEP_2 1
+
+/* x**31 + x**3 + 1. */
+#define TYPE_3 3
+#define BREAK_3 128
+#define DEG_3 31
+#define SEP_3 3
+
+/* x**63 + x + 1. */
+#define TYPE_4 4
+#define BREAK_4 256
+#define DEG_4 63
+#define SEP_4 1
+
+
+/* Array versions of the above information to make code run faster.
+ Relies on fact that TYPE_i == i. */
+
+#define MAX_TYPES 5 /* Max number of types above. */
+
+
+/* Initially, everything is set up as if from:
+ initstate(1, randtbl, 128);
+ Note that this initialization takes advantage of the fact that srandom
+ advances the front and rear pointers 10*rand_deg times, and hence the
+ rear pointer which starts at 0 will also end up at zero; thus the zeroth
+ element of the state information, which contains info about the current
+ position of the rear pointer is just
+ (MAX_TYPES * (rptr - state)) + TYPE_3 == TYPE_3. */
+
+static int32_t randtbl[DEG_3 + 1] =
+ {
+ TYPE_3,
+
+ -1726662223, 379960547, 1735697613, 1040273694, 1313901226,
+ 1627687941, -179304937, -2073333483, 1780058412, -1989503057,
+ -615974602, 344556628, 939512070, -1249116260, 1507946756,
+ -812545463, 154635395, 1388815473, -1926676823, 525320961,
+ -1009028674, 968117788, -123449607, 1284210865, 435012392,
+ -2017506339, -911064859, -370259173, 1132637927, 1398500161,
+ -205601318,
+ };
+
+
+static struct random_data unsafe_state =
+ {
+/* FPTR and RPTR are two pointers into the state info, a front and a rear
+ pointer. These two pointers are always rand_sep places apart, as they
+ cycle through the state information. (Yes, this does mean we could get
+ away with just one pointer, but the code for random is more efficient
+ this way). The pointers are left positioned as they would be from the call:
+ initstate(1, randtbl, 128);
+ (The position of the rear pointer, rptr, is really 0 (as explained above
+ in the initialization of randtbl) because the state table pointer is set
+ to point to randtbl[1] (as explained below).) */
+
+ .fptr = &randtbl[SEP_3 + 1],
+ .rptr = &randtbl[1],
+
+/* The following things are the pointer to the state information table,
+ the type of the current generator, the degree of the current polynomial
+ being used, and the separation between the two pointers.
+ Note that for efficiency of random, we remember the first location of
+ the state information, not the zeroth. Hence it is valid to access
+ state[-1], which is used to store the type of the R.N.G.
+ Also, we remember the last location, since this is more efficient than
+ indexing every time to find the address of the last element to see if
+ the front and rear pointers have wrapped. */
+
+ .state = &randtbl[1],
+
+ .rand_type = TYPE_3,
+ .rand_deg = DEG_3,
+ .rand_sep = SEP_3,
+
+ .end_ptr = &randtbl[sizeof (randtbl) / sizeof (randtbl[0])]
+};
+
+/* POSIX.1c requires that there is mutual exclusion for the 'rand' and
+ 'srand' functions to prevent concurrent calls from modifying common
+ data. */
+__libc_lock_define_initialized (static, lock)
+
+/* Initialize the random number generator based on the given seed. If the
+ type is the trivial no-state-information type, just remember the seed.
+ Otherwise, initializes state[] based on the given "seed" via a linear
+ congruential generator. Then, the pointers are set to known locations
+ that are exactly rand_sep places apart. Lastly, it cycles the state
+ information a given number of times to get rid of any initial dependencies
+ introduced by the L.C.R.N.G. Note that the initialization of randtbl[]
+ for default usage relies on values produced by this routine. */
+void
+__srandom (unsigned int x)
+{
+ __libc_lock_lock (lock);
+ (void) __srandom_r (x, &unsafe_state);
+ __libc_lock_unlock (lock);
+}
+
+weak_alias (__srandom, srandom)
+weak_alias (__srandom, srand)
+
+/* Initialize the state information in the given array of N bytes for
+ future random number generation. Based on the number of bytes we
+ are given, and the break values for the different R.N.G.'s, we choose
+ the best (largest) one we can and set things up for it. srandom is
+ then called to initialize the state information. Note that on return
+ from srandom, we set state[-1] to be the type multiplexed with the current
+ value of the rear pointer; this is so successive calls to initstate won't
+ lose this information and will be able to restart with setstate.
+ Note: The first thing we do is save the current state, if any, just like
+ setstate so that it doesn't matter when initstate is called.
+ Returns a pointer to the old state. */
+char *
+__initstate (unsigned int seed, char *arg_state, size_t n)
+{
+ int32_t *ostate;
+ int ret;
+
+ __libc_lock_lock (lock);
+
+ ostate = &unsafe_state.state[-1];
+
+ ret = __initstate_r (seed, arg_state, n, &unsafe_state);
+
+ __libc_lock_unlock (lock);
+
+ return ret == -1 ? NULL : (char *) ostate;
+}
+
+weak_alias (__initstate, initstate)
+
+/* Restore the state from the given state array.
+ Note: It is important that we also remember the locations of the pointers
+ in the current state information, and restore the locations of the pointers
+ from the old state information. This is done by multiplexing the pointer
+ location into the zeroth word of the state information. Note that due
+ to the order in which things are done, it is OK to call setstate with the
+ same state as the current state
+ Returns a pointer to the old state information. */
+char *
+__setstate (char *arg_state)
+{
+ int32_t *ostate;
+
+ __libc_lock_lock (lock);
+
+ ostate = &unsafe_state.state[-1];
+
+ if (__setstate_r (arg_state, &unsafe_state) < 0)
+ ostate = NULL;
+
+ __libc_lock_unlock (lock);
+
+ return (char *) ostate;
+}
+
+weak_alias (__setstate, setstate)
+
+/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
+ congruential bit. Otherwise, we do our fancy trinomial stuff, which is the
+ same in all the other cases due to all the global variables that have been
+ set up. The basic operation is to add the number at the rear pointer into
+ the one at the front pointer. Then both pointers are advanced to the next
+ location cyclically in the table. The value returned is the sum generated,
+ reduced to 31 bits by throwing away the "least random" low bit.
+ Note: The code takes advantage of the fact that both the front and
+ rear pointers can't wrap on the same call by not testing the rear
+ pointer if the front one has wrapped. Returns a 31-bit random number. */
+
+long int
+__random (void)
+{
+ int32_t retval;
+
+ __libc_lock_lock (lock);
+
+ (void) __random_r (&unsafe_state, &retval);
+
+ __libc_lock_unlock (lock);
+
+ return retval;
+}
+
+weak_alias (__random, random)
diff --git a/tests/random_r.c b/tests/random_r.c
new file mode 100644
index 00000000..b0ab81ac
--- /dev/null
+++ b/tests/random_r.c
@@ -0,0 +1,430 @@
+/*
+ Copyright (C) 1995-2024 Free Software Foundation, Inc.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+/*
+ Copyright (C) 1983 Regents of the University of California.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.*/
+
+/*
+ * This is derived from the Berkeley source:
+ * @(#)random.c 5.5 (Berkeley) 7/6/88
+ * It was reworked for the GNU C Library by Roland McGrath.
+ * Rewritten to be reentrant by Ulrich Drepper, 1995
+ */
+
+#ifndef _LIBC
+/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc
+ optimizes away the buf == NULL, arg_state == NULL, result == NULL tests
+ below. */
+# define _GL_ARG_NONNULL(params)
+
+# include <libc-config.h>
+# define __srandom_r srandom_r
+# define __initstate_r initstate_r
+# define __setstate_r setstate_r
+# define __random_r random_r
+#endif
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <errno.h>
+#include <stddef.h>
+#include <string.h>
+
+
+/* An improved random number generation package. In addition to the standard
+ rand()/srand() like interface, this package also has a special state info
+ interface. The initstate() routine is called with a seed, an array of
+ bytes, and a count of how many bytes are being passed in; this array is
+ then initialized to contain information for random number generation with
+ that much state information. Good sizes for the amount of state
+ information are 32, 64, 128, and 256 bytes. The state can be switched by
+ calling the setstate() function with the same array as was initialized
+ with initstate(). By default, the package runs with 128 bytes of state
+ information and generates far better random numbers than a linear
+ congruential generator. If the amount of state information is less than
+ 32 bytes, a simple linear congruential R.N.G. is used. Internally, the
+ state information is treated as an array of longs; the zeroth element of
+ the array is the type of R.N.G. being used (small integer); the remainder
+ of the array is the state information for the R.N.G. Thus, 32 bytes of
+ state information will give 7 longs worth of state information, which will
+ allow a degree seven polynomial. (Note: The zeroth word of state
+ information also has some other information stored in it; see setstate
+ for details). The random number generation technique is a linear feedback
+ shift register approach, employing trinomials (since there are fewer terms
+ to sum up that way). In this approach, the least significant bit of all
+ the numbers in the state table will act as a linear feedback shift register,
+ and will have period 2^deg - 1 (where deg is the degree of the polynomial
+ being used, assuming that the polynomial is irreducible and primitive).
+ The higher order bits will have longer periods, since their values are
+ also influenced by pseudo-random carries out of the lower bits. The
+ total period of the generator is approximately deg*(2**deg - 1); thus
+ doubling the amount of state information has a vast influence on the
+ period of the generator. Note: The deg*(2**deg - 1) is an approximation
+ only good for large deg, when the period of the shift register is the
+ dominant factor. With deg equal to seven, the period is actually much
+ longer than the 7*(2**7 - 1) predicted by this formula. */
+
+
+
+/* For each of the currently supported random number generators, we have a
+ break value on the amount of state information (you need at least this many
+ bytes of state info to support this random number generator), a degree for
+ the polynomial (actually a trinomial) that the R.N.G. is based on, and
+ separation between the two lower order coefficients of the trinomial. */
+
+/* Linear congruential. */
+#define TYPE_0 0
+#define BREAK_0 8
+#define DEG_0 0
+#define SEP_0 0
+
+/* x**7 + x**3 + 1. */
+#define TYPE_1 1
+#define BREAK_1 32
+#define DEG_1 7
+#define SEP_1 3
+
+/* x**15 + x + 1. */
+#define TYPE_2 2
+#define BREAK_2 64
+#define DEG_2 15
+#define SEP_2 1
+
+/* x**31 + x**3 + 1. */
+#define TYPE_3 3
+#define BREAK_3 128
+#define DEG_3 31
+#define SEP_3 3
+
+/* x**63 + x + 1. */
+#define TYPE_4 4
+#define BREAK_4 256
+#define DEG_4 63
+#define SEP_4 1
+
+
+/* Array versions of the above information to make code run faster.
+ Relies on fact that TYPE_i == i. */
+
+#define MAX_TYPES 5 /* Max number of types above. */
+
+struct random_poly_info
+{
+ int seps[MAX_TYPES];
+ int degrees[MAX_TYPES];
+};
+
+static const struct random_poly_info random_poly_info =
+{
+ { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 },
+ { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 }
+};
+
+static int32_t
+get_int32 (void *p)
+{
+ int32_t v;
+ memcpy (&v, p, sizeof v);
+ return v;
+}
+
+static void
+set_int32 (void *p, int32_t v)
+{
+ memcpy (p, &v, sizeof v);
+}
+
+
+/* Initialize the random number generator based on the given seed. If the
+ type is the trivial no-state-information type, just remember the seed.
+ Otherwise, initializes state[] based on the given "seed" via a linear
+ congruential generator. Then, the pointers are set to known locations
+ that are exactly rand_sep places apart. Lastly, it cycles the state
+ information a given number of times to get rid of any initial dependencies
+ introduced by the L.C.R.N.G. Note that the initialization of randtbl[]
+ for default usage relies on values produced by this routine. */
+int
+__srandom_r (unsigned int seed, struct random_data *buf)
+{
+ int type;
+ int32_t *state;
+ long int i;
+ int32_t word;
+ int32_t *dst;
+ int kc;
+
+ if (buf == NULL)
+ goto fail;
+ type = buf->rand_type;
+ if ((unsigned int) type >= MAX_TYPES)
+ goto fail;
+
+ state = buf->state;
+ /* We must make sure the seed is not 0. Take arbitrarily 1 in this case. */
+ if (seed == 0)
+ seed = 1;
+ set_int32 (&state[0], seed);
+ if (type == TYPE_0)
+ goto done;
+
+ dst = state;
+ word = seed;
+ kc = buf->rand_deg;
+ for (i = 1; i < kc; ++i)
+ {
+ /* This does:
+ state[i] = (16807 * state[i - 1]) % 2147483647;
+ but avoids overflowing 31 bits. */
+ long int hi = word / 127773;
+ long int lo = word % 127773;
+ word = 16807 * lo - 2836 * hi;
+ if (word < 0)
+ word += 2147483647;
+ set_int32 (++dst, word);
+ }
+
+ buf->fptr = &state[buf->rand_sep];
+ buf->rptr = &state[0];
+ kc *= 10;
+ while (--kc >= 0)
+ {
+ int32_t discard;
+ (void) __random_r (buf, &discard);
+ }
+
+ done:
+ return 0;
+
+ fail:
+ return -1;
+}
+
+weak_alias (__srandom_r, srandom_r)
+
+/* Initialize the state information in the given array of N bytes for
+ future random number generation. Based on the number of bytes we
+ are given, and the break values for the different R.N.G.'s, we choose
+ the best (largest) one we can and set things up for it. srandom is
+ then called to initialize the state information. Note that on return
+ from srandom, we set state[-1] to be the type multiplexed with the current
+ value of the rear pointer; this is so successive calls to initstate won't
+ lose this information and will be able to restart with setstate.
+ Note: The first thing we do is save the current state, if any, just like
+ setstate so that it doesn't matter when initstate is called.
+ Returns 0 on success, non-zero on failure. */
+int
+__initstate_r (unsigned int seed, char *arg_state, size_t n,
+ struct random_data *buf)
+{
+ if (buf == NULL)
+ goto fail;
+
+ int32_t *old_state = buf->state;
+ if (old_state != NULL)
+ {
+ int old_type = buf->rand_type;
+ set_int32 (&old_state[-1],
+ (old_type == TYPE_0
+ ? TYPE_0
+ : (MAX_TYPES * (buf->rptr - old_state)) + old_type));
+ }
+
+ int type;
+ if (n >= BREAK_3)
+ type = n < BREAK_4 ? TYPE_3 : TYPE_4;
+ else if (n < BREAK_1)
+ {
+ if (n < BREAK_0)
+ goto fail;
+
+ type = TYPE_0;
+ }
+ else
+ type = n < BREAK_2 ? TYPE_1 : TYPE_2;
+
+ int degree = random_poly_info.degrees[type];
+ int separation = random_poly_info.seps[type];
+
+ buf->rand_type = type;
+ buf->rand_sep = separation;
+ buf->rand_deg = degree;
+ int32_t *state = &((int32_t *) arg_state)[1]; /* First location. */
+ /* Must set END_PTR before srandom. */
+ buf->end_ptr = &state[degree];
+
+ buf->state = state;
+
+ __srandom_r (seed, buf);
+
+ set_int32 (&state[-1],
+ type == TYPE_0 ? TYPE_0 : (buf->rptr - state) * MAX_TYPES + type);
+
+ return 0;
+
+ fail:
+ __set_errno (EINVAL);
+ return -1;
+}
+
+weak_alias (__initstate_r, initstate_r)
+
+/* Restore the state from the given state array.
+ Note: It is important that we also remember the locations of the pointers
+ in the current state information, and restore the locations of the pointers
+ from the old state information. This is done by multiplexing the pointer
+ location into the zeroth word of the state information. Note that due
+ to the order in which things are done, it is OK to call setstate with the
+ same state as the current state
+ Returns 0 on success, non-zero on failure. */
+int
+__setstate_r (char *arg_state, struct random_data *buf)
+{
+ int32_t *new_state = 1 + (int32_t *) arg_state;
+ int type;
+ int old_type;
+ int32_t *old_state;
+ int degree;
+ int separation;
+
+ if (arg_state == NULL || buf == NULL)
+ goto fail;
+
+ old_type = buf->rand_type;
+ old_state = buf->state;
+ set_int32 (&old_state[-1],
+ (old_type == TYPE_0
+ ? TYPE_0
+ : (MAX_TYPES * (buf->rptr - old_state)) + old_type));
+
+ type = get_int32 (&new_state[-1]) % MAX_TYPES;
+ if (type < TYPE_0 || type > TYPE_4)
+ goto fail;
+
+ buf->rand_deg = degree = random_poly_info.degrees[type];
+ buf->rand_sep = separation = random_poly_info.seps[type];
+ buf->rand_type = type;
+
+ if (type != TYPE_0)
+ {
+ int rear = get_int32 (&new_state[-1]) / MAX_TYPES;
+ buf->rptr = &new_state[rear];
+ buf->fptr = &new_state[(rear + separation) % degree];
+ }
+ buf->state = new_state;
+ /* Set end_ptr too. */
+ buf->end_ptr = &new_state[degree];
+
+ return 0;
+
+ fail:
+ __set_errno (EINVAL);
+ return -1;
+}
+
+weak_alias (__setstate_r, setstate_r)
+
+/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
+ congruential bit. Otherwise, we do our fancy trinomial stuff, which is the
+ same in all the other cases due to all the global variables that have been
+ set up. The basic operation is to add the number at the rear pointer into
+ the one at the front pointer. Then both pointers are advanced to the next
+ location cyclically in the table. The value returned is the sum generated,
+ reduced to 31 bits by throwing away the "least random" low bit.
+ Note: The code takes advantage of the fact that both the front and
+ rear pointers can't wrap on the same call by not testing the rear
+ pointer if the front one has wrapped. Returns a 31-bit random number. */
+
+int
+__random_r (struct random_data *buf, int32_t *result)
+{
+ int32_t *state;
+
+ if (buf == NULL || result == NULL)
+ goto fail;
+
+ state = buf->state;
+
+ if (buf->rand_type == TYPE_0)
+ {
+ int32_t val = (((get_int32 (&state[0]) * 1103515245U) + 12345U)
+ & 0x7fffffff);
+ set_int32 (&state[0], val);
+ *result = val;
+ }
+ else
+ {
+ int32_t *fptr = buf->fptr;
+ int32_t *rptr = buf->rptr;
+ int32_t *end_ptr = buf->end_ptr;
+ /* F and R are unsigned int, not uint32_t, to avoid undefined
+ overflow behavior on platforms where INT_MAX == UINT32_MAX. */
+ unsigned int f = get_int32 (fptr);
+ unsigned int r = get_int32 (rptr);
+ uint32_t val = f + r;
+ set_int32 (fptr, val);
+ /* Chucking least random bit. */
+ *result = val >> 1;
+ ++fptr;
+ if (fptr >= end_ptr)
+ {
+ fptr = state;
+ ++rptr;
+ }
+ else
+ {
+ ++rptr;
+ if (rptr >= end_ptr)
+ rptr = state;
+ }
+ buf->fptr = fptr;
+ buf->rptr = rptr;
+ }
+ return 0;
+
+ fail:
+ __set_errno (EINVAL);
+ return -1;
+}
+
+weak_alias (__random_r, random_r)
diff --git a/tests/randomd.c b/tests/randomd.c
index 87e8faef..df2edbf3 100644
--- a/tests/randomd.c
+++ b/tests/randomd.c
@@ -1,5 +1,5 @@
/* Some random 'double' numbers used by gnulib tests.
- Copyright (C) 2012-2022 Free Software Foundation, Inc.
+ Copyright (C) 2012-2024 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
diff --git a/tests/randoml.c b/tests/randoml.c
index 8feab2a9..7a52f8a2 100644
--- a/tests/randoml.c
+++ b/tests/randoml.c
@@ -1,5 +1,5 @@
/* Some random 'long double' numbers used by gnulib tests.
- Copyright (C) 2012-2022 Free Software Foundation, Inc.
+ Copyright (C) 2012-2024 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
diff --git a/tests/realloc.c b/tests/realloc.c
index c8783815..05731396 100644
--- a/tests/realloc.c
+++ b/tests/realloc.c
@@ -1,6 +1,6 @@
/* realloc() function that is glibc compatible.
- Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2022 Free Software
+ Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2024 Free Software
Foundation, Inc.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/reallocarray.c b/tests/reallocarray.c
index 70c1b478..09711a0e 100644
--- a/tests/reallocarray.c
+++ b/tests/reallocarray.c
@@ -1,6 +1,6 @@
/* reallocarray function that is glibc compatible.
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
+ Copyright (C) 2017-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/same-inode.c b/tests/same-inode.c
new file mode 100644
index 00000000..08c66a25
--- /dev/null
+++ b/tests/same-inode.c
@@ -0,0 +1,3 @@
+#include <config.h>
+#define SAME_INODE_INLINE _GL_EXTERN_INLINE
+#include "same-inode.h"
diff --git a/tests/same-inode.h b/tests/same-inode.h
index f65f3d03..62dd088e 100644
--- a/tests/same-inode.h
+++ b/tests/same-inode.h
@@ -1,6 +1,6 @@
/* Determine whether two stat buffers are known to refer to the same file.
- Copyright (C) 2006, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -16,32 +16,70 @@
along with this program. If not, see <https://www.gnu.org/licenses/>. */
#ifndef SAME_INODE_H
-# define SAME_INODE_H 1
-
-# include <sys/types.h>
-
-# if defined __VMS && __CRTL_VER < 80200000
-# define SAME_INODE(a, b) \
- ((a).st_ino[0] == (b).st_ino[0] \
- && (a).st_ino[1] == (b).st_ino[1] \
- && (a).st_ino[2] == (b).st_ino[2] \
- && (a).st_dev == (b).st_dev)
-# elif defined _WIN32 && ! defined __CYGWIN__
- /* Native Windows. */
-# if _GL_WINDOWS_STAT_INODES
- /* stat() and fstat() set st_dev and st_ino to 0 if information about
- the inode is not available. */
-# define SAME_INODE(a, b) \
- (!((a).st_ino == 0 && (a).st_dev == 0) \
- && (a).st_ino == (b).st_ino && (a).st_dev == (b).st_dev)
+#define SAME_INODE_H 1
+
+/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
+#include <sys/stat.h>
+
+_GL_INLINE_HEADER_BEGIN
+#ifndef SAME_INODE_INLINE
+# define SAME_INODE_INLINE _GL_INLINE
+#endif
+
+/* True if A and B point to structs with st_dev and st_ino members
+ that are known to represent the same file.
+
+ Use | and ^ to shorten generated code, and to lessen the
+ probability of screwups if st_ino is an array. */
+
+#if defined __VMS && __CRTL_VER < 80200000
+# define PSAME_INODE(a, b) (! (((a)->st_dev ^ (b)->st_dev) \
+ | ((a)->st_ino[0] ^ (b)->st_ino[0]) \
+ | ((a)->st_ino[1] ^ (b)->st_ino[1]) \
+ | ((a)->st_ino[2] ^ (b)->st_ino[2])))
+#elif defined _WIN32 && ! defined __CYGWIN__
+ /* Native Windows. */
+# if _GL_WINDOWS_STAT_INODES
+ /* stat() and fstat() set st_dev and st_ino to 0 if information about
+ the inode is not available. */
+# if _GL_WINDOWS_STAT_INODES == 2
+# define PSAME_INODE(a, b) \
+ (! (! ((a)->st_dev | (a)->st_ino._gl_ino[0] | (a)->st_ino._gl_ino[1]) \
+ | ((a)->st_dev ^ (b)->st_dev) \
+ | ((a)->st_ino._gl_ino[0] ^ (b)->st_ino._gl_ino[0]) \
+ | ((a)->st_ino._gl_ino[1] ^ (b)->st_ino._gl_ino[1])))
# else
- /* stat() and fstat() set st_ino to 0 always. */
-# define SAME_INODE(a, b) 0
+# define PSAME_INODE(a, b) (! (! ((a)->st_dev | (a)->st_ino) \
+ | ((a)->st_dev ^ (b)->st_dev) \
+ | ((a)->st_ino ^ (b)->st_ino)))
# endif
# else
-# define SAME_INODE(a, b) \
- ((a).st_ino == (b).st_ino \
- && (a).st_dev == (b).st_dev)
+ /* stat() and fstat() set st_ino to 0 always. */
+# define PSAME_INODE(a, b) 0
# endif
+#else
+ /* POSIX. */
+# define PSAME_INODE(a, b) (! (((a)->st_dev ^ (b)->st_dev) \
+ | ((a)->st_ino ^ (b)->st_ino)))
+#endif
+
+/* True if struct objects A and B are known to represent the same file. */
+
+#define SAME_INODE(a, b) PSAME_INODE (&(a), &(b))
+
+/* True if *A and *B represent the same file. Unlike PSAME_INODE,
+ args are evaluated once and must point to struct stat. */
+
+SAME_INODE_INLINE bool
+psame_inode (struct stat const *a, struct stat const *b)
+{
+ return PSAME_INODE (a, b);
+}
+
+_GL_INLINE_HEADER_END
#endif
diff --git a/tests/sched.in.h b/tests/sched.in.h
index d19c5022..838fb12b 100644
--- a/tests/sched.in.h
+++ b/tests/sched.in.h
@@ -1,5 +1,5 @@
/* A GNU-like <sched.h>.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -21,6 +21,13 @@
#endif
@PRAGMA_COLUMNS@
+/* This file uses #include_next of a system file that defines time_t.
+ For the 'year2038' module to work right, <config.h> needs to have been
+ included before. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* The include_next requires a split double-inclusion guard. */
#if @HAVE_SCHED_H@
# if @HAVE_SYS_CDEFS_H@
@@ -32,6 +39,11 @@
#ifndef _@GUARD_PREFIX@_SCHED_H
#define _@GUARD_PREFIX@_SCHED_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* Get pid_t.
This is needed on glibc 2.11 (see
glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=13198>)
diff --git a/tests/sched_yield.c b/tests/sched_yield.c
index 255de34e..72928b72 100644
--- a/tests/sched_yield.c
+++ b/tests/sched_yield.c
@@ -1,5 +1,5 @@
/* Schedule other threads to run.
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/select.c b/tests/select.c
index c2424982..5f7a5d00 100644
--- a/tests/select.c
+++ b/tests/select.c
@@ -1,7 +1,7 @@
/* Emulation for select(2)
Contributed by Paolo Bonzini.
- Copyright 2008-2022 Free Software Foundation, Inc.
+ Copyright 2008-2024 Free Software Foundation, Inc.
This file is part of gnulib.
@@ -279,8 +279,11 @@ rpl_select (int nfds, fd_set *rfds, fd_set *wfds, fd_set *xfds,
int i, fd, rc;
clock_t tend;
- if (nfds > FD_SETSIZE)
- nfds = FD_SETSIZE;
+ if (nfds < 0 || nfds > FD_SETSIZE)
+ {
+ errno = EINVAL;
+ return -1;
+ }
if (!timeout)
wait_timeout = INFINITE;
diff --git a/tests/setenv.c b/tests/setenv.c
index ebfd4e55..9e2e9e2f 100644
--- a/tests/setenv.c
+++ b/tests/setenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2003, 2005-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995-2003, 2005-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
@@ -82,6 +82,7 @@ typedef int (*compar_fn_t) (const void *, const void *);
static void *known_values;
# define KNOWN_VALUE(Str) \
+ __extension__ \
({ \
void *value = tfind (Str, &known_values, (compar_fn_t) strcmp); \
value != NULL ? *(char **) value : NULL; \
@@ -375,6 +376,11 @@ rpl_setenv (const char *name, const char *value, int replace)
int saved_errno;
size_t len = strlen (value);
tmp = malloca (len + 2);
+ if (tmp == NULL)
+ {
+ errno = ENOMEM;
+ return -1;
+ }
/* Since leading '=' is eaten, double it up. */
*tmp = '=';
memcpy (tmp + 1, value, len + 1);
diff --git a/tests/setlocale.c b/tests/setlocale.c
index b9a29ee6..eb263617 100644
--- a/tests/setlocale.c
+++ b/tests/setlocale.c
@@ -1,5 +1,5 @@
/* Set the current locale. -*- coding: utf-8 -*-
- Copyright (C) 2009, 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -1574,7 +1574,7 @@ setlocale_improved (int category, const char *locale)
For LC_COLLATE, the application should use the locale
properties kCFLocaleCollationIdentifier,
kCFLocaleCollatorIdentifier.
- For LC_MONETARY, the applicationshould use the locale
+ For LC_MONETARY, the application should use the locale
properties kCFLocaleCurrencySymbol,
kCFLocaleCurrencyCode.
But since most applications don't have macOS specific
diff --git a/tests/setsockopt.c b/tests/setsockopt.c
index 2811c19a..42cc3dcc 100644
--- a/tests/setsockopt.c
+++ b/tests/setsockopt.c
@@ -1,6 +1,6 @@
/* setsockopt.c --- wrappers for Windows setsockopt function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/signal.in.h b/tests/signal.in.h
index c0d4848d..107226e3 100644
--- a/tests/signal.in.h
+++ b/tests/signal.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <signal.h>.
- Copyright (C) 2006-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -55,6 +55,11 @@
#ifndef _@GUARD_PREFIX@_SIGNAL_H
#define _@GUARD_PREFIX@_SIGNAL_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* For testing the OpenBSD version. */
#if (@GNULIB_PTHREAD_SIGMASK@ || defined GNULIB_POSIXCHECK) \
&& defined __OpenBSD__
diff --git a/tests/signature.h b/tests/signature.h
index 7a8ef91a..d2a24622 100644
--- a/tests/signature.h
+++ b/tests/signature.h
@@ -1,5 +1,5 @@
/* Macro for checking that a function declaration is compliant.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/signed-nan.h b/tests/signed-nan.h
new file mode 100644
index 00000000..18a550a7
--- /dev/null
+++ b/tests/signed-nan.h
@@ -0,0 +1,88 @@
+/* Macros for quiet not-a-number.
+ Copyright (C) 2023-2024 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 <https://www.gnu.org/licenses/>. */
+
+#ifndef _SIGNED_NAN_H
+#define _SIGNED_NAN_H
+
+#include <math.h>
+
+#include "nan.h"
+
+
+/* Returns a quiet 'float' NaN with sign bit == 0. */
+_GL_UNUSED static float
+positive_NaNf ()
+{
+ /* 'volatile' works around a GCC bug:
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655> */
+ float volatile nan = NaNf ();
+ return (signbit (nan) ? - nan : nan);
+}
+
+/* Returns a quiet 'float' NaN with sign bit == 1. */
+_GL_UNUSED static float
+negative_NaNf ()
+{
+ /* 'volatile' works around a GCC bug:
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655> */
+ float volatile nan = NaNf ();
+ return (signbit (nan) ? nan : - nan);
+}
+
+
+/* Returns a quiet 'double' NaN with sign bit == 0. */
+_GL_UNUSED static double
+positive_NaNd ()
+{
+ /* 'volatile' works around a GCC bug:
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655> */
+ double volatile nan = NaNd ();
+ return (signbit (nan) ? - nan : nan);
+}
+
+/* Returns a quiet 'double' NaN with sign bit == 1. */
+_GL_UNUSED static double
+negative_NaNd ()
+{
+ /* 'volatile' works around a GCC bug:
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655> */
+ double volatile nan = NaNd ();
+ return (signbit (nan) ? nan : - nan);
+}
+
+
+/* Returns a quiet 'long double' NaN with sign bit == 0. */
+_GL_UNUSED static long double
+positive_NaNl ()
+{
+ /* 'volatile' works around a GCC bug:
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655> */
+ long double volatile nan = NaNl ();
+ return (signbit (nan) ? - nan : nan);
+}
+
+/* Returns a quiet 'long double' NaN with sign bit == 1. */
+_GL_UNUSED static long double
+negative_NaNl ()
+{
+ /* 'volatile' works around a GCC bug:
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655> */
+ long double volatile nan = NaNl ();
+ return (signbit (nan) ? nan : - nan);
+}
+
+
+#endif /* _SIGNED_NAN_H */
diff --git a/tests/signed-snan.h b/tests/signed-snan.h
new file mode 100644
index 00000000..7e6483a7
--- /dev/null
+++ b/tests/signed-snan.h
@@ -0,0 +1,142 @@
+/* Macros for signalling not-a-number.
+ Copyright (C) 2023-2024 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 <https://www.gnu.org/licenses/>. */
+
+#ifndef _SIGNED_SNAN_H
+#define _SIGNED_SNAN_H
+
+#include "signed-nan.h"
+#include "snan.h"
+
+
+#if HAVE_SNANF
+
+/* Returns a signalling 'float' NaN with sign bit == 0 in memory. */
+_GL_UNUSED static memory_float
+memory_positive_SNaNf ()
+{
+ return construct_memory_SNaNf (positive_NaNf ());
+}
+
+/* Returns a signalling 'float' NaN with sign bit == 1 in memory. */
+_GL_UNUSED static memory_float
+memory_negative_SNaNf ()
+{
+ return construct_memory_SNaNf (negative_NaNf ());
+}
+
+/* Note: On 32-bit x86 processors, as well as on x86_64 processors with
+ CC="gcc -mfpmath=387", the following functions may return a quiet NaN
+ instead. Use the functions with 'memory_' prefix if you need to avoid this.
+ See <https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00060.html>
+ for details. */
+
+/* Returns a signalling 'float' NaN with sign bit == 0. */
+_GL_UNUSED static float
+positive_SNaNf ()
+{
+ return memory_positive_SNaNf ().value;
+}
+
+/* Returns a signalling 'float' NaN with sign bit == 1. */
+_GL_UNUSED static float
+negative_SNaNf ()
+{
+ return memory_negative_SNaNf ().value;
+}
+
+#endif
+
+
+#if HAVE_SNAND
+
+/* Returns a signalling 'double' NaN with sign bit == 0 in memory. */
+_GL_UNUSED static memory_double
+memory_positive_SNaNd ()
+{
+ return construct_memory_SNaNd (positive_NaNd ());
+}
+
+/* Returns a signalling 'double' NaN with sign bit == 1 in memory. */
+_GL_UNUSED static memory_double
+memory_negative_SNaNd ()
+{
+ return construct_memory_SNaNd (negative_NaNd ());
+}
+
+/* Note: On 32-bit x86 processors, as well as on x86_64 processors with
+ CC="gcc -mfpmath=387", the following functions may return a quiet NaN
+ instead. Use the functions with 'memory_' prefix if you need to avoid this.
+ See <https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00060.html>
+ for details. */
+
+/* Returns a signalling 'double' NaN with sign bit == 0. */
+_GL_UNUSED static double
+positive_SNaNd ()
+{
+ return memory_positive_SNaNd ().value;
+}
+
+/* Returns a signalling 'double' NaN with sign bit == 1. */
+_GL_UNUSED static double
+negative_SNaNd ()
+{
+ return memory_negative_SNaNd ().value;
+}
+
+#endif
+
+
+#if HAVE_SNANL
+
+/* Returns a signalling 'long double' NaN with sign bit == 0 in memory. */
+_GL_UNUSED static memory_long_double
+memory_positive_SNaNl ()
+{
+ return construct_memory_SNaNl (positive_NaNl ());
+}
+
+/* Returns a signalling 'long double' NaN with sign bit == 1 in memory. */
+_GL_UNUSED static memory_long_double
+memory_negative_SNaNl ()
+{
+ return construct_memory_SNaNl (negative_NaNl ());
+}
+
+/* Note: On 32-bit x86 processors, as well as on x86_64 processors with
+ CC="gcc -mfpmath=387", if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE is 1, the
+ following functions may return a quiet NaN instead. Use the functions
+ with 'memory_' prefix if you need to avoid this. See
+ <https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00060.html>
+ for details. */
+
+/* Returns a signalling 'long double' NaN with sign bit == 0. */
+_GL_UNUSED static long double
+positive_SNaNl ()
+{
+ return memory_positive_SNaNl ().value;
+}
+
+/* Returns a signalling 'long double' NaN with sign bit == 1. */
+_GL_UNUSED static long double
+negative_SNaNl ()
+{
+ return memory_negative_SNaNl ().value;
+}
+
+#endif
+
+
+#endif /* _SIGNED_SNAN_H */
diff --git a/tests/sigprocmask.c b/tests/sigprocmask.c
index a805da66..3df69b51 100644
--- a/tests/sigprocmask.c
+++ b/tests/sigprocmask.c
@@ -1,5 +1,5 @@
/* POSIX compatible signal blocking.
- Copyright (C) 2006-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2006.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/sleep.c b/tests/sleep.c
index 80431c10..1cab9aa6 100644
--- a/tests/sleep.c
+++ b/tests/sleep.c
@@ -1,5 +1,5 @@
/* Pausing execution of the current thread.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2007.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/snan.h b/tests/snan.h
new file mode 100644
index 00000000..95235040
--- /dev/null
+++ b/tests/snan.h
@@ -0,0 +1,276 @@
+/* Macros for signalling not-a-number.
+ Copyright (C) 2007-2024 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 <https://www.gnu.org/licenses/>. */
+
+#ifndef _SNAN_H
+#define _SNAN_H
+
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+
+#include "nan.h"
+
+
+/* The bit that distinguishes a quiet NaN from a signalling NaN is, according to
+ <https://en.wikipedia.org/wiki/NaN#Encoding>, the most significant bit of the
+ mantissa field.
+ According to <https://en.wikipedia.org/wiki/IEEE_754#Formats>, this is the
+ next bit, right below the bit 0 of the exponent.
+ This bit is
+ * == 0 to indicate a quiet NaN or Infinity,
+ == 1 to indicate a signalling NaN,
+ on these CPUs: hppa, mips (*), sh4.
+ * == 1 to indicate a quiet NaN,
+ == 0 to indicate a signalling NaN or Infinity,
+ on all other CPUs.
+ On these platforms, additionally a signalling NaN must have some other
+ mantissa bit == 1, because when all exponent bits are == 1 and all
+ mantissa bits are == 0, the number denotes ±Infinity.
+ This NaN encoding is specified by IEEE 754-2008 § 6.2.1.
+
+ (*) On mips CPUs, it depends on the CPU model. The classical behaviour is
+ as indicated above. On some newer models, it's like on the other CPUs.
+ On some (but not all!) models this meta-info can be determined from two
+ special CPU registers: If the "Floating Point Implementation Register" (fir)
+ bit 23, also known as Has2008 bit, is set, the "Floating Point Control and
+ Status Register" (fcsr) bit 18, also known as the NAN2008 bit, has the value
+ - 0 for the classical behaviour,
+ - 1 for like on the other CPUs.
+ Both of these bits are read-only.
+ This module has determined the behaviour at configure time and defines the
+ C macros MIPS_NAN2008_FLOAT, MIPS_NAN2008_DOUBLE, MIPS_NAN2008_LONG_DOUBLE
+ accordingly. */
+
+
+/* 'float' = IEEE 754 single-precision
+ <https://en.wikipedia.org/wiki/Single-precision_floating-point_format> */
+
+#define NWORDS \
+ ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { float value; unsigned int word[NWORDS]; } memory_float;
+
+#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+
+# define HAVE_SNANF 1
+
+_GL_UNUSED static memory_float
+construct_memory_SNaNf (float quiet_value)
+{
+ memory_float m;
+ m.value = quiet_value;
+ /* Turn the quiet NaN into a signalling NaN. */
+ #if FLT_EXPBIT0_BIT > 0
+ m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1);
+ #else
+ m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+ #endif
+ /* Set some arbitrary mantissa bit. */
+ if (FLT_EXPBIT0_WORD < NWORDS / 2) /* NWORDS > 1 and big endian */
+ m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT;
+ else /* NWORDS == 1 or little endian */
+ m.word[0] |= (unsigned int) 1;
+ return m;
+}
+
+/* Returns a signalling 'float' NaN in memory. */
+_GL_UNUSED static memory_float
+memory_SNaNf ()
+{
+ return construct_memory_SNaNf (NaNf ());
+}
+
+_GL_UNUSED static float
+construct_SNaNf (float quiet_value)
+{
+ return construct_memory_SNaNf (quiet_value).value;
+}
+
+/* Returns a signalling 'float' NaN.
+ Note: On 32-bit x86 processors, as well as on x86_64 processors with
+ CC="gcc -mfpmath=387", this function may return a quiet NaN instead.
+ Use memory_SNaNf() if you need to avoid this. See
+ <https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00060.html>
+ for details. */
+_GL_UNUSED static float
+SNaNf ()
+{
+ return memory_SNaNf ().value;
+}
+
+#endif
+
+#undef NWORDS
+
+
+/* 'double' = IEEE 754 double-precision
+ <https://en.wikipedia.org/wiki/Double-precision_floating-point_format> */
+
+#define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+
+#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+
+# define HAVE_SNAND 1
+
+_GL_UNUSED static memory_double
+construct_memory_SNaNd (double quiet_value)
+{
+ memory_double m;
+ m.value = quiet_value;
+ /* Turn the quiet NaN into a signalling NaN. */
+ #if DBL_EXPBIT0_BIT > 0
+ m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1);
+ #else
+ m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+ #endif
+ /* Set some arbitrary mantissa bit. */
+ m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
+ |= (unsigned int) 1 << DBL_EXPBIT0_BIT;
+ return m;
+}
+
+/* Returns a signalling 'double' NaN in memory. */
+_GL_UNUSED static memory_double
+memory_SNaNd ()
+{
+ return construct_memory_SNaNd (NaNd ());
+}
+
+_GL_UNUSED static double
+construct_SNaNd (double quiet_value)
+{
+ return construct_memory_SNaNd (quiet_value).value;
+}
+
+/* Returns a signalling 'double' NaN.
+ Note: On 32-bit x86 processors, as well as on x86_64 processors with
+ CC="gcc -mfpmath=387", this function may return a quiet NaN instead.
+ Use memory_SNaNf() if you need to avoid this. See
+ <https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00060.html>
+ for details. */
+_GL_UNUSED static double
+SNaNd ()
+{
+ return memory_SNaNd ().value;
+}
+
+#endif
+
+#undef NWORDS
+
+
+/* 'long double' =
+ * if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE:
+ IEEE 754 double-precision
+ <https://en.wikipedia.org/wiki/Double-precision_floating-point_format>
+ * Otherwise:
+ - On i386, x86_64, ia64:
+ 80-bits extended-precision
+ <https://en.wikipedia.org/wiki/Extended_precision#x86_extended_precision_format>
+ - On alpha, arm64, loongarch64, mips64, riscv64, s390x, sparc64:
+ IEEE 754 quadruple-precision
+ <https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#IEEE_754_quadruple-precision_binary_floating-point_format:_binary128>
+ - On powerpc, powerpc64, powerpc64le:
+ 2x64-bits double-double
+ <https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format#Double-double_arithmetic>
+ - On m68k:
+ 80-bits extended-precision, padded to 96 bits, with non-IEEE exponent
+ */
+
+#define NWORDS \
+ ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { long double value; unsigned int word[NWORDS]; }
+ memory_long_double;
+
+#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
+
+# define HAVE_SNANL 1
+
+_GL_UNUSED static memory_long_double
+construct_memory_SNaNl (long double quiet_value)
+{
+ memory_long_double m;
+ m.value = quiet_value;
+ #if defined __powerpc__ && LDBL_MANT_DIG == 106
+ /* This is PowerPC "double double", a pair of two doubles. Inf and NaN are
+ represented as the corresponding 64-bit IEEE values in the first double;
+ the second is ignored. Manipulate only the first double. */
+ #define HNWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+ #else
+ #define HNWORDS NWORDS
+ #endif
+ /* Turn the quiet NaN into a signalling NaN. */
+ #if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+ /* In this representation, the leading 1 of the mantissa is explicitly
+ stored. */
+ #if LDBL_EXPBIT0_BIT > 1
+ m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 2);
+ #else
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < HNWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 2);
+ #endif
+ #else
+ /* In this representation, the leading 1 of the mantissa is implicit. */
+ #if LDBL_EXPBIT0_BIT > 0
+ m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1);
+ #else
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < HNWORDS / 2 ? 1 : - 1)]
+ ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
+ #endif
+ #endif
+ /* Set some arbitrary mantissa bit. */
+ m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < HNWORDS / 2 ? 1 : - 1)]
+ |= (unsigned int) 1 << LDBL_EXPBIT0_BIT;
+ #undef HNWORDS
+ return m;
+}
+
+/* Returns a signalling 'long double' NaN in memory. */
+_GL_UNUSED static memory_long_double
+memory_SNaNl ()
+{
+ return construct_memory_SNaNl (NaNl ());
+}
+
+_GL_UNUSED static long double
+construct_SNaNl (long double quiet_value)
+{
+ return construct_memory_SNaNl (quiet_value).value;
+}
+
+/* Returns a signalling 'long double' NaN.
+ Note: On 32-bit x86 processors, as well as on x86_64 processors with
+ CC="gcc -mfpmath=387", if HAVE_SAME_LONG_DOUBLE_AS_DOUBLE is 1, this
+ function may return a quiet NaN instead. Use memory_SNaNf() if you
+ need to avoid this. See
+ <https://lists.gnu.org/archive/html/bug-gnulib/2023-10/msg00060.html>
+ for details. */
+_GL_UNUSED static long double
+SNaNl ()
+{
+ return memory_SNaNl ().value;
+}
+
+#endif
+
+#undef NWORDS
+
+
+#endif /* _SNAN_H */
diff --git a/tests/socket.c b/tests/socket.c
index 49e013c7..6061a3fb 100644
--- a/tests/socket.c
+++ b/tests/socket.c
@@ -1,6 +1,6 @@
/* socket.c --- wrappers for Windows socket function
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/sockets.c b/tests/sockets.c
index 31b43029..92beb7d3 100644
--- a/tests/sockets.c
+++ b/tests/sockets.c
@@ -1,6 +1,6 @@
/* sockets.c --- wrappers for Windows socket functions
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/sockets.h b/tests/sockets.h
index 75e49fce..99d6efca 100644
--- a/tests/sockets.h
+++ b/tests/sockets.h
@@ -1,6 +1,6 @@
/* sockets.h - wrappers for Windows socket functions
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -20,6 +20,11 @@
#ifndef SOCKETS_H
#define SOCKETS_H 1
+/* This file uses _GL_ATTRIBUTE_CONST. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#define SOCKETS_1_0 0x0001
#define SOCKETS_1_1 0x0101
#define SOCKETS_2_0 0x0002
diff --git a/tests/stat-time.c b/tests/stat-time.c
index 3d48a2b5..1ab01f53 100644
--- a/tests/stat-time.c
+++ b/tests/stat-time.c
@@ -1,6 +1,6 @@
/* stat-related time functions.
- Copyright (C) 2012-2022 Free Software Foundation, Inc.
+ Copyright (C) 2012-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/stat-time.h b/tests/stat-time.h
index b661196e..3cd8478f 100644
--- a/tests/stat-time.h
+++ b/tests/stat-time.h
@@ -1,6 +1,6 @@
/* stat-related time functions.
- Copyright (C) 2005, 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -20,15 +20,18 @@
#ifndef STAT_TIME_H
#define STAT_TIME_H 1
+/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, _GL_UNUSED,
+ _GL_ATTRIBUTE_PURE, HAVE_STRUCT_STAT_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#include <errno.h>
#include <stdckdint.h>
#include <stddef.h>
#include <sys/stat.h>
#include <time.h>
-#ifndef _GL_INLINE_HEADER_BEGIN
- #error "Please include config.h first."
-#endif
_GL_INLINE_HEADER_BEGIN
#ifndef _GL_STAT_TIME_INLINE
# define _GL_STAT_TIME_INLINE _GL_INLINE
@@ -49,11 +52,13 @@ extern "C" {
#if _GL_WINDOWS_STAT_TIMESPEC || defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
# if _GL_WINDOWS_STAT_TIMESPEC || defined TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim)
+# define STAT_TIMESPEC_OFFSETOF(st_xtim) offsetof (struct stat, st_xtim)
# else
# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.tv_nsec)
# endif
#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim##espec)
+# define STAT_TIMESPEC_OFFSETOF(st_xtim) offsetof (struct stat, st_xtim##espec)
#elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC
# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim##ensec)
#elif defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
@@ -119,10 +124,8 @@ get_stat_atime (struct stat const *st)
#ifdef STAT_TIMESPEC
return STAT_TIMESPEC (st, st_atim);
#else
- struct timespec t;
- t.tv_sec = st->st_atime;
- t.tv_nsec = get_stat_atime_ns (st);
- return t;
+ return (struct timespec) { .tv_sec = st->st_atime,
+ .tv_nsec = get_stat_atime_ns (st) };
#endif
}
@@ -133,10 +136,8 @@ get_stat_ctime (struct stat const *st)
#ifdef STAT_TIMESPEC
return STAT_TIMESPEC (st, st_ctim);
#else
- struct timespec t;
- t.tv_sec = st->st_ctime;
- t.tv_nsec = get_stat_ctime_ns (st);
- return t;
+ return (struct timespec) { .tv_sec = st->st_ctime,
+ .tv_nsec = get_stat_ctime_ns (st) };
#endif
}
@@ -147,10 +148,8 @@ get_stat_mtime (struct stat const *st)
#ifdef STAT_TIMESPEC
return STAT_TIMESPEC (st, st_mtim);
#else
- struct timespec t;
- t.tv_sec = st->st_mtime;
- t.tv_nsec = get_stat_mtime_ns (st);
- return t;
+ return (struct timespec) { .tv_sec = st->st_mtime,
+ .tv_nsec = get_stat_mtime_ns (st) };
#endif
}
@@ -165,8 +164,8 @@ get_stat_birthtime (_GL_UNUSED struct stat const *st)
|| defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC)
t = STAT_TIMESPEC (st, st_birthtim);
#elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
- t.tv_sec = st->st_birthtime;
- t.tv_nsec = st->st_birthtimensec;
+ t = (struct timespec) { .tv_sec = st->st_birthtime,
+ .tv_nsec = st->st_birthtimensec };
#elif defined _WIN32 && ! defined __CYGWIN__
/* Native Windows platforms (but not Cygwin) put the "file creation
time" in st_ctime (!). See
@@ -174,13 +173,11 @@ get_stat_birthtime (_GL_UNUSED struct stat const *st)
# if _GL_WINDOWS_STAT_TIMESPEC
t = st->st_ctim;
# else
- t.tv_sec = st->st_ctime;
- t.tv_nsec = 0;
+ t = (struct timespec) { .tv_sec = st->st_ctime };
# endif
#else
/* Birth time is not supported. */
- t.tv_sec = -1;
- t.tv_nsec = -1;
+ t = (struct timespec) { .tv_sec = -1, .tv_nsec = -1 };
#endif
#if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \
@@ -192,30 +189,28 @@ get_stat_birthtime (_GL_UNUSED struct stat const *st)
sometimes returns junk in the birth time fields; work around this
bug if it is detected. */
if (! (t.tv_sec && 0 <= t.tv_nsec && t.tv_nsec < 1000000000))
- {
- t.tv_sec = -1;
- t.tv_nsec = -1;
- }
+ t = (struct timespec) { .tv_sec = -1, .tv_nsec = -1 };
#endif
return t;
}
/* If a stat-like function returned RESULT, normalize the timestamps
- in *ST, in case this platform suffers from the Solaris 11 bug where
+ in *ST, if this platform suffers from a macOS and Solaris bug where
tv_nsec might be negative. Return the adjusted RESULT, setting
errno to EOVERFLOW if normalization overflowed. This function
is intended to be private to this .h file. */
_GL_STAT_TIME_INLINE int
stat_time_normalize (int result, _GL_UNUSED struct stat *st)
{
-#if defined __sun && defined STAT_TIMESPEC
+#if (((defined __APPLE__ && defined __MACH__) || defined __sun) \
+ && defined STAT_TIMESPEC_OFFSETOF)
if (result == 0)
{
long int timespec_hz = 1000000000;
- short int const ts_off[] = { offsetof (struct stat, st_atim),
- offsetof (struct stat, st_mtim),
- offsetof (struct stat, st_ctim) };
+ short int const ts_off[] = { STAT_TIMESPEC_OFFSETOF (st_atim),
+ STAT_TIMESPEC_OFFSETOF (st_mtim),
+ STAT_TIMESPEC_OFFSETOF (st_ctim) };
int i;
for (i = 0; i < sizeof ts_off / sizeof *ts_off; i++)
{
@@ -229,8 +224,7 @@ stat_time_normalize (int result, _GL_UNUSED struct stat *st)
}
ts->tv_nsec = r;
/* Overflow is possible, as Solaris 11 stat can yield
- tv_sec == TYPE_MINIMUM (time_t) && tv_nsec == -1000000000.
- INT_ADD_WRAPV is OK, since time_t is signed on Solaris. */
+ tv_sec == TYPE_MINIMUM (time_t) && tv_nsec == -1000000000. */
if (ckd_add (&ts->tv_sec, q, ts->tv_sec))
{
errno = EOVERFLOW;
diff --git a/tests/stat-w32.c b/tests/stat-w32.c
index e61b75c6..ddd6f598 100644
--- a/tests/stat-w32.c
+++ b/tests/stat-w32.c
@@ -1,5 +1,5 @@
/* Core of implementation of fstat and stat for native Windows.
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
+ Copyright (C) 2017-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/stat-w32.h b/tests/stat-w32.h
index 0f79d614..392faed1 100644
--- a/tests/stat-w32.h
+++ b/tests/stat-w32.h
@@ -1,5 +1,5 @@
/* Core of implementation of fstat and stat for native Windows.
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
+ Copyright (C) 2017-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/stat.c b/tests/stat.c
index adb61233..ecf9f9bb 100644
--- a/tests/stat.c
+++ b/tests/stat.c
@@ -1,5 +1,5 @@
/* Work around platform bugs in stat.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/stdalign.in.h b/tests/stdalign.in.h
deleted file mode 100644
index 58fd245c..00000000
--- a/tests/stdalign.in.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* A substitute for ISO C11 <stdalign.h>.
-
- Copyright 2011-2022 Free Software Foundation, Inc.
-
- This file is free software: you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- This file 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 Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>. */
-
-/* Written by Paul Eggert and Bruno Haible. */
-
-#ifndef _GL_STDALIGN_H
-#define _GL_STDALIGN_H
-
-/* ISO C11 <stdalign.h> for platforms that lack it.
-
- References:
- ISO C11 (latest free draft
- <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>)
- sections 6.5.3.4, 6.7.5, 7.15.
- C++11 (latest free draft
- <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>)
- section 18.10. */
-
-/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
- requirement of a structure member (i.e., slot or field) that is of
- type TYPE, as an integer constant expression.
-
- This differs from GCC's and clang's __alignof__ operator, which can
- yield a better-performing alignment for an object of that type. For
- example, on x86 with GCC and on Linux/x86 with clang,
- __alignof__ (double) and __alignof__ (long long) are 8, whereas
- alignof (double) and alignof (long long) are 4 unless the option
- '-malign-double' is used.
-
- The result cannot be used as a value for an 'enum' constant, if you
- want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
-
-/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
- standard headers, defines conflicting implementations of _Alignas
- and _Alignof that are no better than ours; override them. */
-#undef _Alignas
-#undef _Alignof
-
-/* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023
- <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
- clang versions < 8.0.0 have the same bug. */
-#if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
- || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
- && !defined __clang__) \
- || (defined __clang__ && __clang_major__ < 8))
-# ifdef __cplusplus
-# if (201103 <= __cplusplus || defined _MSC_VER)
-# define _Alignof(type) alignof (type)
-# else
- template <class __t> struct __alignof_helper { char __a; __t __b; };
-# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
-# define _GL_STDALIGN_NEEDS_STDDEF 1
-# endif
-# else
-# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
-# define _GL_STDALIGN_NEEDS_STDDEF 1
-# endif
-#endif
-#if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))
-# define alignof _Alignof
-#endif
-#define __alignof_is_defined 1
-
-/* alignas (A), also known as _Alignas (A), aligns a variable or type
- to the alignment A, where A is an integer constant expression. For
- example:
-
- int alignas (8) foo;
- struct s { int a; int alignas (8) bar; };
-
- aligns the address of FOO and the offset of BAR to be multiples of 8.
-
- A should be a power of two that is at least the type's alignment
- and at most the implementation's alignment limit. This limit is
- 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable
- to MSVC through at least version 10.0, A should be an integer
- constant, as MSVC does not support expressions such as 1 << 3.
- To be portable to Sun C 5.11, do not align auto variables to
- anything stricter than their default alignment.
-
- The following C11 requirements are not supported here:
-
- - If A is zero, alignas has no effect.
- - alignas can be used multiple times; the strictest one wins.
- - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
-
- */
-
-#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
-# if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)
-# define _Alignas(a) alignas (a)
-# elif (!defined __attribute__ \
- && ((defined __APPLE__ && defined __MACH__ \
- ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \
- : __GNUC__ && !defined __ibmxl__) \
- || (4 <= __clang_major__) \
- || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \
- || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__))
-# define _Alignas(a) __attribute__ ((__aligned__ (a)))
-# elif 1300 <= _MSC_VER
-# define _Alignas(a) __declspec (align (a))
-# endif
-#endif
-#if ((defined _Alignas \
- && !(defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) \
- || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
-# define alignas _Alignas
-#endif
-#if (defined alignas \
- || (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)))
-# define __alignas_is_defined 1
-#endif
-
-/* Include <stddef.h> if needed for offsetof. */
-#if _GL_STDALIGN_NEEDS_STDDEF
-# include <stddef.h>
-#endif
-
-#endif /* _GL_STDALIGN_H */
diff --git a/tests/stdio-read.c b/tests/stdio-read.c
index 85efa0d4..253b8aa4 100644
--- a/tests/stdio-read.c
+++ b/tests/stdio-read.c
@@ -1,5 +1,5 @@
/* POSIX compatible FILE stream read function.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/stdio-write.c b/tests/stdio-write.c
index 82facf54..ca6aa00c 100644
--- a/tests/stdio-write.c
+++ b/tests/stdio-write.c
@@ -1,5 +1,5 @@
/* POSIX compatible FILE stream write function.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/stdio.in.h b/tests/stdio.in.h
index 7b36dac2..4947307e 100644
--- a/tests/stdio.in.h
+++ b/tests/stdio.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <stdio.h>.
- Copyright (C) 2004, 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -36,6 +36,18 @@
#ifndef _@GUARD_PREFIX@_STDIO_H
+/* Suppress macOS deprecation warnings for sprintf and vsprintf. */
+#if (defined __APPLE__ && defined __MACH__) && !defined _POSIX_C_SOURCE
+# ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+# include <AvailabilityMacros.h>
+# endif
+# if (defined MAC_OS_X_VERSION_MIN_REQUIRED \
+ && 130000 <= MAC_OS_X_VERSION_MIN_REQUIRED)
+# define _POSIX_C_SOURCE 200809L
+# define _GL_DEFINED__POSIX_C_SOURCE
+# endif
+#endif
+
#define _GL_ALREADY_INCLUDING_STDIO_H
/* The include_next requires a split double-inclusion guard. */
@@ -43,9 +55,21 @@
#undef _GL_ALREADY_INCLUDING_STDIO_H
+#ifdef _GL_DEFINED__POSIX_C_SOURCE
+# undef _GL_DEFINED__POSIX_C_SOURCE
+# undef _POSIX_C_SOURCE
+#endif
+
#ifndef _@GUARD_PREFIX@_STDIO_H
#define _@GUARD_PREFIX@_STDIO_H
+/* This file uses _GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_FORMAT,
+ _GL_ATTRIBUTE_MALLOC, _GL_ATTRIBUTE_NOTHROW, GNULIB_POSIXCHECK,
+ HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* Get va_list. Needed on many systems, including glibc 2.8. */
#include <stdarg.h>
@@ -116,6 +140,38 @@
# endif
#endif
+/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
+ allocated memory. */
+#ifndef _GL_ATTRIBUTE_MALLOC
+# if __GNUC__ >= 3 || defined __clang__
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+# define _GL_ATTRIBUTE_MALLOC
+# endif
+#endif
+
+/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
+ */
+#ifndef _GL_ATTRIBUTE_NOTHROW
+# if defined __cplusplus
+# if (__GNUC__ + (__GNUC_MINOR__ >= 8) > 2) || __clang_major >= 4
+# if __cplusplus >= 201103L
+# define _GL_ATTRIBUTE_NOTHROW noexcept (true)
+# else
+# define _GL_ATTRIBUTE_NOTHROW throw ()
+# endif
+# else
+# define _GL_ATTRIBUTE_NOTHROW
+# endif
+# else
+# if (__GNUC__ + (__GNUC_MINOR__ >= 3) > 3) || defined __clang__
+# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
+# else
+# define _GL_ATTRIBUTE_NOTHROW
+# endif
+# endif
+#endif
+
/* An __attribute__ __format__ specifier for a function that takes a format
string and arguments, where the format string directives are the ones
standardized by ISO C99 and POSIX.
@@ -193,6 +249,36 @@
# undef putc_unlocked
#endif
+
+/* Maximum number of characters produced by printing a NaN value. */
+#ifndef _PRINTF_NAN_LEN_MAX
+# if defined __FreeBSD__ || defined __DragonFly__ \
+ || defined __NetBSD__ \
+ || (defined __APPLE__ && defined __MACH__)
+/* On BSD systems, a NaN value prints as just "nan", without a sign. */
+# define _PRINTF_NAN_LEN_MAX 3
+# elif (__GLIBC__ >= 2) || MUSL_LIBC || defined __OpenBSD__ || defined __sun || defined __CYGWIN__
+/* glibc, musl libc, OpenBSD, Solaris libc, and Cygwin produce "[-]nan". */
+# define _PRINTF_NAN_LEN_MAX 4
+# elif defined _AIX
+/* AIX produces "[-]NaNQ". */
+# define _PRINTF_NAN_LEN_MAX 5
+# elif defined _WIN32 && !defined __CYGWIN__
+/* On native Windows, the output can be:
+ - with MSVC ucrt: "[-]nan" or "[-]nan(ind)" or "[-]nan(snan)",
+ - with mingw: "[-]1.#IND" or "[-]1.#QNAN". */
+# define _PRINTF_NAN_LEN_MAX 10
+# elif defined __sgi
+/* On IRIX, the output typically is "[-]nan0xNNNNNNNN" with 8 hexadecimal
+ digits. */
+# define _PRINTF_NAN_LEN_MAX 14
+# else
+/* We don't know, but 32 should be a safe maximum. */
+# define _PRINTF_NAN_LEN_MAX 32
+# endif
+#endif
+
+
#if @GNULIB_DPRINTF@
# if @REPLACE_DPRINTF@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -210,7 +296,9 @@ _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *restrict format, ...)
# endif
_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *restrict format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (dprintf);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef dprintf
# if HAVE_RAW_DECL_DPRINTF
@@ -273,7 +361,8 @@ _GL_CXXALIASWARN (fcloseall);
# endif
_GL_FUNCDECL_RPL (fdopen, FILE *,
(int fd, const char *mode)
- _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
# elif defined _WIN32 && !defined __CYGWIN__
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -284,9 +373,18 @@ _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode));
# else
# if __GNUC__ >= 11
/* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose. */
+# if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
_GL_FUNCDECL_SYS (fdopen, FILE *,
(int fd, const char *mode)
- _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ATTRIBUTE_NOTHROW
+ _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
+# else
+_GL_FUNCDECL_SYS (fdopen, FILE *,
+ (int fd, const char *mode)
+ _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
+# endif
# endif
_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
# endif
@@ -294,9 +392,18 @@ _GL_CXXALIASWARN (fdopen);
#else
# if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fdopen
/* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose. */
+# if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
+_GL_FUNCDECL_SYS (fdopen, FILE *,
+ (int fd, const char *mode)
+ _GL_ATTRIBUTE_NOTHROW
+ _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
+# else
_GL_FUNCDECL_SYS (fdopen, FILE *,
(int fd, const char *mode)
- _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
+# endif
# endif
# if defined GNULIB_POSIXCHECK
# undef fdopen
@@ -407,7 +514,8 @@ _GL_CXXALIASWARN (fileno);
# endif
_GL_FUNCDECL_RPL (fopen, FILE *,
(const char *restrict filename, const char *restrict mode)
- _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
_GL_CXXALIAS_RPL (fopen, FILE *,
(const char *restrict filename, const char *restrict mode));
# else
@@ -882,7 +990,9 @@ _GL_CXXALIAS_SYS (getdelim, ssize_t,
int delimiter,
FILE *restrict stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getdelim);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef getdelim
# if HAVE_RAW_DECL_GETDELIM
@@ -921,7 +1031,7 @@ _GL_CXXALIAS_SYS (getline, ssize_t,
(char **restrict lineptr, size_t *restrict linesize,
FILE *restrict stream));
# endif
-# if @HAVE_DECL_GETLINE@
+# if __GLIBC__ >= 2 && @HAVE_DECL_GETLINE@
_GL_CXXALIASWARN (getline);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -951,9 +1061,17 @@ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
# endif
_GL_CXXALIAS_MDA (getw, int, (FILE *restrict stream));
# else
+# if @HAVE_DECL_GETW@
+# if defined __APPLE__ && defined __MACH__
+/* The presence of the declaration depends on _POSIX_C_SOURCE. */
+_GL_FUNCDECL_SYS (getw, int, (FILE *restrict stream));
+# endif
_GL_CXXALIAS_SYS (getw, int, (FILE *restrict stream));
+# endif
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getw);
+# endif
#endif
#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
@@ -1052,13 +1170,15 @@ _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
# endif
_GL_FUNCDECL_RPL (popen, FILE *,
(const char *cmd, const char *mode)
- _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1));
+ _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
# else
# if !@HAVE_POPEN@ || __GNUC__ >= 11
_GL_FUNCDECL_SYS (popen, FILE *,
(const char *cmd, const char *mode)
- _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1));
+ _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
# endif
_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
# endif
@@ -1068,7 +1188,8 @@ _GL_CXXALIASWARN (popen);
/* For -Wmismatched-dealloc: Associate popen with pclose or rpl_pclose. */
_GL_FUNCDECL_SYS (popen, FILE *,
(const char *cmd, const char *mode)
- _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1));
+ _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
# endif
# if defined GNULIB_POSIXCHECK
# undef popen
@@ -1190,9 +1311,17 @@ _GL_CXXALIASWARN (puts);
# endif
_GL_CXXALIAS_MDA (putw, int, (int w, FILE *restrict stream));
# else
+# if @HAVE_DECL_PUTW@
+# if defined __APPLE__ && defined __MACH__
+/* The presence of the declaration depends on _POSIX_C_SOURCE. */
+_GL_FUNCDECL_SYS (putw, int, (int w, FILE *restrict stream));
+# endif
_GL_CXXALIAS_SYS (putw, int, (int w, FILE *restrict stream));
+# endif
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (putw);
+# endif
#endif
#if @GNULIB_REMOVE@
@@ -1398,13 +1527,15 @@ _GL_CXXALIASWARN (tempnam);
# define tmpfile rpl_tmpfile
# endif
_GL_FUNCDECL_RPL (tmpfile, FILE *, (void)
- _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
# else
# if __GNUC__ >= 11
/* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose. */
_GL_FUNCDECL_SYS (tmpfile, FILE *, (void)
- _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
# endif
_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
# endif
@@ -1415,7 +1546,8 @@ _GL_CXXALIASWARN (tmpfile);
# if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined tmpfile
/* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose. */
_GL_FUNCDECL_SYS (tmpfile, FILE *, (void)
- _GL_ATTRIBUTE_DEALLOC (fclose, 1));
+ _GL_ATTRIBUTE_DEALLOC (fclose, 1)
+ _GL_ATTRIBUTE_MALLOC);
# endif
# if defined GNULIB_POSIXCHECK
# undef tmpfile
diff --git a/tests/strerror-override.c b/tests/strerror-override.c
index 6be1afdc..b9c1c7ab 100644
--- a/tests/strerror-override.c
+++ b/tests/strerror-override.c
@@ -1,6 +1,6 @@
/* strerror-override.c --- POSIX compatible system error routine
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/strerror-override.h b/tests/strerror-override.h
index d010d27c..872fa7d6 100644
--- a/tests/strerror-override.h
+++ b/tests/strerror-override.h
@@ -1,6 +1,6 @@
/* strerror-override.h --- POSIX compatible system error routine
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -18,6 +18,11 @@
#ifndef _GL_STRERROR_OVERRIDE_H
# define _GL_STRERROR_OVERRIDE_H
+/* This file uses _GL_ATTRIBUTE_CONST. */
+# if !_GL_CONFIG_H_INCLUDED
+# error "Please include config.h first."
+# endif
+
# include <errno.h>
# include <stddef.h>
diff --git a/tests/strerror.c b/tests/strerror.c
index 1019fe9e..6b760ff4 100644
--- a/tests/strerror.c
+++ b/tests/strerror.c
@@ -1,6 +1,6 @@
/* strerror.c --- POSIX compatible system error routine
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/strerror_r.c b/tests/strerror_r.c
index b154c292..0cd28ade 100644
--- a/tests/strerror_r.c
+++ b/tests/strerror_r.c
@@ -1,6 +1,6 @@
/* strerror_r.c --- POSIX compatible system error routine
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/symlink.c b/tests/symlink.c
index 26310af7..6ba83666 100644
--- a/tests/symlink.c
+++ b/tests/symlink.c
@@ -1,5 +1,5 @@
/* Stub for symlink().
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/sys_ioctl.in.h b/tests/sys_ioctl.in.h
index 7f1cdc86..787d35f7 100644
--- a/tests/sys_ioctl.in.h
+++ b/tests/sys_ioctl.in.h
@@ -1,5 +1,5 @@
/* Substitute for and wrapper around <sys/ioctl.h>.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -29,6 +29,11 @@
#ifndef _@GUARD_PREFIX@_SYS_IOCTL_H
#define _@GUARD_PREFIX@_SYS_IOCTL_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* AIX 5.1 and Solaris 10 declare ioctl() in <unistd.h> and in <stropts.h>,
but not in <sys/ioctl.h>.
Haiku declares ioctl() in <unistd.h>, but not in <sys/ioctl.h>.
@@ -62,7 +67,9 @@ _GL_FUNCDECL_SYS (ioctl, int,
_GL_CXXALIAS_SYS (ioctl, int,
(int fd, int request, ... /* {void *,char *} arg */));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (ioctl);
+# endif
#elif @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
# undef ioctl
# define ioctl ioctl_used_without_requesting_gnulib_module_ioctl
diff --git a/tests/sys_select.in.h b/tests/sys_select.in.h
index 860e957f..de29c779 100644
--- a/tests/sys_select.in.h
+++ b/tests/sys_select.in.h
@@ -1,5 +1,5 @@
/* Substitute for <sys/select.h>.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -19,6 +19,13 @@
# endif
@PRAGMA_COLUMNS@
+/* This file uses #include_next of a system file that defines time_t.
+ For the 'year2038' module to work right, <config.h> needs to have been
+ included before. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* On OSF/1 and Solaris 2.6, <sys/types.h> and <sys/time.h>
both include <sys/select.h>.
On Cygwin and OpenBSD, <sys/time.h> includes <sys/select.h>.
@@ -71,6 +78,11 @@
#ifndef _@GUARD_PREFIX@_SYS_SELECT_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* On many platforms, <sys/select.h> assumes prior inclusion of
<sys/types.h>. Also, mingw defines sigset_t there, instead of
in <signal.h> where it belongs. */
diff --git a/tests/sys_socket.c b/tests/sys_socket.c
index 0bfd60f2..672d3aac 100644
--- a/tests/sys_socket.c
+++ b/tests/sys_socket.c
@@ -1,6 +1,6 @@
/* Inline functions for <sys/socket.h>.
- Copyright (C) 2012-2022 Free Software Foundation, Inc.
+ Copyright (C) 2012-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -18,5 +18,5 @@
#include <config.h>
#define _GL_SYS_SOCKET_INLINE _GL_EXTERN_INLINE
-#include "sys/socket.h"
+#include <sys/socket.h>
typedef int dummy;
diff --git a/tests/sys_socket.in.h b/tests/sys_socket.in.h
index 637a248d..13833c0f 100644
--- a/tests/sys_socket.in.h
+++ b/tests/sys_socket.in.h
@@ -1,6 +1,6 @@
/* Provide a sys/socket header file for systems lacking it (read: MinGW)
and for systems where it is incomplete.
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
Written by Simon Josefsson.
This file is free software: you can redistribute it and/or modify
@@ -63,9 +63,12 @@
#ifndef _@GUARD_PREFIX@_SYS_SOCKET_H
#define _@GUARD_PREFIX@_SYS_SOCKET_H
-#ifndef _GL_INLINE_HEADER_BEGIN
+/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, GNULIB_POSIXCHECK,
+ HAVE_RAW_DECL_*, alignof. */
+#if !_GL_CONFIG_H_INCLUDED
#error "Please include config.h first."
#endif
+
_GL_INLINE_HEADER_BEGIN
#ifndef _GL_SYS_SOCKET_INLINE
# define _GL_SYS_SOCKET_INLINE _GL_INLINE
@@ -355,7 +358,9 @@ _GL_CXXALIAS_SYS_CAST (accept, int,
struct sockaddr *restrict addr,
socklen_t *restrict addrlen));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (accept);
+# endif
#elif @HAVE_WINSOCK2_H@
# undef accept
# define accept accept_used_without_requesting_gnulib_module_accept
@@ -417,7 +422,9 @@ _GL_CXXALIAS_SYS_CAST (getpeername, int,
(int fd, struct sockaddr *restrict addr,
socklen_t *restrict addrlen));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getpeername);
+# endif
#elif @HAVE_WINSOCK2_H@
# undef getpeername
# define getpeername getpeername_used_without_requesting_gnulib_module_getpeername
@@ -449,7 +456,9 @@ _GL_CXXALIAS_SYS_CAST (getsockname, int,
(int fd, struct sockaddr *restrict addr,
socklen_t *restrict addrlen));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getsockname);
+# endif
#elif @HAVE_WINSOCK2_H@
# undef getsockname
# define getsockname getsockname_used_without_requesting_gnulib_module_getsockname
@@ -596,7 +605,9 @@ _GL_CXXALIAS_SYS_CAST (recvfrom, ssize_t,
struct sockaddr *restrict from,
socklen_t *restrict fromlen));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (recvfrom);
+# endif
#elif @HAVE_WINSOCK2_H@
# undef recvfrom
# define recvfrom recvfrom_used_without_requesting_gnulib_module_recvfrom
diff --git a/tests/sys_stat.in.h b/tests/sys_stat.in.h
index 0ec320f5..bf08f335 100644
--- a/tests/sys_stat.in.h
+++ b/tests/sys_stat.in.h
@@ -1,5 +1,5 @@
/* Provide a more complete sys/stat.h header file.
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -25,6 +25,13 @@
#endif
@PRAGMA_COLUMNS@
+/* This file uses #include_next of a system file that defines time_t.
+ For the 'year2038' module to work right, <config.h> needs to have been
+ included before. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#if defined __need_system_sys_stat_h
/* Special invocation convention. */
@@ -48,12 +55,41 @@
#ifndef _@GUARD_PREFIX@_SYS_STAT_H
#define _@GUARD_PREFIX@_SYS_STAT_H
+/* This file uses _GL_ATTRIBUTE_NOTHROW, GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
+
+/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
+ */
+#ifndef _GL_ATTRIBUTE_NOTHROW
+# if defined __cplusplus
+# if (__GNUC__ + (__GNUC_MINOR__ >= 8) > 2) || __clang_major >= 4
+# if __cplusplus >= 201103L
+# define _GL_ATTRIBUTE_NOTHROW noexcept (true)
+# else
+# define _GL_ATTRIBUTE_NOTHROW throw ()
+# endif
+# else
+# define _GL_ATTRIBUTE_NOTHROW
+# endif
+# else
+# if (__GNUC__ + (__GNUC_MINOR__ >= 3) > 3) || defined __clang__
+# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
+# else
+# define _GL_ATTRIBUTE_NOTHROW
+# endif
+# endif
+#endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_ARG_NONNULL is copied here. */
/* The definition of _GL_WARN_ON_USE is copied here. */
+
/* Before doing "#define mknod rpl_mknod" below, we need to include all
headers that may declare mknod(). OS/2 kLIBC declares mknod() in
<unistd.h>, not in <sys/stat.h>. */
@@ -549,7 +585,7 @@ _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]));
# endif
_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2]));
# endif
-# if @HAVE_FUTIMENS@
+# if __GLIBC__ >= 2 && @HAVE_FUTIMENS@
_GL_CXXALIASWARN (futimens);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -563,7 +599,11 @@ _GL_WARN_ON_USE (futimens, "futimens is not portable - "
#if @GNULIB_GETUMASK@
# if !@HAVE_GETUMASK@
+# if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
+_GL_FUNCDECL_SYS (getumask, mode_t, (void) _GL_ATTRIBUTE_NOTHROW);
+# else
_GL_FUNCDECL_SYS (getumask, mode_t, (void));
+# endif
# endif
_GL_CXXALIAS_SYS (getumask, mode_t, (void));
# if @HAVE_GETUMASK@
@@ -716,7 +756,9 @@ _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)
# endif
_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mkfifoat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mkfifoat
# if HAVE_RAW_DECL_MKFIFOAT
@@ -773,7 +815,9 @@ _GL_FUNCDECL_SYS (mknodat, int,
_GL_CXXALIAS_SYS (mknodat, int,
(int fd, char const *file, mode_t mode, dev_t dev));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mknodat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mknodat
# if HAVE_RAW_DECL_MKNODAT
@@ -937,7 +981,7 @@ _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name,
_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name,
struct timespec const times[2], int flag));
# endif
-# if @HAVE_UTIMENSAT@
+# if __GLIBC__ >= 2 && @HAVE_UTIMENSAT@
_GL_CXXALIASWARN (utimensat);
# endif
#elif defined GNULIB_POSIXCHECK
diff --git a/tests/sys_time.in.h b/tests/sys_time.in.h
index 87db1a88..4a301c48 100644
--- a/tests/sys_time.in.h
+++ b/tests/sys_time.in.h
@@ -1,6 +1,6 @@
/* Provide a more complete sys/time.h.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -24,6 +24,13 @@
#endif
@PRAGMA_COLUMNS@
+/* This file uses #include_next of a system file that defines time_t.
+ For the 'year2038' module to work right, <config.h> needs to have been
+ included before. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* On Cygwin and on many BSDish systems, <sys/time.h> includes itself
recursively via <sys/select.h>.
Simply delegate to the system's header in this case; it is a no-op.
@@ -41,6 +48,11 @@
#ifndef _@GUARD_PREFIX@_SYS_TIME_H
#define _@GUARD_PREFIX@_SYS_TIME_H
+/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#if ! @HAVE_SYS_TIME_H@
# include <time.h>
#endif
diff --git a/tests/sys_uio.in.h b/tests/sys_uio.in.h
index 788d461f..5e71859d 100644
--- a/tests/sys_uio.in.h
+++ b/tests/sys_uio.in.h
@@ -1,5 +1,5 @@
/* Substitute for <sys/uio.h>.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/test-accept.c b/tests/test-accept.c
index 234de641..ed02450b 100644
--- a/tests/test-accept.c
+++ b/tests/test-accept.c
@@ -1,5 +1,5 @@
/* Test accepting a connection to a server socket.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-stdalign.c b/tests/test-alignasof.c
index a9355545..1cc75b0f 100644
--- a/tests/test-stdalign.c
+++ b/tests/test-alignasof.c
@@ -1,5 +1,5 @@
-/* Test of <stdalign.h>.
- Copyright 2009-2022 Free Software Foundation, Inc.
+/* Test of alignasof module.
+ Copyright 2009-2024 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
@@ -35,6 +35,7 @@ typedef struct { char a[4]; } struct4;
limit the test to 8 for now. */
# define TEST_ALIGNMENT 8
#else
+# undef alignas
# define alignas(alignment)
# define TEST_ALIGNMENT 1
#endif
diff --git a/tests/test-alloca-opt.c b/tests/test-alloca-opt.c
index a64ed82a..3f20779c 100644
--- a/tests/test-alloca-opt.c
+++ b/tests/test-alloca-opt.c
@@ -1,5 +1,5 @@
/* Test of optional automatic memory allocation.
- Copyright (C) 2005, 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009-2024 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
diff --git a/tests/test-arpa_inet.c b/tests/test-arpa_inet.c
index cfe4a7a2..77222638 100644
--- a/tests/test-arpa_inet.c
+++ b/tests/test-arpa_inet.c
@@ -1,5 +1,5 @@
/* Test of <arpa/inet.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-array-mergesort.c b/tests/test-array-mergesort.c
index 5996bc31..71639d12 100644
--- a/tests/test-array-mergesort.c
+++ b/tests/test-array-mergesort.c
@@ -1,5 +1,5 @@
/* Test of stable-sorting of an array using mergesort.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
diff --git a/tests/test-assert.c b/tests/test-assert.c
index 45b0c0f4..771eec34 100644
--- a/tests/test-assert.c
+++ b/tests/test-assert.c
@@ -1,5 +1,5 @@
/* Test assert.h and static_assert.
- Copyright 2022 Free Software Foundation, Inc.
+ Copyright 2022-2024 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
@@ -65,6 +65,7 @@ int
main (void)
{
STATIC_ASSERT_TESTS;
+ f ("");
g ();
h ();
return 0;
diff --git a/tests/test-binary-io.c b/tests/test-binary-io.c
index 2d71ae9c..32de2fe4 100644
--- a/tests/test-binary-io.c
+++ b/tests/test-binary-io.c
@@ -1,5 +1,5 @@
/* Test of binary mode I/O.
- Copyright (C) 2005, 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007-2024 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
@@ -30,7 +30,7 @@
#include "macros.h"
int
-main (int argc, char *argv[])
+main (_GL_UNUSED int argc, char *argv[])
{
/* Test the O_BINARY macro. */
{
diff --git a/tests/test-binary-io.sh b/tests/test-binary-io.sh
index a177d947..7bc5aa07 100755
--- a/tests/test-binary-io.sh
+++ b/tests/test-binary-io.sh
@@ -1,7 +1,7 @@
#!/bin/sh
tmpfiles=""
-trap 'rm -fr $tmpfiles' 1 2 3 15
+trap 'rm -fr $tmpfiles' HUP INT QUIT TERM
tmpfiles="$tmpfiles t-bin-out0.tmp t-bin-out1.tmp"
${CHECKER} ./test-binary-io${EXEEXT} 1 > t-bin-out1.tmp || exit 1
diff --git a/tests/test-bind.c b/tests/test-bind.c
index 17063bf7..0f8e783a 100644
--- a/tests/test-bind.c
+++ b/tests/test-bind.c
@@ -1,5 +1,5 @@
/* Test binding a server socket to a port.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-btoc32-1.sh b/tests/test-btoc32-1.sh
new file mode 100755
index 00000000..25caea64
--- /dev/null
+++ b/tests/test-btoc32-1.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Test whether the POSIX locale has encoding errors.
+LC_ALL=C \
+${CHECKER} ./test-btoc32${EXEEXT} 1 || exit 1
+LC_ALL=POSIX \
+${CHECKER} ./test-btoc32${EXEEXT} 1 || exit 1
+
+exit 0
diff --git a/tests/test-mbrtowc1.sh b/tests/test-btoc32-2.sh
index 2b6eaf99..ba52767b 100755
--- a/tests/test-mbrtowc1.sh
+++ b/tests/test-btoc32-2.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR = none; then
fi
LC_ALL=$LOCALE_FR \
-${CHECKER} ./test-mbrtowc${EXEEXT} 1
+${CHECKER} ./test-btoc32${EXEEXT} 2
diff --git a/tests/test-mbrtowc2.sh b/tests/test-btoc32-3.sh
index 6868e863..8c6b1803 100755
--- a/tests/test-mbrtowc2.sh
+++ b/tests/test-btoc32-3.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR_UTF8 = none; then
fi
LC_ALL=$LOCALE_FR_UTF8 \
-${CHECKER} ./test-mbrtowc${EXEEXT} 2
+${CHECKER} ./test-btoc32${EXEEXT} 3
diff --git a/tests/test-btoc32.c b/tests/test-btoc32.c
new file mode 100644
index 00000000..7e15dcce
--- /dev/null
+++ b/tests/test-btoc32.c
@@ -0,0 +1,94 @@
+/* Test of conversion of unibyte character to 32-bit wide character.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (btoc32, wint_t, (int));
+
+#include <locale.h>
+#include <stdio.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+int
+main (int argc, char *argv[])
+{
+ int c;
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ ASSERT (btoc32 (EOF) == WEOF);
+
+#ifdef __ANDROID__
+ /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+ "C" locale. Furthermore, when you attempt to set the "C" or "POSIX"
+ locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+ that is, effectively the "C.UTF-8" locale. */
+ if (argc > 1 && strcmp (argv[1], "1") == 0 && MB_CUR_MAX > 1)
+ argv[1] = "3";
+#endif
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '1':
+ /* C or POSIX locale. */
+ for (c = 0; c < 0x100; c++)
+ if (c != 0)
+ {
+ /* We are testing all nonnull bytes. */
+ wint_t wc = btoc32 (c);
+ /* POSIX:2018 says regarding btowc: "In the POSIX locale, btowc()
+ shall not return WEOF if c has a value in the range 0 to 255
+ inclusive." It is reasonable to expect btoc32 to behave in
+ the same way. */
+ if (c < 0x80)
+ /* c is an ASCII character. */
+ ASSERT (wc == c);
+ else
+ /* On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
+ But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF. */
+ ASSERT (wc == c || wc == 0xDF00 + c);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ for (c = 0; c < 0x80; c++)
+ ASSERT (btoc32 (c) == c);
+ for (c = 0xA0; c < 0x100; c++)
+ ASSERT (btoc32 (c) != WEOF);
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ for (c = 0; c < 0x80; c++)
+ ASSERT (btoc32 (c) == c);
+ for (c = 0x80; c < 0x100; c++)
+ ASSERT (btoc32 (c) == WEOF);
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/test-btowc-1.sh b/tests/test-btowc-1.sh
new file mode 100755
index 00000000..d6776565
--- /dev/null
+++ b/tests/test-btowc-1.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Test whether the POSIX locale has encoding errors.
+LC_ALL=C \
+${CHECKER} ./test-btowc${EXEEXT} 1 || exit 1
+LC_ALL=POSIX \
+${CHECKER} ./test-btowc${EXEEXT} 1 || exit 1
+
+exit 0
diff --git a/tests/test-btowc1.sh b/tests/test-btowc-2.sh
index e51e1c5c..9f939d6c 100755
--- a/tests/test-btowc1.sh
+++ b/tests/test-btowc-2.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR = none; then
fi
LC_ALL=$LOCALE_FR \
-${CHECKER} ./test-btowc${EXEEXT} 1
+${CHECKER} ./test-btowc${EXEEXT} 2
diff --git a/tests/test-btowc2.sh b/tests/test-btowc-3.sh
index 9f38f4e8..41244765 100755
--- a/tests/test-btowc2.sh
+++ b/tests/test-btowc-3.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR_UTF8 = none; then
fi
LC_ALL=$LOCALE_FR_UTF8 \
-${CHECKER} ./test-btowc${EXEEXT} 2
+${CHECKER} ./test-btowc${EXEEXT} 3
diff --git a/tests/test-btowc.c b/tests/test-btowc.c
index 32806f07..aeac4bbf 100644
--- a/tests/test-btowc.c
+++ b/tests/test-btowc.c
@@ -1,5 +1,5 @@
/* Test of conversion of unibyte character to wide character.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -39,10 +39,38 @@ main (int argc, char *argv[])
ASSERT (btowc (EOF) == WEOF);
+#ifdef __ANDROID__
+ /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+ "C" locale. Furthermore, when you attempt to set the "C" or "POSIX"
+ locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+ that is, effectively the "C.UTF-8" locale. */
+ if (argc > 1 && strcmp (argv[1], "1") == 0 && MB_CUR_MAX > 1)
+ argv[1] = "3";
+#endif
+
if (argc > 1)
switch (argv[1][0])
{
case '1':
+ /* C or POSIX locale. */
+ for (c = 0; c < 0x100; c++)
+ if (c != 0)
+ {
+ /* We are testing all nonnull bytes. */
+ wint_t wc = btowc (c);
+ /* POSIX:2018 says: "In the POSIX locale, btowc() shall not return
+ WEOF if c has a value in the range 0 to 255 inclusive." */
+ if (c < 0x80)
+ /* c is an ASCII character. */
+ ASSERT (wc == c);
+ else
+ /* On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
+ But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF. */
+ ASSERT (wc == c || wc == 0xDF00 + c);
+ }
+ return 0;
+
+ case '2':
/* Locale encoding is ISO-8859-1 or ISO-8859-15. */
for (c = 0; c < 0x80; c++)
ASSERT (btowc (c) == c);
@@ -50,7 +78,7 @@ main (int argc, char *argv[])
ASSERT (btowc (c) != WEOF);
return 0;
- case '2':
+ case '3':
/* Locale encoding is UTF-8. */
for (c = 0; c < 0x80; c++)
ASSERT (btowc (c) == c);
diff --git a/tests/test-c-ctype.c b/tests/test-c-ctype.c
index 9870520d..8414a31d 100644
--- a/tests/test-c-ctype.c
+++ b/tests/test-c-ctype.c
@@ -1,5 +1,5 @@
/* Test of character handling in C locale.
- Copyright (C) 2005, 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007-2024 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
diff --git a/tests/test-c-strcasecmp.c b/tests/test-c-strcasecmp.c
index 1bb518da..fd07e009 100644
--- a/tests/test-c-strcasecmp.c
+++ b/tests/test-c-strcasecmp.c
@@ -1,5 +1,5 @@
/* Test of case-insensitive string comparison function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-c-strncasecmp.c b/tests/test-c-strncasecmp.c
index 734eb87b..a8bb3358 100644
--- a/tests/test-c-strncasecmp.c
+++ b/tests/test-c-strncasecmp.c
@@ -1,5 +1,5 @@
/* Test of case-insensitive string comparison function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-c32isalnum.c b/tests/test-c32isalnum.c
new file mode 100644
index 00000000..4f75e0f4
--- /dev/null
+++ b/tests/test-c32isalnum.c
@@ -0,0 +1,261 @@
+/* Test of c32isalnum() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isalnum, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isalnum for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isalnum (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isalnum (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the alphanumeric characters include the uppercase and
+ lowercase characters and digits and, consequently, include the A ... Z
+ and a ... z and 0 ... 9 characters.
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the alphanumeric characters include only the ASCII A ... Z and a ... z
+ and 0 ... 9 characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\327", 1);
+ ASSERT (is == 0);
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\330", 1);
+ ASSERT (is != 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\241\337", 2);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\217\251\254", 3);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\217\251\250", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is == 0);
+ #if defined __GLIBC__
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\243\355", 2);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\303\227", 2);
+ ASSERT (is == 0);
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\303\230", 2);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\305\201", 2);
+ ASSERT (is != 0);
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\343\200\201", 3);
+ ASSERT (is == 0);
+ #if defined __GLIBC__
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\357\274\221", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\357\275\215", 3);
+ ASSERT (is != 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10330 GOTHIC LETTER AHSA */
+ is = for_character ("\360\220\214\260", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+1D100 MUSICAL SYMBOL SINGLE BARLINE */
+ is = for_character ("\360\235\204\200", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\363\240\201\241", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\241\301", 2);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\201\060\211\061", 4);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\201\060\221\071", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is == 0);
+ #if defined __GLIBC__
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !defined __DragonFly__
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\243\355", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10330 GOTHIC LETTER AHSA */
+ is = for_character ("\220\060\322\066", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+1D100 MUSICAL SYMBOL SINGLE BARLINE */
+ is = for_character ("\224\062\273\064", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\323\066\237\065", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isalnum.sh b/tests/test-c32isalnum.sh
new file mode 100755
index 00000000..df94aade
--- /dev/null
+++ b/tests/test-c32isalnum.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isalnum${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isalnum${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isalnum${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isalnum${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isalnum${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isalnum${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isalpha.c b/tests/test-c32isalpha.c
new file mode 100644
index 00000000..14c78d7d
--- /dev/null
+++ b/tests/test-c32isalpha.c
@@ -0,0 +1,259 @@
+/* Test of c32isalpha() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isalpha, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isalpha for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isalpha (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isalpha (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the alphabetic characters include the uppercase and
+ lowercase characters and, consequently, include the A ... Z and a ... z
+ characters.
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the alphabetic characters include only the ASCII A ... Z and a ... z
+ characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\327", 1);
+ ASSERT (is == 0);
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\330", 1);
+ ASSERT (is != 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\241\337", 2);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\217\251\254", 3);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\217\251\250", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined __sun || defined __CYGWIN__)
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\243\355", 2);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\303\227", 2);
+ ASSERT (is == 0);
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\303\230", 2);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\305\201", 2);
+ ASSERT (is != 0);
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\343\200\201", 3);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__)
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\357\274\221", 3);
+ ASSERT (is == 0);
+ #endif
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\357\275\215", 3);
+ ASSERT (is != 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10330 GOTHIC LETTER AHSA */
+ is = for_character ("\360\220\214\260", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+1D100 MUSICAL SYMBOL SINGLE BARLINE */
+ is = for_character ("\360\235\204\200", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\363\240\201\241", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\241\301", 2);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\201\060\211\061", 4);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\201\060\221\071", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ #endif
+ #if !defined __DragonFly__
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\243\355", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10330 GOTHIC LETTER AHSA */
+ is = for_character ("\220\060\322\066", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+1D100 MUSICAL SYMBOL SINGLE BARLINE */
+ is = for_character ("\224\062\273\064", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\323\066\237\065", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isalpha.sh b/tests/test-c32isalpha.sh
new file mode 100755
index 00000000..11c896fa
--- /dev/null
+++ b/tests/test-c32isalpha.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isalpha${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isalpha${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isalpha${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isalpha${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isalpha${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isalpha${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isblank.c b/tests/test-c32isblank.c
new file mode 100644
index 00000000..0e722b25
--- /dev/null
+++ b/tests/test-c32isblank.c
@@ -0,0 +1,205 @@
+/* Test of c32isblank() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isblank, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isblank for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isblank (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isblank (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the blank characters include the <space> and <tab>
+ characters,
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the blank characters include only the ASCII <space> and <tab>
+ characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t':
+ #if !(defined __FreeBSD__ || defined __NetBSD__)
+ case '\v':
+ #endif
+ case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ if (c == '\t' || c == ' ')
+ ASSERT (is != 0);
+ else
+ ASSERT (is == 0);
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ #if defined __GLIBC__
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\240", 1);
+ ASSERT (is == 0);
+ #endif
+ /* U+00B7 MIDDLE DOT */
+ is = for_character ("\267", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+3002 IDEOGRAPHIC FULL STOP */
+ is = for_character ("\241\243", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ #if defined __GLIBC__
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\302\240", 2);
+ ASSERT (is == 0);
+ #endif
+ /* U+00B7 MIDDLE DOT */
+ is = for_character ("\302\267", 2);
+ ASSERT (is == 0);
+ #if defined __GLIBC__
+ /* U+202F NARROW NO-BREAK SPACE */
+ is = for_character ("\342\200\257", 3);
+ ASSERT (is == 0);
+ #endif
+ /* U+3002 IDEOGRAPHIC FULL STOP */
+ is = for_character ("\343\200\202", 3);
+ ASSERT (is == 0);
+ /* U+1D13D MUSICAL SYMBOL QUARTER REST */
+ is = for_character ("\360\235\204\275", 4);
+ ASSERT (is == 0);
+ /* U+E0020 TAG SPACE */
+ is = for_character ("\363\240\200\240", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ #if defined __GLIBC__
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\201\060\204\062", 4);
+ ASSERT (is == 0);
+ #endif
+ /* U+00B7 MIDDLE DOT */
+ is = for_character ("\241\244", 2);
+ ASSERT (is == 0);
+ #if defined __GLIBC__
+ /* U+202F NARROW NO-BREAK SPACE */
+ is = for_character ("\201\066\247\062", 4);
+ ASSERT (is == 0);
+ #endif
+ /* U+3002 IDEOGRAPHIC FULL STOP */
+ is = for_character ("\241\243", 2);
+ ASSERT (is == 0);
+ /* U+1D13D MUSICAL SYMBOL QUARTER REST */
+ is = for_character ("\224\062\301\065", 4);
+ ASSERT (is == 0);
+ /* U+E0020 TAG SPACE */
+ is = for_character ("\323\066\231\060", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isblank.sh b/tests/test-c32isblank.sh
new file mode 100755
index 00000000..fe5f9b86
--- /dev/null
+++ b/tests/test-c32isblank.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isblank${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isblank${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isblank${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isblank${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isblank${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isblank${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32iscntrl.c b/tests/test-c32iscntrl.c
new file mode 100644
index 00000000..674c5804
--- /dev/null
+++ b/tests/test-c32iscntrl.c
@@ -0,0 +1,212 @@
+/* Test of c32iscntrl() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32iscntrl, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32iscntrl for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32iscntrl (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32iscntrl (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ no explicit list of control characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is != 0);
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\240", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is != 0);
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is != 0);
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\302\240", 2);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__)
+ /* U+202E RIGHT-TO-LEFT OVERRIDE */
+ is = for_character ("\342\200\256", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\343\200\200", 3);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__)
+ /* U+FEFF ZERO WIDTH NO-BREAK SPACE */
+ is = for_character ("\357\273\277", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+20000 <CJK Ideograph> */
+ is = for_character ("\360\240\200\200", 4);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+E0001 LANGUAGE TAG */
+ is = for_character ("\363\240\200\201", 4);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is != 0);
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\201\060\204\062", 4);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+202E RIGHT-TO-LEFT OVERRIDE */
+ is = for_character ("\201\066\247\061", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+FEFF ZERO WIDTH NO-BREAK SPACE */
+ is = for_character ("\204\061\225\063", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+20000 <CJK Ideograph> */
+ is = for_character ("\225\062\202\066", 4);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+E0001 LANGUAGE TAG */
+ is = for_character ("\323\066\225\071", 4);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32iscntrl.sh b/tests/test-c32iscntrl.sh
new file mode 100755
index 00000000..b27747c7
--- /dev/null
+++ b/tests/test-c32iscntrl.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32iscntrl${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32iscntrl${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32iscntrl${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32iscntrl${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32iscntrl${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32iscntrl${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isdigit.c b/tests/test-c32isdigit.c
new file mode 100644
index 00000000..82b77015
--- /dev/null
+++ b/tests/test-c32isdigit.c
@@ -0,0 +1,236 @@
+/* Test of c32isdigit() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isdigit, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isdigit for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isdigit (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isdigit (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ ISO C 99 sections 7.25.2.1.5 and 5.2.1 specify that the decimal digits
+ include only the ASCII 0 ... 9 characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\262", 1);
+ ASSERT (is == 0);
+ /* U+00B3 SUPERSCRIPT THREE */
+ is = for_character ("\263", 1);
+ ASSERT (is == 0);
+ /* U+00B9 SUPERSCRIPT ONE */
+ is = for_character ("\271", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\302\262", 2);
+ ASSERT (is == 0);
+ /* U+00B3 SUPERSCRIPT THREE */
+ is = for_character ("\302\263", 2);
+ ASSERT (is == 0);
+ /* U+00B9 SUPERSCRIPT ONE */
+ is = for_character ("\302\271", 2);
+ ASSERT (is == 0);
+ /* U+0663 ARABIC-INDIC DIGIT THREE */
+ is = for_character ("\331\243", 2);
+ ASSERT (is == 0);
+ /* U+2070 SUPERSCRIPT ZERO */
+ is = for_character ("\342\201\260", 3);
+ ASSERT (is == 0);
+ /* U+2079 SUPERSCRIPT NINE */
+ is = for_character ("\342\201\271", 3);
+ ASSERT (is == 0);
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\357\274\221", 3);
+ ASSERT (is == 0);
+ /* U+1D7D1 MATHEMATICAL BOLD DIGIT THREE */
+ is = for_character ("\360\235\237\221", 4);
+ ASSERT (is == 0);
+ /* U+1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE */
+ is = for_character ("\360\235\237\233", 4);
+ ASSERT (is == 0);
+ /* U+1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE */
+ is = for_character ("\360\235\237\245", 4);
+ ASSERT (is == 0);
+ /* U+1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE */
+ is = for_character ("\360\235\237\257", 4);
+ ASSERT (is == 0);
+ /* U+1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE */
+ is = for_character ("\360\235\237\271", 4);
+ ASSERT (is == 0);
+ /* U+E0033 TAG DIGIT THREE */
+ is = for_character ("\363\240\200\263", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\201\060\205\065", 4);
+ ASSERT (is == 0);
+ /* U+00B3 SUPERSCRIPT THREE */
+ is = for_character ("\201\060\205\066", 4);
+ ASSERT (is == 0);
+ /* U+00B9 SUPERSCRIPT ONE */
+ is = for_character ("\201\060\206\061", 4);
+ ASSERT (is == 0);
+ /* U+0663 ARABIC-INDIC DIGIT THREE */
+ is = for_character ("\201\061\211\071", 4);
+ ASSERT (is == 0);
+ /* U+2070 SUPERSCRIPT ZERO */
+ is = for_character ("\201\066\255\062", 4);
+ ASSERT (is == 0);
+ /* U+2079 SUPERSCRIPT NINE */
+ is = for_character ("\201\066\256\061", 4);
+ ASSERT (is == 0);
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ /* U+1D7D1 MATHEMATICAL BOLD DIGIT THREE */
+ is = for_character ("\224\063\353\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE */
+ is = for_character ("\224\063\354\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE */
+ is = for_character ("\224\063\355\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE */
+ is = for_character ("\224\063\356\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE */
+ is = for_character ("\224\063\357\071", 4);
+ ASSERT (is == 0);
+ /* U+E0033 TAG DIGIT THREE */
+ is = for_character ("\323\066\232\071", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isdigit.sh b/tests/test-c32isdigit.sh
new file mode 100755
index 00000000..158d3628
--- /dev/null
+++ b/tests/test-c32isdigit.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isdigit${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isdigit${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isdigit${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isdigit${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isdigit${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isdigit${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isgraph.c b/tests/test-c32isgraph.c
new file mode 100644
index 00000000..fb993bbb
--- /dev/null
+++ b/tests/test-c32isgraph.c
@@ -0,0 +1,247 @@
+/* Test of c32isgraph() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isgraph, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isgraph for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isgraph (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isgraph (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ no explicit list of graphic characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ':
+ ASSERT (is == 0);
+ break;
+ default:
+ ASSERT (is != 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sgi || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\240", 1);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00B8 CEDILLA */
+ is = for_character ("\270", 1);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00B8 CEDILLA */
+ is = for_character ("\217\242\261", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\302\240", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+00B8 CEDILLA */
+ is = for_character ("\302\270", 2);
+ ASSERT (is != 0);
+ /* U+2002 EN SPACE */
+ is = for_character ("\342\200\202", 3);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__)
+ /* U+202E RIGHT-TO-LEFT OVERRIDE */
+ is = for_character ("\342\200\256", 3);
+ ASSERT (is == 0);
+ #endif
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\343\200\200", 3);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__)
+ /* U+FEFF ZERO WIDTH NO-BREAK SPACE */
+ is = for_character ("\357\273\277", 3);
+ ASSERT (is == 0);
+ #endif
+ #if !defined __sun
+ /* U+20000 <CJK Ideograph> */
+ is = for_character ("\360\240\200\200", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+E0001 LANGUAGE TAG */
+ is = for_character ("\363\240\200\201", 4);
+ ASSERT (is == 0);
+ #endif
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\201\060\204\062", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00B8 CEDILLA */
+ is = for_character ("\201\060\206\060", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+2002 EN SPACE */
+ is = for_character ("\201\066\243\070", 4);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+202E RIGHT-TO-LEFT OVERRIDE */
+ is = for_character ("\201\066\247\061", 4);
+ ASSERT (is == 0);
+ #endif
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+FEFF ZERO WIDTH NO-BREAK SPACE */
+ is = for_character ("\204\061\225\063", 4);
+ ASSERT (is == 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+20000 <CJK Ideograph> */
+ is = for_character ("\225\062\202\066", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+E0001 LANGUAGE TAG */
+ is = for_character ("\323\066\225\071", 4);
+ ASSERT (is == 0);
+ #endif
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isgraph.sh b/tests/test-c32isgraph.sh
new file mode 100755
index 00000000..be760fb2
--- /dev/null
+++ b/tests/test-c32isgraph.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isgraph${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isgraph${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isgraph${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isgraph${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isgraph${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isgraph${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32islower.c b/tests/test-c32islower.c
new file mode 100644
index 00000000..3b799677
--- /dev/null
+++ b/tests/test-c32islower.c
@@ -0,0 +1,354 @@
+/* Test of c32islower() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32islower, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32islower for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32islower (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32islower (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the lowercase characters include the a ... z
+ characters,
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the lowercase characters include only the ASCII a ... z characters.
+ */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\262", 1);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+00B5 MICRO SIGN */
+ is = for_character ("\265", 1);
+ ASSERT (is == 0);
+ #endif
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\311", 1);
+ ASSERT (is == 0);
+ #if !defined __CYGWIN__
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\337", 1);
+ ASSERT (is != 0);
+ #endif
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\351", 1);
+ ASSERT (is != 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\377", 1);
+ ASSERT (is != 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\217\252\261", 3);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __CYGWIN__)
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\217\251\316", 3);
+ ASSERT (is != 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\217\253\261", 3);
+ ASSERT (is != 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\217\253\363", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\217\251\250", 3);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ is = for_character ("\217\251\310", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ is = for_character ("\247\273", 2);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ is = for_character ("\247\353", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+3073 HIRAGANA LETTER BI */
+ is = for_character ("\244\323", 2);
+ ASSERT (is == 0);
+ #if !defined __DragonFly__
+ /* U+FF47 FULLWIDTH LATIN SMALL LETTER G */
+ is = for_character ("\243\347", 2);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\302\262", 2);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+00B5 MICRO SIGN */
+ is = for_character ("\302\265", 2);
+ ASSERT (is == 0);
+ #endif
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\303\211", 2);
+ ASSERT (is == 0);
+ #if !defined __CYGWIN__
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\303\237", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\303\251", 2);
+ ASSERT (is != 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\303\277", 2);
+ ASSERT (is != 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\305\201", 2);
+ ASSERT (is == 0);
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ is = for_character ("\305\202", 2);
+ ASSERT (is != 0);
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ is = for_character ("\320\251", 2);
+ ASSERT (is == 0);
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ is = for_character ("\321\211", 2);
+ ASSERT (is != 0);
+ /* U+05D5 HEBREW LETTER VAV */
+ is = for_character ("\327\225", 2);
+ ASSERT (is == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ is = for_character ("\343\201\263", 3);
+ ASSERT (is == 0);
+ /* U+3162 HANGUL LETTER YI */
+ is = for_character ("\343\205\242", 3);
+ ASSERT (is == 0);
+ /* U+FF47 FULLWIDTH LATIN SMALL LETTER G */
+ is = for_character ("\357\275\207", 3);
+ ASSERT (is != 0);
+ /* U+FFDB HALFWIDTH HANGUL LETTER YI */
+ is = for_character ("\357\277\233", 3);
+ ASSERT (is == 0);
+ /* U+10419 DESERET CAPITAL LETTER EF */
+ is = for_character ("\360\220\220\231", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+10441 DESERET SMALL LETTER EF */
+ is = for_character ("\360\220\221\201", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ is = for_character ("\363\240\201\201", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\363\240\201\241", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\201\060\205\065", 4);
+ ASSERT (is == 0);
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__)
+ /* U+00B5 MICRO SIGN */
+ is = for_character ("\201\060\205\070", 4);
+ ASSERT (is == 0);
+ #endif
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\201\060\207\067", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\201\060\211\070", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !defined __DragonFly__
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\250\246", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\201\060\213\067", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\201\060\221\071", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ is = for_character ("\201\060\222\060", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ is = for_character ("\247\273", 2);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ is = for_character ("\247\353", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+05D5 HEBREW LETTER VAV */
+ is = for_character ("\201\060\371\067", 4);
+ ASSERT (is == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ is = for_character ("\244\323", 2);
+ ASSERT (is == 0);
+ /* U+3162 HANGUL LETTER YI */
+ is = for_character ("\201\071\256\062", 4);
+ ASSERT (is == 0);
+ #if !defined __DragonFly__
+ /* U+FF47 FULLWIDTH LATIN SMALL LETTER G */
+ is = for_character ("\243\347", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+FFDB HALFWIDTH HANGUL LETTER YI */
+ is = for_character ("\204\061\241\071", 4);
+ ASSERT (is == 0);
+ /* U+10419 DESERET CAPITAL LETTER EF */
+ is = for_character ("\220\060\351\071", 4);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10441 DESERET SMALL LETTER EF */
+ is = for_character ("\220\060\355\071", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ is = for_character ("\323\066\234\063", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\323\066\237\065", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32islower.sh b/tests/test-c32islower.sh
new file mode 100755
index 00000000..f8b9840c
--- /dev/null
+++ b/tests/test-c32islower.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32islower${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32islower${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32islower${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32islower${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32islower${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32islower${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isprint.c b/tests/test-c32isprint.c
new file mode 100644
index 00000000..d28eb492
--- /dev/null
+++ b/tests/test-c32isprint.c
@@ -0,0 +1,250 @@
+/* Test of c32isprint() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isprint, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isprint for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isprint (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isprint (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ no explicit list of printable characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ ASSERT (is == 0);
+ break;
+ default:
+ ASSERT (is != 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sgi || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\240", 1);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00B8 CEDILLA */
+ is = for_character ("\270", 1);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00B8 CEDILLA */
+ is = for_character ("\217\242\261", 3);
+ ASSERT (is != 0);
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\302\240", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+00B8 CEDILLA */
+ is = for_character ("\302\270", 2);
+ ASSERT (is != 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+2002 EN SPACE */
+ is = for_character ("\342\200\202", 3);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__)
+ /* U+202E RIGHT-TO-LEFT OVERRIDE */
+ is = for_character ("\342\200\256", 3);
+ ASSERT (is == 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\343\200\200", 3);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+FEFF ZERO WIDTH NO-BREAK SPACE */
+ is = for_character ("\357\273\277", 3);
+ ASSERT (is == 0);
+ #endif
+ #if !defined __sun
+ /* U+20000 <CJK Ideograph> */
+ is = for_character ("\360\240\200\200", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || defined MUSL_LIBC || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+E0001 LANGUAGE TAG */
+ is = for_character ("\363\240\200\201", 4);
+ ASSERT (is == 0);
+ #endif
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+007F <control> */
+ is = for_character ("\177", 1);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00A0 NO-BREAK SPACE */
+ is = for_character ("\201\060\204\062", 4);
+ ASSERT (is != 0);
+ /* U+00B8 CEDILLA */
+ is = for_character ("\201\060\206\060", 4);
+ ASSERT (is != 0);
+ /* U+2002 EN SPACE */
+ is = for_character ("\201\066\243\070", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+202E RIGHT-TO-LEFT OVERRIDE */
+ is = for_character ("\201\066\247\061", 4);
+ ASSERT (is == 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+FEFF ZERO WIDTH NO-BREAK SPACE */
+ is = for_character ("\204\061\225\063", 4);
+ ASSERT (is == 0);
+ #endif
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+20000 <CJK Ideograph> */
+ is = for_character ("\225\062\202\066", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+E0001 LANGUAGE TAG */
+ is = for_character ("\323\066\225\071", 4);
+ ASSERT (is == 0);
+ #endif
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isprint.sh b/tests/test-c32isprint.sh
new file mode 100755
index 00000000..d455413b
--- /dev/null
+++ b/tests/test-c32isprint.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isprint${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isprint${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isprint${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isprint${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isprint${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isprint${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32ispunct.c b/tests/test-c32ispunct.c
new file mode 100644
index 00000000..1b9f8e3b
--- /dev/null
+++ b/tests/test-c32ispunct.c
@@ -0,0 +1,330 @@
+/* Test of c32ispunct() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32ispunct, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32ispunct for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32ispunct (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32ispunct (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ no explicit list of punctuation or symbol characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case ' ':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z':
+ /* c is an alphanumeric or space character. */
+ ASSERT (is == 0);
+ break;
+ case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case '[': case '\\': case ']': case '^': case '_':
+ case '{': case '|': case '}': case '~':
+ /* These characters are usually expected to be punctuation or
+ symbol characters. */
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ /* These characters are not in the ISO C "basic character set", but
+ are nevertheless usually expected to be punctuation or symbol
+ characters. */
+ is = for_character ("$", 1);
+ ASSERT (is != 0);
+ is = for_character ("@", 1);
+ ASSERT (is != 0);
+ is = for_character ("`", 1);
+ ASSERT (is != 0);
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00BF INVERTED QUESTION MARK */
+ is = for_character ("\277", 1);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\327", 1);
+ ASSERT (is != 0);
+ #endif
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\330", 1);
+ ASSERT (is == 0);
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\337", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+00BF INVERTED QUESTION MARK */
+ is = for_character ("\217\242\304", 3);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\241\337", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\217\251\254", 3);
+ ASSERT (is == 0);
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\217\251\316", 3);
+ ASSERT (is == 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\217\251\250", 3);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+2192 RIGHTWARDS ARROW */
+ is = for_character ("\242\252", 2);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\243\355", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00BF INVERTED QUESTION MARK */
+ is = for_character ("\302\277", 2);
+ ASSERT (is != 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\303\227", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\303\230", 2);
+ ASSERT (is == 0);
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\303\237", 2);
+ ASSERT (is == 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\305\201", 2);
+ ASSERT (is == 0);
+ /* U+05F3 HEBREW PUNCTUATION GERESH */
+ is = for_character ("\327\263", 2);
+ ASSERT (is != 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+2192 RIGHTWARDS ARROW */
+ is = for_character ("\342\206\222", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\343\200\201", 3);
+ ASSERT (is != 0);
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\357\274\221", 3);
+ ASSERT (is == 0);
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\357\275\215", 3);
+ ASSERT (is == 0);
+ /* U+10330 GOTHIC LETTER AHSA */
+ is = for_character ("\360\220\214\260", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+1D100 MUSICAL SYMBOL SINGLE BARLINE */
+ is = for_character ("\360\235\204\200", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __NetBSD__ || defined _AIX || defined __sun || defined __CYGWIN__ || (defined _WIN32 && !defined __CYGWIN__))
+ /* U+E003A TAG COLON */
+ is = for_character ("\363\240\200\272", 4);
+ ASSERT (is == 0);
+ #endif
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00BF INVERTED QUESTION MARK */
+ is = for_character ("\201\060\206\067", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+00D7 MULTIPLICATION SIGN */
+ is = for_character ("\241\301", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+ is = for_character ("\201\060\211\061", 4);
+ ASSERT (is == 0);
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\201\060\211\070", 4);
+ ASSERT (is == 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\201\060\221\071", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+05F3 HEBREW PUNCTUATION GERESH */
+ is = for_character ("\201\060\374\067", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+2192 RIGHTWARDS ARROW */
+ is = for_character ("\241\372", 2);
+ ASSERT (is != 0);
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ /* U+FF4D FULLWIDTH LATIN SMALL LETTER M */
+ is = for_character ("\243\355", 2);
+ ASSERT (is == 0);
+ /* U+10330 GOTHIC LETTER AHSA */
+ is = for_character ("\220\060\322\066", 4);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+1D100 MUSICAL SYMBOL SINGLE BARLINE */
+ is = for_character ("\224\062\273\064", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __GLIBC__ || (defined __APPLE__ && defined __MACH__) || defined __FreeBSD__)
+ /* U+E003A TAG COLON */
+ is = for_character ("\323\066\233\066", 4);
+ ASSERT (is == 0);
+ #endif
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32ispunct.sh b/tests/test-c32ispunct.sh
new file mode 100755
index 00000000..d818bcf7
--- /dev/null
+++ b/tests/test-c32ispunct.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32ispunct${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32ispunct${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32ispunct${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32ispunct${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32ispunct${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32ispunct${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isspace.c b/tests/test-c32isspace.c
new file mode 100644
index 00000000..15cf387d
--- /dev/null
+++ b/tests/test-c32isspace.c
@@ -0,0 +1,198 @@
+/* Test of c32isspace() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isspace, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isspace for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isspace (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isspace (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the white-space characters include the <space>,
+ <form-feed>, <newline>, <carriage-return>, <tab>, <vertical-tab>
+ characters,
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the white-space characters include only the ASCII <space>, <form-feed>,
+ <newline>, <carriage-return>, <tab>, <vertical-tab> characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\f': case '\n': case '\r': case '\t': case '\v':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set" or one of the explicitly
+ mentioned white-space characters. */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case ' ': case '\f': case '\n': case '\r': case '\t': case '\v':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00B7 MIDDLE DOT */
+ is = for_character ("\267", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00B7 MIDDLE DOT */
+ is = for_character ("\302\267", 2);
+ ASSERT (is == 0);
+ /* U+2002 EN SPACE */
+ is = for_character ("\342\200\202", 3);
+ ASSERT (is != 0);
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\343\200\200", 3);
+ ASSERT (is != 0);
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\343\200\201", 3);
+ ASSERT (is == 0);
+ /* U+E0020 TAG SPACE */
+ is = for_character ("\363\240\200\240", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00B7 MIDDLE DOT */
+ is = for_character ("\241\244", 2);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+2002 EN SPACE */
+ is = for_character ("\201\066\243\070", 4);
+ ASSERT (is != 0);
+ #endif
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+3000 IDEOGRAPHIC SPACE */
+ is = for_character ("\241\241", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+3001 IDEOGRAPHIC COMMA */
+ is = for_character ("\241\242", 2);
+ ASSERT (is == 0);
+ /* U+E0020 TAG SPACE */
+ is = for_character ("\323\066\231\060", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isspace.sh b/tests/test-c32isspace.sh
new file mode 100755
index 00000000..a704d86b
--- /dev/null
+++ b/tests/test-c32isspace.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isspace${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isspace${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isspace${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isspace${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isspace${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isspace${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isupper.c b/tests/test-c32isupper.c
new file mode 100644
index 00000000..178b0d19
--- /dev/null
+++ b/tests/test-c32isupper.c
@@ -0,0 +1,340 @@
+/* Test of c32isupper() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isupper, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isupper for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isupper (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isupper (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the uppercase characters include the A ... Z
+ characters,
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the uppercase characters include only the ASCII A ... Z characters.
+ */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\262", 1);
+ ASSERT (is == 0);
+ /* U+00B5 MICRO SIGN */
+ is = for_character ("\265", 1);
+ ASSERT (is == 0);
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\311", 1);
+ ASSERT (is != 0);
+ #if !defined __hpux
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\337", 1);
+ ASSERT (is == 0);
+ #endif
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\351", 1);
+ ASSERT (is == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\377", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\217\252\261", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\217\251\316", 3);
+ ASSERT (is == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\217\253\261", 3);
+ ASSERT (is == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\217\253\363", 3);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__)
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\217\251\250", 3);
+ ASSERT (is != 0);
+ #endif
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ is = for_character ("\217\251\310", 3);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ is = for_character ("\247\273", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ is = for_character ("\247\353", 2);
+ ASSERT (is == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ is = for_character ("\244\323", 2);
+ ASSERT (is == 0);
+ #if !defined __DragonFly__
+ /* U+FF27 FULLWIDTH LATIN CAPITAL LETTER G */
+ is = for_character ("\243\307", 2);
+ ASSERT (is != 0);
+ #endif
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\302\262", 2);
+ ASSERT (is == 0);
+ /* U+00B5 MICRO SIGN */
+ is = for_character ("\302\265", 2);
+ ASSERT (is == 0);
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\303\211", 2);
+ ASSERT (is != 0);
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\303\237", 2);
+ ASSERT (is == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\303\251", 2);
+ ASSERT (is == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\303\277", 2);
+ ASSERT (is == 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\305\201", 2);
+ ASSERT (is != 0);
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ is = for_character ("\305\202", 2);
+ ASSERT (is == 0);
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ is = for_character ("\320\251", 2);
+ ASSERT (is != 0);
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ is = for_character ("\321\211", 2);
+ ASSERT (is == 0);
+ /* U+05D5 HEBREW LETTER VAV */
+ is = for_character ("\327\225", 2);
+ ASSERT (is == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ is = for_character ("\343\201\263", 3);
+ ASSERT (is == 0);
+ /* U+3162 HANGUL LETTER YI */
+ is = for_character ("\343\205\242", 3);
+ ASSERT (is == 0);
+ /* U+FF27 FULLWIDTH LATIN CAPITAL LETTER G */
+ is = for_character ("\357\274\247", 3);
+ ASSERT (is != 0);
+ /* U+FFDB HALFWIDTH HANGUL LETTER YI */
+ is = for_character ("\357\277\233", 3);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+10419 DESERET CAPITAL LETTER EF */
+ is = for_character ("\360\220\220\231", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+10441 DESERET SMALL LETTER EF */
+ is = for_character ("\360\220\221\201", 4);
+ ASSERT (is == 0);
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ is = for_character ("\363\240\201\201", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\363\240\201\241", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\201\060\205\065", 4);
+ ASSERT (is == 0);
+ /* U+00B5 MICRO SIGN */
+ is = for_character ("\201\060\205\070", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ is = for_character ("\201\060\207\067", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ is = for_character ("\201\060\211\070", 4);
+ ASSERT (is == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ is = for_character ("\250\246", 2);
+ ASSERT (is == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ is = for_character ("\201\060\213\067", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ is = for_character ("\201\060\221\071", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ is = for_character ("\201\060\222\060", 4);
+ ASSERT (is == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ is = for_character ("\247\273", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ is = for_character ("\247\353", 2);
+ ASSERT (is == 0);
+ /* U+05D5 HEBREW LETTER VAV */
+ is = for_character ("\201\060\371\067", 4);
+ ASSERT (is == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ is = for_character ("\244\323", 2);
+ ASSERT (is == 0);
+ /* U+3162 HANGUL LETTER YI */
+ is = for_character ("\201\071\256\062", 4);
+ ASSERT (is == 0);
+ #if !defined __DragonFly__
+ /* U+FF27 FULLWIDTH LATIN CAPITAL LETTER G */
+ is = for_character ("\243\307", 2);
+ ASSERT (is != 0);
+ #endif
+ /* U+FFDB HALFWIDTH HANGUL LETTER YI */
+ is = for_character ("\204\061\241\071", 4);
+ ASSERT (is == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10419 DESERET CAPITAL LETTER EF */
+ is = for_character ("\220\060\351\071", 4);
+ ASSERT (is != 0);
+ #endif
+ /* U+10441 DESERET SMALL LETTER EF */
+ is = for_character ("\220\060\355\071", 4);
+ ASSERT (is == 0);
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ is = for_character ("\323\066\234\063", 4);
+ ASSERT (is == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ is = for_character ("\323\066\237\065", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isupper.sh b/tests/test-c32isupper.sh
new file mode 100755
index 00000000..ea3efcb8
--- /dev/null
+++ b/tests/test-c32isupper.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isupper${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isupper${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isupper${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isupper${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isupper${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isupper${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32isxdigit.c b/tests/test-c32isxdigit.c
new file mode 100644
index 00000000..0c266f47
--- /dev/null
+++ b/tests/test-c32isxdigit.c
@@ -0,0 +1,262 @@
+/* Test of c32isxdigit() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32isxdigit, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of c32isxdigit for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ return c32isxdigit (wc);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = c32isxdigit (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ ISO C 99 sections 7.25.2.1.12 and 6.4.4.1 specify that the hexadecimal
+ digits include only the ASCII 0 ... 9 A ... F a ... f characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\262", 1);
+ ASSERT (is == 0);
+ /* U+00B3 SUPERSCRIPT THREE */
+ is = for_character ("\263", 1);
+ ASSERT (is == 0);
+ /* U+00B9 SUPERSCRIPT ONE */
+ is = for_character ("\271", 1);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ /* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */
+ is = for_character ("\243\301", 2);
+ ASSERT (is == 0);
+ /* U+FF41 FULLWIDTH LATIN SMALL LETTER A */
+ is = for_character ("\243\341", 2);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\302\262", 2);
+ ASSERT (is == 0);
+ /* U+00B3 SUPERSCRIPT THREE */
+ is = for_character ("\302\263", 2);
+ ASSERT (is == 0);
+ /* U+00B9 SUPERSCRIPT ONE */
+ is = for_character ("\302\271", 2);
+ ASSERT (is == 0);
+ /* U+0663 ARABIC-INDIC DIGIT THREE */
+ is = for_character ("\331\243", 2);
+ ASSERT (is == 0);
+ /* U+2070 SUPERSCRIPT ZERO */
+ is = for_character ("\342\201\260", 3);
+ ASSERT (is == 0);
+ /* U+2079 SUPERSCRIPT NINE */
+ is = for_character ("\342\201\271", 3);
+ ASSERT (is == 0);
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\357\274\221", 3);
+ ASSERT (is == 0);
+ /* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */
+ is = for_character ("\357\274\241", 3);
+ ASSERT (is == 0);
+ /* U+FF41 FULLWIDTH LATIN SMALL LETTER A */
+ is = for_character ("\357\275\201", 3);
+ ASSERT (is == 0);
+ /* U+1D7D1 MATHEMATICAL BOLD DIGIT THREE */
+ is = for_character ("\360\235\237\221", 4);
+ ASSERT (is == 0);
+ /* U+1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE */
+ is = for_character ("\360\235\237\233", 4);
+ ASSERT (is == 0);
+ /* U+1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE */
+ is = for_character ("\360\235\237\245", 4);
+ ASSERT (is == 0);
+ /* U+1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE */
+ is = for_character ("\360\235\237\257", 4);
+ ASSERT (is == 0);
+ /* U+1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE */
+ is = for_character ("\360\235\237\271", 4);
+ ASSERT (is == 0);
+ /* U+E0033 TAG DIGIT THREE */
+ is = for_character ("\363\240\200\263", 4);
+ ASSERT (is == 0);
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ is = for_character ("\363\240\201\201", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ is = for_character ("\201\060\205\065", 4);
+ ASSERT (is == 0);
+ /* U+00B3 SUPERSCRIPT THREE */
+ is = for_character ("\201\060\205\066", 4);
+ ASSERT (is == 0);
+ /* U+00B9 SUPERSCRIPT ONE */
+ is = for_character ("\201\060\206\061", 4);
+ ASSERT (is == 0);
+ /* U+0663 ARABIC-INDIC DIGIT THREE */
+ is = for_character ("\201\061\211\071", 4);
+ ASSERT (is == 0);
+ /* U+2070 SUPERSCRIPT ZERO */
+ is = for_character ("\201\066\255\062", 4);
+ ASSERT (is == 0);
+ /* U+2079 SUPERSCRIPT NINE */
+ is = for_character ("\201\066\256\061", 4);
+ ASSERT (is == 0);
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\243\261", 2);
+ ASSERT (is == 0);
+ /* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */
+ is = for_character ("\243\301", 2);
+ ASSERT (is == 0);
+ /* U+FF41 FULLWIDTH LATIN SMALL LETTER A */
+ is = for_character ("\243\341", 2);
+ ASSERT (is == 0);
+ /* U+1D7D1 MATHEMATICAL BOLD DIGIT THREE */
+ is = for_character ("\224\063\353\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE */
+ is = for_character ("\224\063\354\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE */
+ is = for_character ("\224\063\355\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE */
+ is = for_character ("\224\063\356\071", 4);
+ ASSERT (is == 0);
+ /* U+1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE */
+ is = for_character ("\224\063\357\071", 4);
+ ASSERT (is == 0);
+ /* U+E0033 TAG DIGIT THREE */
+ is = for_character ("\323\066\232\071", 4);
+ ASSERT (is == 0);
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ is = for_character ("\323\066\234\063", 4);
+ ASSERT (is == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32isxdigit.sh b/tests/test-c32isxdigit.sh
new file mode 100755
index 00000000..48f8efa7
--- /dev/null
+++ b/tests/test-c32isxdigit.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32isxdigit${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32isxdigit${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32isxdigit${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32isxdigit${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32isxdigit${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32isxdigit${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32rtomb-w32-2.sh b/tests/test-c32rtomb-w32-2.sh
new file mode 100755
index 00000000..e797d0e5
--- /dev/null
+++ b/tests/test-c32rtomb-w32-2.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP1252 locale.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} French_France 1252
diff --git a/tests/test-c32rtomb-w32-3.sh b/tests/test-c32rtomb-w32-3.sh
new file mode 100755
index 00000000..1b63d472
--- /dev/null
+++ b/tests/test-c32rtomb-w32-3.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP1256 locale.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
diff --git a/tests/test-c32rtomb-w32-4.sh b/tests/test-c32rtomb-w32-4.sh
new file mode 100755
index 00000000..3c0f3db4
--- /dev/null
+++ b/tests/test-c32rtomb-w32-4.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test some UTF-8 locales.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
diff --git a/tests/test-c32rtomb-w32-5.sh b/tests/test-c32rtomb-w32-5.sh
new file mode 100755
index 00000000..ff59a872
--- /dev/null
+++ b/tests/test-c32rtomb-w32-5.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP932 locale.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} Japanese_Japan 932
diff --git a/tests/test-c32rtomb-w32-6.sh b/tests/test-c32rtomb-w32-6.sh
new file mode 100755
index 00000000..3cf34065
--- /dev/null
+++ b/tests/test-c32rtomb-w32-6.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP950 locale.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} Chinese_Taiwan 950
diff --git a/tests/test-c32rtomb-w32-7.sh b/tests/test-c32rtomb-w32-7.sh
new file mode 100755
index 00000000..2174c0b5
--- /dev/null
+++ b/tests/test-c32rtomb-w32-7.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP936 locale.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} Chinese_China 936
diff --git a/tests/test-c32rtomb-w32-8.sh b/tests/test-c32rtomb-w32-8.sh
new file mode 100755
index 00000000..b7e77b28
--- /dev/null
+++ b/tests/test-c32rtomb-w32-8.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-c32rtomb-w32${EXEEXT} Chinese_China 54936
diff --git a/tests/test-c32rtomb-w32.c b/tests/test-c32rtomb-w32.c
new file mode 100644
index 00000000..3e089d11
--- /dev/null
+++ b/tests/test-c32rtomb-w32.c
@@ -0,0 +1,349 @@
+/* Test of conversion of wide character to multibyte character.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "localcharset.h"
+#include "macros.h"
+
+#if defined _WIN32 && !defined __CYGWIN__
+
+static int
+test_one_locale (const char *name, int codepage)
+{
+ char buf[64];
+ size_t ret;
+
+# if 1
+ /* Portable code to set the locale. */
+ {
+ char name_with_codepage[1024];
+
+ sprintf (name_with_codepage, "%s.%d", name, codepage);
+
+ /* Set the locale. */
+ if (setlocale (LC_ALL, name_with_codepage) == NULL)
+ return 77;
+ }
+# else
+ /* Hacky way to set a locale.codepage combination that setlocale() refuses
+ to set. */
+ {
+ /* Codepage of the current locale, set with setlocale().
+ Not necessarily the same as GetACP(). */
+ extern __declspec(dllimport) unsigned int __lc_codepage;
+
+ /* Set the locale. */
+ if (setlocale (LC_ALL, name) == NULL)
+ return 77;
+
+ /* Clobber the codepage and MB_CUR_MAX, both set by setlocale(). */
+ __lc_codepage = codepage;
+ switch (codepage)
+ {
+ case 1252:
+ case 1256:
+ MB_CUR_MAX = 1;
+ break;
+ case 932:
+ case 950:
+ case 936:
+ MB_CUR_MAX = 2;
+ break;
+ case 54936:
+ case 65001:
+ MB_CUR_MAX = 4;
+ break;
+ }
+
+ /* Test whether the codepage is really available. */
+ {
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, " ", 1, &state) == (size_t)(-1))
+ return 77;
+ }
+ }
+# endif
+
+ /* Test NUL character. */
+ {
+ buf[0] = 'x';
+ ret = c32rtomb (buf, 0, NULL);
+ ASSERT (ret == 1);
+ ASSERT (buf[0] == '\0');
+ }
+
+ /* Test single bytes. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ ret = c32rtomb (buf, btoc32 (c), NULL);
+ ASSERT (ret == 1);
+ ASSERT (buf[0] == (char) c);
+ break;
+ }
+ }
+
+ /* Test special calling convention, passing a NULL pointer. */
+ {
+ ret = c32rtomb (NULL, '\0', NULL);
+ ASSERT (ret == 1);
+ ret = c32rtomb (NULL, btoc32 ('x'), NULL);
+ ASSERT (ret == 1);
+ }
+
+ switch (codepage)
+ {
+ case 1252:
+ /* Locale encoding is CP1252, an extension of ISO-8859-1. */
+ {
+ /* Convert "B\374\337er": "Büßer" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x00FC, NULL);
+ ASSERT (ret == 1);
+ ASSERT (memcmp (buf, "\374", 1) == 0);
+ ASSERT (buf[1] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x00DF, NULL);
+ ASSERT (ret == 1);
+ ASSERT (memcmp (buf, "\337", 1) == 0);
+ ASSERT (buf[1] == 'x');
+ }
+ return 0;
+
+ case 1256:
+ /* Locale encoding is CP1256, not the same as ISO-8859-6. */
+ {
+ /* Convert "x\302\341\346y": "xآلوy" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x0622, NULL);
+ ASSERT (ret == 1);
+ ASSERT (memcmp (buf, "\302", 1) == 0);
+ ASSERT (buf[1] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x0644, NULL);
+ ASSERT (ret == 1);
+ ASSERT (memcmp (buf, "\341", 1) == 0);
+ ASSERT (buf[1] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x0648, NULL);
+ ASSERT (ret == 1);
+ ASSERT (memcmp (buf, "\346", 1) == 0);
+ ASSERT (buf[1] == 'x');
+ }
+ return 0;
+
+ case 65001:
+ /* Locale encoding is CP65001 = UTF-8. */
+ if (strcmp (locale_charset (), "UTF-8") != 0)
+ return 77;
+ {
+ /* Convert "s\303\274\303\237\360\237\230\213!"; "süß😋!" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x00FC, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\303\274", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x00DF, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\303\237", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x1F60B, NULL);
+ ASSERT (ret == 4);
+ ASSERT (memcmp (buf, "\360\237\230\213", 4) == 0);
+ ASSERT (buf[4] == 'x');
+ }
+ return 0;
+
+ case 932:
+ /* Locale encoding is CP932, similar to Shift_JIS. */
+ {
+ /* Convert "<\223\372\226\173\214\352>": "<日本語>" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x65E5, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\223\372", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x672C, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\226\173", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x8A9E, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\214\352", 2) == 0);
+ ASSERT (buf[2] == 'x');
+ }
+ return 0;
+
+ case 950:
+ /* Locale encoding is CP950, similar to Big5. */
+ {
+ /* Convert "<\244\351\245\273\273\171>": "<日本語>" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x65E5, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\244\351", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x672C, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\245\273", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x8A9E, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\273\171", 2) == 0);
+ ASSERT (buf[2] == 'x');
+ }
+ return 0;
+
+ case 936:
+ /* Locale encoding is CP936 = GBK, an extension of GB2312. */
+ {
+ /* Convert "<\310\325\261\276\325\132>": "<日本語>" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x65E5, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\310\325", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x672C, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\261\276", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x8A9E, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\325\132", 2) == 0);
+ ASSERT (buf[2] == 'x');
+ }
+ return 0;
+
+ case 54936:
+ /* Locale encoding is CP54936 = GB18030. */
+ if (strcmp (locale_charset (), "GB18030") != 0)
+ return 77;
+ {
+ /* Convert "s\250\271\201\060\211\070\224\071\375\067!"; "süß😋!" */
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x00FC, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\250\271", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x00DF, NULL);
+ ASSERT (ret == 4);
+ ASSERT (memcmp (buf, "\201\060\211\070", 4) == 0);
+ ASSERT (buf[4] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = c32rtomb (buf, 0x1F60B, NULL);
+ ASSERT (ret == 4);
+ ASSERT (memcmp (buf, "\224\071\375\067", 4) == 0);
+ ASSERT (buf[4] == 'x');
+ }
+ return 0;
+
+ default:
+ return 1;
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ int codepage = atoi (argv[argc - 1]);
+ int result;
+ int i;
+
+ result = 77;
+ for (i = 1; i < argc - 1; i++)
+ {
+ int ret = test_one_locale (argv[i], codepage);
+
+ if (ret != 77)
+ result = ret;
+ }
+
+ if (result == 77)
+ {
+ fprintf (stderr, "Skipping test: found no locale with codepage %d\n",
+ codepage);
+ }
+ return result;
+}
+
+#else
+
+int
+main (int argc, char *argv[])
+{
+ fputs ("Skipping test: not a native Windows system\n", stderr);
+ return 77;
+}
+
+#endif
diff --git a/tests/test-c32rtomb.c b/tests/test-c32rtomb.c
new file mode 100644
index 00000000..c33d08d3
--- /dev/null
+++ b/tests/test-c32rtomb.c
@@ -0,0 +1,174 @@
+/* Test of conversion of wide character to multibyte character.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32rtomb, size_t, (char *, char32_t, mbstate_t *));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "macros.h"
+
+/* Check the multibyte character s[0..n-1]. */
+static void
+check_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ char buf[64];
+ int iret;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ iret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (iret == n);
+
+ ret = c32rtomb (buf, wc, NULL);
+ ASSERT (ret == n);
+ ASSERT (memcmp (buf, s, n) == 0);
+
+ /* Test special calling convention, passing a NULL pointer. */
+ ret = c32rtomb (NULL, wc, NULL);
+ ASSERT (ret == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ char buf[64];
+ size_t ret;
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test NUL character. */
+ {
+ buf[0] = 'x';
+ ret = c32rtomb (buf, 0, NULL);
+ ASSERT (ret == 1);
+ ASSERT (buf[0] == '\0');
+ }
+
+ /* Test single bytes. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ ret = c32rtomb (buf, btoc32 (c), NULL);
+ ASSERT (ret == 1);
+ ASSERT (buf[0] == (char) c);
+ break;
+ }
+ }
+
+ /* Test special calling convention, passing a NULL pointer. */
+ {
+ ret = c32rtomb (NULL, '\0', NULL);
+ ASSERT (ret == 1);
+ ret = c32rtomb (NULL, btoc32 ('x'), NULL);
+ ASSERT (ret == 1);
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '1':
+ /* C locale; tested above. */
+ return 0;
+
+ case '2':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ const char input[] = "B\374\337er"; /* "Büßer" */
+
+ check_character (input + 1, 1);
+ check_character (input + 2, 1);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ const char input[] = "s\303\274\303\237\360\237\230\213!"; /* "süß😋!" */
+
+ check_character (input + 1, 2);
+ check_character (input + 3, 2);
+ check_character (input + 5, 4);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is EUC-JP. */
+ {
+ const char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
+
+ check_character (input + 1, 2);
+ check_character (input + 3, 2);
+ check_character (input + 5, 2);
+ }
+ return 0;
+
+ case '5':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ const char input[] = "s\250\271\201\060\211\070\224\071\375\067!"; /* "süß😋!" */
+
+ check_character (input + 1, 2);
+ check_character (input + 3, 4);
+ check_character (input + 7, 4);
+ }
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32rtomb.sh b/tests/test-c32rtomb.sh
new file mode 100755
index 00000000..e5236c97
--- /dev/null
+++ b/tests/test-c32rtomb.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32rtomb${EXEEXT} 1 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32rtomb${EXEEXT} 1 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32rtomb${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32rtomb${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32rtomb${EXEEXT} 4 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32rtomb${EXEEXT} 5
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32tolower.c b/tests/test-c32tolower.c
new file mode 100644
index 00000000..681191b4
--- /dev/null
+++ b/tests/test-c32tolower.c
@@ -0,0 +1,440 @@
+/* Test of c32tolower() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32tolower, wint_t, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Representation of a multibyte character. */
+#define MBCHAR_BUF_SIZE 6
+struct multibyte
+{
+ size_t nbytes; /* number of bytes of current character, > 0 */
+ char buf[MBCHAR_BUF_SIZE]; /* room for the bytes */
+};
+
+/* Returns the value of c32tolower for the multibyte character s[0..n-1],
+ as a multibyte character. */
+static struct multibyte
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+ struct multibyte result;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, s, n, &state);
+ ASSERT (ret == n);
+
+ wc = c32tolower (wc);
+ ASSERT (wc != WEOF);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ ret = c32rtomb (result.buf, wc, &state);
+ ASSERT (ret != 0);
+ if (ret == (size_t)(-1))
+ /* wc cannot be converted back to multibyte. */
+ result.nbytes = 0;
+ else
+ {
+ ASSERT (ret <= MBCHAR_BUF_SIZE);
+ result.nbytes = ret;
+ }
+ return result;
+}
+
+int
+main (int argc, char *argv[])
+{
+ wint_t wc;
+ struct multibyte mb;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ wc = c32tolower (WEOF);
+ ASSERT (wc == WEOF);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ that
+ - in all locales, the uppercase characters include the A ... Z
+ characters, and the corresponding characters a ... z (if not in a
+ Turkish locale) are lowercase,
+ - in the "POSIX" locale (which is usually the same as the "C" locale),
+ the uppercase characters include only the ASCII A ... Z characters,
+ and the corresponding characters a ... z are lowercase.
+ */
+#if defined __NetBSD__
+ /* towlower is broken in the zh_CN.GB18030 locale on NetBSD 9.0.
+ See <https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=57339>. */
+ if (!(argc > 1 && argv[1][0] == '4'))
+#endif
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ mb = for_character (buf, 1);
+ switch (c)
+ {
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ ASSERT (mb.nbytes == 1);
+ ASSERT ((unsigned char) mb.buf[0] == (unsigned char) c - 'A' + 'a');
+ break;
+ default:
+ ASSERT (mb.nbytes == 1);
+ ASSERT ((unsigned char) mb.buf[0] == c);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ return 0;
+
+ case '1':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ mb = for_character ("\262", 1);
+ ASSERT (mb.nbytes == 1);
+ ASSERT (memcmp (mb.buf, "\262", 1) == 0);
+ /* U+00B5 MICRO SIGN */
+ mb = for_character ("\265", 1);
+ ASSERT (mb.nbytes == 1);
+ ASSERT (memcmp (mb.buf, "\265", 1) == 0);
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ mb = for_character ("\311", 1);
+ ASSERT (mb.nbytes == 1);
+ ASSERT (memcmp (mb.buf, "\351", 1) == 0);
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ mb = for_character ("\337", 1);
+ ASSERT (mb.nbytes == 1);
+ ASSERT (memcmp (mb.buf, "\337", 1) == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ mb = for_character ("\351", 1);
+ ASSERT (mb.nbytes == 1);
+ ASSERT (memcmp (mb.buf, "\351", 1) == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ mb = for_character ("\377", 1);
+ ASSERT (mb.nbytes == 1);
+ ASSERT (memcmp (mb.buf, "\377", 1) == 0);
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is EUC-JP. */
+ {
+ #if !((defined __APPLE__ && defined __MACH__) || defined __DragonFly__)
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ mb = for_character ("\217\252\261", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\217\253\261", 3) == 0);
+ #endif
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ mb = for_character ("\217\251\316", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\217\251\316", 3) == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ mb = for_character ("\217\253\261", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\217\253\261", 3) == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ mb = for_character ("\217\253\363", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\217\253\363", 3) == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __DragonFly__)
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ mb = for_character ("\217\251\250", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\217\251\310", 3) == 0);
+ #endif
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ mb = for_character ("\217\251\310", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\217\251\310", 3) == 0);
+ #if !defined __DragonFly__
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ mb = for_character ("\247\273", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\247\353", 2) == 0);
+ #endif
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ mb = for_character ("\247\353", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\247\353", 2) == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ mb = for_character ("\244\323", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\244\323", 2) == 0);
+ #if !defined __DragonFly__
+ /* U+FF27 FULLWIDTH LATIN CAPITAL LETTER G */
+ mb = for_character ("\243\307", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\243\347", 2) == 0);
+ #endif
+ /* U+FF47 FULLWIDTH LATIN SMALL LETTER G */
+ mb = for_character ("\243\347", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\243\347", 2) == 0);
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ mb = for_character ("\302\262", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\302\262", 2) == 0);
+ /* U+00B5 MICRO SIGN */
+ mb = for_character ("\302\265", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\302\265", 2) == 0);
+ #if !(defined _WIN32 && !defined __CYGWIN__)
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ mb = for_character ("\303\211", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\303\251", 2) == 0);
+ #endif
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ mb = for_character ("\303\237", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\303\237", 2) == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ mb = for_character ("\303\251", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\303\251", 2) == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ mb = for_character ("\303\277", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\303\277", 2) == 0);
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ mb = for_character ("\305\201", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\305\202", 2) == 0);
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ mb = for_character ("\305\202", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\305\202", 2) == 0);
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ mb = for_character ("\320\251", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\321\211", 2) == 0);
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ mb = for_character ("\321\211", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\321\211", 2) == 0);
+ /* U+05D5 HEBREW LETTER VAV */
+ mb = for_character ("\327\225", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\327\225", 2) == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ mb = for_character ("\343\201\263", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\343\201\263", 3) == 0);
+ /* U+3162 HANGUL LETTER YI */
+ mb = for_character ("\343\205\242", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\343\205\242", 3) == 0);
+ /* U+FF27 FULLWIDTH LATIN CAPITAL LETTER G */
+ mb = for_character ("\357\274\247", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\357\275\207", 3) == 0);
+ /* U+FF47 FULLWIDTH LATIN SMALL LETTER G */
+ mb = for_character ("\357\275\207", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\357\275\207", 3) == 0);
+ /* U+FFDB HALFWIDTH HANGUL LETTER YI */
+ mb = for_character ("\357\277\233", 3);
+ ASSERT (mb.nbytes == 3);
+ ASSERT (memcmp (mb.buf, "\357\277\233", 3) == 0);
+ #if !(defined __DragonFly__ || defined __sun)
+ /* U+10419 DESERET CAPITAL LETTER EF */
+ mb = for_character ("\360\220\220\231", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\360\220\221\201", 4) == 0);
+ #endif
+ /* U+10441 DESERET SMALL LETTER EF */
+ mb = for_character ("\360\220\221\201", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\360\220\221\201", 4) == 0);
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ mb = for_character ("\363\240\201\201", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\363\240\201\201", 4) == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ mb = for_character ("\363\240\201\241", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\363\240\201\241", 4) == 0);
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ /* U+00B2 SUPERSCRIPT TWO */
+ mb = for_character ("\201\060\205\065", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\205\065", 4) == 0);
+ /* U+00B5 MICRO SIGN */
+ mb = for_character ("\201\060\205\070", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\205\070", 4) == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+ mb = for_character ("\201\060\207\067", 4);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\250\246", 2) == 0);
+ #endif
+ /* U+00DF LATIN SMALL LETTER SHARP S */
+ mb = for_character ("\201\060\211\070", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\211\070", 4) == 0);
+ /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+ mb = for_character ("\250\246", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\250\246", 2) == 0);
+ /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+ mb = for_character ("\201\060\213\067", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\213\067", 4) == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__ || defined __sun)
+ /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+ mb = for_character ("\201\060\221\071", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\222\060", 4) == 0);
+ #endif
+ /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+ mb = for_character ("\201\060\222\060", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\222\060", 4) == 0);
+ #if !(defined __FreeBSD__ || defined __DragonFly__)
+ /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+ mb = for_character ("\247\273", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\247\353", 2) == 0);
+ #endif
+ /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+ mb = for_character ("\247\353", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\247\353", 2) == 0);
+ /* U+05D5 HEBREW LETTER VAV */
+ mb = for_character ("\201\060\371\067", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\060\371\067", 4) == 0);
+ /* U+3073 HIRAGANA LETTER BI */
+ mb = for_character ("\244\323", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\244\323", 2) == 0);
+ /* U+3162 HANGUL LETTER YI */
+ mb = for_character ("\201\071\256\062", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\201\071\256\062", 4) == 0);
+ #if !defined __DragonFly__
+ /* U+FF27 FULLWIDTH LATIN CAPITAL LETTER G */
+ mb = for_character ("\243\307", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\243\347", 2) == 0);
+ #endif
+ /* U+FF47 FULLWIDTH LATIN SMALL LETTER G */
+ mb = for_character ("\243\347", 2);
+ ASSERT (mb.nbytes == 2);
+ ASSERT (memcmp (mb.buf, "\243\347", 2) == 0);
+ /* U+FFDB HALFWIDTH HANGUL LETTER YI */
+ mb = for_character ("\204\061\241\071", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\204\061\241\071", 4) == 0);
+ #if !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sun)
+ /* U+10419 DESERET CAPITAL LETTER EF */
+ mb = for_character ("\220\060\351\071", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\220\060\355\071", 4) == 0);
+ #endif
+ /* U+10441 DESERET SMALL LETTER EF */
+ mb = for_character ("\220\060\355\071", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\220\060\355\071", 4) == 0);
+ /* U+E0041 TAG LATIN CAPITAL LETTER A */
+ mb = for_character ("\323\066\234\063", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\323\066\234\063", 4) == 0);
+ /* U+E0061 TAG LATIN SMALL LETTER A */
+ mb = for_character ("\323\066\237\065", 4);
+ ASSERT (mb.nbytes == 4);
+ ASSERT (memcmp (mb.buf, "\323\066\237\065", 4) == 0);
+ }
+ return 0;
+
+ }
+
+ return 1;
+}
diff --git a/tests/test-c32tolower.sh b/tests/test-c32tolower.sh
new file mode 100755
index 00000000..02f3e5f6
--- /dev/null
+++ b/tests/test-c32tolower.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+# Allow distinguishing the various invocations in the .log file.
+set -x
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-c32tolower${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-c32tolower${EXEEXT} 0 || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR \
+ ${CHECKER} ./test-c32tolower${EXEEXT} 1 \
+ || exit 1
+fi
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA != none; then
+ LC_ALL=$LOCALE_JA \
+ ${CHECKER} ./test-c32tolower${EXEEXT} 2 \
+ || exit 1
+fi
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 \
+ ${CHECKER} ./test-c32tolower${EXEEXT} 3 \
+ || exit 1
+fi
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN != none; then
+ LC_ALL=$LOCALE_ZH_CN \
+ ${CHECKER} ./test-c32tolower${EXEEXT} 4
+ case $? in
+ 0 | 77) ;;
+ *) exit 1 ;;
+ esac
+fi
+
+exit 0
diff --git a/tests/test-c32width.c b/tests/test-c32width.c
new file mode 100644
index 00000000..4ebc1afa
--- /dev/null
+++ b/tests/test-c32width.c
@@ -0,0 +1,104 @@
+/* Test of c32width() function.
+ Copyright (C) 2007-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (c32width, int, (char32_t));
+
+#include <locale.h>
+#include <string.h>
+
+#include "c-ctype.h"
+#include "localcharset.h"
+#include "macros.h"
+
+int
+main ()
+{
+ char32_t wc;
+
+#if !GNULIB_WCHAR_SINGLE_LOCALE
+# ifdef C_CTYPE_ASCII
+ /* Test width of ASCII characters. */
+ for (wc = 0x20; wc < 0x7F; wc++)
+ ASSERT (c32width (wc) == 1);
+# endif
+#endif
+
+ /* Switch to an UTF-8 locale. */
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL
+ /* Check whether it's really an UTF-8 locale.
+ On OpenBSD 4.0, the setlocale call succeeds only for the LC_CTYPE
+ category and therefore returns "C/fr_FR.UTF-8/C/C/C/C", but the
+ LC_CTYPE category is effectively set to an ASCII LC_CTYPE category;
+ in particular, locale_charset() returns "ASCII". */
+ && strcmp (locale_charset (), "UTF-8") == 0)
+ {
+ /* Test width of ASCII characters. */
+ for (wc = 0x20; wc < 0x7F; wc++)
+ ASSERT (c32width (wc) == 1);
+
+ /* Test width of some non-spacing characters. */
+ ASSERT (c32width (0x0301) == 0);
+ ASSERT (c32width (0x05B0) == 0);
+
+ /* Test width of some format control characters. */
+ ASSERT (c32width (0x200E) <= 0);
+ ASSERT (c32width (0x2060) <= 0);
+ ASSERT (c32width (0xE0001) <= 0);
+ ASSERT (c32width (0xE0044) <= 0);
+
+ /* Test width of some zero width characters. */
+ /* While it is desirable that U+200B, U+200C, U+200D have width 0,
+ because this makes wcswidth work better on strings that contain these
+ characters, it is acceptable if an implementation treats these
+ characters like control characters. */
+ ASSERT (c32width (0x200B) <= 0);
+ ASSERT (c32width (0xFEFF) <= 0);
+
+ /* Test width of some math symbols.
+ U+2202 is marked as having ambiguous width (A) in EastAsianWidth.txt
+ (see <https://www.unicode.org/Public/12.0.0/ucd/EastAsianWidth.txt>).
+ The Unicode Standard Annex 11
+ <https://www.unicode.org/reports/tr11/tr11-36.html>
+ says
+ "Ambiguous characters behave like wide or narrow characters
+ depending on the context (language tag, script identification,
+ associated font, source of data, or explicit markup; all can
+ provide the context). If the context cannot be established
+ reliably, they should be treated as narrow characters by default."
+ For c32width(), the only available context information is the locale.
+ "fr_FR.UTF-8" is a Western locale, not an East Asian locale, therefore
+ U+2202 should be treated like a narrow character. */
+ ASSERT (c32width (0x2202) == 1);
+
+ /* Test width of some CJK characters. */
+ ASSERT (c32width (0x3000) == 2);
+ ASSERT (c32width (0xB250) == 2);
+ ASSERT (c32width (0xFF1A) == 2);
+ #if !(defined __FreeBSD__ && __FreeBSD__ < 13 && !defined __GLIBC__)
+ ASSERT (c32width (0x20369) == 2);
+ ASSERT (c32width (0x2F876) == 2);
+ #endif
+ }
+
+ return 0;
+}
diff --git a/tests/test-calloc-gnu.c b/tests/test-calloc-gnu.c
index 4a7b7745..cf8c564a 100644
--- a/tests/test-calloc-gnu.c
+++ b/tests/test-calloc-gnu.c
@@ -1,5 +1,5 @@
/* Test of calloc function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
@@ -63,7 +63,7 @@ main ()
ASSERT (p == NULL);
ASSERT (errno == ENOMEM);
- p = calloc (SIZE_MAX / n + 1, identity (n));
+ p = calloc (SIZE_MAX / n + 1, identity (n));
ASSERT (p == NULL);
ASSERT (errno == ENOMEM);
}
diff --git a/tests/test-cloexec.c b/tests/test-cloexec.c
index 6069e537..76480bb6 100644
--- a/tests/test-cloexec.c
+++ b/tests/test-cloexec.c
@@ -1,5 +1,5 @@
/* Test duplicating non-inheritable file descriptors.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -62,8 +62,12 @@ is_inheritable (int fd)
}
#if !O_BINARY
-# define set_binary_mode(f,m) zero ()
-static int zero (void) { return 0; }
+# define set_binary_mode my_set_binary_mode
+static int
+set_binary_mode (_GL_UNUSED int fd, _GL_UNUSED int mode)
+{
+ return 0;
+}
#endif
/* Return non-zero if FD is open in the given MODE, which is either
diff --git a/tests/test-close.c b/tests/test-close.c
index db25aab0..47b3aa45 100644
--- a/tests/test-close.c
+++ b/tests/test-close.c
@@ -1,5 +1,5 @@
/* Test closing a file or socket.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-connect.c b/tests/test-connect.c
index 2a93d01f..ea4b66ed 100644
--- a/tests/test-connect.c
+++ b/tests/test-connect.c
@@ -1,5 +1,5 @@
/* Test connecting a client socket.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-ctype.c b/tests/test-ctype.c
index 93c4e32b..d7a9e415 100644
--- a/tests/test-ctype.c
+++ b/tests/test-ctype.c
@@ -1,5 +1,5 @@
/* Test of <ctype.h> substitute.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-dup2.c b/tests/test-dup2.c
index e4ec1c25..55f31940 100644
--- a/tests/test-dup2.c
+++ b/tests/test-dup2.c
@@ -1,5 +1,5 @@
/* Test duplicating file descriptors.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -50,6 +50,12 @@ SIGNATURE_CHECK (dup2, int, (int, int));
#include "macros.h"
+/* Tell GCC not to warn about the specific edge cases tested here. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-leak"
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-use-without-check"
+#endif
+
/* Return non-zero if FD is open. */
static int
is_open (int fd)
@@ -92,8 +98,12 @@ is_inheritable (int fd)
#endif /* GNULIB_TEST_CLOEXEC */
#if !O_BINARY
-# define set_binary_mode(f,m) zero ()
-static int zero (void) { return 0; }
+# define set_binary_mode my_set_binary_mode
+static int
+set_binary_mode (_GL_UNUSED int fd, _GL_UNUSED int mode)
+{
+ return 0;
+}
#endif
/* Return non-zero if FD is open in the given MODE, which is either
diff --git a/tests/test-environ.c b/tests/test-environ.c
index 6242205f..fdd944f6 100644
--- a/tests/test-environ.c
+++ b/tests/test-environ.c
@@ -1,5 +1,5 @@
/* Test of environ variable.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-errno.c b/tests/test-errno.c
index bbfd5da6..99600add 100644
--- a/tests/test-errno.c
+++ b/tests/test-errno.c
@@ -1,5 +1,5 @@
/* Test of <errno.h> substitute.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-error.c b/tests/test-error.c
new file mode 100644
index 00000000..02704d7c
--- /dev/null
+++ b/tests/test-error.c
@@ -0,0 +1,89 @@
+/* Test of error.h functions.
+ Copyright (C) 2023-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+#include <config.h>
+
+/* Specification. */
+#include <error.h>
+
+#include <errno.h>
+
+#include "macros.h"
+
+/* Custom function to not show the program name in error messages. */
+static void
+print_no_progname (void)
+{
+}
+
+int
+main ()
+{
+ /* Test error() function with zero STATUS and zero ERRNUM. */
+ error (0, 0, "bummer");
+ /* With format string arguments. */
+ errno = EINVAL; /* should be ignored */
+ error (0, 0, "Zonk %d%d%d is too large", 1, 2, 3);
+ /* With non-ASCII characters. */
+ error (0, 0, "Pokémon started");
+ /* Verify error_message_count. */
+ ASSERT (error_message_count == 3);
+
+ /* Test error_at_line() function with zero STATUS and zero ERRNUM. */
+ error_at_line (0, 0, "d1/foo.c", 10, "invalid blub");
+ error_at_line (0, 0, "d1/foo.c", 10, "invalid blarn");
+ /* Verify error_message_count. */
+ ASSERT (error_message_count == 5);
+
+ /* Test error_one_per_line. */
+ error_one_per_line = 1;
+ error_at_line (0, 0, "d1/foo.c", 10, "unsupported glink");
+ /* Another line number. */
+ error_at_line (0, 0, "d1/foo.c", 13, "invalid brump");
+ /* Another file name. */
+ error_at_line (0, 0, "d2/foo.c", 13, "unsupported flinge");
+ /* Same file name and same line number => message not shown. */
+ error_at_line (0, 0, "d2/foo.c", 13, "invalid bark");
+ /* Verify error_message_count. */
+ ASSERT (error_message_count == 8);
+ error_one_per_line = 0;
+
+ /* Test error_print_progname. */
+ error_print_progname = print_no_progname;
+ error (0, 0, "hammer");
+ error (0, 0, "boing %d%d%d is too large", 1, 2, 3);
+ #if 0
+ /* The documentation does not describe the output if the file name is NULL. */
+ error_at_line (0, 0, NULL, 42, "drummer too loud");
+ #endif
+ error_at_line (0, 0, "d2/bar.c", 11, "bark too loud");
+ /* Verify error_message_count. */
+ ASSERT (error_message_count == 11);
+ error_print_progname = NULL;
+
+ /* Test error() function with nonzero ERRNUM. */
+ errno = EINVAL; /* should be ignored */
+ error (0, EACCES, "can't steal");
+ /* Verify error_message_count. */
+ ASSERT (error_message_count == 12);
+
+ /* Test error() function with nonzero STATUS. */
+ error (4, 0, "fatal error");
+
+ return 0;
+}
diff --git a/tests/test-error.sh b/tests/test-error.sh
new file mode 100755
index 00000000..d173e183
--- /dev/null
+++ b/tests/test-error.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Test of the 'error' module.
+
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
+${CHECKER} test-error${EXEEXT} > out 2> err
+# Verify the exit code.
+case $? in
+ 4) ;;
+ *) Exit 1;;
+esac
+
+# Normalize the stderr output on Windows platforms.
+tr -d '\015' < err | sed 's,.*test-error[.ex]*:,test-error:,' > err2 || Exit 1
+
+# Verify the stderr output.
+compare - err2 <<\EOF || Exit 1
+test-error: bummer
+test-error: Zonk 123 is too large
+test-error: Pokémon started
+test-error:d1/foo.c:10: invalid blub
+test-error:d1/foo.c:10: invalid blarn
+test-error:d1/foo.c:10: unsupported glink
+test-error:d1/foo.c:13: invalid brump
+test-error:d2/foo.c:13: unsupported flinge
+hammer
+boing 123 is too large
+d2/bar.c:11: bark too loud
+test-error: can't steal: Permission denied
+test-error: fatal error
+EOF
+
+# Verify the stdout output.
+test -s out && Exit 1
+
+Exit 0
diff --git a/tests/test-fcntl-h.c b/tests/test-fcntl-h.c
index 15019792..d6331672 100644
--- a/tests/test-fcntl-h.c
+++ b/tests/test-fcntl-h.c
@@ -1,5 +1,5 @@
/* Test of <fcntl.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-fcntl.c b/tests/test-fcntl.c
index 77ca3479..0eb24a9f 100644
--- a/tests/test-fcntl.c
+++ b/tests/test-fcntl.c
@@ -1,5 +1,5 @@
/* Test of fcntl(2).
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -44,9 +44,19 @@ SIGNATURE_CHECK (fcntl, int, (int, int, ...));
#include "binary-io.h"
#include "macros.h"
+/* Tell GCC not to warn about the specific edge cases tested here. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-leak"
+# pragma GCC diagnostic ignored "-Wanalyzer-va-arg-type-mismatch"
+#endif
+
#if !O_BINARY
-# define set_binary_mode(f,m) zero ()
-static int zero (void) { return 0; }
+# define set_binary_mode my_set_binary_mode
+static int
+set_binary_mode (_GL_UNUSED int fd, _GL_UNUSED int mode)
+{
+ return 0;
+}
#endif
/* Return true if FD is open. */
@@ -211,7 +221,7 @@ check_flags (void)
}
int
-main (int argc, char *argv[])
+main (int argc, _GL_UNUSED char *argv[])
{
if (argc > 1)
/* child process */
diff --git a/tests/test-fdopen.c b/tests/test-fdopen.c
index d67beedd..e5aa6442 100644
--- a/tests/test-fdopen.c
+++ b/tests/test-fdopen.c
@@ -1,5 +1,5 @@
/* Test opening a stream with a file descriptor.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -33,9 +33,14 @@ main (void)
failure, since the behavior is not well-defined on invalid file
descriptors, so try fdopen 1000 times and if that's not enough to
fail due to EMFILE, so be it. */
+ #if defined __ANDROID__ /* fdsan */
+ #define COUNT 1
+ #else
+ #define COUNT 1000
+ #endif
int i;
- for (i = 0; i < 1000; i++)
+ for (i = 0; i < COUNT; i++)
{
errno = 0;
if (! fdopen (STDOUT_FILENO, "w"))
diff --git a/tests/test-fgetc.c b/tests/test-fgetc.c
index 2b289dc1..0d617980 100644
--- a/tests/test-fgetc.c
+++ b/tests/test-fgetc.c
@@ -1,5 +1,5 @@
/* Test of fgetc() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -32,7 +32,7 @@ SIGNATURE_CHECK (fgetc, int, (FILE *));
#include "macros.h"
int
-main (int argc, char **argv)
+main ()
{
const char *filename = "test-fgetc.txt";
@@ -54,6 +54,7 @@ main (int argc, char **argv)
/* Test that fgetc() sets errno if someone else closes the stream
fd behind the back of stdio. */
+ #if !defined __ANDROID__ /* fdsan */
{
FILE *fp = fopen (filename, "r");
ASSERT (fp != NULL);
@@ -64,6 +65,7 @@ main (int argc, char **argv)
ASSERT (ferror (fp));
fclose (fp);
}
+ #endif
/* Test that fgetc() sets errno if the stream was constructed with
an invalid file descriptor. */
diff --git a/tests/test-float.c b/tests/test-float.c
index 986f7da8..e9dc4609 100644
--- a/tests/test-float.c
+++ b/tests/test-float.c
@@ -1,5 +1,5 @@
/* Test of <float.h> substitute.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -20,12 +20,48 @@
#include <float.h>
-#include "fpucw.h"
-#include "macros.h"
-
/* Check that FLT_RADIX is a constant expression. */
int a[] = { FLT_RADIX };
+/* ----------------------- Check macros for 'float' ----------------------- */
+
+/* Check that the FLT_* macros expand to constant expressions. */
+int fb[] =
+ {
+ FLT_MANT_DIG, FLT_MIN_EXP, FLT_MAX_EXP,
+ FLT_DIG, FLT_MIN_10_EXP, FLT_MAX_10_EXP
+ };
+float fc[] = { FLT_EPSILON, FLT_MIN, FLT_MAX };
+
+/* ----------------------- Check macros for 'double' ----------------------- */
+
+/* Check that the DBL_* macros expand to constant expressions. */
+int db[] =
+ {
+ DBL_MANT_DIG, DBL_MIN_EXP, DBL_MAX_EXP,
+ DBL_DIG, DBL_MIN_10_EXP, DBL_MAX_10_EXP
+ };
+double dc[] = { DBL_EPSILON, DBL_MIN, DBL_MAX };
+
+/* -------------------- Check macros for 'long double' -------------------- */
+
+/* Check that the LDBL_* macros expand to constant expressions. */
+int lb[] =
+ {
+ LDBL_MANT_DIG, LDBL_MIN_EXP, LDBL_MAX_EXP,
+ LDBL_DIG, LDBL_MIN_10_EXP, LDBL_MAX_10_EXP
+ };
+long double lc1 = LDBL_EPSILON;
+long double lc2 = LDBL_MIN;
+#if 0 /* LDBL_MAX is not a constant expression on some platforms. */
+long double lc3 = LDBL_MAX;
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+#include "fpucw.h"
+#include "macros.h"
+
#if FLT_RADIX == 2
/* Return 2^n. */
@@ -117,14 +153,6 @@ pow2l (int n)
/* ----------------------- Check macros for 'float' ----------------------- */
-/* Check that the FLT_* macros expand to constant expressions. */
-int fb[] =
- {
- FLT_MANT_DIG, FLT_MIN_EXP, FLT_MAX_EXP,
- FLT_DIG, FLT_MIN_10_EXP, FLT_MAX_10_EXP
- };
-float fc[] = { FLT_EPSILON, FLT_MIN, FLT_MAX };
-
static void
test_float (void)
{
@@ -196,14 +224,6 @@ test_float (void)
/* ----------------------- Check macros for 'double' ----------------------- */
-/* Check that the DBL_* macros expand to constant expressions. */
-int db[] =
- {
- DBL_MANT_DIG, DBL_MIN_EXP, DBL_MAX_EXP,
- DBL_DIG, DBL_MIN_10_EXP, DBL_MAX_10_EXP
- };
-double dc[] = { DBL_EPSILON, DBL_MIN, DBL_MAX };
-
static void
test_double (void)
{
@@ -275,18 +295,6 @@ test_double (void)
/* -------------------- Check macros for 'long double' -------------------- */
-/* Check that the LDBL_* macros expand to constant expressions. */
-int lb[] =
- {
- LDBL_MANT_DIG, LDBL_MIN_EXP, LDBL_MAX_EXP,
- LDBL_DIG, LDBL_MIN_10_EXP, LDBL_MAX_10_EXP
- };
-long double lc1 = LDBL_EPSILON;
-long double lc2 = LDBL_MIN;
-#if 0 /* LDBL_MAX is not a constant expression on some platforms. */
-long double lc3 = LDBL_MAX;
-#endif
-
static void
test_long_double (void)
{
diff --git a/tests/test-fputc.c b/tests/test-fputc.c
index 34f4cf53..0d48a92f 100644
--- a/tests/test-fputc.c
+++ b/tests/test-fputc.c
@@ -1,5 +1,5 @@
/* Test of fputc() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -32,7 +32,7 @@ SIGNATURE_CHECK (fputc, int, (int, FILE *));
#include "macros.h"
int
-main (int argc, char **argv)
+main ()
{
const char *filename = "test-fputc.txt";
@@ -45,6 +45,7 @@ main (int argc, char **argv)
/* Test that fputc() on an unbuffered stream sets errno if someone else
closes the stream fd behind the back of stdio. */
+ #if !defined __ANDROID__ /* fdsan */
{
FILE *fp = fopen (filename, "w");
ASSERT (fp != NULL);
@@ -56,6 +57,7 @@ main (int argc, char **argv)
ASSERT (ferror (fp));
fclose (fp);
}
+ #endif
/* Test that fputc() on an unbuffered stream sets errno if the stream
was constructed with an invalid file descriptor. */
diff --git a/tests/test-fread.c b/tests/test-fread.c
index e85ce052..ac6bdecf 100644
--- a/tests/test-fread.c
+++ b/tests/test-fread.c
@@ -1,5 +1,5 @@
/* Test of fread() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -32,7 +32,7 @@ SIGNATURE_CHECK (fread, size_t, (void *, size_t, size_t, FILE *));
#include "macros.h"
int
-main (int argc, char **argv)
+main ()
{
const char *filename = "test-fread.txt";
@@ -54,6 +54,7 @@ main (int argc, char **argv)
/* Test that fread() sets errno if someone else closes the stream
fd behind the back of stdio. */
+ #if !defined __ANDROID__ /* fdsan */
{
FILE *fp = fopen (filename, "r");
char buf[5];
@@ -65,6 +66,7 @@ main (int argc, char **argv)
ASSERT (ferror (fp));
fclose (fp);
}
+ #endif
/* Test that fread() sets errno if the stream was constructed with
an invalid file descriptor. */
diff --git a/tests/test-free.c b/tests/test-free.c
index 9248712b..703c550e 100644
--- a/tests/test-free.c
+++ b/tests/test-free.c
@@ -1,5 +1,5 @@
/* Test of free() function.
- Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ Copyright (C) 2020-2024 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
diff --git a/tests/test-frexp.c b/tests/test-frexp.c
index db7d2079..3d6bc300 100644
--- a/tests/test-frexp.c
+++ b/tests/test-frexp.c
@@ -1,5 +1,5 @@
/* Test of splitting a double into fraction and mantissa.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-frexp.h b/tests/test-frexp.h
index cdc6ea3e..439c44ef 100644
--- a/tests/test-frexp.h
+++ b/tests/test-frexp.h
@@ -1,5 +1,5 @@
/* Test of splitting a double into fraction and mantissa.
- Copyright (C) 2012-2022 Free Software Foundation, Inc.
+ Copyright (C) 2012-2024 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
diff --git a/tests/test-frexpl.c b/tests/test-frexpl.c
index d469234d..ea4e9728 100644
--- a/tests/test-frexpl.c
+++ b/tests/test-frexpl.c
@@ -1,5 +1,5 @@
/* Test of splitting a 'long double' into fraction and mantissa.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-fseterr.c b/tests/test-fseterr.c
index de28326d..61584a41 100644
--- a/tests/test-fseterr.c
+++ b/tests/test-fseterr.c
@@ -1,5 +1,5 @@
/* Test setting the error indicator of a stream.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-fstat.c b/tests/test-fstat.c
index f2cb2137..7a361b86 100644
--- a/tests/test-fstat.c
+++ b/tests/test-fstat.c
@@ -1,5 +1,5 @@
/* Tests of fstat() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -27,7 +27,7 @@ SIGNATURE_CHECK (fstat, int, (int, struct stat *));
#include "macros.h"
int
-main (int argc, char *argv[])
+main ()
{
/* Test behaviour for invalid file descriptors. */
{
diff --git a/tests/test-ftruncate.c b/tests/test-ftruncate.c
index 64e1152a..e9daf1bd 100644
--- a/tests/test-ftruncate.c
+++ b/tests/test-ftruncate.c
@@ -1,5 +1,5 @@
/* Test truncating a file.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -27,7 +27,7 @@ SIGNATURE_CHECK (ftruncate, int, (int, off_t));
#include "macros.h"
int
-main (int argc, char *argv[])
+main (_GL_UNUSED int argc, char *argv[])
{
const char *filename = argv[1];
diff --git a/tests/test-fwrite.c b/tests/test-fwrite.c
index d362c40b..f00f35ca 100644
--- a/tests/test-fwrite.c
+++ b/tests/test-fwrite.c
@@ -1,5 +1,5 @@
/* Test of fwrite() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -32,7 +32,7 @@ SIGNATURE_CHECK (fwrite, size_t, (const void *, size_t, size_t, FILE *));
#include "macros.h"
int
-main (int argc, char **argv)
+main ()
{
const char *filename = "test-fwrite.txt";
@@ -45,6 +45,7 @@ main (int argc, char **argv)
/* Test that fwrite() on an unbuffered stream sets errno if someone else
closes the stream fd behind the back of stdio. */
+ #if !defined __ANDROID__ /* fdsan */
{
FILE *fp = fopen (filename, "w");
char buf[5] = "world";
@@ -57,6 +58,7 @@ main (int argc, char **argv)
ASSERT (ferror (fp));
fclose (fp);
}
+ #endif
/* Test that fwrite() on an unbuffered stream sets errno if the stream
was constructed with an invalid file descriptor. */
diff --git a/tests/test-getcwd-lgpl.c b/tests/test-getcwd-lgpl.c
index 73fad473..1e7238a0 100644
--- a/tests/test-getcwd-lgpl.c
+++ b/tests/test-getcwd-lgpl.c
@@ -1,5 +1,5 @@
/* Test of getcwd() function.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -92,7 +92,7 @@ main (int argc, char **argv)
/* Validate a POSIX requirement on size. */
errno = 0;
- ASSERT (getcwd(pwd2, 0) == NULL);
+ ASSERT (getcwd (pwd2, 0) == NULL);
ASSERT (errno == EINVAL);
free (pwd1);
diff --git a/tests/test-getdtablesize.c b/tests/test-getdtablesize.c
index 48164279..401fe901 100644
--- a/tests/test-getdtablesize.c
+++ b/tests/test-getdtablesize.c
@@ -1,5 +1,5 @@
/* Test of getdtablesize() function.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -25,8 +25,13 @@ SIGNATURE_CHECK (getdtablesize, int, (void));
#include "macros.h"
+/* Tell GCC not to warn about the specific edge cases tested here. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-leak"
+#endif
+
int
-main (int argc, char *argv[])
+main ()
{
ASSERT (getdtablesize () >= 3);
ASSERT (dup2 (0, getdtablesize() - 1) == getdtablesize () - 1);
diff --git a/tests/test-getprogname.c b/tests/test-getprogname.c
index 8503f3c3..f26696db 100644
--- a/tests/test-getprogname.c
+++ b/tests/test-getprogname.c
@@ -1,5 +1,5 @@
/* Test the gnulib getprogname module.
- Copyright (C) 2016-2022 Free Software Foundation, Inc.
+ Copyright (C) 2016-2024 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
@@ -16,7 +16,8 @@
#include <config.h>
-#include "getprogname.h"
+#include <stdlib.h>
+
#include <string.h>
#include <assert.h>
diff --git a/tests/test-gettimeofday.c b/tests/test-gettimeofday.c
index 47a5b58f..ea810bd5 100644
--- a/tests/test-gettimeofday.c
+++ b/tests/test-gettimeofday.c
@@ -1,6 +1,5 @@
/*
- * Copyright (C) 2005, 2007, 2009-2022 Free Software Foundation, Inc.
- * Written by Jim Meyering.
+ * Copyright (C) 2005, 2007, 2009-2024 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
@@ -15,6 +14,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. */
+/* Written by Jim Meyering and Bruno Haible. */
+
#include <config.h>
#include <sys/time.h>
@@ -26,10 +27,13 @@ SIGNATURE_CHECK (gettimeofday, int,
#include <time.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
-int
-main (void)
+#include "macros.h"
+
+static void
+test_clobber ()
{
time_t t = 0;
struct tm *lt;
@@ -41,7 +45,44 @@ main (void)
if (memcmp (lt, &saved_lt, sizeof (struct tm)) != 0)
{
fprintf (stderr, "gettimeofday still clobbers the localtime buffer!\n");
- return 1;
+ exit (1);
}
+}
+
+static void
+test_consistency ()
+{
+ struct timeval tv1;
+ time_t tt2;
+ struct timeval tv3;
+ time_t tt4;
+
+ ASSERT (gettimeofday (&tv1, NULL) == 0);
+ tt2 = time (NULL);
+ ASSERT (gettimeofday (&tv3, NULL) == 0);
+ tt4 = time (NULL);
+
+ /* Verify monotonicity of gettimeofday(). */
+ ASSERT (tv1.tv_sec < tv3.tv_sec
+ || (tv1.tv_sec == tv3.tv_sec && tv1.tv_usec <= tv3.tv_usec));
+
+ /* Verify monotonicity of time(). */
+ ASSERT (tt2 <= tt4);
+
+ /* Verify that the tv_sec field of the result is the same as time(NULL). */
+ /* Note: It's here that the dependency to the 'time' module is needed.
+ Without it, this assertion would sometimes fail on glibc systems, see
+ https://sourceware.org/bugzilla/show_bug.cgi?id=30200 */
+ ASSERT (tv1.tv_sec <= tt2);
+ ASSERT (tt2 <= tv3.tv_sec);
+ ASSERT (tv3.tv_sec <= tt4);
+}
+
+int
+main (void)
+{
+ test_clobber ();
+ test_consistency ();
+
return 0;
}
diff --git a/tests/test-hard-locale.c b/tests/test-hard-locale.c
index 8570bc61..151843ca 100644
--- a/tests/test-hard-locale.c
+++ b/tests/test-hard-locale.c
@@ -1,5 +1,5 @@
/* Test of determination whether a locale is different from the "C" locale.
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 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
@@ -38,8 +38,10 @@ test_one (const char *name, int failure_bitmask)
/* musl libc has special code for the C.UTF-8 locale; other than that,
all locale names are accepted and all locales are trivial.
OpenBSD returns the locale name that was set, but we don't know how it
- behaves under the hood. Likewise for Haiku. */
-#if defined MUSL_LIBC || defined __OpenBSD__ || defined __HAIKU__
+ behaves under the hood. Likewise for Haiku.
+ On Android >= 5.0, the "C" locale may have UTF-8 encoding, and we don't
+ know how it will behave in the future. */
+#if defined MUSL_LIBC || defined __OpenBSD__ || defined __HAIKU__ || defined __ANDROID__
expected = true;
#else
expected = !all_trivial;
@@ -57,12 +59,14 @@ test_one (const char *name, int failure_bitmask)
/* On NetBSD 7.0, some locales such as de_DE.ISO8859-1 and de_DE.UTF-8
have the LC_COLLATE category set to "C".
- Similarly, on musl libc, with the C.UTF-8 locale. */
+ Similarly, on musl libc, with the C.UTF-8 locale.
+ On Android >= 5.0, the "C" locale may have UTF-8 encoding, and we don't
+ know how it will behave in the future. */
#if defined __NetBSD__
expected = false;
#elif defined MUSL_LIBC
expected = strcmp (name, "C.UTF-8") != 0;
-#elif (defined __OpenBSD__ && HAVE_DUPLOCALE) || defined __HAIKU__ /* OpenBSD >= 6.2, Haiku */
+#elif (defined __OpenBSD__ && HAVE_DUPLOCALE) || defined __HAIKU__ || defined __ANDROID__ /* OpenBSD >= 6.2, Haiku, Android */
expected = true;
#else
expected = !all_trivial;
@@ -86,12 +90,16 @@ main ()
{
int fail = 0;
- /* The initial locale is the "C" or "POSIX" locale. */
+ /* The initial locale is the "C" or "POSIX" locale.
+ On Android >= 5.0, it is equivalent to the "C.UTF-8" locale, cf.
+ <https://lists.gnu.org/archive/html/bug-gnulib/2023-01/msg00141.html>. */
+#if ! defined __ANDROID__
if (hard_locale (LC_CTYPE) || hard_locale (LC_COLLATE))
{
fprintf (stderr, "The initial locale should not be hard!\n");
fail |= 1;
}
+#endif
all_trivial = (setlocale (LC_ALL, "foobar") != NULL);
diff --git a/tests/test-iconv-h.c b/tests/test-iconv-h.c
index 32bba5e8..ba1534d3 100644
--- a/tests/test-iconv-h.c
+++ b/tests/test-iconv-h.c
@@ -1,5 +1,5 @@
/* Test of <iconv.h> substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-iconv.c b/tests/test-iconv.c
index c92ac8aa..78bf7a2e 100644
--- a/tests/test-iconv.c
+++ b/tests/test-iconv.c
@@ -1,5 +1,5 @@
/* Test of character set conversion.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-ignore-value.c b/tests/test-ignore-value.c
index d35314b3..32edfb45 100644
--- a/tests/test-ignore-value.c
+++ b/tests/test-ignore-value.c
@@ -1,6 +1,6 @@
/* Test the "ignore-value" module.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-inet_pton.c b/tests/test-inet_pton.c
index 9ea0218f..6598d5a0 100644
--- a/tests/test-inet_pton.c
+++ b/tests/test-inet_pton.c
@@ -1,5 +1,5 @@
/* Test of inet_pton function.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-init.sh b/tests/test-init.sh
index cac46f71..8f20fe61 100755
--- a/tests/test-init.sh
+++ b/tests/test-init.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Unit tests for init.sh
-# Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# Copyright (C) 2011-2024 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
diff --git a/tests/test-intprops.c b/tests/test-intprops.c
index a54d5812..e0d63d47 100644
--- a/tests/test-intprops.c
+++ b/tests/test-intprops.c
@@ -1,5 +1,5 @@
/* Test intprops.h.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -173,7 +173,7 @@ main (void)
INT_<op>_OVERFLOW tests, so define macros to do both. OP is the
operation, OPNAME its symbolic name, A and B its operands, T the
result type, V the overflow flag, and VRES the result if V and if
- two's complement. CHECK_BINOP is for most binary operatinos,
+ two's complement. CHECK_BINOP is for most binary operations,
CHECK_SBINOP for binary +, -, * when the result type is signed,
and CHECK_UNOP for unary operations. */
#define CHECK_BINOP(op, opname, a, b, t, v, vres) \
diff --git a/tests/test-inttypes.c b/tests/test-inttypes.c
index 161b19c8..036ca510 100644
--- a/tests/test-inttypes.c
+++ b/tests/test-inttypes.c
@@ -1,5 +1,5 @@
/* Test of <inttypes.h> substitute.
- Copyright (C) 2006-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007, 2009-2024 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
@@ -20,8 +20,6 @@
#include <inttypes.h>
-#include <stddef.h>
-
/* Tests for macros supposed to be defined in inttypes.h. */
const char *k = /* implicit string concatenation */
diff --git a/tests/test-ioctl.c b/tests/test-ioctl.c
index 0db59c74..1fef85b4 100644
--- a/tests/test-ioctl.c
+++ b/tests/test-ioctl.c
@@ -1,5 +1,5 @@
/* Test of ioctl() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-isblank.c b/tests/test-isblank.c
index 2af87f42..8e13bae1 100644
--- a/tests/test-isblank.c
+++ b/tests/test-isblank.c
@@ -1,5 +1,5 @@
/* Test of isblank() function.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -29,7 +29,7 @@ SIGNATURE_CHECK (isblank, int, (int));
#include "macros.h"
int
-main (int argc, char *argv[])
+main ()
{
unsigned int c;
diff --git a/tests/test-isnand-nolibm.c b/tests/test-isnand-nolibm.c
index 6c3831c7..7b251aa9 100644
--- a/tests/test-isnand-nolibm.c
+++ b/tests/test-isnand-nolibm.c
@@ -1,5 +1,5 @@
/* Test of isnand() substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-isnand.h b/tests/test-isnand.h
index ef758608..5369e336 100644
--- a/tests/test-isnand.h
+++ b/tests/test-isnand.h
@@ -1,5 +1,5 @@
/* Test of isnand() substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -21,6 +21,7 @@
#include "minus-zero.h"
#include "infinity.h"
#include "nan.h"
+#include "snan.h"
#include "macros.h"
int
@@ -40,24 +41,9 @@ main ()
ASSERT (!isnand (- Infinityd ()));
/* Quiet NaN. */
ASSERT (isnand (NaNd ()));
-#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+#if HAVE_SNAND
/* Signalling NaN. */
- {
- #define NWORDS \
- ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
- typedef union { double value; unsigned int word[NWORDS]; } memory_double;
- memory_double m;
- m.value = NaNd ();
-# if DBL_EXPBIT0_BIT > 0
- m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1);
-# else
- m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
-# endif
- m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- |= (unsigned int) 1 << DBL_EXPBIT0_BIT;
- ASSERT (isnand (m.value));
- }
+ ASSERT (isnand (SNaNd ()));
#endif
return 0;
}
diff --git a/tests/test-isnanf-nolibm.c b/tests/test-isnanf-nolibm.c
index c651a413..bd39f06f 100644
--- a/tests/test-isnanf-nolibm.c
+++ b/tests/test-isnanf-nolibm.c
@@ -1,5 +1,5 @@
/* Test of isnanf() substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-isnanf.h b/tests/test-isnanf.h
index 0855a031..6f138016 100644
--- a/tests/test-isnanf.h
+++ b/tests/test-isnanf.h
@@ -1,5 +1,5 @@
/* Test of isnanf() substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -21,6 +21,7 @@
#include "minus-zero.h"
#include "infinity.h"
#include "nan.h"
+#include "snan.h"
#include "macros.h"
int
@@ -40,26 +41,9 @@ main ()
ASSERT (!isnanf (- Infinityf ()));
/* Quiet NaN. */
ASSERT (isnanf (NaNf ()));
-#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+#if HAVE_SNANF
/* Signalling NaN. */
- {
- #define NWORDS \
- ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
- typedef union { float value; unsigned int word[NWORDS]; } memory_float;
- memory_float m;
- m.value = NaNf ();
-# if FLT_EXPBIT0_BIT > 0
- m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1);
-# else
- m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
-# endif
- if (FLT_EXPBIT0_WORD < NWORDS / 2)
- m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT;
- else
- m.word[0] |= (unsigned int) 1;
- ASSERT (isnanf (m.value));
- }
+ ASSERT (isnanf (SNaNf ()));
#endif
return 0;
}
diff --git a/tests/test-isnanl-nolibm.c b/tests/test-isnanl-nolibm.c
index 3c3f5d7d..caed43e0 100644
--- a/tests/test-isnanl-nolibm.c
+++ b/tests/test-isnanl-nolibm.c
@@ -1,5 +1,5 @@
/* Test of isnanl() substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-isnanl.h b/tests/test-isnanl.h
index 37f986ed..ff42ee54 100644
--- a/tests/test-isnanl.h
+++ b/tests/test-isnanl.h
@@ -1,5 +1,5 @@
/* Test of isnanl() substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -22,16 +22,12 @@
#include "minus-zero.h"
#include "infinity.h"
#include "nan.h"
+#include "snan.h"
#include "macros.h"
int
main ()
{
- #define NWORDS \
- ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
- typedef union { unsigned int word[NWORDS]; long double value; }
- memory_long_double;
-
/* Finite values. */
ASSERT (!isnanl (3.141L));
ASSERT (!isnanl (3.141e30L));
@@ -46,32 +42,9 @@ main ()
ASSERT (!isnanl (- Infinityl ()));
/* Quiet NaN. */
ASSERT (isnanl (NaNl ()));
-
-#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
- /* A bit pattern that is different from a Quiet NaN. With a bit of luck,
- it's a Signalling NaN. */
- {
-#if defined __powerpc__ && LDBL_MANT_DIG == 106
- /* This is PowerPC "double double", a pair of two doubles. Inf and Nan are
- represented as the corresponding 64-bit IEEE values in the first double;
- the second is ignored. Manipulate only the first double. */
- #undef NWORDS
- #define NWORDS \
- ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-#endif
-
- memory_long_double m;
- m.value = NaNl ();
-# if LDBL_EXPBIT0_BIT > 0
- m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1);
-# else
- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
-# endif
- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- |= (unsigned int) 1 << LDBL_EXPBIT0_BIT;
- ASSERT (isnanl (m.value));
- }
+#if HAVE_SNANL
+ /* Signalling NaN. */
+ ASSERT (isnanl (SNaNl ()));
#endif
#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
@@ -89,41 +62,42 @@ main ()
# endif
{ /* Quiet NaN. */
static memory_long_double x =
- { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ { .word = LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
ASSERT (isnanl (x.value));
}
{
/* Signalling NaN. */
static memory_long_double x =
- { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ { .word = LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
ASSERT (isnanl (x.value));
}
/* isnanl should return something for noncanonical values. */
{ /* Pseudo-NaN. */
static memory_long_double x =
- { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ { .word = LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
ASSERT (isnanl (x.value) || !isnanl (x.value));
}
{ /* Pseudo-Infinity. */
static memory_long_double x =
- { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ { .word = LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
ASSERT (isnanl (x.value) || !isnanl (x.value));
}
{ /* Pseudo-Zero. */
static memory_long_double x =
- { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ { .word = LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
ASSERT (isnanl (x.value) || !isnanl (x.value));
}
{ /* Unnormalized number. */
static memory_long_double x =
- { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ { .word = LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
ASSERT (isnanl (x.value) || !isnanl (x.value));
}
{ /* Pseudo-Denormal. */
static memory_long_double x =
- { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ { .word = LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
ASSERT (isnanl (x.value) || !isnanl (x.value));
}
+ #undef NWORDS
#endif
return 0;
diff --git a/tests/test-iswblank.c b/tests/test-iswblank.c
index fe9a9a1f..e5925179 100644
--- a/tests/test-iswblank.c
+++ b/tests/test-iswblank.c
@@ -1,5 +1,5 @@
/* Test of iswblank() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -31,5 +31,10 @@ main (void)
/* Check that the isw* functions map WEOF to 0. */
ASSERT (!iswblank (e));
+ /* Sanity check for the iswblank function. */
+ ASSERT (iswblank (L' '));
+ ASSERT (iswblank (L'\t'));
+ ASSERT (!iswblank (L'\n'));
+
return 0;
}
diff --git a/tests/test-iswdigit.c b/tests/test-iswdigit.c
index ef024dc6..a5bcc4ff 100644
--- a/tests/test-iswdigit.c
+++ b/tests/test-iswdigit.c
@@ -1,5 +1,5 @@
/* Test of iswdigit() function.
- Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ Copyright (C) 2020-2024 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
diff --git a/tests/test-iswpunct.c b/tests/test-iswpunct.c
new file mode 100644
index 00000000..c0bbd168
--- /dev/null
+++ b/tests/test-iswpunct.c
@@ -0,0 +1,153 @@
+/* Test of iswpunct() function.
+ Copyright (C) 2020-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <wctype.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (iswpunct, int, (wint_t));
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+/* Returns the value of iswpunct for the multibyte character s[0..n-1]. */
+static int
+for_character (const char *s, size_t n)
+{
+ mbstate_t state;
+ wchar_t wc;
+ size_t ret;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, s, n, &state);
+ if (ret == n)
+ return iswpunct (wc);
+ else
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ int is;
+ char buf[4];
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test WEOF. */
+ is = iswpunct (WEOF);
+ ASSERT (is == 0);
+
+ /* Test single-byte characters.
+ POSIX specifies in
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ no explicit list of punctuation or symbol characters. */
+ {
+ int c;
+
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = (unsigned char) c;
+ is = for_character (buf, 1);
+ switch (c)
+ {
+ case ' ':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z':
+ /* c is an alphanumeric or space character. */
+ ASSERT (is == 0);
+ break;
+ case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case '[': case '\\': case ']': case '^': case '_':
+ case '{': case '|': case '}': case '~':
+ /* These characters are usually expected to be punctuation or
+ symbol characters. */
+ ASSERT (is != 0);
+ break;
+ default:
+ ASSERT (is == 0);
+ break;
+ }
+ break;
+ }
+ }
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '0':
+ /* C locale; tested above. */
+ /* These characters are not in the ISO C "basic character set", but
+ are nevertheless usually expected to be punctuation or symbol
+ characters. */
+ is = for_character ("$", 1);
+ ASSERT (is != 0);
+ is = for_character ("@", 1);
+ ASSERT (is != 0);
+ is = for_character ("`", 1);
+ ASSERT (is != 0);
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/test-iswpunct.sh b/tests/test-iswpunct.sh
new file mode 100755
index 00000000..366e1859
--- /dev/null
+++ b/tests/test-iswpunct.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-iswpunct${EXEEXT} 0 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-iswpunct${EXEEXT} 0 || exit 1
+
+exit 0
diff --git a/tests/test-iswxdigit.c b/tests/test-iswxdigit.c
index 96e578b0..f4aeb493 100644
--- a/tests/test-iswxdigit.c
+++ b/tests/test-iswxdigit.c
@@ -1,5 +1,5 @@
/* Test of iswxdigit() function.
- Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ Copyright (C) 2020-2024 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
diff --git a/tests/test-langinfo.c b/tests/test-langinfo.c
index 1a909b16..9561793b 100644
--- a/tests/test-langinfo.c
+++ b/tests/test-langinfo.c
@@ -1,5 +1,5 @@
/* Test of <langinfo.h> substitute.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-largefile.c b/tests/test-largefile.c
new file mode 100644
index 00000000..d2d6a157
--- /dev/null
+++ b/tests/test-largefile.c
@@ -0,0 +1,51 @@
+/* Test of largefile module.
+ Copyright (C) 2023-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+/* This test may fail if AC_SYS_LARGEFILE could not arrange for a 64-bit off_t.
+ This should be rare, though: only very old systems don't have support for
+ files larger than 2 GiB. */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include "intprops.h"
+
+/* Although these tests could be done with static_assert, the test
+ harness prefers dynamic checking. */
+
+int
+main (void)
+{
+ int result = 0;
+
+ /* Check the range of off_t.
+ With MSVC, this test succeeds only thanks to the 'sys_types' module. */
+ if (TYPE_MAXIMUM (off_t) >> 31 >> 31 == 0)
+ result |= 1;
+
+ /* Check the size of the 'struct stat' field 'st_size'.
+ With MSVC, this test succeeds only thanks to the 'sys_stat' module. */
+ {
+ struct stat st;
+ if (sizeof st.st_size != sizeof (off_t))
+ result |= 2;
+ }
+
+ return result;
+}
diff --git a/tests/test-limits-h.c b/tests/test-limits-h.c
index ddcb5d56..6f574c88 100644
--- a/tests/test-limits-h.c
+++ b/tests/test-limits-h.c
@@ -1,5 +1,5 @@
/* Test of <limits.h> substitute.
- Copyright 2016-2022 Free Software Foundation, Inc.
+ Copyright 2016-2024 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
@@ -94,7 +94,11 @@ unsigned long long limits11[] = { ULLONG_MAX };
static_assert (TYPE_MINIMUM (unsigned long long int) == 0);
static_assert (TYPE_MAXIMUM (unsigned long long int) == ULLONG_MAX);
-/* Macros specified by ISO/IEC TS 18661-1:2014. */
+/* Specified by POSIX, not by ISO C. */
+
+long long limits12[] = { SSIZE_MAX };
+
+/* Macros specified by C23 and by ISO/IEC TS 18661-1:2014. */
verify_width (CHAR_WIDTH, CHAR_MIN, CHAR_MAX);
verify_width (SCHAR_WIDTH, SCHAR_MIN, SCHAR_MAX);
@@ -108,10 +112,19 @@ verify_width (ULONG_WIDTH, 0, ULONG_MAX);
verify_width (LLONG_WIDTH, LLONG_MIN, LLONG_MAX);
verify_width (ULLONG_WIDTH, 0, ULLONG_MAX);
-/* Macros specified by C2x. */
+/* Macros specified by C23. */
int bool_attrs[] = { BOOL_MAX, BOOL_WIDTH };
-static_assert (BOOL_MAX == (((1U << (BOOL_WIDTH - 1)) - 1) * 2) + 1);
+static_assert (BOOL_MAX == 1);
+
+static_assert (0 < MB_LEN_MAX);
+
+/* Get ssize_t, size_t. */
+#include <sys/types.h>
+
+static_assert (TYPE_MAXIMUM (ssize_t) == SSIZE_MAX);
+/* Verify that ssize_t has the same width as size_t. */
+static_assert (TYPE_MAXIMUM (size_t) / 2 == SSIZE_MAX);
int
main (void)
diff --git a/tests/test-listen.c b/tests/test-listen.c
index e9d34568..21fc7a2b 100644
--- a/tests/test-listen.c
+++ b/tests/test-listen.c
@@ -1,5 +1,5 @@
/* Test listen() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -27,6 +27,11 @@ SIGNATURE_CHECK (listen, int, (int, int));
#include "sockets.h"
#include "macros.h"
+/* Tell GCC not to warn about the specific edge cases tested here. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-use-without-check"
+#endif
+
int
main (void)
{
diff --git a/tests/test-localcharset.c b/tests/test-localcharset.c
index 9d6f941c..da6cbf6d 100644
--- a/tests/test-localcharset.c
+++ b/tests/test-localcharset.c
@@ -1,5 +1,5 @@
/* Manual test of localcharset() function.
- Copyright (C) 2018-2022 Free Software Foundation, Inc.
+ Copyright (C) 2018-2024 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
diff --git a/tests/test-locale.c b/tests/test-locale.c
index 3aad7d85..e4e61aad 100644
--- a/tests/test-locale.c
+++ b/tests/test-locale.c
@@ -1,5 +1,5 @@
/* Test of <locale.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-localename.c b/tests/test-localename.c
index 9ba388f3..03b70527 100644
--- a/tests/test-localename.c
+++ b/tests/test-localename.c
@@ -1,5 +1,5 @@
/* Test of gl_locale_name function and its variants.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -30,6 +30,35 @@
# define HAVE_GOOD_USELOCALE 1
#endif
+#ifdef __HAIKU__
+/* Work around Haiku bug <https://dev.haiku-os.org/ticket/18344>. */
+# define freelocale(loc) ((void) (loc))
+#endif
+
+/* Suppress GCC false positive. */
+#if __GNUC__ >= 12
+# pragma GCC diagnostic ignored "-Wanalyzer-use-of-uninitialized-value"
+#endif
+
+/* The name that setlocale(,NULL) returns for the "C" locale. */
+#ifdef __HAIKU__
+# define C_CANONICALIZED "POSIX"
+#else
+# define C_CANONICALIZED "C"
+#endif
+
+static int
+is_default (const char *name)
+{
+ return strcmp (name, gl_locale_name_default ()) == 0
+ || (strcmp (name, C_CANONICALIZED) == 0
+ && strcmp (gl_locale_name_default (), "C") == 0)
+#if MUSL_LIBC
+ || (strcmp (name, "C.UTF-8") == 0
+ && strcmp (gl_locale_name_default (), "C") == 0)
+#endif
+ ;
+}
#if HAVE_GOOD_USELOCALE
@@ -101,10 +130,8 @@ test_locale_name (void)
unsetenv ("LC_TELEPHONE");
ret = setlocale (LC_ALL, "");
ASSERT (ret != NULL);
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
- gl_locale_name_default ()) == 0);
- ASSERT (strcmp (gl_locale_name (LC_NUMERIC, "LC_NUMERIC"),
- gl_locale_name_default ()) == 0);
+ ASSERT (is_default (gl_locale_name (LC_MESSAGES, "LC_MESSAGES")));
+ ASSERT (is_default (gl_locale_name (LC_NUMERIC, "LC_NUMERIC")));
/* Check that an empty environment variable is treated like an unset
environment variable. */
@@ -114,32 +141,28 @@ test_locale_name (void)
unsetenv ("LC_MESSAGES");
unsetenv ("LANG");
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
- gl_locale_name_default ()) == 0);
+ ASSERT (is_default (gl_locale_name (LC_MESSAGES, "LC_MESSAGES")));
unsetenv ("LC_ALL");
setenv ("LC_CTYPE", "", 1);
unsetenv ("LC_MESSAGES");
unsetenv ("LANG");
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
- gl_locale_name_default ()) == 0);
+ ASSERT (is_default (gl_locale_name (LC_MESSAGES, "LC_MESSAGES")));
unsetenv ("LC_ALL");
unsetenv ("LC_CTYPE");
setenv ("LC_MESSAGES", "", 1);
unsetenv ("LANG");
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
- gl_locale_name_default ()) == 0);
+ ASSERT (is_default (gl_locale_name (LC_MESSAGES, "LC_MESSAGES")));
unsetenv ("LC_ALL");
unsetenv ("LC_CTYPE");
unsetenv ("LC_MESSAGES");
setenv ("LANG", "", 1);
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
- gl_locale_name_default ()) == 0);
+ ASSERT (is_default (gl_locale_name (LC_MESSAGES, "LC_MESSAGES")));
/* Check that LC_ALL overrides the others, and LANG is overridden by the
others. */
@@ -149,21 +172,24 @@ test_locale_name (void)
unsetenv ("LC_MESSAGES");
unsetenv ("LANG");
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ C_CANONICALIZED) == 0);
unsetenv ("LC_ALL");
setenv ("LC_CTYPE", "C", 1);
setenv ("LC_MESSAGES", "C", 1);
unsetenv ("LANG");
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ C_CANONICALIZED) == 0);
unsetenv ("LC_ALL");
unsetenv ("LC_CTYPE");
unsetenv ("LC_MESSAGES");
setenv ("LANG", "C", 1);
setlocale (LC_ALL, "");
- ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0);
+ ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"),
+ C_CANONICALIZED) == 0);
/* Check mixed situations. */
@@ -195,7 +221,7 @@ test_locale_name (void)
if (setlocale (LC_ALL, "") != NULL)
{
name = gl_locale_name (LC_CTYPE, "LC_CTYPE");
- ASSERT (strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (is_default (name));
name = gl_locale_name (LC_MESSAGES, "LC_MESSAGES");
ASSERT (strcmp (name, "fr_FR.UTF-8") == 0);
}
@@ -543,9 +569,9 @@ test_locale_name_posix (void)
ret = setlocale (LC_ALL, "");
ASSERT (ret != NULL);
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
name = gl_locale_name_posix (LC_NUMERIC, "LC_NUMERIC");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
/* Check that an empty environment variable is treated like an unset
environment variable. */
@@ -556,7 +582,7 @@ test_locale_name_posix (void)
unsetenv ("LANG");
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
unsetenv ("LC_ALL");
setenv ("LC_CTYPE", "", 1);
@@ -564,7 +590,7 @@ test_locale_name_posix (void)
unsetenv ("LANG");
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
unsetenv ("LC_ALL");
unsetenv ("LC_CTYPE");
@@ -572,7 +598,7 @@ test_locale_name_posix (void)
unsetenv ("LANG");
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
unsetenv ("LC_ALL");
unsetenv ("LC_CTYPE");
@@ -580,7 +606,7 @@ test_locale_name_posix (void)
setenv ("LANG", "", 1);
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
/* Check that LC_ALL overrides the others, and LANG is overridden by the
others. */
@@ -591,7 +617,7 @@ test_locale_name_posix (void)
unsetenv ("LANG");
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (strcmp (name, "C") == 0);
+ ASSERT (strcmp (name, C_CANONICALIZED) == 0);
unsetenv ("LC_ALL");
setenv ("LC_CTYPE", "C", 1);
@@ -599,7 +625,7 @@ test_locale_name_posix (void)
unsetenv ("LANG");
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (strcmp (name, "C") == 0);
+ ASSERT (strcmp (name, C_CANONICALIZED) == 0);
unsetenv ("LC_ALL");
unsetenv ("LC_CTYPE");
@@ -607,7 +633,7 @@ test_locale_name_posix (void)
setenv ("LANG", "C", 1);
setlocale (LC_ALL, "");
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (strcmp (name, "C") == 0);
+ ASSERT (strcmp (name, C_CANONICALIZED) == 0);
/* Check mixed situations. */
@@ -634,7 +660,7 @@ test_locale_name_posix (void)
if (setlocale (LC_ALL, "") != NULL)
{
name = gl_locale_name_posix (LC_CTYPE, "LC_CTYPE");
- ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0);
+ ASSERT (name == NULL || is_default (name));
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
ASSERT (strcmp (name, "fr_FR.UTF-8") == 0);
}
@@ -652,7 +678,7 @@ test_locale_name_posix (void)
setlocale (LC_ALL, "");
uselocale (locale);
name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES");
- ASSERT (strcmp (name, "C") == 0);
+ ASSERT (strcmp (name, C_CANONICALIZED) == 0);
uselocale (LC_GLOBAL_LOCALE);
freelocale (locale);
}
diff --git a/tests/test-lock.c b/tests/test-lock.c
index a8fb32f8..b5a5240f 100644
--- a/tests/test-lock.c
+++ b/tests/test-lock.c
@@ -1,5 +1,5 @@
/* Test of locking in multithreaded situations.
- Copyright (C) 2005, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2008-2024 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
@@ -118,7 +118,7 @@ static int account[ACCOUNT_COUNT];
static int
random_account (void)
{
- return ((unsigned int) rand () >> 3) % ACCOUNT_COUNT;
+ return ((unsigned long) random () >> 3) % ACCOUNT_COUNT;
}
static void
@@ -143,7 +143,7 @@ check_accounts (void)
gl_lock_define_initialized(static, my_lock)
static void *
-lock_mutator_thread (void *arg)
+lock_mutator_thread (_GL_UNUSED void *arg)
{
int repeat;
@@ -157,7 +157,7 @@ lock_mutator_thread (void *arg)
i1 = random_account ();
i2 = random_account ();
- value = ((unsigned int) rand () >> 3) % 10;
+ value = ((unsigned long) random () >> 3) % 10;
account[i1] += value;
account[i2] -= value;
@@ -181,7 +181,7 @@ lock_mutator_thread (void *arg)
static struct atomic_int lock_checker_done;
static void *
-lock_checker_thread (void *arg)
+lock_checker_thread (_GL_UNUSED void *arg)
{
while (get_atomic_int_value (&lock_checker_done) == 0)
{
@@ -234,7 +234,7 @@ test_lock (void)
gl_rwlock_define_initialized(static, my_rwlock)
static void *
-rwlock_mutator_thread (void *arg)
+rwlock_mutator_thread (_GL_UNUSED void *arg)
{
int repeat;
@@ -248,7 +248,7 @@ rwlock_mutator_thread (void *arg)
i1 = random_account ();
i2 = random_account ();
- value = ((unsigned int) rand () >> 3) % 10;
+ value = ((unsigned long) random () >> 3) % 10;
account[i1] += value;
account[i2] -= value;
@@ -266,7 +266,7 @@ rwlock_mutator_thread (void *arg)
static struct atomic_int rwlock_checker_done;
static void *
-rwlock_checker_thread (void *arg)
+rwlock_checker_thread (_GL_UNUSED void *arg)
{
while (get_atomic_int_value (&rwlock_checker_done) == 0)
{
@@ -331,12 +331,12 @@ recshuffle (void)
i1 = random_account ();
i2 = random_account ();
- value = ((unsigned int) rand () >> 3) % 10;
+ value = ((unsigned long) random () >> 3) % 10;
account[i1] += value;
account[i2] -= value;
/* Recursive with probability 0.5. */
- if (((unsigned int) rand () >> 3) % 2)
+ if (((unsigned long) random () >> 3) % 2)
recshuffle ();
dbgprintf ("Mutator %p before unlock\n", gl_thread_self_pointer ());
@@ -345,7 +345,7 @@ recshuffle (void)
}
static void *
-reclock_mutator_thread (void *arg)
+reclock_mutator_thread (_GL_UNUSED void *arg)
{
int repeat;
@@ -369,7 +369,7 @@ reclock_mutator_thread (void *arg)
static struct atomic_int reclock_checker_done;
static void *
-reclock_checker_thread (void *arg)
+reclock_checker_thread (_GL_UNUSED void *arg)
{
while (get_atomic_int_value (&reclock_checker_done) == 0)
{
diff --git a/tests/test-lstat.c b/tests/test-lstat.c
index c35d41cb..3a2d61ec 100644
--- a/tests/test-lstat.c
+++ b/tests/test-lstat.c
@@ -1,5 +1,5 @@
/* Test of lstat() function.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-lstat.h b/tests/test-lstat.h
index 3982d160..31476132 100644
--- a/tests/test-lstat.h
+++ b/tests/test-lstat.h
@@ -1,5 +1,5 @@
/* Test of lstat() function.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -32,14 +32,14 @@ test_lstat_func (int (*func) (char const *, struct stat *), bool print)
ASSERT (func (".", &st1) == 0);
ASSERT (func ("./", &st2) == 0);
#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
- ASSERT (SAME_INODE (st1, st2));
+ ASSERT (psame_inode (&st1, &st2));
#endif
ASSERT (S_ISDIR (st1.st_mode));
ASSERT (S_ISDIR (st2.st_mode));
ASSERT (func ("/", &st1) == 0);
ASSERT (func ("///", &st2) == 0);
#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
- ASSERT (SAME_INODE (st1, st2));
+ ASSERT (psame_inode (&st1, &st2));
#endif
ASSERT (S_ISDIR (st1.st_mode));
ASSERT (S_ISDIR (st2.st_mode));
@@ -90,7 +90,7 @@ test_lstat_func (int (*func) (char const *, struct stat *), bool print)
ASSERT (S_ISDIR (st1.st_mode));
ASSERT (S_ISDIR (st2.st_mode));
#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
- ASSERT (SAME_INODE (st1, st2));
+ ASSERT (psame_inode (&st1, &st2));
#endif
ASSERT (func (BASE "link2", &st1) == 0);
diff --git a/tests/test-malloc-gnu.c b/tests/test-malloc-gnu.c
index 8873eb89..490efb01 100644
--- a/tests/test-malloc-gnu.c
+++ b/tests/test-malloc-gnu.c
@@ -1,5 +1,5 @@
/* Test of malloc function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
@@ -25,7 +25,7 @@
#include "macros.h"
int
-main (int argc, char **argv)
+main (int argc, _GL_UNUSED char **argv)
{
/* Check that malloc (0) is not a NULL pointer. */
void *volatile p = malloc (0);
diff --git a/tests/test-malloca.c b/tests/test-malloca.c
index 8665f465..9d46cd42 100644
--- a/tests/test-malloca.c
+++ b/tests/test-malloca.c
@@ -1,5 +1,5 @@
/* Test of safe automatic memory allocation.
- Copyright (C) 2005, 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009-2024 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
diff --git a/tests/test-math.c b/tests/test-math.c
index 7089e8d6..d853f2a8 100644
--- a/tests/test-math.c
+++ b/tests/test-math.c
@@ -1,5 +1,5 @@
/* Test of <math.h> substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -50,15 +50,15 @@ choke me
choke me
#endif
-#include <limits.h>
-
-#include "macros.h"
-
#if 0
/* Check that NAN expands into a constant expression. */
static float n = NAN;
#endif
+#include <limits.h>
+
+#include "macros.h"
+
/* Compare two numbers with ==.
This is a separate function because IRIX 6.5 "cc -O" miscompiles an
'x == x' test. */
diff --git a/tests/test-mbrtoc32-1.sh b/tests/test-mbrtoc32-1.sh
new file mode 100755
index 00000000..85abbdad
--- /dev/null
+++ b/tests/test-mbrtoc32-1.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Test whether the POSIX locale has encoding errors.
+LC_ALL=C \
+${CHECKER} ./test-mbrtoc32${EXEEXT} 1 || exit 1
+LC_ALL=POSIX \
+${CHECKER} ./test-mbrtoc32${EXEEXT} 1 || exit 1
+
+exit 0
diff --git a/tests/test-mbrtoc32-2.sh b/tests/test-mbrtoc32-2.sh
new file mode 100755
index 00000000..1d44338a
--- /dev/null
+++ b/tests/test-mbrtoc32-2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR \
+${CHECKER} ./test-mbrtoc32${EXEEXT} 2
diff --git a/tests/test-mbrtoc32-3.sh b/tests/test-mbrtoc32-3.sh
new file mode 100755
index 00000000..082bad84
--- /dev/null
+++ b/tests/test-mbrtoc32-3.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR_UTF8 \
+${CHECKER} ./test-mbrtoc32${EXEEXT} 3
diff --git a/tests/test-mbrtoc32-4.sh b/tests/test-mbrtoc32-4.sh
new file mode 100755
index 00000000..b23a3272
--- /dev/null
+++ b/tests/test-mbrtoc32-4.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional japanese locale is installed"
+ else
+ echo "Skipping test: no traditional japanese locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_JA \
+${CHECKER} ./test-mbrtoc32${EXEEXT} 4
diff --git a/tests/test-mbrtoc32-5.sh b/tests/test-mbrtoc32-5.sh
new file mode 100755
index 00000000..734a959e
--- /dev/null
+++ b/tests/test-mbrtoc32-5.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no transitional chinese locale is installed"
+ else
+ echo "Skipping test: no transitional chinese locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_ZH_CN \
+${CHECKER} ./test-mbrtoc32${EXEEXT} 5
diff --git a/tests/test-mbrtoc32-w32-2.sh b/tests/test-mbrtoc32-w32-2.sh
new file mode 100755
index 00000000..bf6b61ce
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-2.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP1252 locale.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} French_France 1252
diff --git a/tests/test-mbrtoc32-w32-3.sh b/tests/test-mbrtoc32-w32-3.sh
new file mode 100755
index 00000000..dd96b17f
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-3.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP1256 locale.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
diff --git a/tests/test-mbrtoc32-w32-4.sh b/tests/test-mbrtoc32-w32-4.sh
new file mode 100755
index 00000000..b2b889b6
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-4.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test some UTF-8 locales.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
diff --git a/tests/test-mbrtoc32-w32-5.sh b/tests/test-mbrtoc32-w32-5.sh
new file mode 100755
index 00000000..21a826b5
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-5.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP932 locale.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} Japanese_Japan 932
diff --git a/tests/test-mbrtoc32-w32-6.sh b/tests/test-mbrtoc32-w32-6.sh
new file mode 100755
index 00000000..4e261dbd
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-6.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP950 locale.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} Chinese_Taiwan 950
diff --git a/tests/test-mbrtoc32-w32-7.sh b/tests/test-mbrtoc32-w32-7.sh
new file mode 100755
index 00000000..200c248c
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-7.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a CP936 locale.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} Chinese_China 936
diff --git a/tests/test-mbrtoc32-w32-8.sh b/tests/test-mbrtoc32-w32-8.sh
new file mode 100755
index 00000000..a763e9fe
--- /dev/null
+++ b/tests/test-mbrtoc32-w32-8.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-mbrtoc32-w32${EXEEXT} Chinese_China 54936
diff --git a/tests/test-mbrtoc32-w32.c b/tests/test-mbrtoc32-w32.c
new file mode 100644
index 00000000..93196d48
--- /dev/null
+++ b/tests/test-mbrtoc32-w32.c
@@ -0,0 +1,750 @@
+/* Test of conversion of multibyte character to 32-bit wide character.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include <errno.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "localcharset.h"
+#include "macros.h"
+
+#if defined _WIN32 && !defined __CYGWIN__
+
+static int
+test_one_locale (const char *name, int codepage)
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+# if 1
+ /* Portable code to set the locale. */
+ {
+ char name_with_codepage[1024];
+
+ sprintf (name_with_codepage, "%s.%d", name, codepage);
+
+ /* Set the locale. */
+ if (setlocale (LC_ALL, name_with_codepage) == NULL)
+ return 77;
+ }
+# else
+ /* Hacky way to set a locale.codepage combination that setlocale() refuses
+ to set. */
+ {
+ /* Codepage of the current locale, set with setlocale().
+ Not necessarily the same as GetACP(). */
+ extern __declspec(dllimport) unsigned int __lc_codepage;
+
+ /* Set the locale. */
+ if (setlocale (LC_ALL, name) == NULL)
+ return 77;
+
+ /* Clobber the codepage and MB_CUR_MAX, both set by setlocale(). */
+ __lc_codepage = codepage;
+ switch (codepage)
+ {
+ case 1252:
+ case 1256:
+ MB_CUR_MAX = 1;
+ break;
+ case 932:
+ case 950:
+ case 936:
+ MB_CUR_MAX = 2;
+ break;
+ case 54936:
+ case 65001:
+ MB_CUR_MAX = 4;
+ break;
+ }
+
+ /* Test whether the codepage is really available. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtoc32 (&wc, " ", 1, &state) == (size_t)(-1))
+ return 77;
+ }
+# endif
+
+ /* Test zero-length input. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "x", 0, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (mbsinit (&state));
+ }
+
+ /* Test NUL byte input. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "", 1, &state);
+ ASSERT (ret == 0);
+ ASSERT (wc == 0);
+ ASSERT (mbsinit (&state));
+ ret = mbrtoc32 (NULL, "", 1, &state);
+ ASSERT (ret == 0);
+ ASSERT (mbsinit (&state));
+ }
+
+ /* Test single-byte input. */
+ {
+ int c;
+ char buf[1];
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ buf[0] = c;
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == c);
+ ASSERT (mbsinit (&state));
+ ret = mbrtoc32 (NULL, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+ break;
+ }
+ }
+
+ /* Test special calling convention, passing a NULL pointer. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, NULL, 5, &state);
+ ASSERT (ret == 0);
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (mbsinit (&state));
+ }
+
+ switch (codepage)
+ {
+ case 1252:
+ /* Locale encoding is CP1252, an extension of ISO-8859-1. */
+ {
+ char input[] = "B\374\337er"; /* "Büßer" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'B');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\374');
+ ASSERT (wc == 0x00FC); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\337');
+ ASSERT (wc == 0x00DF); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'e');
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'r');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case 1256:
+ /* Locale encoding is CP1256, not the same as ISO-8859-6. */
+ {
+ char input[] = "x\302\341\346y"; /* "xآلوy" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'x');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\302');
+ ASSERT (wc == 0x0622); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\341');
+ ASSERT (wc == 0x0644); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\346');
+ ASSERT (wc == 0x0648); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'y');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case 65001:
+ /* Locale encoding is CP65001 = UTF-8. */
+ if (strcmp (locale_charset (), "UTF-8") != 0)
+ return 77;
+ {
+ char input[] = "s\303\274\303\237\360\237\230\213!"; /* "süß😋!" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 's');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 7, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x00FC); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 3, 6, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 6, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x00DF); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 5, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 5, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x1F60B); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+ input[7] = '\0';
+ input[8] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 9, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '!');
+ ASSERT (mbsinit (&state));
+
+ /* Test some invalid input. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\377", 1, &state); /* 0xFF */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\303\300", 2, &state); /* 0xC3 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\343\300", 2, &state); /* 0xE3 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\363\300", 2, &state); /* 0xF3 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+ }
+ return 0;
+
+ case 932:
+ /* Locale encoding is CP932, similar to Shift_JIS. */
+ {
+ char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '<');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 2, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x65E5); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 4, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x672C); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[4] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x8A9E); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 7, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '>');
+ ASSERT (mbsinit (&state));
+
+ /* Test some invalid input. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\377", 1, &state); /* 0xFF */
+ ASSERT ((ret == (size_t)-1 && errno == EILSEQ) || ret == (size_t)-2);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\225\377", 2, &state); /* 0x95 0xFF */
+ ASSERT ((ret == (size_t)-1 && errno == EILSEQ) || (ret == 2 && wc == 0x30FB));
+ }
+ return 0;
+
+ case 950:
+ /* Locale encoding is CP950, similar to Big5. */
+ {
+ char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '<');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 2, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x65E5); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 4, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x672C); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[4] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x8A9E); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 7, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '>');
+ ASSERT (mbsinit (&state));
+
+ /* Test some invalid input. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\377", 1, &state); /* 0xFF */
+ ASSERT ((ret == (size_t)-1 && errno == EILSEQ) || ret == (size_t)-2);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\225\377", 2, &state); /* 0x95 0xFF */
+ ASSERT ((ret == (size_t)-1 && errno == EILSEQ) || (ret == 2 && wc == '?'));
+ }
+ return 0;
+
+ case 936:
+ /* Locale encoding is CP936 = GBK, an extension of GB2312. */
+ {
+ char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '<');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 2, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x65E5); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 4, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x672C); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[4] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x8A9E); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 7, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '>');
+ ASSERT (mbsinit (&state));
+
+ /* Test some invalid input. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\377", 1, &state); /* 0xFF */
+ ASSERT ((ret == (size_t)-1 && errno == EILSEQ) || ret == (size_t)-2);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\225\377", 2, &state); /* 0x95 0xFF */
+ ASSERT ((ret == (size_t)-1 && errno == EILSEQ) || (ret == 2 && wc == '?'));
+ }
+ return 0;
+
+ case 54936:
+ /* Locale encoding is CP54936 = GB18030. */
+ if (strcmp (locale_charset (), "GB18030") != 0)
+ return 77;
+ {
+ char input[] = "s\250\271\201\060\211\070\224\071\375\067!"; /* "süß😋!" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 's');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 9, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x00FC); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 3, 8, &state);
+ ASSERT (ret == 4);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 8, &state);
+ ASSERT (ret == 4);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x00DF); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+ input[5] = '\0';
+ input[6] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 7, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 7, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x1F60B); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[7] = '\0';
+ input[8] = '\0';
+ input[9] = '\0';
+ input[10] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 11, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '!');
+ ASSERT (mbsinit (&state));
+
+ /* Test some invalid input. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\377", 1, &state); /* 0xFF */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\225\377", 2, &state); /* 0x95 0xFF */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\201\045", 2, &state); /* 0x81 0x25 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\201\060\377", 3, &state); /* 0x81 0x30 0xFF */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\201\060\377\064", 4, &state); /* 0x81 0x30 0xFF 0x34 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "\201\060\211\072", 4, &state); /* 0x81 0x30 0x89 0x3A */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+ }
+ return 0;
+
+ default:
+ return 1;
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ int codepage = atoi (argv[argc - 1]);
+ int result;
+ int i;
+
+ result = 77;
+ for (i = 1; i < argc - 1; i++)
+ {
+ int ret = test_one_locale (argv[i], codepage);
+
+ if (ret != 77)
+ result = ret;
+ }
+
+ if (result == 77)
+ {
+ fprintf (stderr, "Skipping test: found no locale with codepage %d\n",
+ codepage);
+ }
+ return result;
+}
+
+#else
+
+int
+main (int argc, char *argv[])
+{
+ fputs ("Skipping test: not a native Windows system\n", stderr);
+ return 77;
+}
+
+#endif
diff --git a/tests/test-mbrtoc32.c b/tests/test-mbrtoc32.c
new file mode 100644
index 00000000..6fffb2a7
--- /dev/null
+++ b/tests/test-mbrtoc32.c
@@ -0,0 +1,441 @@
+/* Test of conversion of multibyte character to 32-bit wide character.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (mbrtoc32, size_t,
+ (char32_t *, const char *, size_t, mbstate_t *));
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#include "macros.h"
+
+int
+main (int argc, char *argv[])
+{
+ mbstate_t state;
+ char32_t wc;
+ size_t ret;
+
+ /* configure should already have checked that the locale is supported. */
+ if (setlocale (LC_ALL, "") == NULL)
+ return 1;
+
+ /* Test zero-length input. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "x", 0, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (mbsinit (&state));
+ }
+
+ /* Test NUL byte input. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, "", 1, &state);
+ ASSERT (ret == 0);
+ ASSERT (wc == 0);
+ ASSERT (mbsinit (&state));
+ ret = mbrtoc32 (NULL, "", 1, &state);
+ ASSERT (ret == 0);
+ ASSERT (mbsinit (&state));
+ }
+
+ /* Test single-byte input. */
+ {
+ int c;
+ char buf[1];
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ for (c = 0; c < 0x100; c++)
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* c is in the ISO C "basic character set". */
+ ASSERT (c < 0x80);
+ /* c is an ASCII character. */
+ buf[0] = c;
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == c);
+ ASSERT (mbsinit (&state));
+
+ ret = mbrtoc32 (NULL, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+
+ break;
+ default:
+ break;
+ }
+ }
+
+ /* Test special calling convention, passing a NULL pointer. */
+ {
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, NULL, 5, &state);
+ ASSERT (ret == 0);
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (mbsinit (&state));
+ }
+
+#ifdef __ANDROID__
+ /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+ "C" locale. Furthermore, when you attempt to set the "C" or "POSIX"
+ locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+ that is, effectively the "C.UTF-8" locale. */
+ if (argc > 1 && strcmp (argv[1], "1") == 0 && MB_CUR_MAX > 1)
+ argv[1] = "3";
+#endif
+
+ if (argc > 1)
+ switch (argv[1][0])
+ {
+ case '1':
+ /* C or POSIX locale. */
+ {
+ int c;
+ char buf[1];
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ for (c = 0; c < 0x100; c++)
+ if (c != 0)
+ {
+ /* We are testing all nonnull bytes. */
+ buf[0] = c;
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, buf, 1, &state);
+ /* POSIX:2018 says regarding mbrtowc: "In the POSIX locale an
+ [EILSEQ] error cannot occur since all byte values are valid
+ characters." It is reasonable to expect mbrtoc32 to behave
+ in the same way. */
+ ASSERT (ret == 1);
+ if (c < 0x80)
+ /* c is an ASCII character. */
+ ASSERT (wc == c);
+ else
+ /* On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
+ But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF. */
+ ASSERT (wc == (btoc32 (c) == 0xDF00 + c ? btoc32 (c) : c));
+ ASSERT (mbsinit (&state));
+
+ ret = mbrtoc32 (NULL, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+ }
+ }
+ return 0;
+
+ case '2':
+ /* Locale encoding is ISO-8859-1 or ISO-8859-15. */
+ {
+ char input[] = "B\374\337er"; /* "Büßer" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'B');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\374');
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x00FC); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 3, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == (unsigned char) '\337');
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x00DF); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'e');
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'r');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case '3':
+ /* Locale encoding is UTF-8. */
+ {
+ char input[] = "s\303\274\303\237\360\237\230\213!"; /* "süß😋!" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 's');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 7, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x00FC); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 3, 6, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 6, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x00DF); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 5, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 5, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (c32tob (wc) == EOF);
+ ASSERT (wc == 0x1F60B); /* expect Unicode encoding */
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+ input[7] = '\0';
+ input[8] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 9, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '!');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case '4':
+ /* Locale encoding is EUC-JP. */
+ {
+ char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '<');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 2, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x65E5); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[1] = '\0';
+ input[2] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[3] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 4, 4, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x672C); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[4] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 5, 3, &state);
+ ASSERT (ret == 2);
+ ASSERT (c32tob (wc) == EOF);
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x8A9E); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+ input[6] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 7, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '>');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+
+ case '5':
+ /* Locale encoding is GB18030. */
+ #if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 13 && __GLIBC_MINOR__ <= 15) || (GL_CHAR32_T_IS_UNICODE && (defined __FreeBSD__ || defined __NetBSD__ || defined __sun))
+ fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
+ return 77;
+ #endif
+ {
+ char input[] = "s\250\271\201\060\211\070\224\071\375\067!"; /* "süß😋!" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 's');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (char32_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 2, 9, &state);
+ ASSERT (ret == 1);
+ ASSERT (c32tob (wc) == EOF);
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x00FC); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 3, 8, &state);
+ ASSERT (ret == 4);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 3, 8, &state);
+ ASSERT (ret == 4);
+ ASSERT (c32tob (wc) == EOF);
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x00DF); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+ input[5] = '\0';
+ input[6] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtoc32 (NULL, input + 7, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (mbsinit (&state));
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 7, 4, &state);
+ ASSERT (ret == 4);
+ ASSERT (c32tob (wc) == EOF);
+ #if GL_CHAR32_T_IS_UNICODE
+ ASSERT (wc == 0x1F60B); /* expect Unicode encoding */
+ #endif
+ ASSERT (mbsinit (&state));
+ input[7] = '\0';
+ input[8] = '\0';
+ input[9] = '\0';
+ input[10] = '\0';
+
+ wc = (char32_t) 0xBADFACE;
+ ret = mbrtoc32 (&wc, input + 11, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == '!');
+ ASSERT (mbsinit (&state));
+ }
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/tests/test-mbrtowc-1.sh b/tests/test-mbrtowc-1.sh
new file mode 100755
index 00000000..f0a1feda
--- /dev/null
+++ b/tests/test-mbrtowc-1.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Test whether the POSIX locale has encoding errors.
+LC_ALL=C \
+${CHECKER} ./test-mbrtowc${EXEEXT} 1 || exit 1
+LC_ALL=POSIX \
+${CHECKER} ./test-mbrtowc${EXEEXT} 1 || exit 1
+
+exit 0
diff --git a/tests/test-mbrtowc-2.sh b/tests/test-mbrtowc-2.sh
new file mode 100755
index 00000000..30662926
--- /dev/null
+++ b/tests/test-mbrtowc-2.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no traditional french locale is installed"
+ else
+ echo "Skipping test: no traditional french locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR \
+${CHECKER} ./test-mbrtowc${EXEEXT} 2
diff --git a/tests/test-mbrtowc-3.sh b/tests/test-mbrtowc-3.sh
new file mode 100755
index 00000000..36b0023c
--- /dev/null
+++ b/tests/test-mbrtowc-3.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 = none; then
+ if test -f /usr/bin/localedef; then
+ echo "Skipping test: no french Unicode locale is installed"
+ else
+ echo "Skipping test: no french Unicode locale is supported"
+ fi
+ exit 77
+fi
+
+LC_ALL=$LOCALE_FR_UTF8 \
+${CHECKER} ./test-mbrtowc${EXEEXT} 3
diff --git a/tests/test-mbrtowc3.sh b/tests/test-mbrtowc-4.sh
index eca8d648..1c5943ea 100755
--- a/tests/test-mbrtowc3.sh
+++ b/tests/test-mbrtowc-4.sh
@@ -12,4 +12,4 @@ if test $LOCALE_JA = none; then
fi
LC_ALL=$LOCALE_JA \
-${CHECKER} ./test-mbrtowc${EXEEXT} 3
+${CHECKER} ./test-mbrtowc${EXEEXT} 4
diff --git a/tests/test-mbrtowc4.sh b/tests/test-mbrtowc-5.sh
index 7da23a3c..8690bbef 100755
--- a/tests/test-mbrtowc4.sh
+++ b/tests/test-mbrtowc-5.sh
@@ -12,4 +12,4 @@ if test $LOCALE_ZH_CN = none; then
fi
LC_ALL=$LOCALE_ZH_CN \
-${CHECKER} ./test-mbrtowc${EXEEXT} 4
+${CHECKER} ./test-mbrtowc${EXEEXT} 5
diff --git a/tests/test-mbrtowc-w32-1.sh b/tests/test-mbrtowc-w32-1.sh
deleted file mode 100755
index fec9eadf..00000000
--- a/tests/test-mbrtowc-w32-1.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Test a CP1252 locale.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} French_France 1252
diff --git a/tests/test-mbrtowc-w32-2.sh b/tests/test-mbrtowc-w32-2.sh
index c55a0ec0..fec9eadf 100755
--- a/tests/test-mbrtowc-w32-2.sh
+++ b/tests/test-mbrtowc-w32-2.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP1256 locale.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
+# Test a CP1252 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} French_France 1252
diff --git a/tests/test-mbrtowc-w32-3.sh b/tests/test-mbrtowc-w32-3.sh
index c49f4bdf..c55a0ec0 100755
--- a/tests/test-mbrtowc-w32-3.sh
+++ b/tests/test-mbrtowc-w32-3.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP932 locale.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} Japanese_Japan 932
+# Test a CP1256 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
diff --git a/tests/test-mbrtowc-w32-4.sh b/tests/test-mbrtowc-w32-4.sh
index 3e786150..2c5d555f 100755
--- a/tests/test-mbrtowc-w32-4.sh
+++ b/tests/test-mbrtowc-w32-4.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP950 locale.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_Taiwan 950
+# Test some UTF-8 locales.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
diff --git a/tests/test-mbrtowc-w32-5.sh b/tests/test-mbrtowc-w32-5.sh
index c6ba2226..c49f4bdf 100755
--- a/tests/test-mbrtowc-w32-5.sh
+++ b/tests/test-mbrtowc-w32-5.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP936 locale.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_China 936
+# Test a CP932 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Japanese_Japan 932
diff --git a/tests/test-mbrtowc-w32-6.sh b/tests/test-mbrtowc-w32-6.sh
index c2e8dfe0..3e786150 100755
--- a/tests/test-mbrtowc-w32-6.sh
+++ b/tests/test-mbrtowc-w32-6.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a GB18030 locale.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_China 54936
+# Test a CP950 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_Taiwan 950
diff --git a/tests/test-mbrtowc-w32-7.sh b/tests/test-mbrtowc-w32-7.sh
index 2c5d555f..c6ba2226 100755
--- a/tests/test-mbrtowc-w32-7.sh
+++ b/tests/test-mbrtowc-w32-7.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test some UTF-8 locales.
-${CHECKER} ./test-mbrtowc-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
+# Test a CP936 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_China 936
diff --git a/tests/test-mbrtowc-w32-8.sh b/tests/test-mbrtowc-w32-8.sh
new file mode 100755
index 00000000..c2e8dfe0
--- /dev/null
+++ b/tests/test-mbrtowc-w32-8.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_China 54936
diff --git a/tests/test-mbrtowc-w32.c b/tests/test-mbrtowc-w32.c
index 04287e98..2071ddeb 100644
--- a/tests/test-mbrtowc-w32.c
+++ b/tests/test-mbrtowc-w32.c
@@ -1,5 +1,5 @@
/* Test of conversion of multibyte character to wide character.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -265,6 +265,126 @@ test_one_locale (const char *name, int codepage)
}
return 0;
+ case 65001:
+ /* Locale encoding is CP65001 = UTF-8. */
+ if (strcmp (locale_charset (), "UTF-8") != 0)
+ return 77;
+ {
+ char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ memset (&state, '\0', sizeof (mbstate_t));
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'B');
+ ASSERT (mbsinit (&state));
+ input[0] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 1, 1, &state);
+ ASSERT (ret == (size_t)(-2));
+ ASSERT (wc == (wchar_t) 0xBADFACE);
+ ASSERT (!mbsinit (&state));
+ input[1] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 2, 5, &state);
+ ASSERT (ret == 1);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (wc == 0x00FC);
+ ASSERT (mbsinit (&state));
+ input[2] = '\0';
+
+ /* Test support of NULL first argument. */
+ ret = mbrtowc (NULL, input + 3, 4, &state);
+ ASSERT (ret == 2);
+ ASSERT (mbsinit (&state));
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 3, 4, &state);
+ ASSERT (ret == 2);
+ ASSERT (wctob (wc) == EOF);
+ ASSERT (wc == 0x00DF);
+ ASSERT (mbsinit (&state));
+ input[3] = '\0';
+ input[4] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 5, 2, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'e');
+ ASSERT (mbsinit (&state));
+ input[5] = '\0';
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, input + 6, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (wc == 'r');
+ ASSERT (mbsinit (&state));
+
+ /* Test some invalid input. */
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\303\300", 2, &state); /* 0xC3 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\343\300", 2, &state); /* 0xE3 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\363\300", 2, &state); /* 0xF3 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, "\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */
+ ASSERT (ret == (size_t)-1);
+ ASSERT (errno == EILSEQ);
+ }
+ return 0;
+
case 932:
/* Locale encoding is CP932, similar to Shift_JIS. */
{
@@ -573,126 +693,6 @@ test_one_locale (const char *name, int codepage)
}
return 0;
- case 65001:
- /* Locale encoding is CP65001 = UTF-8. */
- if (strcmp (locale_charset (), "UTF-8") != 0)
- return 77;
- {
- char input[] = "B\303\274\303\237er"; /* "Büßer" */
- memset (&state, '\0', sizeof (mbstate_t));
-
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, input, 1, &state);
- ASSERT (ret == 1);
- ASSERT (wc == 'B');
- ASSERT (mbsinit (&state));
- input[0] = '\0';
-
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, input + 1, 1, &state);
- ASSERT (ret == (size_t)(-2));
- ASSERT (wc == (wchar_t) 0xBADFACE);
- ASSERT (!mbsinit (&state));
- input[1] = '\0';
-
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, input + 2, 5, &state);
- ASSERT (ret == 1);
- ASSERT (wctob (wc) == EOF);
- ASSERT (wc == 0x00FC);
- ASSERT (mbsinit (&state));
- input[2] = '\0';
-
- /* Test support of NULL first argument. */
- ret = mbrtowc (NULL, input + 3, 4, &state);
- ASSERT (ret == 2);
- ASSERT (mbsinit (&state));
-
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, input + 3, 4, &state);
- ASSERT (ret == 2);
- ASSERT (wctob (wc) == EOF);
- ASSERT (wc == 0x00DF);
- ASSERT (mbsinit (&state));
- input[3] = '\0';
- input[4] = '\0';
-
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, input + 5, 2, &state);
- ASSERT (ret == 1);
- ASSERT (wc == 'e');
- ASSERT (mbsinit (&state));
- input[5] = '\0';
-
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, input + 6, 1, &state);
- ASSERT (ret == 1);
- ASSERT (wc == 'r');
- ASSERT (mbsinit (&state));
-
- /* Test some invalid input. */
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\303\300", 2, &state); /* 0xC3 0xC0 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\343\300", 2, &state); /* 0xE3 0xC0 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\363\300", 2, &state); /* 0xF3 0xC0 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
-
- memset (&state, '\0', sizeof (mbstate_t));
- wc = (wchar_t) 0xBADFACE;
- ret = mbrtowc (&wc, "\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */
- ASSERT (ret == (size_t)-1);
- ASSERT (errno == EILSEQ);
- }
- return 0;
-
default:
return 1;
}
diff --git a/tests/test-mbrtowc.c b/tests/test-mbrtowc.c
index 0e86bd49..f45f90e4 100644
--- a/tests/test-mbrtowc.c
+++ b/tests/test-mbrtowc.c
@@ -1,5 +1,5 @@
/* Test of conversion of multibyte character to wide character.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -26,6 +26,7 @@ SIGNATURE_CHECK (mbrtowc, size_t, (wchar_t *, char const *, size_t,
#include <locale.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include "macros.h"
@@ -72,10 +73,6 @@ main (int argc, char *argv[])
for (c = 0; c < 0x100; c++)
switch (c)
{
- default:
- if (! (c && 1 < argc && argv[1][0] == '5'))
- break;
- FALLTHROUGH;
case '\t': case '\v': case '\f':
case ' ': case '!': case '"': case '#': case '%':
case '&': case '\'': case '(': case ')': case '*':
@@ -97,25 +94,23 @@ main (int argc, char *argv[])
case 'p': case 'q': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x': case 'y':
case 'z': case '{': case '|': case '}': case '~':
- /* c is in the ISO C "basic character set", or argv[1] starts
- with '5' so we are testing all nonnull bytes. */
+ /* c is in the ISO C "basic character set". */
+ ASSERT (c < 0x80);
+ /* c is an ASCII character. */
buf[0] = c;
+
wc = (wchar_t) 0xBADFACE;
ret = mbrtowc (&wc, buf, 1, &state);
ASSERT (ret == 1);
- if (c < 0x80)
- /* c is an ASCII character. */
- ASSERT (wc == c);
- else
- /* argv[1] starts with '5', that is, we are testing the C or POSIX
- locale.
- On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
- But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF. */
- ASSERT (wc == (btowc (c) == 0xDF00 + c ? btowc (c) : c));
+ ASSERT (wc == c);
ASSERT (mbsinit (&state));
+
ret = mbrtowc (NULL, buf, 1, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
+
+ break;
+ default:
break;
}
}
@@ -130,10 +125,53 @@ main (int argc, char *argv[])
ASSERT (mbsinit (&state));
}
+#ifdef __ANDROID__
+ /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+ "C" locale. Furthermore, when you attempt to set the "C" or "POSIX"
+ locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+ that is, effectively the "C.UTF-8" locale. */
+ if (argc > 1 && strcmp (argv[1], "1") == 0 && MB_CUR_MAX > 1)
+ argv[1] = "3";
+#endif
+
if (argc > 1)
switch (argv[1][0])
{
case '1':
+ /* C or POSIX locale. */
+ {
+ int c;
+ char buf[1];
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ for (c = 0; c < 0x100; c++)
+ if (c != 0)
+ {
+ /* We are testing all nonnull bytes. */
+ buf[0] = c;
+
+ wc = (wchar_t) 0xBADFACE;
+ ret = mbrtowc (&wc, buf, 1, &state);
+ /* POSIX:2018 says: "In the POSIX locale an [EILSEQ] error
+ cannot occur since all byte values are valid characters." */
+ ASSERT (ret == 1);
+ if (c < 0x80)
+ /* c is an ASCII character. */
+ ASSERT (wc == c);
+ else
+ /* On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
+ But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF. */
+ ASSERT (wc == (btowc (c) == 0xDF00 + c ? btowc (c) : c));
+ ASSERT (mbsinit (&state));
+
+ ret = mbrtowc (NULL, buf, 1, &state);
+ ASSERT (ret == 1);
+ ASSERT (mbsinit (&state));
+ }
+ }
+ return 0;
+
+ case '2':
/* Locale encoding is ISO-8859-1 or ISO-8859-15. */
{
char input[] = "B\374\337er"; /* "Büßer" */
@@ -180,7 +218,7 @@ main (int argc, char *argv[])
}
return 0;
- case '2':
+ case '3':
/* Locale encoding is UTF-8. */
{
char input[] = "B\303\274\303\237er"; /* "Büßer" */
@@ -235,7 +273,7 @@ main (int argc, char *argv[])
}
return 0;
- case '3':
+ case '4':
/* Locale encoding is EUC-JP. */
{
char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
@@ -291,7 +329,7 @@ main (int argc, char *argv[])
}
return 0;
- case '4':
+ case '5':
/* Locale encoding is GB18030. */
{
char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
@@ -347,10 +385,6 @@ main (int argc, char *argv[])
ASSERT (mbsinit (&state));
}
return 0;
-
- case '5':
- /* C locale; tested above. */
- return 0;
}
return 1;
diff --git a/tests/test-mbrtowc5.sh b/tests/test-mbrtowc5.sh
deleted file mode 100755
index 490496de..00000000
--- a/tests/test-mbrtowc5.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-# Test whether the POSIX locale has encoding errors.
-LC_ALL=C \
-${CHECKER} ./test-mbrtowc${EXEEXT} 5 || exit
-LC_ALL=POSIX \
-${CHECKER} ./test-mbrtowc${EXEEXT} 5
diff --git a/tests/test-mbsinit.c b/tests/test-mbsinit.c
index 699701eb..0250894d 100644
--- a/tests/test-mbsinit.c
+++ b/tests/test-mbsinit.c
@@ -1,5 +1,5 @@
/* Test of test for initial conversion state.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-memchr.c b/tests/test-memchr.c
index 8a2d3de4..c43ce9ff 100644
--- a/tests/test-memchr.c
+++ b/tests/test-memchr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ * Copyright (C) 2008-2024 Free Software Foundation, Inc.
* Written by Eric Blake and Bruno Haible
*
* This program is free software: you can redistribute it and/or modify
diff --git a/tests/test-nanosleep.c b/tests/test-nanosleep.c
index c2081615..c3953843 100644
--- a/tests/test-nanosleep.c
+++ b/tests/test-nanosleep.c
@@ -1,5 +1,5 @@
/* Test of nanosleep() function.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-netinet_in.c b/tests/test-netinet_in.c
index 3bc110e5..6842821e 100644
--- a/tests/test-netinet_in.c
+++ b/tests/test-netinet_in.c
@@ -1,5 +1,5 @@
/* Test of <netinet/in.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-once.c b/tests/test-once.c
index 5efe7c4a..70f54c02 100644
--- a/tests/test-once.c
+++ b/tests/test-once.c
@@ -1,5 +1,5 @@
/* Test of once-only execution in multithreaded situations.
- Copyright (C) 2018-2022 Free Software Foundation, Inc.
+ Copyright (C) 2018-2024 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
diff --git a/tests/test-open.c b/tests/test-open.c
index d7c5a086..52e72be9 100644
--- a/tests/test-open.c
+++ b/tests/test-open.c
@@ -1,5 +1,5 @@
/* Test of opening a file descriptor.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-open.h b/tests/test-open.h
index 0da20a17..05764356 100644
--- a/tests/test-open.h
+++ b/tests/test-open.h
@@ -1,5 +1,5 @@
/* Test of opening a file descriptor.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -16,6 +16,11 @@
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+/* Tell GCC not to warn about the specific edge cases tested here. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-leak"
+#endif
+
/* Make test_open always inline if we're using Fortify, which defines
__always_inline to do that. Do nothing otherwise. This works
around a glibc bug whereby 'open' cannot be used as a function
diff --git a/tests/test-pathmax.c b/tests/test-pathmax.c
index 5f1f9cc2..a80ee065 100644
--- a/tests/test-pathmax.c
+++ b/tests/test-pathmax.c
@@ -1,5 +1,5 @@
/* Test of "pathmax.h".
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-perror.c b/tests/test-perror.c
index e1ab3d6b..aba12fa1 100644
--- a/tests/test-perror.c
+++ b/tests/test-perror.c
@@ -1,5 +1,5 @@
/* Test of perror() function.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-perror2.c b/tests/test-perror2.c
index f1eb5110..edf1d15f 100644
--- a/tests/test-perror2.c
+++ b/tests/test-perror2.c
@@ -1,5 +1,5 @@
/* Test of perror() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -22,6 +22,11 @@
#include <string.h>
#include <unistd.h>
+/* Tell GCC not to warn about myerr being leaked. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-leak"
+#endif
+
/* This test intentionally parses stderr. So, we arrange to have fd 10
(outside the range of interesting fd's during the test) set up to
duplicate the original stderr. */
diff --git a/tests/test-pipe.c b/tests/test-pipe.c
index 0525f7d4..e9ebe162 100644
--- a/tests/test-pipe.c
+++ b/tests/test-pipe.c
@@ -1,5 +1,5 @@
/* Test of pipe.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-printf-frexp.c b/tests/test-printf-frexp.c
index 01b34a51..e3aa7caf 100644
--- a/tests/test-printf-frexp.c
+++ b/tests/test-printf-frexp.c
@@ -1,5 +1,5 @@
/* Test of splitting a double into fraction and mantissa.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-printf-frexpl.c b/tests/test-printf-frexpl.c
index bc30fd1b..dd39fe84 100644
--- a/tests/test-printf-frexpl.c
+++ b/tests/test-printf-frexpl.c
@@ -1,5 +1,5 @@
/* Test of splitting a 'long double' into fraction and mantissa.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-pselect.c b/tests/test-pselect.c
index 898578be..2f239ddf 100644
--- a/tests/test-pselect.c
+++ b/tests/test-pselect.c
@@ -1,5 +1,5 @@
/* Test of pselect() substitute.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -24,6 +24,7 @@ SIGNATURE_CHECK (pselect, int,
(int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
struct timespec const *restrict, const sigset_t *restrict));
+#define TEST_PORT 12347
#include "test-select.h"
static int
diff --git a/tests/test-pthread-thread.c b/tests/test-pthread-thread.c
index 3c08084d..f0a19793 100644
--- a/tests/test-pthread-thread.c
+++ b/tests/test-pthread-thread.c
@@ -1,5 +1,5 @@
/* Test of pthread_create () function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -33,7 +33,7 @@ static pthread_t worker_thread;
static volatile int work_done;
static void *
-worker_thread_func (void *arg)
+worker_thread_func (_GL_UNUSED void *arg)
{
work_done = 1;
return MAGIC;
diff --git a/tests/test-pthread.c b/tests/test-pthread.c
index 2fef5924..f7e89c66 100644
--- a/tests/test-pthread.c
+++ b/tests/test-pthread.c
@@ -1,5 +1,5 @@
/* Test of <pthread.h> substitute.
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 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
diff --git a/tests/test-pthread_sigmask1.c b/tests/test-pthread_sigmask1.c
index a7816b5e..a4f9ba6d 100644
--- a/tests/test-pthread_sigmask1.c
+++ b/tests/test-pthread_sigmask1.c
@@ -1,5 +1,5 @@
/* Test of pthread_sigmask in a single-threaded program.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -24,6 +24,7 @@
SIGNATURE_CHECK (pthread_sigmask, int, (int, const sigset_t *, sigset_t *));
#include <errno.h>
+#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -35,16 +36,16 @@ SIGNATURE_CHECK (pthread_sigmask, int, (int, const sigset_t *, sigset_t *));
static volatile int sigint_occurred;
static void
-sigint_handler (int sig)
+sigint_handler (_GL_UNUSED int sig)
{
sigint_occurred++;
}
int
-main (int argc, char *argv[])
+main ()
{
sigset_t set;
- int pid = getpid ();
+ intmax_t pid = getpid ();
char command[80];
signal (SIGINT, sigint_handler);
@@ -59,7 +60,7 @@ main (int argc, char *argv[])
ASSERT (pthread_sigmask (SIG_BLOCK, &set, NULL) == 0);
/* Request a SIGINT signal from outside. */
- sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, pid);
+ sprintf (command, "sh -c 'sleep 1; kill -INT %"PRIdMAX"' &", pid);
ASSERT (system (command) == 0);
/* Wait. */
diff --git a/tests/test-pthread_sigmask2.c b/tests/test-pthread_sigmask2.c
index 20349fe0..d527eb8d 100644
--- a/tests/test-pthread_sigmask2.c
+++ b/tests/test-pthread_sigmask2.c
@@ -1,5 +1,5 @@
/* Test of pthread_sigmask in a multi-threaded program.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -33,7 +33,7 @@ static pthread_t main_thread;
static pthread_t killer_thread;
static void *
-killer_thread_func (void *arg)
+killer_thread_func (_GL_UNUSED void *arg)
{
sleep (1);
pthread_kill (main_thread, SIGINT);
@@ -43,13 +43,13 @@ killer_thread_func (void *arg)
static volatile int sigint_occurred;
static void
-sigint_handler (int sig)
+sigint_handler (_GL_UNUSED int sig)
{
sigint_occurred++;
}
int
-main (int argc, char *argv[])
+main ()
{
sigset_t set;
diff --git a/tests/test-raise.c b/tests/test-raise.c
index b1a3c8a4..39ffdc30 100644
--- a/tests/test-raise.c
+++ b/tests/test-raise.c
@@ -1,5 +1,5 @@
/* Test raising a signal.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -26,11 +26,11 @@ SIGNATURE_CHECK (raise, int, (int));
#include "macros.h"
-/* It is safe to use _Noreturn here: exit() never returns, and GCC knows that
- exit() is a non-returning function, even on platforms where its declaration
- in <stdlib.h> does not have the 'noreturn' attribute. */
+/* It is safe to use _Noreturn here: _exit() never returns, and GCC knows that
+ _exit() is a non-returning function, even on platforms where its declaration
+ in <unistd.h> does not have the 'noreturn' attribute. */
static _Noreturn void
-handler (int sig)
+handler (_GL_UNUSED int sig)
{
_exit (0);
}
diff --git a/tests/test-random-mt.c b/tests/test-random-mt.c
new file mode 100644
index 00000000..4e2f2d37
--- /dev/null
+++ b/tests/test-random-mt.c
@@ -0,0 +1,169 @@
+/* Multithread-safety test for random().
+ Copyright (C) 2023-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+#include <config.h>
+
+#if USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS
+
+/* Whether to help the scheduler through explicit yield().
+ Uncomment this to see if the operating system has a fair scheduler. */
+#define EXPLICIT_YIELD 1
+
+/* Number of simultaneous threads. */
+#define THREAD_COUNT 4
+
+/* Number of random() invocations operations performed in each thread.
+ This value is chosen so that the unit test terminates quickly.
+ To reliably determine whether a random() implementation is multithread-safe,
+ set REPEAT_COUNT to 1000000 and run the test 100 times:
+ $ for i in `seq 100`; do ./test-random-mt; done
+ */
+#define REPEAT_COUNT 100000
+
+/* Specification. */
+#include <stdlib.h>
+
+#include <stdio.h>
+
+#if EXPLICIT_YIELD
+# include <sched.h>
+#endif
+
+#include "glthread/thread.h"
+#include "xalloc.h"
+
+#if EXPLICIT_YIELD
+# define yield() sched_yield ()
+#else
+# define yield()
+#endif
+
+/* This test runs REPEAT_COUNT invocations of random() in each thread and stores
+ the result, then compares the first REPEAT_COUNT among these
+ THREAD_COUNT * REPEAT_COUNT
+ random numbers against a precomputed sequence with the same seed. */
+
+static void *
+random_invocator_thread (void *arg)
+{
+ long *storage = (long *) arg;
+ int repeat;
+
+ for (repeat = 0; repeat < REPEAT_COUNT; repeat++)
+ {
+ storage[repeat] = random ();
+ yield ();
+ }
+
+ return NULL;
+}
+
+int
+main ()
+{
+ unsigned int seed = 19891109;
+
+ /* First, get the expected sequence of random() results. */
+ srandom (seed);
+ long *expected = XNMALLOC (REPEAT_COUNT, long);
+ {
+ int repeat;
+ for (repeat = 0; repeat < REPEAT_COUNT; repeat++)
+ expected[repeat] = random ();
+ }
+
+ /* Then, run REPEAT_COUNT invocations of random() each, in THREAD_COUNT
+ separate threads. */
+ gl_thread_t threads[THREAD_COUNT];
+ long *thread_results[THREAD_COUNT];
+ srandom (seed);
+ {
+ int i;
+ for (i = 0; i < THREAD_COUNT; i++)
+ thread_results[i] = XNMALLOC (REPEAT_COUNT, long);
+ for (i = 0; i < THREAD_COUNT; i++)
+ threads[i] =
+ gl_thread_create (random_invocator_thread, thread_results[i]);
+ }
+
+ /* Wait for the threads to terminate. */
+ {
+ int i;
+ for (i = 0; i < THREAD_COUNT; i++)
+ gl_thread_join (threads[i], NULL);
+ }
+
+ /* Finally, determine whether the threads produced the same sequence of
+ random() results. */
+ {
+ int expected_index;
+ int result_index[THREAD_COUNT];
+ int i;
+
+ for (i = 0; i < THREAD_COUNT; i++)
+ result_index[i] = 0;
+
+ for (expected_index = 0; expected_index < REPEAT_COUNT; expected_index++)
+ {
+ long expected_value = expected[expected_index];
+
+ for (i = 0; i < THREAD_COUNT; i++)
+ {
+ if (thread_results[i][result_index[i]] == expected_value)
+ {
+ result_index[i]++;
+ break;
+ }
+ }
+ if (i == THREAD_COUNT)
+ {
+ if (expected_index == 0)
+ {
+ /* This occurs on platforms like OpenBSD, where srandom() has no
+ effect and random() always return non-deterministic values.
+ Mark the test as SKIP. */
+ fprintf (stderr, "Skipping test: random() is non-deterministic.\n");
+ return 77;
+ }
+ else
+ {
+ fprintf (stderr, "Expected value #%d not found in multithreaded results.\n",
+ expected_index);
+ return 1;
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+#else
+
+/* No multithreading available. */
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fputs ("Skipping test: multithreading not enabled\n", stderr);
+ return 77;
+}
+
+#endif
diff --git a/tests/test-random.c b/tests/test-random.c
new file mode 100644
index 00000000..4bfc1b84
--- /dev/null
+++ b/tests/test-random.c
@@ -0,0 +1,49 @@
+/* Test random.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (srandom, void, (unsigned int));
+SIGNATURE_CHECK (initstate, char *, (unsigned int, char *, size_t));
+SIGNATURE_CHECK (setstate, char *, (char *));
+SIGNATURE_CHECK (random, long, (void));
+
+#include <time.h>
+
+#include "macros.h"
+
+int
+main ()
+{
+ char buf[128];
+ unsigned int i;
+ unsigned int n_big = 0;
+
+ initstate (time (NULL), buf, sizeof buf);
+ for (i = 0; i < 1000; i++)
+ {
+ long r = random ();
+ ASSERT (0 <= r);
+ if (RAND_MAX / 2 < r)
+ ++n_big;
+ }
+
+ /* Fail if none of the numbers were larger than RAND_MAX / 2. */
+ return !n_big;
+}
diff --git a/tests/test-random_r.c b/tests/test-random_r.c
new file mode 100644
index 00000000..19f570d7
--- /dev/null
+++ b/tests/test-random_r.c
@@ -0,0 +1,68 @@
+/* Test random_r.
+ Copyright (C) 2008-2024 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 <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (srandom_r, int, (unsigned int, struct random_data *));
+SIGNATURE_CHECK (initstate_r, int, (unsigned int, char *, size_t,
+ struct random_data *));
+SIGNATURE_CHECK (setstate_r, int, (char *, struct random_data *));
+SIGNATURE_CHECK (random_r, int, (struct random_data *, int32_t *));
+
+#include <time.h>
+
+#include "macros.h"
+
+/* Note: This test crashes on glibc/SPARC systems.
+ Reported at <https://sourceware.org/bugzilla/show_bug.cgi?id=30584>. */
+
+static int
+test_failed (int alignment)
+{
+ struct random_data rand_state;
+ char buf[128 + sizeof (int32_t)];
+ unsigned int i;
+ unsigned int n_big = 0;
+
+ rand_state.state = NULL;
+ if (initstate_r (time (NULL), buf + alignment, sizeof buf - alignment,
+ &rand_state))
+ return 1;
+ for (i = 0; i < 1000; i++)
+ {
+ int32_t r;
+ ASSERT (random_r (&rand_state, &r) == 0);
+ ASSERT (0 <= r);
+ if (RAND_MAX / 2 < r)
+ ++n_big;
+ }
+
+ /* Fail if none of the numbers were larger than RAND_MAX / 2. */
+ return !n_big;
+}
+
+int
+main ()
+{
+ int alignment;
+ for (alignment = 0; alignment < sizeof (int32_t); alignment++)
+ if (test_failed (alignment))
+ return 1;
+ return 0;
+}
diff --git a/tests/test-realloc-gnu.c b/tests/test-realloc-gnu.c
index c3bca67a..54832ee8 100644
--- a/tests/test-realloc-gnu.c
+++ b/tests/test-realloc-gnu.c
@@ -1,5 +1,5 @@
/* Test of realloc function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
@@ -25,7 +25,7 @@
#include "macros.h"
int
-main (int argc, char **argv)
+main (int argc, _GL_UNUSED char **argv)
{
/* Check that realloc (NULL, 0) is not a NULL pointer. */
void *volatile p = realloc (NULL, 0);
diff --git a/tests/test-reallocarray.c b/tests/test-reallocarray.c
index b830361d..fb9171ce 100644
--- a/tests/test-reallocarray.c
+++ b/tests/test-reallocarray.c
@@ -1,5 +1,5 @@
/* Test of reallocarray function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/test-rwlock1.c b/tests/test-rwlock1.c
index a9c0aa53..4275382c 100644
--- a/tests/test-rwlock1.c
+++ b/tests/test-rwlock1.c
@@ -1,5 +1,5 @@
/* Test of glthread_rwlock_rdlock function.
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
+ Copyright (C) 2017-2024 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
@@ -73,7 +73,7 @@ static gl_thread_t timer;
static gl_lock_t baton;
static void *
-timer_func (void *ignored)
+timer_func (_GL_UNUSED void *ignored)
{
/* Step 13 (can be before or after step 12):
The timer thread takes the baton, then waits a moment to make sure
@@ -87,7 +87,7 @@ timer_func (void *ignored)
}
static void *
-reader2_func (void *ignored)
+reader2_func (_GL_UNUSED void *ignored)
{
int err;
@@ -113,7 +113,7 @@ reader2_func (void *ignored)
}
static void *
-writer_func (void *ignored)
+writer_func (_GL_UNUSED void *ignored)
{
/* Step 4: Take the baton, so that the second reader thread does not go ahead
too early. */
diff --git a/tests/test-sched.c b/tests/test-sched.c
index 1326815b..afefc7d5 100644
--- a/tests/test-sched.c
+++ b/tests/test-sched.c
@@ -1,5 +1,5 @@
/* Test of <sched.h> substitute.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-select-fd.c b/tests/test-select-fd.c
index 90699867..b94addd5 100644
--- a/tests/test-select-fd.c
+++ b/tests/test-select-fd.c
@@ -1,5 +1,5 @@
/* Test of select() substitute, reading or writing from a given file descriptor.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-select-in.sh b/tests/test-select-in.sh
index 68176d30..ad86ea25 100755
--- a/tests/test-select-in.sh
+++ b/tests/test-select-in.sh
@@ -5,7 +5,7 @@
# of /dev/null.
tmpfiles=""
-trap 'rm -fr $tmpfiles' 1 2 3 15
+trap 'rm -fr $tmpfiles' HUP INT QUIT TERM
tmpfiles="$tmpfiles t-select-in.tmp"
diff --git a/tests/test-select-out.sh b/tests/test-select-out.sh
index dbeace50..cfa5e179 100755
--- a/tests/test-select-out.sh
+++ b/tests/test-select-out.sh
@@ -2,7 +2,7 @@
# Test select() on file descriptors opened for writing.
tmpfiles=""
-trap 'rm -fr $tmpfiles' 1 2 3 15
+trap 'rm -fr $tmpfiles' HUP INT QUIT TERM
tmpfiles="$tmpfiles t-select-out.out t-select-out.tmp"
diff --git a/tests/test-select-stdin.c b/tests/test-select-stdin.c
index bf7e82b3..2f8f08aa 100644
--- a/tests/test-select-stdin.c
+++ b/tests/test-select-stdin.c
@@ -1,5 +1,5 @@
/* Test of select() substitute, reading from stdin.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/test-select.c b/tests/test-select.c
index 7cca5517..a75c9244 100644
--- a/tests/test-select.c
+++ b/tests/test-select.c
@@ -1,5 +1,5 @@
/* Test of select() substitute.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -25,6 +25,7 @@
SIGNATURE_CHECK (select, int, (int, fd_set *, fd_set *, fd_set *,
struct timeval *));
+#define TEST_PORT 12346
#include "test-select.h"
int
diff --git a/tests/test-select.h b/tests/test-select.h
index 86a79ad8..4896b674 100644
--- a/tests/test-select.h
+++ b/tests/test-select.h
@@ -1,5 +1,5 @@
/* Test of select() substitute.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -37,8 +37,10 @@
# include <sys/wait.h>
#endif
-#define TEST_PORT 12345
-
+/* Tell GCC not to warn about the specific edge cases tested here. */
+#if __GNUC__ >= 13
+# pragma GCC diagnostic ignored "-Wanalyzer-fd-use-without-check"
+#endif
typedef int (*select_fn) (int, fd_set *, fd_set *, fd_set *, struct timeval *);
diff --git a/tests/test-setenv.c b/tests/test-setenv.c
index 2362c2e1..3b2850e4 100644
--- a/tests/test-setenv.c
+++ b/tests/test-setenv.c
@@ -1,5 +1,5 @@
/* Tests of setenv.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-setlocale1.c b/tests/test-setlocale1.c
index 6e50e657..329991b3 100644
--- a/tests/test-setlocale1.c
+++ b/tests/test-setlocale1.c
@@ -1,5 +1,5 @@
/* Test of setting the current locale.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-setlocale2.c b/tests/test-setlocale2.c
index 905c1939..b64b64ca 100644
--- a/tests/test-setlocale2.c
+++ b/tests/test-setlocale2.c
@@ -1,5 +1,5 @@
/* Test of setting the current locale.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-setlocale_null-mt-all.c b/tests/test-setlocale_null-mt-all.c
index 2739f111..d565aa03 100644
--- a/tests/test-setlocale_null-mt-all.c
+++ b/tests/test-setlocale_null-mt-all.c
@@ -1,5 +1,5 @@
/* Multithread-safety test for setlocale_null_r (LC_ALL, ...).
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 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
@@ -166,7 +166,7 @@ Solaris 11.0 OK
Solaris 11.4 OK
Solaris OpenIndiana OK
Haiku crash < 1 sec
-Cygwin crash < 1 sec
+Cygwin < 3.4.6 crash < 1 sec
mingw OK
MSVC OK (assuming compiler option /MD !)
*/
diff --git a/tests/test-setlocale_null-mt-one.c b/tests/test-setlocale_null-mt-one.c
index 9320efd6..cbd057f9 100644
--- a/tests/test-setlocale_null-mt-one.c
+++ b/tests/test-setlocale_null-mt-one.c
@@ -1,5 +1,5 @@
/* Multithread-safety test for setlocale_null_r (LC_xxx, ...).
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 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
diff --git a/tests/test-setlocale_null-unlocked.c b/tests/test-setlocale_null-unlocked.c
new file mode 100644
index 00000000..d06dec60
--- /dev/null
+++ b/tests/test-setlocale_null-unlocked.c
@@ -0,0 +1,35 @@
+/* Test of setlocale_null_r_unlocked function.
+ Copyright (C) 2019-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2019. */
+
+#include <config.h>
+
+/* Specification. */
+#include "setlocale_null.h"
+
+#include <locale.h>
+
+/* Check that SETLOCALE_NULL_ALL_MAX is a constant expression. */
+static char buf[SETLOCALE_NULL_ALL_MAX];
+
+int
+main ()
+{
+ /* Check that setlocale_null_r_unlocked() can be used without any
+ libraries. */
+ return setlocale_null_r_unlocked (LC_ALL, buf, sizeof (buf)) != 0;
+}
diff --git a/tests/test-setlocale_null.c b/tests/test-setlocale_null.c
index 9b8a663a..72352348 100644
--- a/tests/test-setlocale_null.c
+++ b/tests/test-setlocale_null.c
@@ -1,5 +1,5 @@
/* Test of setlocale_null_r function.
- Copyright (C) 2019-2022 Free Software Foundation, Inc.
+ Copyright (C) 2019-2024 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
@@ -27,6 +27,6 @@ static char buf[SETLOCALE_NULL_ALL_MAX];
int
main ()
{
- /* Check that setlocale_null_r() can be used with $(LIB_SETLOCALE_NULL). */
+ /* Check that setlocale_null_r() can be used with $(SETLOCALE_NULL_LIB). */
return setlocale_null_r (LC_ALL, buf, sizeof (buf)) != 0;
}
diff --git a/tests/test-setsockopt.c b/tests/test-setsockopt.c
index 03376848..75493810 100644
--- a/tests/test-setsockopt.c
+++ b/tests/test-setsockopt.c
@@ -1,5 +1,5 @@
/* Test setsockopt() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-signal-h.c b/tests/test-signal-h.c
index 06c97274..c4b32207 100644
--- a/tests/test-signal-h.c
+++ b/tests/test-signal-h.c
@@ -1,5 +1,5 @@
/* Test of <signal.h> substitute.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-signbit.c b/tests/test-signbit.c
index d1305ce0..da5b7981 100644
--- a/tests/test-signbit.c
+++ b/tests/test-signbit.c
@@ -1,5 +1,5 @@
/* Test of signbit() substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -30,6 +30,8 @@
#include "minus-zero.h"
#include "infinity.h"
+#include "signed-nan.h"
+#include "signed-snan.h"
#include "macros.h"
float zerof = 0.0f;
@@ -56,28 +58,12 @@ test_signbitf ()
ASSERT (!signbit (Infinityf ()));
ASSERT (signbit (- Infinityf ()));
/* Quiet NaN. */
- (void) signbit (zerof / zerof);
-#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
+ ASSERT (!signbit (positive_NaNf ()));
+ ASSERT (signbit (negative_NaNf ()));
+#if HAVE_SNANF
/* Signalling NaN. */
- {
- #define NWORDS \
- ((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
- typedef union { float value; unsigned int word[NWORDS]; } memory_float;
- memory_float m;
- m.value = zerof / zerof;
-# if FLT_EXPBIT0_BIT > 0
- m.word[FLT_EXPBIT0_WORD] ^= (unsigned int) 1 << (FLT_EXPBIT0_BIT - 1);
-# else
- m.word[FLT_EXPBIT0_WORD + (FLT_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
-# endif
- if (FLT_EXPBIT0_WORD < NWORDS / 2)
- m.word[FLT_EXPBIT0_WORD + 1] |= (unsigned int) 1 << FLT_EXPBIT0_BIT;
- else
- m.word[0] |= (unsigned int) 1;
- (void) signbit (m.value);
- #undef NWORDS
- }
+ ASSERT (!signbit (positive_SNaNf ()));
+ ASSERT (signbit (negative_SNaNf ()));
#endif
}
@@ -101,26 +87,12 @@ test_signbitd ()
ASSERT (!signbit (Infinityd ()));
ASSERT (signbit (- Infinityd ()));
/* Quiet NaN. */
- (void) signbit (zerod / zerod);
-#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+ ASSERT (!signbit (positive_NaNd ()));
+ ASSERT (signbit (negative_NaNd ()));
+#if HAVE_SNAND
/* Signalling NaN. */
- {
- #define NWORDS \
- ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
- typedef union { double value; unsigned int word[NWORDS]; } memory_double;
- memory_double m;
- m.value = zerod / zerod;
-# if DBL_EXPBIT0_BIT > 0
- m.word[DBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (DBL_EXPBIT0_BIT - 1);
-# else
- m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
-# endif
- m.word[DBL_EXPBIT0_WORD + (DBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- |= (unsigned int) 1 << DBL_EXPBIT0_BIT;
- (void) signbit (m.value);
- #undef NWORDS
- }
+ ASSERT (!signbit (positive_SNaNd ()));
+ ASSERT (signbit (negative_SNaNd ()));
#endif
}
@@ -144,36 +116,12 @@ test_signbitl ()
ASSERT (!signbit (Infinityl ()));
ASSERT (signbit (- Infinityl ()));
/* Quiet NaN. */
- (void) signbit (zerol / zerol);
-#if defined LDBL_EXPBIT0_WORD && defined LDBL_EXPBIT0_BIT
+ ASSERT (!signbit (positive_NaNl ()));
+ ASSERT (signbit (negative_NaNl ()));
+#if HAVE_SNANL
/* Signalling NaN. */
- {
- #define NWORDS \
- ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
- typedef union { long double value; unsigned int word[NWORDS]; } memory_long_double;
-
-#if defined __powerpc__ && LDBL_MANT_DIG == 106
- /* This is PowerPC "double double", a pair of two doubles. Inf and Nan are
- represented as the corresponding 64-bit IEEE values in the first double;
- the second is ignored. Manipulate only the first double. */
- #undef NWORDS
- #define NWORDS \
- ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
-#endif
-
- memory_long_double m;
- m.value = zerol / zerol;
-# if LDBL_EXPBIT0_BIT > 0
- m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1);
-# else
- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
-# endif
- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)]
- |= (unsigned int) 1 << LDBL_EXPBIT0_BIT;
- (void) signbit (m.value);
- #undef NWORDS
- }
+ ASSERT (!signbit (positive_SNaNl ()));
+ ASSERT (signbit (negative_SNaNl ()));
#endif
}
diff --git a/tests/test-sigprocmask.c b/tests/test-sigprocmask.c
index 4bab4c1c..c712d77d 100644
--- a/tests/test-sigprocmask.c
+++ b/tests/test-sigprocmask.c
@@ -1,5 +1,5 @@
/* Test of sigprocmask.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -24,6 +24,7 @@
SIGNATURE_CHECK (sigprocmask, int, (int, const sigset_t *, sigset_t *));
#include <errno.h>
+#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -35,24 +36,18 @@ SIGNATURE_CHECK (sigprocmask, int, (int, const sigset_t *, sigset_t *));
static volatile int sigint_occurred;
static void
-sigint_handler (int sig)
+sigint_handler (_GL_UNUSED int sig)
{
sigint_occurred++;
}
int
-main (int argc, char *argv[])
+main ()
{
sigset_t set;
- pid_t pid = getpid ();
+ intmax_t pid = getpid ();
char command[80];
- if (sizeof (int) < sizeof pid && 0x7fffffff < pid)
- {
- fputs ("Skipping test: pid too large\n", stderr);
- return 77;
- }
-
signal (SIGINT, sigint_handler);
sigemptyset (&set);
@@ -66,7 +61,7 @@ main (int argc, char *argv[])
ASSERT (sigprocmask (SIG_BLOCK, &set, NULL) == 0);
/* Request a SIGINT signal from outside. */
- sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, (int) pid);
+ sprintf (command, "sh -c 'sleep 1; kill -INT %"PRIdMAX"' &", pid);
ASSERT (system (command) == 0);
/* Wait. */
diff --git a/tests/test-sleep.c b/tests/test-sleep.c
index 37af3525..b0896f2e 100644
--- a/tests/test-sleep.c
+++ b/tests/test-sleep.c
@@ -1,5 +1,5 @@
/* Test of sleep() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-sockets.c b/tests/test-sockets.c
index 714da6c0..5917e4dd 100644
--- a/tests/test-sockets.c
+++ b/tests/test-sockets.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ * Copyright (C) 2008-2024 Free Software Foundation, Inc.
* Written by Simon Josefsson.
*
* This program is free software: you can redistribute it and/or modify
diff --git a/tests/test-stat-time.c b/tests/test-stat-time.c
index 7e961f2f..f28b6c46 100644
--- a/tests/test-stat-time.c
+++ b/tests/test-stat-time.c
@@ -1,5 +1,5 @@
/* Test of <stat-time.h>.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-stat.c b/tests/test-stat.c
index c8a4b984..53ff77d9 100644
--- a/tests/test-stat.c
+++ b/tests/test-stat.c
@@ -1,5 +1,5 @@
/* Tests of stat.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-stat.h b/tests/test-stat.h
index 82f88970..a76f38f9 100644
--- a/tests/test-stat.h
+++ b/tests/test-stat.h
@@ -1,5 +1,5 @@
/* Tests of stat.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -33,16 +33,16 @@ test_stat_func (int (*func) (char const *, struct stat *), bool print)
ASSERT (func (".", &st1) == 0);
ASSERT (func ("./", &st2) == 0);
#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
- ASSERT (SAME_INODE (st1, st2));
+ ASSERT (psame_inode (&st1, &st2));
#endif
ASSERT (func (cwd, &st2) == 0);
#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
- ASSERT (SAME_INODE (st1, st2));
+ ASSERT (psame_inode (&st1, &st2));
#endif
ASSERT (func ("/", &st1) == 0);
ASSERT (func ("///", &st2) == 0);
#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
- ASSERT (SAME_INODE (st1, st2));
+ ASSERT (psame_inode (&st1, &st2));
#endif
errno = 0;
diff --git a/tests/test-stdbool.c b/tests/test-stdbool.c
index 923a2cd3..9322b500 100644
--- a/tests/test-stdbool.c
+++ b/tests/test-stdbool.c
@@ -1,5 +1,5 @@
/* Test bool.
- Copyright (C) 2002-2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2002-2007, 2009-2024 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
@@ -48,7 +48,7 @@
least, not for all compilers and compiler options. */
#if ((HAVE_C_BOOL || defined __cplusplus \
|| HAVE_STDBOOL_H || 3 <= __GNUC__ || 4 <= __clang_major__) \
- && !defined _MSC_VER)
+ && !(defined _MSC_VER || defined __SUNPRO_C))
# define WORKING_BOOL 1
#else
# define WORKING_BOOL 0
diff --git a/tests/test-stdckdint.c b/tests/test-stdckdint.c
index c1952551..f0a576f6 100644
--- a/tests/test-stdckdint.c
+++ b/tests/test-stdckdint.c
@@ -1,5 +1,5 @@
/* Test <stdckdint.h>.
- Copyright 2022 Free Software Foundation, Inc.
+ Copyright 2022-2024 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
diff --git a/tests/test-stddef.c b/tests/test-stddef.c
index 470c7a6b..5bceb18a 100644
--- a/tests/test-stddef.c
+++ b/tests/test-stddef.c
@@ -1,5 +1,5 @@
/* Test of <stddef.h> substitute.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -19,14 +19,12 @@
#include <config.h>
#include <stddef.h>
-#include <limits.h>
-#include <stdalign.h>
/* Check that appropriate types are defined. */
wchar_t a = 'c';
ptrdiff_t b = 1;
size_t c = 2;
-max_align_t x;
+max_align_t mat;
/* Check that NULL can be passed through varargs as a pointer type,
per POSIX 2008. */
@@ -45,10 +43,6 @@ struct d
static_assert (sizeof (offsetof (struct d, e)) == sizeof (size_t));
static_assert (offsetof (struct d, f) == 1);
-/* offsetof promotes to an unsigned integer if and only if sizes do
- not fit in int. */
-static_assert ((offsetof (struct d, e) < -1) == (INT_MAX < (size_t) -1));
-
/* Check max_align_t's alignment. */
static_assert (alignof (double) <= alignof (max_align_t));
static_assert (alignof (int) <= alignof (max_align_t));
@@ -69,6 +63,36 @@ static_assert (__alignof__ (wchar_t) <= __alignof__ (max_align_t));
static_assert (__alignof__ (struct d) <= __alignof__ (max_align_t));
#endif
+int test_unreachable_optimization (int x);
+_Noreturn void test_unreachable_noreturn (void);
+
+int
+test_unreachable_optimization (int x)
+{
+ /* Check that the compiler uses 'unreachable' for optimization.
+ This function, when compiled with optimization, should have code
+ equivalent to
+ return x + 3;
+ Use 'objdump --disassemble test-stddef.o' to verify this. */
+ if (x < 4)
+ unreachable ();
+ return (x > 1 ? x + 3 : 2 * x + 10);
+}
+
+_Noreturn void
+test_unreachable_noreturn (void)
+{
+ /* Check that the compiler's data-flow analysis recognizes 'unreachable ()'.
+ This function should not elicit a warning. */
+ unreachable ();
+}
+
+#include <limits.h> /* INT_MAX */
+
+/* offsetof promotes to an unsigned integer if and only if sizes do
+ not fit in int. */
+static_assert ((offsetof (struct d, e) < -1) == (INT_MAX < (size_t) -1));
+
int
main (void)
{
diff --git a/tests/test-stdint.c b/tests/test-stdint.c
index 7d71f687..47bedc89 100644
--- a/tests/test-stdint.c
+++ b/tests/test-stdint.c
@@ -1,5 +1,5 @@
/* Test of <stdint.h> substitute.
- Copyright (C) 2006-2022 Free Software Foundation, Inc.
+ Copyright (C) 2006-2024 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
@@ -216,22 +216,24 @@ err or;
/* 7.18.1.4. Integer types capable of holding object pointers */
/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+#ifdef INTPTR_MAX
intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX };
verify (sizeof (void *) <= sizeof (intptr_t));
+# ifndef __CHERI_PURE_CAPABILITY__
verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN);
verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX);
+# endif
verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0);
verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0);
+#endif
+#ifdef UINTPTR_MAX
uintptr_t h[2] = { 17, UINTPTR_MAX };
verify (sizeof (void *) <= sizeof (uintptr_t));
+# ifndef __CHERI_PURE_CAPABILITY__
verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX);
+# endif
verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0);
-
-#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX
-/* ok */
-#else
-err or;
#endif
/* 7.18.1.5. Greatest-width integer types */
@@ -408,8 +410,14 @@ verify_width (INT_FAST32_WIDTH, INT_FAST32_MIN, INT_FAST32_MAX);
verify_width (UINT_FAST32_WIDTH, 0, UINT_FAST32_MAX);
verify_width (INT_FAST64_WIDTH, INT_FAST64_MIN, INT_FAST64_MAX);
verify_width (UINT_FAST64_WIDTH, 0, UINT_FAST64_MAX);
+#ifndef __CHERI_PURE_CAPABILITY__
+# ifdef INTPTR_WIDTH
verify_width (INTPTR_WIDTH, INTPTR_MIN, INTPTR_MAX);
+# endif
+# ifdef UINTPTR_WIDTH
verify_width (UINTPTR_WIDTH, 0, UINTPTR_MAX);
+# endif
+#endif
verify_width (INTMAX_WIDTH, INTMAX_MIN, INTMAX_MAX);
verify_width (UINTMAX_WIDTH, 0, UINTMAX_MAX);
verify_width (PTRDIFF_WIDTH, PTRDIFF_MIN, PTRDIFF_MAX);
diff --git a/tests/test-stdio.c b/tests/test-stdio.c
index 1908da35..49969520 100644
--- a/tests/test-stdio.c
+++ b/tests/test-stdio.c
@@ -1,5 +1,5 @@
/* Test of <stdio.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -23,6 +23,9 @@
/* Check that the various SEEK_* macros are defined. */
int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
+/* Check that the _PRINTF_NAN_LEN_MAX macro is defined. */
+int pnlm[] = { _PRINTF_NAN_LEN_MAX };
+
/* Check that NULL can be passed through varargs as a pointer type,
per POSIX 2008. */
static_assert (sizeof NULL == sizeof (void *));
@@ -34,8 +37,57 @@ size_t t3;
ssize_t t4;
va_list t5;
+#include <string.h>
+
+#include "signed-nan.h"
+#include "signed-snan.h"
+#include "macros.h"
+
int
main (void)
{
+ {
+ double value1;
+ char buf[64];
+
+ value1 = positive_NaNd();
+ sprintf (buf, "%g", value1);
+ ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX);
+
+ value1 = negative_NaNd();
+ sprintf (buf, "%g", value1);
+ ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX);
+ }
+#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
+ /* Check the value of _PRINTF_NAN_LEN_MAX. */
+ {
+ double value1;
+ memory_double value2;
+ char buf[64];
+
+ value1 = positive_SNaNd();
+ sprintf (buf, "%g", value1);
+ ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX);
+
+ value1 = negative_SNaNd();
+ sprintf (buf, "%g", value1);
+ ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX);
+
+ value2.value = positive_NaNd ();
+ #if DBL_EXPBIT0_BIT == 20
+ value2.word[DBL_EXPBIT0_WORD] ^= 0x54321;
+ #endif
+ sprintf (buf, "%g", value2.value);
+ ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX);
+
+ value2.value = negative_NaNd ();
+ #if DBL_EXPBIT0_BIT == 20
+ value2.word[DBL_EXPBIT0_WORD] ^= 0x54321;
+ #endif
+ sprintf (buf, "%g", value2.value);
+ ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX);
+ }
+#endif
+
return 0;
}
diff --git a/tests/test-stdlib.c b/tests/test-stdlib.c
index 4fdafc99..cb6db802 100644
--- a/tests/test-stdlib.c
+++ b/tests/test-stdlib.c
@@ -1,5 +1,5 @@
/* Test of <stdlib.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -45,8 +45,19 @@ static_assert (sizeof NULL == sizeof (void *));
int
main (void)
{
- if (test_sys_wait_macros ())
+ /* POSIX:2018 says:
+ "In the POSIX locale the value of MB_CUR_MAX shall be 1." */
+ /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the
+ "C" locale. Furthermore, when you attempt to set the "C" or "POSIX"
+ locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
+ that is, effectively the "C.UTF-8" locale. */
+#ifndef __ANDROID__
+ if (MB_CUR_MAX != 1)
return 1;
+#endif
+
+ if (test_sys_wait_macros ())
+ return 2;
return exitcode;
}
diff --git a/tests/test-strerror.c b/tests/test-strerror.c
index b9ec040a..3074b5cd 100644
--- a/tests/test-strerror.c
+++ b/tests/test-strerror.c
@@ -1,5 +1,5 @@
/* Test of strerror() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-strerror_r.c b/tests/test-strerror_r.c
index 916ce3fc..4b4e27f4 100644
--- a/tests/test-strerror_r.c
+++ b/tests/test-strerror_r.c
@@ -1,5 +1,5 @@
/* Test of strerror_r() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-striconveh.c b/tests/test-striconveh.c
index 15627f3d..71dfc3f7 100644
--- a/tests/test-striconveh.c
+++ b/tests/test-striconveh.c
@@ -1,5 +1,5 @@
/* Test of character set conversion with error handling.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -68,7 +68,7 @@ main ()
iconv_t cd_88592_to_utf8 = iconv_open ("UTF-8", "ISO-8859-2");
iconv_t cd_utf8_to_88592 = iconv_open ("ISO-8859-2", "UTF-8");
iconv_t cd_utf7_to_utf8 = iconv_open ("UTF-8", "UTF-7");
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
iconv_t cd_ascii_to_gb18030 = iconv_open ("GB18030", "ASCII");
iconv_t cd_utf8_to_gb18030 = iconv_open ("GB18030", "UTF-8");
iconv_t cd_88591_to_gb18030 = iconv_open ("GB18030", "ISO-8859-1");
@@ -82,7 +82,7 @@ main ()
iconveh_t cdeh_88591_to_utf8;
iconveh_t cdeh_utf8_to_88591;
iconveh_t cdeh_utf7_to_utf8;
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
iconveh_t cdeh_ascii_to_gb18030;
iconveh_t cdeh_88591_to_gb18030;
iconveh_t cdeh_utf7_to_gb18030;
@@ -93,7 +93,7 @@ main ()
ASSERT (cd_utf8_to_88591 != (iconv_t)(-1));
ASSERT (cd_88592_to_utf8 != (iconv_t)(-1));
ASSERT (cd_utf8_to_88592 != (iconv_t)(-1));
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
ASSERT (cd_ascii_to_gb18030 != (iconv_t)(-1));
ASSERT (cd_utf8_to_gb18030 != (iconv_t)(-1));
# endif
@@ -130,7 +130,7 @@ main ()
cdeh_utf7_to_utf8.cd1 = cd_utf7_to_utf8;
cdeh_utf7_to_utf8.cd2 = (iconv_t)(-1);
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
cdeh_ascii_to_gb18030.cd = cd_ascii_to_gb18030;
cdeh_ascii_to_gb18030.cd1 = cd_ascii_to_utf8;
cdeh_ascii_to_gb18030.cd2 = cd_utf8_to_gb18030;
@@ -330,7 +330,7 @@ main ()
}
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
/* Test conversion from ISO-8859-1 to GB18030 with no errors. */
for (h = 0; h < SIZEOF (handlers); h++)
{
@@ -462,8 +462,10 @@ main ()
}
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
- /* Test conversion from ASCII to GB18030 with invalid input (EILSEQ). */
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || ((__GLIBC__ + (__GLIBC_MINOR__ >= 16) > 2) && !defined __UCLIBC__)
+ /* Test conversion from ASCII to GB18030 with invalid input (EILSEQ).
+ Note: glibc's GB18030 converter was buggy in glibc-2.15; fixed by
+ Andreas Schwab on 2012-02-06. */
for (h = 0; h < SIZEOF (handlers); h++)
{
enum iconv_ilseq_handler handler = handlers[h];
@@ -646,7 +648,7 @@ main ()
free (result);
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
/* Test conversion from UTF-7 to GB18030 with EINVAL. */
for (h = 0; h < SIZEOF (handlers); h++)
{
@@ -746,8 +748,10 @@ main ()
}
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
- /* Test conversion from UTF-7 to GB18030 with EILSEQ. */
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || ((__GLIBC__ + (__GLIBC_MINOR__ >= 16) > 2) && !defined __UCLIBC__)
+ /* Test conversion from UTF-7 to GB18030 with EILSEQ.
+ Note: glibc's GB18030 converter was buggy in glibc-2.15; fixed by
+ Andreas Schwab on 2012-02-06. */
for (h = 0; h < SIZEOF (handlers); h++)
{
enum iconv_ilseq_handler handler = handlers[h];
@@ -922,7 +926,7 @@ main ()
free (result);
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
/* Test conversion from ISO-8859-1 to GB18030 with no errors. */
for (h = 0; h < SIZEOF (handlers); h++)
{
@@ -985,8 +989,10 @@ main ()
}
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
- /* Test conversion from ASCII to GB18030 with invalid input (EILSEQ). */
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || ((__GLIBC__ + (__GLIBC_MINOR__ >= 16) > 2) && !defined __UCLIBC__)
+ /* Test conversion from ASCII to GB18030 with invalid input (EILSEQ).
+ Note: glibc's GB18030 converter was buggy in glibc-2.15; fixed by
+ Andreas Schwab on 2012-02-06. */
for (h = 0; h < SIZEOF (handlers); h++)
{
enum iconv_ilseq_handler handler = handlers[h];
@@ -1201,7 +1207,7 @@ main ()
}
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
/* Test conversion from ISO-8859-1 to GB18030 with no errors. */
for (h = 0; h < SIZEOF (handlers); h++)
{
@@ -1421,7 +1427,7 @@ main ()
free (result);
}
-# if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) || (defined __GLIBC__ && !defined __UCLIBC__)
/* Test conversion from ISO-8859-1 to GB18030 with no errors. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/test-striconveha.c b/tests/test-striconveha.c
index 6f6e8843..376f3cb6 100644
--- a/tests/test-striconveha.c
+++ b/tests/test-striconveha.c
@@ -1,5 +1,5 @@
/* Test of character set conversion with error handling and autodetection.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -308,7 +308,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-8. */
@@ -405,7 +406,7 @@ main ()
}
# endif
-# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) && !defined __UCLIBC__) || _LIBICONV_VERSION >= 0x0105
+# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) && !defined __UCLIBC__) || (_LIBICONV_VERSION >= 0x0105 && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__))
/* Test conversion from UTF-8 to ISO-8859-1 with transliteration. */
for (h = 0; h < SIZEOF (handlers); h++)
{
@@ -547,7 +548,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-8. */
@@ -584,7 +586,7 @@ main ()
}
# endif
-# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) && !defined __UCLIBC__) || _LIBICONV_VERSION >= 0x0105
+# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) && !defined __UCLIBC__) || (_LIBICONV_VERSION >= 0x0105 && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__))
/* Test conversion from UTF-8 to ISO-8859-1 with transliteration. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/test-string.c b/tests/test-string.c
index 94688726..053c2e4a 100644
--- a/tests/test-string.c
+++ b/tests/test-string.c
@@ -1,5 +1,5 @@
/* Test of <string.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-strncat.c b/tests/test-strncat.c
index c25890cb..c2050513 100644
--- a/tests/test-strncat.c
+++ b/tests/test-strncat.c
@@ -1,5 +1,5 @@
/* Test of strncat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/test-strstr.c b/tests/test-strstr.c
index f59dda67..5822a2e6 100644
--- a/tests/test-strstr.c
+++ b/tests/test-strstr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2007-2022 Free Software Foundation, Inc.
+ * Copyright (C) 2004, 2007-2024 Free Software Foundation, Inc.
* Written by Bruno Haible and Eric Blake
*
* This program is free software: you can redistribute it and/or modify
@@ -275,6 +275,14 @@ main (int argc, char *argv[])
free (haystack);
}
+ /* Test case from Yves Bastide.
+ <https://www.openwall.com/lists/musl/2014/04/18/2> */
+ {
+ const char input[] = "playing play play play always";
+ const char *result = strstr (input, "play play play");
+ ASSERT (result == input + 8);
+ }
+
/* Test long needles. */
{
size_t m = 1024;
diff --git a/tests/test-symlink.c b/tests/test-symlink.c
index 3dbd60a0..04c3e7a8 100644
--- a/tests/test-symlink.c
+++ b/tests/test-symlink.c
@@ -1,5 +1,5 @@
/* Tests of symlink.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-symlink.h b/tests/test-symlink.h
index 0ce5ad4a..a63faed7 100644
--- a/tests/test-symlink.h
+++ b/tests/test-symlink.h
@@ -1,5 +1,5 @@
/* Tests of symlink.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-sys_ioctl.c b/tests/test-sys_ioctl.c
index 72c9d49a..4cecce18 100644
--- a/tests/test-sys_ioctl.c
+++ b/tests/test-sys_ioctl.c
@@ -1,5 +1,5 @@
/* Test of <sys/ioctl.h> substitute.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-sys_select.c b/tests/test-sys_select.c
index c895fe2b..db791de1 100644
--- a/tests/test-sys_select.c
+++ b/tests/test-sys_select.c
@@ -1,5 +1,5 @@
/* Test of <sys/select.h> substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -20,6 +20,16 @@
#include <sys/select.h>
+/* Check that the 'struct timeval' type is defined. */
+struct timeval a;
+
+/* Check that a.tv_sec is wide enough to hold a time_t, ignoring
+ signedness issues. */
+typedef int verify_tv_sec_type[sizeof (time_t) <= sizeof (a.tv_sec) ? 1 : -1];
+
+/* Check that sigset_t is defined. */
+sigset_t t2;
+
#include "signature.h"
/* The following may be macros without underlying functions, so only
@@ -37,16 +47,6 @@ SIGNATURE_CHECK (FD_SET, int, (int, fd_set *));
SIGNATURE_CHECK (FD_ZERO, void, (fd_set *));
#endif
-/* Check that the 'struct timeval' type is defined. */
-struct timeval a;
-
-/* Check that a.tv_sec is wide enough to hold a time_t, ignoring
- signedness issues. */
-typedef int verify_tv_sec_type[sizeof (time_t) <= sizeof (a.tv_sec) ? 1 : -1];
-
-/* Check that sigset_t is defined. */
-sigset_t t2;
-
int
main (void)
{
diff --git a/tests/test-sys_socket.c b/tests/test-sys_socket.c
index f230d5b4..4e0f9ad4 100644
--- a/tests/test-sys_socket.c
+++ b/tests/test-sys_socket.c
@@ -1,5 +1,5 @@
/* Test of <sys/socket.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -20,8 +20,6 @@
#include <sys/socket.h>
-#include <errno.h>
-
#if HAVE_SHUTDOWN
/* Check some integer constant expressions. */
int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };
@@ -40,6 +38,8 @@ struct iovec io;
/* Check that a minimal set of 'struct msghdr' is defined. */
struct msghdr msg;
+#include <errno.h>
+
int
main (void)
{
diff --git a/tests/test-sys_stat.c b/tests/test-sys_stat.c
index b404d9f2..7c4ec1fe 100644
--- a/tests/test-sys_stat.c
+++ b/tests/test-sys_stat.c
@@ -1,5 +1,5 @@
/* Test of <sys/stat.h> substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-sys_time.c b/tests/test-sys_time.c
index b952243e..5db5c2c0 100644
--- a/tests/test-sys_time.c
+++ b/tests/test-sys_time.c
@@ -1,5 +1,5 @@
/* Test of <sys/time.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-sys_types.c b/tests/test-sys_types.c
index 290bd0d5..f661a921 100644
--- a/tests/test-sys_types.c
+++ b/tests/test-sys_types.c
@@ -1,5 +1,5 @@
/* Test of <sys/types.h> substitute.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-sys_uio.c b/tests/test-sys_uio.c
index f4f7b7ac..d371471f 100644
--- a/tests/test-sys_uio.c
+++ b/tests/test-sys_uio.c
@@ -1,5 +1,5 @@
/* Test of <sys/uio.h> substitute.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-sys_wait.h b/tests/test-sys_wait.h
index 9becf28e..5f2eec54 100644
--- a/tests/test-sys_wait.h
+++ b/tests/test-sys_wait.h
@@ -1,5 +1,5 @@
/* Test of macros shared between <sys/wait.h> and <stdlib.h>.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/test-thread_create.c b/tests/test-thread_create.c
index 17e6942b..89dc1c9e 100644
--- a/tests/test-thread_create.c
+++ b/tests/test-thread_create.c
@@ -1,5 +1,5 @@
/* Test of gl_thread_create () macro.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -33,7 +33,7 @@ static int dummy;
static volatile int work_done;
static void *
-worker_thread_func (void *arg)
+worker_thread_func (_GL_UNUSED void *arg)
{
work_done = 1;
return &dummy;
diff --git a/tests/test-thread_self.c b/tests/test-thread_self.c
index 30d46380..e494613b 100644
--- a/tests/test-thread_self.c
+++ b/tests/test-thread_self.c
@@ -1,5 +1,5 @@
/* Test of gl_thread_self () macro.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/test-time-h.c b/tests/test-time-h.c
new file mode 100644
index 00000000..01f9fff8
--- /dev/null
+++ b/tests/test-time-h.c
@@ -0,0 +1,43 @@
+/* Test of <time.h> substitute.
+ Copyright (C) 2007, 2009-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <time.h>
+
+/* Check that the types are all defined. */
+struct timespec t1;
+#if 0
+/* POSIX:2008 does not require pid_t in <time.h> unconditionally, and indeed
+ it's missing on Mac OS X 10.5, FreeBSD 6.4, OpenBSD 4.9, mingw. */
+pid_t t2;
+#endif
+
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+static_assert (sizeof NULL == sizeof (void *));
+
+/* Check that TIME_UTC is defined and a positive integer. */
+int t3 = TIME_UTC;
+static_assert (TIME_UTC > 0);
+
+int
+main (void)
+{
+ return 0;
+}
diff --git a/tests/test-time.c b/tests/test-time.c
index 6b69f3d5..752d4c0f 100644
--- a/tests/test-time.c
+++ b/tests/test-time.c
@@ -1,5 +1,5 @@
-/* Test of <time.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+/* Test of time() function.
+ Copyright (C) 2023-2024 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
@@ -14,30 +14,36 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
-/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+/* Written by Bruno Haible. */
#include <config.h>
#include <time.h>
-/* Check that the types are all defined. */
-struct timespec t1;
-#if 0
-/* POSIX:2008 does not require pid_t in <time.h> unconditionally, and indeed
- it's missing on Mac OS X 10.5, FreeBSD 6.4, OpenBSD 4.9, mingw. */
-pid_t t2;
-#endif
+#include "signature.h"
+SIGNATURE_CHECK (time, time_t, (time_t *));
-/* Check that NULL can be passed through varargs as a pointer type,
- per POSIX 2008. */
-static_assert (sizeof NULL == sizeof (void *));
+#include <sys/time.h>
-/* Check that TIME_UTC is defined and a positive integer. */
-int t3 = TIME_UTC;
-static_assert (TIME_UTC > 0);
+#include "macros.h"
int
main (void)
{
+ /* Check consistency of time() with gettimeofday().tv_sec. */
+ struct timeval tv1;
+ struct timeval tv2;
+ time_t tt3;
+
+ /* Wait until gettimeofday() reports an increase in tv_sec. */
+ ASSERT (gettimeofday (&tv1, NULL) == 0);
+ do
+ ASSERT (gettimeofday (&tv2, NULL) == 0);
+ while (tv2.tv_sec == tv1.tv_sec);
+ /* We are now at the beginning of a second. Test whether time() reports
+ the new second or the previous one. */
+ tt3 = time (NULL);
+ ASSERT (tt3 >= tv2.tv_sec);
+
return 0;
}
diff --git a/tests/test-uchar.c b/tests/test-uchar.c
new file mode 100644
index 00000000..dfb368e0
--- /dev/null
+++ b/tests/test-uchar.c
@@ -0,0 +1,57 @@
+/* Test of <uchar.h> substitute.
+ Copyright (C) 2019-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2019. */
+
+#include <config.h>
+
+#include <uchar.h>
+
+/* Check that the types are defined. */
+mbstate_t a = { 0 };
+size_t b = 5;
+char8_t c = 'x';
+char16_t d = 'y';
+char32_t e = 'z';
+
+/* Check that char8_t, char16_t, and char32_t are unsigned types. */
+static_assert ((char8_t)(-1) >= 0);
+static_assert ((char16_t)(-1) >= 0);
+#if !defined __HP_cc
+static_assert ((char32_t)(-1) >= 0);
+#endif
+
+/* Check that char8_t is at least 8 bits wide. */
+static_assert ((char8_t)0xFF != (char8_t)0x7F);
+
+/* Check that char16_t is at least 16 bits wide. */
+static_assert ((char16_t)0xFFFF != (char16_t)0x7FFF);
+
+/* Check that char32_t is at least 31 bits wide. */
+static_assert ((char32_t)0x7FFFFFFF != (char32_t)0x3FFFFFFF);
+
+/* Check that _GL_SMALL_WCHAR_T is correctly defined. */
+#if _GL_SMALL_WCHAR_T
+static_assert (sizeof (wchar_t) < sizeof (char32_t));
+#else
+static_assert (sizeof (wchar_t) == sizeof (char32_t));
+#endif
+
+int
+main (void)
+{
+ return 0;
+}
diff --git a/tests/test-unistd.c b/tests/test-unistd.c
index a59af1e3..931d65e4 100644
--- a/tests/test-unistd.c
+++ b/tests/test-unistd.c
@@ -1,5 +1,5 @@
/* Test of <unistd.h> substitute.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/test-unsetenv.c b/tests/test-unsetenv.c
index 61dbc81a..4e6a19ad 100644
--- a/tests/test-unsetenv.c
+++ b/tests/test-unsetenv.c
@@ -1,5 +1,5 @@
/* Tests of unsetenv.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -32,7 +32,8 @@ SIGNATURE_CHECK (unsetenv, int, (char const *));
int
main (void)
{
- char entry[] = "b=2";
+ /* Static to pacify gcc -Wanalyzer-putenv-of-auto-var. */
+ static char entry[] = "b=2";
/* Test removal when multiple entries present. */
ASSERT (putenv ((char *) "a=1") == 0);
diff --git a/tests/test-usleep.c b/tests/test-usleep.c
index e1133dd6..ba82a162 100644
--- a/tests/test-usleep.c
+++ b/tests/test-usleep.c
@@ -1,5 +1,5 @@
/* Test of usleep() function.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/test-verify-try.c b/tests/test-verify-try.c
index 2456133d..d16fb938 100644
--- a/tests/test-verify-try.c
+++ b/tests/test-verify-try.c
@@ -1,6 +1,6 @@
/* Test the "verify" module.
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
+ Copyright (C) 2017-2024 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
diff --git a/tests/test-verify.c b/tests/test-verify.c
index 4ba89c03..1d8f43c7 100644
--- a/tests/test-verify.c
+++ b/tests/test-verify.c
@@ -1,6 +1,6 @@
/* Test the "verify" module.
- Copyright (C) 2005, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009-2024 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
diff --git a/tests/test-wchar.c b/tests/test-wchar.c
index af7c9486..663a5a4e 100644
--- a/tests/test-wchar.c
+++ b/tests/test-wchar.c
@@ -1,5 +1,5 @@
/* Test of <wchar.h> substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-wcrtomb-w32-1.sh b/tests/test-wcrtomb-w32-1.sh
deleted file mode 100755
index b01c5436..00000000
--- a/tests/test-wcrtomb-w32-1.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Test a CP1252 locale.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} French_France 1252
diff --git a/tests/test-wcrtomb-w32-2.sh b/tests/test-wcrtomb-w32-2.sh
index 5481634d..b01c5436 100755
--- a/tests/test-wcrtomb-w32-2.sh
+++ b/tests/test-wcrtomb-w32-2.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP1256 locale.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
+# Test a CP1252 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} French_France 1252
diff --git a/tests/test-wcrtomb-w32-3.sh b/tests/test-wcrtomb-w32-3.sh
index f35879da..5481634d 100755
--- a/tests/test-wcrtomb-w32-3.sh
+++ b/tests/test-wcrtomb-w32-3.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP932 locale.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} Japanese_Japan 932
+# Test a CP1256 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
diff --git a/tests/test-wcrtomb-w32-4.sh b/tests/test-wcrtomb-w32-4.sh
index 8eec6cbc..fb04e583 100755
--- a/tests/test-wcrtomb-w32-4.sh
+++ b/tests/test-wcrtomb-w32-4.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP950 locale.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_Taiwan 950
+# Test some UTF-8 locales.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
diff --git a/tests/test-wcrtomb-w32-5.sh b/tests/test-wcrtomb-w32-5.sh
index fd47d6fa..f35879da 100755
--- a/tests/test-wcrtomb-w32-5.sh
+++ b/tests/test-wcrtomb-w32-5.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a CP936 locale.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_China 936
+# Test a CP932 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Japanese_Japan 932
diff --git a/tests/test-wcrtomb-w32-6.sh b/tests/test-wcrtomb-w32-6.sh
index 802237d1..8eec6cbc 100755
--- a/tests/test-wcrtomb-w32-6.sh
+++ b/tests/test-wcrtomb-w32-6.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test a GB18030 locale.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_China 54936
+# Test a CP950 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_Taiwan 950
diff --git a/tests/test-wcrtomb-w32-7.sh b/tests/test-wcrtomb-w32-7.sh
index fb04e583..fd47d6fa 100755
--- a/tests/test-wcrtomb-w32-7.sh
+++ b/tests/test-wcrtomb-w32-7.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-# Test some UTF-8 locales.
-${CHECKER} ./test-wcrtomb-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
+# Test a CP936 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_China 936
diff --git a/tests/test-wcrtomb-w32-8.sh b/tests/test-wcrtomb-w32-8.sh
new file mode 100755
index 00000000..802237d1
--- /dev/null
+++ b/tests/test-wcrtomb-w32-8.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_China 54936
diff --git a/tests/test-wcrtomb-w32.c b/tests/test-wcrtomb-w32.c
index 67fa5a31..4be9a0df 100644
--- a/tests/test-wcrtomb-w32.c
+++ b/tests/test-wcrtomb-w32.c
@@ -1,5 +1,5 @@
/* Test of conversion of wide character to multibyte character.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -184,6 +184,26 @@ test_one_locale (const char *name, int codepage)
}
return 0;
+ case 65001:
+ /* Locale encoding is CP65001 = UTF-8. */
+ if (strcmp (locale_charset (), "UTF-8") != 0)
+ return 77;
+ {
+ /* Convert "B\303\274\303\237er": "Büßer" */
+ memset (buf, 'x', 8);
+ ret = wcrtomb (buf, 0x00FC, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\303\274", 2) == 0);
+ ASSERT (buf[2] == 'x');
+
+ memset (buf, 'x', 8);
+ ret = wcrtomb (buf, 0x00DF, NULL);
+ ASSERT (ret == 2);
+ ASSERT (memcmp (buf, "\303\237", 2) == 0);
+ ASSERT (buf[2] == 'x');
+ }
+ return 0;
+
case 932:
/* Locale encoding is CP932, similar to Shift_JIS. */
{
@@ -276,26 +296,6 @@ test_one_locale (const char *name, int codepage)
}
return 0;
- case 65001:
- /* Locale encoding is CP65001 = UTF-8. */
- if (strcmp (locale_charset (), "UTF-8") != 0)
- return 77;
- {
- /* Convert "B\303\274\303\237er": "Büßer" */
- memset (buf, 'x', 8);
- ret = wcrtomb (buf, 0x00FC, NULL);
- ASSERT (ret == 2);
- ASSERT (memcmp (buf, "\303\274", 2) == 0);
- ASSERT (buf[2] == 'x');
-
- memset (buf, 'x', 8);
- ret = wcrtomb (buf, 0x00DF, NULL);
- ASSERT (ret == 2);
- ASSERT (memcmp (buf, "\303\237", 2) == 0);
- ASSERT (buf[2] == 'x');
- }
- return 0;
-
default:
return 1;
}
diff --git a/tests/test-wcrtomb.c b/tests/test-wcrtomb.c
index 71d0faf3..640d6d9c 100644
--- a/tests/test-wcrtomb.c
+++ b/tests/test-wcrtomb.c
@@ -1,5 +1,5 @@
/* Test of conversion of wide character to multibyte character.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -117,6 +117,10 @@ main (int argc, char *argv[])
switch (argv[1][0])
{
case '1':
+ /* C locale; tested above. */
+ return 0;
+
+ case '2':
/* Locale encoding is ISO-8859-1 or ISO-8859-15. */
{
const char input[] = "B\374\337er"; /* "Büßer" */
@@ -126,7 +130,7 @@ main (int argc, char *argv[])
}
return 0;
- case '2':
+ case '3':
/* Locale encoding is UTF-8. */
{
const char input[] = "B\303\274\303\237er"; /* "Büßer" */
@@ -136,7 +140,7 @@ main (int argc, char *argv[])
}
return 0;
- case '3':
+ case '4':
/* Locale encoding is EUC-JP. */
{
const char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
@@ -147,7 +151,7 @@ main (int argc, char *argv[])
}
return 0;
- case '4':
+ case '5':
/* Locale encoding is GB18030. */
{
const char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
@@ -156,10 +160,6 @@ main (int argc, char *argv[])
check_character (input + 3, 4);
}
return 0;
-
- case '5':
- /* C locale; tested above. */
- return 0;
}
return 1;
diff --git a/tests/test-wcrtomb.sh b/tests/test-wcrtomb.sh
index 01d8d53b..b4604612 100755
--- a/tests/test-wcrtomb.sh
+++ b/tests/test-wcrtomb.sh
@@ -1,10 +1,14 @@
#!/bin/sh
+# Test in the POSIX locale.
+LC_ALL=C ${CHECKER} ./test-wcrtomb${EXEEXT} 1 || exit 1
+LC_ALL=POSIX ${CHECKER} ./test-wcrtomb${EXEEXT} 1 || exit 1
+
# Test in an ISO-8859-1 or ISO-8859-15 locale.
: "${LOCALE_FR=fr_FR}"
if test $LOCALE_FR != none; then
LC_ALL=$LOCALE_FR \
- ${CHECKER} ./test-wcrtomb${EXEEXT} 1 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 2 \
|| exit 1
fi
@@ -12,7 +16,7 @@ fi
: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
if test $LOCALE_FR_UTF8 != none; then
LC_ALL=$LOCALE_FR_UTF8 \
- ${CHECKER} ./test-wcrtomb${EXEEXT} 2 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 3 \
|| exit 1
fi
@@ -20,7 +24,7 @@ fi
: "${LOCALE_JA=ja_JP}"
if test $LOCALE_JA != none; then
LC_ALL=$LOCALE_JA \
- ${CHECKER} ./test-wcrtomb${EXEEXT} 3 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 4 \
|| exit 1
fi
@@ -28,12 +32,8 @@ fi
: "${LOCALE_ZH_CN=zh_CN.GB18030}"
if test $LOCALE_ZH_CN != none; then
LC_ALL=$LOCALE_ZH_CN \
- ${CHECKER} ./test-wcrtomb${EXEEXT} 4 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 5 \
|| exit 1
fi
-# Test in the POSIX locale.
-LC_ALL=C ${CHECKER} ./test-wcrtomb${EXEEXT} 5 || exit 1
-LC_ALL=POSIX ${CHECKER} ./test-wcrtomb${EXEEXT} 5 || exit 1
-
exit 0
diff --git a/tests/test-wctype-h.c b/tests/test-wctype-h.c
index 08da56b5..016fd8fc 100644
--- a/tests/test-wctype-h.c
+++ b/tests/test-wctype-h.c
@@ -1,5 +1,5 @@
/* Test of <wctype.h> substitute.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -20,8 +20,6 @@
#include <wctype.h>
-#include "macros.h"
-
/* Check that the type wint_t is defined. */
wint_t a = 'x';
/* Check that WEOF is defined. */
@@ -33,6 +31,8 @@ wctype_t p;
/* Check that the type wctrans_t is defined. */
wctrans_t q;
+#include "macros.h"
+
int
main (void)
{
@@ -62,6 +62,43 @@ main (void)
ASSERT (!iswupper (e));
ASSERT (!iswxdigit (e));
+ /* Sanity check for the iswprint function. */
+ ASSERT (iswprint (L' '));
+ ASSERT (!iswprint (L'\t'));
+ ASSERT (!iswprint (L'\n'));
+
+ /* Sanity check for the iswpunct function.
+ These characters are usually expected to be punctuation or symbol
+ characters. */
+ ASSERT (iswpunct (L'!'));
+ ASSERT (iswpunct (L'"'));
+ ASSERT (iswpunct (L'#'));
+ ASSERT (iswpunct (L'%'));
+ ASSERT (iswpunct (L'&'));
+ ASSERT (iswpunct (L'\''));
+ ASSERT (iswpunct (L'('));
+ ASSERT (iswpunct (L')'));
+ ASSERT (iswpunct (L'*'));
+ ASSERT (iswpunct (L','));
+ ASSERT (iswpunct (L'-'));
+ ASSERT (iswpunct (L'.'));
+ ASSERT (iswpunct (L'/'));
+ ASSERT (iswpunct (L':'));
+ ASSERT (iswpunct (L';'));
+ ASSERT (iswpunct (L'?'));
+ ASSERT (iswpunct (L'@'));
+ ASSERT (iswpunct (L'['));
+ ASSERT (iswpunct (L'\\'));
+ ASSERT (iswpunct (L']'));
+ ASSERT (iswpunct (L'_'));
+ ASSERT (iswpunct (L'{'));
+ ASSERT (iswpunct (L'}'));
+ ASSERT (!iswpunct (L'5'));
+ ASSERT (!iswpunct (L'F'));
+ ASSERT (!iswpunct (L' '));
+ ASSERT (!iswpunct (L'\t'));
+ ASSERT (!iswpunct (L'\n'));
+
/* Check that the tow* functions exist as functions or as macros. */
(void) towlower (0);
(void) towupper (0);
diff --git a/tests/test-wcwidth.c b/tests/test-wcwidth.c
index 7e522eec..79556a24 100644
--- a/tests/test-wcwidth.c
+++ b/tests/test-wcwidth.c
@@ -1,5 +1,5 @@
/* Test of wcwidth() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/test-xalloc-die.c b/tests/test-xalloc-die.c
index 78781306..d4565434 100644
--- a/tests/test-xalloc-die.c
+++ b/tests/test-xalloc-die.c
@@ -1,5 +1,5 @@
/* Test of xalloc_die() function.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -21,7 +21,7 @@
#include "xalloc.h"
int
-main (_GL_UNUSED int argc, char **argv)
+main ()
{
xalloc_die ();
return 0;
diff --git a/tests/test-xalloc-die.sh b/tests/test-xalloc-die.sh
index 2a891110..dedc132c 100755
--- a/tests/test-xalloc-die.sh
+++ b/tests/test-xalloc-die.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Test suite for xalloc_die.
-# Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# Copyright (C) 2009-2024 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
diff --git a/tests/time.c b/tests/time.c
new file mode 100644
index 00000000..573199c2
--- /dev/null
+++ b/tests/time.c
@@ -0,0 +1,41 @@
+/* Provide time() for systems for which it's broken.
+ Copyright (C) 2023-2024 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible. */
+
+#include <config.h>
+
+/* Specification. */
+#include <time.h>
+
+#include <stdlib.h>
+#include <sys/time.h>
+
+time_t
+time (time_t *tp)
+{
+ struct timeval tv;
+ time_t tt;
+
+ if (gettimeofday (&tv, NULL) < 0)
+ abort ();
+ tt = tv.tv_sec;
+
+ if (tp)
+ *tp = tt;
+
+ return tt;
+}
diff --git a/tests/time.in.h b/tests/time.in.h
index 6aa67498..df99c8ab 100644
--- a/tests/time.in.h
+++ b/tests/time.in.h
@@ -1,6 +1,6 @@
/* A more-standard <time.h>.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -20,6 +20,13 @@
#endif
@PRAGMA_COLUMNS@
+/* This file uses #include_next of a system file that defines time_t.
+ For the 'year2038' module to work right, <config.h> needs to have been
+ included before. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
/* Don't get in the way of glibc when it includes time.h merely to
declare a few standard symbols, rather than to declare all the
symbols. (However, skip this for MinGW as it treats __need_time_t
@@ -45,6 +52,12 @@
# @INCLUDE_NEXT@ @NEXT_TIME_H@
+/* This file uses _GL_ATTRIBUTE_DEPRECATED, GNULIB_POSIXCHECK,
+ HAVE_RAW_DECL_*. */
+# if !_GL_CONFIG_H_INCLUDED
+# error "Please include config.h first."
+# endif
+
/* NetBSD 5.0 mis-defines NULL. */
# include <stddef.h>
@@ -112,23 +125,79 @@ struct __time_t_must_be_integral {
/* Set *TS to the current time, and return BASE.
Upon failure, return 0. */
# if @GNULIB_TIMESPEC_GET@
-# if ! @HAVE_TIMESPEC_GET@
+# if @REPLACE_TIMESPEC_GET@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef timespec_get
+# define timespec_get rpl_timespec_get
+# endif
+_GL_FUNCDECL_RPL (timespec_get, int, (struct timespec *ts, int base)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (timespec_get, int, (struct timespec *ts, int base));
+# else
+# if !@HAVE_TIMESPEC_GET@
_GL_FUNCDECL_SYS (timespec_get, int, (struct timespec *ts, int base)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
_GL_CXXALIAS_SYS (timespec_get, int, (struct timespec *ts, int base));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (timespec_get);
+# endif
+# elif defined GNULIB_POSIXCHECK
+# undef timespec_get
+# if HAVE_RAW_DECL_TIMESPEC_GET
+_GL_WARN_ON_USE (timespec_get, "timespec_get is unportable - "
+ "use gnulib module timespec_get for portability");
+# endif
# endif
/* Set *TS to the current time resolution, and return BASE.
Upon failure, return 0. */
# if @GNULIB_TIMESPEC_GETRES@
-# if ! @HAVE_TIMESPEC_GETRES@
+# if @REPLACE_TIMESPEC_GETRES@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef timespec_getres
+# define timespec_getres rpl_timespec_getres
+# endif
+_GL_FUNCDECL_RPL (timespec_getres, int, (struct timespec *ts, int base)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (timespec_getres, int, (struct timespec *ts, int base));
+# else
+# if !@HAVE_TIMESPEC_GETRES@
_GL_FUNCDECL_SYS (timespec_getres, int, (struct timespec *ts, int base)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
_GL_CXXALIAS_SYS (timespec_getres, int, (struct timespec *ts, int base));
+# endif
_GL_CXXALIASWARN (timespec_getres);
+# elif defined GNULIB_POSIXCHECK
+# undef timespec_getres
+# if HAVE_RAW_DECL_TIMESPEC_GETRES
+_GL_WARN_ON_USE (timespec_getres, "timespec_getres is unportable - "
+ "use gnulib module timespec_getres for portability");
+# endif
+# endif
+
+/* Return the number of seconds that have elapsed since the Epoch. */
+# if @GNULIB_TIME@
+# if @REPLACE_TIME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define time rpl_time
+# endif
+_GL_FUNCDECL_RPL (time, time_t, (time_t *__tp));
+_GL_CXXALIAS_RPL (time, time_t, (time_t *__tp));
+# else
+_GL_CXXALIAS_SYS (time, time_t, (time_t *__tp));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (time);
+# endif
+# elif defined GNULIB_POSIXCHECK
+# undef time
+# if HAVE_RAW_DECL_TIME
+_GL_WARN_ON_USE (time, "time has consistency problems - "
+ "use gnulib module time for portability");
+# endif
# endif
/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
@@ -154,6 +223,12 @@ _GL_CXXALIAS_SYS (nanosleep, int,
(struct timespec const *__rqtp, struct timespec *__rmtp));
# endif
_GL_CXXALIASWARN (nanosleep);
+# elif defined GNULIB_POSIXCHECK
+# undef nanosleep
+# if HAVE_RAW_DECL_NANOSLEEP
+_GL_WARN_ON_USE (nanosleep, "nanosleep is unportable - "
+ "use gnulib module nanosleep for portability");
+# endif
# endif
/* Initialize time conversion information. */
@@ -189,6 +264,12 @@ _GL_CXXALIAS_MDA (tzset, void, (void));
_GL_CXXALIAS_SYS (tzset, void, (void));
# endif
_GL_CXXALIASWARN (tzset);
+# elif defined GNULIB_POSIXCHECK
+# undef tzset
+# if HAVE_RAW_DECL_TZSET
+_GL_WARN_ON_USE (tzset, "tzset has portability problems - "
+ "use gnulib module tzset for portability");
+# endif
# endif
/* Return the 'time_t' representation of TP and normalize TP. */
@@ -205,6 +286,12 @@ _GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp));
# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mktime);
# endif
+# elif defined GNULIB_POSIXCHECK
+# undef mktime
+# if HAVE_RAW_DECL_MKTIME
+_GL_WARN_ON_USE (mktime, "mktime has portability problems - "
+ "use gnulib module mktime for portability");
+# endif
# endif
/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
@@ -255,6 +342,17 @@ _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer,
# if @HAVE_DECL_LOCALTIME_R@
_GL_CXXALIASWARN (gmtime_r);
# endif
+# elif defined GNULIB_POSIXCHECK
+# undef localtime_r
+# if HAVE_RAW_DECL_LOCALTIME_R
+_GL_WARN_ON_USE (localtime_r, "localtime_r is unportable - "
+ "use gnulib module time_r for portability");
+# endif
+# undef gmtime_r
+# if HAVE_RAW_DECL_GMTIME_R
+_GL_WARN_ON_USE (gmtime_r, "gmtime_r is unportable - "
+ "use gnulib module time_r for portability");
+# endif
# endif
/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
@@ -275,6 +373,12 @@ _GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer));
# if __GLIBC__ >= 2
_GL_CXXALIASWARN (localtime);
# endif
+# elif defined GNULIB_POSIXCHECK
+# undef localtime
+# if HAVE_RAW_DECL_LOCALTIME
+_GL_WARN_ON_USE (localtime, "localtime has portability problems - "
+ "use gnulib module localtime for portability");
+# endif
# endif
# if 0 || @REPLACE_GMTIME@
@@ -306,6 +410,12 @@ _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf,
char const *restrict __format,
struct tm *restrict __tm));
_GL_CXXALIASWARN (strptime);
+# elif defined GNULIB_POSIXCHECK
+# undef strptime
+# if HAVE_RAW_DECL_STRPTIME
+_GL_WARN_ON_USE (strptime, "strptime is unportable - "
+ "use gnulib module strptime for portability");
+# endif
# endif
/* Convert *TP to a date and time string. See
@@ -315,6 +425,9 @@ _GL_CXXALIASWARN (strptime);
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define ctime rpl_ctime
# endif
+# ifndef __cplusplus
+_GL_ATTRIBUTE_DEPRECATED
+# endif
_GL_FUNCDECL_RPL (ctime, char *, (time_t const *__tp)
_GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (ctime, char *, (time_t const *__tp));
@@ -324,6 +437,8 @@ _GL_CXXALIAS_SYS (ctime, char *, (time_t const *__tp));
# if __GLIBC__ >= 2
_GL_CXXALIASWARN (ctime);
# endif
+# elif defined GNULIB_POSIXCHECK
+/* No need to warn about portability, as a more serious warning is below. */
# endif
/* Convert *TP to a date and time string. See
@@ -348,6 +463,12 @@ _GL_CXXALIAS_SYS (strftime, size_t,
# if __GLIBC__ >= 2
_GL_CXXALIASWARN (strftime);
# endif
+# elif defined GNULIB_POSIXCHECK
+# undef strftime
+# if HAVE_RAW_DECL_STRFTIME
+_GL_WARN_ON_USE (strftime, "strftime has portability problems - "
+ "use gnulib module strftime-fixes for portability");
+# endif
# endif
# if defined _GNU_SOURCE && @GNULIB_TIME_RZ@ && ! @HAVE_TIMEZONE_T@
@@ -422,7 +543,15 @@ _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
# endif
_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (timegm);
+# endif
+# elif defined GNULIB_POSIXCHECK
+# undef timegm
+# if HAVE_RAW_DECL_TIMEGM
+_GL_WARN_ON_USE (timegm, "timegm is unportable - "
+ "use gnulib module timegm for portability");
+# endif
# endif
/* Encourage applications to avoid unsafe functions that can overrun
@@ -430,8 +559,10 @@ _GL_CXXALIASWARN (timegm);
applications should use strftime (or even sprintf) instead. */
# if defined GNULIB_POSIXCHECK
# undef asctime
+# if HAVE_RAW_DECL_ASCTIME
_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - "
"better use strftime (or even sprintf) instead");
+# endif
# endif
# if defined GNULIB_POSIXCHECK
# undef asctime_r
@@ -442,8 +573,10 @@ _GL_WARN_ON_USE (asctime_r, "asctime_r can overrun buffers in some cases - "
# endif
# if defined GNULIB_POSIXCHECK
# undef ctime
+# if HAVE_RAW_DECL_CTIME
_GL_WARN_ON_USE (ctime, "ctime can overrun buffers in some cases - "
"better use strftime (or even sprintf) instead");
+# endif
# endif
# if defined GNULIB_POSIXCHECK
# undef ctime_r
diff --git a/tests/unicase/test-casecmp.h b/tests/unicase/test-casecmp.h
index a2f90aca..a13599ea 100644
--- a/tests/unicase/test-casecmp.h
+++ b/tests/unicase/test-casecmp.h
@@ -1,5 +1,5 @@
/* Test of case and normalization insensitive comparison of Unicode strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-cased.c b/tests/unicase/test-cased.c
index 477cd1c5..712ed14f 100644
--- a/tests/unicase/test-cased.c
+++ b/tests/unicase/test-cased.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unicase/test-ignorable.c b/tests/unicase/test-ignorable.c
index d4dc8498..b330dd70 100644
--- a/tests/unicase/test-ignorable.c
+++ b/tests/unicase/test-ignorable.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unicase/test-is-cased.h b/tests/unicase/test-is-cased.h
index db5c07ec..022be134 100644
--- a/tests/unicase/test-is-cased.h
+++ b/tests/unicase/test-is-cased.h
@@ -1,5 +1,5 @@
/* Test of test whether case matters for a Unicode string.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-is-casefolded.h b/tests/unicase/test-is-casefolded.h
index 37019777..eb45404d 100644
--- a/tests/unicase/test-is-casefolded.h
+++ b/tests/unicase/test-is-casefolded.h
@@ -1,5 +1,5 @@
/* Test of test whether a Unicode string is already case-folded.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-is-lowercase.h b/tests/unicase/test-is-lowercase.h
index df91eb1e..16853bdc 100644
--- a/tests/unicase/test-is-lowercase.h
+++ b/tests/unicase/test-is-lowercase.h
@@ -1,5 +1,5 @@
/* Test of test whether a Unicode string is entirely lower case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-is-titlecase.h b/tests/unicase/test-is-titlecase.h
index c96a59d6..abbc3a5f 100644
--- a/tests/unicase/test-is-titlecase.h
+++ b/tests/unicase/test-is-titlecase.h
@@ -1,5 +1,5 @@
/* Test of test whether a Unicode string is entirely title case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-is-uppercase.h b/tests/unicase/test-is-uppercase.h
index c58c545c..1dacd079 100644
--- a/tests/unicase/test-is-uppercase.h
+++ b/tests/unicase/test-is-uppercase.h
@@ -1,5 +1,5 @@
/* Test of test whether a Unicode string is entirely upper case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-locale-language.c b/tests/unicase/test-locale-language.c
index dfc1b39b..ed6adeb8 100644
--- a/tests/unicase/test-locale-language.c
+++ b/tests/unicase/test-locale-language.c
@@ -1,5 +1,5 @@
/* Test of language code determination.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unicase/test-mapping-part1.h b/tests/unicase/test-mapping-part1.h
index 7bd02d13..562195a5 100644
--- a/tests/unicase/test-mapping-part1.h
+++ b/tests/unicase/test-mapping-part1.h
@@ -1,5 +1,5 @@
/* Test of single character case mapping functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unicase/test-mapping-part2.h b/tests/unicase/test-mapping-part2.h
index aafe1a56..ed489482 100644
--- a/tests/unicase/test-mapping-part2.h
+++ b/tests/unicase/test-mapping-part2.h
@@ -1,5 +1,5 @@
/* Test of single character case mapping functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unicase/test-predicate-part1.h b/tests/unicase/test-predicate-part1.h
index c0b9131b..a63f06cb 100644
--- a/tests/unicase/test-predicate-part1.h
+++ b/tests/unicase/test-predicate-part1.h
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unicase/test-predicate-part2.h b/tests/unicase/test-predicate-part2.h
index a3e2c0ff..0b58545b 100644
--- a/tests/unicase/test-predicate-part2.h
+++ b/tests/unicase/test-predicate-part2.h
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/unicase/test-u16-casecmp.c b/tests/unicase/test-u16-casecmp.c
index 6bb4cbf6..a85abbbd 100644
--- a/tests/unicase/test-u16-casecmp.c
+++ b/tests/unicase/test-u16-casecmp.c
@@ -1,5 +1,5 @@
/* Test of case and normalization insensitive comparison of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-casecoll.c b/tests/unicase/test-u16-casecoll.c
index 2eebdff6..ade96bfb 100644
--- a/tests/unicase/test-u16-casecoll.c
+++ b/tests/unicase/test-u16-casecoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, case and normalization insensitive comparison of
UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-casefold.c b/tests/unicase/test-u16-casefold.c
index cb61f992..23e94eff 100644
--- a/tests/unicase/test-u16-casefold.c
+++ b/tests/unicase/test-u16-casefold.c
@@ -1,5 +1,5 @@
/* Test of casefolding mapping for UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-is-cased.c b/tests/unicase/test-u16-is-cased.c
index 9ce5ff3a..dafba78e 100644
--- a/tests/unicase/test-u16-is-cased.c
+++ b/tests/unicase/test-u16-is-cased.c
@@ -1,5 +1,5 @@
/* Test of test whether case matters for an UTF-16 string.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-is-casefolded.c b/tests/unicase/test-u16-is-casefolded.c
index 33a0724d..6072535a 100644
--- a/tests/unicase/test-u16-is-casefolded.c
+++ b/tests/unicase/test-u16-is-casefolded.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-16 string is already case-folded.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-is-lowercase.c b/tests/unicase/test-u16-is-lowercase.c
index e9726e95..5b4e095e 100644
--- a/tests/unicase/test-u16-is-lowercase.c
+++ b/tests/unicase/test-u16-is-lowercase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-16 string is entirely lower case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-is-titlecase.c b/tests/unicase/test-u16-is-titlecase.c
index 27a4feef..4e60c4ac 100644
--- a/tests/unicase/test-u16-is-titlecase.c
+++ b/tests/unicase/test-u16-is-titlecase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-16 string is entirely title case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-is-uppercase.c b/tests/unicase/test-u16-is-uppercase.c
index 2c5be2d8..354c9052 100644
--- a/tests/unicase/test-u16-is-uppercase.c
+++ b/tests/unicase/test-u16-is-uppercase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-16 string is entirely upper case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-tolower.c b/tests/unicase/test-u16-tolower.c
index 7c20502d..86ed522f 100644
--- a/tests/unicase/test-u16-tolower.c
+++ b/tests/unicase/test-u16-tolower.c
@@ -1,5 +1,5 @@
/* Test of lowercase mapping for UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-totitle.c b/tests/unicase/test-u16-totitle.c
index 98b489df..be653df1 100644
--- a/tests/unicase/test-u16-totitle.c
+++ b/tests/unicase/test-u16-totitle.c
@@ -1,5 +1,5 @@
/* Test of titlecase mapping for UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u16-toupper.c b/tests/unicase/test-u16-toupper.c
index e4e6ae3c..5bbc10ac 100644
--- a/tests/unicase/test-u16-toupper.c
+++ b/tests/unicase/test-u16-toupper.c
@@ -1,5 +1,5 @@
/* Test of uppercase mapping for UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-casecmp.c b/tests/unicase/test-u32-casecmp.c
index 0080ac01..aca59a88 100644
--- a/tests/unicase/test-u32-casecmp.c
+++ b/tests/unicase/test-u32-casecmp.c
@@ -1,5 +1,5 @@
/* Test of case and normalization insensitive comparison of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-casecoll.c b/tests/unicase/test-u32-casecoll.c
index 62746c8a..7ad01630 100644
--- a/tests/unicase/test-u32-casecoll.c
+++ b/tests/unicase/test-u32-casecoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, case and normalization insensitive comparison of
UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-casefold.c b/tests/unicase/test-u32-casefold.c
index 26f8960d..c31245e1 100644
--- a/tests/unicase/test-u32-casefold.c
+++ b/tests/unicase/test-u32-casefold.c
@@ -1,5 +1,5 @@
/* Test of casefolding mapping for UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-is-cased.c b/tests/unicase/test-u32-is-cased.c
index a92c2671..5f663dd8 100644
--- a/tests/unicase/test-u32-is-cased.c
+++ b/tests/unicase/test-u32-is-cased.c
@@ -1,5 +1,5 @@
/* Test of test whether case matters for an UTF-32 string.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-is-casefolded.c b/tests/unicase/test-u32-is-casefolded.c
index 701f4533..1798f310 100644
--- a/tests/unicase/test-u32-is-casefolded.c
+++ b/tests/unicase/test-u32-is-casefolded.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-32 string is already case-folded.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-is-lowercase.c b/tests/unicase/test-u32-is-lowercase.c
index 2f7c4c20..3c1bf91e 100644
--- a/tests/unicase/test-u32-is-lowercase.c
+++ b/tests/unicase/test-u32-is-lowercase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-32 string is entirely lower case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-is-titlecase.c b/tests/unicase/test-u32-is-titlecase.c
index a860867c..3aedb6c8 100644
--- a/tests/unicase/test-u32-is-titlecase.c
+++ b/tests/unicase/test-u32-is-titlecase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-32 string is entirely title case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-is-uppercase.c b/tests/unicase/test-u32-is-uppercase.c
index 0cd34b8d..cf500991 100644
--- a/tests/unicase/test-u32-is-uppercase.c
+++ b/tests/unicase/test-u32-is-uppercase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-32 string is entirely upper case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-tolower.c b/tests/unicase/test-u32-tolower.c
index 5044bc08..47c9e1ee 100644
--- a/tests/unicase/test-u32-tolower.c
+++ b/tests/unicase/test-u32-tolower.c
@@ -1,5 +1,5 @@
/* Test of lowercase mapping for UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-totitle.c b/tests/unicase/test-u32-totitle.c
index 08d2e61a..948f48db 100644
--- a/tests/unicase/test-u32-totitle.c
+++ b/tests/unicase/test-u32-totitle.c
@@ -1,5 +1,5 @@
/* Test of titlecase mapping for UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u32-toupper.c b/tests/unicase/test-u32-toupper.c
index ddc7ca2c..098c56ce 100644
--- a/tests/unicase/test-u32-toupper.c
+++ b/tests/unicase/test-u32-toupper.c
@@ -1,5 +1,5 @@
/* Test of uppercase mapping for UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-casecmp.c b/tests/unicase/test-u8-casecmp.c
index d76b8758..904c9284 100644
--- a/tests/unicase/test-u8-casecmp.c
+++ b/tests/unicase/test-u8-casecmp.c
@@ -1,5 +1,5 @@
/* Test of case and normalization insensitive comparison of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-casecoll.c b/tests/unicase/test-u8-casecoll.c
index e8a19690..a3e6d95f 100644
--- a/tests/unicase/test-u8-casecoll.c
+++ b/tests/unicase/test-u8-casecoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, case and normalization insensitive comparison of
UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-casefold.c b/tests/unicase/test-u8-casefold.c
index 5fd42844..d1fc8967 100644
--- a/tests/unicase/test-u8-casefold.c
+++ b/tests/unicase/test-u8-casefold.c
@@ -1,5 +1,5 @@
/* Test of casefolding mapping for UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-is-cased.c b/tests/unicase/test-u8-is-cased.c
index dc523836..b8f0b2bf 100644
--- a/tests/unicase/test-u8-is-cased.c
+++ b/tests/unicase/test-u8-is-cased.c
@@ -1,5 +1,5 @@
/* Test of test whether case matters for an UTF-8 string.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-is-casefolded.c b/tests/unicase/test-u8-is-casefolded.c
index 6adf2888..a7cc49be 100644
--- a/tests/unicase/test-u8-is-casefolded.c
+++ b/tests/unicase/test-u8-is-casefolded.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-8 string is already case-folded.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-is-lowercase.c b/tests/unicase/test-u8-is-lowercase.c
index 82a4c8d8..c78b9df0 100644
--- a/tests/unicase/test-u8-is-lowercase.c
+++ b/tests/unicase/test-u8-is-lowercase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-8 string is entirely lower case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-is-titlecase.c b/tests/unicase/test-u8-is-titlecase.c
index e91b878a..5416ab59 100644
--- a/tests/unicase/test-u8-is-titlecase.c
+++ b/tests/unicase/test-u8-is-titlecase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-8 string is entirely title case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-is-uppercase.c b/tests/unicase/test-u8-is-uppercase.c
index 33294fa9..279f30cc 100644
--- a/tests/unicase/test-u8-is-uppercase.c
+++ b/tests/unicase/test-u8-is-uppercase.c
@@ -1,5 +1,5 @@
/* Test of test whether an UTF-8 string is entirely upper case.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-tolower.c b/tests/unicase/test-u8-tolower.c
index 73d9fca8..1e33148e 100644
--- a/tests/unicase/test-u8-tolower.c
+++ b/tests/unicase/test-u8-tolower.c
@@ -1,5 +1,5 @@
/* Test of lowercase mapping for UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-totitle.c b/tests/unicase/test-u8-totitle.c
index 3a6cc10e..676456e0 100644
--- a/tests/unicase/test-u8-totitle.c
+++ b/tests/unicase/test-u8-totitle.c
@@ -1,5 +1,5 @@
/* Test of titlecase mapping for UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-u8-toupper.c b/tests/unicase/test-u8-toupper.c
index ce0d3529..a954dedd 100644
--- a/tests/unicase/test-u8-toupper.c
+++ b/tests/unicase/test-u8-toupper.c
@@ -1,5 +1,5 @@
/* Test of uppercase mapping for UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-uc_tolower.c b/tests/unicase/test-uc_tolower.c
index 83942037..885476d0 100644
--- a/tests/unicase/test-uc_tolower.c
+++ b/tests/unicase/test-uc_tolower.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character mapping functions.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
#include "test-mapping-part1.h"
diff --git a/tests/unicase/test-uc_totitle.c b/tests/unicase/test-uc_totitle.c
index 03145bce..b9422ba0 100644
--- a/tests/unicase/test-uc_totitle.c
+++ b/tests/unicase/test-uc_totitle.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character mapping functions.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
#include "test-mapping-part1.h"
diff --git a/tests/unicase/test-uc_toupper.c b/tests/unicase/test-uc_toupper.c
index c5594053..2aff0758 100644
--- a/tests/unicase/test-uc_toupper.c
+++ b/tests/unicase/test-uc_toupper.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character mapping functions.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
#include "test-mapping-part1.h"
diff --git a/tests/unicase/test-ulc-casecmp.c b/tests/unicase/test-ulc-casecmp.c
index 81534f04..4aaf9830 100644
--- a/tests/unicase/test-ulc-casecmp.c
+++ b/tests/unicase/test-ulc-casecmp.c
@@ -1,5 +1,5 @@
/* Test of case and normalization insensitive comparison of strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unicase/test-ulc-casecoll.c b/tests/unicase/test-ulc-casecoll.c
index 07bc2dc4..fa720e04 100644
--- a/tests/unicase/test-ulc-casecoll.c
+++ b/tests/unicase/test-ulc-casecoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, case and normalization insensitive comparison of
strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uniconv/test-u16-conv-from-enc.c b/tests/uniconv/test-u16-conv-from-enc.c
index 82f0091c..48c7fd77 100644
--- a/tests/uniconv/test-u16-conv-from-enc.c
+++ b/tests/uniconv/test-u16-conv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-16 from legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -117,7 +117,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-16. */
diff --git a/tests/uniconv/test-u16-conv-to-enc.c b/tests/uniconv/test-u16-conv-to-enc.c
index b423e10c..eeb51c3d 100644
--- a/tests/uniconv/test-u16-conv-to-enc.c
+++ b/tests/uniconv/test-u16-conv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-16 to legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniconv/test-u16-strconv-from-enc.c b/tests/uniconv/test-u16-strconv-from-enc.c
index e34399ad..b1cb1a88 100644
--- a/tests/uniconv/test-u16-strconv-from-enc.c
+++ b/tests/uniconv/test-u16-strconv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-16 from legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -71,7 +71,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-16. */
diff --git a/tests/uniconv/test-u16-strconv-to-enc.c b/tests/uniconv/test-u16-strconv-to-enc.c
index bfdc6623..7d3f596e 100644
--- a/tests/uniconv/test-u16-strconv-to-enc.c
+++ b/tests/uniconv/test-u16-strconv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-16 to legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniconv/test-u32-conv-from-enc.c b/tests/uniconv/test-u32-conv-from-enc.c
index 723a56b3..994bfb49 100644
--- a/tests/uniconv/test-u32-conv-from-enc.c
+++ b/tests/uniconv/test-u32-conv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-32 from legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -117,7 +117,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-16. */
diff --git a/tests/uniconv/test-u32-conv-to-enc.c b/tests/uniconv/test-u32-conv-to-enc.c
index ca51aa08..5ce1d610 100644
--- a/tests/uniconv/test-u32-conv-to-enc.c
+++ b/tests/uniconv/test-u32-conv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-32 to legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniconv/test-u32-strconv-from-enc.c b/tests/uniconv/test-u32-strconv-from-enc.c
index bdd88347..320bc185 100644
--- a/tests/uniconv/test-u32-strconv-from-enc.c
+++ b/tests/uniconv/test-u32-strconv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-32 from legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -71,7 +71,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-16. */
diff --git a/tests/uniconv/test-u32-strconv-to-enc.c b/tests/uniconv/test-u32-strconv-to-enc.c
index bca05f86..8ce00786 100644
--- a/tests/uniconv/test-u32-strconv-to-enc.c
+++ b/tests/uniconv/test-u32-strconv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-32 to legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniconv/test-u8-conv-from-enc.c b/tests/uniconv/test-u8-conv-from-enc.c
index 80a136f6..641200f2 100644
--- a/tests/uniconv/test-u8-conv-from-enc.c
+++ b/tests/uniconv/test-u8-conv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-8 from legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -112,7 +112,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-8. */
diff --git a/tests/uniconv/test-u8-conv-to-enc.c b/tests/uniconv/test-u8-conv-to-enc.c
index 97dc82a6..cd898033 100644
--- a/tests/uniconv/test-u8-conv-to-enc.c
+++ b/tests/uniconv/test-u8-conv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-8 to legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniconv/test-u8-strconv-from-enc.c b/tests/uniconv/test-u8-strconv-from-enc.c
index 1ea836ac..61e3230b 100644
--- a/tests/uniconv/test-u8-strconv-from-enc.c
+++ b/tests/uniconv/test-u8-strconv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-8 from legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -62,7 +62,8 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
+# if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \
+ || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
if (iconv_supports_encoding ("ISO-2022-JP-2"))
{
/* Test conversions from autodetect_jp to UTF-8. */
diff --git a/tests/uniconv/test-u8-strconv-to-enc.c b/tests/uniconv/test-u8-strconv-to-enc.c
index e02f2056..68639f9e 100644
--- a/tests/uniconv/test-u8-strconv-to-enc.c
+++ b/tests/uniconv/test-u8-strconv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-8 to legacy encodings.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-bidi_byname.c b/tests/unictype/test-bidi_byname.c
index 78ca589c..96d9f173 100644
--- a/tests/unictype/test-bidi_byname.c
+++ b/tests/unictype/test-bidi_byname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-bidi_longname.c b/tests/unictype/test-bidi_longname.c
index a36b81a2..fcd7255f 100644
--- a/tests/unictype/test-bidi_longname.c
+++ b/tests/unictype/test-bidi_longname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/unictype/test-bidi_name.c b/tests/unictype/test-bidi_name.c
index c2dd49eb..4c4024d2 100644
--- a/tests/unictype/test-bidi_name.c
+++ b/tests/unictype/test-bidi_name.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-bidi_of.c b/tests/unictype/test-bidi_of.c
index 786f6e9c..bc158324 100644
--- a/tests/unictype/test-bidi_of.c
+++ b/tests/unictype/test-bidi_of.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-bidi_test.c b/tests/unictype/test-bidi_test.c
index 34349a88..fd3f2930 100644
--- a/tests/unictype/test-bidi_test.c
+++ b/tests/unictype/test-bidi_test.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-block_list.c b/tests/unictype/test-block_list.c
index 623f62e8..267d5456 100644
--- a/tests/unictype/test-block_list.c
+++ b/tests/unictype/test-block_list.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-block_of.c b/tests/unictype/test-block_of.c
index aea21e65..60345188 100644
--- a/tests/unictype/test-block_of.c
+++ b/tests/unictype/test-block_of.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-block_test.c b/tests/unictype/test-block_test.c
index 974bba89..be7e4417 100644
--- a/tests/unictype/test-block_test.c
+++ b/tests/unictype/test-block_test.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_C.c b/tests/unictype/test-categ_C.c
index 09277e39..e6a0903b 100644
--- a/tests/unictype/test-categ_C.c
+++ b/tests/unictype/test-categ_C.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -294,13 +294,12 @@
{ 0x2E9A, 0x2E9A },
{ 0x2EF4, 0x2EFF },
{ 0x2FD6, 0x2FEF },
- { 0x2FFC, 0x2FFF },
{ 0x3040, 0x3040 },
{ 0x3097, 0x3098 },
{ 0x3100, 0x3104 },
{ 0x3130, 0x3130 },
{ 0x318F, 0x318F },
- { 0x31E4, 0x31EF },
+ { 0x31E4, 0x31EE },
{ 0x321F, 0x321F },
{ 0xA48D, 0xA48F },
{ 0xA4C7, 0xA4CF },
@@ -724,7 +723,8 @@
{ 0x2B73A, 0x2B73F },
{ 0x2B81E, 0x2B81F },
{ 0x2CEA2, 0x2CEAF },
- { 0x2EBE1, 0x2F7FF },
+ { 0x2EBE1, 0x2EBEF },
+ { 0x2EE5E, 0x2F7FF },
{ 0x2FA1E, 0x2FFFF },
{ 0x3134B, 0x3134F },
{ 0x323B0, 0xE00FF },
diff --git a/tests/unictype/test-categ_Cc.c b/tests/unictype/test-categ_Cc.c
index cfdbb48d..3051fa97 100644
--- a/tests/unictype/test-categ_Cc.c
+++ b/tests/unictype/test-categ_Cc.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Cf.c b/tests/unictype/test-categ_Cf.c
index e026f091..c1ab10f2 100644
--- a/tests/unictype/test-categ_Cf.c
+++ b/tests/unictype/test-categ_Cf.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Cn.c b/tests/unictype/test-categ_Cn.c
index b173d392..c12c0816 100644
--- a/tests/unictype/test-categ_Cn.c
+++ b/tests/unictype/test-categ_Cn.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -286,13 +286,12 @@
{ 0x2E9A, 0x2E9A },
{ 0x2EF4, 0x2EFF },
{ 0x2FD6, 0x2FEF },
- { 0x2FFC, 0x2FFF },
{ 0x3040, 0x3040 },
{ 0x3097, 0x3098 },
{ 0x3100, 0x3104 },
{ 0x3130, 0x3130 },
{ 0x318F, 0x318F },
- { 0x31E4, 0x31EF },
+ { 0x31E4, 0x31EE },
{ 0x321F, 0x321F },
{ 0xA48D, 0xA48F },
{ 0xA4C7, 0xA4CF },
@@ -715,7 +714,8 @@
{ 0x2B73A, 0x2B73F },
{ 0x2B81E, 0x2B81F },
{ 0x2CEA2, 0x2CEAF },
- { 0x2EBE1, 0x2F7FF },
+ { 0x2EBE1, 0x2EBEF },
+ { 0x2EE5E, 0x2F7FF },
{ 0x2FA1E, 0x2FFFF },
{ 0x3134B, 0x3134F },
{ 0x323B0, 0xE0000 },
diff --git a/tests/unictype/test-categ_Co.c b/tests/unictype/test-categ_Co.c
index 0878bab5..ab327d77 100644
--- a/tests/unictype/test-categ_Co.c
+++ b/tests/unictype/test-categ_Co.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Cs.c b/tests/unictype/test-categ_Cs.c
index 16d90395..76f7dc12 100644
--- a/tests/unictype/test-categ_Cs.c
+++ b/tests/unictype/test-categ_Cs.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_L.c b/tests/unictype/test-categ_L.c
index a72b6f99..2e9b7be4 100644
--- a/tests/unictype/test-categ_L.c
+++ b/tests/unictype/test-categ_L.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -673,6 +673,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-categ_LC.c b/tests/unictype/test-categ_LC.c
index 166df6c8..16e61763 100644
--- a/tests/unictype/test-categ_LC.c
+++ b/tests/unictype/test-categ_LC.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Ll.c b/tests/unictype/test-categ_Ll.c
index 7feba488..c3d12127 100644
--- a/tests/unictype/test-categ_Ll.c
+++ b/tests/unictype/test-categ_Ll.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Lm.c b/tests/unictype/test-categ_Lm.c
index c7a5b595..06464574 100644
--- a/tests/unictype/test-categ_Lm.c
+++ b/tests/unictype/test-categ_Lm.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Lo.c b/tests/unictype/test-categ_Lo.c
index 37009f81..e778c7c6 100644
--- a/tests/unictype/test-categ_Lo.c
+++ b/tests/unictype/test-categ_Lo.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -524,6 +524,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-categ_Lt.c b/tests/unictype/test-categ_Lt.c
index 96c0cce7..32808303 100644
--- a/tests/unictype/test-categ_Lt.c
+++ b/tests/unictype/test-categ_Lt.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Lu.c b/tests/unictype/test-categ_Lu.c
index 14c15058..89bb6575 100644
--- a/tests/unictype/test-categ_Lu.c
+++ b/tests/unictype/test-categ_Lu.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_M.c b/tests/unictype/test-categ_M.c
index e872f50c..4b2c4f85 100644
--- a/tests/unictype/test-categ_M.c
+++ b/tests/unictype/test-categ_M.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Mc.c b/tests/unictype/test-categ_Mc.c
index 1b2b50cf..bfa9ce15 100644
--- a/tests/unictype/test-categ_Mc.c
+++ b/tests/unictype/test-categ_Mc.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Me.c b/tests/unictype/test-categ_Me.c
index d0ad5427..c58d2972 100644
--- a/tests/unictype/test-categ_Me.c
+++ b/tests/unictype/test-categ_Me.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Mn.c b/tests/unictype/test-categ_Mn.c
index cff7fde2..ee067b33 100644
--- a/tests/unictype/test-categ_Mn.c
+++ b/tests/unictype/test-categ_Mn.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_N.c b/tests/unictype/test-categ_N.c
index ae8945c1..f7ee20ae 100644
--- a/tests/unictype/test-categ_N.c
+++ b/tests/unictype/test-categ_N.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Nd.c b/tests/unictype/test-categ_Nd.c
index 470c54e4..032ab3eb 100644
--- a/tests/unictype/test-categ_Nd.c
+++ b/tests/unictype/test-categ_Nd.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Nl.c b/tests/unictype/test-categ_Nl.c
index 55dc61bb..0ce75df2 100644
--- a/tests/unictype/test-categ_Nl.c
+++ b/tests/unictype/test-categ_Nl.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_No.c b/tests/unictype/test-categ_No.c
index 4d368b91..0c1e8e59 100644
--- a/tests/unictype/test-categ_No.c
+++ b/tests/unictype/test-categ_No.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_P.c b/tests/unictype/test-categ_P.c
index f2e8532b..c2a2a92f 100644
--- a/tests/unictype/test-categ_P.c
+++ b/tests/unictype/test-categ_P.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Pc.c b/tests/unictype/test-categ_Pc.c
index 9d0ae7dc..98b32745 100644
--- a/tests/unictype/test-categ_Pc.c
+++ b/tests/unictype/test-categ_Pc.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Pd.c b/tests/unictype/test-categ_Pd.c
index d27a409a..28f2b27d 100644
--- a/tests/unictype/test-categ_Pd.c
+++ b/tests/unictype/test-categ_Pd.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Pe.c b/tests/unictype/test-categ_Pe.c
index 7dda519b..d1ae40ea 100644
--- a/tests/unictype/test-categ_Pe.c
+++ b/tests/unictype/test-categ_Pe.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Pf.c b/tests/unictype/test-categ_Pf.c
index 68cdb407..6746b530 100644
--- a/tests/unictype/test-categ_Pf.c
+++ b/tests/unictype/test-categ_Pf.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Pi.c b/tests/unictype/test-categ_Pi.c
index bd8d5ebe..ee16d684 100644
--- a/tests/unictype/test-categ_Pi.c
+++ b/tests/unictype/test-categ_Pi.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Po.c b/tests/unictype/test-categ_Po.c
index 53a782f5..27389e40 100644
--- a/tests/unictype/test-categ_Po.c
+++ b/tests/unictype/test-categ_Po.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Ps.c b/tests/unictype/test-categ_Ps.c
index e423e409..78bebac2 100644
--- a/tests/unictype/test-categ_Ps.c
+++ b/tests/unictype/test-categ_Ps.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_S.c b/tests/unictype/test-categ_S.c
index d1312da5..48863da0 100644
--- a/tests/unictype/test-categ_S.c
+++ b/tests/unictype/test-categ_S.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -124,7 +124,7 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
+ { 0x2FF0, 0x2FFF },
{ 0x3004, 0x3004 },
{ 0x3012, 0x3013 },
{ 0x3020, 0x3020 },
@@ -134,6 +134,7 @@
{ 0x3190, 0x3191 },
{ 0x3196, 0x319F },
{ 0x31C0, 0x31E3 },
+ { 0x31EF, 0x31EF },
{ 0x3200, 0x321E },
{ 0x322A, 0x3247 },
{ 0x3250, 0x3250 },
diff --git a/tests/unictype/test-categ_Sc.c b/tests/unictype/test-categ_Sc.c
index 9057fa9f..4c30fbf1 100644
--- a/tests/unictype/test-categ_Sc.c
+++ b/tests/unictype/test-categ_Sc.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Sk.c b/tests/unictype/test-categ_Sk.c
index cf8f781d..efffb564 100644
--- a/tests/unictype/test-categ_Sk.c
+++ b/tests/unictype/test-categ_Sk.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Sm.c b/tests/unictype/test-categ_Sm.c
index 02a70194..ae3d01c3 100644
--- a/tests/unictype/test-categ_Sm.c
+++ b/tests/unictype/test-categ_Sm.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_So.c b/tests/unictype/test-categ_So.c
index 4f9b3eae..98f774f7 100644
--- a/tests/unictype/test-categ_So.c
+++ b/tests/unictype/test-categ_So.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -103,7 +103,7 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
+ { 0x2FF0, 0x2FFF },
{ 0x3004, 0x3004 },
{ 0x3012, 0x3013 },
{ 0x3020, 0x3020 },
@@ -112,6 +112,7 @@
{ 0x3190, 0x3191 },
{ 0x3196, 0x319F },
{ 0x31C0, 0x31E3 },
+ { 0x31EF, 0x31EF },
{ 0x3200, 0x321E },
{ 0x322A, 0x3247 },
{ 0x3250, 0x3250 },
diff --git a/tests/unictype/test-categ_Z.c b/tests/unictype/test-categ_Z.c
index 3e0ec555..20301158 100644
--- a/tests/unictype/test-categ_Z.c
+++ b/tests/unictype/test-categ_Z.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Zl.c b/tests/unictype/test-categ_Zl.c
index 92725a57..25047987 100644
--- a/tests/unictype/test-categ_Zl.c
+++ b/tests/unictype/test-categ_Zl.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Zp.c b/tests/unictype/test-categ_Zp.c
index 2c69c6cc..520cf39e 100644
--- a/tests/unictype/test-categ_Zp.c
+++ b/tests/unictype/test-categ_Zp.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_Zs.c b/tests/unictype/test-categ_Zs.c
index da8a54b5..9a218493 100644
--- a/tests/unictype/test-categ_Zs.c
+++ b/tests/unictype/test-categ_Zs.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-categ_and.c b/tests/unictype/test-categ_and.c
index ace3ccb8..e2ded585 100644
--- a/tests/unictype/test-categ_and.c
+++ b/tests/unictype/test-categ_and.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_and_not.c b/tests/unictype/test-categ_and_not.c
index 74c75aee..07420d53 100644
--- a/tests/unictype/test-categ_and_not.c
+++ b/tests/unictype/test-categ_and_not.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -25,15 +25,36 @@
int
main ()
{
- uc_general_category_t ct =
- uc_general_category_and_not (
- uc_general_category_or (UC_LETTER, UC_NUMBER),
- uc_general_category_or (UC_UPPERCASE_LETTER, UC_DECIMAL_DIGIT_NUMBER));
-
- ASSERT (!uc_is_general_category ('A', ct));
- ASSERT (uc_is_general_category ('a', ct));
- ASSERT (!uc_is_general_category ('7', ct));
- ASSERT (uc_is_general_category (0x00B2, ct));
+ { /* A case where the result's bit mask is 0. */
+ uc_general_category_t ct =
+ uc_general_category_and_not (UC_UPPERCASE_LETTER, UC_LETTER);
+
+ ASSERT (!uc_is_general_category ('A', ct));
+ ASSERT (!uc_is_general_category ('a', ct));
+ }
+ { /* A case where the result's bit mask is the same as the first argument. */
+ uc_general_category_t ct =
+ uc_general_category_and_not (
+ uc_general_category_or (UC_LETTER, UC_NUMBER),
+ UC_CONTROL);
+
+ ASSERT (uc_is_general_category ('A', ct));
+ ASSERT (uc_is_general_category ('a', ct));
+ ASSERT (uc_is_general_category ('7', ct));
+ ASSERT (uc_is_general_category (0x00B2, ct));
+ }
+ { /* The general case, where the result's bit mask is neither 0 nor the first
+ argument. */
+ uc_general_category_t ct =
+ uc_general_category_and_not (
+ uc_general_category_or (UC_LETTER, UC_NUMBER),
+ uc_general_category_or (UC_UPPERCASE_LETTER, UC_DECIMAL_DIGIT_NUMBER));
+
+ ASSERT (!uc_is_general_category ('A', ct));
+ ASSERT (uc_is_general_category ('a', ct));
+ ASSERT (!uc_is_general_category ('7', ct));
+ ASSERT (uc_is_general_category (0x00B2, ct));
+ }
return 0;
}
diff --git a/tests/unictype/test-categ_byname.c b/tests/unictype/test-categ_byname.c
index 2489caaa..8cf94f4a 100644
--- a/tests/unictype/test-categ_byname.c
+++ b/tests/unictype/test-categ_byname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
@@ -206,8 +206,6 @@ main ()
ASSERT (category_equals (uc_general_category_byname ("UNASSIGNED"), UC_CATEGORY_Cn));
ASSERT (category_equals (uc_general_category_byname ("Unassigned"), UC_CATEGORY_Cn));
- uc_general_category_byname ("Nl");
-
{
uc_general_category_t ct = uc_general_category_byname ("Nd");
unsigned int c;
@@ -219,6 +217,16 @@ main ()
}
{
+ uc_general_category_t ct = uc_general_category_byname ("Nl");
+ unsigned int c;
+
+ for (c = 0x2160; c < 0x2180; c++)
+ ASSERT (uc_is_general_category (c, ct));
+ ASSERT (!uc_is_general_category (0x0BF1, ct));
+ ASSERT (!uc_is_general_category (0x0D71, ct));
+ }
+
+ {
uc_general_category_t ct = uc_general_category_byname ("Foo");
unsigned int c;
diff --git a/tests/unictype/test-categ_longname.c b/tests/unictype/test-categ_longname.c
index d332b280..9c725486 100644
--- a/tests/unictype/test-categ_longname.c
+++ b/tests/unictype/test-categ_longname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_name.c b/tests/unictype/test-categ_name.c
index 4e5143bb..f8f4889e 100644
--- a/tests/unictype/test-categ_name.c
+++ b/tests/unictype/test-categ_name.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_none.c b/tests/unictype/test-categ_none.c
index 913011a5..ae10a439 100644
--- a/tests/unictype/test-categ_none.c
+++ b/tests/unictype/test-categ_none.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_of.c b/tests/unictype/test-categ_of.c
index d19a510c..276994eb 100644
--- a/tests/unictype/test-categ_of.c
+++ b/tests/unictype/test-categ_of.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_or.c b/tests/unictype/test-categ_or.c
index 3fd9bd5a..3ed5d2b0 100644
--- a/tests/unictype/test-categ_or.c
+++ b/tests/unictype/test-categ_or.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-categ_test_withtable.c b/tests/unictype/test-categ_test_withtable.c
index df25cb87..fbd265a5 100644
--- a/tests/unictype/test-categ_test_withtable.c
+++ b/tests/unictype/test-categ_test_withtable.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-combiningclass.c b/tests/unictype/test-combiningclass.c
index 92348feb..0e71d022 100644
--- a/tests/unictype/test-combiningclass.c
+++ b/tests/unictype/test-combiningclass.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-combiningclass_byname.c b/tests/unictype/test-combiningclass_byname.c
index 0d56ca34..895b2ad1 100644
--- a/tests/unictype/test-combiningclass_byname.c
+++ b/tests/unictype/test-combiningclass_byname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining group functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-combiningclass_longname.c b/tests/unictype/test-combiningclass_longname.c
index 29164624..351467b8 100644
--- a/tests/unictype/test-combiningclass_longname.c
+++ b/tests/unictype/test-combiningclass_longname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/unictype/test-combiningclass_name.c b/tests/unictype/test-combiningclass_name.c
index 6521976a..7ccefbf2 100644
--- a/tests/unictype/test-combiningclass_name.c
+++ b/tests/unictype/test-combiningclass_name.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
diff --git a/tests/unictype/test-ctype_alnum.c b/tests/unictype/test-ctype_alnum.c
index 7947a92b..f6f9b6b2 100644
--- a/tests/unictype/test-ctype_alnum.c
+++ b/tests/unictype/test-ctype_alnum.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -730,6 +730,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-ctype_alpha.c b/tests/unictype/test-ctype_alpha.c
index 284d964e..cb52a4c1 100644
--- a/tests/unictype/test-ctype_alpha.c
+++ b/tests/unictype/test-ctype_alpha.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -729,6 +729,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-ctype_blank.c b/tests/unictype/test-ctype_blank.c
index 4824fe73..a95128bc 100644
--- a/tests/unictype/test-ctype_blank.c
+++ b/tests/unictype/test-ctype_blank.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-ctype_cntrl.c b/tests/unictype/test-ctype_cntrl.c
index d32c701d..9c23169a 100644
--- a/tests/unictype/test-ctype_cntrl.c
+++ b/tests/unictype/test-ctype_cntrl.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-ctype_digit.c b/tests/unictype/test-ctype_digit.c
index ccda557f..53d40121 100644
--- a/tests/unictype/test-ctype_digit.c
+++ b/tests/unictype/test-ctype_digit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-ctype_graph.c b/tests/unictype/test-ctype_graph.c
index 16ab878a..bdd12a07 100644
--- a/tests/unictype/test-ctype_graph.c
+++ b/tests/unictype/test-ctype_graph.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -291,14 +291,14 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
+ { 0x2FF0, 0x2FFF },
{ 0x3001, 0x303F },
{ 0x3041, 0x3096 },
{ 0x3099, 0x30FF },
{ 0x3105, 0x312F },
{ 0x3131, 0x318E },
{ 0x3190, 0x31E3 },
- { 0x31F0, 0x321E },
+ { 0x31EF, 0x321E },
{ 0x3220, 0xA48C },
{ 0xA490, 0xA4C6 },
{ 0xA4D0, 0xA62B },
@@ -721,6 +721,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF },
diff --git a/tests/unictype/test-ctype_lower.c b/tests/unictype/test-ctype_lower.c
index f8fceb33..5bc56a9b 100644
--- a/tests/unictype/test-ctype_lower.c
+++ b/tests/unictype/test-ctype_lower.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-ctype_print.c b/tests/unictype/test-ctype_print.c
index dad6b07b..a7ae3cd9 100644
--- a/tests/unictype/test-ctype_print.c
+++ b/tests/unictype/test-ctype_print.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -288,14 +288,13 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
- { 0x3000, 0x303F },
+ { 0x2FF0, 0x303F },
{ 0x3041, 0x3096 },
{ 0x3099, 0x30FF },
{ 0x3105, 0x312F },
{ 0x3131, 0x318E },
{ 0x3190, 0x31E3 },
- { 0x31F0, 0x321E },
+ { 0x31EF, 0x321E },
{ 0x3220, 0xA48C },
{ 0xA490, 0xA4C6 },
{ 0xA4D0, 0xA62B },
@@ -718,6 +717,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF },
diff --git a/tests/unictype/test-ctype_punct.c b/tests/unictype/test-ctype_punct.c
index 1cd20e2a..1bebda2c 100644
--- a/tests/unictype/test-ctype_punct.c
+++ b/tests/unictype/test-ctype_punct.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -265,7 +265,7 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
+ { 0x2FF0, 0x2FFF },
{ 0x3001, 0x3004 },
{ 0x3008, 0x3020 },
{ 0x302A, 0x3030 },
@@ -276,6 +276,7 @@
{ 0x30FB, 0x30FB },
{ 0x3190, 0x319F },
{ 0x31C0, 0x31E3 },
+ { 0x31EF, 0x31EF },
{ 0x3200, 0x321E },
{ 0x3220, 0x33FF },
{ 0x4DC0, 0x4DFF },
diff --git a/tests/unictype/test-ctype_space.c b/tests/unictype/test-ctype_space.c
index da37cf74..2029e960 100644
--- a/tests/unictype/test-ctype_space.c
+++ b/tests/unictype/test-ctype_space.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-ctype_upper.c b/tests/unictype/test-ctype_upper.c
index 724d4c7c..c8e45155 100644
--- a/tests/unictype/test-ctype_upper.c
+++ b/tests/unictype/test-ctype_upper.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-ctype_xdigit.c b/tests/unictype/test-ctype_xdigit.c
index 3de8ce98..cbc618fc 100644
--- a/tests/unictype/test-ctype_xdigit.c
+++ b/tests/unictype/test-ctype_xdigit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-decdigit.c b/tests/unictype/test-decdigit.c
index 67a3f60c..e3b70470 100644
--- a/tests/unictype/test-decdigit.c
+++ b/tests/unictype/test-decdigit.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-decdigit.h b/tests/unictype/test-decdigit.h
index f54ff1e1..c0a46e6c 100644
--- a/tests/unictype/test-decdigit.h
+++ b/tests/unictype/test-decdigit.h
@@ -1,8 +1,8 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Decimal digit values of Unicode characters. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-digit.c b/tests/unictype/test-digit.c
index 67258a43..12fa387d 100644
--- a/tests/unictype/test-digit.c
+++ b/tests/unictype/test-digit.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-digit.h b/tests/unictype/test-digit.h
index 02819012..503b2f41 100644
--- a/tests/unictype/test-digit.h
+++ b/tests/unictype/test-digit.h
@@ -1,8 +1,8 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Digit values of Unicode characters. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-incb_byname.c b/tests/unictype/test-incb_byname.c
new file mode 100644
index 00000000..5031d313
--- /dev/null
+++ b/tests/unictype/test-incb_byname.c
@@ -0,0 +1,43 @@
+/* Test the Indic_Conjunct_Break value functions.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2024.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include <string.h>
+
+#include "macros.h"
+
+int
+main ()
+{
+ ASSERT (uc_indic_conjunct_break_byname ("NONE") == UC_INDIC_CONJUNCT_BREAK_NONE);
+ ASSERT (uc_indic_conjunct_break_byname ("None") == UC_INDIC_CONJUNCT_BREAK_NONE);
+ ASSERT (uc_indic_conjunct_break_byname ("CONSONANT") == UC_INDIC_CONJUNCT_BREAK_CONSONANT);
+ ASSERT (uc_indic_conjunct_break_byname ("Consonant") == UC_INDIC_CONJUNCT_BREAK_CONSONANT);
+ ASSERT (uc_indic_conjunct_break_byname ("LINKER") == UC_INDIC_CONJUNCT_BREAK_LINKER);
+ ASSERT (uc_indic_conjunct_break_byname ("Linker") == UC_INDIC_CONJUNCT_BREAK_LINKER);
+ ASSERT (uc_indic_conjunct_break_byname ("EXTEND") == UC_INDIC_CONJUNCT_BREAK_EXTEND);
+ ASSERT (uc_indic_conjunct_break_byname ("Extend") == UC_INDIC_CONJUNCT_BREAK_EXTEND);
+ ASSERT (uc_indic_conjunct_break_byname ("VOWEL") < 0);
+ ASSERT (uc_indic_conjunct_break_byname ("X") < 0);
+ ASSERT (uc_indic_conjunct_break_byname ("") < 0);
+
+ return 0;
+}
diff --git a/tests/unictype/test-incb_name.c b/tests/unictype/test-incb_name.c
new file mode 100644
index 00000000..25f53c28
--- /dev/null
+++ b/tests/unictype/test-incb_name.c
@@ -0,0 +1,37 @@
+/* Test the Indic_Conjunct_Break value functions.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2024.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include <string.h>
+
+#include "macros.h"
+
+int
+main ()
+{
+ ASSERT (strcmp (uc_indic_conjunct_break_name (UC_INDIC_CONJUNCT_BREAK_NONE), "None") == 0);
+ ASSERT (strcmp (uc_indic_conjunct_break_name (UC_INDIC_CONJUNCT_BREAK_CONSONANT), "Consonant") == 0);
+ ASSERT (strcmp (uc_indic_conjunct_break_name (UC_INDIC_CONJUNCT_BREAK_LINKER), "Linker") == 0);
+ ASSERT (strcmp (uc_indic_conjunct_break_name (UC_INDIC_CONJUNCT_BREAK_EXTEND), "Extend") == 0);
+ ASSERT (uc_indic_conjunct_break_name (-1) == NULL);
+
+ return 0;
+}
diff --git a/tests/unictype/test-incb_of.c b/tests/unictype/test-incb_of.c
new file mode 100644
index 00000000..d2adeb5c
--- /dev/null
+++ b/tests/unictype/test-incb_of.c
@@ -0,0 +1,52 @@
+/* Test the Unicode character Indic_Conjunct_Break attribute functions.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2024.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unictype.h"
+
+#include <string.h>
+
+#include "macros.h"
+
+typedef struct { ucs4_t ch; int value; } pair_t;
+
+static const pair_t mapping[] =
+ {
+#include "test-incb_of.h"
+ };
+
+int
+main ()
+{
+ unsigned int c;
+ size_t i;
+
+ c = 0;
+ for (i = 0; i < SIZEOF (mapping); i++)
+ {
+ for (; c < mapping[i].ch; c++)
+ ASSERT (uc_indic_conjunct_break (c) == UC_INDIC_CONJUNCT_BREAK_NONE);
+ ASSERT (uc_indic_conjunct_break (c) == mapping[i].value);
+ c++;
+ }
+ for (; c < 0x110000; c++)
+ ASSERT (uc_indic_conjunct_break (c) == UC_INDIC_CONJUNCT_BREAK_NONE);
+
+ return 0;
+}
diff --git a/tests/unictype/test-incb_of.h b/tests/unictype/test-incb_of.h
new file mode 100644
index 00000000..0eb99aaf
--- /dev/null
+++ b/tests/unictype/test-incb_of.h
@@ -0,0 +1,1149 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Indic_Conjunct_Break attribute of Unicode characters. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
+
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
+
+ This file 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 file 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 <https://www.gnu.org/licenses/>. */
+
+ { 0x0300, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0301, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0302, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0303, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0304, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0305, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0306, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0307, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0308, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0309, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x030A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x030B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x030C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x030D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x030E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x030F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0310, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0311, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0312, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0313, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0314, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0315, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0316, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0317, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0318, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0319, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x031A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x031B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x031C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x031D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x031E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x031F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0320, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0321, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0322, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0323, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0324, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0325, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0326, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0327, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0328, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0329, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x032A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x032B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x032C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x032D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x032E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x032F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0330, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0331, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0332, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0333, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0334, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0335, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0336, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0337, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0338, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0339, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x033A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x033B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x033C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x033D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x033E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x033F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0340, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0341, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0342, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0343, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0344, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0345, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0346, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0347, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0348, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0349, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x034A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x034B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x034C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x034D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x034E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0350, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0351, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0352, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0353, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0354, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0355, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0356, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0357, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0358, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0359, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x035A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x035B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x035C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x035D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x035E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x035F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0360, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0361, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0362, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0363, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0364, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0365, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0366, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0367, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0368, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0369, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x036A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x036B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x036C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x036D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x036E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x036F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0483, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0484, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0485, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0486, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0487, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0591, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0592, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0593, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0594, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0595, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0596, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0597, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0598, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0599, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x059A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x059B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x059C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x059D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x059E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x059F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05A9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05AA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05AB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05AC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05AD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05AE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05AF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05B9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05BA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05BB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05BC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05BD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05BF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05C1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05C2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05C4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05C5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x05C7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0610, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0611, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0612, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0613, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0614, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0615, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0616, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0617, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0618, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0619, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x061A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x064B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x064C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x064D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x064E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x064F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0650, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0651, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0652, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0653, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0654, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0655, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0656, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0657, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0658, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0659, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x065A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x065B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x065C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x065D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x065E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x065F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0670, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06D6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06D7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06D8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06D9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06DA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06DB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06DC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06DF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06E8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06EA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06EB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x06ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0711, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0730, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0731, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0732, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0733, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0734, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0735, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0736, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0737, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0738, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0739, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x073A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x073B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x073C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x073D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x073E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x073F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0740, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0741, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0742, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0743, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0744, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0745, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0746, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0747, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0748, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0749, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x074A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07EB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07EE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07EF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07F0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07F1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07F2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07F3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x07FD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0816, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0817, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0818, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0819, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x081B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x081C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x081D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x081E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x081F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0820, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0821, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0822, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0823, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0825, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0826, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0827, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0829, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x082A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x082B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x082C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x082D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0859, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x085A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x085B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0898, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0899, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x089A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x089B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x089C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x089D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x089E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x089F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08CA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08CB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08CC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08CD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08CE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08CF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08D9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08DA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08DB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08DC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08DD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08DE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08DF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08E9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08EA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08EB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08EE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08EF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08F9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08FA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08FB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08FC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08FD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08FE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x08FF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0915, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0916, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0917, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0918, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0919, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x091A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x091B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x091C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x091D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x091E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x091F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0920, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0921, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0922, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0923, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0924, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0925, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0926, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0927, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0928, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0929, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x092A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x092B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x092C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x092D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x092E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x092F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0930, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0931, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0932, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0933, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0934, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0935, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0936, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0937, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0938, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0939, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x093C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x094D, UC_INDIC_CONJUNCT_BREAK_LINKER },
+ { 0x0951, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0952, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0953, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0954, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0958, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0959, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x095A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x095B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x095C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x095D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x095E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x095F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0978, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0979, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x097A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x097B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x097C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x097D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x097E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x097F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0995, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0996, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0997, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0998, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0999, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x099A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x099B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x099C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x099D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x099E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x099F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A0, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A1, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A2, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A3, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A4, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A5, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A6, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A7, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09A8, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09AA, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09AB, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09AC, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09AD, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09AE, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09AF, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09B0, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09B2, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09B6, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09B7, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09B8, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09B9, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09BC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x09CD, UC_INDIC_CONJUNCT_BREAK_LINKER },
+ { 0x09DC, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09DD, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09DF, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09F0, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09F1, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x09FE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0A3C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0A95, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A96, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A97, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A98, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A99, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A9A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A9B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A9C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A9D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A9E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0A9F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA0, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA1, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA2, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA3, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA4, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA5, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA6, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA7, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AA8, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AAA, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AAB, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AAC, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AAD, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AAE, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AAF, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB0, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB2, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB3, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB5, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB6, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB7, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB8, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0AB9, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0ABC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0ACD, UC_INDIC_CONJUNCT_BREAK_LINKER },
+ { 0x0AF9, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B15, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B16, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B17, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B18, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B19, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B1A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B1B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B1C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B1D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B1E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B1F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B20, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B21, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B22, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B23, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B24, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B25, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B26, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B27, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B28, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B2A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B2B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B2C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B2D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B2E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B2F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B30, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B32, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B33, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B35, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B36, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B37, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B38, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B39, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B3C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0B4D, UC_INDIC_CONJUNCT_BREAK_LINKER },
+ { 0x0B5C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B5D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B5F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0B71, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C15, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C16, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C17, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C18, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C19, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C1A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C1B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C1C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C1D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C1E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C1F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C20, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C21, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C22, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C23, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C24, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C25, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C26, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C27, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C28, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C2A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C2B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C2C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C2D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C2E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C2F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C30, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C31, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C32, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C33, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C34, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C35, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C36, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C37, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C38, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C39, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C3C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0C4D, UC_INDIC_CONJUNCT_BREAK_LINKER },
+ { 0x0C55, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0C56, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0C58, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C59, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0C5A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0CBC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0D15, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D16, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D17, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D18, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D19, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D1A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D1B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D1C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D1D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D1E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D1F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D20, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D21, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D22, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D23, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D24, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D25, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D26, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D27, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D28, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D29, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D2A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D2B, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D2C, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D2D, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D2E, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D2F, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D30, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D31, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D32, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D33, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D34, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D35, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D36, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D37, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D38, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D39, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D3A, UC_INDIC_CONJUNCT_BREAK_CONSONANT },
+ { 0x0D3B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0D3C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0D4D, UC_INDIC_CONJUNCT_BREAK_LINKER },
+ { 0x0E38, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0E39, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0E3A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0E48, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0E49, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0E4A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0E4B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0EB8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0EB9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0EBA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0EC8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0EC9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0ECA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0ECB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F18, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F19, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F35, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F37, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F39, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F71, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F72, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F74, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F7A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F7B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F7C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F7D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F80, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F82, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F83, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F84, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F86, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0F87, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x0FC6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1037, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1039, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x103A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x108D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x135D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x135E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x135F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1714, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x17D2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x17DD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x18A9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1939, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x193A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x193B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A17, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A18, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A60, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A75, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A76, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A77, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A78, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A79, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A7A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A7B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A7C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1A7F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AB9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ABA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ABB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ABC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ABD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ABF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1AC9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ACA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ACB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ACC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ACD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1ACE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B34, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B6B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B6C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B6D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B6E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B6F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B70, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B71, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B72, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1B73, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1BAB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1BE6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1C37, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CD9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CDA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CDB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CDC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CDD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CDE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CDF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CE8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CF4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CF8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1CF9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DC9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DCA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DCB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DCC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DCD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DCE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DCF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DD9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DDA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DDB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DDC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DDD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DDE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DDF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DE9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DEA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DEB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DEC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DEE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DEF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DF9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DFA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DFB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DFC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DFD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DFE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1DFF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x200D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20D9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20DA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20DB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20DC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20E1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20E5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20E6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20E7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20E8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20E9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20EA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20EB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20EE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20EF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x20F0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2CEF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2CF0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2CF1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2D7F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DE9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DEA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DEB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DEC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DEE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DEF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DF9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DFA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DFB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DFC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DFD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DFE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x2DFF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x302A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x302B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x302C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x302D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x302E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x302F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x3099, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x309A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA66F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA674, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA675, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA676, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA677, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA678, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA679, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA67A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA67B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA67C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA67D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA69E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA69F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA6F0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA6F1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA82C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8E9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8EA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8EB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8EE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8EF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8F0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA8F1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA92B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA92C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA92D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xA9B3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAB0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAB2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAB3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAB4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAB7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAB8, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAABE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAABF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAC1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xAAF6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xABED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFB1E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE20, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE21, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE22, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE23, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE24, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE25, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE26, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE27, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE28, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE29, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE2A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE2B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE2C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE2D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE2E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0xFE2F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x101FD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x102E0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10376, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10377, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10378, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10379, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1037A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10A0D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10A0F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10A38, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10A39, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10A3A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10A3F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10AE5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10AE6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10D24, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10D25, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10D26, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10D27, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10EAB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10EAC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10EFD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10EFE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10EFF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F46, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F47, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F48, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F49, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F4A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F4B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F4C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F4D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F4E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F4F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F50, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F82, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F83, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F84, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x10F85, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11070, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1107F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x110BA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11100, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11101, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11102, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11133, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11134, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11173, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x111CA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11236, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x112E9, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x112EA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1133B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1133C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11366, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11367, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11368, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11369, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1136A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1136B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1136C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11370, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11371, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11372, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11373, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11374, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11446, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1145E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x114C3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x115C0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x116B7, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1172B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1183A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1193E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11943, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11A34, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11A47, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11A99, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11D42, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11D44, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11D45, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11D97, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x11F42, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16AF0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16AF1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16AF2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16AF3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16AF4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B30, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B31, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B32, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B33, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B34, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B35, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x16B36, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1BC9E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D165, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D167, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D168, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D169, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D16E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D16F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D170, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D171, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D172, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D17B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D17C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D17D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D17E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D17F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D180, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D181, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D182, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D185, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D186, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D187, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D188, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D189, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D18A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D18B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D1AA, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D1AB, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D1AC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D1AD, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D242, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D243, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1D244, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E000, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E001, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E002, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E003, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E004, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E005, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E006, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E008, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E009, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E00A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E00B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E00C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E00D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E00E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E00F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E010, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E011, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E012, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E013, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E014, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E015, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E016, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E017, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E018, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E01B, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E01C, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E01D, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E01E, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E01F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E020, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E021, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E023, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E024, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E026, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E027, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E028, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E029, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E02A, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E08F, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E130, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E131, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E132, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E133, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E134, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E135, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E136, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E2AE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E2EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E2ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E2EE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E2EF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E4EC, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E4ED, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E4EE, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E4EF, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D0, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D1, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D2, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D3, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D4, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D5, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E8D6, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E944, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E945, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E946, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E947, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E948, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E949, UC_INDIC_CONJUNCT_BREAK_EXTEND },
+ { 0x1E94A, UC_INDIC_CONJUNCT_BREAK_EXTEND }
diff --git a/tests/unictype/test-joininggroup_byname.c b/tests/unictype/test-joininggroup_byname.c
index 6329a994..24d5c19d 100644
--- a/tests/unictype/test-joininggroup_byname.c
+++ b/tests/unictype/test-joininggroup_byname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining group functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joininggroup_name.c b/tests/unictype/test-joininggroup_name.c
index 7ff2eb98..9e4ef511 100644
--- a/tests/unictype/test-joininggroup_name.c
+++ b/tests/unictype/test-joininggroup_name.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining group functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joininggroup_of.c b/tests/unictype/test-joininggroup_of.c
index 792b5e37..65a70d5f 100644
--- a/tests/unictype/test-joininggroup_of.c
+++ b/tests/unictype/test-joininggroup_of.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining group functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joininggroup_of.h b/tests/unictype/test-joininggroup_of.h
index cbcad6bc..1ee9c058 100644
--- a/tests/unictype/test-joininggroup_of.h
+++ b/tests/unictype/test-joininggroup_of.h
@@ -1,8 +1,8 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Arabic joining group of Unicode characters. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-joiningtype_byname.c b/tests/unictype/test-joiningtype_byname.c
index 0134bde1..ecde322e 100644
--- a/tests/unictype/test-joiningtype_byname.c
+++ b/tests/unictype/test-joiningtype_byname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joiningtype_longname.c b/tests/unictype/test-joiningtype_longname.c
index 06c737d4..3d18ae2f 100644
--- a/tests/unictype/test-joiningtype_longname.c
+++ b/tests/unictype/test-joiningtype_longname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joiningtype_name.c b/tests/unictype/test-joiningtype_name.c
index f83468cb..0b2ca424 100644
--- a/tests/unictype/test-joiningtype_name.c
+++ b/tests/unictype/test-joiningtype_name.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joiningtype_of.c b/tests/unictype/test-joiningtype_of.c
index 6396f0d3..f0760b91 100644
--- a/tests/unictype/test-joiningtype_of.c
+++ b/tests/unictype/test-joiningtype_of.c
@@ -1,5 +1,5 @@
/* Test the Unicode character Arabic joining type functions.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify it
diff --git a/tests/unictype/test-joiningtype_of.h b/tests/unictype/test-joiningtype_of.h
index acea2865..7b1e072a 100644
--- a/tests/unictype/test-joiningtype_of.h
+++ b/tests/unictype/test-joiningtype_of.h
@@ -1,8 +1,8 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Arabic joining type of Unicode characters. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-mirror.c b/tests/unictype/test-mirror.c
index b09541cc..5494e197 100644
--- a/tests/unictype/test-mirror.c
+++ b/tests/unictype/test-mirror.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-numeric.c b/tests/unictype/test-numeric.c
index 5596b561..86718bf2 100644
--- a/tests/unictype/test-numeric.c
+++ b/tests/unictype/test-numeric.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-numeric.h b/tests/unictype/test-numeric.h
index cb2f3314..b8a7f809 100644
--- a/tests/unictype/test-numeric.h
+++ b/tests/unictype/test-numeric.h
@@ -1,8 +1,8 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Numeric values of Unicode characters. */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0. */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0. */
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_alphabetic.c b/tests/unictype/test-pr_alphabetic.c
index 6efcd5bd..027b3a01 100644
--- a/tests/unictype/test-pr_alphabetic.c
+++ b/tests/unictype/test-pr_alphabetic.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -746,6 +746,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-pr_ascii_hex_digit.c b/tests/unictype/test-pr_ascii_hex_digit.c
index 31eb2b79..bc48da86 100644
--- a/tests/unictype/test-pr_ascii_hex_digit.c
+++ b/tests/unictype/test-pr_ascii_hex_digit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_arabic_digit.c b/tests/unictype/test-pr_bidi_arabic_digit.c
index fde69de6..10e6bf03 100644
--- a/tests/unictype/test-pr_bidi_arabic_digit.c
+++ b/tests/unictype/test-pr_bidi_arabic_digit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_arabic_right_to_left.c b/tests/unictype/test-pr_bidi_arabic_right_to_left.c
index e0cde250..d97eb529 100644
--- a/tests/unictype/test-pr_bidi_arabic_right_to_left.c
+++ b/tests/unictype/test-pr_bidi_arabic_right_to_left.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_block_separator.c b/tests/unictype/test-pr_bidi_block_separator.c
index b348d689..50eade74 100644
--- a/tests/unictype/test-pr_bidi_block_separator.c
+++ b/tests/unictype/test-pr_bidi_block_separator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_boundary_neutral.c b/tests/unictype/test-pr_bidi_boundary_neutral.c
index 778d8247..8925fb22 100644
--- a/tests/unictype/test-pr_bidi_boundary_neutral.c
+++ b/tests/unictype/test-pr_bidi_boundary_neutral.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_common_separator.c b/tests/unictype/test-pr_bidi_common_separator.c
index 75e54c7f..7f73de79 100644
--- a/tests/unictype/test-pr_bidi_common_separator.c
+++ b/tests/unictype/test-pr_bidi_common_separator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_control.c b/tests/unictype/test-pr_bidi_control.c
index 60f1354e..5855b93c 100644
--- a/tests/unictype/test-pr_bidi_control.c
+++ b/tests/unictype/test-pr_bidi_control.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_embedding_or_override.c b/tests/unictype/test-pr_bidi_embedding_or_override.c
index 3fec8c05..e717b92a 100644
--- a/tests/unictype/test-pr_bidi_embedding_or_override.c
+++ b/tests/unictype/test-pr_bidi_embedding_or_override.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_eur_num_separator.c b/tests/unictype/test-pr_bidi_eur_num_separator.c
index 2a096694..c7a602f2 100644
--- a/tests/unictype/test-pr_bidi_eur_num_separator.c
+++ b/tests/unictype/test-pr_bidi_eur_num_separator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_eur_num_terminator.c b/tests/unictype/test-pr_bidi_eur_num_terminator.c
index 326d6fa0..0ed7ebb0 100644
--- a/tests/unictype/test-pr_bidi_eur_num_terminator.c
+++ b/tests/unictype/test-pr_bidi_eur_num_terminator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_european_digit.c b/tests/unictype/test-pr_bidi_european_digit.c
index b59bc8cb..3f72d04c 100644
--- a/tests/unictype/test-pr_bidi_european_digit.c
+++ b/tests/unictype/test-pr_bidi_european_digit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_hebrew_right_to_left.c b/tests/unictype/test-pr_bidi_hebrew_right_to_left.c
index 90dfa1e6..f6b97339 100644
--- a/tests/unictype/test-pr_bidi_hebrew_right_to_left.c
+++ b/tests/unictype/test-pr_bidi_hebrew_right_to_left.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_left_to_right.c b/tests/unictype/test-pr_bidi_left_to_right.c
index ce6dc5d7..3a81b5ec 100644
--- a/tests/unictype/test-pr_bidi_left_to_right.c
+++ b/tests/unictype/test-pr_bidi_left_to_right.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -233,7 +233,6 @@
{ 0x2E9A, 0x2E9A },
{ 0x2EF4, 0x2EFF },
{ 0x2FD6, 0x2FEF },
- { 0x2FFC, 0x2FFF },
{ 0x3005, 0x3007 },
{ 0x3021, 0x3029 },
{ 0x302E, 0x302F },
@@ -243,7 +242,8 @@
{ 0x309D, 0x309F },
{ 0x30A1, 0x30FA },
{ 0x30FC, 0x31BF },
- { 0x31E4, 0x321C },
+ { 0x31E4, 0x31EE },
+ { 0x31F0, 0x321C },
{ 0x321F, 0x324F },
{ 0x3260, 0x327B },
{ 0x327F, 0x32B0 },
diff --git a/tests/unictype/test-pr_bidi_non_spacing_mark.c b/tests/unictype/test-pr_bidi_non_spacing_mark.c
index 6cc88022..813373ac 100644
--- a/tests/unictype/test-pr_bidi_non_spacing_mark.c
+++ b/tests/unictype/test-pr_bidi_non_spacing_mark.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_other_neutral.c b/tests/unictype/test-pr_bidi_other_neutral.c
index 5d72a797..0c968235 100644
--- a/tests/unictype/test-pr_bidi_other_neutral.c
+++ b/tests/unictype/test-pr_bidi_other_neutral.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -102,7 +102,7 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
+ { 0x2FF0, 0x2FFF },
{ 0x3001, 0x3004 },
{ 0x3008, 0x3020 },
{ 0x3030, 0x3030 },
@@ -112,6 +112,7 @@
{ 0x30A0, 0x30A0 },
{ 0x30FB, 0x30FB },
{ 0x31C0, 0x31E3 },
+ { 0x31EF, 0x31EF },
{ 0x321D, 0x321E },
{ 0x3250, 0x325F },
{ 0x327C, 0x327E },
diff --git a/tests/unictype/test-pr_bidi_pdf.c b/tests/unictype/test-pr_bidi_pdf.c
index 60e45477..eabf3f29 100644
--- a/tests/unictype/test-pr_bidi_pdf.c
+++ b/tests/unictype/test-pr_bidi_pdf.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_segment_separator.c b/tests/unictype/test-pr_bidi_segment_separator.c
index 5f6e1e20..8e4da46a 100644
--- a/tests/unictype/test-pr_bidi_segment_separator.c
+++ b/tests/unictype/test-pr_bidi_segment_separator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_bidi_whitespace.c b/tests/unictype/test-pr_bidi_whitespace.c
index 3c165aa3..d4a47fd9 100644
--- a/tests/unictype/test-pr_bidi_whitespace.c
+++ b/tests/unictype/test-pr_bidi_whitespace.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_byname.c b/tests/unictype/test-pr_byname.c
index 6cdfb9d5..a3435e26 100644
--- a/tests/unictype/test-pr_byname.c
+++ b/tests/unictype/test-pr_byname.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-pr_case_ignorable.c b/tests/unictype/test-pr_case_ignorable.c
index 558694d0..b0f33ab9 100644
--- a/tests/unictype/test-pr_case_ignorable.c
+++ b/tests/unictype/test-pr_case_ignorable.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_cased.c b/tests/unictype/test-pr_cased.c
index 1d060fca..d1966ad7 100644
--- a/tests/unictype/test-pr_cased.c
+++ b/tests/unictype/test-pr_cased.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_changes_when_casefolded.c b/tests/unictype/test-pr_changes_when_casefolded.c
index f0da0167..7c7c5cea 100644
--- a/tests/unictype/test-pr_changes_when_casefolded.c
+++ b/tests/unictype/test-pr_changes_when_casefolded.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_changes_when_casemapped.c b/tests/unictype/test-pr_changes_when_casemapped.c
index 42bfa219..c8e508b2 100644
--- a/tests/unictype/test-pr_changes_when_casemapped.c
+++ b/tests/unictype/test-pr_changes_when_casemapped.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_changes_when_lowercased.c b/tests/unictype/test-pr_changes_when_lowercased.c
index 87607ec2..95a4b888 100644
--- a/tests/unictype/test-pr_changes_when_lowercased.c
+++ b/tests/unictype/test-pr_changes_when_lowercased.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_changes_when_titlecased.c b/tests/unictype/test-pr_changes_when_titlecased.c
index 55f12684..2ce0e2bb 100644
--- a/tests/unictype/test-pr_changes_when_titlecased.c
+++ b/tests/unictype/test-pr_changes_when_titlecased.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_changes_when_uppercased.c b/tests/unictype/test-pr_changes_when_uppercased.c
index 4b830f3e..ebbe3cf9 100644
--- a/tests/unictype/test-pr_changes_when_uppercased.c
+++ b/tests/unictype/test-pr_changes_when_uppercased.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_combining.c b/tests/unictype/test-pr_combining.c
index 31b8df04..bccf27d3 100644
--- a/tests/unictype/test-pr_combining.c
+++ b/tests/unictype/test-pr_combining.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_composite.c b/tests/unictype/test-pr_composite.c
index 4cccc8e8..054b7fc9 100644
--- a/tests/unictype/test-pr_composite.c
+++ b/tests/unictype/test-pr_composite.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_currency_symbol.c b/tests/unictype/test-pr_currency_symbol.c
index 4a59165f..7db0104a 100644
--- a/tests/unictype/test-pr_currency_symbol.c
+++ b/tests/unictype/test-pr_currency_symbol.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_dash.c b/tests/unictype/test-pr_dash.c
index 7ac4b3e8..5788ddbb 100644
--- a/tests/unictype/test-pr_dash.c
+++ b/tests/unictype/test-pr_dash.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_decimal_digit.c b/tests/unictype/test-pr_decimal_digit.c
index 45d5a6d4..aedacc94 100644
--- a/tests/unictype/test-pr_decimal_digit.c
+++ b/tests/unictype/test-pr_decimal_digit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_default_ignorable_code_point.c b/tests/unictype/test-pr_default_ignorable_code_point.c
index e536671b..194dc915 100644
--- a/tests/unictype/test-pr_default_ignorable_code_point.c
+++ b/tests/unictype/test-pr_default_ignorable_code_point.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_deprecated.c b/tests/unictype/test-pr_deprecated.c
index 1df2bc59..ba1cbd2c 100644
--- a/tests/unictype/test-pr_deprecated.c
+++ b/tests/unictype/test-pr_deprecated.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_diacritic.c b/tests/unictype/test-pr_diacritic.c
index f5dc0a67..d4c20042 100644
--- a/tests/unictype/test-pr_diacritic.c
+++ b/tests/unictype/test-pr_diacritic.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_emoji.c b/tests/unictype/test-pr_emoji.c
index 8df689a2..f6b7859d 100644
--- a/tests/unictype/test-pr_emoji.c
+++ b/tests/unictype/test-pr_emoji.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_emoji_component.c b/tests/unictype/test-pr_emoji_component.c
index 38009fe3..af70bf48 100644
--- a/tests/unictype/test-pr_emoji_component.c
+++ b/tests/unictype/test-pr_emoji_component.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_emoji_modifier.c b/tests/unictype/test-pr_emoji_modifier.c
index d298af72..1a60de9e 100644
--- a/tests/unictype/test-pr_emoji_modifier.c
+++ b/tests/unictype/test-pr_emoji_modifier.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_emoji_modifier_base.c b/tests/unictype/test-pr_emoji_modifier_base.c
index 90430d38..e38058bb 100644
--- a/tests/unictype/test-pr_emoji_modifier_base.c
+++ b/tests/unictype/test-pr_emoji_modifier_base.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_emoji_presentation.c b/tests/unictype/test-pr_emoji_presentation.c
index fd1b3043..fe6b3a20 100644
--- a/tests/unictype/test-pr_emoji_presentation.c
+++ b/tests/unictype/test-pr_emoji_presentation.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_extended_pictographic.c b/tests/unictype/test-pr_extended_pictographic.c
index 9fa0b3af..add58454 100644
--- a/tests/unictype/test-pr_extended_pictographic.c
+++ b/tests/unictype/test-pr_extended_pictographic.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_extender.c b/tests/unictype/test-pr_extender.c
index c2ec203b..886710f0 100644
--- a/tests/unictype/test-pr_extender.c
+++ b/tests/unictype/test-pr_extender.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_format_control.c b/tests/unictype/test-pr_format_control.c
index 0c2045a8..9a734c56 100644
--- a/tests/unictype/test-pr_format_control.c
+++ b/tests/unictype/test-pr_format_control.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_grapheme_base.c b/tests/unictype/test-pr_grapheme_base.c
index 3d908500..aeb6af9b 100644
--- a/tests/unictype/test-pr_grapheme_base.c
+++ b/tests/unictype/test-pr_grapheme_base.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -369,15 +369,14 @@
{ 0x2E80, 0x2E99 },
{ 0x2E9B, 0x2EF3 },
{ 0x2F00, 0x2FD5 },
- { 0x2FF0, 0x2FFB },
- { 0x3000, 0x3029 },
+ { 0x2FF0, 0x3029 },
{ 0x3030, 0x303F },
{ 0x3041, 0x3096 },
{ 0x309B, 0x30FF },
{ 0x3105, 0x312F },
{ 0x3131, 0x318E },
{ 0x3190, 0x31E3 },
- { 0x31F0, 0x321E },
+ { 0x31EF, 0x321E },
{ 0x3220, 0xA48C },
{ 0xA490, 0xA4C6 },
{ 0xA4D0, 0xA62B },
@@ -889,6 +888,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-pr_grapheme_extend.c b/tests/unictype/test-pr_grapheme_extend.c
index fb8e068d..d168a4ce 100644
--- a/tests/unictype/test-pr_grapheme_extend.c
+++ b/tests/unictype/test-pr_grapheme_extend.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_grapheme_link.c b/tests/unictype/test-pr_grapheme_link.c
index ce5c9039..3b741be4 100644
--- a/tests/unictype/test-pr_grapheme_link.c
+++ b/tests/unictype/test-pr_grapheme_link.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_hex_digit.c b/tests/unictype/test-pr_hex_digit.c
index 4c3d48c7..578b7c97 100644
--- a/tests/unictype/test-pr_hex_digit.c
+++ b/tests/unictype/test-pr_hex_digit.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_hyphen.c b/tests/unictype/test-pr_hyphen.c
index 351e98a7..b8a3238d 100644
--- a/tests/unictype/test-pr_hyphen.c
+++ b/tests/unictype/test-pr_hyphen.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_id_compat_math_continue.c b/tests/unictype/test-pr_id_compat_math_continue.c
new file mode 100644
index 00000000..c5ff0f34
--- /dev/null
+++ b/tests/unictype/test-pr_id_compat_math_continue.c
@@ -0,0 +1,40 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
+
+ This file 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 file 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 <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x00B2, 0x00B3 },
+ { 0x00B9, 0x00B9 },
+ { 0x2070, 0x2070 },
+ { 0x2074, 0x207E },
+ { 0x2080, 0x208E },
+ { 0x2202, 0x2202 },
+ { 0x2207, 0x2207 },
+ { 0x221E, 0x221E },
+ { 0x1D6C1, 0x1D6C1 },
+ { 0x1D6DB, 0x1D6DB },
+ { 0x1D6FB, 0x1D6FB },
+ { 0x1D715, 0x1D715 },
+ { 0x1D735, 0x1D735 },
+ { 0x1D74F, 0x1D74F },
+ { 0x1D76F, 0x1D76F },
+ { 0x1D789, 0x1D789 },
+ { 0x1D7A9, 0x1D7A9 },
+ { 0x1D7C3, 0x1D7C3 }
+
+#define PREDICATE(c) uc_is_property_id_compat_math_continue (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_id_compat_math_start.c b/tests/unictype/test-pr_id_compat_math_start.c
new file mode 100644
index 00000000..58848243
--- /dev/null
+++ b/tests/unictype/test-pr_id_compat_math_start.c
@@ -0,0 +1,35 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
+
+ This file 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 file 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 <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2202, 0x2202 },
+ { 0x2207, 0x2207 },
+ { 0x221E, 0x221E },
+ { 0x1D6C1, 0x1D6C1 },
+ { 0x1D6DB, 0x1D6DB },
+ { 0x1D6FB, 0x1D6FB },
+ { 0x1D715, 0x1D715 },
+ { 0x1D735, 0x1D735 },
+ { 0x1D74F, 0x1D74F },
+ { 0x1D76F, 0x1D76F },
+ { 0x1D789, 0x1D789 },
+ { 0x1D7A9, 0x1D7A9 },
+ { 0x1D7C3, 0x1D7C3 }
+
+#define PREDICATE(c) uc_is_property_id_compat_math_start (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_id_continue.c b/tests/unictype/test-pr_id_continue.c
index d72084de..39675ef1 100644
--- a/tests/unictype/test-pr_id_continue.c
+++ b/tests/unictype/test-pr_id_continue.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -317,6 +317,7 @@
{ 0x1FE0, 0x1FEC },
{ 0x1FF2, 0x1FF4 },
{ 0x1FF6, 0x1FFC },
+ { 0x200C, 0x200D },
{ 0x203F, 0x2040 },
{ 0x2054, 0x2054 },
{ 0x2071, 0x2071 },
@@ -361,8 +362,7 @@
{ 0x3038, 0x303C },
{ 0x3041, 0x3096 },
{ 0x3099, 0x309F },
- { 0x30A1, 0x30FA },
- { 0x30FC, 0x30FF },
+ { 0x30A1, 0x30FF },
{ 0x3105, 0x312F },
{ 0x3131, 0x318E },
{ 0x31A0, 0x31BF },
@@ -440,7 +440,7 @@
{ 0xFF21, 0xFF3A },
{ 0xFF3F, 0xFF3F },
{ 0xFF41, 0xFF5A },
- { 0xFF66, 0xFFBE },
+ { 0xFF65, 0xFFBE },
{ 0xFFC2, 0xFFC7 },
{ 0xFFCA, 0xFFCF },
{ 0xFFD2, 0xFFD7 },
@@ -781,6 +781,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF },
diff --git a/tests/unictype/test-pr_id_start.c b/tests/unictype/test-pr_id_start.c
index e8ccdf56..62bfc045 100644
--- a/tests/unictype/test-pr_id_start.c
+++ b/tests/unictype/test-pr_id_start.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -673,6 +673,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-pr_ideographic.c b/tests/unictype/test-pr_ideographic.c
index 8221e37b..0d71c94c 100644
--- a/tests/unictype/test-pr_ideographic.c
+++ b/tests/unictype/test-pr_ideographic.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -34,6 +34,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-pr_ids_binary_operator.c b/tests/unictype/test-pr_ids_binary_operator.c
index 50722c30..49383cc0 100644
--- a/tests/unictype/test-pr_ids_binary_operator.c
+++ b/tests/unictype/test-pr_ids_binary_operator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -18,7 +18,8 @@
#include "test-predicate-part1.h"
{ 0x2FF0, 0x2FF1 },
- { 0x2FF4, 0x2FFB }
+ { 0x2FF4, 0x2FFD },
+ { 0x31EF, 0x31EF }
#define PREDICATE(c) uc_is_property_ids_binary_operator (c)
#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ids_trinary_operator.c b/tests/unictype/test-pr_ids_trinary_operator.c
index bce8bc4a..36e455cb 100644
--- a/tests/unictype/test-pr_ids_trinary_operator.c
+++ b/tests/unictype/test-pr_ids_trinary_operator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_ids_unary_operator.c b/tests/unictype/test-pr_ids_unary_operator.c
new file mode 100644
index 00000000..ec4b0e32
--- /dev/null
+++ b/tests/unictype/test-pr_ids_unary_operator.c
@@ -0,0 +1,23 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
+
+ This file 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 file 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 <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x2FFE, 0x2FFF }
+
+#define PREDICATE(c) uc_is_property_ids_unary_operator (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_ignorable_control.c b/tests/unictype/test-pr_ignorable_control.c
index f37e657a..1903d5a5 100644
--- a/tests/unictype/test-pr_ignorable_control.c
+++ b/tests/unictype/test-pr_ignorable_control.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_iso_control.c b/tests/unictype/test-pr_iso_control.c
index 725e220a..c033d15c 100644
--- a/tests/unictype/test-pr_iso_control.c
+++ b/tests/unictype/test-pr_iso_control.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_join_control.c b/tests/unictype/test-pr_join_control.c
index 71e11fc3..299d3a80 100644
--- a/tests/unictype/test-pr_join_control.c
+++ b/tests/unictype/test-pr_join_control.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_left_of_pair.c b/tests/unictype/test-pr_left_of_pair.c
index b35a7248..162571ae 100644
--- a/tests/unictype/test-pr_left_of_pair.c
+++ b/tests/unictype/test-pr_left_of_pair.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_line_separator.c b/tests/unictype/test-pr_line_separator.c
index 80ebf303..76f9291c 100644
--- a/tests/unictype/test-pr_line_separator.c
+++ b/tests/unictype/test-pr_line_separator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_logical_order_exception.c b/tests/unictype/test-pr_logical_order_exception.c
index a24f4688..99a11123 100644
--- a/tests/unictype/test-pr_logical_order_exception.c
+++ b/tests/unictype/test-pr_logical_order_exception.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_lowercase.c b/tests/unictype/test-pr_lowercase.c
index 226f6371..ec16470f 100644
--- a/tests/unictype/test-pr_lowercase.c
+++ b/tests/unictype/test-pr_lowercase.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_math.c b/tests/unictype/test-pr_math.c
index fb6e4d56..98daf24f 100644
--- a/tests/unictype/test-pr_math.c
+++ b/tests/unictype/test-pr_math.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_non_break.c b/tests/unictype/test-pr_non_break.c
index 9dd2fccb..9b607060 100644
--- a/tests/unictype/test-pr_non_break.c
+++ b/tests/unictype/test-pr_non_break.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_not_a_character.c b/tests/unictype/test-pr_not_a_character.c
index 259416dd..477c1837 100644
--- a/tests/unictype/test-pr_not_a_character.c
+++ b/tests/unictype/test-pr_not_a_character.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_numeric.c b/tests/unictype/test-pr_numeric.c
index c86261cb..746abd28 100644
--- a/tests/unictype/test-pr_numeric.c
+++ b/tests/unictype/test-pr_numeric.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_alphabetic.c b/tests/unictype/test-pr_other_alphabetic.c
index cf0476e5..d0ff062f 100644
--- a/tests/unictype/test-pr_other_alphabetic.c
+++ b/tests/unictype/test-pr_other_alphabetic.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_default_ignorable_code_point.c b/tests/unictype/test-pr_other_default_ignorable_code_point.c
index b51db935..3fd52fbd 100644
--- a/tests/unictype/test-pr_other_default_ignorable_code_point.c
+++ b/tests/unictype/test-pr_other_default_ignorable_code_point.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_grapheme_extend.c b/tests/unictype/test-pr_other_grapheme_extend.c
index 50bc89c2..960fb927 100644
--- a/tests/unictype/test-pr_other_grapheme_extend.c
+++ b/tests/unictype/test-pr_other_grapheme_extend.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_id_continue.c b/tests/unictype/test-pr_other_id_continue.c
index ce4bcaeb..e1e2fdda 100644
--- a/tests/unictype/test-pr_other_id_continue.c
+++ b/tests/unictype/test-pr_other_id_continue.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -20,7 +20,10 @@
{ 0x00B7, 0x00B7 },
{ 0x0387, 0x0387 },
{ 0x1369, 0x1371 },
- { 0x19DA, 0x19DA }
+ { 0x19DA, 0x19DA },
+ { 0x200C, 0x200D },
+ { 0x30FB, 0x30FB },
+ { 0xFF65, 0xFF65 }
#define PREDICATE(c) uc_is_property_other_id_continue (c)
#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_other_id_start.c b/tests/unictype/test-pr_other_id_start.c
index c9b8efc5..dfbceb84 100644
--- a/tests/unictype/test-pr_other_id_start.c
+++ b/tests/unictype/test-pr_other_id_start.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_lowercase.c b/tests/unictype/test-pr_other_lowercase.c
index 3d7ba197..09b0dae4 100644
--- a/tests/unictype/test-pr_other_lowercase.c
+++ b/tests/unictype/test-pr_other_lowercase.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_math.c b/tests/unictype/test-pr_other_math.c
index b0715985..61306135 100644
--- a/tests/unictype/test-pr_other_math.c
+++ b/tests/unictype/test-pr_other_math.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_other_uppercase.c b/tests/unictype/test-pr_other_uppercase.c
index 6f5063f3..5a4541c3 100644
--- a/tests/unictype/test-pr_other_uppercase.c
+++ b/tests/unictype/test-pr_other_uppercase.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_paired_punctuation.c b/tests/unictype/test-pr_paired_punctuation.c
index a2f6671f..27565faf 100644
--- a/tests/unictype/test-pr_paired_punctuation.c
+++ b/tests/unictype/test-pr_paired_punctuation.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_paragraph_separator.c b/tests/unictype/test-pr_paragraph_separator.c
index 7cc3de9e..77d00fbd 100644
--- a/tests/unictype/test-pr_paragraph_separator.c
+++ b/tests/unictype/test-pr_paragraph_separator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_pattern_syntax.c b/tests/unictype/test-pr_pattern_syntax.c
index d265854b..ccc38488 100644
--- a/tests/unictype/test-pr_pattern_syntax.c
+++ b/tests/unictype/test-pr_pattern_syntax.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_pattern_white_space.c b/tests/unictype/test-pr_pattern_white_space.c
index b95978dd..e45e9ca9 100644
--- a/tests/unictype/test-pr_pattern_white_space.c
+++ b/tests/unictype/test-pr_pattern_white_space.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_prepended_concatenation_mark.c b/tests/unictype/test-pr_prepended_concatenation_mark.c
new file mode 100644
index 00000000..5a86b2c5
--- /dev/null
+++ b/tests/unictype/test-pr_prepended_concatenation_mark.c
@@ -0,0 +1,29 @@
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Test the Unicode character type functions.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
+
+ This file 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 file 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 <https://www.gnu.org/licenses/>. */
+
+#include "test-predicate-part1.h"
+
+ { 0x0600, 0x0605 },
+ { 0x06DD, 0x06DD },
+ { 0x070F, 0x070F },
+ { 0x0890, 0x0891 },
+ { 0x08E2, 0x08E2 },
+ { 0x110BD, 0x110BD },
+ { 0x110CD, 0x110CD }
+
+#define PREDICATE(c) uc_is_property_prepended_concatenation_mark (c)
+#include "test-predicate-part2.h"
diff --git a/tests/unictype/test-pr_private_use.c b/tests/unictype/test-pr_private_use.c
index c5c96c0e..167dd4e0 100644
--- a/tests/unictype/test-pr_private_use.c
+++ b/tests/unictype/test-pr_private_use.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_punctuation.c b/tests/unictype/test-pr_punctuation.c
index 3d0d45bf..29748f58 100644
--- a/tests/unictype/test-pr_punctuation.c
+++ b/tests/unictype/test-pr_punctuation.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_quotation_mark.c b/tests/unictype/test-pr_quotation_mark.c
index b0fc20ff..4db6b6f6 100644
--- a/tests/unictype/test-pr_quotation_mark.c
+++ b/tests/unictype/test-pr_quotation_mark.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_radical.c b/tests/unictype/test-pr_radical.c
index d732588a..c9a2bdd5 100644
--- a/tests/unictype/test-pr_radical.c
+++ b/tests/unictype/test-pr_radical.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_regional_indicator.c b/tests/unictype/test-pr_regional_indicator.c
index 2f912578..ecee1925 100644
--- a/tests/unictype/test-pr_regional_indicator.c
+++ b/tests/unictype/test-pr_regional_indicator.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_sentence_terminal.c b/tests/unictype/test-pr_sentence_terminal.c
index e2d1d3fd..100b7650 100644
--- a/tests/unictype/test-pr_sentence_terminal.c
+++ b/tests/unictype/test-pr_sentence_terminal.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -34,6 +34,7 @@
{ 0x1367, 0x1368 },
{ 0x166E, 0x166E },
{ 0x1735, 0x1736 },
+ { 0x17D4, 0x17D5 },
{ 0x1803, 0x1803 },
{ 0x1809, 0x1809 },
{ 0x1944, 0x1945 },
diff --git a/tests/unictype/test-pr_soft_dotted.c b/tests/unictype/test-pr_soft_dotted.c
index a4b9212c..6a3677da 100644
--- a/tests/unictype/test-pr_soft_dotted.c
+++ b/tests/unictype/test-pr_soft_dotted.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_space.c b/tests/unictype/test-pr_space.c
index 6530990b..a1795c4e 100644
--- a/tests/unictype/test-pr_space.c
+++ b/tests/unictype/test-pr_space.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_terminal_punctuation.c b/tests/unictype/test-pr_terminal_punctuation.c
index 65ccbc8e..b41adece 100644
--- a/tests/unictype/test-pr_terminal_punctuation.c
+++ b/tests/unictype/test-pr_terminal_punctuation.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_test.c b/tests/unictype/test-pr_test.c
index c08c32c8..e479123c 100644
--- a/tests/unictype/test-pr_test.c
+++ b/tests/unictype/test-pr_test.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-pr_titlecase.c b/tests/unictype/test-pr_titlecase.c
index e9e26b22..779bd919 100644
--- a/tests/unictype/test-pr_titlecase.c
+++ b/tests/unictype/test-pr_titlecase.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_unassigned_code_value.c b/tests/unictype/test-pr_unassigned_code_value.c
index 607e938d..be826822 100644
--- a/tests/unictype/test-pr_unassigned_code_value.c
+++ b/tests/unictype/test-pr_unassigned_code_value.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -286,13 +286,12 @@
{ 0x2E9A, 0x2E9A },
{ 0x2EF4, 0x2EFF },
{ 0x2FD6, 0x2FEF },
- { 0x2FFC, 0x2FFF },
{ 0x3040, 0x3040 },
{ 0x3097, 0x3098 },
{ 0x3100, 0x3104 },
{ 0x3130, 0x3130 },
{ 0x318F, 0x318F },
- { 0x31E4, 0x31EF },
+ { 0x31E4, 0x31EE },
{ 0x321F, 0x321F },
{ 0xA48D, 0xA48F },
{ 0xA4C7, 0xA4CF },
@@ -713,7 +712,8 @@
{ 0x2B73A, 0x2B73F },
{ 0x2B81E, 0x2B81F },
{ 0x2CEA2, 0x2CEAF },
- { 0x2EBE1, 0x2F7FF },
+ { 0x2EBE1, 0x2EBEF },
+ { 0x2EE5E, 0x2F7FF },
{ 0x2FA1E, 0x2FFFD },
{ 0x3134B, 0x3134F },
{ 0x323B0, 0x3FFFD },
diff --git a/tests/unictype/test-pr_unified_ideograph.c b/tests/unictype/test-pr_unified_ideograph.c
index 234014a7..9ecdb7fb 100644
--- a/tests/unictype/test-pr_unified_ideograph.c
+++ b/tests/unictype/test-pr_unified_ideograph.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -31,6 +31,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-pr_uppercase.c b/tests/unictype/test-pr_uppercase.c
index 03a6b490..826eb210 100644
--- a/tests/unictype/test-pr_uppercase.c
+++ b/tests/unictype/test-pr_uppercase.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_variation_selector.c b/tests/unictype/test-pr_variation_selector.c
index 98f81fef..0a2e37e5 100644
--- a/tests/unictype/test-pr_variation_selector.c
+++ b/tests/unictype/test-pr_variation_selector.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_white_space.c b/tests/unictype/test-pr_white_space.c
index 91367da2..c39d3def 100644
--- a/tests/unictype/test-pr_white_space.c
+++ b/tests/unictype/test-pr_white_space.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-pr_xid_continue.c b/tests/unictype/test-pr_xid_continue.c
index 34d4708b..91371e8f 100644
--- a/tests/unictype/test-pr_xid_continue.c
+++ b/tests/unictype/test-pr_xid_continue.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -317,6 +317,7 @@
{ 0x1FE0, 0x1FEC },
{ 0x1FF2, 0x1FF4 },
{ 0x1FF6, 0x1FFC },
+ { 0x200C, 0x200D },
{ 0x203F, 0x2040 },
{ 0x2054, 0x2054 },
{ 0x2071, 0x2071 },
@@ -362,8 +363,7 @@
{ 0x3041, 0x3096 },
{ 0x3099, 0x309A },
{ 0x309D, 0x309F },
- { 0x30A1, 0x30FA },
- { 0x30FC, 0x30FF },
+ { 0x30A1, 0x30FF },
{ 0x3105, 0x312F },
{ 0x3131, 0x318E },
{ 0x31A0, 0x31BF },
@@ -447,7 +447,7 @@
{ 0xFF21, 0xFF3A },
{ 0xFF3F, 0xFF3F },
{ 0xFF41, 0xFF5A },
- { 0xFF66, 0xFFBE },
+ { 0xFF65, 0xFFBE },
{ 0xFFC2, 0xFFC7 },
{ 0xFFCA, 0xFFCF },
{ 0xFFD2, 0xFFD7 },
@@ -788,6 +788,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF },
diff --git a/tests/unictype/test-pr_xid_start.c b/tests/unictype/test-pr_xid_start.c
index 0e4f7d31..09ce3db1 100644
--- a/tests/unictype/test-pr_xid_start.c
+++ b/tests/unictype/test-pr_xid_start.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@ -680,6 +680,7 @@
{ 0x2B740, 0x2B81D },
{ 0x2B820, 0x2CEA1 },
{ 0x2CEB0, 0x2EBE0 },
+ { 0x2EBF0, 0x2EE5D },
{ 0x2F800, 0x2FA1D },
{ 0x30000, 0x3134A },
{ 0x31350, 0x323AF }
diff --git a/tests/unictype/test-pr_zero_width.c b/tests/unictype/test-pr_zero_width.c
index a8eef5ec..6767de44 100644
--- a/tests/unictype/test-pr_zero_width.c
+++ b/tests/unictype/test-pr_zero_width.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-predicate-part1.h b/tests/unictype/test-predicate-part1.h
index 76de3a78..10eb668b 100644
--- a/tests/unictype/test-predicate-part1.h
+++ b/tests/unictype/test-predicate-part1.h
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-predicate-part2.h b/tests/unictype/test-predicate-part2.h
index d42921ab..aecd5f5a 100644
--- a/tests/unictype/test-predicate-part2.h
+++ b/tests/unictype/test-predicate-part2.h
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-scripts.c b/tests/unictype/test-scripts.c
index 059006e1..6f51b631 100644
--- a/tests/unictype/test-scripts.c
+++ b/tests/unictype/test-scripts.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-sy_c_ident.c b/tests/unictype/test-sy_c_ident.c
index baf8b106..87022732 100644
--- a/tests/unictype/test-sy_c_ident.c
+++ b/tests/unictype/test-sy_c_ident.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-sy_c_whitespace.c b/tests/unictype/test-sy_c_whitespace.c
index 1d047752..88daee7a 100644
--- a/tests/unictype/test-sy_c_whitespace.c
+++ b/tests/unictype/test-sy_c_whitespace.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unictype/test-sy_java_ident.c b/tests/unictype/test-sy_java_ident.c
index 206d3940..d3075b17 100644
--- a/tests/unictype/test-sy_java_ident.c
+++ b/tests/unictype/test-sy_java_ident.c
@@ -1,5 +1,5 @@
/* Test the Unicode character type functions.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unictype/test-sy_java_whitespace.c b/tests/unictype/test-sy_java_whitespace.c
index 4ce5982a..8c974f07 100644
--- a/tests/unictype/test-sy_java_whitespace.c
+++ b/tests/unictype/test-sy_java_whitespace.c
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode character type functions.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unigbrk/GraphemeBreakTest.txt b/tests/unigbrk/GraphemeBreakTest.txt
index 3c73f97b..d9c7b066 100644
--- a/tests/unigbrk/GraphemeBreakTest.txt
+++ b/tests/unigbrk/GraphemeBreakTest.txt
@@ -1,6 +1,46 @@
-# GraphemeBreakTest-15.0.0.txt
-# Date: 2022-02-26, 00:38:37 GMT
-# © 2022 Unicode®, Inc.
+# UNICODE LICENSE V3
+#
+# COPYRIGHT AND PERMISSION NOTICE
+#
+# Copyright © 1991-2024 Unicode, Inc.
+#
+# NOTICE TO USER: Carefully read the following legal agreement. BY
+# DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+# SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+# TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+# DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of data files and any associated documentation (the "Data Files") or
+# software and any associated documentation (the "Software") to deal in the
+# Data Files or Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, and/or sell
+# copies of the Data Files or Software, and to permit persons to whom the
+# Data Files or Software are furnished to do so, provided that either (a)
+# this copyright and permission notice appear with all copies of the Data
+# Files or Software, or (b) this copyright and permission notice appear in
+# associated Documentation.
+#
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+# THIRD PARTY RIGHTS.
+#
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+# BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+# FILES OR SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder shall
+# not be used in advertising or otherwise to promote the sale, use or other
+# dealings in these Data Files or Software without prior written
+# authorization of the copyright holder.
+
+# GraphemeBreakTest-15.1.0.txt
+# Date: 2023-08-07, 15:52:55 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -36,8 +76,8 @@
÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0020 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0020 × 0308 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0020 × 0A03 ÷ # ÷ [0.2] SPACE (Other) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0020 × 0308 × 0A03 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0020 × 0308 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -48,10 +88,24 @@
÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0020 × 0900 ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 × 0900 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 ÷ 0904 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0904 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 ÷ 0D4E ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0D4E ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 093C ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 0308 × 093C ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 0308 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -70,8 +124,8 @@
÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 000D ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 000D ÷ 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000D ÷ 0A03 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000D ÷ 0308 × 0A03 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 000D ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000D ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -82,10 +136,24 @@
÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 000D ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 000D ÷ 0900 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 × 0900 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0904 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0904 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0D4E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0D4E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0915 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 000D ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 093C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 0308 × 093C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 094D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 0308 × 094D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
@@ -104,8 +172,8 @@
÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 000A ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 000A ÷ 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000A ÷ 0A03 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000A ÷ 0308 × 0A03 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 000A ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000A ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -116,10 +184,24 @@
÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 000A ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 000A ÷ 0900 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 × 0900 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0904 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0904 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0D4E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0D4E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0915 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 000A ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 093C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 0308 × 093C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 094D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 0308 × 094D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
@@ -138,8 +220,8 @@
÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0001 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0001 ÷ 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0001 ÷ 0A03 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0001 ÷ 0308 × 0A03 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0001 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0001 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -150,10 +232,24 @@
÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0001 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0001 ÷ 0900 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 × 0900 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0904 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0904 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0D4E ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0D4E ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0915 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0001 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0001 ÷ 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 093C ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 0308 × 093C ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 094D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 0308 × 094D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
@@ -172,8 +268,8 @@
÷ 034F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 034F ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 034F × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 034F × 0A03 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 034F × 0308 × 0A03 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 034F ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 034F × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 034F ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -184,10 +280,24 @@
÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 034F × 0900 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 × 0900 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 034F × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 034F × 093C ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 034F × 0308 × 093C ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 034F × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 034F × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -206,8 +316,8 @@
÷ 1F1E6 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 1F1E6 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 × 0A03 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0A03 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -218,10 +328,24 @@
÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F1E6 × 0900 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0900 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 ÷ 0904 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0904 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 ÷ 0D4E ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0D4E ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 093C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 0308 × 093C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 0308 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -240,8 +364,8 @@
÷ 0600 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0600 × 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0600 × 0308 ÷ 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0600 × 0A03 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0600 × 0308 × 0A03 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0600 × 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0600 × 0308 ÷ 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0600 × 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -252,48 +376,76 @@
÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0600 × 0900 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 × 0900 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0904 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0904 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0D4E ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0D4E ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3]
÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 093C ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 0308 × 093C ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 0308 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3]
÷ 0600 × 0308 ÷ 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0A03 ÷ 0020 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0020 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0A03 ÷ 000D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 000D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0A03 ÷ 000A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 000A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0A03 ÷ 0001 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0001 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0A03 × 034F ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0A03 × 0308 × 034F ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0A03 ÷ 1F1E6 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0A03 ÷ 0600 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0600 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0A03 × 0A03 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0A03 × 0308 × 0A03 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0A03 ÷ 1100 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 1100 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0A03 ÷ 1160 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 1160 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0A03 ÷ 11A8 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 11A8 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0A03 ÷ AC00 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0A03 × 0308 ÷ AC00 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0A03 ÷ AC01 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0A03 × 0308 ÷ AC01 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0A03 × 0900 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 × 0900 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0903 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 × 0903 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 ÷ 0904 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0904 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 ÷ 0D4E ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0D4E ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 ÷ 0915 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0915 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0A03 ÷ 231A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 231A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0A03 × 0300 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 0300 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 093C ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 093C ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 094D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 094D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 200D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 200D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0A03 ÷ 0378 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0378 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 1100 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -308,8 +460,8 @@
÷ 1100 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 1100 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 1100 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1100 × 0A03 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1100 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1100 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -320,10 +472,24 @@
÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1100 × 0900 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 ÷ 0904 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 ÷ 0D4E ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 093C ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 0308 × 093C ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 0308 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -342,8 +508,8 @@
÷ 1160 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 1160 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 1160 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1160 × 0A03 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1160 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1160 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -354,10 +520,24 @@
÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1160 × 0900 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 ÷ 0904 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 093C ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 0308 × 093C ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -376,8 +556,8 @@
÷ 11A8 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 11A8 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 11A8 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 11A8 × 0A03 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 11A8 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 11A8 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -388,10 +568,24 @@
÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 11A8 × 0900 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 ÷ 0904 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 093C ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 0308 × 093C ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -410,8 +604,8 @@
÷ AC00 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ AC00 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ AC00 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC00 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC00 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC00 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -422,10 +616,24 @@
÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ AC00 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 0308 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -444,8 +652,8 @@
÷ AC01 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ AC01 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ AC01 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC01 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC01 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC01 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -456,14 +664,268 @@
÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ AC01 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 0308 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0900 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0900 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0900 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0900 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0900 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0900 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0900 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0900 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0900 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0900 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0900 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0900 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0900 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0900 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0900 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0900 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0900 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0900 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0900 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0900 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0900 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0900 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0900 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0900 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0900 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0900 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0900 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0900 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0903 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0903 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0903 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0904 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0904 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0904 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0904 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0904 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0904 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0904 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0904 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0904 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0904 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0904 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0904 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0904 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0904 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0904 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0904 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0904 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0904 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0904 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0904 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0904 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0904 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0904 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0904 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0904 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0904 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0904 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0904 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0D4E × 0020 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] SPACE (Other) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0020 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0D4E ÷ 000D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 000D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0D4E ÷ 000A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 000A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0D4E ÷ 0001 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0001 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0D4E × 034F ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0D4E × 0308 × 034F ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0D4E × 1F1E6 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0D4E × 0600 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0600 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0D4E × 0A03 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0D4E × 0308 × 0A03 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0D4E × 1100 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 1100 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0D4E × 1160 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 1160 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0D4E × 11A8 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 11A8 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0D4E × AC00 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0D4E × 0308 ÷ AC00 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0D4E × AC01 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0D4E × 0308 ÷ AC01 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0D4E × 0900 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 × 0900 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0903 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 × 0903 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0904 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0904 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0D4E ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0D4E ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0915 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0915 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0D4E × 231A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] WATCH (ExtPict) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 231A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0D4E × 0300 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 0300 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 093C ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 093C ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 094D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 094D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 200D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 200D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0378 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] <reserved-0378> (Other) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0378 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0915 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0915 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0915 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0915 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0915 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0915 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0915 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0915 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0915 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0915 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0915 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0915 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0915 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0915 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0915 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0915 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0915 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0915 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0915 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0915 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0915 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0915 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0915 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0915 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0915 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0915 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0915 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -478,8 +940,8 @@
÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 231A ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 231A × 0308 ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 231A × 0A03 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 231A × 0308 × 0A03 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 231A ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 231A × 0308 ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 231A ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -490,10 +952,24 @@
÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 231A × 0900 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 × 0900 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A ÷ 0904 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 ÷ 0904 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A ÷ 0D4E ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 ÷ 0D4E ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 231A × 0308 ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 231A × 093C ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 231A × 0308 × 093C ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 231A × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 231A × 0308 × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -512,8 +988,8 @@
÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0300 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0300 × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0300 × 0A03 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0300 × 0308 × 0A03 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0300 × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -524,14 +1000,124 @@
÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0300 × 0900 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 × 0900 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 093C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 0308 × 093C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 093C ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 093C × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 093C ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 093C × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 093C ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 093C × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 093C ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 093C × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 093C × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 093C × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 093C ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 093C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 093C ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 093C × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 093C × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 093C × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 093C ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 093C × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 093C ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 093C × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 093C ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 093C × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 093C ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 093C × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 093C ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 093C × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 093C × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 093C × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 093C ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 093C × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 093C × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 093C × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 093C × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 093C × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 093C ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 093C × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 094D ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 094D × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 094D ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 094D × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 094D ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 094D × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 094D ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 094D × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 094D × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 094D × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 094D ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 094D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 094D ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 094D × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 094D × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 094D × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 094D ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 094D × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 094D ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 094D × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 094D ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 094D × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 094D ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 094D × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 094D ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 094D × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 094D × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 094D × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 094D ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 094D × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 094D × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 094D × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 094D × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 094D × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 094D ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 094D × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -546,8 +1132,8 @@
÷ 200D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 200D ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 200D × 0308 ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 200D × 0A03 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 200D × 0308 × 0A03 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 200D ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 200D × 0308 ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 200D ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -558,10 +1144,24 @@
÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 200D × 0900 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 × 0900 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D ÷ 0904 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 ÷ 0904 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D ÷ 0D4E ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 ÷ 0D4E ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 200D × 0308 ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 200D × 093C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 200D × 0308 × 093C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 200D × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 200D × 0308 × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -580,8 +1180,8 @@
÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0378 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0378 × 0308 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0378 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0378 × 0A03 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0378 × 0308 × 0A03 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0378 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0378 × 0308 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0378 ÷ 1160 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -592,10 +1192,24 @@
÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0378 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0378 × 0900 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 × 0900 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 ÷ 0904 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0904 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 ÷ 0D4E ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0D4E ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 ÷ 0915 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0915 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0378 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0378 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 093C ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 0308 × 093C ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 094D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 0308 × 094D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0378 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0378 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -614,7 +1228,7 @@
÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
÷ 0061 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
-÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]
÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]
÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]
@@ -624,7 +1238,18 @@
÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]
÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]
÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]
+÷ 0915 ÷ 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 093C × 200D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 093C × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 0924 × 094D × 092F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER YA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D ÷ 0061 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER A (Other) ÷ [0.3]
+÷ 0061 × 094D ÷ 0924 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 003F × 094D ÷ 0924 ÷ # ÷ [0.2] QUESTION MARK (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
#
-# Lines: 602
+# Lines: 1187
#
# EOF
diff --git a/tests/unigbrk/test-u16-grapheme-breaks.c b/tests/unigbrk/test-u16-grapheme-breaks.c
index a1cb80da..79360508 100644
--- a/tests/unigbrk/test-u16-grapheme-breaks.c
+++ b/tests/unigbrk/test-u16-grapheme-breaks.c
@@ -1,5 +1,5 @@
/* Grapheme cluster breaks test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -61,19 +61,20 @@ test_u16_grapheme_breaks (const char *expected, ...)
fprintf (stderr, " input:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %02x", s[j]);
+ fprintf (stderr, " %04X", s[j]);
putc ('\n', stderr);
fprintf (stderr, "expected:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %d", expected[j] == '#');
+ fprintf (stderr, " %d", expected[j] == '#');
putc ('\n', stderr);
fprintf (stderr, " actual:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %d", breaks[j]);
+ fprintf (stderr, " %d", breaks[j]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u16-grapheme-next.c b/tests/unigbrk/test-u16-grapheme-next.c
index bb7aba65..45a7ac0a 100644
--- a/tests/unigbrk/test-u16-grapheme-next.c
+++ b/tests/unigbrk/test-u16-grapheme-next.c
@@ -1,5 +1,5 @@
/* Next grapheme cluster length test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -57,11 +57,12 @@ test_u16_grapheme_next (size_t len, ...)
if (next == NULL)
fputs ("u16_grapheme_next returned NULL", stderr);
else
- fprintf (stderr, "u16_grapheme_next skipped %zu units", next - s);
+ fprintf (stderr, "u16_grapheme_next skipped %tu units", next - s);
fprintf (stderr, ", expected %zu:\n", len);
for (i = 0; i < n; i++)
fprintf (stderr, " %04x", s[i]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u16-grapheme-prev.c b/tests/unigbrk/test-u16-grapheme-prev.c
index 986b5ddf..8ba01c2e 100644
--- a/tests/unigbrk/test-u16-grapheme-prev.c
+++ b/tests/unigbrk/test-u16-grapheme-prev.c
@@ -1,5 +1,5 @@
/* Previous grapheme cluster test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -59,11 +59,12 @@ test_u16_grapheme_prev (size_t len, ...)
if (prev == NULL)
fputs ("u16_grapheme_prev returned NULL", stderr);
else
- fprintf (stderr, "u16_grapheme_prev skipped %zu units", end - prev);
+ fprintf (stderr, "u16_grapheme_prev skipped %tu units", end - prev);
fprintf (stderr, ", expected %zu:\n", len);
for (i = 0; i < n; i++)
fprintf (stderr, " %04x", s[i]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u32-grapheme-breaks.c b/tests/unigbrk/test-u32-grapheme-breaks.c
index 7af266e8..996555cc 100644
--- a/tests/unigbrk/test-u32-grapheme-breaks.c
+++ b/tests/unigbrk/test-u32-grapheme-breaks.c
@@ -1,5 +1,5 @@
/* Grapheme cluster breaks test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -61,19 +61,20 @@ test_u32_grapheme_breaks (const char *expected, ...)
fprintf (stderr, " input:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %02x", s[j]);
+ fprintf (stderr, " %04X", s[j]);
putc ('\n', stderr);
fprintf (stderr, "expected:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %d", expected[j] == '#');
+ fprintf (stderr, " %d", expected[j] == '#');
putc ('\n', stderr);
fprintf (stderr, " actual:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %d", breaks[j]);
+ fprintf (stderr, " %d", breaks[j]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u32-grapheme-next.c b/tests/unigbrk/test-u32-grapheme-next.c
index 1762378c..2681d674 100644
--- a/tests/unigbrk/test-u32-grapheme-next.c
+++ b/tests/unigbrk/test-u32-grapheme-next.c
@@ -1,5 +1,5 @@
/* Next grapheme cluster length test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -57,11 +57,12 @@ test_u32_grapheme_next (size_t len, ...)
if (next == NULL)
fputs ("u32_grapheme_next returned NULL", stderr);
else
- fprintf (stderr, "u32_grapheme_next skipped %zu units", next - s);
+ fprintf (stderr, "u32_grapheme_next skipped %tu units", next - s);
fprintf (stderr, ", expected %zu:\n", len);
for (i = 0; i < n; i++)
fprintf (stderr, " %04x", s[i]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u32-grapheme-prev.c b/tests/unigbrk/test-u32-grapheme-prev.c
index d3838f52..2c8006ae 100644
--- a/tests/unigbrk/test-u32-grapheme-prev.c
+++ b/tests/unigbrk/test-u32-grapheme-prev.c
@@ -1,5 +1,5 @@
/* Previous grapheme cluster test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -59,11 +59,12 @@ test_u32_grapheme_prev (size_t len, ...)
if (prev == NULL)
fputs ("u32_grapheme_prev returned NULL", stderr);
else
- fprintf (stderr, "u32_grapheme_prev skipped %zu units", end - prev);
+ fprintf (stderr, "u32_grapheme_prev skipped %tu units", end - prev);
fprintf (stderr, ", expected %zu:\n", len);
for (i = 0; i < n; i++)
fprintf (stderr, " %04x", s[i]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u8-grapheme-breaks.c b/tests/unigbrk/test-u8-grapheme-breaks.c
index fdc0d505..1ccdd601 100644
--- a/tests/unigbrk/test-u8-grapheme-breaks.c
+++ b/tests/unigbrk/test-u8-grapheme-breaks.c
@@ -1,5 +1,5 @@
/* Grapheme cluster breaks test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -50,7 +50,7 @@ test_u8_grapheme_breaks (const char *input, const char *expected)
fprintf (stderr, " input:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %02x", s[j]);
+ fprintf (stderr, " %02X", s[j]);
putc ('\n', stderr);
fprintf (stderr, "expected:");
@@ -63,6 +63,7 @@ test_u8_grapheme_breaks (const char *input, const char *expected)
fprintf (stderr, " %d", breaks[j]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
diff --git a/tests/unigbrk/test-u8-grapheme-next.c b/tests/unigbrk/test-u8-grapheme-next.c
index 5c61d847..10dea9d0 100644
--- a/tests/unigbrk/test-u8-grapheme-next.c
+++ b/tests/unigbrk/test-u8-grapheme-next.c
@@ -1,5 +1,5 @@
/* Next grapheme cluster length test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -38,11 +38,12 @@ test_u8_grapheme_next (const char *input, size_t n, size_t len)
if (next == NULL)
fputs ("u8_grapheme_next returned NULL", stderr);
else
- fprintf (stderr, "u8_grapheme_next skipped %zu bytes", next - s);
+ fprintf (stderr, "u8_grapheme_next skipped %tu bytes", next - s);
fprintf (stderr, ", expected %zu:\n", len);
for (i = 0; i < n; i++)
fprintf (stderr, " %02x", s[i]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-u8-grapheme-prev.c b/tests/unigbrk/test-u8-grapheme-prev.c
index a59e264d..e3642367 100644
--- a/tests/unigbrk/test-u8-grapheme-prev.c
+++ b/tests/unigbrk/test-u8-grapheme-prev.c
@@ -1,5 +1,5 @@
/* Previous grapheme cluster test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -39,11 +39,12 @@ test_u8_grapheme_prev (const char *input, size_t n, size_t len)
if (prev == NULL)
fputs ("u8_grapheme_prev returned NULL", stderr);
else
- fprintf (stderr, "u8_grapheme_prev skipped %zu bytes", end - prev);
+ fprintf (stderr, "u8_grapheme_prev skipped %tu bytes", end - prev);
fprintf (stderr, ", expected %zu:\n", len);
for (i = 0; i < n; i++)
fprintf (stderr, " %02x", s[i]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-uc-gbrk-prop.c b/tests/unigbrk/test-uc-gbrk-prop.c
index 605d83dc..65b91d24 100644
--- a/tests/unigbrk/test-uc-gbrk-prop.c
+++ b/tests/unigbrk/test-uc-gbrk-prop.c
@@ -1,5 +1,5 @@
/* Test the Unicode grapheme break property function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unigbrk/test-uc-gbrk-prop.h b/tests/unigbrk/test-uc-gbrk-prop.h
index d975a1e4..3949a191 100644
--- a/tests/unigbrk/test-uc-gbrk-prop.h
+++ b/tests/unigbrk/test-uc-gbrk-prop.h
@@ -1,6 +1,6 @@
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
/* Test the Unicode grapheme break property functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
diff --git a/tests/unigbrk/test-uc-grapheme-breaks.c b/tests/unigbrk/test-uc-grapheme-breaks.c
index 1e3b1ee8..afaab06b 100644
--- a/tests/unigbrk/test-uc-grapheme-breaks.c
+++ b/tests/unigbrk/test-uc-grapheme-breaks.c
@@ -1,5 +1,5 @@
/* Grapheme cluster break function test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -27,7 +27,7 @@
#include "macros.h"
-static const char *
+_GL_UNUSED static const char *
graphemebreakproperty_to_string (int gbp)
{
printf ("%d\n", gbp);
@@ -75,19 +75,20 @@ test_uc_grapheme_breaks (const char *expected, ucs4_t *s, size_t n,
fprintf (stderr, " input:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %02x", s[j]);
+ fprintf (stderr, " %04X", s[j]);
putc ('\n', stderr);
fprintf (stderr, "expected:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %d", expected[j] == '#');
+ fprintf (stderr, " %d", expected[j] == '#');
putc ('\n', stderr);
fprintf (stderr, " actual:");
for (j = 0; j < n; j++)
- fprintf (stderr, " %d", breaks[j]);
+ fprintf (stderr, " %d", breaks[j]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unigbrk/test-uc-is-grapheme-break.c b/tests/unigbrk/test-uc-is-grapheme-break.c
index 433ba686..92674a07 100644
--- a/tests/unigbrk/test-uc-is-grapheme-break.c
+++ b/tests/unigbrk/test-uc-is-grapheme-break.c
@@ -1,5 +1,5 @@
/* Grapheme cluster break function test.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -30,7 +30,6 @@
const char *
graphemebreakproperty_to_string (int gbp)
{
- printf ("%d\n", gbp);
switch (gbp)
{
#define CASE(VALUE) case GBP_##VALUE: return #VALUE;
@@ -89,6 +88,9 @@ main (int argc, char *argv[])
const char *p;
ucs4_t prev;
int last_char_prop;
+ bool incb_consonant_extended;
+ bool incb_consonant_extended_linker;
+ bool incb_consonant_extended_linker_extended;
bool emoji_modifier_sequence;
bool emoji_modifier_sequence_before_last_char;
size_t ri_count;
@@ -102,6 +104,9 @@ main (int argc, char *argv[])
continue;
last_char_prop = -1;
+ incb_consonant_extended = false;
+ incb_consonant_extended_linker = false;
+ incb_consonant_extended_linker_extended = false;
emoji_modifier_sequence = false;
emoji_modifier_sequence_before_last_char = false;
ri_count = 0;
@@ -150,10 +155,17 @@ main (int argc, char *argv[])
next = next_int;
}
+ int incb = uc_indic_conjunct_break (next);
+
/* Skip unsupported rules involving 3 or more characters. */
- if (last_char_prop == GBP_ZWJ
- && emoji_modifier_sequence_before_last_char
- && uc_is_property_extended_pictographic (next))
+ if (incb_consonant_extended_linker_extended
+ && incb == UC_INDIC_CONJUNCT_BREAK_CONSONANT)
+ fprintf (stderr, "%s:%d: skipping GB9c: should join U+%04X "
+ "and U+%04X\n",
+ filename, lineno, prev, next);
+ else if (last_char_prop == GBP_ZWJ
+ && emoji_modifier_sequence_before_last_char
+ && uc_is_property_extended_pictographic (next))
{
int prev_gbp = uc_graphemeclusterbreak_property (prev);
int next_gbp = uc_graphemeclusterbreak_property (next);
@@ -190,6 +202,17 @@ main (int argc, char *argv[])
p += strspn (p, " \t\r\n");
prev = next;
+ incb_consonant_extended_linker =
+ incb_consonant_extended && incb == UC_INDIC_CONJUNCT_BREAK_LINKER;
+ incb_consonant_extended_linker_extended =
+ (incb_consonant_extended_linker
+ || (incb_consonant_extended_linker_extended
+ && incb >= UC_INDIC_CONJUNCT_BREAK_LINKER));
+ incb_consonant_extended =
+ (incb == UC_INDIC_CONJUNCT_BREAK_CONSONANT
+ || (incb_consonant_extended
+ && incb >= UC_INDIC_CONJUNCT_BREAK_LINKER));
+
emoji_modifier_sequence_before_last_char = emoji_modifier_sequence;
emoji_modifier_sequence =
(emoji_modifier_sequence
diff --git a/tests/unigbrk/test-ulc-grapheme-breaks.c b/tests/unigbrk/test-ulc-grapheme-breaks.c
index 8ef608fe..519be6fe 100644
--- a/tests/unigbrk/test-ulc-grapheme-breaks.c
+++ b/tests/unigbrk/test-ulc-grapheme-breaks.c
@@ -1,5 +1,5 @@
/* Grapheme cluster breaks test.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
@@ -64,7 +64,7 @@ main ()
fprintf (stderr, " input:");
for (j = 0; j < LENGTH; j++)
- fprintf (stderr, " %02x", (unsigned char) s[j]);
+ fprintf (stderr, " %02X", (unsigned char) s[j]);
putc ('\n', stderr);
fprintf (stderr, "expected:");
@@ -77,6 +77,7 @@ main ()
fprintf (stderr, " %d", p[j]);
putc ('\n', stderr);
+ fflush (stderr);
abort ();
}
}
diff --git a/tests/unilbrk/test-u16-possible-linebreaks.c b/tests/unilbrk/test-u16-possible-linebreaks.c
index 0156d455..877367e7 100644
--- a/tests/unilbrk/test-u16-possible-linebreaks.c
+++ b/tests/unilbrk/test-u16-possible-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of UTF-16 strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -255,8 +255,10 @@ int
main ()
{
test_function (u16_possible_linebreaks, 2);
-#undef u16_possible_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef u16_possible_linebreaks
test_function (u16_possible_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-u16-width-linebreaks.c b/tests/unilbrk/test-u16-width-linebreaks.c
index c9605447..fb337873 100644
--- a/tests/unilbrk/test-u16-width-linebreaks.c
+++ b/tests/unilbrk/test-u16-width-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of UTF-16 strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -76,8 +76,10 @@ int
main ()
{
test_function (u16_width_linebreaks, 2);
-#undef u16_width_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef u16_width_linebreaks
test_function (u16_width_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-u32-possible-linebreaks.c b/tests/unilbrk/test-u32-possible-linebreaks.c
index 5c08c974..84b0e3c0 100644
--- a/tests/unilbrk/test-u32-possible-linebreaks.c
+++ b/tests/unilbrk/test-u32-possible-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of UTF-32 strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -255,8 +255,10 @@ int
main ()
{
test_function (u32_possible_linebreaks, 2);
-#undef u32_possible_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef u32_possible_linebreaks
test_function (u32_possible_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-u32-width-linebreaks.c b/tests/unilbrk/test-u32-width-linebreaks.c
index fa9c09b6..b59405cd 100644
--- a/tests/unilbrk/test-u32-width-linebreaks.c
+++ b/tests/unilbrk/test-u32-width-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of UTF-32 strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -76,8 +76,10 @@ int
main ()
{
test_function (u32_width_linebreaks, 2);
-#undef u32_width_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef u32_width_linebreaks
test_function (u32_width_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-u8-possible-linebreaks.c b/tests/unilbrk/test-u8-possible-linebreaks.c
index 37f27067..90768d20 100644
--- a/tests/unilbrk/test-u8-possible-linebreaks.c
+++ b/tests/unilbrk/test-u8-possible-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of UTF-8 strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -238,8 +238,10 @@ int
main ()
{
test_function (u8_possible_linebreaks, 2);
-#undef u8_possible_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef u8_possible_linebreaks
test_function (u8_possible_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-u8-width-linebreaks.c b/tests/unilbrk/test-u8-width-linebreaks.c
index e9552350..a84ee0db 100644
--- a/tests/unilbrk/test-u8-width-linebreaks.c
+++ b/tests/unilbrk/test-u8-width-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of UTF-8 strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -70,8 +70,10 @@ int
main ()
{
test_function (u8_width_linebreaks, 2);
-#undef u8_width_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef u8_width_linebreaks
test_function (u8_width_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-ulc-possible-linebreaks.c b/tests/unilbrk/test-ulc-possible-linebreaks.c
index e6859277..21ec0b5e 100644
--- a/tests/unilbrk/test-ulc-possible-linebreaks.c
+++ b/tests/unilbrk/test-ulc-possible-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -71,8 +71,10 @@ int
main ()
{
test_function (ulc_possible_linebreaks, 2);
-#undef ulc_possible_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef ulc_possible_linebreaks
test_function (ulc_possible_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unilbrk/test-ulc-width-linebreaks.c b/tests/unilbrk/test-ulc-width-linebreaks.c
index 0fffe3ae..65e125e5 100644
--- a/tests/unilbrk/test-ulc-width-linebreaks.c
+++ b/tests/unilbrk/test-ulc-width-linebreaks.c
@@ -1,5 +1,5 @@
/* Test of line breaking of strings.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -55,8 +55,10 @@ int
main ()
{
test_function (ulc_width_linebreaks, 2);
-#undef ulc_width_linebreaks
+#ifdef IN_LIBUNISTRING_GNULIB_TESTS
+# undef ulc_width_linebreaks
test_function (ulc_width_linebreaks, 1);
+#endif
return 0;
}
diff --git a/tests/unimetadata/test-u-version.c b/tests/unimetadata/test-u-version.c
new file mode 100644
index 00000000..6dc48ad3
--- /dev/null
+++ b/tests/unimetadata/test-u-version.c
@@ -0,0 +1,39 @@
+/* Test of supported Unicode version.
+ Copyright (C) 2009-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2024. */
+
+#include <config.h>
+
+#include "unimetadata.h"
+
+#include "macros.h"
+
+#if !(((defined _WIN32 || defined __CYGWIN__) && (HAVE_LIBUNISTRING || WOE32DLL)) || defined __ANDROID__)
+/* Check that _libunistring_unicode_version is defined and links. */
+int const *vp = &_libunistring_unicode_version;
+#endif
+
+int
+main ()
+{
+ /* Check that _libunistring_unicode_version is defined and links. */
+ volatile int v = _libunistring_unicode_version;
+ ASSERT (v >= (15 << 8));
+ ASSERT (v < (100 << 8));
+
+ return 0;
+}
diff --git a/tests/uniname/HangulSyllableNames.txt b/tests/uniname/HangulSyllableNames.txt
index 341c178d..5491f661 100644
--- a/tests/uniname/HangulSyllableNames.txt
+++ b/tests/uniname/HangulSyllableNames.txt
@@ -1,5 +1,7 @@
# Auxiliary tables for Hangul syllable names, see the Unicode 3.0 book,
-# sections 3.11 and 4.4.
+# sections 3.11 and 4.4. This table was automatically generated.
+
+# This file is in the public domain.
AC00;HANGUL SYLLABLE GA;Lo;0;L;;;;;N;;;;;
AC01;HANGUL SYLLABLE GAG;Lo;0;L;;;;;N;;;;;
diff --git a/tests/uniname/NameAliases.txt b/tests/uniname/NameAliases.txt
index db3a863a..487cdb8c 100644
--- a/tests/uniname/NameAliases.txt
+++ b/tests/uniname/NameAliases.txt
@@ -1,6 +1,46 @@
-# NameAliases-15.0.0.txt
-# Date: 2022-07-26, 20:13:00 GMT [KW]
-# © 2022 Unicode®, Inc.
+# UNICODE LICENSE V3
+#
+# COPYRIGHT AND PERMISSION NOTICE
+#
+# Copyright © 1991-2024 Unicode, Inc.
+#
+# NOTICE TO USER: Carefully read the following legal agreement. BY
+# DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+# SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+# TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+# DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of data files and any associated documentation (the "Data Files") or
+# software and any associated documentation (the "Software") to deal in the
+# Data Files or Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, and/or sell
+# copies of the Data Files or Software, and to permit persons to whom the
+# Data Files or Software are furnished to do so, provided that either (a)
+# this copyright and permission notice appear with all copies of the Data
+# Files or Software, or (b) this copyright and permission notice appear in
+# associated Documentation.
+#
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+# THIRD PARTY RIGHTS.
+#
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+# BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+# FILES OR SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder shall
+# not be used in advertising or otherwise to promote the sale, use or other
+# dealings in these Data Files or Software without prior written
+# authorization of the copyright holder.
+
+# NameAliases-15.1.0.txt
+# Date: 2023-01-05
+# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
diff --git a/tests/uniname/UnicodeData.txt b/tests/uniname/UnicodeData.txt
index ea963a71..152ebe66 100644
--- a/tests/uniname/UnicodeData.txt
+++ b/tests/uniname/UnicodeData.txt
@@ -1,3 +1,43 @@
+# UNICODE LICENSE V3
+#
+# COPYRIGHT AND PERMISSION NOTICE
+#
+# Copyright © 1991-2024 Unicode, Inc.
+#
+# NOTICE TO USER: Carefully read the following legal agreement. BY
+# DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+# SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+# TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+# DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of data files and any associated documentation (the "Data Files") or
+# software and any associated documentation (the "Software") to deal in the
+# Data Files or Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, and/or sell
+# copies of the Data Files or Software, and to permit persons to whom the
+# Data Files or Software are furnished to do so, provided that either (a)
+# this copyright and permission notice appear with all copies of the Data
+# Files or Software, or (b) this copyright and permission notice appear in
+# associated Documentation.
+#
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+# THIRD PARTY RIGHTS.
+#
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+# BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+# FILES OR SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder shall
+# not be used in advertising or otherwise to promote the sale, use or other
+# dealings in these Data Files or Software without prior written
+# authorization of the copyright holder.
+
0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
@@ -11231,6 +11271,10 @@
2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+2FFC;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT;So;0;ON;;;;;N;;;;;
+2FFD;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2FFE;IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION;So;0;ON;;;;;N;;;;;
+2FFF;IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION;So;0;ON;;;;;N;;;;;
3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
@@ -11705,6 +11749,7 @@
31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;So;0;ON;;;;;N;;;;;
31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
@@ -34035,6 +34080,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
2CEA1;<CJK Ideograph Extension E, Last>;Lo;0;L;;;;;N;;;;;
2CEB0;<CJK Ideograph Extension F, First>;Lo;0;L;;;;;N;;;;;
2EBE0;<CJK Ideograph Extension F, Last>;Lo;0;L;;;;;N;;;;;
+2EBF0;<CJK Ideograph Extension I, First>;Lo;0;L;;;;;N;;;;;
+2EE5D;<CJK Ideograph Extension I, Last>;Lo;0;L;;;;;N;;;;;
2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
diff --git a/tests/uniname/test-uninames.c b/tests/uniname/test-uninames.c
index c85c9af6..72e198ed 100644
--- a/tests/uniname/test-uninames.c
+++ b/tests/uniname/test-uninames.c
@@ -1,5 +1,5 @@
/* Test the Unicode character name functions.
- Copyright (C) 2000-2003, 2005, 2007, 2009-2022 Free Software Foundation,
+ Copyright (C) 2000-2003, 2005, 2007, 2009-2024 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/tests/uninorm/NormalizationTest.txt b/tests/uninorm/NormalizationTest.txt
index e75b4801..e1644a61 100644
--- a/tests/uninorm/NormalizationTest.txt
+++ b/tests/uninorm/NormalizationTest.txt
@@ -1,6 +1,46 @@
-# NormalizationTest-15.0.0.txt
-# Date: 2022-04-02, 01:29:09 GMT
-# © 2022 Unicode®, Inc.
+# UNICODE LICENSE V3
+#
+# COPYRIGHT AND PERMISSION NOTICE
+#
+# Copyright © 1991-2024 Unicode, Inc.
+#
+# NOTICE TO USER: Carefully read the following legal agreement. BY
+# DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+# SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+# TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+# DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of data files and any associated documentation (the "Data Files") or
+# software and any associated documentation (the "Software") to deal in the
+# Data Files or Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, and/or sell
+# copies of the Data Files or Software, and to permit persons to whom the
+# Data Files or Software are furnished to do so, provided that either (a)
+# this copyright and permission notice appear with all copies of the Data
+# Files or Software, or (b) this copyright and permission notice appear in
+# associated Documentation.
+#
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+# THIRD PARTY RIGHTS.
+#
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+# BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+# FILES OR SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder shall
+# not be used in advertising or otherwise to promote the sale, use or other
+# dealings in these Data Files or Software without prior written
+# authorization of the copyright holder.
+
+# NormalizationTest-15.1.0.txt
+# Date: 2023-01-05, 20:34:44 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
diff --git a/tests/uninorm/test-canonical-decomposition.c b/tests/uninorm/test-canonical-decomposition.c
index 0e3fdbf4..6ebac8e5 100644
--- a/tests/uninorm/test-canonical-decomposition.c
+++ b/tests/uninorm/test-canonical-decomposition.c
@@ -1,5 +1,5 @@
/* Test of canonical decomposition of Unicode characters.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-compat-decomposition.c b/tests/uninorm/test-compat-decomposition.c
index c0221310..d4252cbc 100644
--- a/tests/uninorm/test-compat-decomposition.c
+++ b/tests/uninorm/test-compat-decomposition.c
@@ -1,5 +1,5 @@
/* Test of compatibility decomposition of Unicode characters.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-composition.c b/tests/uninorm/test-composition.c
index e6bdc970..4f90cfcb 100644
--- a/tests/uninorm/test-composition.c
+++ b/tests/uninorm/test-composition.c
@@ -1,5 +1,5 @@
/* Test of canonical composition of Unicode characters.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-decomposing-form.c b/tests/uninorm/test-decomposing-form.c
index 17ad3bdb..d56cd28c 100644
--- a/tests/uninorm/test-decomposing-form.c
+++ b/tests/uninorm/test-decomposing-form.c
@@ -1,5 +1,5 @@
/* Test of decomposing variant of a normalization form.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-decomposition.c b/tests/uninorm/test-decomposition.c
index d0e53e54..7da46143 100644
--- a/tests/uninorm/test-decomposition.c
+++ b/tests/uninorm/test-decomposition.c
@@ -1,5 +1,5 @@
/* Test of decomposition of Unicode characters.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-nfc.c b/tests/uninorm/test-nfc.c
index db5b45d8..f1459ed3 100644
--- a/tests/uninorm/test-nfc.c
+++ b/tests/uninorm/test-nfc.c
@@ -1,5 +1,5 @@
/* Test of canonical normalization of Unicode strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-nfd.c b/tests/uninorm/test-nfd.c
index 7d562e72..17df0f0e 100644
--- a/tests/uninorm/test-nfd.c
+++ b/tests/uninorm/test-nfd.c
@@ -1,5 +1,5 @@
/* Test of canonical decomposition of Unicode strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-nfkc.c b/tests/uninorm/test-nfkc.c
index 56a43e76..640066c3 100644
--- a/tests/uninorm/test-nfkc.c
+++ b/tests/uninorm/test-nfkc.c
@@ -1,5 +1,5 @@
/* Test of compatibility normalization of Unicode strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-nfkd.c b/tests/uninorm/test-nfkd.c
index 88ca6b50..8d5ff836 100644
--- a/tests/uninorm/test-nfkd.c
+++ b/tests/uninorm/test-nfkd.c
@@ -1,5 +1,5 @@
/* Test of compatibility decomposition of Unicode strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-nfc.c b/tests/uninorm/test-u16-nfc.c
index fa3ebfcd..36cbf979 100644
--- a/tests/uninorm/test-u16-nfc.c
+++ b/tests/uninorm/test-u16-nfc.c
@@ -1,5 +1,5 @@
/* Test of canonical normalization of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-nfd.c b/tests/uninorm/test-u16-nfd.c
index 08b5c004..0be54c21 100644
--- a/tests/uninorm/test-u16-nfd.c
+++ b/tests/uninorm/test-u16-nfd.c
@@ -1,5 +1,5 @@
/* Test of canonical decomposition of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-nfkc.c b/tests/uninorm/test-u16-nfkc.c
index 7924d822..c6bedaf8 100644
--- a/tests/uninorm/test-u16-nfkc.c
+++ b/tests/uninorm/test-u16-nfkc.c
@@ -1,5 +1,5 @@
/* Test of compatibility normalization of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-nfkd.c b/tests/uninorm/test-u16-nfkd.c
index 1d78701d..f9a198c4 100644
--- a/tests/uninorm/test-u16-nfkd.c
+++ b/tests/uninorm/test-u16-nfkd.c
@@ -1,5 +1,5 @@
/* Test of compatibility decomposition of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-normcmp.c b/tests/uninorm/test-u16-normcmp.c
index 9ebb94b2..96ca0716 100644
--- a/tests/uninorm/test-u16-normcmp.c
+++ b/tests/uninorm/test-u16-normcmp.c
@@ -1,5 +1,5 @@
/* Test of normalization insensitive comparison of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-normcmp.h b/tests/uninorm/test-u16-normcmp.h
index 0c7ce100..09d5ba41 100644
--- a/tests/uninorm/test-u16-normcmp.h
+++ b/tests/uninorm/test-u16-normcmp.h
@@ -1,5 +1,5 @@
/* Test of normalization insensitive comparison of UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u16-normcoll.c b/tests/uninorm/test-u16-normcoll.c
index e0689a30..fe08a15d 100644
--- a/tests/uninorm/test-u16-normcoll.c
+++ b/tests/uninorm/test-u16-normcoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, normalization insensitive comparison of
UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfc-big.c b/tests/uninorm/test-u32-nfc-big.c
index b9f35e56..317607a1 100644
--- a/tests/uninorm/test-u32-nfc-big.c
+++ b/tests/uninorm/test-u32-nfc-big.c
@@ -1,5 +1,5 @@
/* Test of Unicode compliance of canonical normalization of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfc.c b/tests/uninorm/test-u32-nfc.c
index 57b6a194..d6589c51 100644
--- a/tests/uninorm/test-u32-nfc.c
+++ b/tests/uninorm/test-u32-nfc.c
@@ -1,5 +1,5 @@
/* Test of canonical normalization of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfd-big.c b/tests/uninorm/test-u32-nfd-big.c
index 683c768b..8a35cd03 100644
--- a/tests/uninorm/test-u32-nfd-big.c
+++ b/tests/uninorm/test-u32-nfd-big.c
@@ -1,5 +1,5 @@
/* Test of Unicode compliance of canonical decomposition of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfd.c b/tests/uninorm/test-u32-nfd.c
index 33f2c97d..6b787724 100644
--- a/tests/uninorm/test-u32-nfd.c
+++ b/tests/uninorm/test-u32-nfd.c
@@ -1,5 +1,5 @@
/* Test of canonical decomposition of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfkc-big.c b/tests/uninorm/test-u32-nfkc-big.c
index 84491129..4195b97e 100644
--- a/tests/uninorm/test-u32-nfkc-big.c
+++ b/tests/uninorm/test-u32-nfkc-big.c
@@ -1,5 +1,5 @@
/* Test of Unicode compliance of compatibility normalization of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfkc.c b/tests/uninorm/test-u32-nfkc.c
index 7f8d472a..2b310def 100644
--- a/tests/uninorm/test-u32-nfkc.c
+++ b/tests/uninorm/test-u32-nfkc.c
@@ -1,5 +1,5 @@
/* Test of compatibility normalization of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfkd-big.c b/tests/uninorm/test-u32-nfkd-big.c
index a2ca4673..f9c264d3 100644
--- a/tests/uninorm/test-u32-nfkd-big.c
+++ b/tests/uninorm/test-u32-nfkd-big.c
@@ -1,5 +1,5 @@
/* Test of Unicode compliance of compatibility decomposition of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-nfkd.c b/tests/uninorm/test-u32-nfkd.c
index 3cbb5f7b..5093127c 100644
--- a/tests/uninorm/test-u32-nfkd.c
+++ b/tests/uninorm/test-u32-nfkd.c
@@ -1,5 +1,5 @@
/* Test of compatibility decomposition of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-normalize-big.c b/tests/uninorm/test-u32-normalize-big.c
index 40ef55cc..20282cab 100644
--- a/tests/uninorm/test-u32-normalize-big.c
+++ b/tests/uninorm/test-u32-normalize-big.c
@@ -1,5 +1,5 @@
/* Test of Unicode compliance of normalization of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-normalize-big.h b/tests/uninorm/test-u32-normalize-big.h
index 79b16264..ae4a16bd 100644
--- a/tests/uninorm/test-u32-normalize-big.h
+++ b/tests/uninorm/test-u32-normalize-big.h
@@ -1,5 +1,5 @@
/* Test of Unicode compliance of normalization of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-normcmp.c b/tests/uninorm/test-u32-normcmp.c
index 577edf6b..5052a237 100644
--- a/tests/uninorm/test-u32-normcmp.c
+++ b/tests/uninorm/test-u32-normcmp.c
@@ -1,5 +1,5 @@
/* Test of normalization insensitive comparison of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-normcmp.h b/tests/uninorm/test-u32-normcmp.h
index 1597c88e..f5979f1e 100644
--- a/tests/uninorm/test-u32-normcmp.h
+++ b/tests/uninorm/test-u32-normcmp.h
@@ -1,5 +1,5 @@
/* Test of normalization insensitive comparison of UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u32-normcoll.c b/tests/uninorm/test-u32-normcoll.c
index 492475cc..e5cce080 100644
--- a/tests/uninorm/test-u32-normcoll.c
+++ b/tests/uninorm/test-u32-normcoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, normalization insensitive comparison of
UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-nfc.c b/tests/uninorm/test-u8-nfc.c
index bfc56240..1aedcd85 100644
--- a/tests/uninorm/test-u8-nfc.c
+++ b/tests/uninorm/test-u8-nfc.c
@@ -1,5 +1,5 @@
/* Test of canonical normalization of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-nfd.c b/tests/uninorm/test-u8-nfd.c
index e5e3ac69..a6a5686b 100644
--- a/tests/uninorm/test-u8-nfd.c
+++ b/tests/uninorm/test-u8-nfd.c
@@ -1,5 +1,5 @@
/* Test of canonical decomposition of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-nfkc.c b/tests/uninorm/test-u8-nfkc.c
index f59bc036..c2a17839 100644
--- a/tests/uninorm/test-u8-nfkc.c
+++ b/tests/uninorm/test-u8-nfkc.c
@@ -1,5 +1,5 @@
/* Test of compatibility normalization of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-nfkd.c b/tests/uninorm/test-u8-nfkd.c
index 4fb89a5b..0a70a477 100644
--- a/tests/uninorm/test-u8-nfkd.c
+++ b/tests/uninorm/test-u8-nfkd.c
@@ -1,5 +1,5 @@
/* Test of compatibility decomposition of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-normcmp.c b/tests/uninorm/test-u8-normcmp.c
index 9d665e63..6b9f68d4 100644
--- a/tests/uninorm/test-u8-normcmp.c
+++ b/tests/uninorm/test-u8-normcmp.c
@@ -1,5 +1,5 @@
/* Test of normalization insensitive comparison of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-normcmp.h b/tests/uninorm/test-u8-normcmp.h
index c853c4a9..867cd2ce 100644
--- a/tests/uninorm/test-u8-normcmp.h
+++ b/tests/uninorm/test-u8-normcmp.h
@@ -1,5 +1,5 @@
/* Test of normalization insensitive comparison of UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-u8-normcoll.c b/tests/uninorm/test-u8-normcoll.c
index a113b4f5..e8d30949 100644
--- a/tests/uninorm/test-u8-normcoll.c
+++ b/tests/uninorm/test-u8-normcoll.c
@@ -1,6 +1,6 @@
/* Test of locale dependent, normalization insensitive comparison of
UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uninorm/test-uninorm-filter-nfc.c b/tests/uninorm/test-uninorm-filter-nfc.c
index ea9cdc0a..2e2ca2aa 100644
--- a/tests/uninorm/test-uninorm-filter-nfc.c
+++ b/tests/uninorm/test-uninorm-filter-nfc.c
@@ -1,5 +1,5 @@
/* Test of canonical normalization of streams.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/unistdio/test-u16-asnprintf1.c b/tests/unistdio/test-u16-asnprintf1.c
index a95e6bfc..67ce490a 100644
--- a/tests/unistdio/test-u16-asnprintf1.c
+++ b/tests/unistdio/test-u16-asnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u16_asnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u16-asnprintf1.h b/tests/unistdio/test-u16-asnprintf1.h
index 4145ae87..4ec31a43 100644
--- a/tests/unistdio/test-u16-asnprintf1.h
+++ b/tests/unistdio/test-u16-asnprintf1.h
@@ -1,5 +1,5 @@
/* Test of u16_[v]asnprintf() function.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/unistdio/test-u16-printf1.h b/tests/unistdio/test-u16-printf1.h
index 7690978d..e501c9e4 100644
--- a/tests/unistdio/test-u16-printf1.h
+++ b/tests/unistdio/test-u16-printf1.h
@@ -1,5 +1,5 @@
/* Test of u16_v[a]s[n]printf() function.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -83,6 +83,24 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
ASSERT (u16_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*U %d", 10, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*U %d", -10, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
@@ -123,6 +141,24 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
ASSERT (u16_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*lU %d", 10, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*lU %d", -10, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
@@ -163,6 +199,24 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
ASSERT (u16_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*llU %d", 10, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*llU %d", -10, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
@@ -211,6 +265,32 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("Mr. %*s %d", 20, "Ronald Reagan", 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'M', 'r', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', 'R', 'o', 'n', 'a', 'l', 'd', ' ', 'R', 'e',
+ 'a', 'g', 'a', 'n', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("Mr. %*s %d", -20, "Ronald Reagan", 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'M', 'r', '.', ' ', 'R', 'o', 'n', 'a', 'l', 'd',
+ ' ', 'R', 'e', 'a', 'g', 'a', 'n', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
@@ -278,6 +358,44 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*a %d", 10, 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*a %d", -10, 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { '0', 'x', '7', 'p', '-', '2', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'e', 'p', '-', '3', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
{ /* Small precision. */
uint16_t *result =
my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
@@ -402,6 +520,44 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*La %d", 10, 1.75L, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*La %d", -10, 1.75L, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint16_t expected2[] =
+ { '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint16_t expected3[] =
+ { '0', 'x', '7', 'p', '-', '2', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint16_t expected4[] =
+ { '0', 'x', 'e', 'p', '-', '3', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0
+ || u16_strcmp (result, expected3) == 0
+ || u16_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
{ /* Small precision. */
uint16_t *result =
my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
@@ -502,6 +658,26 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*f %d", 10, 1.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*f %d", -10, 1.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint16_t *result =
my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
@@ -532,6 +708,26 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*Lf %d", 10, 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*Lf %d", -10, 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint16_t *result =
my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
@@ -620,6 +816,40 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*e %d", 15, 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ static const uint16_t expected2[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0',
+ 'e', '+', '0', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*e %d", -15, 1.75, 33, 44, 55);
+ static const uint16_t expected1[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', 'e', '+',
+ '0', '0', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ static const uint16_t expected2[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', 'e', '+',
+ '0', '0', '0', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected1) == 0
+ || u16_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint16_t *result =
my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
@@ -657,6 +887,30 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*Le %d", 15, 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*Le %d", -15, 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', 'e', '+',
+ '0', '0', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint16_t *result =
my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
@@ -689,6 +943,26 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*g %d", 10, 1.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*g %d", -10, 1.75, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '7', '5', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint16_t *result =
my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
@@ -722,6 +996,26 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*Lg %d", 10, 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*Lg %d", -10, 1.75L, 33, 44, 55);
+ static const uint16_t expected[] =
+ { '1', '.', '7', '5', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint16_t *result =
my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
@@ -738,12 +1032,16 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
int count = -1;
uint16_t *result =
my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+#if NEED_PRINTF_WITH_N_DIRECTIVE
static const uint16_t expected[] =
{ '1', '2', '3', ' ', 0 };
ASSERT (result != NULL);
ASSERT (u16_strcmp (result, expected) == 0);
ASSERT (count == 4);
free (result);
+#else
+ ASSERT (result == NULL);
+#endif
}
/* Test the support of the POSIX/XSI format strings with positions. */
@@ -795,6 +1093,30 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
ASSERT (u16_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*U %d", 20, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*U %d", -20, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("%-20U %d", unicode_string, 33, 44, 55);
@@ -850,6 +1172,30 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
ASSERT (u16_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*lU %d", 20, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*lU %d", -20, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("%-20lU %d", unicode_string, 33, 44, 55);
@@ -905,6 +1251,30 @@ test_xfunction (uint16_t * (*my_xasprintf) (const char *, ...))
ASSERT (u16_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint16_t *result =
+ my_xasprintf ("%*llU %d", 20, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint16_t *result =
+ my_xasprintf ("%*llU %d", -20, unicode_string, 33, 44, 55);
+ static const uint16_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u16_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint16_t *result =
my_xasprintf ("%-20llU %d", unicode_string, 33, 44, 55);
diff --git a/tests/unistdio/test-u16-vasnprintf1.c b/tests/unistdio/test-u16-vasnprintf1.c
index de705ae6..e39495c9 100644
--- a/tests/unistdio/test-u16-vasnprintf1.c
+++ b/tests/unistdio/test-u16-vasnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u16_vasnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u16-vasnprintf2.c b/tests/unistdio/test-u16-vasnprintf2.c
index ec5d790e..aee67584 100644
--- a/tests/unistdio/test-u16-vasnprintf2.c
+++ b/tests/unistdio/test-u16-vasnprintf2.c
@@ -1,5 +1,5 @@
/* Test of u16_vasnprintf() function in an ISO-8859-1 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u16-vasnprintf3.c b/tests/unistdio/test-u16-vasnprintf3.c
index 97f3c69d..0efe1984 100644
--- a/tests/unistdio/test-u16-vasnprintf3.c
+++ b/tests/unistdio/test-u16-vasnprintf3.c
@@ -1,5 +1,5 @@
/* Test of u16_vasnprintf() function in an UTF-8 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u16-vasprintf1.c b/tests/unistdio/test-u16-vasprintf1.c
index 1d00ec93..203d2edf 100644
--- a/tests/unistdio/test-u16-vasprintf1.c
+++ b/tests/unistdio/test-u16-vasprintf1.c
@@ -1,5 +1,5 @@
/* Test of u16_vasprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u16-vsnprintf1.c b/tests/unistdio/test-u16-vsnprintf1.c
index 27f3871a..6859468a 100644
--- a/tests/unistdio/test-u16-vsnprintf1.c
+++ b/tests/unistdio/test-u16-vsnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u16_vsnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u16-vsprintf1.c b/tests/unistdio/test-u16-vsprintf1.c
index ab4d9d57..b39a3056 100644
--- a/tests/unistdio/test-u16-vsprintf1.c
+++ b/tests/unistdio/test-u16-vsprintf1.c
@@ -1,5 +1,5 @@
/* Test of u16_vsprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-asnprintf1.c b/tests/unistdio/test-u32-asnprintf1.c
index aebc798e..5a16094b 100644
--- a/tests/unistdio/test-u32-asnprintf1.c
+++ b/tests/unistdio/test-u32-asnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u32_asnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-asnprintf1.h b/tests/unistdio/test-u32-asnprintf1.h
index b654c59a..85fa2cf0 100644
--- a/tests/unistdio/test-u32-asnprintf1.h
+++ b/tests/unistdio/test-u32-asnprintf1.h
@@ -1,5 +1,5 @@
/* Test of u32_[v]asnprintf() function.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/unistdio/test-u32-printf1.h b/tests/unistdio/test-u32-printf1.h
index d3e10e92..ae0edc6a 100644
--- a/tests/unistdio/test-u32-printf1.h
+++ b/tests/unistdio/test-u32-printf1.h
@@ -1,5 +1,5 @@
/* Test of u32_v[a]s[n]printf() function.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -83,6 +83,24 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
ASSERT (u32_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*U %d", 10, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*U %d", -10, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
@@ -123,6 +141,24 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
ASSERT (u32_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*lU %d", 10, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*lU %d", -10, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
@@ -163,6 +199,24 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
ASSERT (u32_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*llU %d", 10, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', 'H', 'e', 'l', 'l', 'o', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*llU %d", -10, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'H', 'e', 'l', 'l', 'o', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
@@ -211,6 +265,32 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("Mr. %*s %d", 20, "Ronald Reagan", 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'M', 'r', '.', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', 'R', 'o', 'n', 'a', 'l', 'd', ' ', 'R', 'e',
+ 'a', 'g', 'a', 'n', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("Mr. %*s %d", -20, "Ronald Reagan", 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'M', 'r', '.', ' ', 'R', 'o', 'n', 'a', 'l', 'd',
+ ' ', 'R', 'e', 'a', 'g', 'a', 'n', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
@@ -278,6 +358,44 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*a %d", 10, 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*a %d", -10, 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { '0', 'x', '7', 'p', '-', '2', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'e', 'p', '-', '3', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
{ /* Small precision. */
uint32_t *result =
my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
@@ -402,6 +520,44 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*La %d", 10, 1.75L, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { ' ', ' ', '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { ' ', ' ', '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', '7', 'p', '-', '2', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { ' ', ' ', ' ', ' ', '0', 'x', 'e', 'p', '-', '3', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*La %d", -10, 1.75L, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '0', 'x', '1', '.', 'c', 'p', '+', '0', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint32_t expected2[] =
+ { '0', 'x', '3', '.', '8', 'p', '-', '1', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint32_t expected3[] =
+ { '0', 'x', '7', 'p', '-', '2', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ static const uint32_t expected4[] =
+ { '0', 'x', 'e', 'p', '-', '3', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0
+ || u32_strcmp (result, expected3) == 0
+ || u32_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
{ /* Small precision. */
uint32_t *result =
my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
@@ -502,6 +658,26 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*f %d", 10, 1.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*f %d", -10, 1.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint32_t *result =
my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
@@ -532,6 +708,26 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*Lf %d", 10, 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*Lf %d", -10, 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint32_t *result =
my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
@@ -620,6 +816,40 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*e %d", 15, 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ static const uint32_t expected2[] =
+ { ' ', ' ', '1', '.', '7', '5', '0', '0', '0', '0',
+ 'e', '+', '0', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*e %d", -15, 1.75, 33, 44, 55);
+ static const uint32_t expected1[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', 'e', '+',
+ '0', '0', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ static const uint32_t expected2[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', 'e', '+',
+ '0', '0', '0', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected1) == 0
+ || u32_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint32_t *result =
my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
@@ -657,6 +887,30 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*Le %d", 15, 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', '1', '.', '7', '5', '0', '0', '0',
+ '0', 'e', '+', '0', '0', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*Le %d", -15, 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '7', '5', '0', '0', '0', '0', 'e', '+',
+ '0', '0', ' ', ' ', ' ', ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint32_t *result =
my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
@@ -689,6 +943,26 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*g %d", 10, 1.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*g %d", -10, 1.75, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '7', '5', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint32_t *result =
my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
@@ -722,6 +996,26 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*Lg %d", 10, 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', ' ', ' ', '1', '.', '7', '5', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*Lg %d", -10, 1.75L, 33, 44, 55);
+ static const uint32_t expected[] =
+ { '1', '.', '7', '5', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '3', '3', 0 };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint32_t *result =
my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
@@ -738,12 +1032,16 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
int count = -1;
uint32_t *result =
my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+#if NEED_PRINTF_WITH_N_DIRECTIVE
static const uint32_t expected[] =
{ '1', '2', '3', ' ', 0 };
ASSERT (result != NULL);
ASSERT (u32_strcmp (result, expected) == 0);
ASSERT (count == 4);
free (result);
+#else
+ ASSERT (result == NULL);
+#endif
}
/* Test the support of the POSIX/XSI format strings with positions. */
@@ -795,6 +1093,30 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
ASSERT (u32_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*U %d", 20, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*U %d", -20, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("%-20U %d", unicode_string, 33, 44, 55);
@@ -850,6 +1172,30 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
ASSERT (u32_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*lU %d", 20, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*lU %d", -20, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("%-20lU %d", unicode_string, 33, 44, 55);
@@ -905,6 +1251,30 @@ test_xfunction (uint32_t * (*my_xasprintf) (const char *, ...))
ASSERT (u32_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint32_t *result =
+ my_xasprintf ("%*llU %d", 20, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { ' ', ' ', ' ', ' ', 'R', 'a', 'f', 'a', 0x0142, ' ',
+ 'M', 'a', 's', 'z', 'k', 'o', 'w', 's', 'k', 'i',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint32_t *result =
+ my_xasprintf ("%*llU %d", -20, unicode_string, 33, 44, 55);
+ static const uint32_t expected[] =
+ { 'R', 'a', 'f', 'a', 0x0142, ' ', 'M', 'a', 's', 'z',
+ 'k', 'o', 'w', 's', 'k', 'i', ' ', ' ', ' ', ' ',
+ ' ', '3', '3', 0
+ };
+ ASSERT (result != NULL);
+ ASSERT (u32_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint32_t *result =
my_xasprintf ("%-20llU %d", unicode_string, 33, 44, 55);
diff --git a/tests/unistdio/test-u32-vasnprintf1.c b/tests/unistdio/test-u32-vasnprintf1.c
index 553ee2d5..43c115cf 100644
--- a/tests/unistdio/test-u32-vasnprintf1.c
+++ b/tests/unistdio/test-u32-vasnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u32_vasnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-vasnprintf2.c b/tests/unistdio/test-u32-vasnprintf2.c
index 7d82cfc6..1ddab53f 100644
--- a/tests/unistdio/test-u32-vasnprintf2.c
+++ b/tests/unistdio/test-u32-vasnprintf2.c
@@ -1,5 +1,5 @@
/* Test of u32_vasnprintf() function in an ISO-8859-1 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-vasnprintf3.c b/tests/unistdio/test-u32-vasnprintf3.c
index 3509f6ff..cfc4674c 100644
--- a/tests/unistdio/test-u32-vasnprintf3.c
+++ b/tests/unistdio/test-u32-vasnprintf3.c
@@ -1,5 +1,5 @@
/* Test of u32_vasnprintf() function in an UTF-8 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-vasprintf1.c b/tests/unistdio/test-u32-vasprintf1.c
index 41084b6d..3ab5e89c 100644
--- a/tests/unistdio/test-u32-vasprintf1.c
+++ b/tests/unistdio/test-u32-vasprintf1.c
@@ -1,5 +1,5 @@
/* Test of u32_vasprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-vsnprintf1.c b/tests/unistdio/test-u32-vsnprintf1.c
index bae3adca..fa38f8db 100644
--- a/tests/unistdio/test-u32-vsnprintf1.c
+++ b/tests/unistdio/test-u32-vsnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u32_vsnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u32-vsprintf1.c b/tests/unistdio/test-u32-vsprintf1.c
index 27b0065c..c857ca71 100644
--- a/tests/unistdio/test-u32-vsprintf1.c
+++ b/tests/unistdio/test-u32-vsprintf1.c
@@ -1,5 +1,5 @@
/* Test of u32_vsprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-asnprintf1.c b/tests/unistdio/test-u8-asnprintf1.c
index 058b7714..d5d256aa 100644
--- a/tests/unistdio/test-u8-asnprintf1.c
+++ b/tests/unistdio/test-u8-asnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u8_asnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-asnprintf1.h b/tests/unistdio/test-u8-asnprintf1.h
index 6aeeae31..f48e2365 100644
--- a/tests/unistdio/test-u8-asnprintf1.h
+++ b/tests/unistdio/test-u8-asnprintf1.h
@@ -1,5 +1,5 @@
/* Test of u8_[v]asnprintf() function.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/unistdio/test-u8-printf1.h b/tests/unistdio/test-u8-printf1.h
index 5a820148..3e8999b6 100644
--- a/tests/unistdio/test-u8-printf1.h
+++ b/tests/unistdio/test-u8-printf1.h
@@ -1,5 +1,5 @@
/* Test of u8_v[a]s[n]printf() function.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -77,6 +77,22 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
ASSERT (u8_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*U %d", 10, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*U %d", -10, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
@@ -113,6 +129,22 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
ASSERT (u8_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*lU %d", 10, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*lU %d", -10, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
@@ -149,6 +181,22 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
ASSERT (u8_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*llU %d", 10, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*llU %d", -10, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Hello 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
@@ -187,6 +235,24 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("Mr. %*s %d", 20, "Ronald Reagan", 33, 44, 55);
+ static const uint8_t expected[] = "Mr. Ronald Reagan 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("Mr. %*s %d", -20, "Ronald Reagan", 33, 44, 55);
+ static const uint8_t expected[] = "Mr. Ronald Reagan 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
@@ -238,6 +304,36 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*a %d", 10, 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = " 0x1.cp+0 33";
+ static const uint8_t expected2[] = " 0x3.8p-1 33";
+ static const uint8_t expected3[] = " 0x7p-2 33";
+ static const uint8_t expected4[] = " 0xep-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*a %d", -10, 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.cp+0 33";
+ static const uint8_t expected2[] = "0x3.8p-1 33";
+ static const uint8_t expected3[] = "0x7p-2 33";
+ static const uint8_t expected4[] = "0xep-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
{ /* Small precision. */
uint8_t *result =
my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
@@ -298,6 +394,36 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*La %d", 10, 1.75L, 33, 44, 55);
+ static const uint8_t expected1[] = " 0x1.cp+0 33";
+ static const uint8_t expected2[] = " 0x3.8p-1 33";
+ static const uint8_t expected3[] = " 0x7p-2 33";
+ static const uint8_t expected4[] = " 0xep-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*La %d", -10, 1.75L, 33, 44, 55);
+ static const uint8_t expected1[] = "0x1.cp+0 33";
+ static const uint8_t expected2[] = "0x3.8p-1 33";
+ static const uint8_t expected3[] = "0x7p-2 33";
+ static const uint8_t expected4[] = "0xep-3 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0
+ || u8_strcmp (result, expected3) == 0
+ || u8_strcmp (result, expected4) == 0);
+ free (result);
+ }
+
{ /* Small precision. */
uint8_t *result =
my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
@@ -348,6 +474,24 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*f %d", 10, 1.75, 33, 44, 55);
+ static const uint8_t expected[] = " 1.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*f %d", -10, 1.75, 33, 44, 55);
+ static const uint8_t expected[] = "1.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint8_t *result =
my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
@@ -375,6 +519,24 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*Lf %d", 10, 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = " 1.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*Lf %d", -10, 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = "1.750000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint8_t *result =
my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
@@ -446,6 +608,28 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*e %d", 15, 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = " 1.750000e+00 33";
+ static const uint8_t expected2[] = " 1.750000e+000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*e %d", -15, 1.75, 33, 44, 55);
+ static const uint8_t expected1[] = "1.750000e+00 33";
+ static const uint8_t expected2[] = "1.750000e+000 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected1) == 0
+ || u8_strcmp (result, expected2) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint8_t *result =
my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
@@ -475,6 +659,24 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*Le %d", 15, 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = " 1.750000e+00 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*Le %d", -15, 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = "1.750000e+00 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint8_t *result =
my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
@@ -504,6 +706,24 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*g %d", 10, 1.75, 33, 44, 55);
+ static const uint8_t expected[] = " 1.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*g %d", -10, 1.75, 33, 44, 55);
+ static const uint8_t expected[] = "1.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint8_t *result =
my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
@@ -533,6 +753,24 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*Lg %d", 10, 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = " 1.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*Lg %d", -10, 1.75L, 33, 44, 55);
+ static const uint8_t expected[] = "1.75 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+
{ /* Precision. */
uint8_t *result =
my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
@@ -548,11 +786,15 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
int count = -1;
uint8_t *result =
my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+#if NEED_PRINTF_WITH_N_DIRECTIVE
static const uint8_t expected[] = "123 ";
ASSERT (result != NULL);
ASSERT (u8_strcmp (result, expected) == 0);
ASSERT (count == 4);
free (result);
+#else
+ ASSERT (result == NULL);
+#endif
}
/* Test the support of the POSIX/XSI format strings with positions. */
@@ -596,6 +838,22 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
ASSERT (u8_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*U %d", 20, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*U %d", -20, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("%-20U %d", unicode_string, 33, 44, 55);
@@ -636,6 +894,22 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
ASSERT (u8_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*lU %d", 20, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*lU %d", -20, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("%-20lU %d", unicode_string, 33, 44, 55);
@@ -676,6 +950,22 @@ test_xfunction (uint8_t * (*my_xasprintf) (const char *, ...))
ASSERT (u8_strcmp (result, expected) == 0);
free (result);
}
+ { /* Width given as argument. */
+ uint8_t *result =
+ my_xasprintf ("%*llU %d", 20, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = " Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ uint8_t *result =
+ my_xasprintf ("%*llU %d", -20, unicode_string, 33, 44, 55);
+ static const uint8_t expected[] = "Rafa\305\202 Maszkowski 33";
+ ASSERT (result != NULL);
+ ASSERT (u8_strcmp (result, expected) == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
uint8_t *result =
my_xasprintf ("%-20llU %d", unicode_string, 33, 44, 55);
diff --git a/tests/unistdio/test-u8-vasnprintf1.c b/tests/unistdio/test-u8-vasnprintf1.c
index 94b9c8d7..895faa93 100644
--- a/tests/unistdio/test-u8-vasnprintf1.c
+++ b/tests/unistdio/test-u8-vasnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u8_vasnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-vasnprintf2.c b/tests/unistdio/test-u8-vasnprintf2.c
index 745550b1..30289688 100644
--- a/tests/unistdio/test-u8-vasnprintf2.c
+++ b/tests/unistdio/test-u8-vasnprintf2.c
@@ -1,5 +1,5 @@
/* Test of u8_vasnprintf() function in an ISO-8859-1 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-vasnprintf3.c b/tests/unistdio/test-u8-vasnprintf3.c
index 5f601abd..b5dc9ab6 100644
--- a/tests/unistdio/test-u8-vasnprintf3.c
+++ b/tests/unistdio/test-u8-vasnprintf3.c
@@ -1,5 +1,5 @@
/* Test of u8_vasnprintf() function in an UTF-8 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-vasprintf1.c b/tests/unistdio/test-u8-vasprintf1.c
index ec7e773f..611f1395 100644
--- a/tests/unistdio/test-u8-vasprintf1.c
+++ b/tests/unistdio/test-u8-vasprintf1.c
@@ -1,5 +1,5 @@
/* Test of u8_vasprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-vsnprintf1.c b/tests/unistdio/test-u8-vsnprintf1.c
index 89274aa0..5de57fb1 100644
--- a/tests/unistdio/test-u8-vsnprintf1.c
+++ b/tests/unistdio/test-u8-vsnprintf1.c
@@ -1,5 +1,5 @@
/* Test of u8_vsnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-u8-vsprintf1.c b/tests/unistdio/test-u8-vsprintf1.c
index 821880be..542cce32 100644
--- a/tests/unistdio/test-u8-vsprintf1.c
+++ b/tests/unistdio/test-u8-vsprintf1.c
@@ -1,5 +1,5 @@
/* Test of u8_vsprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-asnprintf1.c b/tests/unistdio/test-ulc-asnprintf1.c
index 4cad53d5..236cd3b2 100644
--- a/tests/unistdio/test-ulc-asnprintf1.c
+++ b/tests/unistdio/test-ulc-asnprintf1.c
@@ -1,5 +1,5 @@
/* Test of ulc_asnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-asnprintf1.h b/tests/unistdio/test-ulc-asnprintf1.h
index 3631c26e..9e11f314 100644
--- a/tests/unistdio/test-ulc-asnprintf1.h
+++ b/tests/unistdio/test-ulc-asnprintf1.h
@@ -1,5 +1,5 @@
/* Test of ulc_[v]asnprintf() functions.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
diff --git a/tests/unistdio/test-ulc-printf1.h b/tests/unistdio/test-ulc-printf1.h
index a15effbb..49089c1b 100644
--- a/tests/unistdio/test-ulc-printf1.h
+++ b/tests/unistdio/test-ulc-printf1.h
@@ -1,5 +1,5 @@
/* Test of ulc_v[a]s[n]printf() functions.
- Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2024 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
@@ -71,6 +71,20 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
ASSERT (strcmp (result, " Hello 33") == 0);
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*U %d", 10, unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*U %d", -10, unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
char *result =
my_xasprintf ("%-10U %d", unicode_string, 33, 44, 55);
@@ -103,6 +117,20 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
ASSERT (strcmp (result, " Hello 33") == 0);
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*lU %d", 10, unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*lU %d", -10, unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
char *result =
my_xasprintf ("%-10lU %d", unicode_string, 33, 44, 55);
@@ -135,6 +163,20 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
ASSERT (strcmp (result, " Hello 33") == 0);
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*llU %d", 10, unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " Hello 33") == 0);
+ free (result);
+ }
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*llU %d", -10, unicode_string, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Hello 33") == 0);
+ free (result);
+ }
{ /* FLAG_LEFT. */
char *result =
my_xasprintf ("%-10llU %d", unicode_string, 33, 44, 55);
@@ -169,6 +211,22 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("Mr. %*s %d", 20, "Ronald Reagan", 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Mr. Ronald Reagan 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("Mr. %*s %d", -20, "Ronald Reagan", 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "Mr. Ronald Reagan 33") == 0);
+ free (result);
+ }
+
{ /* FLAG_LEFT. */
char *result =
my_xasprintf ("Mr. %-20s %d", "Ronald Reagan", 33, 44, 55);
@@ -210,6 +268,28 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*a %d", 10, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
+ || strcmp (result, " 0x3.8p-1 33") == 0
+ || strcmp (result, " 0x7p-2 33") == 0
+ || strcmp (result, " 0xep-3 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*a %d", -10, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.cp+0 33") == 0
+ || strcmp (result, "0x3.8p-1 33") == 0
+ || strcmp (result, "0x7p-2 33") == 0
+ || strcmp (result, "0xep-3 33") == 0);
+ free (result);
+ }
+
{ /* Small precision. */
char *result =
my_xasprintf ("%.10a %d", 1.75, 33, 44, 55);
@@ -254,6 +334,28 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*La %d", 10, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
+ || strcmp (result, " 0x3.8p-1 33") == 0
+ || strcmp (result, " 0x7p-2 33") == 0
+ || strcmp (result, " 0xep-3 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*La %d", -10, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "0x1.cp+0 33") == 0
+ || strcmp (result, "0x3.8p-1 33") == 0
+ || strcmp (result, "0x7p-2 33") == 0
+ || strcmp (result, "0xep-3 33") == 0);
+ free (result);
+ }
+
{ /* Small precision. */
char *result =
my_xasprintf ("%.10La %d", 1.75L, 33, 44, 55);
@@ -294,6 +396,22 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*f %d", 10, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*f %d", -10, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.750000 33") == 0);
+ free (result);
+ }
+
{ /* Precision. */
char *result =
my_xasprintf ("%.f %d", 1234.0, 33, 44, 55);
@@ -318,6 +436,22 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*Lf %d", 10, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*Lf %d", -10, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.750000 33") == 0);
+ free (result);
+ }
+
{ /* Precision. */
char *result =
my_xasprintf ("%.Lf %d", 1234.0L, 33, 44, 55);
@@ -380,6 +514,24 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*e %d", 15, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000e+00 33") == 0
+ || strcmp (result, " 1.750000e+000 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*e %d", -15, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.750000e+00 33") == 0
+ || strcmp (result, "1.750000e+000 33") == 0);
+ free (result);
+ }
+
{ /* Precision. */
char *result =
my_xasprintf ("%.e %d", 1234.0, 33, 44, 55);
@@ -405,6 +557,22 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*Le %d", 15, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.750000e+00 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*Le %d", -15, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.750000e+00 33") == 0);
+ free (result);
+ }
+
{ /* Precision. */
char *result =
my_xasprintf ("%.Le %d", 1234.0L, 33, 44, 55);
@@ -431,6 +599,22 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*g %d", 10, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.75 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*g %d", -10, 1.75, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.75 33") == 0);
+ free (result);
+ }
+
{ /* Precision. */
char *result =
my_xasprintf ("%.g %d", 1234.0, 33, 44, 55);
@@ -456,6 +640,22 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
free (result);
}
+ { /* Width given as argument. */
+ char *result =
+ my_xasprintf ("%*Lg %d", 10, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, " 1.75 33") == 0);
+ free (result);
+ }
+
+ { /* Negative width given as argument (cf. FLAG_LEFT below). */
+ char *result =
+ my_xasprintf ("%*Lg %d", -10, 1.75L, 33, 44, 55);
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "1.75 33") == 0);
+ free (result);
+ }
+
{ /* Precision. */
char *result =
my_xasprintf ("%.Lg %d", 1234.0L, 33, 44, 55);
@@ -470,10 +670,14 @@ test_xfunction (char * (*my_xasprintf) (const char *, ...))
int count = -1;
char *result =
my_xasprintf ("%d %n", 123, &count, 33, 44, 55);
+#if NEED_PRINTF_WITH_N_DIRECTIVE
ASSERT (result != NULL);
ASSERT (strcmp (result, "123 ") == 0);
ASSERT (count == 4);
free (result);
+#else
+ ASSERT (result == NULL);
+#endif
}
/* Test the support of the POSIX/XSI format strings with positions. */
diff --git a/tests/unistdio/test-ulc-vasnprintf1.c b/tests/unistdio/test-ulc-vasnprintf1.c
index d6ea67dd..d0d6f858 100644
--- a/tests/unistdio/test-ulc-vasnprintf1.c
+++ b/tests/unistdio/test-ulc-vasnprintf1.c
@@ -1,5 +1,5 @@
/* Test of ulc_vasnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-vasnprintf2.c b/tests/unistdio/test-ulc-vasnprintf2.c
index f53ff50f..458ce4aa 100644
--- a/tests/unistdio/test-ulc-vasnprintf2.c
+++ b/tests/unistdio/test-ulc-vasnprintf2.c
@@ -1,5 +1,5 @@
/* Test of ulc_vasnprintf() function in an ISO-8859-1 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-vasnprintf3.c b/tests/unistdio/test-ulc-vasnprintf3.c
index 6bc2c9b5..717e9850 100644
--- a/tests/unistdio/test-ulc-vasnprintf3.c
+++ b/tests/unistdio/test-ulc-vasnprintf3.c
@@ -1,5 +1,5 @@
/* Test of ulc_vasnprintf() function in an UTF-8 locale.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-vasprintf1.c b/tests/unistdio/test-ulc-vasprintf1.c
index ec523ff4..c97909cc 100644
--- a/tests/unistdio/test-ulc-vasprintf1.c
+++ b/tests/unistdio/test-ulc-vasprintf1.c
@@ -1,5 +1,5 @@
/* Test of ulc_vasprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-vsnprintf1.c b/tests/unistdio/test-ulc-vsnprintf1.c
index c282ff99..899ad10b 100644
--- a/tests/unistdio/test-ulc-vsnprintf1.c
+++ b/tests/unistdio/test-ulc-vsnprintf1.c
@@ -1,5 +1,5 @@
/* Test of ulc_vsnprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistdio/test-ulc-vsprintf1.c b/tests/unistdio/test-ulc-vsprintf1.c
index 9e9af160..123397d7 100644
--- a/tests/unistdio/test-ulc-vsprintf1.c
+++ b/tests/unistdio/test-ulc-vsprintf1.c
@@ -1,5 +1,5 @@
/* Test of ulc_vsprintf() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/unistr/test-chr.h b/tests/unistr/test-chr.h
index f8f87015..f7bfc2ba 100644
--- a/tests/unistr/test-chr.h
+++ b/tests/unistr/test-chr.h
@@ -1,5 +1,5 @@
/* Test of uN_chr() functions.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -20,7 +20,6 @@ int
main (void)
{
size_t size = 0x100000;
- size_t i;
size_t length;
UNIT *input;
uint32_t *input32 = (uint32_t *) malloc (size * sizeof (uint32_t));
@@ -29,7 +28,7 @@ main (void)
input32[0] = 'a';
input32[1] = 'b';
u32_set (input32 + 2, 'c', 1024);
- for (i = 1026; i < size - 2; i += 63)
+ for (size_t i = 1026; i < size - 2; i += 63)
{
size_t last = i + 63 < size - 2 ? i + 63 : size - 2;
ucs4_t uc = 'd' | (i - 1026);
@@ -48,9 +47,11 @@ main (void)
ASSERT (U_CHR (input, length, 'a') == input);
ASSERT (U_CHR (input, 0, 'a') == NULL);
- void *page_boundary = zerosize_ptr ();
- if (page_boundary)
- ASSERT (U_CHR (page_boundary, 0, 'a') == NULL);
+ {
+ void *page_boundary = zerosize_ptr ();
+ if (page_boundary != NULL)
+ ASSERT (U_CHR (page_boundary, 0, 'a') == NULL);
+ }
ASSERT (U_CHR (input, length, 'b') == input + 1);
ASSERT (U_CHR (input, length, 'c') == input + 2);
@@ -59,7 +60,7 @@ main (void)
{
UNIT *exp = input + 1026;
UNIT *prev = input + 1;
- for (i = 1026; i < size - 2; i += 63)
+ for (size_t i = 1026; i < size - 2; i += 63)
{
UNIT c[6];
size_t n;
@@ -108,14 +109,14 @@ main (void)
/* Check that uN_chr() does not read past the first occurrence of the
byte being searched. */
{
- char *page_boundary = (char *) zerosize_ptr ();
+ UNIT *page_boundary = zerosize_ptr ();
size_t n;
if (page_boundary != NULL)
{
for (n = 1; n <= 500 / sizeof (UNIT); n++)
{
- UNIT *mem = (UNIT *) (page_boundary - n * sizeof (UNIT));
+ UNIT *mem = page_boundary - n;
U_SET (mem, 'X', n);
ASSERT (U_CHR (mem, n, 'U') == NULL);
diff --git a/tests/unistr/test-cmp.h b/tests/unistr/test-cmp.h
index c7c92434..3eb1be32 100644
--- a/tests/unistr/test-cmp.h
+++ b/tests/unistr/test-cmp.h
@@ -1,5 +1,5 @@
/* Test of uN_cmp() functions.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/unistr/test-cmp2.h b/tests/unistr/test-cmp2.h
index 8fe88c54..3b9f7568 100644
--- a/tests/unistr/test-cmp2.h
+++ b/tests/unistr/test-cmp2.h
@@ -1,5 +1,5 @@
/* Test of uN_cmp2() functions.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
diff --git a/tests/unistr/test-cpy-alloc.h b/tests/unistr/test-cpy-alloc.h
index 5fa46a74..37b07350 100644
--- a/tests/unistr/test-cpy-alloc.h
+++ b/tests/unistr/test-cpy-alloc.h
@@ -1,5 +1,5 @@
/* Test of uN_cpy_alloc() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-cpy.h b/tests/unistr/test-cpy.h
index 12379bb2..05f1f5a8 100644
--- a/tests/unistr/test-cpy.h
+++ b/tests/unistr/test-cpy.h
@@ -1,5 +1,5 @@
/* Test of uN_cpy() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-move.h b/tests/unistr/test-move.h
index fd13b4cc..80784937 100644
--- a/tests/unistr/test-move.h
+++ b/tests/unistr/test-move.h
@@ -1,5 +1,5 @@
/* Test of uN_move() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-pcpy.h b/tests/unistr/test-pcpy.h
new file mode 100644
index 00000000..92ae0d0e
--- /dev/null
+++ b/tests/unistr/test-pcpy.h
@@ -0,0 +1,44 @@
+/* Test of uN_pcpy() functions.
+ Copyright (C) 2010-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+int
+main ()
+{
+ /* Test small copying operations. */
+ {
+ static const UNIT src[] = { 'c', 'l', 'i', 'm', 'a', 't', 'e' };
+ size_t n;
+
+ for (n = 0; n <= SIZEOF (src); n++)
+ {
+ UNIT dest[1 + SIZEOF (src) + 1] =
+ { MAGIC, MAGIC, MAGIC, MAGIC, MAGIC, MAGIC, MAGIC, MAGIC, MAGIC };
+ UNIT *ret;
+ size_t i;
+
+ ret = U_PCPY (dest + 1, src, n);
+ ASSERT (ret == dest + 1 + n);
+ ASSERT (dest[0] == MAGIC);
+ for (i = 0; i < n; i++)
+ ASSERT (dest[1 + i] == src[i]);
+ ASSERT (dest[1 + n] == MAGIC);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/unistr/test-set.h b/tests/unistr/test-set.h
index 24330260..c1966675 100644
--- a/tests/unistr/test-set.h
+++ b/tests/unistr/test-set.h
@@ -1,5 +1,5 @@
/* Test of uN_set() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-stpcpy.h b/tests/unistr/test-stpcpy.h
index 5b1d6615..e3fe8e5b 100644
--- a/tests/unistr/test-stpcpy.h
+++ b/tests/unistr/test-stpcpy.h
@@ -1,5 +1,5 @@
/* Test of uN_stpcpy() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-stpncpy.h b/tests/unistr/test-stpncpy.h
index 34503bd2..3fc03d51 100644
--- a/tests/unistr/test-stpncpy.h
+++ b/tests/unistr/test-stpncpy.h
@@ -1,5 +1,5 @@
/* Test of uN_stpncpy() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strcat.h b/tests/unistr/test-strcat.h
index 906528ff..12440c43 100644
--- a/tests/unistr/test-strcat.h
+++ b/tests/unistr/test-strcat.h
@@ -1,5 +1,5 @@
/* Test of uN_strcat() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strchr.h b/tests/unistr/test-strchr.h
index 52768a4b..ad102c2e 100644
--- a/tests/unistr/test-strchr.h
+++ b/tests/unistr/test-strchr.h
@@ -1,5 +1,5 @@
/* Test of uN_strchr() functions.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 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
@@ -22,7 +22,6 @@ test_strchr (void)
{
size_t size = 0x100000;
size_t length;
- size_t i;
UNIT *input;
uint32_t *input32 = (uint32_t *) malloc ((size + 1) * sizeof (uint32_t));
ASSERT (input32);
@@ -30,7 +29,7 @@ test_strchr (void)
input32[0] = 'a';
input32[1] = 'b';
u32_set (input32 + 2, 'c', 1024);
- for (i = 1026; i < size - 2; i += 63)
+ for (size_t i = 1026; i < size - 2; i += 63)
{
size_t last = i + 63 < size - 2 ? i + 63 : size - 2;
ucs4_t uc = 'd' | (i - 1026);
@@ -54,7 +53,7 @@ test_strchr (void)
UNIT *exp = input + 1026;
UNIT *prev = input + 2;
- for (i = 1026; i < size - 2; i += 63)
+ for (size_t i = 1026; i < size - 2; i += 63)
{
UNIT c[6];
size_t n;
diff --git a/tests/unistr/test-strcmp.h b/tests/unistr/test-strcmp.h
index aeba3549..ea8c1321 100644
--- a/tests/unistr/test-strcmp.h
+++ b/tests/unistr/test-strcmp.h
@@ -1,5 +1,5 @@
/* Test of uN_strcmp() and uN_strcoll() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strcpy.h b/tests/unistr/test-strcpy.h
index 1f145032..9ff1f992 100644
--- a/tests/unistr/test-strcpy.h
+++ b/tests/unistr/test-strcpy.h
@@ -1,5 +1,5 @@
/* Test of uN_strcpy() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strdup.h b/tests/unistr/test-strdup.h
index 298a0459..af19c4d6 100644
--- a/tests/unistr/test-strdup.h
+++ b/tests/unistr/test-strdup.h
@@ -1,5 +1,5 @@
/* Test of uN_strdup() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strncat.h b/tests/unistr/test-strncat.h
index c66583ec..c505fc26 100644
--- a/tests/unistr/test-strncat.h
+++ b/tests/unistr/test-strncat.h
@@ -1,5 +1,5 @@
/* Test of uN_strncat() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strncmp.h b/tests/unistr/test-strncmp.h
index 8fdc4d99..64fecebb 100644
--- a/tests/unistr/test-strncmp.h
+++ b/tests/unistr/test-strncmp.h
@@ -1,5 +1,5 @@
/* Test of uN_strncmp() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strncpy.h b/tests/unistr/test-strncpy.h
index f2774fb0..c3ad19c6 100644
--- a/tests/unistr/test-strncpy.h
+++ b/tests/unistr/test-strncpy.h
@@ -1,5 +1,5 @@
/* Test of uN_strncpy() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-strnlen.h b/tests/unistr/test-strnlen.h
index ba3c0cfd..abc83fb9 100644
--- a/tests/unistr/test-strnlen.h
+++ b/tests/unistr/test-strnlen.h
@@ -1,5 +1,5 @@
/* Test of uN_strnlen() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u-strstr.h b/tests/unistr/test-u-strstr.h
index d53183e1..36783cdf 100644
--- a/tests/unistr/test-u-strstr.h
+++ b/tests/unistr/test-u-strstr.h
@@ -1,5 +1,5 @@
/* Test of uN_strstr() functions.
- Copyright (C) 2004, 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2007-2024 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
@@ -207,4 +207,42 @@ test_u_strstr (void)
free (needle);
free (haystack);
}
+
+ /* Test case from Yves Bastide.
+ <https://www.openwall.com/lists/musl/2014/04/18/2> */
+ {
+ const UNIT input[] =
+ { 'p', 'l', 'a', 'y', 'i', 'n', 'g', ' ', 'p', 'l', 'a', 'y', ' ', 'p',
+ 'l', 'a', 'y', ' ', 'p', 'l', 'a', 'y', ' ', 'a', 'l', 'w', 'a', 'y',
+ 's', 0
+ };
+ const UNIT needle[] =
+ { 'p', 'l', 'a', 'y', ' ', 'p', 'l', 'a', 'y', ' ', 'p', 'l', 'a', 'y',
+ 0
+ };
+ const UNIT *result = U_STRSTR (input, needle);
+ ASSERT (result == input + 8);
+ }
+
+ /* Test long needles. */
+ {
+ size_t m = 1024;
+ UNIT *haystack = (UNIT *) malloc ((2 * m + 1) * sizeof (UNIT));
+ UNIT *needle = (UNIT *) malloc ((m + 1) * sizeof (UNIT));
+ if (haystack != NULL && needle != NULL)
+ {
+ const UNIT *p;
+ haystack[0] = 'x';
+ U_SET (haystack + 1, ' ', m - 1);
+ U_SET (haystack + m, 'x', m);
+ haystack[2 * m] = '\0';
+ U_SET (needle, 'x', m);
+ needle[m] = '\0';
+ p = U_STRSTR (haystack, needle);
+ ASSERT (p);
+ ASSERT (p - haystack == m);
+ }
+ free (needle);
+ free (haystack);
+ }
}
diff --git a/tests/unistr/test-u-strtok.h b/tests/unistr/test-u-strtok.h
index 15389ac1..74272d3b 100644
--- a/tests/unistr/test-u-strtok.h
+++ b/tests/unistr/test-u-strtok.h
@@ -1,5 +1,5 @@
/* Test of uN_strtok() functions.
- Copyright (C) 2015-2022 Free Software Foundation, Inc.
+ Copyright (C) 2015-2024 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
@@ -50,10 +50,12 @@ test_u_strtok (void)
'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'D', 'E', 0
};
ucs4_t u_delim[] = { 0x3000, 0x3001, 0 };
- size_t input_len = 6 * SIZEOF (u_input);
- UNIT *input = (UNIT *) malloc (input_len);
- size_t delim_len = 6 * SIZEOF (u_delim);
- UNIT *delim = (UNIT *) malloc (delim_len);
+ /* Convert ucs4_t[] to UNIT[].
+ Every ucs4_t yields at most 4 / sizeof (UNIT) units. */
+ size_t input_len = SIZEOF (u_input) * (4 / sizeof (UNIT));
+ UNIT *input = (UNIT *) malloc (input_len * sizeof (UNIT));
+ size_t delim_len = SIZEOF (u_delim) * (4 / sizeof (UNIT));
+ UNIT *delim = (UNIT *) malloc (delim_len * sizeof (UNIT));
UNIT *state;
const UNIT *result;
UNIT *ptr, *first_ptr, *second_ptr;
diff --git a/tests/unistr/test-u16-check.c b/tests/unistr/test-u16-check.c
index eb7b9988..0d83d6ac 100644
--- a/tests/unistr/test-u16-check.c
+++ b/tests/unistr/test-u16-check.c
@@ -1,5 +1,5 @@
/* Test of u16_check() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-chr.c b/tests/unistr/test-u16-chr.c
index 6e6e1069..5f0b16e5 100644
--- a/tests/unistr/test-u16-chr.c
+++ b/tests/unistr/test-u16-chr.c
@@ -1,5 +1,5 @@
/* Test of u16_chr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-cmp.c b/tests/unistr/test-u16-cmp.c
index 393fa9d7..03d6b4cd 100644
--- a/tests/unistr/test-u16-cmp.c
+++ b/tests/unistr/test-u16-cmp.c
@@ -1,5 +1,5 @@
/* Test of u16_cmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-cmp2.c b/tests/unistr/test-u16-cmp2.c
index e25fe1a6..2eb0dbd0 100644
--- a/tests/unistr/test-u16-cmp2.c
+++ b/tests/unistr/test-u16-cmp2.c
@@ -1,5 +1,5 @@
/* Test of u16_cmp2() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-cpy-alloc.c b/tests/unistr/test-u16-cpy-alloc.c
index 80e8999d..bbc16456 100644
--- a/tests/unistr/test-u16-cpy-alloc.c
+++ b/tests/unistr/test-u16-cpy-alloc.c
@@ -1,5 +1,5 @@
/* Test of u16_cpy_alloc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-cpy.c b/tests/unistr/test-u16-cpy.c
index be7f11aa..cf9993fa 100644
--- a/tests/unistr/test-u16-cpy.c
+++ b/tests/unistr/test-u16-cpy.c
@@ -1,5 +1,5 @@
/* Test of u16_cpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-mblen.c b/tests/unistr/test-u16-mblen.c
index 603cfe1f..a81a79a3 100644
--- a/tests/unistr/test-u16-mblen.c
+++ b/tests/unistr/test-u16-mblen.c
@@ -1,5 +1,5 @@
/* Test of u16_mblen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-mbsnlen.c b/tests/unistr/test-u16-mbsnlen.c
index 02bf2030..f3a249f9 100644
--- a/tests/unistr/test-u16-mbsnlen.c
+++ b/tests/unistr/test-u16-mbsnlen.c
@@ -1,5 +1,5 @@
/* Test of u16_mbsnlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-mbtouc-unsafe.c b/tests/unistr/test-u16-mbtouc-unsafe.c
index 06d4e428..7fd02f27 100644
--- a/tests/unistr/test-u16-mbtouc-unsafe.c
+++ b/tests/unistr/test-u16-mbtouc-unsafe.c
@@ -1,5 +1,5 @@
/* Test of u16_mbtouc_unsafe() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-mbtouc.c b/tests/unistr/test-u16-mbtouc.c
index 57a2b663..b7a3e47c 100644
--- a/tests/unistr/test-u16-mbtouc.c
+++ b/tests/unistr/test-u16-mbtouc.c
@@ -1,5 +1,5 @@
/* Test of u16_mbtouc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-mbtouc.h b/tests/unistr/test-u16-mbtouc.h
index a44a998d..5c33948a 100644
--- a/tests/unistr/test-u16-mbtouc.h
+++ b/tests/unistr/test-u16-mbtouc.h
@@ -1,5 +1,5 @@
/* Test of u16_mbtouc() and u16_mbtouc_unsafe() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-mbtoucr.c b/tests/unistr/test-u16-mbtoucr.c
index dfdab67d..167a77e0 100644
--- a/tests/unistr/test-u16-mbtoucr.c
+++ b/tests/unistr/test-u16-mbtoucr.c
@@ -1,5 +1,5 @@
/* Test of u16_mbtoucr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-move.c b/tests/unistr/test-u16-move.c
index 8e050d44..887912b3 100644
--- a/tests/unistr/test-u16-move.c
+++ b/tests/unistr/test-u16-move.c
@@ -1,5 +1,5 @@
/* Test of u16_move() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-next.c b/tests/unistr/test-u16-next.c
index e2022898..4d116e25 100644
--- a/tests/unistr/test-u16-next.c
+++ b/tests/unistr/test-u16-next.c
@@ -1,5 +1,5 @@
/* Test of u16_next() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-pcpy.c b/tests/unistr/test-u16-pcpy.c
new file mode 100644
index 00000000..b20741e2
--- /dev/null
+++ b/tests/unistr/test-u16-pcpy.c
@@ -0,0 +1,28 @@
+/* Test of u16_pcpy() function.
+ Copyright (C) 2010-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+#include <config.h>
+
+#include "unistr.h"
+
+#include "macros.h"
+
+#define UNIT uint16_t
+#define U_PCPY u16_pcpy
+#define MAGIC 0xBADE
+#include "test-pcpy.h"
diff --git a/tests/unistr/test-u16-prev.c b/tests/unistr/test-u16-prev.c
index c7400dc5..bf05ea05 100644
--- a/tests/unistr/test-u16-prev.c
+++ b/tests/unistr/test-u16-prev.c
@@ -1,5 +1,5 @@
/* Test of u16_prev() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-set.c b/tests/unistr/test-u16-set.c
index a5270d10..7a6597dd 100644
--- a/tests/unistr/test-u16-set.c
+++ b/tests/unistr/test-u16-set.c
@@ -1,5 +1,5 @@
/* Test of u16_set() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-stpcpy.c b/tests/unistr/test-u16-stpcpy.c
index 5f18e011..616041d2 100644
--- a/tests/unistr/test-u16-stpcpy.c
+++ b/tests/unistr/test-u16-stpcpy.c
@@ -1,5 +1,5 @@
/* Test of u16_stpcpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-stpncpy.c b/tests/unistr/test-u16-stpncpy.c
index 104ea16c..35dd20d5 100644
--- a/tests/unistr/test-u16-stpncpy.c
+++ b/tests/unistr/test-u16-stpncpy.c
@@ -1,5 +1,5 @@
/* Test of u16_stpncpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strcat.c b/tests/unistr/test-u16-strcat.c
index de5448b2..8ec36d4c 100644
--- a/tests/unistr/test-u16-strcat.c
+++ b/tests/unistr/test-u16-strcat.c
@@ -1,5 +1,5 @@
/* Test of u16_strcat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strchr.c b/tests/unistr/test-u16-strchr.c
index f4ec6881..e23df8c2 100644
--- a/tests/unistr/test-u16-strchr.c
+++ b/tests/unistr/test-u16-strchr.c
@@ -1,5 +1,5 @@
/* Test of u16_strchr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strcmp.c b/tests/unistr/test-u16-strcmp.c
index 7ab3e831..4ee85078 100644
--- a/tests/unistr/test-u16-strcmp.c
+++ b/tests/unistr/test-u16-strcmp.c
@@ -1,5 +1,5 @@
/* Test of u16_strcmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strcmp.h b/tests/unistr/test-u16-strcmp.h
index 84b8d511..3a0f3b18 100644
--- a/tests/unistr/test-u16-strcmp.h
+++ b/tests/unistr/test-u16-strcmp.h
@@ -1,5 +1,5 @@
/* Test of u16_strcmp() and u16_strcoll() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strcoll.c b/tests/unistr/test-u16-strcoll.c
index 9ea43bca..b49f4b66 100644
--- a/tests/unistr/test-u16-strcoll.c
+++ b/tests/unistr/test-u16-strcoll.c
@@ -1,5 +1,5 @@
/* Test of u16_strcoll() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strcpy.c b/tests/unistr/test-u16-strcpy.c
index 7f0e01e6..9d2f475d 100644
--- a/tests/unistr/test-u16-strcpy.c
+++ b/tests/unistr/test-u16-strcpy.c
@@ -1,5 +1,5 @@
/* Test of u16_strcpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strdup.c b/tests/unistr/test-u16-strdup.c
index 798831e1..936bddcb 100644
--- a/tests/unistr/test-u16-strdup.c
+++ b/tests/unistr/test-u16-strdup.c
@@ -1,5 +1,5 @@
/* Test of u16_strdup() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strlen.c b/tests/unistr/test-u16-strlen.c
index 68198a41..e9348b81 100644
--- a/tests/unistr/test-u16-strlen.c
+++ b/tests/unistr/test-u16-strlen.c
@@ -1,5 +1,5 @@
/* Test of u16_strlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strmblen.c b/tests/unistr/test-u16-strmblen.c
index f31d824c..88dd0f27 100644
--- a/tests/unistr/test-u16-strmblen.c
+++ b/tests/unistr/test-u16-strmblen.c
@@ -1,5 +1,5 @@
/* Test of u16_strmblen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strmbtouc.c b/tests/unistr/test-u16-strmbtouc.c
index bb7a5ca9..c4c76ca5 100644
--- a/tests/unistr/test-u16-strmbtouc.c
+++ b/tests/unistr/test-u16-strmbtouc.c
@@ -1,5 +1,5 @@
/* Test of u16_strmbtouc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strncat.c b/tests/unistr/test-u16-strncat.c
index 9eda6e15..6079cb71 100644
--- a/tests/unistr/test-u16-strncat.c
+++ b/tests/unistr/test-u16-strncat.c
@@ -1,5 +1,5 @@
/* Test of u16_strncat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strncmp.c b/tests/unistr/test-u16-strncmp.c
index 3d03a7a2..45bc9fab 100644
--- a/tests/unistr/test-u16-strncmp.c
+++ b/tests/unistr/test-u16-strncmp.c
@@ -1,5 +1,5 @@
/* Test of u16_strncmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strncpy.c b/tests/unistr/test-u16-strncpy.c
index 184c6311..837dac9c 100644
--- a/tests/unistr/test-u16-strncpy.c
+++ b/tests/unistr/test-u16-strncpy.c
@@ -1,5 +1,5 @@
/* Test of u16_strncpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strnlen.c b/tests/unistr/test-u16-strnlen.c
index 9258b965..48604fee 100644
--- a/tests/unistr/test-u16-strnlen.c
+++ b/tests/unistr/test-u16-strnlen.c
@@ -1,5 +1,5 @@
/* Test of u16_strnlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-strstr.c b/tests/unistr/test-u16-strstr.c
index bbad6c61..4906a96f 100644
--- a/tests/unistr/test-u16-strstr.c
+++ b/tests/unistr/test-u16-strstr.c
@@ -1,5 +1,5 @@
/* Test of u16_strstr() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -29,6 +29,7 @@
#define UNIT uint16_t
#define U_STRSTR u16_strstr
+#define U_SET u16_set
#include "test-u-strstr.h"
int
diff --git a/tests/unistr/test-u16-strtok.c b/tests/unistr/test-u16-strtok.c
index e226393d..ef9ffbb5 100644
--- a/tests/unistr/test-u16-strtok.c
+++ b/tests/unistr/test-u16-strtok.c
@@ -1,5 +1,5 @@
/* Test of u16_strtok() function.
- Copyright (C) 2015-2022 Free Software Foundation, Inc.
+ Copyright (C) 2015-2024 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
diff --git a/tests/unistr/test-u16-to-u32.c b/tests/unistr/test-u16-to-u32.c
index de19d5a6..5b340451 100644
--- a/tests/unistr/test-u16-to-u32.c
+++ b/tests/unistr/test-u16-to-u32.c
@@ -1,5 +1,5 @@
/* Test of u16_to_u32() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-to-u8.c b/tests/unistr/test-u16-to-u8.c
index acbad8ac..71b9a02e 100644
--- a/tests/unistr/test-u16-to-u8.c
+++ b/tests/unistr/test-u16-to-u8.c
@@ -1,5 +1,5 @@
/* Test of u16_to_u8() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u16-uctomb.c b/tests/unistr/test-u16-uctomb.c
index 3408cba3..14338d63 100644
--- a/tests/unistr/test-u16-uctomb.c
+++ b/tests/unistr/test-u16-uctomb.c
@@ -1,5 +1,5 @@
/* Test of u16_uctomb() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-check.c b/tests/unistr/test-u32-check.c
index 9b43b03e..fab64b23 100644
--- a/tests/unistr/test-u32-check.c
+++ b/tests/unistr/test-u32-check.c
@@ -1,5 +1,5 @@
/* Test of u32_check() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-chr.c b/tests/unistr/test-u32-chr.c
index 7cd3912d..474681ff 100644
--- a/tests/unistr/test-u32-chr.c
+++ b/tests/unistr/test-u32-chr.c
@@ -1,5 +1,5 @@
/* Test of u32_chr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-cmp.c b/tests/unistr/test-u32-cmp.c
index d76024a2..57579eda 100644
--- a/tests/unistr/test-u32-cmp.c
+++ b/tests/unistr/test-u32-cmp.c
@@ -1,5 +1,5 @@
/* Test of u32_cmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-cmp2.c b/tests/unistr/test-u32-cmp2.c
index b3d249da..0fbb8c0a 100644
--- a/tests/unistr/test-u32-cmp2.c
+++ b/tests/unistr/test-u32-cmp2.c
@@ -1,5 +1,5 @@
/* Test of u32_cmp2() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-cpy-alloc.c b/tests/unistr/test-u32-cpy-alloc.c
index f9123115..f3f9d106 100644
--- a/tests/unistr/test-u32-cpy-alloc.c
+++ b/tests/unistr/test-u32-cpy-alloc.c
@@ -1,5 +1,5 @@
/* Test of u32_cpy_alloc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-cpy.c b/tests/unistr/test-u32-cpy.c
index b4f8f90a..0ba5f8b4 100644
--- a/tests/unistr/test-u32-cpy.c
+++ b/tests/unistr/test-u32-cpy.c
@@ -1,5 +1,5 @@
/* Test of u32_cpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-mblen.c b/tests/unistr/test-u32-mblen.c
index 6cfb22a2..5e8e0e29 100644
--- a/tests/unistr/test-u32-mblen.c
+++ b/tests/unistr/test-u32-mblen.c
@@ -1,5 +1,5 @@
/* Test of u32_mblen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-mbsnlen.c b/tests/unistr/test-u32-mbsnlen.c
index 4ef6e316..e8f5c5da 100644
--- a/tests/unistr/test-u32-mbsnlen.c
+++ b/tests/unistr/test-u32-mbsnlen.c
@@ -1,5 +1,5 @@
/* Test of u32_mbsnlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-mbtouc-unsafe.c b/tests/unistr/test-u32-mbtouc-unsafe.c
index cfe0c4ca..111768db 100644
--- a/tests/unistr/test-u32-mbtouc-unsafe.c
+++ b/tests/unistr/test-u32-mbtouc-unsafe.c
@@ -1,5 +1,5 @@
/* Test of u32_mbtouc_unsafe() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-mbtouc.c b/tests/unistr/test-u32-mbtouc.c
index b45e61e2..0804d8e4 100644
--- a/tests/unistr/test-u32-mbtouc.c
+++ b/tests/unistr/test-u32-mbtouc.c
@@ -1,5 +1,5 @@
/* Test of u32_mbtouc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-mbtouc.h b/tests/unistr/test-u32-mbtouc.h
index 1b226a16..37e6342f 100644
--- a/tests/unistr/test-u32-mbtouc.h
+++ b/tests/unistr/test-u32-mbtouc.h
@@ -1,5 +1,5 @@
/* Test of u32_mbtouc() and u32_mbtouc_unsafe() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-mbtoucr.c b/tests/unistr/test-u32-mbtoucr.c
index 30c3ca29..7d74a87a 100644
--- a/tests/unistr/test-u32-mbtoucr.c
+++ b/tests/unistr/test-u32-mbtoucr.c
@@ -1,5 +1,5 @@
/* Test of u32_mbtoucr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-move.c b/tests/unistr/test-u32-move.c
index 26b730bd..82c9a379 100644
--- a/tests/unistr/test-u32-move.c
+++ b/tests/unistr/test-u32-move.c
@@ -1,5 +1,5 @@
/* Test of u32_move() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-next.c b/tests/unistr/test-u32-next.c
index 42103347..320d520e 100644
--- a/tests/unistr/test-u32-next.c
+++ b/tests/unistr/test-u32-next.c
@@ -1,5 +1,5 @@
/* Test of u32_next() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-pcpy.c b/tests/unistr/test-u32-pcpy.c
new file mode 100644
index 00000000..af77cc25
--- /dev/null
+++ b/tests/unistr/test-u32-pcpy.c
@@ -0,0 +1,28 @@
+/* Test of u32_pcpy() function.
+ Copyright (C) 2010-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+#include <config.h>
+
+#include "unistr.h"
+
+#include "macros.h"
+
+#define UNIT uint32_t
+#define U_PCPY u32_pcpy
+#define MAGIC 0xBADFACE
+#include "test-pcpy.h"
diff --git a/tests/unistr/test-u32-prev.c b/tests/unistr/test-u32-prev.c
index 5dd61f27..7e648dd1 100644
--- a/tests/unistr/test-u32-prev.c
+++ b/tests/unistr/test-u32-prev.c
@@ -1,5 +1,5 @@
/* Test of u32_prev() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-set.c b/tests/unistr/test-u32-set.c
index 6551c9d5..99e644dc 100644
--- a/tests/unistr/test-u32-set.c
+++ b/tests/unistr/test-u32-set.c
@@ -1,5 +1,5 @@
/* Test of u32_set() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-stpcpy.c b/tests/unistr/test-u32-stpcpy.c
index 9bb5adfc..c6ac1751 100644
--- a/tests/unistr/test-u32-stpcpy.c
+++ b/tests/unistr/test-u32-stpcpy.c
@@ -1,5 +1,5 @@
/* Test of u32_stpcpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-stpncpy.c b/tests/unistr/test-u32-stpncpy.c
index 667fb221..a417fe0c 100644
--- a/tests/unistr/test-u32-stpncpy.c
+++ b/tests/unistr/test-u32-stpncpy.c
@@ -1,5 +1,5 @@
/* Test of u32_stpncpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strcat.c b/tests/unistr/test-u32-strcat.c
index cf6ed7fe..64e1b5cc 100644
--- a/tests/unistr/test-u32-strcat.c
+++ b/tests/unistr/test-u32-strcat.c
@@ -1,5 +1,5 @@
/* Test of u32_strcat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strchr.c b/tests/unistr/test-u32-strchr.c
index 1359e1a4..075d1d66 100644
--- a/tests/unistr/test-u32-strchr.c
+++ b/tests/unistr/test-u32-strchr.c
@@ -1,5 +1,5 @@
/* Test of u32_strchr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strcmp.c b/tests/unistr/test-u32-strcmp.c
index e59bb93e..71fd0b1e 100644
--- a/tests/unistr/test-u32-strcmp.c
+++ b/tests/unistr/test-u32-strcmp.c
@@ -1,5 +1,5 @@
/* Test of u32_strcmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strcmp.h b/tests/unistr/test-u32-strcmp.h
index d32b8e04..4b149103 100644
--- a/tests/unistr/test-u32-strcmp.h
+++ b/tests/unistr/test-u32-strcmp.h
@@ -1,5 +1,5 @@
/* Test of u32_strcmp() and u32_strcoll() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strcoll.c b/tests/unistr/test-u32-strcoll.c
index 73fa65ae..bd3180e1 100644
--- a/tests/unistr/test-u32-strcoll.c
+++ b/tests/unistr/test-u32-strcoll.c
@@ -1,5 +1,5 @@
/* Test of u32_strcoll() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strcpy.c b/tests/unistr/test-u32-strcpy.c
index caf5d4af..22a6e70e 100644
--- a/tests/unistr/test-u32-strcpy.c
+++ b/tests/unistr/test-u32-strcpy.c
@@ -1,5 +1,5 @@
/* Test of u32_strcpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strdup.c b/tests/unistr/test-u32-strdup.c
index 753e50c1..f81701fe 100644
--- a/tests/unistr/test-u32-strdup.c
+++ b/tests/unistr/test-u32-strdup.c
@@ -1,5 +1,5 @@
/* Test of u32_strdup() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strlen.c b/tests/unistr/test-u32-strlen.c
index 6eeb00c0..6186fbdb 100644
--- a/tests/unistr/test-u32-strlen.c
+++ b/tests/unistr/test-u32-strlen.c
@@ -1,5 +1,5 @@
/* Test of u32_strlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strmblen.c b/tests/unistr/test-u32-strmblen.c
index e1ced4e1..62a5a0b0 100644
--- a/tests/unistr/test-u32-strmblen.c
+++ b/tests/unistr/test-u32-strmblen.c
@@ -1,5 +1,5 @@
/* Test of u32_strmblen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strmbtouc.c b/tests/unistr/test-u32-strmbtouc.c
index 29f18316..19003098 100644
--- a/tests/unistr/test-u32-strmbtouc.c
+++ b/tests/unistr/test-u32-strmbtouc.c
@@ -1,5 +1,5 @@
/* Test of u32_strmbtouc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strncat.c b/tests/unistr/test-u32-strncat.c
index eac5119c..10b736d3 100644
--- a/tests/unistr/test-u32-strncat.c
+++ b/tests/unistr/test-u32-strncat.c
@@ -1,5 +1,5 @@
/* Test of u32_strncat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strncmp.c b/tests/unistr/test-u32-strncmp.c
index 33b8d69e..e304a595 100644
--- a/tests/unistr/test-u32-strncmp.c
+++ b/tests/unistr/test-u32-strncmp.c
@@ -1,5 +1,5 @@
/* Test of u32_strncmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strncpy.c b/tests/unistr/test-u32-strncpy.c
index d65074dd..e78f0b25 100644
--- a/tests/unistr/test-u32-strncpy.c
+++ b/tests/unistr/test-u32-strncpy.c
@@ -1,5 +1,5 @@
/* Test of u32_strncpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strnlen.c b/tests/unistr/test-u32-strnlen.c
index 8138efe6..31b69409 100644
--- a/tests/unistr/test-u32-strnlen.c
+++ b/tests/unistr/test-u32-strnlen.c
@@ -1,5 +1,5 @@
/* Test of u32_strnlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-strstr.c b/tests/unistr/test-u32-strstr.c
index 6d29a69d..21caa784 100644
--- a/tests/unistr/test-u32-strstr.c
+++ b/tests/unistr/test-u32-strstr.c
@@ -1,5 +1,5 @@
/* Test of u32_strstr() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -29,6 +29,7 @@
#define UNIT uint32_t
#define U_STRSTR u32_strstr
+#define U_SET u32_set
#include "test-u-strstr.h"
int
diff --git a/tests/unistr/test-u32-strtok.c b/tests/unistr/test-u32-strtok.c
index 442bc1a2..90aed3d6 100644
--- a/tests/unistr/test-u32-strtok.c
+++ b/tests/unistr/test-u32-strtok.c
@@ -1,5 +1,5 @@
/* Test of u32_strtok() function.
- Copyright (C) 2015-2022 Free Software Foundation, Inc.
+ Copyright (C) 2015-2024 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
diff --git a/tests/unistr/test-u32-to-u16.c b/tests/unistr/test-u32-to-u16.c
index ac850089..fbf1a03a 100644
--- a/tests/unistr/test-u32-to-u16.c
+++ b/tests/unistr/test-u32-to-u16.c
@@ -1,5 +1,5 @@
/* Test of u32_to_u16() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-to-u8.c b/tests/unistr/test-u32-to-u8.c
index 1a02f795..83144921 100644
--- a/tests/unistr/test-u32-to-u8.c
+++ b/tests/unistr/test-u32-to-u8.c
@@ -1,5 +1,5 @@
/* Test of u32_to_u8() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u32-uctomb.c b/tests/unistr/test-u32-uctomb.c
index d3b1bb65..913398c8 100644
--- a/tests/unistr/test-u32-uctomb.c
+++ b/tests/unistr/test-u32-uctomb.c
@@ -1,5 +1,5 @@
/* Test of u32_uctomb() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-check.c b/tests/unistr/test-u8-check.c
index 8e361cc8..d05c0fcb 100644
--- a/tests/unistr/test-u8-check.c
+++ b/tests/unistr/test-u8-check.c
@@ -1,5 +1,5 @@
/* Test of u8_check() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-chr.c b/tests/unistr/test-u8-chr.c
index a0a46d95..c0827063 100644
--- a/tests/unistr/test-u8-chr.c
+++ b/tests/unistr/test-u8-chr.c
@@ -1,5 +1,5 @@
/* Test of u8_chr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-cmp.c b/tests/unistr/test-u8-cmp.c
index 528e691e..47b0f215 100644
--- a/tests/unistr/test-u8-cmp.c
+++ b/tests/unistr/test-u8-cmp.c
@@ -1,5 +1,5 @@
/* Test of u8_cmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-cmp2.c b/tests/unistr/test-u8-cmp2.c
index 9a3b99cf..b5063784 100644
--- a/tests/unistr/test-u8-cmp2.c
+++ b/tests/unistr/test-u8-cmp2.c
@@ -1,5 +1,5 @@
/* Test of u8_cmp2() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-cpy-alloc.c b/tests/unistr/test-u8-cpy-alloc.c
index 726148e8..d0e11542 100644
--- a/tests/unistr/test-u8-cpy-alloc.c
+++ b/tests/unistr/test-u8-cpy-alloc.c
@@ -1,5 +1,5 @@
/* Test of u8_cpy_alloc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-cpy.c b/tests/unistr/test-u8-cpy.c
index 58cc5f81..33987177 100644
--- a/tests/unistr/test-u8-cpy.c
+++ b/tests/unistr/test-u8-cpy.c
@@ -1,5 +1,5 @@
/* Test of u8_cpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-mblen.c b/tests/unistr/test-u8-mblen.c
index 54dbd4b5..69ac7e55 100644
--- a/tests/unistr/test-u8-mblen.c
+++ b/tests/unistr/test-u8-mblen.c
@@ -1,5 +1,5 @@
/* Test of u8_mblen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-mbsnlen.c b/tests/unistr/test-u8-mbsnlen.c
index 7b8f0292..ca31d856 100644
--- a/tests/unistr/test-u8-mbsnlen.c
+++ b/tests/unistr/test-u8-mbsnlen.c
@@ -1,5 +1,5 @@
/* Test of u8_mbsnlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
@@ -61,9 +61,18 @@ main ()
that a "malformed sequence" is interpreted in the same way as
"a character that is outside the adopted subset".
Reference:
+ ISO 10646-1 amendment 2
+ <https://www.cl.cam.ac.uk/~mgk25/ucs/ISO-10646-UTF-8.html>
Markus Kuhn: UTF-8 decoder capability and stress test
<https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt>
<https://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html>
+ These old specifications (from ca. 2000) were a bit ambiguous, and the
+ definition of UTF-8 has changed a bit as well. The newer specification
+ we obey is the Unicode Standard, version 15.
+ Reference:
+ Unicode Standard 15.0.0, section 3.9
+ <https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf>
+ pages 124..129, especially table 3-7.
*/
/* 3.1. Test that each unexpected continuation byte is signalled as a
malformed sequence of its own. */
@@ -97,9 +106,14 @@ main ()
}
/* 3.3.2. 3-byte sequence with last byte missing. */
{
- static const uint8_t input[] = { '"', 0xE0, 0x80, '"' };
+ static const uint8_t input[] = { '"', 0xE0, 0xA0, '"' };
ASSERT (u8_mbsnlen (input, 4) == 3);
}
+ {
+ /* Outdated example: 0xE0 0x80 is an ill-formed sequence. */
+ static const uint8_t input[] = { '"', 0xE0, 0x80, '"' };
+ ASSERT (u8_mbsnlen (input, 4) == 4);
+ }
/* 3.3.7. 3-byte sequence with last byte missing. */
{
static const uint8_t input[] = { '"', 0xEF, 0xBF, '"' };
@@ -107,14 +121,24 @@ main ()
}
/* 3.3.3. 4-byte sequence with last byte missing. */
{
- static const uint8_t input[] = { '"', 0xF0, 0x80, 0x80, '"' };
+ static const uint8_t input[] = { '"', 0xF0, 0x90, 0x80, '"' };
ASSERT (u8_mbsnlen (input, 5) == 3);
}
+ {
+ /* Outdated example: 0xF0 0x80 is an ill-formed sequence. */
+ static const uint8_t input[] = { '"', 0xF0, 0x80, 0x80, '"' };
+ ASSERT (u8_mbsnlen (input, 5) == 5);
+ }
/* 3.3.8. 4-byte sequence with last byte missing. */
{
- static const uint8_t input[] = { '"', 0xF7, 0xBF, 0xBF, '"' };
+ static const uint8_t input[] = { '"', 0xF3, 0xBF, 0xBF, '"' };
ASSERT (u8_mbsnlen (input, 5) == 3);
}
+ {
+ /* Outdated example: 0xF7 is an invalid first byte. */
+ static const uint8_t input[] = { '"', 0xF7, 0xBF, 0xBF, '"' };
+ ASSERT (u8_mbsnlen (input, 5) == 5);
+ }
return 0;
}
diff --git a/tests/unistr/test-u8-mbtouc-unsafe.c b/tests/unistr/test-u8-mbtouc-unsafe.c
index 1e29f8bc..8b471ea4 100644
--- a/tests/unistr/test-u8-mbtouc-unsafe.c
+++ b/tests/unistr/test-u8-mbtouc-unsafe.c
@@ -1,5 +1,5 @@
/* Test of u8_mbtouc_unsafe() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-mbtouc.c b/tests/unistr/test-u8-mbtouc.c
index 39bcaef9..c063c9ab 100644
--- a/tests/unistr/test-u8-mbtouc.c
+++ b/tests/unistr/test-u8-mbtouc.c
@@ -1,5 +1,5 @@
/* Test of u8_mbtouc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
@@ -34,9 +34,18 @@ test_safe_function (int (*my_u8_mbtouc) (ucs4_t *, const uint8_t *, size_t))
that a "malformed sequence" is interpreted in the same way as
"a character that is outside the adopted subset".
Reference:
+ ISO 10646-1 amendment 2
+ <https://www.cl.cam.ac.uk/~mgk25/ucs/ISO-10646-UTF-8.html>
Markus Kuhn: UTF-8 decoder capability and stress test
<https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt>
<https://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html>
+ These old specifications (from ca. 2000) were a bit ambiguous, and the
+ definition of UTF-8 has changed a bit as well. The newer specification
+ we obey is the Unicode Standard, version 15.
+ Reference:
+ Unicode Standard 15.0.0, section 3.9
+ <https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf>
+ pages 124..129, especially table 3-7.
*/
/* 3.1. Test that each unexpected continuation byte is signalled as a
malformed sequence of its own. */
@@ -118,7 +127,7 @@ test_safe_function (int (*my_u8_mbtouc) (ucs4_t *, const uint8_t *, size_t))
}
/* 3.3.2. 3-byte sequence with last byte missing. */
{
- static const uint8_t input[] = { '"', 0xE0, 0x80, '"' };
+ static const uint8_t input[] = { '"', 0xE0, 0xA0, '"' };
uc = 0xBADFACE;
ret = my_u8_mbtouc (&uc, input, 4);
ASSERT (ret == 1);
@@ -132,6 +141,26 @@ test_safe_function (int (*my_u8_mbtouc) (ucs4_t *, const uint8_t *, size_t))
ASSERT (ret == 1);
ASSERT (uc == 0x0022);
}
+ {
+ /* Outdated example: 0xE0 0x80 is an ill-formed sequence. */
+ static const uint8_t input[] = { '"', 0xE0, 0x80, '"' };
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input, 4);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0x0022);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 1, 3);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 2, 2);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 3, 1);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0x0022);
+ }
/* 3.3.7. 3-byte sequence with last byte missing. */
{
static const uint8_t input[] = { '"', 0xEF, 0xBF, '"' };
@@ -150,7 +179,7 @@ test_safe_function (int (*my_u8_mbtouc) (ucs4_t *, const uint8_t *, size_t))
}
/* 3.3.3. 4-byte sequence with last byte missing. */
{
- static const uint8_t input[] = { '"', 0xF0, 0x80, 0x80, '"' };
+ static const uint8_t input[] = { '"', 0xF0, 0x90, 0x80, '"' };
uc = 0xBADFACE;
ret = my_u8_mbtouc (&uc, input, 5);
ASSERT (ret == 1);
@@ -164,9 +193,33 @@ test_safe_function (int (*my_u8_mbtouc) (ucs4_t *, const uint8_t *, size_t))
ASSERT (ret == 1);
ASSERT (uc == 0x0022);
}
+ {
+ /* Outdated example: 0xF0 0x80 is an ill-formed sequence. */
+ static const uint8_t input[] = { '"', 0xF0, 0x80, 0x80, '"' };
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input, 5);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0x0022);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 1, 4);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 2, 3);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 3, 2);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 4, 1);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0x0022);
+ }
/* 3.3.8. 4-byte sequence with last byte missing. */
{
- static const uint8_t input[] = { '"', 0xF7, 0xBF, 0xBF, '"' };
+ static const uint8_t input[] = { '"', 0xF3, 0xBF, 0xBF, '"' };
uc = 0xBADFACE;
ret = my_u8_mbtouc (&uc, input, 5);
ASSERT (ret == 1);
@@ -180,6 +233,30 @@ test_safe_function (int (*my_u8_mbtouc) (ucs4_t *, const uint8_t *, size_t))
ASSERT (ret == 1);
ASSERT (uc == 0x0022);
}
+ {
+ /* Outdated example: 0xF7 is an invalid first byte. */
+ static const uint8_t input[] = { '"', 0xF7, 0xBF, 0xBF, '"' };
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input, 5);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0x0022);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 1, 4);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 2, 3);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 3, 2);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0xFFFD);
+ uc = 0xBADFACE;
+ ret = my_u8_mbtouc (&uc, input + 4, 1);
+ ASSERT (ret == 1);
+ ASSERT (uc == 0x0022);
+ }
}
int
diff --git a/tests/unistr/test-u8-mbtouc.h b/tests/unistr/test-u8-mbtouc.h
index fcfe3df8..dfe70be3 100644
--- a/tests/unistr/test-u8-mbtouc.h
+++ b/tests/unistr/test-u8-mbtouc.h
@@ -1,5 +1,5 @@
/* Test of u8_mbtouc() and u8_mbtouc_unsafe() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-mbtoucr.c b/tests/unistr/test-u8-mbtoucr.c
index e6102603..6a4a74a2 100644
--- a/tests/unistr/test-u8-mbtoucr.c
+++ b/tests/unistr/test-u8-mbtoucr.c
@@ -1,5 +1,5 @@
/* Test of u8_mbtoucr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-move.c b/tests/unistr/test-u8-move.c
index baf074ec..a0c7ad79 100644
--- a/tests/unistr/test-u8-move.c
+++ b/tests/unistr/test-u8-move.c
@@ -1,5 +1,5 @@
/* Test of u8_move() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-next.c b/tests/unistr/test-u8-next.c
index e3e43121..cdc1f763 100644
--- a/tests/unistr/test-u8-next.c
+++ b/tests/unistr/test-u8-next.c
@@ -1,5 +1,5 @@
/* Test of u8_next() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-pcpy.c b/tests/unistr/test-u8-pcpy.c
new file mode 100644
index 00000000..dbd83ad5
--- /dev/null
+++ b/tests/unistr/test-u8-pcpy.c
@@ -0,0 +1,28 @@
+/* Test of u8_pcpy() function.
+ Copyright (C) 2010-2024 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 <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
+
+#include <config.h>
+
+#include "unistr.h"
+
+#include "macros.h"
+
+#define UNIT uint8_t
+#define U_PCPY u8_pcpy
+#define MAGIC 0xBA
+#include "test-pcpy.h"
diff --git a/tests/unistr/test-u8-prev.c b/tests/unistr/test-u8-prev.c
index 8b21ce29..5bbb5ce1 100644
--- a/tests/unistr/test-u8-prev.c
+++ b/tests/unistr/test-u8-prev.c
@@ -1,5 +1,5 @@
/* Test of u8_prev() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-set.c b/tests/unistr/test-u8-set.c
index 223a5127..d06e0e0b 100644
--- a/tests/unistr/test-u8-set.c
+++ b/tests/unistr/test-u8-set.c
@@ -1,5 +1,5 @@
/* Test of u8_set() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-stpcpy.c b/tests/unistr/test-u8-stpcpy.c
index daeb6ae9..6cdb850c 100644
--- a/tests/unistr/test-u8-stpcpy.c
+++ b/tests/unistr/test-u8-stpcpy.c
@@ -1,5 +1,5 @@
/* Test of u8_stpcpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-stpncpy.c b/tests/unistr/test-u8-stpncpy.c
index a7987c31..873b1abd 100644
--- a/tests/unistr/test-u8-stpncpy.c
+++ b/tests/unistr/test-u8-stpncpy.c
@@ -1,5 +1,5 @@
/* Test of u8_stpncpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strcat.c b/tests/unistr/test-u8-strcat.c
index 9dde531d..2a999f66 100644
--- a/tests/unistr/test-u8-strcat.c
+++ b/tests/unistr/test-u8-strcat.c
@@ -1,5 +1,5 @@
/* Test of u8_strcat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strchr.c b/tests/unistr/test-u8-strchr.c
index cfd40779..69e21a66 100644
--- a/tests/unistr/test-u8-strchr.c
+++ b/tests/unistr/test-u8-strchr.c
@@ -1,5 +1,5 @@
/* Test of u8_strchr() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strcmp.c b/tests/unistr/test-u8-strcmp.c
index 447c6162..a0d3d7fc 100644
--- a/tests/unistr/test-u8-strcmp.c
+++ b/tests/unistr/test-u8-strcmp.c
@@ -1,5 +1,5 @@
/* Test of u8_strcmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strcmp.h b/tests/unistr/test-u8-strcmp.h
index 7eaf2887..177d4bfc 100644
--- a/tests/unistr/test-u8-strcmp.h
+++ b/tests/unistr/test-u8-strcmp.h
@@ -1,5 +1,5 @@
/* Test of u8_strcmp() and u8_strcoll() functions.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strcoll.c b/tests/unistr/test-u8-strcoll.c
index 7949e1a6..b86ea403 100644
--- a/tests/unistr/test-u8-strcoll.c
+++ b/tests/unistr/test-u8-strcoll.c
@@ -1,5 +1,5 @@
/* Test of u8_strcoll() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strcpy.c b/tests/unistr/test-u8-strcpy.c
index dd9b40bf..9cf181b1 100644
--- a/tests/unistr/test-u8-strcpy.c
+++ b/tests/unistr/test-u8-strcpy.c
@@ -1,5 +1,5 @@
/* Test of u8_strcpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strdup.c b/tests/unistr/test-u8-strdup.c
index 84a35053..fdb76026 100644
--- a/tests/unistr/test-u8-strdup.c
+++ b/tests/unistr/test-u8-strdup.c
@@ -1,5 +1,5 @@
/* Test of u8_strdup() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strlen.c b/tests/unistr/test-u8-strlen.c
index 91a59663..a13a24fd 100644
--- a/tests/unistr/test-u8-strlen.c
+++ b/tests/unistr/test-u8-strlen.c
@@ -1,5 +1,5 @@
/* Test of u8_strlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strmblen.c b/tests/unistr/test-u8-strmblen.c
index 735dd905..2fdef5cf 100644
--- a/tests/unistr/test-u8-strmblen.c
+++ b/tests/unistr/test-u8-strmblen.c
@@ -1,5 +1,5 @@
/* Test of u8_strmblen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strmbtouc.c b/tests/unistr/test-u8-strmbtouc.c
index 74a96c1b..a9db79fa 100644
--- a/tests/unistr/test-u8-strmbtouc.c
+++ b/tests/unistr/test-u8-strmbtouc.c
@@ -1,5 +1,5 @@
/* Test of u8_strmbtouc() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strncat.c b/tests/unistr/test-u8-strncat.c
index d0c854c4..166952a2 100644
--- a/tests/unistr/test-u8-strncat.c
+++ b/tests/unistr/test-u8-strncat.c
@@ -1,5 +1,5 @@
/* Test of u8_strncat() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strncmp.c b/tests/unistr/test-u8-strncmp.c
index ada859ef..78aac0c9 100644
--- a/tests/unistr/test-u8-strncmp.c
+++ b/tests/unistr/test-u8-strncmp.c
@@ -1,5 +1,5 @@
/* Test of u8_strncmp() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strncpy.c b/tests/unistr/test-u8-strncpy.c
index 824b85df..22bb35a4 100644
--- a/tests/unistr/test-u8-strncpy.c
+++ b/tests/unistr/test-u8-strncpy.c
@@ -1,5 +1,5 @@
/* Test of u8_strncpy() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strnlen.c b/tests/unistr/test-u8-strnlen.c
index 1a740d0d..c409fc90 100644
--- a/tests/unistr/test-u8-strnlen.c
+++ b/tests/unistr/test-u8-strnlen.c
@@ -1,5 +1,5 @@
/* Test of u8_strnlen() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-strstr.c b/tests/unistr/test-u8-strstr.c
index b3610e46..791e1c97 100644
--- a/tests/unistr/test-u8-strstr.c
+++ b/tests/unistr/test-u8-strstr.c
@@ -1,5 +1,5 @@
/* Test of u8_strstr() function.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 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
@@ -29,6 +29,7 @@
#define UNIT uint8_t
#define U_STRSTR u8_strstr
+#define U_SET u8_set
#include "test-u-strstr.h"
int
diff --git a/tests/unistr/test-u8-strtok.c b/tests/unistr/test-u8-strtok.c
index 11c364e8..8d425c40 100644
--- a/tests/unistr/test-u8-strtok.c
+++ b/tests/unistr/test-u8-strtok.c
@@ -1,5 +1,5 @@
/* Test of u8_strtok() function.
- Copyright (C) 2015-2022 Free Software Foundation, Inc.
+ Copyright (C) 2015-2024 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
diff --git a/tests/unistr/test-u8-to-u16.c b/tests/unistr/test-u8-to-u16.c
index 377cf38d..ec104ace 100644
--- a/tests/unistr/test-u8-to-u16.c
+++ b/tests/unistr/test-u8-to-u16.c
@@ -1,5 +1,5 @@
/* Test of u8_to_u16() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-to-u32.c b/tests/unistr/test-u8-to-u32.c
index 384c9dc9..5ab9752c 100644
--- a/tests/unistr/test-u8-to-u32.c
+++ b/tests/unistr/test-u8-to-u32.c
@@ -1,5 +1,5 @@
/* Test of u8_to_u32() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/unistr/test-u8-uctomb.c b/tests/unistr/test-u8-uctomb.c
index cf37cb9b..2948eb09 100644
--- a/tests/unistr/test-u8-uctomb.c
+++ b/tests/unistr/test-u8-uctomb.c
@@ -1,5 +1,5 @@
/* Test of u8_uctomb() function.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 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
diff --git a/tests/uniwbrk/WordBreakTest.txt b/tests/uniwbrk/WordBreakTest.txt
index 27f64bfe..e4a41120 100644
--- a/tests/uniwbrk/WordBreakTest.txt
+++ b/tests/uniwbrk/WordBreakTest.txt
@@ -1,6 +1,46 @@
-# WordBreakTest-15.0.0.txt
-# Date: 2022-02-26, 00:39:00 GMT
-# © 2022 Unicode®, Inc.
+# UNICODE LICENSE V3
+#
+# COPYRIGHT AND PERMISSION NOTICE
+#
+# Copyright © 1991-2024 Unicode, Inc.
+#
+# NOTICE TO USER: Carefully read the following legal agreement. BY
+# DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+# SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+# TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+# DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of data files and any associated documentation (the "Data Files") or
+# software and any associated documentation (the "Software") to deal in the
+# Data Files or Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, and/or sell
+# copies of the Data Files or Software, and to permit persons to whom the
+# Data Files or Software are furnished to do so, provided that either (a)
+# this copyright and permission notice appear with all copies of the Data
+# Files or Software, or (b) this copyright and permission notice appear in
+# associated Documentation.
+#
+# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+# THIRD PARTY RIGHTS.
+#
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+# BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+# FILES OR SOFTWARE.
+#
+# Except as contained in this notice, the name of a copyright holder shall
+# not be used in advertising or otherwise to promote the sale, use or other
+# dealings in these Data Files or Software without prior written
+# authorization of the copyright holder.
+
+# WordBreakTest-15.1.0.txt
+# Date: 2023-03-31, 14:30:32 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -1708,6 +1748,9 @@
÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3]
÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3]
+÷ 0671 × 0644 × 0631 × 064E × 0651 × 062D × 0650 × 064A × 0645 × 0650 ÷ 0020 ÷ 06DD × 0661 ÷ # ÷ [0.2] ARABIC LETTER ALEF WASLA (ALetter) × [5.0] ARABIC LETTER LAM (ALetter) × [5.0] ARABIC LETTER REH (ALetter) × [4.0] ARABIC FATHA (Extend_FE) × [4.0] ARABIC SHADDA (Extend_FE) × [5.0] ARABIC LETTER HAH (ALetter) × [4.0] ARABIC KASRA (Extend_FE) × [5.0] ARABIC LETTER YEH (ALetter) × [5.0] ARABIC LETTER MEEM (ALetter) × [4.0] ARABIC KASRA (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [999.0] ARABIC END OF AYAH (Numeric) × [8.0] ARABIC-INDIC DIGIT ONE (Numeric) ÷ [0.3]
+÷ 0721 × 0719 × 0721 × 0718 × 072A × 0710 ÷ 0020 ÷ 070F × 071D × 0717 ÷ # ÷ [0.2] SYRIAC LETTER MIM (ALetter) × [5.0] SYRIAC LETTER ZAIN (ALetter) × [5.0] SYRIAC LETTER MIM (ALetter) × [5.0] SYRIAC LETTER WAW (ALetter) × [5.0] SYRIAC LETTER RISH (ALetter) × [5.0] SYRIAC LETTER ALAPH (ALetter) ÷ [999.0] SPACE (WSegSpace) ÷ [999.0] SYRIAC ABBREVIATION MARK (ALetter) × [5.0] SYRIAC LETTER YUDH (ALetter) × [5.0] SYRIAC LETTER HE (ALetter) ÷ [0.3]
+÷ 072C × 070F × 072B × 0712 × 0718 ÷ # ÷ [0.2] SYRIAC LETTER TAW (ALetter) × [5.0] SYRIAC ABBREVIATION MARK (ALetter) × [5.0] SYRIAC LETTER SHIN (ALetter) × [5.0] SYRIAC LETTER BETH (ALetter) × [5.0] SYRIAC LETTER WAW (ALetter) ÷ [0.3]
÷ 0041 × 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
÷ 0041 × 003A × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
÷ 0041 ÷ 003A ÷ 003A ÷ 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
@@ -1846,6 +1889,6 @@
÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
#
-# Lines: 1823
+# Lines: 1826
#
# EOF
diff --git a/tests/uniwbrk/test-u16-wordbreaks.c b/tests/uniwbrk/test-u16-wordbreaks.c
index 8ee67f6d..002668c3 100644
--- a/tests/uniwbrk/test-u16-wordbreaks.c
+++ b/tests/uniwbrk/test-u16-wordbreaks.c
@@ -1,5 +1,5 @@
/* Test of word breaks in UTF-16 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uniwbrk/test-u32-wordbreaks.c b/tests/uniwbrk/test-u32-wordbreaks.c
index 57c37639..ac9c1e36 100644
--- a/tests/uniwbrk/test-u32-wordbreaks.c
+++ b/tests/uniwbrk/test-u32-wordbreaks.c
@@ -1,5 +1,5 @@
/* Test of word breaks in UTF-32 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uniwbrk/test-u8-wordbreaks.c b/tests/uniwbrk/test-u8-wordbreaks.c
index 74c546b0..2aaa0e92 100644
--- a/tests/uniwbrk/test-u8-wordbreaks.c
+++ b/tests/uniwbrk/test-u8-wordbreaks.c
@@ -1,5 +1,5 @@
/* Test of word breaks in UTF-8 strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uniwbrk/test-uc-wordbreaks.c b/tests/uniwbrk/test-uc-wordbreaks.c
index 3bf1ff58..8213446f 100644
--- a/tests/uniwbrk/test-uc-wordbreaks.c
+++ b/tests/uniwbrk/test-uc-wordbreaks.c
@@ -1,5 +1,5 @@
/* Word break function test, using test data from UCD.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
diff --git a/tests/uniwbrk/test-ulc-wordbreaks.c b/tests/uniwbrk/test-ulc-wordbreaks.c
index 6f3203fe..bb4b3343 100644
--- a/tests/uniwbrk/test-ulc-wordbreaks.c
+++ b/tests/uniwbrk/test-ulc-wordbreaks.c
@@ -1,5 +1,5 @@
/* Test of word breaks in strings.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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
diff --git a/tests/uniwidth/test-u16-strwidth.c b/tests/uniwidth/test-u16-strwidth.c
index a41d47c0..ecf7f178 100644
--- a/tests/uniwidth/test-u16-strwidth.c
+++ b/tests/uniwidth/test-u16-strwidth.c
@@ -1,5 +1,5 @@
/* Test of u16_strwidth() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-u16-width.c b/tests/uniwidth/test-u16-width.c
index c8dc1ad9..8b25ccf8 100644
--- a/tests/uniwidth/test-u16-width.c
+++ b/tests/uniwidth/test-u16-width.c
@@ -1,5 +1,5 @@
/* Test of u16_width() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-u32-strwidth.c b/tests/uniwidth/test-u32-strwidth.c
index 6e627a4b..e3f2d027 100644
--- a/tests/uniwidth/test-u32-strwidth.c
+++ b/tests/uniwidth/test-u32-strwidth.c
@@ -1,5 +1,5 @@
/* Test of u32_strwidth() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-u32-width.c b/tests/uniwidth/test-u32-width.c
index 4c92c852..caa35ca9 100644
--- a/tests/uniwidth/test-u32-width.c
+++ b/tests/uniwidth/test-u32-width.c
@@ -1,5 +1,5 @@
/* Test of u32_width() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-u8-strwidth.c b/tests/uniwidth/test-u8-strwidth.c
index 90fa4369..8f54953f 100644
--- a/tests/uniwidth/test-u8-strwidth.c
+++ b/tests/uniwidth/test-u8-strwidth.c
@@ -1,5 +1,5 @@
/* Test of u8_strwidth() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-u8-width.c b/tests/uniwidth/test-u8-width.c
index eb56bc00..75ce8e82 100644
--- a/tests/uniwidth/test-u8-width.c
+++ b/tests/uniwidth/test-u8-width.c
@@ -1,5 +1,5 @@
/* Test of u8_width() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-uc_width.c b/tests/uniwidth/test-uc_width.c
index 86389b26..5f0e793f 100644
--- a/tests/uniwidth/test-uc_width.c
+++ b/tests/uniwidth/test-uc_width.c
@@ -1,5 +1,5 @@
/* Test of uc_width() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-uc_width2.c b/tests/uniwidth/test-uc_width2.c
index d088cf39..a07a11f8 100644
--- a/tests/uniwidth/test-uc_width2.c
+++ b/tests/uniwidth/test-uc_width2.c
@@ -1,5 +1,5 @@
/* Test of uc_width() function.
- Copyright (C) 2007-2022 Free Software Foundation, Inc.
+ Copyright (C) 2007-2024 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
diff --git a/tests/uniwidth/test-uc_width2.sh b/tests/uniwidth/test-uc_width2.sh
index 2833aef1..c46b3d07 100755
--- a/tests/uniwidth/test-uc_width2.sh
+++ b/tests/uniwidth/test-uc_width2.sh
@@ -1,7 +1,7 @@
#!/bin/sh
tmpfiles=""
-trap 'rm -fr $tmpfiles' 1 2 3 15
+trap 'rm -fr $tmpfiles' HUP INT QUIT TERM
tmpfiles="$tmpfiles uc_width.out"
${CHECKER} ./test-uc_width2${EXEEXT} | LC_ALL=C tr -d '\r' > uc_width.out
@@ -27,9 +27,7 @@ cat > uc_width.ok <<\EOF
05C4..05C5 0
05C6 A
05C7 0
-05C8..05FF A
-0600..0605 0
-0606..060F A
+05C8..060F A
0610..061A 0
061B A
061C 0
@@ -38,16 +36,14 @@ cat > uc_width.ok <<\EOF
0660..066F A
0670 0
0671..06D5 A
-06D6..06DD 0
-06DE A
+06D6..06DC 0
+06DD..06DE A
06DF..06E4 0
06E5..06E6 A
06E7..06E8 0
06E9 A
06EA..06ED 0
-06EE..070E A
-070F 0
-0710 A
+06EE..0710 A
0711 0
0712..072F A
0730..074A 0
@@ -67,12 +63,12 @@ cat > uc_width.ok <<\EOF
0829..082D 0
082E..0858 A
0859..085B 0
-085C..088F A
-0890..0891 0
-0892..0897 A
+085C..0897 A
0898..089F 0
08A0..08C9 A
-08CA..0902 0
+08CA..08E1 0
+08E2 A
+08E3..0902 0
0903..0939 A
093A 0
093B A
@@ -580,13 +576,9 @@ FFFC..101FC 1
110B3..110B6 0
110B7..110B8 1
110B9..110BA 0
-110BB..110BC 1
-110BD 0
-110BE..110C1 1
+110BB..110C1 1
110C2 0
-110C3..110CC 1
-110CD 0
-110CE..110FF 1
+110C3..110FF 1
11100..11102 0
11103..11126 1
11127..1112B 0
diff --git a/tests/unsetenv.c b/tests/unsetenv.c
index 07eac6fd..d8ada2aa 100644
--- a/tests/unsetenv.c
+++ b/tests/unsetenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2002, 2005-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995-2002, 2005-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/usleep.c b/tests/usleep.c
index e4289c4a..4d325016 100644
--- a/tests/usleep.c
+++ b/tests/usleep.c
@@ -1,5 +1,5 @@
/* Pausing execution of the current thread.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 Free Software Foundation, Inc.
Written by Eric Blake <ebb9@byu.net>, 2009.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/verify.h b/tests/verify.h
index 99af8029..08268c24 100644
--- a/tests/verify.h
+++ b/tests/verify.h
@@ -1,6 +1,6 @@
/* Compile-time assert-like macros.
- Copyright (C) 2005-2006, 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2006, 2009-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -37,7 +37,7 @@
&& (4 < __GNUC__ + (6 <= __GNUC_MINOR__) || 5 <= __clang_major__)))
# define _GL_HAVE__STATIC_ASSERT 1
# endif
-# if (202000 <= __STDC_VERSION__ \
+# if (202311 <= __STDC_VERSION__ \
|| (!defined __STRICT_ANSI__ && 9 <= __GNUC__))
# define _GL_HAVE__STATIC_ASSERT1 1
# endif
@@ -188,9 +188,9 @@ template <int w>
_gl_verify_type<(R) ? 1 : -1>
#elif defined _GL_HAVE__STATIC_ASSERT
# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
- struct { \
- _Static_assert (R, DIAGNOSTIC); \
- int _gl_dummy; \
+ struct { \
+ _Static_assert (R, DIAGNOSTIC); \
+ int _gl_dummy; \
}
#else
# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
@@ -212,8 +212,8 @@ template <int w>
#elif defined _GL_HAVE__STATIC_ASSERT
# define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC)
#else
-# define _GL_VERIFY(R, DIAGNOSTIC, ...) \
- extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
+# define _GL_VERIFY(R, DIAGNOSTIC, ...) \
+ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
[_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
# if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
# pragma GCC diagnostic ignored "-Wnested-externs"
@@ -222,28 +222,57 @@ template <int w>
/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
#ifdef _GL_STATIC_ASSERT_H
-# if !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert
-# define _Static_assert(R, ...) \
- _GL_VERIFY ((R), "static assertion failed", -)
+/* Define _Static_assert if needed. */
+/* With clang ≥ 3.8.0 in C++ mode, _Static_assert already works and accepts
+ 1 or 2 arguments. We better don't override it, because clang's standard
+ C++ library uses static_assert inside classes in several places, and our
+ replacement via _GL_VERIFY does not work in these contexts. */
+# if (defined __cplusplus && defined __clang__ \
+ && (4 <= __clang_major__ + (8 <= __clang_minor__)))
+# if 5 <= __clang_major__
+/* Avoid "warning: 'static_assert' with no message is a C++17 extension". */
+# pragma clang diagnostic ignored "-Wc++17-extensions"
+# else
+/* Avoid "warning: static_assert with no message is a C++1z extension". */
+# pragma clang diagnostic ignored "-Wc++1z-extensions"
+# endif
+# elif !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert
+# if !defined _MSC_VER || defined __clang__
+# define _Static_assert(...) \
+ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -)
+# else
+# if defined __cplusplus && _MSC_VER >= 1910
+ /* In MSVC 14.1 or newer, static_assert accepts one or two arguments,
+ but _Static_assert is not defined. */
+# define _Static_assert static_assert
+# else
+ /* Work around MSVC preprocessor incompatibility with ISO C; see
+ <https://stackoverflow.com/questions/5134523/>. */
+# define _Static_assert(R, ...) \
+ _GL_VERIFY ((R), "static assertion failed", -)
+# endif
+# endif
# endif
+/* Define static_assert if needed. */
# if (!defined static_assert \
&& __STDC_VERSION__ < 202311 \
&& (!defined __cplusplus \
|| (__cpp_static_assert < 201411 \
- && __GNUG__ < 6 && __clang_major__ < 6)))
+ && __GNUG__ < 6 && __clang_major__ < 6 && _MSC_VER < 1910)))
# if defined __cplusplus && _MSC_VER >= 1900 && !defined __clang__
/* MSVC 14 in C++ mode supports the two-arguments static_assert but not
the one-argument static_assert, and it does not support _Static_assert.
We have to play preprocessor tricks to distinguish the two cases.
- Since the MSVC preprocessor is not ISO C compliant (cf.
- <https://stackoverflow.com/questions/5134523/>), the solution is specific
- to MSVC. */
+ Since the MSVC preprocessor is not ISO C compliant (see above),.
+ the solution is specific to MSVC. */
# define _GL_EXPAND(x) x
# define _GL_SA1(a1) static_assert ((a1), "static assertion failed")
# define _GL_SA2 static_assert
# define _GL_SA3 static_assert
# define _GL_SA_PICK(x1,x2,x3,x4,...) x4
# define static_assert(...) _GL_EXPAND(_GL_SA_PICK(__VA_ARGS__,_GL_SA3,_GL_SA2,_GL_SA1)) (__VA_ARGS__)
+/* Avoid "fatal error C1189: #error: The C++ Standard Library forbids macroizing keywords." */
+# define _ALLOW_KEYWORD_MACROS 1
# else
# define static_assert _Static_assert /* C11 requires this #define. */
# endif
@@ -252,7 +281,9 @@ template <int w>
/* @assert.h omit start@ */
-#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
+#if defined __clang_major__ && __clang_major__ < 5
+# define _GL_HAS_BUILTIN_TRAP 0
+#elif 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
# define _GL_HAS_BUILTIN_TRAP 1
#elif defined __has_builtin
# define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap)
@@ -260,12 +291,16 @@ template <int w>
# define _GL_HAS_BUILTIN_TRAP 0
#endif
-#if 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
-# define _GL_HAS_BUILTIN_UNREACHABLE 1
-#elif defined __has_builtin
-# define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)
-#else
-# define _GL_HAS_BUILTIN_UNREACHABLE 0
+#ifndef _GL_HAS_BUILTIN_UNREACHABLE
+# if defined __clang_major__ && __clang_major__ < 5
+# define _GL_HAS_BUILTIN_UNREACHABLE 0
+# elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+# define _GL_HAS_BUILTIN_UNREACHABLE 1
+# elif defined __has_builtin
+# define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)
+# else
+# define _GL_HAS_BUILTIN_UNREACHABLE 0
+# endif
#endif
/* Each of these macros verifies that its argument R is nonzero. To
diff --git a/tests/w32sock.h b/tests/w32sock.h
index 17db3f12..166a5f77 100644
--- a/tests/w32sock.h
+++ b/tests/w32sock.h
@@ -1,6 +1,6 @@
/* w32sock.h --- internal auxiliary functions for Windows socket functions
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/warn-on-use.h b/tests/warn-on-use.h
index 94f5b920..701013a0 100644
--- a/tests/warn-on-use.h
+++ b/tests/warn-on-use.h
@@ -1,5 +1,5 @@
/* A C macro for emitting warnings if a function is used.
- Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2010-2024 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
@@ -32,6 +32,10 @@
_GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
linkage.
+ _GL_WARN_ON_USE should not be used more than once for a given function
+ in a given compilation unit (because this may generate a warning even
+ if the function is never called).
+
However, one of the reasons that a function is a portability trap is
if it has the wrong signature. Declaring FUNCTION with a different
signature in C is a compilation error, so this macro must use the
diff --git a/tests/wcrtomb.c b/tests/wcrtomb.c
index e14d8022..197b020e 100644
--- a/tests/wcrtomb.c
+++ b/tests/wcrtomb.c
@@ -1,5 +1,5 @@
/* Convert wide character to multibyte character.
- Copyright (C) 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This file is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@ wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
#undef wcrtomb
{
/* This implementation of wcrtomb supports only stateless encodings.
- ps must be in the initial state. */
+ ps must be in an initial state. */
if (ps != NULL && !mbsinit (ps))
{
errno = EINVAL;
diff --git a/tests/wctob.c b/tests/wctob.c
index 806d0fca..e1f27404 100644
--- a/tests/wctob.c
+++ b/tests/wctob.c
@@ -1,5 +1,5 @@
/* Convert wide character to unibyte character.
- Copyright (C) 2008, 2010-2022 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/wctomb-impl.h b/tests/wctomb-impl.h
index 7a0995a0..ccec9ce0 100644
--- a/tests/wctomb-impl.h
+++ b/tests/wctomb-impl.h
@@ -1,5 +1,5 @@
/* Convert wide character to multibyte character.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This file is free software: you can redistribute it and/or modify
@@ -25,7 +25,7 @@ wctomb (char *s, wchar_t wc)
mbstate_t state;
size_t result;
- memset (&state, 0, sizeof (mbstate_t));
+ mbszero (&state);
result = wcrtomb (s, wc, &state);
if (result == (size_t)-1)
return -1;
diff --git a/tests/wctomb.c b/tests/wctomb.c
index bbaf2e0e..694c95ca 100644
--- a/tests/wctomb.c
+++ b/tests/wctomb.c
@@ -1,5 +1,5 @@
/* Convert wide character to multibyte character.
- Copyright (C) 2011-2022 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This file is free software: you can redistribute it and/or modify
diff --git a/tests/windows-thread.c b/tests/windows-thread.c
index 5ae1e144..6a47a31f 100644
--- a/tests/windows-thread.c
+++ b/tests/windows-thread.c
@@ -1,5 +1,5 @@
/* Creating and controlling threads (native Windows implementation).
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/windows-thread.h b/tests/windows-thread.h
index 76069771..154bdfae 100644
--- a/tests/windows-thread.h
+++ b/tests/windows-thread.h
@@ -1,5 +1,5 @@
/* Creating and controlling threads (native Windows implementation).
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -20,6 +20,11 @@
#ifndef _WINDOWS_THREAD_H
#define _WINDOWS_THREAD_H
+/* This file uses _Noreturn. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#define WIN32_LEAN_AND_MEAN /* avoid including junk */
#include <windows.h>
diff --git a/tests/windows-tls.c b/tests/windows-tls.c
index b24a7d55..6b73074d 100644
--- a/tests/windows-tls.c
+++ b/tests/windows-tls.c
@@ -1,5 +1,5 @@
/* Thread-local storage (native Windows implementation).
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/windows-tls.h b/tests/windows-tls.h
index 0d2de560..d9393fe9 100644
--- a/tests/windows-tls.h
+++ b/tests/windows-tls.h
@@ -1,5 +1,5 @@
/* Thread-local storage (native Windows implementation).
- Copyright (C) 2005-2022 Free Software Foundation, Inc.
+ Copyright (C) 2005-2024 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/tests/xalloc-die.c b/tests/xalloc-die.c
index 5b947f10..c053c7a8 100644
--- a/tests/xalloc-die.c
+++ b/tests/xalloc-die.c
@@ -1,6 +1,6 @@
/* Report a memory allocation failure and exit.
- Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2022 Free Software
+ Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2024 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -22,7 +22,7 @@
#include <stdlib.h>
-#include "error.h"
+#include <error.h>
#include "exitfail.h"
#include "gettext.h"
diff --git a/tests/xalloc.h b/tests/xalloc.h
index 01a9eec8..75a5db30 100644
--- a/tests/xalloc.h
+++ b/tests/xalloc.h
@@ -1,6 +1,6 @@
/* xalloc.h -- malloc with out-of-memory checking
- Copyright (C) 1990-2000, 2003-2004, 2006-2022 Free Software Foundation, Inc.
+ Copyright (C) 1990-2000, 2003-2004, 2006-2024 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
@@ -18,6 +18,13 @@
#ifndef XALLOC_H_
#define XALLOC_H_
+/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE, _Noreturn,
+ _GL_ATTRIBUTE_ALLOC_SIZE, _GL_ATTRIBUTE_MALLOC,
+ _GL_ATTRIBUTE_RETURNS_NONNULL. */
+#if !_GL_CONFIG_H_INCLUDED
+ #error "Please include config.h first."
+#endif
+
#include <stddef.h>
#include <stdlib.h>
@@ -25,9 +32,6 @@
# include "idx.h"
#endif
-#ifndef _GL_INLINE_HEADER_BEGIN
- #error "Please include config.h first."
-#endif
_GL_INLINE_HEADER_BEGIN
#ifndef XALLOC_INLINE
# define XALLOC_INLINE _GL_INLINE
@@ -46,7 +50,7 @@ extern "C" {
or by using gnulib's xalloc-die module. This is the
function to call when one wants the program to die because of a
memory allocation failure. */
-/*extern*/ _Noreturn void xalloc_die (void);
+_Noreturn void xalloc_die (void);
#endif /* GNULIB_XALLOC_DIE */
diff --git a/tests/xmalloc.c b/tests/xmalloc.c
index 84cdf1f2..82e54ef1 100644
--- a/tests/xmalloc.c
+++ b/tests/xmalloc.c
@@ -1,6 +1,6 @@
/* xmalloc.c -- malloc with out of memory checking
- Copyright (C) 1990-2000, 2002-2006, 2008-2022 Free Software Foundation, Inc.
+ Copyright (C) 1990-2000, 2002-2006, 2008-2024 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
diff --git a/tests/zerosize-ptr.h b/tests/zerosize-ptr.h
index 990b51cf..90ab26f9 100644
--- a/tests/zerosize-ptr.h
+++ b/tests/zerosize-ptr.h
@@ -1,5 +1,5 @@
/* Return a pointer to a zero-size object in memory.
- Copyright (C) 2009-2022 Free Software Foundation, Inc.
+ Copyright (C) 2009-2024 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