summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClint Adams <clint@debian.org>2021-08-31 08:53:27 -0400
committerClint Adams <clint@debian.org>2021-08-31 08:53:27 -0400
commitf24d9c72cbde1abddef18e427b818e5b6266a5e0 (patch)
treef10e939c9cb7b767cb51dce4a84ec9872f3c61b1
parentc7cd1604feb9bce8b62e9a5a306b8eeb30a11c97 (diff)
parentc50de48f2ed0b9476c3389fd07a85a5e8be798e2 (diff)
Update upstream source from tag 'upstream/v4.8'
Update to upstream version '4.8' with Debian dir 33bfe3afa4d1f33d660b71d89a5ac3eba646cc82
-rw-r--r--.tarball-version2
-rw-r--r--.version2
-rw-r--r--ChangeLog156
-rw-r--r--GNUmakefile2
-rw-r--r--Makefile.am2
-rw-r--r--Makefile.in529
-rw-r--r--NEWS18
-rw-r--r--aclocal.m457
-rw-r--r--basicdefs.h2
-rwxr-xr-xbootstrap16
-rw-r--r--bootstrap.conf4
-rwxr-xr-xbuild-aux/announce-gen45
-rwxr-xr-xbuild-aux/config.guess283
-rwxr-xr-xbuild-aux/config.rpath2
-rwxr-xr-xbuild-aux/config.sub56
-rwxr-xr-xbuild-aux/depcomp2
-rwxr-xr-xbuild-aux/do-release-commit-and-tag2
-rwxr-xr-xbuild-aux/gendocs.sh6
-rwxr-xr-xbuild-aux/git-version-gen9
-rwxr-xr-xbuild-aux/gitlog-to-changelog50
-rwxr-xr-xbuild-aux/gnu-web-doc-update2
-rwxr-xr-xbuild-aux/gnupload16
-rwxr-xr-xbuild-aux/help2man2
-rwxr-xr-xbuild-aux/install-sh13
-rwxr-xr-xbuild-aux/mdate-sh2
-rwxr-xr-xbuild-aux/missing2
-rwxr-xr-xbuild-aux/prefix-gnulib-mk72
-rwxr-xr-xbuild-aux/test-driver2
-rw-r--r--build-aux/texinfo.tex1159
-rwxr-xr-xbuild-aux/update-copyright53
-rwxr-xr-xbuild-aux/useless-if-before-free44
-rwxr-xr-xbuild-aux/vc-list-files4
-rw-r--r--config_h.in189
-rwxr-xr-xconfigure9196
-rw-r--r--configure.ac9
-rw-r--r--doc/local.mk2
-rw-r--r--doc/sed.18
-rw-r--r--doc/sed.info8
-rw-r--r--doc/sed.texi2
-rw-r--r--doc/stamp-vti8
-rw-r--r--doc/version.texi8
-rw-r--r--gnulib-tests/Makefile.in1202
-rw-r--r--gnulib-tests/_Noreturn.h32
-rw-r--r--gnulib-tests/accept.c2
-rw-r--r--gnulib-tests/arg-nonnull.h2
-rw-r--r--gnulib-tests/arpa_inet.in.h16
-rw-r--r--gnulib-tests/bind.c2
-rw-r--r--gnulib-tests/c++defs.h2
-rw-r--r--gnulib-tests/cloexec.c2
-rw-r--r--gnulib-tests/cloexec.h2
-rw-r--r--gnulib-tests/close.c2
-rw-r--r--gnulib-tests/closedir.c2
-rw-r--r--gnulib-tests/connect.c2
-rwxr-xr-xgnulib-tests/dfa-invalid-char-class.sh4
-rw-r--r--gnulib-tests/dfa-match-aux.c2
-rwxr-xr-xgnulib-tests/dfa-match.sh6
-rw-r--r--gnulib-tests/dirent-private.h2
-rw-r--r--gnulib-tests/dirent.in.h2
-rw-r--r--gnulib-tests/dirfd.c2
-rw-r--r--gnulib-tests/dup2.c2
-rw-r--r--gnulib-tests/fcntl.c5
-rw-r--r--gnulib-tests/fd-hook.c2
-rw-r--r--gnulib-tests/fd-hook.h2
-rw-r--r--gnulib-tests/fdopen.c2
-rw-r--r--gnulib-tests/fflush.c33
-rw-r--r--gnulib-tests/file-has-acl.c2
-rw-r--r--gnulib-tests/fpurge.c2
-rw-r--r--gnulib-tests/freading.c2
-rw-r--r--gnulib-tests/freading.h2
-rw-r--r--gnulib-tests/fseek.c2
-rw-r--r--gnulib-tests/fseeko.c2
-rw-r--r--gnulib-tests/ftell.c2
-rw-r--r--gnulib-tests/ftello.c2
-rw-r--r--gnulib-tests/ftruncate.c2
-rw-r--r--gnulib-tests/getcwd-lgpl.c15
-rw-r--r--gnulib-tests/getdtablesize.c2
-rw-r--r--gnulib-tests/getpagesize.c2
-rw-r--r--gnulib-tests/glthread/thread.c205
-rw-r--r--gnulib-tests/glthread/thread.h356
-rw-r--r--gnulib-tests/gnulib.mk395
-rw-r--r--gnulib-tests/inet_pton.c2
-rw-r--r--gnulib-tests/init.sh517
-rw-r--r--gnulib-tests/ioctl.c2
-rw-r--r--gnulib-tests/link.c2
-rw-r--r--gnulib-tests/listen.c2
-rw-r--r--gnulib-tests/locale.c85
-rw-r--r--gnulib-tests/localename-table.c2
-rw-r--r--gnulib-tests/localename-table.h2
-rw-r--r--gnulib-tests/localename.c86
-rw-r--r--gnulib-tests/localename.h5
-rw-r--r--gnulib-tests/lseek.c2
-rw-r--r--gnulib-tests/macros.h2
-rw-r--r--gnulib-tests/nanosleep.c4
-rw-r--r--gnulib-tests/nap.h4
-rw-r--r--gnulib-tests/netinet_in.in.h2
-rw-r--r--gnulib-tests/null-ptr.h2
-rw-r--r--gnulib-tests/open.c37
-rw-r--r--gnulib-tests/opendir.c2
-rw-r--r--gnulib-tests/perror.c2
-rw-r--r--gnulib-tests/pipe.c2
-rw-r--r--gnulib-tests/pthread-thread.c178
-rw-r--r--gnulib-tests/pthread.in.h1831
-rw-r--r--gnulib-tests/pthread_sigmask.c92
-rw-r--r--gnulib-tests/putenv.c2
-rw-r--r--gnulib-tests/raise.c2
-rw-r--r--gnulib-tests/read-file.c2
-rw-r--r--gnulib-tests/read-file.h2
-rw-r--r--gnulib-tests/readdir.c4
-rw-r--r--gnulib-tests/realloc.c2
-rw-r--r--gnulib-tests/sched.in.h97
-rw-r--r--gnulib-tests/select.c2
-rw-r--r--gnulib-tests/setenv.c2
-rw-r--r--gnulib-tests/setlocale.c716
-rw-r--r--gnulib-tests/setsockopt.c2
-rw-r--r--gnulib-tests/sig-handler.h2
-rw-r--r--gnulib-tests/sigaction.c2
-rw-r--r--gnulib-tests/signal.in.h14
-rw-r--r--gnulib-tests/signature.h2
-rw-r--r--gnulib-tests/sigprocmask.c2
-rw-r--r--gnulib-tests/sleep.c2
-rw-r--r--gnulib-tests/socket.c2
-rw-r--r--gnulib-tests/sockets.c2
-rw-r--r--gnulib-tests/sockets.h2
-rw-r--r--gnulib-tests/stdio-impl.h24
-rw-r--r--gnulib-tests/strdup.c2
-rw-r--r--gnulib-tests/strerror_r.c2
-rw-r--r--gnulib-tests/symlink.c2
-rw-r--r--gnulib-tests/sys_ioctl.in.h2
-rw-r--r--gnulib-tests/sys_select.in.h6
-rw-r--r--gnulib-tests/sys_socket.in.h16
-rw-r--r--gnulib-tests/sys_uio.in.h2
-rw-r--r--gnulib-tests/test-accept.c2
-rw-r--r--gnulib-tests/test-alignof.c2
-rw-r--r--gnulib-tests/test-alloca-opt.c2
-rw-r--r--gnulib-tests/test-arpa_inet.c2
-rw-r--r--gnulib-tests/test-binary-io.c2
-rwxr-xr-xgnulib-tests/test-binary-io.sh2
-rw-r--r--gnulib-tests/test-bind.c2
-rw-r--r--gnulib-tests/test-btowc.c2
-rwxr-xr-xgnulib-tests/test-btowc1.sh2
-rwxr-xr-xgnulib-tests/test-btowc2.sh2
-rw-r--r--gnulib-tests/test-c-ctype.c2
-rwxr-xr-xgnulib-tests/test-c-strcase.sh12
-rw-r--r--gnulib-tests/test-c-strcasecmp.c2
-rw-r--r--gnulib-tests/test-c-strncasecmp.c2
-rw-r--r--gnulib-tests/test-canonicalize-lgpl.c17
-rw-r--r--gnulib-tests/test-chdir.c2
-rw-r--r--gnulib-tests/test-cloexec.c2
-rw-r--r--gnulib-tests/test-close.c2
-rw-r--r--gnulib-tests/test-connect.c2
-rwxr-xr-xgnulib-tests/test-copy-acl-1.sh7
-rwxr-xr-xgnulib-tests/test-copy-acl-2.sh6
-rw-r--r--gnulib-tests/test-copy-acl.c2
-rwxr-xr-xgnulib-tests/test-copy-acl.sh13
-rw-r--r--gnulib-tests/test-ctype.c2
-rw-r--r--gnulib-tests/test-dirent.c2
-rw-r--r--gnulib-tests/test-dup2.c2
-rw-r--r--gnulib-tests/test-environ.c2
-rw-r--r--gnulib-tests/test-errno.c2
-rw-r--r--gnulib-tests/test-fcntl-h.c2
-rw-r--r--gnulib-tests/test-fcntl.c2
-rw-r--r--gnulib-tests/test-fdopen.c2
-rw-r--r--gnulib-tests/test-fflush.c2
-rw-r--r--gnulib-tests/test-fflush2.c16
-rwxr-xr-xgnulib-tests/test-fflush2.sh6
-rw-r--r--gnulib-tests/test-fgetc.c2
-rwxr-xr-xgnulib-tests/test-file-has-acl-1.sh7
-rwxr-xr-xgnulib-tests/test-file-has-acl-2.sh6
-rw-r--r--gnulib-tests/test-file-has-acl.c2
-rwxr-xr-xgnulib-tests/test-file-has-acl.sh9
-rw-r--r--gnulib-tests/test-fpending.c2
-rwxr-xr-xgnulib-tests/test-fpending.sh2
-rw-r--r--gnulib-tests/test-fpurge.c2
-rw-r--r--gnulib-tests/test-fputc.c2
-rw-r--r--gnulib-tests/test-fread.c2
-rw-r--r--gnulib-tests/test-freading.c2
-rw-r--r--gnulib-tests/test-fseek.c2
-rwxr-xr-xgnulib-tests/test-fseek.sh4
-rwxr-xr-xgnulib-tests/test-fseek2.sh2
-rw-r--r--gnulib-tests/test-fseeko.c2
-rwxr-xr-xgnulib-tests/test-fseeko.sh4
-rwxr-xr-xgnulib-tests/test-fseeko2.sh2
-rw-r--r--gnulib-tests/test-fseeko3.c2
-rwxr-xr-xgnulib-tests/test-fseeko3.sh4
-rw-r--r--gnulib-tests/test-fseeko4.c2
-rwxr-xr-xgnulib-tests/test-fseeko4.sh2
-rw-r--r--gnulib-tests/test-fstat.c2
-rw-r--r--gnulib-tests/test-ftell.c2
-rwxr-xr-xgnulib-tests/test-ftell.sh4
-rwxr-xr-xgnulib-tests/test-ftell2.sh2
-rw-r--r--gnulib-tests/test-ftell3.c2
-rw-r--r--gnulib-tests/test-ftello.c2
-rwxr-xr-xgnulib-tests/test-ftello.sh4
-rwxr-xr-xgnulib-tests/test-ftello2.sh2
-rw-r--r--gnulib-tests/test-ftello3.c2
-rw-r--r--gnulib-tests/test-ftello4.c2
-rwxr-xr-xgnulib-tests/test-ftello4.sh2
-rw-r--r--gnulib-tests/test-ftruncate.c2
-rwxr-xr-xgnulib-tests/test-ftruncate.sh2
-rw-r--r--gnulib-tests/test-fwrite.c2
-rw-r--r--gnulib-tests/test-fwriting.c2
-rw-r--r--gnulib-tests/test-getcwd-lgpl.c2
-rw-r--r--gnulib-tests/test-getdelim.c2
-rw-r--r--gnulib-tests/test-getdtablesize.c2
-rw-r--r--gnulib-tests/test-getopt-gnu.c4
-rw-r--r--gnulib-tests/test-getopt-main.h2
-rw-r--r--gnulib-tests/test-getopt-posix.c4
-rw-r--r--gnulib-tests/test-getopt.h2
-rw-r--r--gnulib-tests/test-getopt_long.h2
-rw-r--r--gnulib-tests/test-getprogname.c2
-rw-r--r--gnulib-tests/test-gettimeofday.c2
-rw-r--r--gnulib-tests/test-hard-locale.c109
-rw-r--r--gnulib-tests/test-ignore-value.c2
-rw-r--r--gnulib-tests/test-inet_pton.c2
-rwxr-xr-xgnulib-tests/test-init.sh2
-rw-r--r--gnulib-tests/test-intprops.c84
-rw-r--r--gnulib-tests/test-inttypes.c2
-rw-r--r--gnulib-tests/test-ioctl.c2
-rw-r--r--gnulib-tests/test-isblank.c4
-rw-r--r--gnulib-tests/test-langinfo.c2
-rw-r--r--gnulib-tests/test-limits-h.c2
-rw-r--r--gnulib-tests/test-link.c2
-rw-r--r--gnulib-tests/test-link.h2
-rw-r--r--gnulib-tests/test-listen.c2
-rw-r--r--gnulib-tests/test-localcharset.c2
-rw-r--r--gnulib-tests/test-locale.c4
-rw-r--r--gnulib-tests/test-localeconv.c2
-rw-r--r--gnulib-tests/test-localename.c4
-rw-r--r--gnulib-tests/test-lseek.c2
-rwxr-xr-xgnulib-tests/test-lseek.sh6
-rw-r--r--gnulib-tests/test-lstat.c2
-rw-r--r--gnulib-tests/test-lstat.h8
-rw-r--r--gnulib-tests/test-malloca.c2
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-1.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-2.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-3.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-4.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-5.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-6.sh4
-rwxr-xr-xgnulib-tests/test-mbrtowc-w32-7.sh4
-rw-r--r--gnulib-tests/test-mbrtowc-w32.c9
-rw-r--r--gnulib-tests/test-mbrtowc.c6
-rwxr-xr-xgnulib-tests/test-mbrtowc1.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc2.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc3.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc4.sh2
-rwxr-xr-xgnulib-tests/test-mbrtowc5.sh4
-rw-r--r--gnulib-tests/test-mbsinit.c2
-rwxr-xr-xgnulib-tests/test-mbsinit.sh2
-rw-r--r--gnulib-tests/test-memchr.c4
-rw-r--r--gnulib-tests/test-memrchr.c2
-rw-r--r--gnulib-tests/test-mkdir.c2
-rw-r--r--gnulib-tests/test-mkdir.h2
-rw-r--r--gnulib-tests/test-nanosleep.c2
-rw-r--r--gnulib-tests/test-netinet_in.c2
-rw-r--r--gnulib-tests/test-nl_langinfo-mt.c255
-rw-r--r--gnulib-tests/test-nl_langinfo.c2
-rwxr-xr-xgnulib-tests/test-nl_langinfo.sh6
-rw-r--r--gnulib-tests/test-open.c2
-rw-r--r--gnulib-tests/test-open.h11
-rw-r--r--gnulib-tests/test-pathmax.c2
-rw-r--r--gnulib-tests/test-perror.c2
-rwxr-xr-xgnulib-tests/test-perror.sh8
-rw-r--r--gnulib-tests/test-perror2.c2
-rw-r--r--gnulib-tests/test-pipe.c2
-rw-r--r--gnulib-tests/test-pthread-thread.c73
-rw-r--r--gnulib-tests/test-pthread.c90
-rw-r--r--gnulib-tests/test-pthread_sigmask1.c95
-rw-r--r--gnulib-tests/test-pthread_sigmask2.c105
-rw-r--r--gnulib-tests/test-quotearg-simple.c2
-rw-r--r--gnulib-tests/test-quotearg.h2
-rw-r--r--gnulib-tests/test-raise.c2
-rw-r--r--gnulib-tests/test-read-file.c2
-rw-r--r--gnulib-tests/test-readlink.c2
-rw-r--r--gnulib-tests/test-readlink.h2
-rw-r--r--gnulib-tests/test-regex.c2
-rw-r--r--gnulib-tests/test-rename.c2
-rw-r--r--gnulib-tests/test-rename.h2
-rw-r--r--gnulib-tests/test-rmdir.c2
-rw-r--r--gnulib-tests/test-rmdir.h2
-rw-r--r--gnulib-tests/test-sameacls.c21
-rw-r--r--gnulib-tests/test-sched.c41
-rw-r--r--gnulib-tests/test-select-fd.c2
-rwxr-xr-xgnulib-tests/test-select-in.sh8
-rwxr-xr-xgnulib-tests/test-select-out.sh8
-rw-r--r--gnulib-tests/test-select-stdin.c2
-rw-r--r--gnulib-tests/test-select.c2
-rw-r--r--gnulib-tests/test-select.h2
-rwxr-xr-xgnulib-tests/test-set-mode-acl-1.sh7
-rwxr-xr-xgnulib-tests/test-set-mode-acl-2.sh6
-rw-r--r--gnulib-tests/test-set-mode-acl.c2
-rwxr-xr-xgnulib-tests/test-set-mode-acl.sh15
-rw-r--r--gnulib-tests/test-setenv.c2
-rw-r--r--gnulib-tests/test-setlocale1.c2
-rwxr-xr-xgnulib-tests/test-setlocale1.sh8
-rw-r--r--gnulib-tests/test-setlocale2.c2
-rwxr-xr-xgnulib-tests/test-setlocale2.sh4
-rw-r--r--gnulib-tests/test-setlocale_null-mt-all.c169
-rw-r--r--gnulib-tests/test-setlocale_null-mt-one.c169
-rw-r--r--gnulib-tests/test-setlocale_null.c32
-rw-r--r--gnulib-tests/test-setsockopt.c2
-rw-r--r--gnulib-tests/test-sigaction.c2
-rw-r--r--gnulib-tests/test-signal-h.c2
-rw-r--r--gnulib-tests/test-sigprocmask.c2
-rw-r--r--gnulib-tests/test-sleep.c2
-rw-r--r--gnulib-tests/test-sockets.c2
-rw-r--r--gnulib-tests/test-stat-time.c2
-rw-r--r--gnulib-tests/test-stat.c2
-rw-r--r--gnulib-tests/test-stat.h8
-rw-r--r--gnulib-tests/test-stdalign.c2
-rw-r--r--gnulib-tests/test-stdbool.c2
-rw-r--r--gnulib-tests/test-stddef.c2
-rw-r--r--gnulib-tests/test-stdint.c4
-rw-r--r--gnulib-tests/test-stdio.c2
-rw-r--r--gnulib-tests/test-stdlib.c2
-rw-r--r--gnulib-tests/test-strerror.c2
-rw-r--r--gnulib-tests/test-strerror_r.c2
-rw-r--r--gnulib-tests/test-string.c2
-rw-r--r--gnulib-tests/test-strverscmp.c2
-rw-r--r--gnulib-tests/test-symlink.c2
-rw-r--r--gnulib-tests/test-symlink.h5
-rw-r--r--gnulib-tests/test-sys_ioctl.c2
-rw-r--r--gnulib-tests/test-sys_select.c2
-rw-r--r--gnulib-tests/test-sys_socket.c2
-rw-r--r--gnulib-tests/test-sys_stat.c2
-rw-r--r--gnulib-tests/test-sys_time.c2
-rw-r--r--gnulib-tests/test-sys_types.c2
-rw-r--r--gnulib-tests/test-sys_uio.c2
-rw-r--r--gnulib-tests/test-sys_wait.h2
-rw-r--r--gnulib-tests/test-thread_create.c78
-rw-r--r--gnulib-tests/test-thread_self.c39
-rw-r--r--gnulib-tests/test-time.c2
-rw-r--r--gnulib-tests/test-unistd.c2
-rw-r--r--gnulib-tests/test-unsetenv.c2
-rwxr-xr-xgnulib-tests/test-update-copyright.sh22
-rwxr-xr-xgnulib-tests/test-vc-list-files-cvs.sh6
-rwxr-xr-xgnulib-tests/test-vc-list-files-git.sh6
-rw-r--r--gnulib-tests/test-verify-try.c2
-rw-r--r--gnulib-tests/test-verify.c4
-rw-r--r--gnulib-tests/test-version-etc.c2
-rwxr-xr-xgnulib-tests/test-version-etc.sh4
-rw-r--r--gnulib-tests/test-wchar.c2
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-1.sh2
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-2.sh2
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-3.sh2
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-4.sh2
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-5.sh2
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-6.sh4
-rwxr-xr-xgnulib-tests/test-wcrtomb-w32-7.sh4
-rw-r--r--gnulib-tests/test-wcrtomb-w32.c7
-rw-r--r--gnulib-tests/test-wcrtomb.c6
-rwxr-xr-xgnulib-tests/test-wcrtomb.sh12
-rw-r--r--gnulib-tests/test-wctype-h.c2
-rw-r--r--gnulib-tests/test-xalloc-die.c2
-rwxr-xr-xgnulib-tests/test-xalloc-die.sh4
-rw-r--r--gnulib-tests/unsetenv.c2
-rw-r--r--gnulib-tests/unused-parameter.h2
-rw-r--r--gnulib-tests/w32sock.h2
-rw-r--r--gnulib-tests/warn-on-use.h2
-rw-r--r--gnulib-tests/windows-thread.c243
-rw-r--r--gnulib-tests/windows-thread.h55
-rw-r--r--gnulib-tests/windows-tls.c339
-rw-r--r--gnulib-tests/windows-tls.h42
-rw-r--r--gnulib-tests/zerosize-ptr.h2
-rw-r--r--init.cfg2
-rw-r--r--lib/_Noreturn.h32
-rw-r--r--lib/acl-errno-valid.c2
-rw-r--r--lib/acl-internal.c2
-rw-r--r--lib/acl-internal.h2
-rw-r--r--lib/acl.h2
-rw-r--r--lib/acl_entries.c2
-rw-r--r--lib/alignof.h2
-rw-r--r--lib/alloca.c10
-rw-r--r--lib/alloca.in.h8
-rw-r--r--lib/arg-nonnull.h2
-rw-r--r--lib/basename-lgpl.c2
-rw-r--r--lib/binary-io.c18
-rw-r--r--lib/binary-io.h16
-rw-r--r--lib/btowc.c2
-rw-r--r--lib/c++defs.h2
-rw-r--r--lib/c-ctype.h2
-rw-r--r--lib/c-strcase.h2
-rw-r--r--lib/c-strcasecmp.c2
-rw-r--r--lib/c-strcaseeq.h2
-rw-r--r--lib/c-strncasecmp.c2
-rw-r--r--lib/canonicalize-lgpl.c2
-rw-r--r--lib/cdefs.h4
-rw-r--r--lib/close-stream.c2
-rw-r--r--lib/closeout.c2
-rw-r--r--lib/closeout.h2
-rw-r--r--lib/copy-acl.c2
-rw-r--r--lib/ctype.in.h4
-rw-r--r--lib/dfa.c621
-rw-r--r--lib/dfa.h31
-rw-r--r--lib/dirname-lgpl.c2
-rw-r--r--lib/dirname.h2
-rw-r--r--lib/dosname.h2
-rw-r--r--lib/errno.in.h2
-rw-r--r--lib/error.c4
-rw-r--r--lib/error.h2
-rw-r--r--lib/exitfail.c2
-rw-r--r--lib/exitfail.h2
-rw-r--r--lib/fcntl.in.h40
-rw-r--r--lib/filename.h2
-rw-r--r--lib/flexmember.h (renamed from gnulib-tests/flexmember.h)27
-rw-r--r--lib/fpending.c2
-rw-r--r--lib/fpending.h2
-rw-r--r--lib/fstat.c8
-rw-r--r--lib/fwriting.c2
-rw-r--r--lib/fwriting.h2
-rw-r--r--lib/get-permissions.c4
-rw-r--r--lib/getdelim.c2
-rw-r--r--lib/getfilecon.c2
-rw-r--r--lib/getopt-cdefs.in.h2
-rw-r--r--lib/getopt-core.h2
-rw-r--r--lib/getopt-ext.h2
-rw-r--r--lib/getopt-pfx-core.h2
-rw-r--r--lib/getopt-pfx-ext.h2
-rw-r--r--lib/getopt.c2
-rw-r--r--lib/getopt.in.h2
-rw-r--r--lib/getopt1.c2
-rw-r--r--lib/getopt_int.h2
-rw-r--r--lib/getprogname.c13
-rw-r--r--lib/getprogname.h2
-rw-r--r--lib/gettext.h15
-rw-r--r--lib/gettimeofday.c8
-rw-r--r--lib/glthread/lock.c944
-rw-r--r--lib/glthread/lock.h523
-rw-r--r--lib/glthread/threadlib.c4
-rw-r--r--lib/gnulib.mk140
-rw-r--r--lib/hard-locale.c47
-rw-r--r--lib/hard-locale.h7
-rw-r--r--lib/ignore-value.h2
-rw-r--r--lib/intprops.h221
-rw-r--r--lib/inttypes.in.h (renamed from gnulib-tests/inttypes.in.h)20
-rw-r--r--lib/isblank.c2
-rw-r--r--lib/langinfo.in.h4
-rw-r--r--lib/lc-charset-dispatch.c82
-rw-r--r--lib/lc-charset-dispatch.h40
-rw-r--r--lib/libc-config.h2
-rw-r--r--lib/limits.in.h2
-rw-r--r--lib/local.mk2
-rw-r--r--lib/localcharset.c273
-rw-r--r--lib/localcharset.h31
-rw-r--r--lib/locale.in.h41
-rw-r--r--lib/localeconv.c2
-rw-r--r--lib/localeinfo.c46
-rw-r--r--lib/localeinfo.h8
-rw-r--r--lib/localtime-buffer.c2
-rw-r--r--lib/localtime-buffer.h2
-rw-r--r--lib/lstat.c8
-rw-r--r--lib/malloc.c2
-rw-r--r--lib/malloca.c2
-rw-r--r--lib/malloca.h6
-rw-r--r--lib/mbrlen.c2
-rw-r--r--lib/mbrtowc-impl-utf8.h138
-rw-r--r--lib/mbrtowc-impl.h262
-rw-r--r--lib/mbrtowc.c377
-rw-r--r--lib/mbsinit.c11
-rw-r--r--lib/mbtowc-impl.h2
-rw-r--r--lib/mbtowc-lock.c150
-rw-r--r--lib/mbtowc-lock.h115
-rw-r--r--lib/mbtowc.c2
-rw-r--r--lib/memchr.c2
-rw-r--r--lib/memchr.valgrind16
-rw-r--r--lib/memrchr.c2
-rw-r--r--lib/minmax.h2
-rw-r--r--lib/mkdir.c2
-rw-r--r--lib/mkostemp.c2
-rw-r--r--lib/msvc-inval.c2
-rw-r--r--lib/msvc-inval.h6
-rw-r--r--lib/msvc-nothrow.c2
-rw-r--r--lib/msvc-nothrow.h2
-rw-r--r--lib/nl_langinfo.c118
-rw-r--r--lib/obstack.c2
-rw-r--r--lib/obstack.h2
-rw-r--r--lib/pathmax.h6
-rw-r--r--lib/progname.c2
-rw-r--r--lib/progname.h2
-rw-r--r--lib/qcopy-acl.c2
-rw-r--r--lib/qset-acl.c2
-rw-r--r--lib/quote.h2
-rw-r--r--lib/quotearg.c2
-rw-r--r--lib/quotearg.h2
-rw-r--r--lib/readlink.c2
-rw-r--r--lib/regcomp.c73
-rw-r--r--lib/regex.c6
-rw-r--r--lib/regex.h2
-rw-r--r--lib/regex_internal.c26
-rw-r--r--lib/regex_internal.h54
-rw-r--r--lib/regexec.c120
-rw-r--r--lib/rename.c2
-rw-r--r--lib/rmdir.c2
-rw-r--r--lib/same-inode.h2
-rw-r--r--lib/se-selinux.in.h2
-rw-r--r--lib/set-acl.c2
-rw-r--r--lib/set-permissions.c2
-rw-r--r--lib/setlocale-lock.c150
-rw-r--r--lib/setlocale_null.c411
-rw-r--r--lib/setlocale_null.h82
-rw-r--r--lib/stat-time.h4
-rw-r--r--lib/stat-w32.c70
-rw-r--r--lib/stat-w32.h2
-rw-r--r--lib/stat.c30
-rw-r--r--lib/stdalign.in.h4
-rw-r--r--lib/stdarg.in.h2
-rw-r--r--lib/stdbool.in.h2
-rw-r--r--lib/stddef.in.h33
-rw-r--r--lib/stdint.in.h80
-rw-r--r--lib/stdio-impl.h24
-rw-r--r--lib/stdio.in.h69
-rw-r--r--lib/stdlib.in.h144
-rw-r--r--lib/streq.h2
-rw-r--r--lib/strerror-override.c2
-rw-r--r--lib/strerror-override.h2
-rw-r--r--lib/strerror.c2
-rw-r--r--lib/string.in.h14
-rw-r--r--lib/stripslash.c2
-rw-r--r--lib/strverscmp.c37
-rw-r--r--lib/sys_stat.in.h11
-rw-r--r--lib/sys_time.in.h8
-rw-r--r--lib/sys_types.in.h2
-rw-r--r--lib/tempname.c2
-rw-r--r--lib/tempname.h2
-rw-r--r--lib/time.in.h36
-rw-r--r--lib/unistd.in.h129
-rw-r--r--lib/unlocked-io.h2
-rw-r--r--lib/unused-parameter.h2
-rw-r--r--lib/verify.h124
-rw-r--r--lib/version-etc-fsf.c2
-rw-r--r--lib/version-etc.c28
-rw-r--r--lib/version-etc.h2
-rw-r--r--lib/warn-on-use.h2
-rw-r--r--lib/wchar.in.h107
-rw-r--r--lib/wcrtomb.c33
-rw-r--r--lib/wctob.c2
-rw-r--r--lib/wctomb-impl.h2
-rw-r--r--lib/wctomb.c2
-rw-r--r--lib/wctype.in.h294
-rw-r--r--lib/windows-initguard.h35
-rw-r--r--lib/windows-mutex.c95
-rw-r--r--lib/windows-mutex.h51
-rw-r--r--lib/windows-once.c62
-rw-r--r--lib/windows-once.h47
-rw-r--r--lib/windows-recmutex.c127
-rw-r--r--lib/windows-recmutex.h57
-rw-r--r--lib/windows-rwlock.c373
-rw-r--r--lib/windows-rwlock.h68
-rw-r--r--lib/xalloc-die.c2
-rw-r--r--lib/xalloc-oversized.h2
-rw-r--r--lib/xalloc.h2
-rw-r--r--lib/xmalloc.c8
-rw-r--r--m4/00gnulib.m472
-rw-r--r--m4/__inline.m42
-rw-r--r--m4/absolute-header.m42
-rw-r--r--m4/acl.m42
-rw-r--r--m4/alloca.m411
-rw-r--r--m4/arpa_inet_h.m46
-rw-r--r--m4/assert.m42
-rw-r--r--m4/btowc.m42
-rw-r--r--m4/builtin-expect.m42
-rw-r--r--m4/canonicalize.m410
-rw-r--r--m4/close-stream.m411
-rw-r--r--m4/close.m42
-rw-r--r--m4/closedir.m42
-rw-r--r--m4/closeout.m412
-rw-r--r--m4/codeset.m44
-rw-r--r--m4/ctype.m42
-rw-r--r--m4/dirent_h.m42
-rw-r--r--m4/dirfd.m42
-rw-r--r--m4/dirname.m42
-rw-r--r--m4/double-slash-root.m42
-rw-r--r--m4/dup2.m42
-rw-r--r--m4/eealloc.m42
-rw-r--r--m4/environ.m42
-rw-r--r--m4/errno_h.m42
-rw-r--r--m4/error.m42
-rw-r--r--m4/extensions.m42
-rw-r--r--m4/extern-inline.m44
-rw-r--r--m4/fcntl-o.m42
-rw-r--r--m4/fcntl.m42
-rw-r--r--m4/fcntl_h.m46
-rw-r--r--m4/fdopen.m42
-rw-r--r--m4/fflush.m44
-rw-r--r--m4/flexmember.m410
-rw-r--r--m4/fpending.m42
-rw-r--r--m4/fpurge.m426
-rw-r--r--m4/freading.m42
-rw-r--r--m4/fseek.m42
-rw-r--r--m4/fseeko.m42
-rw-r--r--m4/fstat.m42
-rw-r--r--m4/ftell.m42
-rw-r--r--m4/ftello.m42
-rw-r--r--m4/ftruncate.m44
-rw-r--r--m4/fwriting.m42
-rw-r--r--m4/getcwd.m416
-rw-r--r--m4/getdelim.m442
-rw-r--r--m4/getdtablesize.m42
-rw-r--r--m4/getopt.m410
-rw-r--r--m4/getpagesize.m42
-rw-r--r--m4/getprogname.m42
-rw-r--r--m4/gettimeofday.m410
-rw-r--r--m4/glibc21.m42
-rw-r--r--m4/gnulib-common.m487
-rw-r--r--m4/gnulib-comp.m4186
-rw-r--r--m4/host-cpu-c-abi.m4644
-rw-r--r--m4/include_next.m42
-rw-r--r--m4/inet_pton.m413
-rw-r--r--m4/intl-thread-locale.m441
-rw-r--r--m4/intlmacosx.m429
-rw-r--r--m4/inttypes-pri.m42
-rw-r--r--m4/inttypes.m48
-rw-r--r--m4/ioctl.m42
-rw-r--r--m4/isblank.m42
-rw-r--r--m4/langinfo_h.m42
-rw-r--r--m4/largefile.m424
-rw-r--r--m4/lcmessage.m44
-rw-r--r--m4/lib-ld.m4163
-rw-r--r--m4/lib-link.m421
-rw-r--r--m4/lib-prefix.m4135
-rw-r--r--m4/limits-h.m42
-rw-r--r--m4/link.m48
-rw-r--r--m4/localcharset.m42
-rw-r--r--m4/locale-fr.m42
-rw-r--r--m4/locale-ja.m42
-rw-r--r--m4/locale-tr.m45
-rw-r--r--m4/locale-zh.m42
-rw-r--r--m4/locale_h.m4101
-rw-r--r--m4/localeconv.m42
-rw-r--r--m4/localename.m425
-rw-r--r--m4/localtime-buffer.m42
-rw-r--r--m4/lock.m42
-rw-r--r--m4/longlong.m4113
-rw-r--r--m4/lseek.m42
-rw-r--r--m4/lstat.m48
-rw-r--r--m4/malloc.m425
-rw-r--r--m4/malloca.m45
-rw-r--r--m4/manywarnings.m411
-rw-r--r--m4/mbrlen.m42
-rw-r--r--m4/mbrtowc.m4219
-rw-r--r--m4/mbsinit.m42
-rw-r--r--m4/mbstate_t.m42
-rw-r--r--m4/mbtowc.m413
-rw-r--r--m4/memchr.m425
-rw-r--r--m4/memrchr.m42
-rw-r--r--m4/minmax.m42
-rw-r--r--m4/mkdir.m414
-rw-r--r--m4/mkostemp.m42
-rw-r--r--m4/mmap-anon.m42
-rw-r--r--m4/mode_t.m42
-rw-r--r--m4/msvc-inval.m42
-rw-r--r--m4/msvc-nothrow.m42
-rw-r--r--m4/multiarch.m42
-rw-r--r--m4/nanosleep.m48
-rw-r--r--m4/netinet_in_h.m42
-rw-r--r--m4/nl_langinfo.m412
-rw-r--r--m4/nocrash.m46
-rw-r--r--m4/non-recursive-gnulib-prefix-hack.m42
-rw-r--r--m4/obstack.m42
-rw-r--r--m4/off_t.m42
-rw-r--r--m4/open-cloexec.m42
-rw-r--r--m4/open-slash.m459
-rw-r--r--m4/open.m443
-rw-r--r--m4/opendir.m42
-rw-r--r--m4/pathmax.m42
-rw-r--r--m4/perl.m446
-rw-r--r--m4/perror.m414
-rw-r--r--m4/pipe.m42
-rw-r--r--m4/pthread-thread.m469
-rw-r--r--m4/pthread_h.m4268
-rw-r--r--m4/pthread_rwlock_rdlock.m430
-rw-r--r--m4/pthread_sigmask.m4273
-rw-r--r--m4/putenv.m410
-rw-r--r--m4/quote.m42
-rw-r--r--m4/quotearg.m42
-rw-r--r--m4/raise.m42
-rw-r--r--m4/read-file.m42
-rw-r--r--m4/readdir.m42
-rw-r--r--m4/readlink.m48
-rw-r--r--m4/realloc.m425
-rw-r--r--m4/regex.m48
-rw-r--r--m4/rename.m4107
-rw-r--r--m4/rmdir.m48
-rw-r--r--m4/sched_h.m491
-rw-r--r--m4/select.m48
-rw-r--r--m4/selinux-context-h.m42
-rw-r--r--m4/selinux-selinux-h.m42
-rw-r--r--m4/setenv.m414
-rw-r--r--m4/setlocale.m461
-rw-r--r--m4/setlocale_null.m498
-rw-r--r--m4/sigaction.m42
-rw-r--r--m4/signal_h.m42
-rw-r--r--m4/signalblocking.m42
-rw-r--r--m4/sleep.m410
-rw-r--r--m4/socketlib.m42
-rw-r--r--m4/sockets.m42
-rw-r--r--m4/socklen.m42
-rw-r--r--m4/sockpfaf.m42
-rw-r--r--m4/ssize_t.m42
-rw-r--r--m4/stat-time.m42
-rw-r--r--m4/stat.m48
-rw-r--r--m4/std-gnu11.m42
-rw-r--r--m4/stdalign.m42
-rw-r--r--m4/stdarg.m42
-rw-r--r--m4/stdbool.m424
-rw-r--r--m4/stddef_h.m42
-rw-r--r--m4/stdint.m425
-rw-r--r--m4/stdio_h.m42
-rw-r--r--m4/stdlib_h.m417
-rw-r--r--m4/strdup.m42
-rw-r--r--m4/strerror.m416
-rw-r--r--m4/strerror_r.m46
-rw-r--r--m4/string_h.m42
-rw-r--r--m4/strverscmp.m42
-rw-r--r--m4/symlink.m48
-rw-r--r--m4/sys_ioctl_h.m42
-rw-r--r--m4/sys_select_h.m42
-rw-r--r--m4/sys_socket_h.m430
-rw-r--r--m4/sys_stat_h.m42
-rw-r--r--m4/sys_time_h.m42
-rw-r--r--m4/sys_types_h.m42
-rw-r--r--m4/sys_uio_h.m42
-rw-r--r--m4/tempname.m42
-rw-r--r--m4/thread.m417
-rw-r--r--m4/threadlib.m4671
-rw-r--r--m4/time_h.m42
-rw-r--r--m4/ungetc.m420
-rw-r--r--m4/unistd_h.m415
-rw-r--r--m4/unlocked-io.m42
-rw-r--r--m4/version-etc.m42
-rw-r--r--m4/visibility.m477
-rw-r--r--m4/warn-on-use.m42
-rw-r--r--m4/warnings.m42
-rw-r--r--m4/wchar_h.m45
-rw-r--r--m4/wchar_t.m42
-rw-r--r--m4/wcrtomb.m476
-rw-r--r--m4/wctob.m45
-rw-r--r--m4/wctomb.m42
-rw-r--r--m4/wctype_h.m416
-rw-r--r--m4/wint_t.m42
-rw-r--r--m4/xalloc.m42
-rw-r--r--maint.mk261
-rw-r--r--po/af.gmobin2772 -> 2772 bytes
-rw-r--r--po/af.po135
-rw-r--r--po/ast.gmobin8460 -> 8460 bytes
-rw-r--r--po/ast.po135
-rw-r--r--po/bg.gmobin20143 -> 20493 bytes
-rw-r--r--po/bg.po151
-rw-r--r--po/ca.gmobin8684 -> 8684 bytes
-rw-r--r--po/ca.po138
-rw-r--r--po/cs.gmobin16044 -> 16226 bytes
-rw-r--r--po/cs.po152
-rw-r--r--po/da.gmobin12730 -> 12569 bytes
-rw-r--r--po/da.po143
-rw-r--r--po/de.gmobin12408 -> 16373 bytes
-rw-r--r--po/de.po358
-rw-r--r--po/el.gmobin11386 -> 11386 bytes
-rw-r--r--po/el.po138
-rw-r--r--po/eo.gmobin14628 -> 15423 bytes
-rw-r--r--po/eo.po197
-rw-r--r--po/es.gmobin15948 -> 16214 bytes
-rw-r--r--po/es.po155
-rw-r--r--po/et.gmobin12407 -> 15018 bytes
-rw-r--r--po/et.po227
-rw-r--r--po/eu.gmobin1750 -> 1750 bytes
-rw-r--r--po/eu.po135
-rw-r--r--po/fi.gmobin13724 -> 16256 bytes
-rw-r--r--po/fi.po419
-rw-r--r--po/fr.gmobin16528 -> 16706 bytes
-rw-r--r--po/fr.po156
-rw-r--r--po/ga.gmobin15375 -> 14515 bytes
-rw-r--r--po/ga.po142
-rw-r--r--po/gl.gmobin9501 -> 9501 bytes
-rw-r--r--po/gl.po138
-rw-r--r--po/he.gmobin1333 -> 1333 bytes
-rw-r--r--po/he.po135
-rw-r--r--po/hr.gmobin15949 -> 16117 bytes
-rw-r--r--po/hr.po167
-rw-r--r--po/hu.gmobin13441 -> 13340 bytes
-rw-r--r--po/hu.po143
-rw-r--r--po/id.gmobin8543 -> 8543 bytes
-rw-r--r--po/id.po138
-rw-r--r--po/it.gmobin8308 -> 8308 bytes
-rw-r--r--po/it.po135
-rw-r--r--po/ja.gmobin11818 -> 11620 bytes
-rw-r--r--po/ja.po143
-rw-r--r--po/ko.gmobin1382 -> 15787 bytes
-rw-r--r--po/ko.po562
-rw-r--r--po/nb.gmobin14542 -> 14285 bytes
-rw-r--r--po/nb.po166
-rw-r--r--po/nl.gmobin15772 -> 14823 bytes
-rw-r--r--po/nl.po142
-rw-r--r--po/pl.gmobin9018 -> 9018 bytes
-rw-r--r--po/pl.po138
-rw-r--r--po/pt.gmobin15428 -> 15628 bytes
-rw-r--r--po/pt.po158
-rw-r--r--po/pt_BR.gmobin16066 -> 16273 bytes
-rw-r--r--po/pt_BR.po158
-rw-r--r--po/ro.gmobin7613 -> 7613 bytes
-rw-r--r--po/ro.po135
-rw-r--r--po/ru.gmobin19513 -> 20599 bytes
-rw-r--r--po/ru.po174
-rw-r--r--po/sed.pot137
-rw-r--r--po/sk.gmobin16062 -> 16274 bytes
-rw-r--r--po/sk.po160
-rw-r--r--po/sl.gmobin8471 -> 8471 bytes
-rw-r--r--po/sl.po138
-rw-r--r--po/sr.gmobin16009 -> 15905 bytes
-rw-r--r--po/sr.po143
-rw-r--r--po/sv.gmobin15569 -> 15765 bytes
-rw-r--r--po/sv.po156
-rw-r--r--po/tr.gmobin8484 -> 8484 bytes
-rw-r--r--po/tr.po138
-rw-r--r--po/uk.gmobin20112 -> 20376 bytes
-rw-r--r--po/uk.po158
-rw-r--r--po/vi.gmobin17356 -> 17573 bytes
-rw-r--r--po/vi.po167
-rw-r--r--po/zh_CN.gmobin14340 -> 15110 bytes
-rw-r--r--po/zh_CN.po174
-rw-r--r--po/zh_TW.gmobin14271 -> 15051 bytes
-rw-r--r--po/zh_TW.po177
-rw-r--r--sed/compile.c2
-rw-r--r--sed/debug.c2
-rw-r--r--sed/execute.c2
-rw-r--r--sed/local.mk2
-rw-r--r--sed/mbcs.c2
-rw-r--r--sed/regexp.c2
-rw-r--r--sed/sed.c21
-rw-r--r--sed/sed.h2
-rw-r--r--sed/utils.c4
-rw-r--r--sed/utils.h2
-rwxr-xr-xtestsuite/8bit.sh2
-rwxr-xr-xtestsuite/8to7.sh2
-rw-r--r--testsuite/Coreutils.pm2
-rw-r--r--testsuite/CuSkip.pm2
-rw-r--r--testsuite/CuTmpdir.pm2
-rwxr-xr-xtestsuite/badenc.sh2
-rwxr-xr-xtestsuite/binary.sh2
-rw-r--r--testsuite/bsd-wrapper.sh2
-rwxr-xr-xtestsuite/bug32082.sh2
-rwxr-xr-xtestsuite/bug32271-1.sh2
-rwxr-xr-xtestsuite/bug32271-2.sh5
-rw-r--r--testsuite/cmd-R.sh2
-rwxr-xr-xtestsuite/cmd-l.sh2
-rwxr-xr-xtestsuite/colon-with-no-label.sh2
-rw-r--r--testsuite/command-endings.sh2
-rw-r--r--testsuite/comment-n.sh2
-rw-r--r--testsuite/compile-errors.sh2
-rw-r--r--testsuite/compile-tests.sh2
-rwxr-xr-xtestsuite/convert-number.sh2
-rwxr-xr-xtestsuite/dc.sh2
-rw-r--r--testsuite/debug.pl2
-rw-r--r--testsuite/distrib.sh2
-rw-r--r--testsuite/envvar-check2
-rwxr-xr-xtestsuite/eval.sh2
-rw-r--r--testsuite/execute-tests.sh2
-rwxr-xr-xtestsuite/follow-symlinks-stdin.sh2
-rw-r--r--testsuite/follow-symlinks.sh2
-rw-r--r--testsuite/get-mb-cur-max.c2
-rwxr-xr-xtestsuite/help-version.sh2
-rw-r--r--testsuite/help.sh2
-rwxr-xr-xtestsuite/in-place-hyphen.sh2
-rw-r--r--testsuite/in-place-suffix-backup.sh2
-rw-r--r--testsuite/init.sh517
-rw-r--r--testsuite/inplace-hold.sh2
-rwxr-xr-xtestsuite/inplace-selinux.sh7
-rwxr-xr-xtestsuite/invalid-mb-seq-UMR.sh2
-rw-r--r--testsuite/local.mk5
-rwxr-xr-xtestsuite/mac-mf.sh2
-rwxr-xr-xtestsuite/madding.sh2
-rwxr-xr-xtestsuite/mb-bad-delim.sh2
-rwxr-xr-xtestsuite/mb-charclass-non-utf8.sh2
-rwxr-xr-xtestsuite/mb-match-slash.sh2
-rwxr-xr-xtestsuite/mb-y-translate.sh2
-rw-r--r--testsuite/misc.pl2
-rwxr-xr-xtestsuite/missing-filename.sh2
-rwxr-xr-xtestsuite/newjis.sh2
-rwxr-xr-xtestsuite/newline-dfa-bug.sh5
-rw-r--r--testsuite/no-perl6
-rw-r--r--testsuite/normalize-text.sh2
-rwxr-xr-xtestsuite/nulldata.sh2
-rwxr-xr-xtestsuite/obinary.sh2
-rw-r--r--testsuite/panic-tests.sh2
-rw-r--r--testsuite/posix-char-class.sh2
-rw-r--r--testsuite/posix-mode-ERE.sh2
-rwxr-xr-xtestsuite/posix-mode-N.sh2
-rw-r--r--testsuite/posix-mode-addr.sh2
-rwxr-xr-xtestsuite/posix-mode-bad-ref.sh2
-rw-r--r--testsuite/posix-mode-s.sh2
-rwxr-xr-xtestsuite/range-overlap.sh2
-rw-r--r--testsuite/recursive-escape-c.sh2
-rw-r--r--testsuite/regex-errors.sh2
-rwxr-xr-xtestsuite/regex-max-int.sh2
-rwxr-xr-xtestsuite/sandbox.sh2
-rw-r--r--testsuite/stdin-prog.sh2
-rwxr-xr-xtestsuite/stdin.sh2
-rwxr-xr-xtestsuite/subst-mb-incomplete.sh2
-rw-r--r--testsuite/subst-options.sh2
-rw-r--r--testsuite/subst-replacement.sh2
-rwxr-xr-xtestsuite/temp-file-cleanup.sh2
-rw-r--r--testsuite/test-mbrtowc.c2
-rwxr-xr-xtestsuite/title-case.sh6
-rw-r--r--testsuite/unbuffered.sh2
-rw-r--r--testsuite/uniq.sh2
-rw-r--r--testsuite/utf8-ru.sh2
-rw-r--r--testsuite/xemacs.good2
-rw-r--r--testsuite/xemacs.inp2
-rwxr-xr-xtestsuite/xemacs.sh2
908 files changed, 27736 insertions, 13651 deletions
diff --git a/.tarball-version b/.tarball-version
index 4f8c639..ef216a5 100644
--- a/.tarball-version
+++ b/.tarball-version
@@ -1 +1 @@
-4.7
+4.8
diff --git a/.version b/.version
index 4f8c639..ef216a5 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-4.7
+4.8
diff --git a/ChangeLog b/ChangeLog
index 0c9c30f..2e69026 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,161 @@
+2020-01-14 Jim Meyering <meyering@fb.com>
+
+ version 4.8
+ * NEWS: Record release date.
+
+ doc: mention changes inherited through gnulib
+ * NEWS (Improvements): Mention gnulib.
+
+2020-01-11 Jim Meyering <meyering@fb.com>
+
+ build: update gnulib to latest (for updated perl.m4)
+
+ tests: remove valgrind-added diagnostics from stderr
+ * testsuite/bug32271-2.sh: Filter out lines starting with "==".
+ This avoids unwarranted failures on e.g., windows systems that
+ would emit this to stderr:
+ +==16281== error calling PR_SET_PTRACER, vgdb might block
+ * testsuite/newline-dfa-bug.sh: Likewise.
+ Reported by Vagelis Prokopiou on Windows subsystem for Linux
+ (Debian 10) in https://lists.gnu.org/r/sed-devel/2020-01/msg00018.html
+ and by Bruno Haible for mingw in
+ https://lists.gnu.org/r/sed-devel/2020-01/msg00005.html
+
+ sed: avoid MSVC build failure
+ * sed/sed.c (usage): Remove unnecessary forward declaration.
+ Reported by Bruno Haible in
+ https://lists.gnu.org/r/sed-devel/2020-01/msg00007.html
+
+ tests: avoid hpux11 test failure
+ * testsuite/title-case.sh: Correct printf usage not to trigger
+ unspecified behavior for '\(\)'. Instead, just use sed with its -r
+ option so those parentheses don't need any backslash at all.
+ Reported by Bruno Haible in
+ https://lists.gnu.org/r/sed-devel/2020-01/msg00008.html
+
+2020-01-09 Jim Meyering <meyering@fb.com>
+
+ tests: handle missing perl
+ Before this change, the two perl-requiring tests would fail
+ on systems without perl. Now, they are skipped, as intended.
+ * bootstrap.conf (gnulib_modules): Add perl.
+ * testsuite/no-perl: New file. From coreutils.
+ * testsuite/local.mk (EXTRA_DIST): Add it.
+ (TESTSUITE_PERL): Include testsuite/ prefix.
+
+2020-01-06 Jim Meyering <meyering@fb.com>
+
+ maint: once again distribute .tar.gz files
+ * configure.ac: Reenable distribution of gzip-compressed
+ tarballs, on request from Jan Nieuwenhuizen in
+ https://lists.gnu.org/r/sed-devel/2020-01/msg00013.html
+ * NEWS (Release): Mention this.
+
+2020-01-05 Jim Meyering <meyering@fb.com>
+
+ maint: space-before-open-paren: avoid syntax-check error
+ * sed/sed.c (selinux_support): Insert space before open-paren.
+
+ build: update gnulib to latest (for thread-related test fixes)
+ * .gitignore: Add /lib/inttypes.h.
+
+2020-01-01 Jim Meyering <meyering@fb.com>
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright" and then...
+ * gnulib: Update to latest with copyright year adjusted.
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Likewise.
+
+ maint: remove explicit mention of gnulib's threadlib module
+ * bootstrap.conf (gnulib_modules): Remove explicit mention of threadlib.
+ It was added back in 2012 to avoid a bootstrap failure; that explicit
+ mention has long been unnecessary.
+
+2019-09-05 Assaf Gordon <assafgordon@gmail.com>
+
+ sed: set correct umask on temporary files
+ "sed -i" now creates temporary files with correct umask (limited to u=rwx).
+ Previously sed would incorrectly set umask, and combined with mkostemp
+ creating file with mode 0600, the result would be a file with
+ permission mode 0.
+
+ Reported by Dr N.W. Filardo <nwf20@cam.ac.uk>:
+ https://lists.gnu.org/r/sed-devel/2019-08/msg00000.html
+ "The net effect is that this patch does not do what it says on the tin:
+ it does not improve the security story at all. Things continue to
+ function because the subsequent operations are via f*() APIs, which
+ take the open file handle, and in particular fchmod() will put the
+ bits back to something sensible.
+
+ However, when running atop, for example, fuse-style filesystems which do
+ not keep open descriptors to underlying files, this is catastrophic:
+ the underlying file will have I_SRWXU of zero, and so the filesystem
+ server will be unable to open the file for the fchmod() and that's
+ the end of that."
+
+ "fuse-overlayfs" is an example of a filesystem with such issues.
+ This change was made in commit 5156c19b23c41f438bf8658e1b9a43a5ff136835
+ and was released in sed 4.2.1.
+
+ * NEWS: Mention change.
+ * sed/utils.c (ck_mkstemp): Set correct umask.
+
+2019-06-02 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: inplace-selinux.sh: skip if SELinux is not supported
+ Avoid false-positive failure on system with SELinux enabled when SED
+ is built without SELinux suppport.
+
+ Reported by Jeffrey Walton <noloader@gmail.com> in
+ https://bugs.gnu.org/35997 .
+
+ * testsuite/inplace-selinux.sh: Call 'sed --version' to check if sed
+ was built with SELinux support before continuing with the test.
+
+2019-06-02 Assaf Gordon <assafgordon@gmail.com>
+
+ sed: report SELinux status in --version output
+ Report whether sed was built with SELinux support (determined at compile
+ time), and whether it is enabled on this system (determined at runtime).
+
+ Relates to https://bugs.gnu.org/35997 .
+
+ * sed/sed.c (selinux_support): New function, print SELinux status to
+ stdout. (main): Call selinux_support on --version.
+
+2019-01-20 Jim Meyering <meyering@fb.com>
+
+ build: ensure no VLA is used
+ Cause developer builds to fail for any use of a VLA.
+ VLAs (variable length arrays) limit portability.
+ * configure.ac (nw): Remove -Wvla from the list of disabled warnings,
+ thus enabling the warning when configured with --enable-gcc-warnings.
+ (GNULIB_NO_VLA) Define, disabling use of VLAs in gnulib. This commit
+ is functionally equivalent to coreutils' v8.30-44-gd26dece5d.
+
+ build: update gnulib to latest
+
+2019-01-01 Jim Meyering <meyering@fb.com>
+
+ build: update gnulib to latest
+
+2019-01-01 Assaf Gordon <assafgordon@gmail.com>
+
+ maint: update copyright dates for 2019
+ * all files: Run "make update-copyright".
+
2018-12-20 Jim Meyering <meyering@fb.com>
+ maint: use https: in gnu mirror URL prefix, not http
+ This appears in the generated release announcement message.
+ * cfg.mk (url_dir_list): Use https: prefix, not http:.
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
version 4.7
* NEWS: Record release date.
diff --git a/GNUmakefile b/GNUmakefile
index 7ee0965..bf05269 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -5,7 +5,7 @@
# It is necessary if you want to build targets usually of interest
# only to the maintainer.
-# Copyright (C) 2001, 2003, 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2006-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/Makefile.am b/Makefile.am
index 0bf4d34..d2f47da 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright (C) 1990-2018 Free Software Foundation, Inc.
+# Copyright (C) 1990-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/Makefile.in b/Makefile.in
index ab1e6f3..6925a4a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16a from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,7 @@
@SET_MAKE@
-# Copyright (C) 1990-2018 Free Software Foundation, Inc.
+# Copyright (C) 1990-2020 Free Software Foundation, Inc.
# This 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 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
-# Copyright 1997-2018 Free Software Foundation, Inc.
+# Copyright 1997-2020 Free Software Foundation, Inc.
#
# This 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,7 +45,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 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
@@ -106,6 +106,7 @@
# mkostemp \
# non-recursive-gnulib-prefix-hack \
# obstack \
+# perl \
# progname \
# readme-release \
# regex \
@@ -117,7 +118,6 @@
# stdbool \
# strerror \
# strverscmp \
-# threadlib \
# unlocked-io \
# update-copyright \
# verify \
@@ -126,7 +126,7 @@
# wctob \
# xalloc
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -141,7 +141,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/>.
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -156,7 +156,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/>.
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -263,12 +263,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/arpa_inet_h.m4 \
$(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
$(top_srcdir)/m4/builtin-expect.m4 \
- $(top_srcdir)/m4/canonicalize.m4 \
- $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
- $(top_srcdir)/m4/closedir.m4 $(top_srcdir)/m4/closeout.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/ctype.m4 \
- $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \
- $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/close.m4 \
+ $(top_srcdir)/m4/closedir.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/ctype.m4 $(top_srcdir)/m4/dirent_h.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
$(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
@@ -287,8 +285,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/getprogname.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
$(top_srcdir)/m4/gnulib-common.m4 \
- $(top_srcdir)/m4/gnulib-comp.m4 \
- $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
$(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inet_pton.m4 \
$(top_srcdir)/m4/intl-thread-locale.m4 \
$(top_srcdir)/m4/intlmacosx.m4 \
@@ -303,36 +300,41 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \
$(top_srcdir)/m4/localeconv.m4 $(top_srcdir)/m4/localename.m4 \
$(top_srcdir)/m4/localtime-buffer.m4 $(top_srcdir)/m4/lock.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
- $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
- $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
- $(top_srcdir)/m4/mbrlen.m4 $(top_srcdir)/m4/mbrtowc.m4 \
- $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
- $(top_srcdir)/m4/mbtowc.m4 $(top_srcdir)/m4/memchr.m4 \
- $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/minmax.m4 \
- $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkostemp.m4 \
- $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/mode_t.m4 \
- $(top_srcdir)/m4/msvc-inval.m4 \
+ $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+ $(top_srcdir)/m4/manywarnings.m4 $(top_srcdir)/m4/mbrlen.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memrchr.m4 \
+ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \
+ $(top_srcdir)/m4/mkostemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
$(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
$(top_srcdir)/m4/nanosleep.m4 $(top_srcdir)/m4/netinet_in_h.m4 \
$(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/nocrash.m4 \
$(top_srcdir)/m4/non-recursive-gnulib-prefix-hack.m4 \
$(top_srcdir)/m4/obstack.m4 $(top_srcdir)/m4/off_t.m4 \
- $(top_srcdir)/m4/open-cloexec.m4 $(top_srcdir)/m4/open.m4 \
+ $(top_srcdir)/m4/open-cloexec.m4 \
+ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \
$(top_srcdir)/m4/opendir.m4 $(top_srcdir)/m4/pathmax.m4 \
- $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/perror.m4 \
+ $(top_srcdir)/m4/pipe.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/pthread-thread.m4 \
+ $(top_srcdir)/m4/pthread_h.m4 \
$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
- $(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quote.m4 \
- $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \
- $(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/readdir.m4 \
- $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
- $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
- $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/select.m4 \
+ $(top_srcdir)/m4/pthread_sigmask.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/raise.m4 $(top_srcdir)/m4/read-file.m4 \
+ $(top_srcdir)/m4/readdir.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir.m4 \
+ $(top_srcdir)/m4/sched_h.m4 $(top_srcdir)/m4/select.m4 \
$(top_srcdir)/m4/selinux-context-h.m4 \
$(top_srcdir)/m4/selinux-selinux-h.m4 \
$(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+ $(top_srcdir)/m4/setlocale_null.m4 \
$(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \
$(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/sleep.m4 \
$(top_srcdir)/m4/socketlib.m4 $(top_srcdir)/m4/sockets.m4 \
@@ -350,10 +352,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
$(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/sys_uio_h.m4 \
- $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/threadlib.m4 \
- $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/ungetc.m4 \
- $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlocked-io.m4 \
- $(top_srcdir)/m4/version-etc.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/visibility.m4 \
$(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
$(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
@@ -398,11 +401,12 @@ am_lib_libsed_a_OBJECTS = lib/copy-acl.$(OBJEXT) lib/set-acl.$(OBJEXT) \
lib/malloca.$(OBJEXT) lib/progname.$(OBJEXT) \
lib/qcopy-acl.$(OBJEXT) lib/qset-acl.$(OBJEXT) \
lib/quotearg.$(OBJEXT) lib/se-context.$(OBJEXT) \
- lib/se-selinux.$(OBJEXT) lib/stat-time.$(OBJEXT) \
- lib/tempname.$(OBJEXT) lib/glthread/threadlib.$(OBJEXT) \
- lib/unistd.$(OBJEXT) lib/version-etc.$(OBJEXT) \
- lib/version-etc-fsf.$(OBJEXT) lib/wctype-h.$(OBJEXT) \
- lib/xmalloc.$(OBJEXT) lib/xalloc-die.$(OBJEXT)
+ lib/se-selinux.$(OBJEXT) lib/setlocale_null.$(OBJEXT) \
+ lib/stat-time.$(OBJEXT) lib/tempname.$(OBJEXT) \
+ lib/glthread/threadlib.$(OBJEXT) lib/unistd.$(OBJEXT) \
+ lib/version-etc.$(OBJEXT) lib/version-etc-fsf.$(OBJEXT) \
+ lib/wctype-h.$(OBJEXT) lib/xmalloc.$(OBJEXT) \
+ lib/xalloc-die.$(OBJEXT)
lib_libsed_a_OBJECTS = $(am_lib_libsed_a_OBJECTS)
sed_libver_a_AR = $(AR) $(ARFLAGS)
sed_libver_a_LIBADD =
@@ -454,12 +458,13 @@ am__depfiles_remade = lib/$(DEPDIR)/acl-errno-valid.Po \
lib/$(DEPDIR)/getfilecon.Po lib/$(DEPDIR)/getopt.Po \
lib/$(DEPDIR)/getopt1.Po lib/$(DEPDIR)/getprogname.Po \
lib/$(DEPDIR)/gettimeofday.Po lib/$(DEPDIR)/hard-locale.Po \
- lib/$(DEPDIR)/isblank.Po lib/$(DEPDIR)/localcharset.Po \
- lib/$(DEPDIR)/localeconv.Po lib/$(DEPDIR)/localeinfo.Po \
- lib/$(DEPDIR)/localtime-buffer.Po lib/$(DEPDIR)/lstat.Po \
- lib/$(DEPDIR)/malloc.Po lib/$(DEPDIR)/malloca.Po \
- lib/$(DEPDIR)/mbrlen.Po lib/$(DEPDIR)/mbrtowc.Po \
- lib/$(DEPDIR)/mbsinit.Po lib/$(DEPDIR)/mbtowc.Po \
+ lib/$(DEPDIR)/isblank.Po lib/$(DEPDIR)/lc-charset-dispatch.Po \
+ lib/$(DEPDIR)/localcharset.Po lib/$(DEPDIR)/localeconv.Po \
+ lib/$(DEPDIR)/localeinfo.Po lib/$(DEPDIR)/localtime-buffer.Po \
+ lib/$(DEPDIR)/lstat.Po lib/$(DEPDIR)/malloc.Po \
+ lib/$(DEPDIR)/malloca.Po lib/$(DEPDIR)/mbrlen.Po \
+ lib/$(DEPDIR)/mbrtowc.Po lib/$(DEPDIR)/mbsinit.Po \
+ lib/$(DEPDIR)/mbtowc-lock.Po lib/$(DEPDIR)/mbtowc.Po \
lib/$(DEPDIR)/memchr.Po lib/$(DEPDIR)/memrchr.Po \
lib/$(DEPDIR)/mkdir.Po lib/$(DEPDIR)/mkostemp.Po \
lib/$(DEPDIR)/msvc-inval.Po lib/$(DEPDIR)/msvc-nothrow.Po \
@@ -471,7 +476,9 @@ am__depfiles_remade = lib/$(DEPDIR)/acl-errno-valid.Po \
lib/$(DEPDIR)/regexec.Po lib/$(DEPDIR)/rename.Po \
lib/$(DEPDIR)/rmdir.Po lib/$(DEPDIR)/se-context.Po \
lib/$(DEPDIR)/se-selinux.Po lib/$(DEPDIR)/set-acl.Po \
- lib/$(DEPDIR)/set-permissions.Po lib/$(DEPDIR)/stat-time.Po \
+ lib/$(DEPDIR)/set-permissions.Po \
+ lib/$(DEPDIR)/setlocale-lock.Po \
+ lib/$(DEPDIR)/setlocale_null.Po lib/$(DEPDIR)/stat-time.Po \
lib/$(DEPDIR)/stat-w32.Po lib/$(DEPDIR)/stat.Po \
lib/$(DEPDIR)/strerror-override.Po lib/$(DEPDIR)/strerror.Po \
lib/$(DEPDIR)/stripslash.Po lib/$(DEPDIR)/strverscmp.Po \
@@ -479,8 +486,10 @@ am__depfiles_remade = lib/$(DEPDIR)/acl-errno-valid.Po \
lib/$(DEPDIR)/version-etc-fsf.Po lib/$(DEPDIR)/version-etc.Po \
lib/$(DEPDIR)/wcrtomb.Po lib/$(DEPDIR)/wctob.Po \
lib/$(DEPDIR)/wctomb.Po lib/$(DEPDIR)/wctype-h.Po \
- lib/$(DEPDIR)/xalloc-die.Po lib/$(DEPDIR)/xmalloc.Po \
- lib/glthread/$(DEPDIR)/lock.Po \
+ lib/$(DEPDIR)/windows-mutex.Po lib/$(DEPDIR)/windows-once.Po \
+ lib/$(DEPDIR)/windows-recmutex.Po \
+ lib/$(DEPDIR)/windows-rwlock.Po lib/$(DEPDIR)/xalloc-die.Po \
+ lib/$(DEPDIR)/xmalloc.Po lib/glthread/$(DEPDIR)/lock.Po \
lib/glthread/$(DEPDIR)/threadlib.Po \
sed/$(DEPDIR)/sed-compile.Po sed/$(DEPDIR)/sed-debug.Po \
sed/$(DEPDIR)/sed-execute.Po sed/$(DEPDIR)/sed-mbcs.Po \
@@ -605,8 +614,8 @@ am__recursive_targets = \
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope check recheck distdir distdir-am dist dist-all \
distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
- $(LISP)config_h.in
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+ config_h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
@@ -856,9 +865,9 @@ am__relativize = \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
GZIP_ENV = --best
-DIST_ARCHIVES = $(distdir).tar.xz
-DIST_TARGETS = dist-xz
+DIST_TARGETS = dist-xz dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -883,6 +892,7 @@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
CONFIG_INCLUDE = @CONFIG_INCLUDE@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
@@ -909,6 +919,7 @@ GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GNULIB_ACCEPT = @GNULIB_ACCEPT@
GNULIB_ACCEPT4 = @GNULIB_ACCEPT4@
+GNULIB_ACCESS = @GNULIB_ACCESS@
GNULIB_ALPHASORT = @GNULIB_ALPHASORT@
GNULIB_ATOLL = @GNULIB_ATOLL@
GNULIB_BIND = @GNULIB_BIND@
@@ -920,6 +931,8 @@ GNULIB_CHOWN = @GNULIB_CHOWN@
GNULIB_CLOSE = @GNULIB_CLOSE@
GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@
GNULIB_CONNECT = @GNULIB_CONNECT@
+GNULIB_COPY_FILE_RANGE = @GNULIB_COPY_FILE_RANGE@
+GNULIB_CREAT = @GNULIB_CREAT@
GNULIB_CTIME = @GNULIB_CTIME@
GNULIB_DIRFD = @GNULIB_DIRFD@
GNULIB_DPRINTF = @GNULIB_DPRINTF@
@@ -975,6 +988,7 @@ GNULIB_GETLINE = @GNULIB_GETLINE@
GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETOPT_POSIX = @GNULIB_GETOPT_POSIX@
GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
GNULIB_GETPASS = @GNULIB_GETPASS@
GNULIB_GETPEERNAME = @GNULIB_GETPEERNAME@
@@ -1061,7 +1075,15 @@ GNULIB_PREAD = @GNULIB_PREAD@
GNULIB_PRINTF = @GNULIB_PRINTF@
GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
GNULIB_PSELECT = @GNULIB_PSELECT@
+GNULIB_PTHREAD_COND = @GNULIB_PTHREAD_COND@
+GNULIB_PTHREAD_MUTEX = @GNULIB_PTHREAD_MUTEX@
+GNULIB_PTHREAD_MUTEX_TIMEDLOCK = @GNULIB_PTHREAD_MUTEX_TIMEDLOCK@
+GNULIB_PTHREAD_ONCE = @GNULIB_PTHREAD_ONCE@
+GNULIB_PTHREAD_RWLOCK = @GNULIB_PTHREAD_RWLOCK@
GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@
+GNULIB_PTHREAD_SPIN = @GNULIB_PTHREAD_SPIN@
+GNULIB_PTHREAD_THREAD = @GNULIB_PTHREAD_THREAD@
+GNULIB_PTHREAD_TSS = @GNULIB_PTHREAD_TSS@
GNULIB_PTSNAME = @GNULIB_PTSNAME@
GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@
GNULIB_PUTC = @GNULIB_PUTC@
@@ -1091,6 +1113,7 @@ GNULIB_RMDIR = @GNULIB_RMDIR@
GNULIB_RPMATCH = @GNULIB_RPMATCH@
GNULIB_SCANDIR = @GNULIB_SCANDIR@
GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SCHED_YIELD = @GNULIB_SCHED_YIELD@
GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
GNULIB_SELECT = @GNULIB_SELECT@
GNULIB_SEND = @GNULIB_SEND@
@@ -1098,6 +1121,7 @@ GNULIB_SENDTO = @GNULIB_SENDTO@
GNULIB_SETENV = @GNULIB_SETENV@
GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SETLOCALE_NULL = @GNULIB_SETLOCALE_NULL@
GNULIB_SETSOCKOPT = @GNULIB_SETSOCKOPT@
GNULIB_SHUTDOWN = @GNULIB_SHUTDOWN@
GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -1129,6 +1153,7 @@ GNULIB_STRSTR = @GNULIB_STRSTR@
GNULIB_STRTOD = @GNULIB_STRTOD@
GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLD = @GNULIB_STRTOLD@
GNULIB_STRTOLL = @GNULIB_STRTOLL@
GNULIB_STRTOULL = @GNULIB_STRTOULL@
GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
@@ -1204,6 +1229,7 @@ GNULIB_WRITE = @GNULIB_WRITE@
GNULIB__EXIT = @GNULIB__EXIT@
GREP = @GREP@
HAVE_ACCEPT4 = @HAVE_ACCEPT4@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
HAVE_ALPHASORT = @HAVE_ALPHASORT@
HAVE_ARPA_INET_H = @HAVE_ARPA_INET_H@
HAVE_ATOLL = @HAVE_ATOLL@
@@ -1212,6 +1238,7 @@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
HAVE_CHOWN = @HAVE_CHOWN@
HAVE_CLOSEDIR = @HAVE_CLOSEDIR@
+HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@
HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
@@ -1292,6 +1319,7 @@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
HAVE_GRANTPT = @HAVE_GRANTPT@
HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@
+HAVE_INITSTATE = @HAVE_INITSTATE@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_ISBLANK = @HAVE_ISBLANK@
HAVE_ISWBLANK = @HAVE_ISWBLANK@
@@ -1306,7 +1334,6 @@ HAVE_LCHMOD = @HAVE_LCHMOD@
HAVE_LCHOWN = @HAVE_LCHOWN@
HAVE_LINK = @HAVE_LINK@
HAVE_LINKAT = @HAVE_LINKAT@
-HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_LSTAT = @HAVE_LSTAT@
HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
HAVE_MBRLEN = @HAVE_MBRLEN@
@@ -1315,6 +1342,7 @@ HAVE_MBSINIT = @HAVE_MBSINIT@
HAVE_MBSLEN = @HAVE_MBSLEN@
HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MBTOWC = @HAVE_MBTOWC@
HAVE_MEMCHR = @HAVE_MEMCHR@
HAVE_MEMPCPY = @HAVE_MEMPCPY@
HAVE_MKDIRAT = @HAVE_MKDIRAT@
@@ -1343,7 +1371,65 @@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@
HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@
HAVE_PREAD = @HAVE_PREAD@
HAVE_PSELECT = @HAVE_PSELECT@
+HAVE_PTHREAD_ATTR_DESTROY = @HAVE_PTHREAD_ATTR_DESTROY@
+HAVE_PTHREAD_ATTR_GETDETACHSTATE = @HAVE_PTHREAD_ATTR_GETDETACHSTATE@
+HAVE_PTHREAD_ATTR_INIT = @HAVE_PTHREAD_ATTR_INIT@
+HAVE_PTHREAD_ATTR_SETDETACHSTATE = @HAVE_PTHREAD_ATTR_SETDETACHSTATE@
+HAVE_PTHREAD_CONDATTR_DESTROY = @HAVE_PTHREAD_CONDATTR_DESTROY@
+HAVE_PTHREAD_CONDATTR_INIT = @HAVE_PTHREAD_CONDATTR_INIT@
+HAVE_PTHREAD_COND_BROADCAST = @HAVE_PTHREAD_COND_BROADCAST@
+HAVE_PTHREAD_COND_DESTROY = @HAVE_PTHREAD_COND_DESTROY@
+HAVE_PTHREAD_COND_INIT = @HAVE_PTHREAD_COND_INIT@
+HAVE_PTHREAD_COND_SIGNAL = @HAVE_PTHREAD_COND_SIGNAL@
+HAVE_PTHREAD_COND_TIMEDWAIT = @HAVE_PTHREAD_COND_TIMEDWAIT@
+HAVE_PTHREAD_COND_WAIT = @HAVE_PTHREAD_COND_WAIT@
+HAVE_PTHREAD_CREATE = @HAVE_PTHREAD_CREATE@
+HAVE_PTHREAD_CREATE_DETACHED = @HAVE_PTHREAD_CREATE_DETACHED@
+HAVE_PTHREAD_DETACH = @HAVE_PTHREAD_DETACH@
+HAVE_PTHREAD_EQUAL = @HAVE_PTHREAD_EQUAL@
+HAVE_PTHREAD_EXIT = @HAVE_PTHREAD_EXIT@
+HAVE_PTHREAD_GETSPECIFIC = @HAVE_PTHREAD_GETSPECIFIC@
+HAVE_PTHREAD_H = @HAVE_PTHREAD_H@
+HAVE_PTHREAD_JOIN = @HAVE_PTHREAD_JOIN@
+HAVE_PTHREAD_KEY_CREATE = @HAVE_PTHREAD_KEY_CREATE@
+HAVE_PTHREAD_KEY_DELETE = @HAVE_PTHREAD_KEY_DELETE@
+HAVE_PTHREAD_MUTEXATTR_DESTROY = @HAVE_PTHREAD_MUTEXATTR_DESTROY@
+HAVE_PTHREAD_MUTEXATTR_GETROBUST = @HAVE_PTHREAD_MUTEXATTR_GETROBUST@
+HAVE_PTHREAD_MUTEXATTR_GETTYPE = @HAVE_PTHREAD_MUTEXATTR_GETTYPE@
+HAVE_PTHREAD_MUTEXATTR_INIT = @HAVE_PTHREAD_MUTEXATTR_INIT@
+HAVE_PTHREAD_MUTEXATTR_SETROBUST = @HAVE_PTHREAD_MUTEXATTR_SETROBUST@
+HAVE_PTHREAD_MUTEXATTR_SETTYPE = @HAVE_PTHREAD_MUTEXATTR_SETTYPE@
+HAVE_PTHREAD_MUTEX_DESTROY = @HAVE_PTHREAD_MUTEX_DESTROY@
+HAVE_PTHREAD_MUTEX_INIT = @HAVE_PTHREAD_MUTEX_INIT@
+HAVE_PTHREAD_MUTEX_LOCK = @HAVE_PTHREAD_MUTEX_LOCK@
+HAVE_PTHREAD_MUTEX_RECURSIVE = @HAVE_PTHREAD_MUTEX_RECURSIVE@
+HAVE_PTHREAD_MUTEX_ROBUST = @HAVE_PTHREAD_MUTEX_ROBUST@
+HAVE_PTHREAD_MUTEX_TIMEDLOCK = @HAVE_PTHREAD_MUTEX_TIMEDLOCK@
+HAVE_PTHREAD_MUTEX_TRYLOCK = @HAVE_PTHREAD_MUTEX_TRYLOCK@
+HAVE_PTHREAD_MUTEX_UNLOCK = @HAVE_PTHREAD_MUTEX_UNLOCK@
+HAVE_PTHREAD_ONCE = @HAVE_PTHREAD_ONCE@
+HAVE_PTHREAD_PROCESS_SHARED = @HAVE_PTHREAD_PROCESS_SHARED@
+HAVE_PTHREAD_RWLOCKATTR_DESTROY = @HAVE_PTHREAD_RWLOCKATTR_DESTROY@
+HAVE_PTHREAD_RWLOCKATTR_INIT = @HAVE_PTHREAD_RWLOCKATTR_INIT@
+HAVE_PTHREAD_RWLOCK_DESTROY = @HAVE_PTHREAD_RWLOCK_DESTROY@
+HAVE_PTHREAD_RWLOCK_INIT = @HAVE_PTHREAD_RWLOCK_INIT@
+HAVE_PTHREAD_RWLOCK_RDLOCK = @HAVE_PTHREAD_RWLOCK_RDLOCK@
+HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK = @HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK@
+HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK = @HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK@
+HAVE_PTHREAD_RWLOCK_TRYRDLOCK = @HAVE_PTHREAD_RWLOCK_TRYRDLOCK@
+HAVE_PTHREAD_RWLOCK_TRYWRLOCK = @HAVE_PTHREAD_RWLOCK_TRYWRLOCK@
+HAVE_PTHREAD_RWLOCK_UNLOCK = @HAVE_PTHREAD_RWLOCK_UNLOCK@
+HAVE_PTHREAD_RWLOCK_WRLOCK = @HAVE_PTHREAD_RWLOCK_WRLOCK@
+HAVE_PTHREAD_SELF = @HAVE_PTHREAD_SELF@
+HAVE_PTHREAD_SETSPECIFIC = @HAVE_PTHREAD_SETSPECIFIC@
HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@
+HAVE_PTHREAD_SPINLOCK_T = @HAVE_PTHREAD_SPINLOCK_T@
+HAVE_PTHREAD_SPIN_DESTROY = @HAVE_PTHREAD_SPIN_DESTROY@
+HAVE_PTHREAD_SPIN_INIT = @HAVE_PTHREAD_SPIN_INIT@
+HAVE_PTHREAD_SPIN_LOCK = @HAVE_PTHREAD_SPIN_LOCK@
+HAVE_PTHREAD_SPIN_TRYLOCK = @HAVE_PTHREAD_SPIN_TRYLOCK@
+HAVE_PTHREAD_SPIN_UNLOCK = @HAVE_PTHREAD_SPIN_UNLOCK@
+HAVE_PTHREAD_T = @HAVE_PTHREAD_T@
HAVE_PTSNAME = @HAVE_PTSNAME@
HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
HAVE_PWRITE = @HAVE_PWRITE@
@@ -1363,9 +1449,12 @@ HAVE_REWINDDIR = @HAVE_REWINDDIR@
HAVE_RPMATCH = @HAVE_RPMATCH@
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
HAVE_SCANDIR = @HAVE_SCANDIR@
+HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SCHED_YIELD = @HAVE_SCHED_YIELD@
HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
HAVE_SETENV = @HAVE_SETENV@
HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
+HAVE_SETSTATE = @HAVE_SETSTATE@
HAVE_SIGACTION = @HAVE_SIGACTION@
HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@
HAVE_SIGINFO_T = @HAVE_SIGINFO_T@
@@ -1383,9 +1472,11 @@ HAVE_STRPBRK = @HAVE_STRPBRK@
HAVE_STRPTIME = @HAVE_STRPTIME@
HAVE_STRSEP = @HAVE_STRSEP@
HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLD = @HAVE_STRTOLD@
HAVE_STRTOLL = @HAVE_STRTOLL@
HAVE_STRTOULL = @HAVE_STRTOULL@
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@
HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@
HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@
@@ -1411,11 +1502,11 @@ HAVE_TZSET = @HAVE_TZSET@
HAVE_UNISTD_H = @HAVE_UNISTD_H@
HAVE_UNLINKAT = @HAVE_UNLINKAT@
HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
-HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_USLEEP = @HAVE_USLEEP@
HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
HAVE_VASPRINTF = @HAVE_VASPRINTF@
HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
HAVE_WCPCPY = @HAVE_WCPCPY@
@@ -1476,19 +1567,28 @@ LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBMULTITHREAD = @LIBMULTITHREAD@
LIBOBJS = @LIBOBJS@
-LIBPTH = @LIBPTH@
-LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBPMULTITHREAD = @LIBPMULTITHREAD@
+LIBPTHREAD = @LIBPTHREAD@
LIBS = @LIBS@
LIBSED_LIBDEPS = @LIBSED_LIBDEPS@
LIBSED_LTLIBDEPS = @LIBSED_LTLIBDEPS@
LIBSOCKET = @LIBSOCKET@
+LIBSTDTHREAD = @LIBSTDTHREAD@
LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
LIBTHREAD = @LIBTHREAD@
LIB_ACL = @LIB_ACL@
+LIB_HARD_LOCALE = @LIB_HARD_LOCALE@
LIB_HAS_ACL = @LIB_HAS_ACL@
+LIB_MBRTOWC = @LIB_MBRTOWC@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LIB_NL_LANGINFO = @LIB_NL_LANGINFO@
+LIB_PTHREAD = @LIB_PTHREAD@
+LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
+LIB_SCHED_YIELD = @LIB_SCHED_YIELD@
LIB_SELECT = @LIB_SELECT@
LIB_SELINUX = @LIB_SELINUX@
+LIB_SETLOCALE = @LIB_SETLOCALE@
+LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@
LIMITS_H = @LIMITS_H@
LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
LOCALE_FR = @LOCALE_FR@
@@ -1500,7 +1600,6 @@ LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
LTLIBOBJS = @LTLIBOBJS@
-LTLIBPTH = @LTLIBPTH@
LTLIBTHREAD = @LTLIBTHREAD@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
@@ -1520,6 +1619,8 @@ NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@
+NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H = @NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H@
+NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@
NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H = @NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H@
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
@@ -1549,6 +1650,8 @@ NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
NEXT_LIMITS_H = @NEXT_LIMITS_H@
NEXT_LOCALE_H = @NEXT_LOCALE_H@
NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@
+NEXT_PTHREAD_H = @NEXT_PTHREAD_H@
+NEXT_SCHED_H = @NEXT_SCHED_H@
NEXT_SELINUX_SELINUX_H = @NEXT_SELINUX_SELINUX_H@
NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
NEXT_STDARG_H = @NEXT_STDARG_H@
@@ -1586,12 +1689,14 @@ PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
+REPLACE_ACCESS = @REPLACE_ACCESS@
REPLACE_BTOWC = @REPLACE_BTOWC@
REPLACE_CALLOC = @REPLACE_CALLOC@
REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
REPLACE_CHOWN = @REPLACE_CHOWN@
REPLACE_CLOSE = @REPLACE_CLOSE@
REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_CREAT = @REPLACE_CREAT@
REPLACE_CTIME = @REPLACE_CTIME@
REPLACE_DIRFD = @REPLACE_DIRFD@
REPLACE_DPRINTF = @REPLACE_DPRINTF@
@@ -1631,6 +1736,7 @@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
REPLACE_GMTIME = @REPLACE_GMTIME@
REPLACE_INET_NTOP = @REPLACE_INET_NTOP@
REPLACE_INET_PTON = @REPLACE_INET_PTON@
+REPLACE_INITSTATE = @REPLACE_INITSTATE@
REPLACE_IOCTL = @REPLACE_IOCTL@
REPLACE_ISATTY = @REPLACE_ISATTY@
REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
@@ -1671,13 +1777,65 @@ REPLACE_POPEN = @REPLACE_POPEN@
REPLACE_PREAD = @REPLACE_PREAD@
REPLACE_PRINTF = @REPLACE_PRINTF@
REPLACE_PSELECT = @REPLACE_PSELECT@
+REPLACE_PTHREAD_ATTR_DESTROY = @REPLACE_PTHREAD_ATTR_DESTROY@
+REPLACE_PTHREAD_ATTR_GETDETACHSTATE = @REPLACE_PTHREAD_ATTR_GETDETACHSTATE@
+REPLACE_PTHREAD_ATTR_INIT = @REPLACE_PTHREAD_ATTR_INIT@
+REPLACE_PTHREAD_ATTR_SETDETACHSTATE = @REPLACE_PTHREAD_ATTR_SETDETACHSTATE@
+REPLACE_PTHREAD_CONDATTR_DESTROY = @REPLACE_PTHREAD_CONDATTR_DESTROY@
+REPLACE_PTHREAD_CONDATTR_INIT = @REPLACE_PTHREAD_CONDATTR_INIT@
+REPLACE_PTHREAD_COND_BROADCAST = @REPLACE_PTHREAD_COND_BROADCAST@
+REPLACE_PTHREAD_COND_DESTROY = @REPLACE_PTHREAD_COND_DESTROY@
+REPLACE_PTHREAD_COND_INIT = @REPLACE_PTHREAD_COND_INIT@
+REPLACE_PTHREAD_COND_SIGNAL = @REPLACE_PTHREAD_COND_SIGNAL@
+REPLACE_PTHREAD_COND_TIMEDWAIT = @REPLACE_PTHREAD_COND_TIMEDWAIT@
+REPLACE_PTHREAD_COND_WAIT = @REPLACE_PTHREAD_COND_WAIT@
+REPLACE_PTHREAD_CREATE = @REPLACE_PTHREAD_CREATE@
+REPLACE_PTHREAD_DETACH = @REPLACE_PTHREAD_DETACH@
+REPLACE_PTHREAD_EQUAL = @REPLACE_PTHREAD_EQUAL@
+REPLACE_PTHREAD_EXIT = @REPLACE_PTHREAD_EXIT@
+REPLACE_PTHREAD_GETSPECIFIC = @REPLACE_PTHREAD_GETSPECIFIC@
+REPLACE_PTHREAD_JOIN = @REPLACE_PTHREAD_JOIN@
+REPLACE_PTHREAD_KEY_CREATE = @REPLACE_PTHREAD_KEY_CREATE@
+REPLACE_PTHREAD_KEY_DELETE = @REPLACE_PTHREAD_KEY_DELETE@
+REPLACE_PTHREAD_MUTEXATTR_DESTROY = @REPLACE_PTHREAD_MUTEXATTR_DESTROY@
+REPLACE_PTHREAD_MUTEXATTR_GETROBUST = @REPLACE_PTHREAD_MUTEXATTR_GETROBUST@
+REPLACE_PTHREAD_MUTEXATTR_GETTYPE = @REPLACE_PTHREAD_MUTEXATTR_GETTYPE@
+REPLACE_PTHREAD_MUTEXATTR_INIT = @REPLACE_PTHREAD_MUTEXATTR_INIT@
+REPLACE_PTHREAD_MUTEXATTR_SETROBUST = @REPLACE_PTHREAD_MUTEXATTR_SETROBUST@
+REPLACE_PTHREAD_MUTEXATTR_SETTYPE = @REPLACE_PTHREAD_MUTEXATTR_SETTYPE@
+REPLACE_PTHREAD_MUTEX_DESTROY = @REPLACE_PTHREAD_MUTEX_DESTROY@
+REPLACE_PTHREAD_MUTEX_INIT = @REPLACE_PTHREAD_MUTEX_INIT@
+REPLACE_PTHREAD_MUTEX_LOCK = @REPLACE_PTHREAD_MUTEX_LOCK@
+REPLACE_PTHREAD_MUTEX_TIMEDLOCK = @REPLACE_PTHREAD_MUTEX_TIMEDLOCK@
+REPLACE_PTHREAD_MUTEX_TRYLOCK = @REPLACE_PTHREAD_MUTEX_TRYLOCK@
+REPLACE_PTHREAD_MUTEX_UNLOCK = @REPLACE_PTHREAD_MUTEX_UNLOCK@
+REPLACE_PTHREAD_ONCE = @REPLACE_PTHREAD_ONCE@
+REPLACE_PTHREAD_RWLOCKATTR_DESTROY = @REPLACE_PTHREAD_RWLOCKATTR_DESTROY@
+REPLACE_PTHREAD_RWLOCKATTR_INIT = @REPLACE_PTHREAD_RWLOCKATTR_INIT@
+REPLACE_PTHREAD_RWLOCK_DESTROY = @REPLACE_PTHREAD_RWLOCK_DESTROY@
+REPLACE_PTHREAD_RWLOCK_INIT = @REPLACE_PTHREAD_RWLOCK_INIT@
+REPLACE_PTHREAD_RWLOCK_RDLOCK = @REPLACE_PTHREAD_RWLOCK_RDLOCK@
+REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK = @REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK@
+REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK = @REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK@
+REPLACE_PTHREAD_RWLOCK_TRYRDLOCK = @REPLACE_PTHREAD_RWLOCK_TRYRDLOCK@
+REPLACE_PTHREAD_RWLOCK_TRYWRLOCK = @REPLACE_PTHREAD_RWLOCK_TRYWRLOCK@
+REPLACE_PTHREAD_RWLOCK_UNLOCK = @REPLACE_PTHREAD_RWLOCK_UNLOCK@
+REPLACE_PTHREAD_RWLOCK_WRLOCK = @REPLACE_PTHREAD_RWLOCK_WRLOCK@
+REPLACE_PTHREAD_SELF = @REPLACE_PTHREAD_SELF@
+REPLACE_PTHREAD_SETSPECIFIC = @REPLACE_PTHREAD_SETSPECIFIC@
REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTHREAD_SPIN_DESTROY = @REPLACE_PTHREAD_SPIN_DESTROY@
+REPLACE_PTHREAD_SPIN_INIT = @REPLACE_PTHREAD_SPIN_INIT@
+REPLACE_PTHREAD_SPIN_LOCK = @REPLACE_PTHREAD_SPIN_LOCK@
+REPLACE_PTHREAD_SPIN_TRYLOCK = @REPLACE_PTHREAD_SPIN_TRYLOCK@
+REPLACE_PTHREAD_SPIN_UNLOCK = @REPLACE_PTHREAD_SPIN_UNLOCK@
REPLACE_PTSNAME = @REPLACE_PTSNAME@
REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
REPLACE_PUTENV = @REPLACE_PUTENV@
REPLACE_PWRITE = @REPLACE_PWRITE@
REPLACE_QSORT_R = @REPLACE_QSORT_R@
REPLACE_RAISE = @REPLACE_RAISE@
+REPLACE_RANDOM = @REPLACE_RANDOM@
REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
REPLACE_READ = @REPLACE_READ@
REPLACE_READLINK = @REPLACE_READLINK@
@@ -1688,9 +1846,11 @@ REPLACE_REMOVE = @REPLACE_REMOVE@
REPLACE_RENAME = @REPLACE_RENAME@
REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SCHED_YIELD = @REPLACE_SCHED_YIELD@
REPLACE_SELECT = @REPLACE_SELECT@
REPLACE_SETENV = @REPLACE_SETENV@
REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SETSTATE = @REPLACE_SETSTATE@
REPLACE_SLEEP = @REPLACE_SLEEP@
REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
REPLACE_SPRINTF = @REPLACE_SPRINTF@
@@ -1712,6 +1872,7 @@ REPLACE_STRSTR = @REPLACE_STRSTR@
REPLACE_STRTOD = @REPLACE_STRTOD@
REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_STRTOLD = @REPLACE_STRTOLD@
REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@
REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@
REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@
@@ -1738,6 +1899,7 @@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
REPLACE_WCSFTIME = @REPLACE_WCSFTIME@
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSTOK = @REPLACE_WCSTOK@
REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
REPLACE_WCTOB = @REPLACE_WCTOB@
REPLACE_WCTOMB = @REPLACE_WCTOMB@
@@ -1847,8 +2009,8 @@ AM_CPPFLAGS = -I$(top_srcdir) \
AM_CFLAGS =
BUILT_SOURCES = .version $(ALLOCA_H) lib/ctype.h $(ERRNO_H) \
- lib/fcntl.h $(GETOPT_H) $(GETOPT_CDEFS_H) lib/langinfo.h \
- $(LIMITS_H) lib/locale.h lib/selinux/selinux.h \
+ lib/fcntl.h $(GETOPT_H) $(GETOPT_CDEFS_H) lib/inttypes.h \
+ lib/langinfo.h $(LIMITS_H) lib/locale.h lib/selinux/selinux.h \
$(SELINUX_CONTEXT_H) $(STDALIGN_H) $(STDARG_H) $(STDBOOL_H) \
$(STDDEF_H) $(STDINT_H) lib/stdio.h lib/stdlib.h lib/string.h \
lib/sys/stat.h lib/sys/time.h lib/sys/types.h lib/time.h \
@@ -1865,33 +2027,37 @@ EXTRA_DIST = BUGS THANKS.in .version .mailmap ChangeLog-2014 \
lib/dirname.h \
$(top_srcdir)/build-aux/do-release-commit-and-tag \
lib/dosname.h lib/errno.in.h lib/error.c lib/error.h \
- lib/exitfail.h lib/fcntl.in.h lib/filename.h lib/fpending.c \
- lib/fpending.h lib/stdio-impl.h lib/fstat.c lib/stat-w32.c \
- lib/stat-w32.h lib/fwriting.c lib/fwriting.h lib/stdio-impl.h \
- $(top_srcdir)/build-aux/gendocs.sh lib/getdelim.c \
- lib/getopt-cdefs.in.h lib/getopt-core.h lib/getopt-ext.h \
- lib/getopt-pfx-core.h lib/getopt-pfx-ext.h lib/getopt.c \
- lib/getopt.in.h lib/getopt1.c lib/getopt_int.h \
+ lib/exitfail.h lib/fcntl.in.h lib/filename.h lib/flexmember.h \
+ lib/fpending.c lib/fpending.h lib/stdio-impl.h lib/fstat.c \
+ lib/stat-w32.c lib/stat-w32.h lib/fwriting.c lib/fwriting.h \
+ lib/stdio-impl.h $(top_srcdir)/build-aux/gendocs.sh \
+ lib/getdelim.c lib/getopt-cdefs.in.h lib/getopt-core.h \
+ lib/getopt-ext.h lib/getopt-pfx-core.h lib/getopt-pfx-ext.h \
+ lib/getopt.c lib/getopt.in.h lib/getopt1.c lib/getopt_int.h \
lib/gettimeofday.c $(top_srcdir)/build-aux/git-version-gen \
$(top_srcdir)/build-aux/gitlog-to-changelog \
$(top_srcdir)/build-aux/gnu-web-doc-update \
$(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \
- lib/hard-locale.h $(top_srcdir)/build-aux/config.rpath \
- lib/ignore-value.h lib/intprops.h lib/isblank.c \
- lib/langinfo.in.h lib/cdefs.h lib/libc-config.h \
- lib/limits.in.h lib/localcharset.h lib/locale.in.h \
- lib/localeconv.c lib/localtime-buffer.c lib/localtime-buffer.h \
- lib/lstat.c $(top_srcdir)/maint.mk lib/malloc.c lib/malloca.h \
- lib/mbrlen.c lib/mbrtowc.c lib/mbsinit.c lib/mbtowc-impl.h \
- lib/mbtowc.c lib/memchr.c lib/memchr.valgrind lib/memrchr.c \
- lib/mkdir.c lib/mkostemp.c lib/msvc-inval.c lib/msvc-inval.h \
- lib/msvc-nothrow.c lib/msvc-nothrow.h lib/nl_langinfo.c \
+ lib/hard-locale.h lib/ignore-value.h lib/intprops.h \
+ lib/inttypes.in.h lib/isblank.c lib/langinfo.in.h lib/cdefs.h \
+ lib/libc-config.h lib/limits.in.h lib/localcharset.h \
+ lib/locale.in.h lib/localeconv.c lib/localtime-buffer.c \
+ lib/localtime-buffer.h lib/lstat.c $(top_srcdir)/maint.mk \
+ lib/malloc.c lib/malloca.h lib/mbrlen.c \
+ lib/lc-charset-dispatch.c lib/lc-charset-dispatch.h \
+ lib/mbrtowc-impl-utf8.h lib/mbrtowc-impl.h lib/mbrtowc.c \
+ lib/mbtowc-lock.c lib/mbtowc-lock.h lib/windows-initguard.h \
+ lib/mbsinit.c lib/mbtowc-impl.h lib/mbtowc.c lib/memchr.c \
+ lib/memchr.valgrind lib/memrchr.c lib/mkdir.c lib/mkostemp.c \
+ lib/msvc-inval.c lib/msvc-inval.h lib/msvc-nothrow.c \
+ lib/msvc-nothrow.h lib/nl_langinfo.c \
$(top_srcdir)/build-aux/prefix-gnulib-mk lib/obstack.c \
lib/obstack.h lib/pathmax.h lib/quote.h lib/quote.h \
lib/quotearg.h lib/readlink.c lib/regcomp.c lib/regex.c \
lib/regex.h lib/regex_internal.c lib/regex_internal.h \
lib/regexec.c lib/rename.c lib/rmdir.c lib/same-inode.h \
- lib/getfilecon.c lib/_Noreturn.h lib/arg-nonnull.h \
+ lib/getfilecon.c lib/setlocale-lock.c lib/setlocale_null.h \
+ lib/windows-initguard.h lib/_Noreturn.h lib/arg-nonnull.h \
lib/c++defs.h lib/unused-parameter.h lib/warn-on-use.h \
lib/stat-w32.c lib/stat-w32.h lib/stat.c lib/stat-macros.h \
lib/stat-time.h lib/stdalign.in.h lib/stdarg.in.h \
@@ -1900,23 +2066,27 @@ EXTRA_DIST = BUGS THANKS.in .version .mailmap ChangeLog-2014 \
lib/strerror-override.c lib/strerror-override.h \
lib/string.in.h lib/strverscmp.c lib/sys_stat.in.h \
lib/sys_time.in.h lib/sys_types.in.h lib/tempname.h \
- $(top_srcdir)/build-aux/config.rpath lib/time.in.h \
- lib/unistd.in.h lib/unlocked-io.h \
+ lib/time.in.h lib/unistd.in.h lib/unlocked-io.h \
$(top_srcdir)/build-aux/update-copyright \
$(top_srcdir)/build-aux/useless-if-before-free \
$(top_srcdir)/build-aux/vc-list-files lib/verify.h \
lib/wchar.in.h lib/wcrtomb.c lib/wctob.c lib/wctomb-impl.h \
- lib/wctomb.c lib/wctype.in.h lib/xalloc.h \
- lib/xalloc-oversized.h $(T) testsuite/Coreutils.pm \
- testsuite/CuSkip.pm testsuite/CuTmpdir.pm testsuite/init.sh \
- init.cfg testsuite/envvar-check testsuite/PCRE.tests \
+ lib/wctomb.c lib/wctype.in.h lib/windows-initguard.h \
+ lib/windows-mutex.c lib/windows-mutex.h lib/windows-once.c \
+ lib/windows-once.h lib/windows-initguard.h \
+ lib/windows-recmutex.c lib/windows-recmutex.h \
+ lib/windows-initguard.h lib/windows-rwlock.c \
+ lib/windows-rwlock.h lib/xalloc.h lib/xalloc-oversized.h $(T) \
+ testsuite/Coreutils.pm testsuite/CuSkip.pm \
+ testsuite/CuTmpdir.pm testsuite/init.sh init.cfg \
+ testsuite/envvar-check testsuite/PCRE.tests \
testsuite/BOOST.tests testsuite/SPENCER.tests \
testsuite/8bit.good testsuite/8bit.inp testsuite/binary.sed \
testsuite/binary2.sed testsuite/binary3.sed testsuite/bsd.good \
testsuite/bsd.sh testsuite/dc.sed testsuite/distrib.inp \
testsuite/mac-mf.good testsuite/mac-mf.inp \
testsuite/mac-mf.sed testsuite/madding.good \
- testsuite/madding.inp testsuite/madding.sed \
+ testsuite/madding.inp testsuite/madding.sed testsuite/no-perl \
testsuite/uniq.good testsuite/uniq.inp testsuite/uniq.sed \
testsuite/xemacs.good testsuite/xemacs.inp
MAINTAINERCLEANFILES =
@@ -1925,18 +2095,18 @@ MOSTLYCLEANFILES = lib/core lib/*.stackdump lib/alloca.h \
lib/alloca.h-t lib/ctype.h lib/ctype.h-t lib/errno.h \
lib/errno.h-t lib/fcntl.h lib/fcntl.h-t lib/getopt.h \
lib/getopt.h-t lib/getopt-cdefs.h lib/getopt-cdefs.h-t \
- lib/langinfo.h lib/langinfo.h-t lib/limits.h lib/limits.h-t \
- lib/locale.h lib/locale.h-t lib/selinux/selinux.h \
- lib/selinux/selinux.h-t lib/selinux/context.h \
- lib/selinux/context.h-t lib/stdalign.h lib/stdalign.h-t \
- lib/stdarg.h lib/stdarg.h-t lib/stdbool.h lib/stdbool.h-t \
- lib/stddef.h lib/stddef.h-t lib/stdint.h lib/stdint.h-t \
- lib/stdio.h lib/stdio.h-t lib/stdlib.h lib/stdlib.h-t \
- lib/string.h lib/string.h-t lib/sys/stat.h lib/sys/stat.h-t \
- lib/sys/time.h lib/sys/time.h-t lib/sys/types.h \
- lib/sys/types.h-t lib/time.h lib/time.h-t lib/unistd.h \
- lib/unistd.h-t lib/wchar.h lib/wchar.h-t lib/wctype.h \
- lib/wctype.h-t
+ lib/inttypes.h lib/inttypes.h-t lib/langinfo.h \
+ lib/langinfo.h-t lib/limits.h lib/limits.h-t lib/locale.h \
+ lib/locale.h-t lib/selinux/selinux.h lib/selinux/selinux.h-t \
+ lib/selinux/context.h lib/selinux/context.h-t lib/stdalign.h \
+ lib/stdalign.h-t lib/stdarg.h lib/stdarg.h-t lib/stdbool.h \
+ lib/stdbool.h-t lib/stddef.h lib/stddef.h-t lib/stdint.h \
+ lib/stdint.h-t lib/stdio.h lib/stdio.h-t lib/stdlib.h \
+ lib/stdlib.h-t lib/string.h lib/string.h-t lib/sys/stat.h \
+ lib/sys/stat.h-t lib/sys/time.h lib/sys/time.h-t \
+ lib/sys/types.h lib/sys/types.h-t lib/time.h lib/time.h-t \
+ lib/unistd.h lib/unistd.h-t lib/wchar.h lib/wchar.h-t \
+ lib/wctype.h lib/wctype.h-t
SUFFIXES =
# No GNU Make output.
noinst_LIBRARIES = lib/libsed.a sed/libver.a
@@ -1967,10 +2137,10 @@ lib_libsed_a_SOURCES = lib/copy-acl.c lib/set-acl.c \
lib/glthread/lock.c lib/malloca.c lib/minmax.h lib/progname.h \
lib/progname.c lib/qcopy-acl.c lib/qset-acl.c lib/quotearg.c \
lib/se-context.in.h lib/se-selinux.in.h lib/se-context.c \
- lib/se-selinux.c lib/stat-time.c lib/tempname.c \
- lib/glthread/threadlib.c lib/unistd.c lib/version-etc.h \
- lib/version-etc.c lib/version-etc-fsf.c lib/wctype-h.c \
- lib/xmalloc.c lib/xalloc-die.c
+ lib/se-selinux.c lib/setlocale_null.c lib/stat-time.c \
+ lib/tempname.c lib/glthread/threadlib.c lib/unistd.c \
+ lib/version-etc.h lib/version-etc.c lib/version-etc-fsf.c \
+ lib/wctype-h.c lib/xmalloc.c lib/xalloc-die.c
lib_libsed_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
lib_libsed_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
EXTRA_lib_libsed_a_SOURCES = lib/acl_entries.c lib/alloca.c \
@@ -1978,19 +2148,22 @@ EXTRA_lib_libsed_a_SOURCES = lib/acl_entries.c lib/alloca.c \
lib/fstat.c lib/stat-w32.c lib/fwriting.c lib/getdelim.c \
lib/getopt.c lib/getopt1.c lib/gettimeofday.c lib/isblank.c \
lib/localeconv.c lib/localtime-buffer.c lib/lstat.c \
- lib/malloc.c lib/mbrlen.c lib/mbrtowc.c lib/mbsinit.c \
- lib/mbtowc.c lib/memchr.c lib/memrchr.c lib/mkdir.c \
- lib/mkostemp.c lib/msvc-inval.c lib/msvc-nothrow.c \
- lib/nl_langinfo.c lib/obstack.c lib/readlink.c lib/regcomp.c \
- lib/regex.c lib/regex_internal.c lib/regexec.c lib/rename.c \
- lib/rmdir.c lib/getfilecon.c lib/stat-w32.c lib/stat.c \
- lib/strerror.c lib/strerror-override.c lib/strverscmp.c \
- lib/wcrtomb.c lib/wctob.c lib/wctomb.c
+ lib/malloc.c lib/mbrlen.c lib/lc-charset-dispatch.c \
+ lib/mbrtowc.c lib/mbtowc-lock.c lib/mbsinit.c lib/mbtowc.c \
+ lib/memchr.c lib/memrchr.c lib/mkdir.c lib/mkostemp.c \
+ lib/msvc-inval.c lib/msvc-nothrow.c lib/nl_langinfo.c \
+ lib/obstack.c lib/readlink.c lib/regcomp.c lib/regex.c \
+ lib/regex_internal.c lib/regexec.c lib/rename.c lib/rmdir.c \
+ lib/getfilecon.c lib/setlocale-lock.c lib/stat-w32.c \
+ lib/stat.c lib/strerror.c lib/strerror-override.c \
+ lib/strverscmp.c lib/wcrtomb.c lib/wctob.c lib/wctomb.c \
+ lib/windows-mutex.c lib/windows-once.c lib/windows-recmutex.c \
+ lib/windows-rwlock.c
# Use this preprocessor expression to decide whether #include_next works.
# Do not rely on a 'configure'-time test for this, since the expression
# might appear in an installed header, which is used by some other compiler.
-HAVE_INCLUDE_NEXT = lib/(__GNUC__ lib/|| lib/60000000 lib/<= lib/__DECC_VER)
+HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER)
# Because this Makefile snippet defines a variable used by other
# gnulib Makefile snippets, it must be present in all makefiles that
@@ -2038,7 +2211,7 @@ HELP2MAN = $(top_srcdir)/build-aux/help2man
SEDBIN = sed/sed
AM_MAKEINFOHTMLFLAGS = --no-split
TEST_EXTENSIONS = .sh .pl
-@HAVE_PERL_FALSE@TESTSUITE_PERL = $(SHELL) $(srcdir)/no-perl
+@HAVE_PERL_FALSE@TESTSUITE_PERL = $(SHELL) $(srcdir)/testsuite/no-perl
@HAVE_PERL_TRUE@TESTSUITE_PERL = $(PERL)
# Options passed to the perl invocations running the perl test scripts.
@@ -2316,6 +2489,8 @@ lib/se-context.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
lib/se-selinux.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
+lib/setlocale_null.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
lib/stat-time.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
lib/tempname.$(OBJEXT): lib/$(am__dirstamp) \
@@ -2368,8 +2543,12 @@ lib/malloc.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
lib/mbrlen.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
+lib/lc-charset-dispatch.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
lib/mbrtowc.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
+lib/mbtowc-lock.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
lib/mbsinit.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
lib/mbtowc.$(OBJEXT): lib/$(am__dirstamp) \
@@ -2403,6 +2582,8 @@ lib/rename.$(OBJEXT): lib/$(am__dirstamp) \
lib/rmdir.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
lib/getfilecon.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
+lib/setlocale-lock.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
lib/stat.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
lib/strerror.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
@@ -2415,6 +2596,14 @@ lib/wcrtomb.$(OBJEXT): lib/$(am__dirstamp) \
lib/wctob.$(OBJEXT): lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
lib/wctomb.$(OBJEXT): lib/$(am__dirstamp) \
lib/$(DEPDIR)/$(am__dirstamp)
+lib/windows-mutex.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
+lib/windows-once.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
+lib/windows-recmutex.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
+lib/windows-rwlock.$(OBJEXT): lib/$(am__dirstamp) \
+ lib/$(DEPDIR)/$(am__dirstamp)
lib/libsed.a: $(lib_libsed_a_OBJECTS) $(lib_libsed_a_DEPENDENCIES) $(EXTRA_lib_libsed_a_DEPENDENCIES) lib/$(am__dirstamp)
$(AM_V_at)-rm -f lib/libsed.a
@@ -2510,6 +2699,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/gettimeofday.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/hard-locale.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/isblank.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lc-charset-dispatch.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/localcharset.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/localeconv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/localeinfo.Po@am__quote@ # am--include-marker
@@ -2520,6 +2710,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/mbrlen.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/mbrtowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/mbsinit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/mbtowc-lock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/mbtowc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/memchr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/memrchr.Po@am__quote@ # am--include-marker
@@ -2544,6 +2735,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/se-selinux.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/set-acl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/set-permissions.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/setlocale-lock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/setlocale_null.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/stat-time.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/stat-w32.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/stat.Po@am__quote@ # am--include-marker
@@ -2559,6 +2752,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/wctob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/wctomb.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/wctype-h.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/windows-mutex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/windows-once.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/windows-recmutex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/windows-rwlock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/xalloc-die.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/xmalloc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@lib/glthread/$(DEPDIR)/lock.Po@am__quote@ # am--include-marker
@@ -3259,6 +3456,10 @@ dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@@ -3301,6 +3502,8 @@ distcheck: dist
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
@@ -3465,6 +3668,7 @@ distclean: distclean-recursive
-rm -f lib/$(DEPDIR)/gettimeofday.Po
-rm -f lib/$(DEPDIR)/hard-locale.Po
-rm -f lib/$(DEPDIR)/isblank.Po
+ -rm -f lib/$(DEPDIR)/lc-charset-dispatch.Po
-rm -f lib/$(DEPDIR)/localcharset.Po
-rm -f lib/$(DEPDIR)/localeconv.Po
-rm -f lib/$(DEPDIR)/localeinfo.Po
@@ -3475,6 +3679,7 @@ distclean: distclean-recursive
-rm -f lib/$(DEPDIR)/mbrlen.Po
-rm -f lib/$(DEPDIR)/mbrtowc.Po
-rm -f lib/$(DEPDIR)/mbsinit.Po
+ -rm -f lib/$(DEPDIR)/mbtowc-lock.Po
-rm -f lib/$(DEPDIR)/mbtowc.Po
-rm -f lib/$(DEPDIR)/memchr.Po
-rm -f lib/$(DEPDIR)/memrchr.Po
@@ -3499,6 +3704,8 @@ distclean: distclean-recursive
-rm -f lib/$(DEPDIR)/se-selinux.Po
-rm -f lib/$(DEPDIR)/set-acl.Po
-rm -f lib/$(DEPDIR)/set-permissions.Po
+ -rm -f lib/$(DEPDIR)/setlocale-lock.Po
+ -rm -f lib/$(DEPDIR)/setlocale_null.Po
-rm -f lib/$(DEPDIR)/stat-time.Po
-rm -f lib/$(DEPDIR)/stat-w32.Po
-rm -f lib/$(DEPDIR)/stat.Po
@@ -3514,6 +3721,10 @@ distclean: distclean-recursive
-rm -f lib/$(DEPDIR)/wctob.Po
-rm -f lib/$(DEPDIR)/wctomb.Po
-rm -f lib/$(DEPDIR)/wctype-h.Po
+ -rm -f lib/$(DEPDIR)/windows-mutex.Po
+ -rm -f lib/$(DEPDIR)/windows-once.Po
+ -rm -f lib/$(DEPDIR)/windows-recmutex.Po
+ -rm -f lib/$(DEPDIR)/windows-rwlock.Po
-rm -f lib/$(DEPDIR)/xalloc-die.Po
-rm -f lib/$(DEPDIR)/xmalloc.Po
-rm -f lib/glthread/$(DEPDIR)/lock.Po
@@ -3696,6 +3907,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f lib/$(DEPDIR)/gettimeofday.Po
-rm -f lib/$(DEPDIR)/hard-locale.Po
-rm -f lib/$(DEPDIR)/isblank.Po
+ -rm -f lib/$(DEPDIR)/lc-charset-dispatch.Po
-rm -f lib/$(DEPDIR)/localcharset.Po
-rm -f lib/$(DEPDIR)/localeconv.Po
-rm -f lib/$(DEPDIR)/localeinfo.Po
@@ -3706,6 +3918,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f lib/$(DEPDIR)/mbrlen.Po
-rm -f lib/$(DEPDIR)/mbrtowc.Po
-rm -f lib/$(DEPDIR)/mbsinit.Po
+ -rm -f lib/$(DEPDIR)/mbtowc-lock.Po
-rm -f lib/$(DEPDIR)/mbtowc.Po
-rm -f lib/$(DEPDIR)/memchr.Po
-rm -f lib/$(DEPDIR)/memrchr.Po
@@ -3730,6 +3943,8 @@ maintainer-clean: maintainer-clean-recursive
-rm -f lib/$(DEPDIR)/se-selinux.Po
-rm -f lib/$(DEPDIR)/set-acl.Po
-rm -f lib/$(DEPDIR)/set-permissions.Po
+ -rm -f lib/$(DEPDIR)/setlocale-lock.Po
+ -rm -f lib/$(DEPDIR)/setlocale_null.Po
-rm -f lib/$(DEPDIR)/stat-time.Po
-rm -f lib/$(DEPDIR)/stat-w32.Po
-rm -f lib/$(DEPDIR)/stat.Po
@@ -3745,6 +3960,10 @@ maintainer-clean: maintainer-clean-recursive
-rm -f lib/$(DEPDIR)/wctob.Po
-rm -f lib/$(DEPDIR)/wctomb.Po
-rm -f lib/$(DEPDIR)/wctype-h.Po
+ -rm -f lib/$(DEPDIR)/windows-mutex.Po
+ -rm -f lib/$(DEPDIR)/windows-once.Po
+ -rm -f lib/$(DEPDIR)/windows-recmutex.Po
+ -rm -f lib/$(DEPDIR)/windows-rwlock.Po
-rm -f lib/$(DEPDIR)/xalloc-die.Po
-rm -f lib/$(DEPDIR)/xmalloc.Po
-rm -f lib/glthread/$(DEPDIR)/lock.Po
@@ -3791,16 +4010,17 @@ uninstall-man: uninstall-man1
clean-cscope clean-generic clean-noinstLIBRARIES cscope \
cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-hook dist-info dist-lzip dist-shar dist-tarZ \
- dist-xz dist-zip distcheck distclean distclean-compile \
- distclean-generic distclean-hdr distclean-local distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-binPROGRAMS \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-man1 \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-aminfo \
+ dist-xz dist-zip dist-zstd distcheck distclean \
+ distclean-compile distclean-generic distclean-hdr \
+ distclean-local distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man1 install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-aminfo \
maintainer-clean-generic maintainer-clean-vti mostlyclean \
mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \
mostlyclean-local mostlyclean-vti pdf pdf-am ps ps-am recheck \
@@ -3866,7 +4086,7 @@ full-distcheck:
@GL_GENERATE_ALLOCA_H_TRUE@lib/alloca.h: lib/alloca.in.h $(top_builddir)/config.status
@GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
@GL_GENERATE_ALLOCA_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
-@GL_GENERATE_ALLOCA_H_TRUE@ cat $(top_srcdir)/lib/alloca.in.h; \
+@GL_GENERATE_ALLOCA_H_TRUE@ sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(top_srcdir)/lib/alloca.in.h; \
@GL_GENERATE_ALLOCA_H_TRUE@ } > $@-t && \
@GL_GENERATE_ALLOCA_H_TRUE@ mv -f $@-t $@
@GL_GENERATE_ALLOCA_H_FALSE@lib/alloca.h: $(top_builddir)/config.status
@@ -3922,12 +4142,14 @@ lib/fcntl.h: lib/fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NON
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+ -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \
-e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \
-e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \
-e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \
-e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \
-e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
-e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
+ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \
-e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \
-e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
-e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \
@@ -3965,6 +4187,41 @@ distclean-local: clean-GNUmakefile
clean-GNUmakefile:
test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile
+# We need the following in order to create <inttypes.h> when the system
+# doesn't have one that works with the given compiler.
+lib/inttypes.h: lib/inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
+ -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
+ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+ -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+ -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+ -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+ -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
+ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
+ -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \
+ -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \
+ -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \
+ -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
+ -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
+ -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
+ -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \
+ -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)' \
+ < $(top_srcdir)/lib/inttypes.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
# We need the following in order to create an empty placeholder for
# <langinfo.h> when the system doesn't have one.
lib/langinfo.h: lib/langinfo.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
@@ -4018,6 +4275,7 @@ lib/locale.h: lib/locale.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
-e 's/@''GNULIB_LOCALECONV''@/$(GNULIB_LOCALECONV)/g' \
-e 's/@''GNULIB_SETLOCALE''@/$(GNULIB_SETLOCALE)/g' \
+ -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GNULIB_SETLOCALE_NULL)/g' \
-e 's/@''GNULIB_DUPLOCALE''@/$(GNULIB_DUPLOCALE)/g' \
-e 's/@''GNULIB_LOCALENAME''@/$(GNULIB_LOCALENAME)/g' \
-e 's|@''HAVE_NEWLOCALE''@|$(HAVE_NEWLOCALE)|g' \
@@ -4136,8 +4394,6 @@ lib/selinux/selinux.h: lib/se-selinux.in.h $(top_builddir)/config.status $(UNUSE
@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
-@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
-@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
@@ -4317,6 +4573,7 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
-e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
-e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
+ -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \
-e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
-e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
-e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
@@ -4330,7 +4587,9 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
-e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
-e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
+ -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \
-e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \
+ -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \
-e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
-e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
-e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
@@ -4348,8 +4607,10 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
-e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
-e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
+ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
-e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
-e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
-e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
-e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
-e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
@@ -4358,6 +4619,7 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
-e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
-e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+ -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \
-e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
-e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
@@ -4365,11 +4627,14 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
-e 's|@''REPLACE_QSORT_R''@|$(REPLACE_QSORT_R)|g' \
+ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \
-e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
-e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
-e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
-e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
-e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
-e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -4626,9 +4891,11 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
-e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+ -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \
-e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
-e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
-e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
+ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \
-e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
-e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
-e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
@@ -4647,6 +4914,7 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
-e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
-e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
+ -e 's/@''GNULIB_GETOPT_POSIX''@/$(GNULIB_GETOPT_POSIX)/g' \
-e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
-e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \
-e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
@@ -4679,6 +4947,7 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
< $(top_srcdir)/lib/unistd.in.h | \
sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
-e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
-e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
-e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
@@ -4723,7 +4992,8 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
-e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
| \
- sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
-e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
-e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
-e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
@@ -4876,6 +5146,7 @@ lib/wchar.h: lib/wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NON
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
-e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
-e 's|@''REPLACE_WCSFTIME''@|$(REPLACE_WCSFTIME)|g' \
+ -e 's|@''REPLACE_WCSTOK''@|$(REPLACE_WCSTOK)|g' \
-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)'; \
diff --git a/NEWS b/NEWS
index 3207572..7db3133 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,23 @@
GNU sed NEWS -*- outline -*-
+* Noteworthy changes in release 4.8 (2020-01-14) [stable]
+
+** Bug fixes
+
+ "sed -i" now creates temporary files with correct umask (limited to u=rwx).
+ Previously sed would incorrectly set umask on temporary files, resulting
+ in problems under certain fuse-like file systems.
+ [bug introduced in sed 4.2.1]
+
+** Release
+
+ distribute gzip-compressed tarballs once again
+
+** Improvements
+
+ a year's worth of gnulib development, including improved DFA performance
+
+
* Noteworthy changes in release 4.7 (2018-12-20) [stable]
** Bug fixes
diff --git a/aclocal.m4 b/aclocal.m4
index 7d6512c..9a1e5ec 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
# generated automatically by aclocal 1.16a -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,13 +14,13 @@
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69.197-b8fd7],,
-[m4_warning([this file was generated for autoconf 2.69.197-b8fd7.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69.202-d78a],,
+[m4_warning([this file was generated for autoconf 2.69.202-d78a.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -58,7 +58,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -332,7 +332,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -398,7 +398,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -595,7 +595,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -616,7 +616,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -637,7 +637,7 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -680,7 +680,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -721,7 +721,7 @@ fi
# Obsolete and "removed" macros, that must however still report explicit
# error messages when used, to smooth transition.
#
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -748,7 +748,7 @@ AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -777,7 +777,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -824,7 +824,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -843,7 +843,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -924,7 +924,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -984,7 +984,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1012,7 +1012,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1031,7 +1031,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1172,10 +1172,8 @@ m4_include([m4/assert.m4])
m4_include([m4/btowc.m4])
m4_include([m4/builtin-expect.m4])
m4_include([m4/canonicalize.m4])
-m4_include([m4/close-stream.m4])
m4_include([m4/close.m4])
m4_include([m4/closedir.m4])
-m4_include([m4/closeout.m4])
m4_include([m4/codeset.m4])
m4_include([m4/ctype.m4])
m4_include([m4/dirent_h.m4])
@@ -1216,7 +1214,6 @@ m4_include([m4/gettimeofday.m4])
m4_include([m4/glibc21.m4])
m4_include([m4/gnulib-common.m4])
m4_include([m4/gnulib-comp.m4])
-m4_include([m4/host-cpu-c-abi.m4])
m4_include([m4/iconv.m4])
m4_include([m4/include_next.m4])
m4_include([m4/inet_pton.m4])
@@ -1244,7 +1241,6 @@ m4_include([m4/localeconv.m4])
m4_include([m4/localename.m4])
m4_include([m4/localtime-buffer.m4])
m4_include([m4/lock.m4])
-m4_include([m4/longlong.m4])
m4_include([m4/lseek.m4])
m4_include([m4/lstat.m4])
m4_include([m4/malloc.m4])
@@ -1274,14 +1270,19 @@ m4_include([m4/non-recursive-gnulib-prefix-hack.m4])
m4_include([m4/obstack.m4])
m4_include([m4/off_t.m4])
m4_include([m4/open-cloexec.m4])
+m4_include([m4/open-slash.m4])
m4_include([m4/open.m4])
m4_include([m4/opendir.m4])
m4_include([m4/pathmax.m4])
+m4_include([m4/perl.m4])
m4_include([m4/perror.m4])
m4_include([m4/pipe.m4])
m4_include([m4/po.m4])
m4_include([m4/progtest.m4])
+m4_include([m4/pthread-thread.m4])
+m4_include([m4/pthread_h.m4])
m4_include([m4/pthread_rwlock_rdlock.m4])
+m4_include([m4/pthread_sigmask.m4])
m4_include([m4/putenv.m4])
m4_include([m4/quote.m4])
m4_include([m4/quotearg.m4])
@@ -1293,11 +1294,13 @@ m4_include([m4/realloc.m4])
m4_include([m4/regex.m4])
m4_include([m4/rename.m4])
m4_include([m4/rmdir.m4])
+m4_include([m4/sched_h.m4])
m4_include([m4/select.m4])
m4_include([m4/selinux-context-h.m4])
m4_include([m4/selinux-selinux-h.m4])
m4_include([m4/setenv.m4])
m4_include([m4/setlocale.m4])
+m4_include([m4/setlocale_null.m4])
m4_include([m4/sigaction.m4])
m4_include([m4/signal_h.m4])
m4_include([m4/signalblocking.m4])
@@ -1331,12 +1334,14 @@ m4_include([m4/sys_time_h.m4])
m4_include([m4/sys_types_h.m4])
m4_include([m4/sys_uio_h.m4])
m4_include([m4/tempname.m4])
+m4_include([m4/thread.m4])
m4_include([m4/threadlib.m4])
m4_include([m4/time_h.m4])
m4_include([m4/ungetc.m4])
m4_include([m4/unistd_h.m4])
m4_include([m4/unlocked-io.m4])
m4_include([m4/version-etc.m4])
+m4_include([m4/visibility.m4])
m4_include([m4/warn-on-use.m4])
m4_include([m4/warnings.m4])
m4_include([m4/wchar_h.m4])
diff --git a/basicdefs.h b/basicdefs.h
index a5249f2..053e0eb 100644
--- a/basicdefs.h
+++ b/basicdefs.h
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 1998-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/bootstrap b/bootstrap
index 5264d9f..70fd73c 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,10 +1,10 @@
#! /bin/sh
# Print a version string.
-scriptversion=2018-10-13.05; # UTC
+scriptversion=2019-01-04.17; # UTC
# Bootstrap this package from checked-out sources.
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
# This 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 @@ bootstrap_epilogue() { :; }
# specified directory. Fill in the first %s with the destination
# directory and the second with the domain name.
po_download_command_format=\
-"wget --mirror --level=1 -nd -q -A.po -P '%s' \
+"wget --mirror --level=1 -nd -nv -A.po -P '%s' \
https://translationproject.org/latest/%s/"
# Prefer a non-empty tarname (4th argument of AC_INIT if given), else
@@ -963,6 +963,16 @@ fi
bootstrap_post_import_hook \
|| die "bootstrap_post_import_hook failed"
+# Don't proceed if there are uninitialized submodules. In particular,
+# the next step will remove dangling links, which might be links into
+# uninitialized submodules.
+#
+# Uninitialized submodules are listed with an initial dash.
+if $use_git && git submodule | grep '^-' >/dev/null; then
+ die "some git submodules are not initialized. " \
+ "Run 'git submodule init' and bootstrap again."
+fi
+
# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
# gnulib-populated directories. Such .m4 files would cause aclocal to fail.
# The following requires GNU find 4.2.3 or newer. Considering the usual
diff --git a/bootstrap.conf b/bootstrap.conf
index 692ddfc..0d6dc01 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -1,6 +1,6 @@
# Bootstrap configuration.
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
# This 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,6 +48,7 @@ memrchr
mkostemp
non-recursive-gnulib-prefix-hack
obstack
+perl
progname
readme-release
regex
@@ -58,7 +59,6 @@ stat-macros
stdbool
strerror
strverscmp
-threadlib
unlocked-io
update-copyright
verify
diff --git a/build-aux/announce-gen b/build-aux/announce-gen
index eeb9071..aebb86f 100755
--- a/build-aux/announce-gen
+++ b/build-aux/announce-gen
@@ -1,33 +1,47 @@
-eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
- & eval 'exec perl -wS "$0" $argv:q'
- if 0;
-# Generate a release announcement message.
-
-my $VERSION = '2018-03-07 03:46'; # UTC
-# The definition above must lie within the first 8 lines in order
-# for the Emacs time-stamp write hook (at end) to update it.
-# If you change this file with Emacs, please let the write hook
-# do its job. Otherwise, update this string manually.
+#!/bin/sh
+#! -*-perl-*-
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Generate a release announcement message.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
# This 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 Jim Meyering
-use strict;
+# This is a prologue that allows to run a perl script as an executable
+# on systems that are compliant to a POSIX version before POSIX:2017.
+# On such systems, the usual invocation of an executable through execlp()
+# or execvp() fails with ENOEXEC if it is a script that does not start
+# with a #! line. The script interpreter mentioned in the #! line has
+# to be /bin/sh, because on GuixSD systems that is the only program that
+# has a fixed file name. The second line is essential for perl and is
+# also useful for editing this file in Emacs. The next two lines below
+# are valid code in both sh and perl. When executed by sh, they re-execute
+# the script through the perl program found in $PATH. The '-x' option
+# is essential as well; without it, perl would re-execute the script
+# through /bin/sh. When executed by perl, the next two lines are a no-op.
+eval 'exec perl -wSx "$0" "$@"'
+ if 0;
+my $VERSION = '2018-03-07 03:46'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
+
+use strict;
use Getopt::Long;
use POSIX qw(strftime);
@@ -550,6 +564,7 @@ EOF
## perl-extra-newline-before-brace: t
## perl-merge-trailing-else: nil
## eval: (add-hook 'before-save-hook 'time-stamp)
+## time-stamp-line-limit: 50
## time-stamp-start: "my $VERSION = '"
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
## time-stamp-time-zone: "UTC0"
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 94c4ac1..45001cf 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2018-12-07'
+timestamp='2020-01-01'
# 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
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -99,6 +99,8 @@ tmp=
trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
: "${TMPDIR=/tmp}"
# shellcheck disable=SC2039
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
@@ -262,6 +264,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:SolidBSD:*:*)
echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+ exit ;;
macppc:MirBSD:*:*)
echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
@@ -271,12 +276,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:Sortix:*:*)
echo "$UNAME_MACHINE"-unknown-sortix
exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
*:Redox:*:*)
echo "$UNAME_MACHINE"-unknown-redox
exit ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -391,15 +399,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- case `isainfo -b` in
- 32)
- echo i386-pc-solaris2"$UNAME_REL"
- ;;
- 64)
- echo x86_64-pc-solaris2"$UNAME_REL"
- ;;
- esac
+ set_cc_for_build
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
@@ -913,7 +926,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -980,22 +993,50 @@ EOF
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
- test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1108,7 +1149,7 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
@@ -1292,38 +1333,39 @@ EOF
echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
@@ -1428,6 +1470,143 @@ EOF
exit ;;
esac
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
echo "$0: unable to guess system type" >&2
case "$UNAME_MACHINE:$UNAME_SYSTEM" in
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
index fc5913d..b625621 100755
--- a/build-aux/config.rpath
+++ b/build-aux/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2018 Free Software Foundation, Inc.
+# Copyright 1996-2014 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
diff --git a/build-aux/config.sub b/build-aux/config.sub
index a5081b8..f02d43a 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2018-12-16'
+timestamp='2020-01-01'
# 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
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -111,6 +111,7 @@ case $# in
esac
# Split fields of configuration type
+# shellcheck disable=SC2162
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
@@ -336,17 +337,14 @@ case $1 in
basic_machine=m88k-harris
os=sysv3
;;
- hp300)
+ hp300 | hp300hpux)
basic_machine=m68k-hp
+ os=hpux
;;
hp300bsd)
basic_machine=m68k-hp
os=bsd
;;
- hp300hpux)
- basic_machine=m68k-hp
- os=hpux
- ;;
hppaosf)
basic_machine=hppa1.1-hp
os=osf
@@ -359,10 +357,6 @@ case $1 in
basic_machine=i386-mach
os=mach
;;
- vsta)
- basic_machine=i386-pc
- os=vsta
- ;;
isi68 | isi)
basic_machine=m68k-isi
os=sysv
@@ -611,6 +605,10 @@ case $1 in
basic_machine=vax-dec
os=vms
;;
+ vsta)
+ basic_machine=i386-pc
+ os=vsta
+ ;;
vxworks960)
basic_machine=i960-wrs
os=vxworks
@@ -821,7 +819,9 @@ case $basic_machine in
cpu=m68k
vendor=next
case $os in
- nextstep* )
+ openstep*)
+ ;;
+ nextstep*)
;;
ns2*)
os=nextstep2
@@ -918,6 +918,7 @@ case $basic_machine in
;;
*-*)
+ # shellcheck disable=SC2162
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
@@ -1168,7 +1169,7 @@ case $cpu-$vendor in
| asmjs \
| ba \
| be32 | be64 \
- | bfin | bs2000 \
+ | bfin | bpf | bs2000 \
| c[123]* | c30 | [cjt]90 | c4x \
| c8051 | clipper | craynv | csky | cydra \
| d10v | d30v | dlx | dsp16xx \
@@ -1183,13 +1184,13 @@ case $cpu-$vendor in
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle \
- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
- | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
- | mips64 | mips64el \
+ | mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
@@ -1216,11 +1217,12 @@ case $cpu-$vendor in
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
- | none | np1 | ns16k | ns32k \
+ | none | np1 | ns16k | ns32k | nvptx \
| open8 \
| or1k* \
| or32 \
| orion \
+ | picochip \
| pdp10 | pdp11 | pj | pjl | pn | power \
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
@@ -1228,7 +1230,8 @@ case $cpu-$vendor in
| riscv | riscv32 | riscv64 \
| rl78 | romp | rs6000 | rx \
| score \
- | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
| sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
| sparclite \
@@ -1238,10 +1241,11 @@ case $cpu-$vendor in
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
- | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
| visium \
- | wasm32 \
+ | w65 \
+ | wasm32 | wasm64 \
| we32k \
| x86 | x86_64 | xc16x | xgate | xps100 \
| xstormy16 | xtensa* \
@@ -1339,11 +1343,11 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | kopensolaris* | plan9* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- | aos* | aros* | cloudabi* | sortix* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| knetbsd* | mirbsd* | netbsd* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
| ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
| bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
| ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
@@ -1361,7 +1365,8 @@ case $os in
| powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- | midnightbsd* | amdhsa* | unleashed*)
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix)
# Remember, each alternative MUST END IN *, to match a version number.
;;
qnx*)
@@ -1445,9 +1450,6 @@ case $os in
ns2)
os=nextstep2
;;
- nsk*)
- os=nsk
- ;;
# Preserve the version number of sinix5.
sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
diff --git a/build-aux/depcomp b/build-aux/depcomp
index 65cbf70..6b39162 100755
--- a/build-aux/depcomp
+++ b/build-aux/depcomp
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/do-release-commit-and-tag b/build-aux/do-release-commit-and-tag
index 4472ff5..f4ec1b1 100755
--- a/build-aux/do-release-commit-and-tag
+++ b/build-aux/do-release-commit-and-tag
@@ -7,7 +7,7 @@ VERSION=2018-03-07.03 # UTC
# Note: this is a bash script (could be zsh or dash)
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/gendocs.sh b/build-aux/gendocs.sh
index 91c058d..dec8eb9 100755
--- a/build-aux/gendocs.sh
+++ b/build-aux/gendocs.sh
@@ -2,9 +2,9 @@
# gendocs.sh -- generate a GNU manual in many formats. This script is
# mentioned in maintain.texi. See the help message below for usage details.
-scriptversion=2018-03-06.19
+scriptversion=2020-01-01.00
-# Copyright 2003-2018 Free Software Foundation, Inc.
+# Copyright 2003-2020 Free Software Foundation, Inc.
#
# This 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 @@ texarg="-t @finalout"
version="gendocs.sh $scriptversion
-Copyright 2018 Free Software Foundation, Inc.
+Copyright 2020 Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING."
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
index 6d073fc..d90b0ef 100755
--- a/build-aux/git-version-gen
+++ b/build-aux/git-version-gen
@@ -2,7 +2,7 @@
# Print a version string.
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# Copyright (C) 2007-2020 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -72,9 +72,10 @@ scriptversion=2018-03-07.03; # UTC
me=$0
+year=`expr "$scriptversion" : '\([^-]*\)'`
version="git-version-gen $scriptversion
-Copyright 2011 Free Software Foundation, Inc.
+Copyright $year Free Software Foundation, Inc.
There is NO warranty. You may redistribute this software
under the terms of the GNU General Public License.
For more information about these matters, see the files named COPYING."
@@ -141,11 +142,9 @@ then
v=`cat $tarball_version_file` || v=
case $v in
*$nl*) v= ;; # reject multi-line output
- [0-9]*) ;;
- *) v= ;;
esac
test "x$v" = x \
- && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
+ && echo "$0: WARNING: $tarball_version_file is damaged" 1>&2
fi
if test "x$v" != x
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
index 1e73f42..5112767 100755
--- a/build-aux/gitlog-to-changelog
+++ b/build-aux/gitlog-to-changelog
@@ -1,31 +1,46 @@
-eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
- & eval 'exec perl -wS "$0" $argv:q'
- if 0;
-# Convert git log output to ChangeLog format.
+#!/bin/sh
+#! -*-perl-*-
-my $VERSION = '2018-03-07 03:47'; # UTC
-# The definition above must lie within the first 8 lines in order
-# for the Emacs time-stamp write hook (at end) to update it.
-# If you change this file with Emacs, please let the write hook
-# do its job. Otherwise, update this string manually.
-
-# Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# Convert git log output to ChangeLog format.
+# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+#
# This 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 Jim Meyering
+# This is a prologue that allows to run a perl script as an executable
+# on systems that are compliant to a POSIX version before POSIX:2017.
+# On such systems, the usual invocation of an executable through execlp()
+# or execvp() fails with ENOEXEC if it is a script that does not start
+# with a #! line. The script interpreter mentioned in the #! line has
+# to be /bin/sh, because on GuixSD systems that is the only program that
+# has a fixed file name. The second line is essential for perl and is
+# also useful for editing this file in Emacs. The next two lines below
+# are valid code in both sh and perl. When executed by sh, they re-execute
+# the script through the perl program found in $PATH. The '-x' option
+# is essential as well; without it, perl would re-execute the script
+# through /bin/sh. When executed by perl, the next two lines are a no-op.
+eval 'exec perl -wSx "$0" "$@"'
+ if 0;
+
+my $VERSION = '2018-03-07 03:47'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
+
use strict;
use warnings;
use Getopt::Long;
@@ -174,7 +189,7 @@ sub parse_amend_file($)
if (!$in_code)
{
- $line =~ /^([0-9a-fA-F]{40})$/
+ $line =~ /^([[:xdigit:]]{40})$/
or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
$fail = 1, next;
$sha = lc $1;
@@ -288,7 +303,7 @@ sub git_dir_option($)
my ($sha, $rest) = split ':', $log, 2;
defined $sha
or die "$ME:$.: malformed log entry\n";
- $sha =~ /^[0-9a-fA-F]{40}$/
+ $sha =~ /^[[:xdigit:]]{40}$/
or die "$ME:$.: invalid SHA1: $sha\n";
my $skipflag = 0;
@@ -376,7 +391,7 @@ sub git_dir_option($)
@skipshas = ();
next;
}
- if ($found && $_ =~ /^([0-9a-fA-F]{7,}) [^ ]/)
+ if ($found && $_ =~ /^([[:xdigit:]]{7,}) [^ ]/)
{
push ( @skipshas, $1 );
}
@@ -492,6 +507,7 @@ sub git_dir_option($)
# mode: perl
# indent-tabs-mode: nil
# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-line-limit: 50
# time-stamp-start: "my $VERSION = '"
# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
# time-stamp-time-zone: "UTC0"
diff --git a/build-aux/gnu-web-doc-update b/build-aux/gnu-web-doc-update
index 356c561..ff48cf7 100755
--- a/build-aux/gnu-web-doc-update
+++ b/build-aux/gnu-web-doc-update
@@ -4,7 +4,7 @@
VERSION=2018-03-07.03; # UTC
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/gnupload b/build-aux/gnupload
index 8f05700..e4ea542 100755
--- a/build-aux/gnupload
+++ b/build-aux/gnupload
@@ -3,7 +3,7 @@
scriptversion=2018-05-19.18; # UTC
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -116,12 +116,22 @@ Examples:
--symlink-regex \\
foobar-1.0.tar.gz foobar-1.0.tar.xz
-4. Upload foobar-0.9.90.tar.gz to two sites:
+4. Create a symbolic link foobar-latest.tar.gz -> foobar-1.0.tar.gz
+ and likewise for the corresponding .sig file:
+ gnupload --to ftp.gnu.org:foobar \\
+ --symlink foobar-1.0.tar.gz foobar-latest.tar.gz \\
+ foobar-1.0.tar.gz.sig foobar-latest.tar.gz.sig
+ or (equivalent):
+ gnupload --to ftp.gnu.org:foobar \\
+ --symlink foobar-1.0.tar.gz foobar-latest.tar.gz \\
+ --symlink foobar-1.0.tar.gz.sig foobar-latest.tar.gz.sig
+
+5. Upload foobar-0.9.90.tar.gz to two sites:
gnupload --to alpha.gnu.org:foobar \\
--to sources.redhat.com:~ftp/pub/foobar \\
foobar-0.9.90.tar.gz
-5. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz
+6. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz
(the -- terminates the list of files to delete):
gnupload --to alpha.gnu.org:foobar \\
--to sources.redhat.com:~ftp/pub/foobar \\
diff --git a/build-aux/help2man b/build-aux/help2man
index c9f904b..b50dced 100755
--- a/build-aux/help2man
+++ b/build-aux/help2man
@@ -1,7 +1,7 @@
#!/usr/bin/env perl
# Generate a short man page from --help and --version output.
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/install-sh b/build-aux/install-sh
index 8175c64..20d8b2e 100755
--- a/build-aux/install-sh
+++ b/build-aux/install-sh
@@ -451,7 +451,18 @@ do
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
index 8c7a590..6a6a4bc 100755
--- a/build-aux/mdate-sh
+++ b/build-aux/mdate-sh
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1995-2018 Free Software Foundation, Inc.
+# Copyright (C) 1995-2020 Free Software Foundation, Inc.
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
#
# This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/missing b/build-aux/missing
index 625aeb1..8d0eaad 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/prefix-gnulib-mk b/build-aux/prefix-gnulib-mk
index 544654f..674615a 100755
--- a/build-aux/prefix-gnulib-mk
+++ b/build-aux/prefix-gnulib-mk
@@ -1,13 +1,51 @@
-eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
- & eval 'exec perl -wS "$0" $argv:q'
- if 0;
+#!/bin/sh
+#! -*-perl-*-
+
+# Rewrite a gnulib.mk, adding prefixes to work with automake's subdir-objects.
+
+# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+#
+# This 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 Jim Meyering
+
+# This is a prologue that allows to run a perl script as an executable
+# on systems that are compliant to a POSIX version before POSIX:2017.
+# On such systems, the usual invocation of an executable through execlp()
+# or execvp() fails with ENOEXEC if it is a script that does not start
+# with a #! line. The script interpreter mentioned in the #! line has
+# to be /bin/sh, because on GuixSD systems that is the only program that
+# has a fixed file name. The second line is essential for perl and is
+# also useful for editing this file in Emacs. The next two lines below
+# are valid code in both sh and perl. When executed by sh, they re-execute
+# the script through the perl program found in $PATH. The '-x' option
+# is essential as well; without it, perl would re-execute the script
+# through /bin/sh. When executed by perl, the next two lines are a no-op.
+eval 'exec perl -wSx "$0" "$@"'
+ if 0;
+
+my $VERSION = '2012-01-21 17:13'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
use strict;
use IO::File;
use Getopt::Long;
use File::Basename; # for dirname
-my $VERSION = '2012-01-21 17:13'; # UTC
(my $ME = $0) =~ s|.*/||;
my $prefix;
@@ -87,7 +125,6 @@ sub prefix_words ($)
sub prefix_assignment ($$)
{
my ($lhs_and_assign_op, $rhs) = @_;
- my $res;
# Some variables are initialized by gnulib.mk, and we don't want
# that. Change '=' to '+='.
@@ -95,21 +132,35 @@ sub prefix_assignment ($$)
{
# Do not change the RHS, which specifies the GPERF program.
}
+ # Don't change variables such as HAVE_INCLUDE_NEXT.
+ elsif ($lhs_and_assign_op =~ /^HAVE_/)
+ {
+ }
elsif ($lhs_and_assign_op =~
/^(SUBDIRS|EXTRA_DIST|BUILT_SOURCES|SUFFIXES|MOSTLYCLEANFILES
- |CLEANFILES|DISTCLEANFILES|MAINTAINERCLEANFILES|AM_CFLAGS
- |AM_CPPFLAGS|AM_GNU_GETTEXT)\ =/x)
+ |CLEANFILES|DISTCLEANFILES|MAINTAINERCLEANFILES
+ |AM_GNU_GETTEXT)\ =/x)
{
$lhs_and_assign_op =~ s/=/+=/;
}
+ # We don't want things such as AM_CPPFLAGS +=
+ # -DDEFAULT_TEXT_DOMAIN=\"bison-gnulib\" to apply to the whole
+ # Makefile.in: scope it to the library: libbison_a_CPPFLAGS =
+ # $(AM_CPPFLAGS) -DDEFAULT_TEXT_DOMAIN=\"bison-gnulib\".
+ elsif ($lhs_and_assign_op =~
+ /^(AM_CFLAGS|AM_CPPFLAGS)\ \+?=/x)
+ {
+ $lhs_and_assign_op =~ s/^AM_(\w+)\ \+?=/${lib_name}_a_$1 =/;
+ $rhs = " \$(AM_$1)$rhs";
+ }
# We don't want to inherit gnulib's AUTOMAKE_OPTIONS, comment them.
elsif ($lhs_and_assign_op =~ /^AUTOMAKE_OPTIONS =/)
{
$lhs_and_assign_op =~ s/^/# /;
}
+ # Elide any SUFFIXES assignment or concatenation.
elsif ($lhs_and_assign_op =~ /^SUFFIXES /)
{
- # Elide any SUFFIXES assignment or concatenation.
$lhs_and_assign_op =~ s/^/# /;
}
# The words are (probably) paths to files in lib/: prefix them.
@@ -118,11 +169,11 @@ sub prefix_assignment ($$)
$rhs = prefix_words($rhs)
}
- # Variables which name depend on the location: libbison_a_SOURCES =>
+ # Variables whose name depend on the location: libbison_a_SOURCES =>
# lib_libbison_a_SOURCES.
$lhs_and_assign_op =~ s/($lib_name)/lib_$1/g;
- return $lhs_and_assign_op . $rhs;
+ $lhs_and_assign_op . $rhs;
}
# prefix $CONTENTS
@@ -222,6 +273,7 @@ sub process ($)
## cperl-merge-trailing-else: nil
## cperl-continued-statement-offset: 2
## eval: (add-hook 'before-save-hook 'time-stamp)
+## time-stamp-line-limit: 50
## time-stamp-start: "my $VERSION = '"
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
## time-stamp-time-zone: "UTC0"
diff --git a/build-aux/test-driver b/build-aux/test-driver
index b8521a4..89dba1e 100755
--- a/build-aux/test-driver
+++ b/build-aux/test-driver
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
index 5840aff..1ea515b 100644
--- a/build-aux/texinfo.tex
+++ b/build-aux/texinfo.tex
@@ -1,14 +1,11 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2018-09-21.20}
+\def\texinfoversion{2019-09-24.13}
%
-% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
-% Free Software Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -221,7 +218,7 @@
% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
% aren't perfect, it's not the end of the world, being an error message,
% after all.
-%
+%
\def\errormsg{\begingroup \indexnofonts \doerrormsg}
\def\doerrormsg#1{\errmessage{#1}}
@@ -244,17 +241,7 @@
%
\def\finalout{\overfullrule=0pt }
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
\newdimen\topandbottommargin \topandbottommargin=.75in
% Output a mark which sets \thischapter, \thissection and \thiscolor.
@@ -270,8 +257,8 @@
% \domark is called twice inside \chapmacro, to add one
% mark before the section break, and one after.
-% In the second call \prevchapterdefs is the same as \lastchapterdefs,
-% and \prevsectiondefs is the same as \lastsectiondefs.
+% In the second call \prevchapterdefs is the same as \currentchapterdefs,
+% and \prevsectiondefs is the same as \currentsectiondefs.
% Then if the page is not broken at the mark, some of the previous
% section appears on the page, and we can get the name of this section
% from \firstmark for @everyheadingmarks top.
@@ -279,11 +266,11 @@
%
% See page 260 of The TeXbook.
\def\domark{%
- \toks0=\expandafter{\lastchapterdefs}%
- \toks2=\expandafter{\lastsectiondefs}%
+ \toks0=\expandafter{\currentchapterdefs}%
+ \toks2=\expandafter{\currentsectiondefs}%
\toks4=\expandafter{\prevchapterdefs}%
\toks6=\expandafter{\prevsectiondefs}%
- \toks8=\expandafter{\lastcolordefs}%
+ \toks8=\expandafter{\currentcolordefs}%
\mark{%
\the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top
\noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom
@@ -300,19 +287,19 @@
% @setcolor (or @url, or @link, etc.) between @contents and the very
% first @chapter.
\def\gettopheadingmarks{%
- \ifcase0\topmark\fi
+ \ifcase0\the\savedtopmark\fi
\ifx\thischapter\empty \ifcase0\firstmark\fi \fi
}
\def\getbottomheadingmarks{\ifcase1\botmark\fi}
-\def\getcolormarks{\ifcase2\topmark\fi}
+\def\getcolormarks{\ifcase2\the\savedtopmark\fi}
% Avoid "undefined control sequence" errors.
-\def\lastchapterdefs{}
-\def\lastsectiondefs{}
-\def\lastsection{}
+\def\currentchapterdefs{}
+\def\currentsectiondefs{}
+\def\currentsection{}
\def\prevchapterdefs{}
\def\prevsectiondefs{}
-\def\lastcolordefs{}
+\def\currentcolordefs{}
% Margin to add to right of even pages, to left of odd pages.
\newdimen\bindingoffset
@@ -322,50 +309,75 @@
% Main output routine.
%
\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
+\newtoks\defaultoutput
+\defaultoutput = {\savetopmark\onepageout{\pagecontents\PAGE}}
+\output=\expandafter{\the\defaultoutput}
\newbox\headlinebox
\newbox\footlinebox
+% When outputting the double column layout for indices, an output routine
+% is run several times, which hides the original value of \topmark. This
+% can lead to a page heading being output and duplicating the chapter heading
+% of the index. Hence, save the contents of \topmark at the beginning of
+% the output routine. The saved contents are valid until we actually
+% \shipout a page.
+%
+% (We used to run a short output routine to actually set \topmark and
+% \firstmark to the right values, but if this was called with an empty page
+% containing whatsits for writing index entries, the whatsits would be thrown
+% away and the index auxiliary file would remain empty.)
+%
+\newtoks\savedtopmark
+\newif\iftopmarksaved
+\topmarksavedtrue
+\def\savetopmark{%
+ \iftopmarksaved\else
+ \global\savedtopmark=\expandafter{\topmark}%
+ \global\topmarksavedtrue
+ \fi
+}
+
% \onepageout takes a vbox as an argument.
-% \shipout a vbox for a single page, adding an optional header, footer,
-% cropmarks, and footnote. This also causes index entries for this page
-% to be written to the auxiliary files.
+% \shipout a vbox for a single page, adding an optional header, footer
+% and footnote. This also causes index entries for this page to be written
+% to the auxiliary files.
%
\def\onepageout#1{%
- \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+ \hoffset=\normaloffset
%
\ifodd\pageno \advance\hoffset by \bindingoffset
\else \advance\hoffset by -\bindingoffset\fi
%
- % Common context changes for both heading and footing.
- % Do this outside of the \shipout so @code etc. will be expanded in
- % the headline as they should be, not taken literally (outputting ''code).
- \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars}
- %
% Retrieve the information for the headings from the marks in the page,
% and call Plain TeX's \makeheadline and \makefootline, which use the
% values in \headline and \footline.
%
% This is used to check if we are on the first page of a chapter.
- \ifcase1\topmark\fi
+ \ifcase1\the\savedtopmark\fi
\let\prevchaptername\thischaptername
\ifcase0\firstmark\fi
\let\curchaptername\thischaptername
%
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
- \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
%
\ifx\curchaptername\prevchaptername
\let\thischapterheading\thischapter
\else
% \thischapterheading is the same as \thischapter except it is blank
- % for the first page of a chapter. This is to prevent the chapter name
+ % for the first page of a chapter. This is to prevent the chapter name
% being shown twice.
\def\thischapterheading{}%
\fi
%
+ % Common context changes for both heading and footing.
+ % Do this outside of the \shipout so @code etc. will be expanded in
+ % the headline as they should be, not taken literally (outputting ''code).
+ \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars}
+ %
\global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+ %
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
\global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
%
{%
@@ -374,37 +386,12 @@
% take effect in \write's, yet the group defined by the \vbox ends
% before the \shipout runs.
%
- \indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- % We don't want .vr (or whatever) entries like this:
- % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
- % "\acronym" won't work when it's read back in;
- % it needs to be
- % {\code {{\backslashcurfont }acronym}
+ \atdummies % don't expand commands in the output.
+ \turnoffactive
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
%
- \ifcropmarks \vbox to \outervsize\bgroup
- \hsize = \outerhsize
- \vskip-\topandbottommargin
- \vtop to0pt{%
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
- \vss}%
- \vskip\topandbottommargin
- \line\bgroup
- \hfil % center the page within the outer (page) hsize.
- \ifodd\pageno\hskip\bindingoffset\fi
- \vbox\bgroup
- \fi
- %
\unvbox\headlinebox
\pagebody{#1}%
\ifdim\ht\footlinebox > 0pt
@@ -415,24 +402,9 @@
\unvbox\footlinebox
\fi
%
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
- \vskip\topandbottommargin plus1fill minus1fill
- \boxmaxdepth = \cornerthick
- \vbox to0pt{\vss
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
- }%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
- }%
- \egroup % \vbox from first cropmarks clause
- \fi
- }% end of \shipout\vbox
- }% end of group with \indexdummies
+ }%
+ }%
+ \global\topmarksavedfalse
\advancepageno
\ifnum\outputpenalty>-20000 \else\dosupereject\fi
}
@@ -451,17 +423,6 @@
\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
}
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
% Argument parsing
@@ -487,11 +448,10 @@
}%
}
-% First remove any @comment, then any @c comment. Also remove a @texinfoc
-% comment (see \scanmacro for details). Pass the result on to \argcheckspaces.
+% First remove any @comment, then any @c comment. Pass the result on to
+% \argcheckspaces.
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
-\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
%
@@ -1092,7 +1052,7 @@ where each line of input produces a line of output.}
tex.sprint(
string.format(string.char(0x5c) .. string.char(0x25) .. '03o' ..
string.char(0x5c) .. string.char(0x25) .. '03o',
- (c / 256), (c % 256)))
+ math.floor(c / 256), math.floor(c % 256)))
else
c = c - 0x10000
local c_hi = c / 1024 + 0xd800
@@ -1102,8 +1062,8 @@ where each line of input produces a line of output.}
string.char(0x5c) .. string.char(0x25) .. '03o' ..
string.char(0x5c) .. string.char(0x25) .. '03o' ..
string.char(0x5c) .. string.char(0x25) .. '03o',
- (c_hi / 256), (c_hi % 256),
- (c_lo / 256), (c_lo % 256)))
+ math.floor(c_hi / 256), math.floor(c_hi % 256),
+ math.floor(c_lo / 256), math.floor(c_lo % 256)))
end
end
end
@@ -1116,15 +1076,19 @@ where each line of input produces a line of output.}
function PDFescstr(str)
for c in string.bytes(str) do
if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then
- tex.sprint(
+ tex.sprint(-2,
string.format(string.char(0x5c) .. string.char(0x25) .. '03o',
c))
else
- tex.sprint(string.char(c))
+ tex.sprint(-2, string.char(c))
end
end
end
}
+ % The -2 in the arguments here gives all the input to TeX catcode 12
+ % (other) or 10 (space), preventing undefined control sequence errors. See
+ % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html
+ %
\endgroup
\def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}}
\ifnum\luatexversion>84
@@ -1163,11 +1127,21 @@ where each line of input produces a line of output.}
\fi
\fi
+\newif\ifpdforxetex
+\pdforxetexfalse
+\ifpdf
+ \pdforxetextrue
+\fi
+\ifx\XeTeXrevision\thisisundefined\else
+ \pdforxetextrue
+\fi
+
+
% PDF uses PostScript string constants for the names of xref targets,
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-%
+%
% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
% related messages. The final outcome is that it is up to the TeX user
% to double the backslashes and otherwise make the string valid, so
@@ -1219,7 +1193,7 @@ output) for that.)}
% Set color, and create a mark which defines \thiscolor accordingly,
% so that \makeheadline knows which color to restore.
\def\setcolor#1{%
- \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
\domark
\pdfsetcolor{#1}%
}
@@ -1227,7 +1201,7 @@ output) for that.)}
\def\maincolor{\rgbBlack}
\pdfsetcolor{\maincolor}
\edef\thiscolor{\maincolor}
- \def\lastcolordefs{}
+ \def\currentcolordefs{}
%
\def\makefootline{%
\baselineskip24pt
@@ -1472,7 +1446,7 @@ output) for that.)}
% their "best" equivalent, based on the @documentencoding. Too
% much work for too little return. Just use the ASCII equivalents
% we use for the index sort strings.
- %
+ %
\indexnofonts
\setupdatafile
% We can have normal brace characters in the PDF outlines, unlike
@@ -1605,7 +1579,7 @@ output) for that.)}
% Set color, and create a mark which defines \thiscolor accordingly,
% so that \makeheadline knows which color to restore.
\def\setcolor#1{%
- \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
\domark
\pdfsetcolor{#1}%
}
@@ -1613,7 +1587,7 @@ output) for that.)}
\def\maincolor{\rgbBlack}
\pdfsetcolor{\maincolor}
\edef\thiscolor{\maincolor}
- \def\lastcolordefs{}
+ \def\currentcolordefs{}
%
\def\makefootline{%
\baselineskip24pt
@@ -2205,7 +2179,7 @@ end
% A few fonts for @defun names and args.
\setfont\defbf\bfshape{10}{\magstep1}{OT1}
\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
-\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
+\setfont\defsl\slshape{10}{\magstep1}{OT1}
\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
\def\df{\let\ttfont=\deftt \let\bffont = \defbf
\let\ttslfont=\defttsl \let\slfont=\defsl \bf}
@@ -2353,7 +2327,7 @@ end
% A few fonts for @defun names and args.
\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
-\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
+\setfont\defsl\slshape{10}{\magstephalf}{OT1}
\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
\def\df{\let\ttfont=\deftt \let\bffont = \defbf
\let\slfont=\defsl \let\ttslfont=\defttsl \bf}
@@ -2756,7 +2730,7 @@ end
}
% Commands to set the quote options.
-%
+%
\parseargdef\codequoteundirected{%
\def\temp{#1}%
\ifx\temp\onword
@@ -2797,7 +2771,7 @@ end
% If we are in a monospaced environment, however, 1) always use \ttsl,
% and 2) do not add an italic correction.
\def\dosmartslant#1#2{%
- \ifusingtt
+ \ifusingtt
{{\ttsl #2}\let\next=\relax}%
{\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
\next
@@ -2876,7 +2850,7 @@ end
% @t, explicit typewriter.
\def\t#1{%
- {\tt \rawbackslash \plainfrenchspacing #1}%
+ {\tt \plainfrenchspacing #1}%
\null
}
@@ -2903,7 +2877,6 @@ end
% Turn off hyphenation.
\nohyphenation
%
- \rawbackslash
\plainfrenchspacing
#1%
}%
@@ -2945,14 +2918,14 @@ end
\gdef\codedash{\futurelet\next\codedashfinish}
\gdef\codedashfinish{%
\normaldash % always output the dash character itself.
- %
+ %
% Now, output a discretionary to allow a line break, unless
% (a) the next character is a -, or
% (b) the preceding character is a -.
% E.g., given --posix, we do not want to allow a break after either -.
% Given --foo-bar, we do want to allow a break between the - and the b.
\ifx\next\codedash \else
- \ifx\codedashprev\codedash
+ \ifx\codedashprev\codedash
\else \discretionary{}{}{}\fi
\fi
% we need the space after the = for the case when \next itself is a
@@ -3034,7 +3007,7 @@ end
% For pdfTeX and LuaTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -3047,7 +3020,7 @@ end
% For XeTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -3090,41 +3063,33 @@ end
\global\def/{\normalslash}
}
-% we put a little stretch before and after the breakable chars, to help
-% line breaking of long url's. The unequal skips make look better in
-% cmtt at least, especially for dots.
-\def\urefprestretchamount{.13em}
-\def\urefpoststretchamount{.1em}
-\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax}
-\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax}
-%
-\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
-\def\urefcodedot{\urefprestretch .\urefpoststretch}
-\def\urefcodehash{\urefprestretch \#\urefpoststretch}
-\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeamp{\urefprebreak \&\urefpostbreak}
+\def\urefcodedot{\urefprebreak .\urefpostbreak}
+\def\urefcodehash{\urefprebreak \#\urefpostbreak}
+\def\urefcodequest{\urefprebreak ?\urefpostbreak}
\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
{
\catcode`\/=\active
\global\def\urefcodeslashfinish{%
- \urefprestretch \slashChar
+ \urefprebreak \slashChar
% Allow line break only after the final / in a sequence of
% slashes, to avoid line break between the slashes in http://.
- \ifx\next/\else \urefpoststretch \fi
+ \ifx\next/\else \urefpostbreak \fi
}
}
-% One more complication: by default we'll break after the special
-% characters, but some people like to break before the special chars, so
-% allow that. Also allow no breaking at all, for manual control.
-%
+% By default we'll break after the special characters, but some people like to
+% break before the special chars, so allow that. Also allow no breaking at
+% all, for manual control.
+%
\parseargdef\urefbreakstyle{%
\def\txiarg{#1}%
\ifx\txiarg\wordnone
\def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
\else\ifx\txiarg\wordbefore
- \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \def\urefprebreak{\urefallowbreak}\def\urefpostbreak{\nobreak}
\else\ifx\txiarg\wordafter
- \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\urefallowbreak}
\else
\errhelp = \EMsimple
\errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
@@ -3134,6 +3099,19 @@ end
\def\wordbefore{before}
\def\wordnone{none}
+% Allow a ragged right output to aid breaking long URL's. There can
+% be a break at the \allowbreak with no extra glue (if the existing stretch in
+% the line is sufficent), a break at the \penalty100 with extra glue added
+% at the end of the line, or no break at all here.
+% Changing the value of the penalty and/or the amount of stretch affects how
+% preferrable one choice is over the other.
+\def\urefallowbreak{%
+ \allowbreak
+ \hskip 0pt plus 4 em\relax
+ \penalty100
+ \hskip 0pt plus -4 em\relax
+}
+
\urefbreakstyle after
% @url synonym for @uref, since that's how everyone uses it.
@@ -3144,7 +3122,7 @@ end
% So now @email is just like @uref, unless we are pdf.
%
%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
+\ifpdforxetex
\def\email#1{\doemail#1,,\finish}
\def\doemail#1,#2,#3\finish{\begingroup
\unsepspaces
@@ -3154,18 +3132,7 @@ end
\endlink
\endgroup}
\else
- \ifx\XeTeXrevision\thisisundefined
- \let\email=\uref
- \else
- \def\email#1{\doemail#1,,\finish}
- \def\doemail#1,#2,#3\finish{\begingroup
- \unsepspaces
- \pdfurl{mailto:#1}%
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
- \endlink
- \endgroup}
- \fi
+ \let\email=\uref
\fi
% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
@@ -3341,7 +3308,7 @@ end
% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
% except specified as a normal braced arg, so no newlines to worry about.
-%
+%
\def\outfmtnametex{tex}
%
\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
@@ -3349,7 +3316,7 @@ end
\def\inlinefmtname{#1}%
\ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
}
-%
+%
% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
% FMTNAME is tex, else ELSE-TEXT.
\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
@@ -3365,7 +3332,7 @@ end
% *right* brace they would have to use a command anyway, so they may as
% well use a command to get a left brace too. We could re-use the
% delimiter character idea from \verb, but it seems like overkill.
-%
+%
\long\def\inlineraw{\tex \doinlineraw}
\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
\def\doinlinerawtwo#1,#2,\finish{%
@@ -3642,7 +3609,7 @@ end
% for non-CM glyphs. That is ec* for regular text and tc* for the text
% companion symbols (LaTeX TS1 encoding). Both are part of the ec
% package and follow the same conventions.
-%
+%
\def\ecfont{\etcfont{e}}
\def\tcfont{\etcfont{t}}
%
@@ -3714,7 +3681,7 @@ end
after the title page.}}%
\def\setshortcontentsaftertitlepage{%
\errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo
- command; move your @shortcontents and @contents commands if you
+ command; move your @shortcontents and @contents commands if you
want the contents after the title page.}}%
\parseargdef\shorttitlepage{%
@@ -3769,7 +3736,7 @@ end
% don't worry much about spacing, ragged right. This should be used
% inside a \vbox, and fonts need to be set appropriately first. \par should
% be specified before the end of the \vbox, since a vbox is a group.
-%
+%
\def\raggedtitlesettings{%
\rm
\hyphenpenalty=10000
@@ -4392,7 +4359,7 @@ end
}
% multitable-only commands.
-%
+%
% @headitem starts a heading row, which we typeset in bold. Assignments
% have to be global since we are inside the implicit group of an
% alignment entry. \everycr below resets \everytab so we don't have to
@@ -4699,19 +4666,6 @@ end
}
}
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file. This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-%
-% Unfortunately, this has the consequence that when _ is in the *value*
-% of an @set, it does not print properly in the roman fonts (get the cmr
-% dot accent at position 126 instead). No fix comes to mind, and it's
-% been this way since 2003 or earlier, so just ignore it.
-%
\def\expandablevalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
{[No value for ``#1'']}%
@@ -4724,13 +4678,13 @@ end
% Like \expandablevalue, but completely expandable (the \message in the
% definition above operates at the execution level of TeX). Used when
% writing to auxiliary files, due to the expansion that \write does.
-% If flag is undefined, pass through an unexpanded @value command: maybe it
+% If flag is undefined, pass through an unexpanded @value command: maybe it
% will be set by the time it is read back in.
%
% NB flag names containing - or _ may not work here.
\def\dummyvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
- \noexpand\value{#1}%
+ \string\value{#1}%
\else
\csname SET#1\endcsname
\fi
@@ -4740,7 +4694,7 @@ end
% if possible, otherwise sort late.
\def\indexnofontsvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
- ZZZZZZZ
+ ZZZZZZZ%
\else
\csname SET#1\endcsname
\fi
@@ -4748,7 +4702,7 @@ end
% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
% with @set.
-%
+%
% To get the special treatment we need for `@end ifset,' we call
% \makecond and then redefine.
%
@@ -4781,7 +4735,7 @@ end
% without the @) is in fact defined. We can only feasibly check at the
% TeX level, so something like `mathcode' is going to considered
% defined even though it is not a Texinfo command.
-%
+%
\makecond{ifcommanddefined}
\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
%
@@ -4889,30 +4843,16 @@ end
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
-
-% Used when writing an index entry out to an index file to prevent
-% expansion of Texinfo commands that can appear in an index entry.
-%
-\def\indexdummies{%
- \escapechar = `\\ % use backslash in output files.
- \definedummyletter\@%
- \definedummyletter\ %
- %
- % For texindex which always views { and } as separators.
- \def\{{\lbracechar{}}%
- \def\}{\rbracechar{}}%
- %
- % Do the redefinitions.
- \definedummies
-}
-% Used for the aux and toc files, where @ is the escape character.
+% Used for the aux, toc and index files to prevent expansion of Texinfo
+% commands.
%
\def\atdummies{%
\definedummyletter\@%
\definedummyletter\ %
\definedummyletter\{%
\definedummyletter\}%
+ \definedummyletter\&%
%
% Do the redefinitions.
\definedummies
@@ -4936,8 +4876,7 @@ end
\def\definedummyletter#1{\def#1{\string#1}}%
\let\definedummyaccent\definedummyletter
-% Called from \indexdummies and \atdummies, to effectively prevent
-% the expansion of commands.
+% Called from \atdummies to prevent the expansion of commands.
%
\def\definedummies{%
%
@@ -4984,8 +4923,10 @@ end
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\ampchar
\definedummyword\atchar
\definedummyword\arrow
+ \definedummyword\backslashchar
\definedummyword\bullet
\definedummyword\comma
\definedummyword\copyright
@@ -5022,6 +4963,8 @@ end
\definedummyword\sup
\definedummyword\textdegree
%
+ \definedummyword\subentry
+ %
% We want to disable all macros so that they are not expanded by \write.
\macrolist
\let\value\dummyvalue
@@ -5102,11 +5045,10 @@ end
\commondummyword\xref
}
-% For testing: output @{ and @} in index sort strings as \{ and \}.
-\newif\ifusebracesinindexes
-
\let\indexlbrace\relax
\let\indexrbrace\relax
+\let\indexatchar\relax
+\let\indexbackslash\relax
{\catcode`\@=0
\catcode`\\=13
@@ -5140,10 +5082,8 @@ end
}
\gdef\indexnonalnumreappear{%
- \useindexbackslash
\let-\normaldash
\let<\normalless
- \def\@{@}%
}
}
@@ -5251,39 +5191,19 @@ end
}
\def\defglyph#1#2{\def#1##1{#2}} % see above
-
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-% Most index entries go through here, but \dosubind is the general case.
% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-% TODO: Two-level index? Operation index?
-
-% Workhorse for all indexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
+\def\doind#1#2{%
\iflinks
{%
- \requireopenindexfile{#1}%
- % Store the main index entry text (including the third arg).
- \toks0 = {#2}%
- % If third arg is present, precede it with a space.
- \def\thirdarg{#3}%
- \ifx\thirdarg\empty \else
- \toks0 = \expandafter{\the\toks0 \space #3}%
- \fi
%
+ \requireopenindexfile{#1}%
\edef\writeto{\csname#1indfile\endcsname}%
%
- \safewhatsit\dosubindwrite
+ \def\indextext{#2}%
+ \safewhatsit\doindwrite
}%
\fi
}
@@ -5298,28 +5218,14 @@ end
\ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix
- % Using \immediate above here prevents an object entering into the current
+ % Using \immediate above here prevents an object entering into the current
% box, which could confound checks such as those in \safewhatsit for
% preceding skips.
\typeout{Writing index file \jobname.\suffix}%
\fi}
\def\indexisfl{fl}
-% Output \ as {\indexbackslash}, because \ is an escape character in
-% the index files.
-\let\indexbackslash=\relax
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@useindexbackslash{@def\{{@indexbackslash}}}
-}
-
-% Definition for writing index entry text.
-\def\sortas#1{\ignorespaces}%
-
-% Definition for writing index entry sort key. Should occur at the at
-% the beginning of the index entry, like
-% @cindex @sortas{september} \september
-% The \ignorespaces takes care of following space, but there's no way
-% to remove space before it.
+% Definition for writing index entry sort key.
{
\catcode`\-=13
\gdef\indexwritesortas{%
@@ -5330,51 +5236,150 @@ end
\xdef\indexsortkey{#1}\endgroup}
}
+\def\indexwriteseealso#1{
+ \gdef\pagenumbertext{\string\seealso{#1}}%
+}
+\def\indexwriteseeentry#1{
+ \gdef\pagenumbertext{\string\seeentry{#1}}%
+}
+
+% The default definitions
+\def\sortas#1{}%
+\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only
+\def\putwordSeeAlso{See also}
+\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only
+
-% Write the entry in \toks0 to the index file.
+% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}":
+% * Set \bracedtext to "{aaa}{bbb}"
+% * Set \fullindexsortkey to "aaa @subentry ZZZ"
+% * If @seealso occurs, set \pagenumbertext
%
-\def\dosubindwrite{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+\def\splitindexentry#1{%
+ \gdef\fullindexsortkey{}%
+ \xdef\bracedtext{}%
+ \def\sep{}%
+ \def\seealso##1{}%
+ \def\seeentry##1{}%
+ \expandafter\doindexsegment#1\subentry\finish\subentry
+}
+
+% append the results from the next segment
+\def\doindexsegment#1\subentry{%
+ \def\segment{#1}%
+ \ifx\segment\isfinish
+ \else
+ %
+ % Fully expand the segment, throwing away any @sortas directives, and
+ % trim spaces.
+ \edef\trimmed{\segment}%
+ \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
+ %
+ \xdef\bracedtext{\bracedtext{\trimmed}}%
+ %
+ % Get the string to sort by. Process the segment with all
+ % font commands turned off.
+ \bgroup
+ \let\sortas\indexwritesortas
+ \let\seealso\indexwriteseealso
+ \let\seeentry\indexwriteseeentry
+ \indexnofonts
+ % The braces around the commands are recognized by texindex.
+ \def\lbracechar{{\string\indexlbrace}}%
+ \def\rbracechar{{\string\indexrbrace}}%
+ \let\{=\lbracechar
+ \let\}=\rbracechar
+ \def\@{{\string\indexatchar}}%
+ \def\atchar##1{\@}%
+ \def\backslashchar{{\string\indexbackslash}}%
+ \uccode`\~=`\\ \uppercase{\let~\backslashchar}%
+ %
+ \let\indexsortkey\empty
+ \global\let\pagenumbertext\empty
+ % Execute the segment and throw away the typeset output. This executes
+ % any @sortas or @seealso commands in this segment.
+ \setbox\dummybox = \hbox{\segment}%
+ \ifx\indexsortkey\empty{%
+ \indexnonalnumdisappear
+ \xdef\trimmed{\segment}%
+ \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
+ \xdef\indexsortkey{\trimmed}%
+ \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
+ }\fi
+ %
+ % Append to \fullindexsortkey.
+ \edef\tmp{\gdef\noexpand\fullindexsortkey{%
+ \fullindexsortkey\sep\indexsortkey}}%
+ \tmp
+ \egroup
+ \def\sep{\subentry}%
+ %
+ \expandafter\doindexsegment
+ \fi
+}
+\def\isfinish{\finish}%
+\newbox\dummybox % used above
+
+\let\subentry\relax
+
+% Use \ instead of @ in index files. To support old texi2dvi and texindex.
+% This works without changing the escape character used in the toc or aux
+% files because the index entries are fully expanded here, and \string uses
+% the current value of \escapechar.
+\def\escapeisbackslash{\escapechar=`\\}
+
+% Use \ in index files by default. texi2dvi didn't support @ as the escape
+% character (as it checked for "\entry" in the files, and not "@entry"). When
+% the new version of texi2dvi has had a chance to become more prevalent, then
+% the escape character can change back to @ again. This should be an easy
+% change to make now because both @ and \ are only used as escape characters in
+% index files, never standing for themselves.
+%
+\set txiindexescapeisbackslash
+
+% Write the entry in \indextext to the index file.
+%
+\def\doindwrite{%
+ \maybemarginindex
+ %
+ \atdummies
+ %
+ \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else
+ \escapeisbackslash
\fi
%
- % Remember, we are within a group.
- \indexdummies % Must do this here, since \bf, etc expand at this stage
- \useindexbackslash % \indexbackslash isn't defined now so it will be output
- % as is; and it will print as backslash.
- % The braces around \indexbrace are recognized by texindex.
- %
- % Get the string to sort by, by processing the index entry with all
- % font commands turned off.
- {\indexnofonts
- \def\lbracechar{{\indexlbrace}}%
- \def\rbracechar{{\indexrbrace}}%
- \let\{=\lbracechar
- \let\}=\rbracechar
- \indexnonalnumdisappear
- \xdef\indexsortkey{}%
- \let\sortas=\indexwritesortas
- \edef\temp{\the\toks0}%
- \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas
- \ifx\indexsortkey\empty
- \xdef\indexsortkey{\temp}%
- \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
- \fi
- }%
+ % For texindex which always views { and } as separators.
+ \def\{{\lbracechar{}}%
+ \def\}{\rbracechar{}}%
+ \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}%
+ %
+ % Split the entry into primary entry and any subentries, and get the index
+ % sort key.
+ \splitindexentry\indextext
%
% Set up the complete index entry, with both the sort key and
% the original text, including any font commands. We write
% three arguments to \entry to the .?? file (four in the
% subentry case), texindex reduces to two when writing the .??s
% sorted result.
+ %
\edef\temp{%
\write\writeto{%
- \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}%
+ \string\entry{\fullindexsortkey}%
+ {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}%
+ \bracedtext}%
}%
\temp
}
-\newbox\dummybox % used above
+
+% Put the index entry in the margin if desired (undocumented).
+\def\maybemarginindex{%
+ \ifx\SETmarginindex\relax\else
+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}%
+ \fi
+}
+\let\SETmarginindex=\relax
+
% Take care of unwanted page breaks/skips around a whatsit:
%
@@ -5462,9 +5467,14 @@ end
% \entry {topic}{pagelist}
% for a topic that is used without subtopics
% \primary {topic}
+% \entry {topic}{}
% for the beginning of a topic that is used with subtopics
% \secondary {subtopic}{pagelist}
% for each subtopic.
+% \secondary {subtopic}{}
+% for a subtopic with sub-subtopics
+% \tertiary {subtopic}{subsubtopic}{pagelist}
+% for each sub-subtopic.
% Define the user-accessible indexing commands
% @findex, @vindex, @kindex, @cindex.
@@ -5476,11 +5486,6 @@ end
\def\tindex {\tpindex}
\def\pindex {\pgindex}
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
% Define the macros used in formatting output of the sorted index material.
% @printindex causes a particular index (the ??s file) to get printed.
@@ -5494,14 +5499,10 @@ end
\plainfrenchspacing
\everypar = {}% don't want the \kern\-parindent from indentation suppression.
%
- % See if the index file exists and is nonempty.
- % Change catcode of @ here so that if the index file contains
- % \initial {@}
- % as its first line, TeX doesn't complain about mismatched braces
- % (because it thinks @} is a control sequence).
- \catcode`\@ = 12
% See comment in \requireopenindexfile.
\def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
+ %
+ % See if the index file exists and is nonempty.
\openin 1 \jobname.\indexname s
\ifeof 1
% \enddoublecolumns gets confused if there is no text in the index,
@@ -5511,8 +5512,6 @@ end
\putwordIndexNonexistent
\typeout{No file \jobname.\indexname s.}%
\else
- \catcode`\\ = 0
- %
% If the index file exists but is empty, then \openin leaves \ifeof
% false. We have to make TeX try to read something from the file, so
% it can discover if there is anything in it.
@@ -5520,47 +5519,51 @@ end
\ifeof 1
\putwordIndexIsEmpty
\else
- % Index files are almost Texinfo source, but we use \ as the escape
- % character. It would be better to use @, but that's too big a change
- % to make right now.
- \def\indexbackslash{\ttbackslash}%
- \let\indexlbrace\{ % Likewise, set these sequences for braces
- \let\indexrbrace\} % used in the sort key.
- \begindoublecolumns
- \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty
- %
- % Read input from the index file line by line.
- \loopdo
- \ifeof1 \else
- \read 1 to \nextline
- \fi
- %
- \indexinputprocessing
- \thisline
- %
- \ifeof1\else
- \let\thisline\nextline
- \repeat
- %%
- \enddoublecolumns
+ \expandafter\printindexzz\thisline\relax\relax\finish%
\fi
\fi
\closein 1
\endgroup}
-\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
-\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
-\def\indexinputprocessing{%
- \ifeof1
- \let\firsttoken\relax
+% If the index file starts with a backslash, forgo reading the index
+% file altogether. If somebody upgrades texinfo.tex they may still have
+% old index files using \ as the escape character. Reading this would
+% at best lead to typesetting garbage, at worst a TeX syntax error.
+\def\printindexzz#1#2\finish{%
+ \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax
+ \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
+ \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax
+\errmessage{%
+ERROR: A sorted index file in an obsolete format was skipped.
+To fix this problem, please upgrade your version of 'texi2dvi'
+or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>.
+If you are using an old version of 'texindex' (part of the Texinfo
+distribution), you may also need to upgrade to a newer version (at least 6.0).
+You may be able to typeset the index if you run
+'texindex \jobname.\indexname' yourself.
+You could also try setting the 'txiindexescapeisbackslash' flag by
+running a command like
+'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
+this, Texinfo will try to use index files in the old format.
+If you continue to have problems, deleting the index files and starting again
+might help (with 'rm \jobname.?? \jobname.??s')%
+}%
+ \else
+ (Skipped sorted index file in obsolete format)
+ \fi
+ \else
+ \begindoublecolumns
+ \input \jobname.\indexname s
+ \enddoublecolumns
+ \fi
\else
- \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
- \act
+ \begindoublecolumns
+ \catcode`\\=0\relax
+ \catcode`\@=12\relax
+ \input \jobname.\indexname s
+ \enddoublecolumns
\fi
}
-\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
-\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
-
% These macros are used by the sorted index file itself.
% Change them to control the appearance of the index.
@@ -5569,12 +5572,19 @@ end
\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
\catcode`\$=3
\gdef\initialglyphs{%
+ % special control sequences used in the index sort key
+ \let\indexlbrace\{%
+ \let\indexrbrace\}%
+ \let\indexatchar\@%
+ \def\indexbackslash{\math{\backslash}}%
+ %
% Some changes for non-alphabetic characters. Using the glyphs from the
% math fonts looks more consistent than the typewriter font used elsewhere
% for these characters.
- \def\indexbackslash{\math{\backslash}}%
- \let\\=\indexbackslash
+ \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}}
%
+ % In case @\ is used for backslash
+ \uppercase{\let\\=~}
% Can't get bold backslash so don't use bold forward slash
\catcode`\/=13
\def/{{\secrmnotbold \normalslash}}%
@@ -5604,7 +5614,7 @@ end
% bottom of a column to reduce an increase in inter-line spacing.
\nobreak
\vskip 0pt plus 5\baselineskip
- \penalty -300
+ \penalty -300
\vskip 0pt plus -5\baselineskip
%
% Typeset the initial. Making this add up to a whole number of
@@ -5634,12 +5644,6 @@ end
\def\entry{%
\begingroup
%
- % For pdfTeX and XeTeX.
- % The redefinition of \domark stops marks being added in \pdflink to
- % preserve coloured links across page boundaries. Otherwise the marks
- % would get in the way of \lastbox in \insertentrybox.
- \let\domark\relax
- %
% Start a new paragraph if necessary, so our assignments below can't
% affect previous text.
\par
@@ -5672,35 +5676,31 @@ end
\gdef\finishentry#1{%
\egroup % end box A
\dimen@ = \wd\boxA % Length of text of entry
- \global\setbox\boxA=\hbox\bgroup\unhbox\boxA
- % #1 is the page number.
- %
- % Get the width of the page numbers, and only use
- % leaders if they are present.
- \global\setbox\boxB = \hbox{#1}%
- \ifdim\wd\boxB = 0pt
- \null\nobreak\hfill\ %
- \else
- %
- \null\nobreak\indexdotfill % Have leaders before the page number.
+ \global\setbox\boxA=\hbox\bgroup
+ \unhbox\boxA
+ % #1 is the page number.
%
- \ifpdf
- \pdfgettoks#1.%
- \hskip\skip\thinshrinkable\the\toksA
+ % Get the width of the page numbers, and only use
+ % leaders if they are present.
+ \global\setbox\boxB = \hbox{#1}%
+ \ifdim\wd\boxB = 0pt
+ \null\nobreak\hfill\ %
\else
- \ifx\XeTeXrevision\thisisundefined
- \hskip\skip\thinshrinkable #1%
- \else
+ %
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ \ifpdforxetex
\pdfgettoks#1.%
\hskip\skip\thinshrinkable\the\toksA
+ \else
+ \hskip\skip\thinshrinkable #1%
\fi
\fi
- \fi
\egroup % end \boxA
\ifdim\wd\boxB = 0pt
- \global\setbox\entrybox=\vbox{\unhbox\boxA}%
- \else
- \global\setbox\entrybox=\vbox\bgroup
+ \noindent\unhbox\boxA\par
+ \nobreak
+ \else\bgroup
% We want the text of the entries to be aligned to the left, and the
% page numbers to be aligned to the right.
%
@@ -5730,7 +5730,7 @@ end
\advance\dimen@ii by 1\dimen@i
\ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text
- % Try to split the text roughly evenly. \dimen@ will be the length of
+ % Try to split the text roughly evenly. \dimen@ will be the length of
% the first line.
\dimen@ = 0.7\dimen@
\dimen@ii = \hsize
@@ -5766,55 +5766,11 @@ end
\egroup % The \vbox
\fi
\endgroup
- \dotheinsertentrybox
}}
\newskip\thinshrinkable
\skip\thinshrinkable=.15em minus .15em
-\newbox\entrybox
-\def\insertentrybox{%
- \ourunvbox\entrybox
-}
-
-% default definition
-\let\dotheinsertentrybox\insertentrybox
-
-% Use \lastbox to take apart vbox box by box, and add each sub-box
-% to the current vertical list.
-\def\ourunvbox#1{%
-\bgroup % for local binding of \delayedbox
- % Remove the last box from box #1
- \global\setbox#1=\vbox{%
- \unvbox#1%
- \unskip % remove any glue
- \unpenalty
- \global\setbox\interbox=\lastbox
- }%
- \setbox\delayedbox=\box\interbox
- \ifdim\ht#1=0pt\else
- \ourunvbox#1 % Repeat on what's left of the box
- \nobreak
- \fi
- \box\delayedbox
-\egroup
-}
-\newbox\delayedbox
-\newbox\interbox
-
-% Used from \printindex. \firsttoken should be the first token
-% after the \entry. If it's not another \entry, we are at the last
-% line of a group of index entries, so insert a penalty to discourage
-% widowed index entries.
-\def\dotheinsertentryboxwithpenalty{%
- \ifx\firsttoken\isentry
- \else
- \penalty 9000
- \fi
- \insertentrybox
-}
-\def\isentry{\entry}%
-
% Like plain.tex's \dotfill, except uses up at least 1 em.
% The filll stretch here overpowers both the fil and fill stretch to push
% the page number to the right.
@@ -5824,24 +5780,15 @@ end
\def\primary #1{\line{#1\hfil}}
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
- \parfillskip=0in
- \parskip=0in
- \hangindent=1in
- \hangafter=1
- \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- \ifx\XeTeXrevision\thisisundefined
- #2
- \else
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \fi
- \fi
- \par
-}}
+\def\secondary{\indententry{0.5cm}}
+\def\tertiary{\indententry{1cm}}
+
+\def\indententry#1#2#3{%
+ \bgroup
+ \leftskip=#1
+ \entry{#2}{#3}%
+ \egroup
+}
% Define two-column mode, which we use to typeset indexes.
% Adapted from the TeXbook, page 416, which is to say,
@@ -5851,60 +5798,21 @@ end
\newbox\partialpage
\newdimen\doublecolumnhsize
-% Use inside an output routine to save \topmark and \firstmark
-\def\savemarks{%
- \global\savedtopmark=\expandafter{\topmark }%
- \global\savedfirstmark=\expandafter{\firstmark }%
-}
-\newtoks\savedtopmark
-\newtoks\savedfirstmark
-
-% Set \topmark and \firstmark for next time \output runs.
-% Can't be run from withinside \output (because any material
-% added while an output routine is active, including
-% penalties, is saved for after it finishes). The page so far
-% should be empty, otherwise what's on it will be thrown away.
-\def\restoremarks{%
- \mark{\the\savedtopmark}%
- \bgroup\output = {%
- \setbox\dummybox=\box\PAGE
- }abc\eject\egroup
- % "abc" because output routine doesn't fire for a completely empty page.
- \mark{\the\savedfirstmark}%
-}
-
\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
% If not much space left on page, start a new page.
\ifdim\pagetotal>0.8\vsize\vfill\eject\fi
%
% Grab any single-column material above us.
\output = {%
- %
- % Here is a possibility not foreseen in manmac: if we accumulate a
- % whole lot of material, we might end up calling this \output
- % routine twice in a row (see the doublecol-lose test, which is
- % essentially a couple of indexes with @setchapternewpage off). In
- % that case we just ship out what is in \partialpage with the normal
- % output routine. Generally, \partialpage will be empty when this
- % runs and this will be a no-op. See the indexspread.tex test case.
- \ifvoid\partialpage \else
- \onepageout{\pagecontents\partialpage}%
- \fi
+ \savetopmark
%
\global\setbox\partialpage = \vbox{%
% Unvbox the main output page.
\unvbox\PAGE
\kern-\topskip \kern\baselineskip
}%
- \savemarks
}%
\eject % run that output routine to set \partialpage
- \restoremarks
- %
- % We recover the two marks that the last output routine saved in order
- % to propagate the information in marks added around a chapter heading,
- % which could be otherwise be lost by the time the final page is output.
- %
%
% Use the double-column output routine for subsequent pages.
\output = {\doublecolumnout}%
@@ -5930,7 +5838,9 @@ end
\divide\doublecolumnhsize by 2
\hsize = \doublecolumnhsize
%
- % Double the \vsize as well.
+ % Get the available space for the double columns -- the normal
+ % (undoubled) page height minus any material left over from the
+ % previous page.
\advance\vsize by -\ht\partialpage
\vsize = 2\vsize
%
@@ -5943,17 +5853,15 @@ end
%
\def\doublecolumnout{%
%
+ \savetopmark
\splittopskip=\topskip \splitmaxdepth=\maxdepth
- % Get the available space for the double columns -- the normal
- % (undoubled) page height minus any material left over from the
- % previous page.
\dimen@ = \vsize
\divide\dimen@ by 2
%
% box0 will be the left-hand column, box2 the right.
\setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@
\global\advance\vsize by 2\ht\partialpage
- \onepageout\pagesofar
+ \onepageout\pagesofar % empty except for the first time we are called
\unvbox\PAGE
\penalty\outputpenalty
}
@@ -5969,7 +5877,7 @@ end
}
-% Finished with with double columns.
+% Finished with double columns.
\def\enddoublecolumns{%
% The following penalty ensures that the page builder is exercised
% _before_ we change the output routine. This is necessary in the
@@ -6001,7 +5909,7 @@ end
%
\output = {%
% Split the last of the double-column material.
- \savemarks
+ \savetopmark
\balancecolumns
}%
\eject % call the \output just set
@@ -6009,10 +5917,9 @@ end
% Having called \balancecolumns once, we do not
% want to call it again. Therefore, reset \output to its normal
% definition right away.
- \global\output = {\onepageout{\pagecontents\PAGE}}%
+ \global\output=\expandafter{\the\defaultoutput}
%
\endgroup % started in \begindoublecolumns
- \restoremarks
% Leave the double-column material on the current page, no automatic
% page break.
\box\balancedcolumns
@@ -6031,18 +5938,19 @@ end
\newbox\balancedcolumns
\setbox\balancedcolumns=\vbox{shouldnt see this}%
%
-% Only called for the last of the double column material. \doublecolumnout
+% Only called for the last of the double column material. \doublecolumnout
% does the others.
\def\balancecolumns{%
\setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120.
\dimen@ = \ht0
- \advance\dimen@ by \topskip
- \advance\dimen@ by-\baselineskip
- \ifdim\dimen@<5\baselineskip
+ \ifdim\dimen@<7\baselineskip
% Don't split a short final column in two.
\setbox2=\vbox{}%
\global\setbox\balancedcolumns=\vbox{\pagesofar}%
\else
+ % double the leading vertical space
+ \advance\dimen@ by \topskip
+ \advance\dimen@ by-\baselineskip
\divide\dimen@ by 2 % target to split to
\dimen@ii = \dimen@
\splittopskip = \topskip
@@ -6058,7 +5966,7 @@ end
}%
% Now the left column is in box 1, and the right column in box 3.
%
- % Check whether the left column has come out higher than the page itself.
+ % Check whether the left column has come out higher than the page itself.
% (Note that we have doubled \vsize for the double columns, so
% the actual height of the page is 0.5\vsize).
\ifdim2\ht1>\vsize
@@ -6177,11 +6085,9 @@ end
% @raisesections: treat @section as chapter, @subsection as section, etc.
\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
% @lowersections: treat @chapter as section, @section as subsection, etc.
\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
% we only have subsub.
\chardef\maxseclevel = 3
@@ -6357,7 +6263,7 @@ end
\let\top\unnumbered
% Sections.
-%
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
@@ -6380,7 +6286,7 @@ end
}
% Subsections.
-%
+%
% normally calls numberedsubseczzz:
\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
@@ -6405,7 +6311,7 @@ end
}
% Subsubsections.
-%
+%
% normally numberedsubsubseczzz:
\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
@@ -6526,27 +6432,22 @@ end
\expandafter\ifx\thisenv\titlepage\else
\checkenv{}% chapters, etc., should not start inside an environment.
\fi
- % FIXME: \chapmacro is currently called from inside \titlepage when
- % \setcontentsaftertitlepage to print the "Table of Contents" heading, but
- % this should probably be done by \sectionheading with an option to print
- % in chapter size.
- %
% Insert the first mark before the heading break (see notes for \domark).
- \let\prevchapterdefs=\lastchapterdefs
- \let\prevsectiondefs=\lastsectiondefs
- \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \let\prevchapterdefs=\currentchapterdefs
+ \let\prevsectiondefs=\currentsectiondefs
+ \gdef\currentsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
\gdef\thissection{}}%
%
\def\temptype{#2}%
\ifx\temptype\Ynothingkeyword
- \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
\gdef\thischapter{\thischaptername}}%
\else\ifx\temptype\Yomitfromtockeyword
- \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
\gdef\thischapter{}}%
\else\ifx\temptype\Yappendixkeyword
\toks0={#1}%
- \xdef\lastchapterdefs{%
+ \xdef\currentchapterdefs{%
\gdef\noexpand\thischaptername{\the\toks0}%
\gdef\noexpand\thischapternum{\appendixletter}%
% \noexpand\putwordAppendix avoids expanding indigestible
@@ -6557,7 +6458,7 @@ end
}%
\else
\toks0={#1}%
- \xdef\lastchapterdefs{%
+ \xdef\currentchapterdefs{%
\gdef\noexpand\thischaptername{\the\toks0}%
\gdef\noexpand\thischapternum{\the\chapno}%
% \noexpand\putwordChapter avoids expanding indigestible
@@ -6577,18 +6478,18 @@ end
%
% Now the second mark, after the heading break. No break points
% between here and the heading.
- \let\prevchapterdefs=\lastchapterdefs
- \let\prevsectiondefs=\lastsectiondefs
+ \let\prevchapterdefs=\currentchapterdefs
+ \let\prevsectiondefs=\currentsectiondefs
\domark
%
{%
\chapfonts \rm
\let\footnote=\errfootnoteheading % give better error message
%
- % Have to define \lastsection before calling \donoderef, because the
+ % Have to define \currentsection before calling \donoderef, because the
% xref code eventually uses it. On the other hand, it has to be called
% after \pchapsepmacro, or the headline will change too soon.
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
%
% Only insert the separating space if we have a chapter/appendix
% number, and don't print the unnumbered ``number''.
@@ -6677,10 +6578,10 @@ end
\csname #2fonts\endcsname \rm
%
% Insert first mark before the heading break (see notes for \domark).
- \let\prevsectiondefs=\lastsectiondefs
+ \let\prevsectiondefs=\currentsectiondefs
\ifx\temptype\Ynothingkeyword
\ifx\sectionlevel\seckeyword
- \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\currentsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
\gdef\thissection{\thissectionname}}%
\fi
\else\ifx\temptype\Yomitfromtockeyword
@@ -6688,7 +6589,7 @@ end
\else\ifx\temptype\Yappendixkeyword
\ifx\sectionlevel\seckeyword
\toks0={#1}%
- \xdef\lastsectiondefs{%
+ \xdef\currentsectiondefs{%
\gdef\noexpand\thissectionname{\the\toks0}%
\gdef\noexpand\thissectionnum{#4}%
% \noexpand\putwordSection avoids expanding indigestible
@@ -6701,7 +6602,7 @@ end
\else
\ifx\sectionlevel\seckeyword
\toks0={#1}%
- \xdef\lastsectiondefs{%
+ \xdef\currentsectiondefs{%
\gdef\noexpand\thissectionname{\the\toks0}%
\gdef\noexpand\thissectionnum{#4}%
% \noexpand\putwordSection avoids expanding indigestible
@@ -6727,28 +6628,28 @@ end
%
% Now the second mark, after the heading break. No break points
% between here and the heading.
- \global\let\prevsectiondefs=\lastsectiondefs
+ \global\let\prevsectiondefs=\currentsectiondefs
\domark
%
% Only insert the space after the number if we have a section number.
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unn}%
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
\else\ifx\temptype\Yomitfromtockeyword
% for @headings -- no section number, don't include in toc,
- % and don't redefine \lastsection.
+ % and don't redefine \currentsection.
\setbox0 = \hbox{}%
\def\toctype{omit}%
\let\sectionlevel=\empty
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{#4\enspace}%
\def\toctype{app}%
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
\else
\setbox0 = \hbox{#4\enspace}%
\def\toctype{num}%
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
\fi\fi\fi
%
% Write the toc entry (before \donoderef). See comments in \chapmacro.
@@ -6838,13 +6739,8 @@ end
% 1 and 2 (the page numbers aren't printed), and so are the first
% two pages of the document. Thus, we'd have two destinations named
% `1', and two named `2'.
- \ifpdf
+ \ifpdforxetex
\global\pdfmakepagedesttrue
- \else
- \ifx\XeTeXrevision\thisisundefined
- \else
- \global\pdfmakepagedesttrue
- \fi
\fi
}
@@ -7207,11 +7103,7 @@ end
% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
+
%
\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
\def\ctr{{\hskip 6pt\circle\char'010}}
@@ -7226,7 +7118,18 @@ end
%
\newskip\lskip\newskip\rskip
+% only require the font if @cartouche is actually used
+\def\cartouchefontdefs{%
+ \font\circle=lcircle10\relax
+ \circthick=\fontdimen8\circle
+}
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+
+
\envdef\cartouche{%
+ \cartouchefontdefs
\ifhmode\par\fi % can't be in the midst of a paragraph.
\startsavinginserts
\lskip=\leftskip \rskip=\rightskip
@@ -7405,13 +7308,9 @@ end
% @raggedright does more-or-less normal line breaking but no right
-% justification. From plain.tex. Don't stretch around special
-% characters in urls in this environment, since the stretch at the right
-% should be enough.
+% justification. From plain.tex.
\envdef\raggedright{%
\rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax
- \def\urefprestretchamount{0pt}%
- \def\urefpoststretchamount{0pt}%
}
\let\Eraggedright\par
@@ -7470,7 +7369,7 @@ end
% @indentedblock is like @quotation, but indents only on the left and
% has no optional argument.
-%
+%
\makedispenvdef{indentedblock}{\indentedblockstart}
%
\def\indentedblockstart{%
@@ -7573,7 +7472,7 @@ end
\nonfillstart
\tt % easiest (and conventionally used) font for verbatim
% The \leavevmode here is for blank lines. Otherwise, we would
- % never \starttabox and the \egroup would end verbatim mode.
+ % never \starttabbox and the \egroup would end verbatim mode.
\def\par{\leavevmode\egroup\box\verbbox\endgraf}%
\tabexpand
\setupmarkupstyle{verbatim}%
@@ -7636,9 +7535,12 @@ end
{%
\makevalueexpandable
\setupverbatim
- \indexnofonts % Allow `@@' and other weird things in file names.
- \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
- \input #1
+ {%
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
+ \edef\tmp{\noexpand\input #1 }
+ \expandafter
+ }\tmp
\afterenvbreak
}%
}
@@ -7767,7 +7669,7 @@ end
% @deftypefnnewline on|off says whether the return type of typed functions
% are printed on their own line. This affects @deftypefn, @deftypefun,
% @deftypeop, and @deftypemethod.
-%
+%
\parseargdef\deftypefnnewline{%
\def\temp{#1}%
\ifx\temp\onword
@@ -7783,6 +7685,21 @@ end
\fi\fi
}
+% \dosubind {index}{topic}{subtopic}
+%
+% If SUBTOPIC is present, precede it with a space, and call \doind.
+% (At some time during the 20th century, this made a two-level entry in an
+% index such as the operation index. Nobody seemed to notice the change in
+% behaviour though.)
+\def\dosubind#1#2#3{%
+ \def\thirdarg{#3}%
+ \ifx\thirdarg\empty
+ \doind{#1}{#2}%
+ \else
+ \doind{#1}{#2\space#3}%
+ \fi
+}
+
% Untyped functions:
% @deffn category name args
@@ -7797,7 +7714,6 @@ end
% \deffngeneral {subind}category name args
%
\def\deffngeneral#1#2 #3 #4\endheader{%
- % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
\dosubind{fn}{\code{#3}}{#1}%
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
@@ -7948,7 +7864,7 @@ end
\tclose{\temp}% typeset the return type
\ifrettypeownline
% put return type on its own line; prohibit line break following:
- \hfil\vadjust{\nobreak}\break
+ \hfil\vadjust{\nobreak}\break
\else
\space % type on same line, so just followed by a space
\fi
@@ -8085,36 +8001,18 @@ end
}
\fi
-% alias because \c means cedilla in @tex or @math
-\let\texinfoc=\c
-
-\newcount\savedcatcodeone
-\newcount\savedcatcodetwo
-
% Used at the time of macro expansion.
% Argument is macro body with arguments substituted
\def\scanmacro#1{%
\newlinechar`\^^M
\def\xeatspaces{\eatspaces}%
%
- % Temporarily undo catcode changes of \printindex. Set catcode of @ to
- % 0 so that @-commands in macro expansions aren't printed literally when
- % formatting an index file, where \ is used as the escape character.
- \savedcatcodeone=\catcode`\@
- \savedcatcodetwo=\catcode`\\
- \catcode`\@=0
- \catcode`\\=\active
- %
% Process the macro body under the current catcode regime.
- \scantokens{#1@texinfoc}%
- %
- \catcode`\@=\savedcatcodeone
- \catcode`\\=\savedcatcodetwo
+ \scantokens{#1@comment}%
%
- % The \texinfoc is to remove the \newlinechar added by \scantokens, and
- % can be noticed by \parsearg.
- % We avoid surrounding the call to \scantokens with \bgroup and \egroup
- % to allow macros to open or close groups themselves.
+ % The \comment is to remove the \newlinechar added by \scantokens, and
+ % can be noticed by \parsearg. Note \c isn't used because this means cedilla
+ % in math mode.
}
% Used for copying and captions
@@ -8215,12 +8113,14 @@ end
\def\macroargctxt{%
\scanctxt
\catcode`\ =\active
+ \catcode`\@=\other
\catcode`\^^M=\other
\catcode`\\=\active
}
\def\macrolineargctxt{% used for whole-line arguments without braces
\scanctxt
+ \catcode`\@=\other
\catcode`\{=\other
\catcode`\}=\other
}
@@ -8312,7 +8212,7 @@ end
% list to some hook where the argument is to be expanded. If there are
% less than 10 arguments that hook is to be replaced by ##N where N
% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.
+% defined `a la TeX in the macro body.
%
% That gets used by \mbodybackslash (above).
%
@@ -8343,8 +8243,8 @@ end
%
% Read recursive and nonrecursive macro bodies. (They're different since
% rec and nonrec macros end differently.)
-%
-% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
+%
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
% body to be transformed.
% Set \macrobody to the body of the macro, and call \defmacro.
%
@@ -8378,7 +8278,7 @@ end
% twice the \macarg.BLAH macros does not cost too much processing power.
\def\parsemmanyargdef@@#1,{%
\if#1;\let\next=\relax
- \else
+ \else
\let\next=\parsemmanyargdef@@
\edef\tempb{\eatspaces{#1}}%
\expandafter\def\expandafter\tempa
@@ -8463,7 +8363,7 @@ end
% Replace arguments by their values in the macro body, and place the result
% in macro \@tempa.
-%
+%
\def\macvalstoargs@{%
% To do this we use the property that token registers that are \the'ed
% within an \edef expand only once. So we are going to place all argument
@@ -8487,9 +8387,9 @@ end
\expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
}
-% Define the named-macro outside of this group and then close this group.
-%
-\def\macargexpandinbody@{%
+% Define the named-macro outside of this group and then close this group.
+%
+\def\macargexpandinbody@{%
\expandafter
\endgroup
\macargdeflist@
@@ -8527,7 +8427,7 @@ end
}
% Trailing missing arguments are set to empty.
-%
+%
\def\setemptyargvalues@{%
\ifx\paramlist\nilm@
\let\next\macargexpandinbody@
@@ -8604,7 +8504,7 @@ end
\else % at most 9
\ifnum\paramno<10\relax
% @MACNAME sets the context for reading the macro argument
- % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
% comma.
% @MACNAME@@@ removes braces surrounding the argument list.
% @MACNAME@@@@ scans the macro body with arguments substituted.
@@ -8648,11 +8548,11 @@ end
% Call #1 with a list of tokens #2, with any doubled backslashes in #2
% compressed to one.
%
-% This implementation works by expansion, and not execution (so we cannot use
-% \def or similar). This reduces the risk of this failing in contexts where
-% complete expansion is done with no execution (for example, in writing out to
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar). This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
% an auxiliary file for an index entry).
-%
+%
% State is kept in the input stream: the argument passed to
% @look_ahead, @gobble_and_check_finish and @add_segment is
%
@@ -8674,11 +8574,11 @@ end
% #3 - NEXT_TOKEN
% #4 used to look ahead
%
-% If the next token is not a backslash, process the rest of the argument;
+% If the next token is not a backslash, process the rest of the argument;
% otherwise, remove the next token.
@gdef@look_ahead#1!#2#3#4{%
@ifx#4\%
- @expandafter@gobble_and_check_finish
+ @expandafter@gobble_and_check_finish
@else
@expandafter@add_segment
@fi#1!{#2}#4#4%
@@ -8702,9 +8602,9 @@ end
% #3 - NEXT_TOKEN
% #4 is input stream until next backslash
%
-% Input stream is either at the start of the argument, or just after a
-% backslash sequence, either a lone backslash, or a doubled backslash.
-% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
+% Input stream is either at the start of the argument, or just after a
+% backslash sequence, either a lone backslash, or a doubled backslash.
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
% finish; otherwise, append to ARG_RESULT the segment of the argument up until
% the next backslash. PENDING_BACKSLASH contains a backslash to represent
% a backslash just before the start of the input stream that has not been
@@ -8716,13 +8616,13 @@ end
% append the pending backslash to the result, followed by the next segment
@expandafter@is_fi@look_ahead#1#2#4!{\}@fi
% this @fi is discarded by @look_ahead.
- % we can't get rid of it with \expandafter because we don't know how
+ % we can't get rid of it with \expandafter because we don't know how
% long #4 is.
}
% #1 - THE_MACRO
% #2 - ARG_RESULT
-% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
% conditional.
@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
@@ -8734,7 +8634,7 @@ end
% for reading the argument (slightly different in the two cases). Then,
% to read the argument, in the whole-line case, it then calls the regular
% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
-%
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup
@@ -8784,9 +8684,29 @@ end
% also remove a trailing comma, in case of something like this:
% @node Help-Cross, , , Cross-refs
\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
-\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode}
+
+% Used so that the @top node doesn't have to be wrapped in an @ifnottex
+% conditional.
+% \doignore goes to more effort to skip nested conditionals but we don't need
+% that here.
+\def\omittopnode{%
+ \ifx\lastnode\wordTop
+ \expandafter\ignorenode\fi
+}
+\def\wordTop{Top}
+
+% Until the next @node or @bye command, divert output to a box that is not
+% output.
+\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}%
+\ignorenodebye
+}
+
+{\let\bye\relax
+\gdef\ignorenodebye{\let\bye\ignorenodebyedef}
+\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}}
+% The redefinition of \bye here is because it is declared \outer
-\let\nwnode=\node
\let\lastnode=\empty
% Write a cross-reference definition for the current node. #1 is the
@@ -8809,7 +8729,7 @@ end
% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \lastsection,
+% 1) NAME-title - the current sectioning name taken from \currentsection,
% or the anchor name.
% 2) NAME-snt - section number and type, passed as the SNT arg, or
% empty for anchors.
@@ -8831,7 +8751,7 @@ end
\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
}%
- \toks0 = \expandafter{\lastsection}%
+ \toks0 = \expandafter{\currentsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
\safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
@@ -8843,7 +8763,7 @@ end
% automatically in xrefs, if the third arg is not explicitly specified.
% This was provided as a "secret" @set xref-automatic-section-title
% variable, now it's official.
-%
+%
\parseargdef\xrefautomaticsectiontitle{%
\def\temp{#1}%
\ifx\temp\onword
@@ -8859,7 +8779,7 @@ end
\fi\fi
}
-%
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -9012,24 +8932,24 @@ end
\fi
\else
% node/anchor (non-float) references.
- %
+ %
% If we use \unhbox to print the node names, TeX does not insert
% empty discretionaries after hyphens, which means that it will not
% find a line break at a hyphen in a node names. Since some manuals
% are best written with fairly long node names, containing hyphens,
% this is a loss. Therefore, we give the text of the node name
% again, so it is as if TeX is seeing it for the first time.
- %
+ %
\ifdim \wd\printedmanualbox > 0pt
% Cross-manual reference with a printed manual name.
- %
+ %
\crossmanualxref{\cite{\printedmanual\unskip}}%
%
\else\ifdim \wd\infofilenamebox > 0pt
% Cross-manual reference with only an info filename (arg 4), no
% printed manual name (arg 5). This is essentially the same as
% the case above; we output the filename, since we have nothing else.
- %
+ %
\crossmanualxref{\code{\infofilename\unskip}}%
%
\else
@@ -9069,20 +8989,20 @@ end
\endgroup}
% Output a cross-manual xref to #1. Used just above (twice).
-%
+%
% Only include the text "Section ``foo'' in" if the foo is neither
% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
% "see The Foo Manual", the idea being to refer to the whole manual.
-%
+%
% But, this being TeX, we can't easily compare our node name against the
% string "Top" while ignoring the possible spaces before and after in
% the input. By adding the arbitrary 7sp below, we make it much less
% likely that a real node name would have the same width as "Top" (e.g.,
% in a monospaced font). Hopefully it will never happen in practice.
-%
+%
% For the same basic reason, we retypeset the "Top" at every
% reference, since the current font is indeterminate.
-%
+%
\def\crossmanualxref#1{%
\setbox\toprefbox = \hbox{Top\kern7sp}%
\setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
@@ -9129,7 +9049,7 @@ end
\fi\fi\fi
}
-% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX
+% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX
% is output afterwards if non-empty.
\def\refx#1#2{%
\requireauxfile
@@ -9161,9 +9081,9 @@ end
#2% Output the suffix in any case.
}
-% This is the macro invoked by entries in the aux file. Define a control
-% sequence for a cross-reference target (we prepend XR to the control sequence
-% name to avoid collisions). The value is the page number. If this is a float
+% This is the macro invoked by entries in the aux file. Define a control
+% sequence for a cross-reference target (we prepend XR to the control sequence
+% name to avoid collisions). The value is the page number. If this is a float
% type, we have more work to do.
%
\def\xrdef#1#2{%
@@ -9179,10 +9099,10 @@ end
\bgroup
\expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
\egroup
- % We put the \gdef inside a group to avoid the definitions building up on
- % TeX's save stack, which can cause it to run out of space for aux files with
+ % We put the \gdef inside a group to avoid the definitions building up on
+ % TeX's save stack, which can cause it to run out of space for aux files with
% thousands of lines. \gdef doesn't use the save stack, but \csname does
- % when it defines an unknown control sequence as \relax.
+ % when it defines an unknown control sequence as \relax.
%
% Was that xref control sequence that we just defined for a float?
\expandafter\iffloat\csname XR\safexrefname\endcsname
@@ -9261,19 +9181,6 @@ end
\catcode`\^^]=\other
\catcode`\^^^=\other
\catcode`\^^_=\other
- % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
- % in xref tags, i.e., node names. But since ^^e4 notation isn't
- % supported in the main text, it doesn't seem desirable. Furthermore,
- % that is not enough: for node names that actually contain a ^
- % character, we would end up writing a line like this: 'xrdef {'hat
- % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
- % argument, and \hat is not an expandable control sequence. It could
- % all be worked out, but why? Either we support ^^ or we don't.
- %
- % The other change necessary for this was to define \auxhat:
- % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
- % and then to call \auxhat in \setq.
- %
\catcode`\^=\other
%
% Special characters. Should be turned off anyway, but...
@@ -9291,14 +9198,7 @@ end
\catcode`\%=\other
\catcode`+=\other % avoid \+ for paranoia even though we've turned it off
%
- % This is to support \ in node names and titles, since the \
- % characters end up in a \csname. It's easier than
- % leaving it active and making its active definition an actual \
- % character. What I don't understand is why it works in the *value*
- % of the xrdef. Seems like it should be a catcode12 \, and that
- % should not typeset properly. But it works, so I'm moving on for
- % now. --karl, 15jan04.
- \catcode`\\=\other
+ \catcode`\\=\active
%
% @ is our escape character in .aux files, and we need braces.
\catcode`\{=1
@@ -9561,7 +9461,7 @@ end
%
\ifimagevmode
\medskip % space after a standalone image
- \fi
+ \fi
\ifx\centersub\centerV \egroup \fi
\endgroup}
@@ -9629,13 +9529,13 @@ end
\global\advance\floatno by 1
%
{%
- % This magic value for \lastsection is output by \setref as the
+ % This magic value for \currentsection is output by \setref as the
% XREFLABEL-title value. \xrefX uses it to distinguish float
% labels (which have a completely different output format) from
% node and anchor labels. And \xrdef uses it to construct the
% lists of floats.
%
- \edef\lastsection{\floatmagic=\safefloattype}%
+ \edef\currentsection{\floatmagic=\safefloattype}%
\setref{\floatlabel}{Yfloat}%
}%
\fi
@@ -9758,7 +9658,7 @@ end
% #1 is the control sequence we are passed; we expand into a conditional
% which is true if #1 represents a float ref. That is, the magic
-% \lastsection value which we \setref above.
+% \currentsection value which we \setref above.
%
\def\iffloat#1{\expandafter\doiffloat#1==\finish}
%
@@ -10392,7 +10292,7 @@ directory should work if nowhere else does.}
\uppercase{.}
\endgroup
\else
- \errhelp = \EMsimple
+ \errhelp = \EMsimple
\errmessage{Unicode character U+#1 not supported, sorry}%
\fi
\else
@@ -10425,7 +10325,7 @@ directory should work if nowhere else does.}
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
-
+
% Give \u8:... its definition. The sequence of seven \expandafter's
% expands after the \gdef three times, e.g.
%
@@ -10437,7 +10337,7 @@ directory should work if nowhere else does.}
\expandafter\expandafter
\expandafter\expandafter
\expandafter\gdef \UTFviiiTmp{#2}%
- %
+ %
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
\fi
@@ -10476,7 +10376,7 @@ directory should work if nowhere else does.}
\divide\countUTFz by 64
\countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
-
+
% \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
% in order to get the last five bits.
\advance\countUTFx by -\countUTFz
@@ -10511,7 +10411,7 @@ directory should work if nowhere else does.}
% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
-%
+%
% Many of our renditions are less than wonderful, and all the missing
% characters are available somewhere. Loading the necessary fonts
% awaits user request. We can't truly support Unicode without
@@ -11246,21 +11146,14 @@ directory should work if nowhere else does.}
\relax
}
-% define all Unicode characters we know about, for the sake of @U.
+% Define all Unicode characters we know about. This makes UTF-8 the default
+% input encoding and allows @U to work.
\iftxinativeunicodecapable
\nativeunicodechardefsatu
\else
\utfeightchardefs
\fi
-
-% Make non-ASCII characters printable again for compatibility with
-% existing Texinfo documents that may use them, even without declaring a
-% document encoding.
-%
-\setnonasciicharscatcode \other
-
-
\message{formatting,}
\newdimen\defaultparindent \defaultparindent = 15pt
@@ -11556,9 +11449,9 @@ directory should work if nowhere else does.}
\def\texinfochars{%
\let< = \activeless
\let> = \activegtr
- \let~ = \activetilde
+ \let~ = \activetilde
\let^ = \activehat
- \markupsetuplqdefault \markupsetuprqdefault
+ \markupsetuplqdefault \markupsetuprqdefault
\let\b = \strong
\let\i = \smartitalic
% in principle, all other definitions in \tex have to be undone too.
@@ -11576,11 +11469,9 @@ directory should work if nowhere else does.}
% \backslashcurfont outputs one backslash character in current font,
% as in \char`\\.
\global\chardef\backslashcurfont=`\\
-\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+% \realbackslash is an actual character `\' with catcode other.
+{\catcode`\\=\other @gdef@realbackslash{\}}
% In Texinfo, backslash is an active character; it prints the backslash
% in fixed width font.
@@ -11598,10 +11489,8 @@ directory should work if nowhere else does.}
@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
-% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other. We switch back and forth between these.
-@gdef@rawbackslash{@let\=@backslashcurfont}
+% catcode other.
@gdef@otherbackslash{@let\=@realbackslash}
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
@@ -11673,7 +11562,7 @@ directory should work if nowhere else does.}
@ifx\@eatinput @let\ = @ttbackslash @fi
@catcode13=5 % regular end of line
@enableemergencynewline
- @let@c=@texinfoc
+ @let@c=@comment
@let@parsearg@originalparsearg
% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
diff --git a/build-aux/update-copyright b/build-aux/update-copyright
index f2fc97e..4f79b56 100755
--- a/build-aux/update-copyright
+++ b/build-aux/update-copyright
@@ -1,11 +1,9 @@
-eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" "$@"'
- & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
- if 0;
-# Update an FSF copyright year list to include the current year.
+#!/bin/sh
+#! -*-perl-*-
-my $VERSION = '2018-03-07.03:47'; # UTC
+# Update an FSF copyright year list to include the current year.
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This 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,9 +17,12 @@ my $VERSION = '2018-03-07.03:47'; # UTC
#
# 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 Joel E. Denny
+# This script updates an FSF copyright year list to include the current year.
+# Usage: update-copyright [FILE...]
+#
# The arguments to this script should be names of files that contain
# copyright statements to be updated. The copyright holder's name
# defaults to "Free Software Foundation, Inc." but may be changed to
@@ -97,7 +98,7 @@ my $VERSION = '2018-03-07.03:47'; # UTC
# 6. Blank lines, even if preceded by the prefix, do not appear
# within the FSF copyright statement.
# 7. Each copyright year is 2 or 4 digits, and years are separated by
-# commas or dashes. Whitespace may appear after commas.
+# commas, "-", or "--". Whitespace may appear after commas.
#
# Environment variables:
#
@@ -121,6 +122,27 @@ my $VERSION = '2018-03-07.03:47'; # UTC
# 5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other
# than "Free Software Foundation, Inc.".
+# This is a prologue that allows to run a perl script as an executable
+# on systems that are compliant to a POSIX version before POSIX:2017.
+# On such systems, the usual invocation of an executable through execlp()
+# or execvp() fails with ENOEXEC if it is a script that does not start
+# with a #! line. The script interpreter mentioned in the #! line has
+# to be /bin/sh, because on GuixSD systems that is the only program that
+# has a fixed file name. The second line is essential for perl and is
+# also useful for editing this file in Emacs. The next two lines below
+# are valid code in both sh and perl. When executed by sh, they re-execute
+# the script through the perl program found in $PATH. The '-x' option
+# is essential as well; without it, perl would re-execute the script
+# through /bin/sh. When executed by perl, the next two lines are a no-op.
+eval 'exec perl -wSx -0777 -pi "$0" "$@"'
+ if 0;
+
+my $VERSION = '2018-03-07.03:47'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
+
use strict;
use warnings;
@@ -170,7 +192,7 @@ while (/(^|\n)(.{0,$prefix_max})$copyright_re/g)
$holder_re =~ s/\s/$ws_re/g;
my $stmt_remainder_re =
"(?:$ws_re$circle_c_re)?"
- . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*"
+ . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|--?))*"
. "((?:\\d\\d)?\\d\\d)$ws_re$holder_re";
if (/\G$stmt_remainder_re/)
{
@@ -209,26 +231,28 @@ if (defined $stmt_re)
# Make the use of intervals consistent.
if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS})
{
- $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg;
+ $stmt =~ s/(\d{4})--?(\d{4})/join(', ', $1..$2)/eg;
}
else
{
+ my $ndash = $ARGV =~ /\.tex(i(nfo)?)?$/ ? "--" : "-";
+
$stmt =~
s/
(\d{4})
(?:
- (,\ |-)
+ (,\ |--?)
((??{
- if ($2 eq '-') { '\d{4}'; }
+ if ($2 ne ', ') { '\d{4}'; }
elsif (!$3) { $1 + 1; }
else { $3 + 1; }
}))
)+
- /$1-$3/gx;
+ /$1$ndash$3/gx;
# When it's 2, emit a single range encompassing all year numbers.
$ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2
- and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/;
+ and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1$ndash$2/;
}
# Format within margin.
@@ -270,6 +294,7 @@ else
# mode: perl
# indent-tabs-mode: nil
# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-line-limit: 200
# time-stamp-start: "my $VERSION = '"
# time-stamp-format: "%:y-%02m-%02d.%02H:%02M"
# time-stamp-time-zone: "UTC0"
diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free
index 2d4d13f..fa9a368 100755
--- a/build-aux/useless-if-before-free
+++ b/build-aux/useless-if-before-free
@@ -1,32 +1,47 @@
-eval '(exit $?0)' && eval 'exec perl -wST "$0" "$@"'
- & eval 'exec perl -wST "$0" $argv:q'
- if 0;
+#!/bin/sh
+#! -*-perl-*-
+
# Detect instances of "if (p) free (p);".
# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
-my $VERSION = '2018-03-07 03:47'; # UTC
-# The definition above must lie within the first 8 lines in order
-# for the Emacs time-stamp write hook (at end) to update it.
-# If you change this file with Emacs, please let the write hook
-# do its job. Otherwise, update this string manually.
-
-# Copyright (C) 2008-2018 Free Software Foundation, Inc.
-
+# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+#
# This 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 Jim Meyering
+# This is a prologue that allows to run a perl script as an executable
+# on systems that are compliant to a POSIX version before POSIX:2017.
+# On such systems, the usual invocation of an executable through execlp()
+# or execvp() fails with ENOEXEC if it is a script that does not start
+# with a #! line. The script interpreter mentioned in the #! line has
+# to be /bin/sh, because on GuixSD systems that is the only program that
+# has a fixed file name. The second line is essential for perl and is
+# also useful for editing this file in Emacs. The next two lines below
+# are valid code in both sh and perl. When executed by sh, they re-execute
+# the script through the perl program found in $PATH. The '-x' option
+# is essential as well; without it, perl would re-execute the script
+# through /bin/sh. When executed by perl, the next two lines are a no-op.
+eval 'exec perl -wSx "$0" "$@"'
+ if 0;
+
+my $VERSION = '2018-03-07 03:47'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job. Otherwise, update this string manually.
+
use strict;
use warnings;
use Getopt::Long;
@@ -203,6 +218,7 @@ EOF
## mode: perl
## indent-tabs-mode: nil
## eval: (add-hook 'before-save-hook 'time-stamp)
+## time-stamp-line-limit: 50
## time-stamp-start: "my $VERSION = '"
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
## time-stamp-time-zone: "UTC0"
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
index 12f191b..a8b8d9a 100755
--- a/build-aux/vc-list-files
+++ b/build-aux/vc-list-files
@@ -4,7 +4,7 @@
# Print a version string.
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
# This 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 @@ scriptversion=2018-03-07.03; # UTC
# list the version-controlled files in that directory.
# If there's an argument, it must be a single, "."-relative directory name.
-# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
+# cvsu is part of the cvsutils package: https://www.red-bean.com/cvsutils/
postprocess=
case $1 in
diff --git a/config_h.in b/config_h.in
index e0b815f..43a7b64 100644
--- a/config_h.in
+++ b/config_h.in
@@ -26,9 +26,6 @@
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
-/* Define to 1 if the C locale may have encoding errors. */
-#undef C_LOCALE_MAYBE_EILSEQ
-
/* the name of the file descriptor member of DIR */
#undef DIR_FD_MEMBER_NAME
@@ -53,12 +50,10 @@
#undef FCNTL_DUPFD_BUGGY
/* Define to nothing if C supports flexible array members, and to 1 if it does
- not. That way, with a declaration like 'struct s { int n; double
+ not. That way, with a declaration like 'struct s { int n; short
d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99
- compilers. When computing the size of such an object, don't use 'sizeof
- (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)'
- instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with
- MSVC and with C++ compilers. */
+ compilers. Use 'FLEXSIZEOF (struct s, d, N * sizeof (short))' to calculate
+ the size in bytes of such a struct containing an N-element array. */
#undef FLEXIBLE_ARRAY_MEMBER
/* Enable compile-time and run-time bounds-checking, and some warnings,
@@ -128,6 +123,9 @@
whether the gnulib module msvc-nothrow shall be considered present. */
#undef GNULIB_MSVC_NOTHROW
+/* Define to 1 to disable use of VLAs */
+#undef GNULIB_NO_VLA
+
/* enable some gnulib portability checks */
#undef GNULIB_PORTCHECK
@@ -223,6 +221,9 @@
/* Define to 1 when the gnulib module getdtablesize should be tested. */
#undef GNULIB_TEST_GETDTABLESIZE
+/* Define to 1 when the gnulib module getopt-posix should be tested. */
+#undef GNULIB_TEST_GETOPT_POSIX
+
/* Define to 1 when the gnulib module getpagesize should be tested. */
#undef GNULIB_TEST_GETPAGESIZE
@@ -292,6 +293,12 @@
/* Define to 1 when the gnulib module pipe should be tested. */
#undef GNULIB_TEST_PIPE
+/* Define to 1 when the gnulib module pthread_sigmask should be tested. */
+#undef GNULIB_TEST_PTHREAD_SIGMASK
+
+/* Define to 1 when the gnulib module pthread-thread should be tested. */
+#undef GNULIB_TEST_PTHREAD_THREAD
+
/* Define to 1 when the gnulib module putenv should be tested. */
#undef GNULIB_TEST_PUTENV
@@ -325,6 +332,9 @@
/* Define to 1 when the gnulib module setlocale should be tested. */
#undef GNULIB_TEST_SETLOCALE
+/* Define to 1 when the gnulib module setlocale_null should be tested. */
+#undef GNULIB_TEST_SETLOCALE_NULL
+
/* Define to 1 when the gnulib module setsockopt should be tested. */
#undef GNULIB_TEST_SETSOCKOPT
@@ -464,10 +474,6 @@
/* Define to 1 if you have the `catgets' function. */
#undef HAVE_CATGETS
-/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
- CoreFoundation framework. */
-#undef HAVE_CFLOCALECOPYCURRENT
-
/* Define to 1 if you have the Mac OS X function
CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES
@@ -822,6 +828,9 @@
/* Define to 1 if <wchar.h> declares mbstate_t. */
#undef HAVE_MBSTATE_T
+/* Define to 1 if you have the `mbtowc' function. */
+#undef HAVE_MBTOWC
+
/* Define to 1 if you have the <mcheck.h> header file. */
#undef HAVE_MCHECK_H
@@ -881,6 +890,15 @@
/* Define to 1 if you have the `popen' function. */
#undef HAVE_POPEN
+/* Define if you have the <pthread.h> header and the POSIX threads API. */
+#undef HAVE_PTHREAD_API
+
+/* Define to 1 if you have the `pthread_atfork' function. */
+#undef HAVE_PTHREAD_ATFORK
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
+
/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. */
#undef HAVE_PTHREAD_MUTEX_RECURSIVE
@@ -891,6 +909,15 @@
reader. */
#undef HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER
+/* Define to 1 if the pthread_sigmask function can be used (despite bugs). */
+#undef HAVE_PTHREAD_SIGMASK
+
+/* Define to 1 if the system has the type `pthread_spinlock_t'. */
+#undef HAVE_PTHREAD_SPINLOCK_T
+
+/* Define to 1 if the system has the type `pthread_t'. */
+#undef HAVE_PTHREAD_T
+
/* Define to 1 if you have the `raise' function. */
#undef HAVE_RAISE
@@ -909,6 +936,9 @@
/* Define to 1 if the system has the type `sa_family_t'. */
#undef HAVE_SA_FAMILY_T
+/* Define to 1 if you have the <sched.h> header file. */
+#undef HAVE_SCHED_H
+
/* Define to 1 if you have the <search.h> header file. */
#undef HAVE_SEARCH_H
@@ -1075,6 +1105,12 @@
/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
+/* Define to 1 if you have the `thrd_create' function. */
+#undef HAVE_THRD_CREATE
+
+/* Define to 1 if you have the <threads.h> header file. */
+#undef HAVE_THREADS_H
+
/* Define to 1 if you have the `towlower' function. */
#undef HAVE_TOWLOWER
@@ -1096,6 +1132,10 @@
/* Define if you have a global __progname variable */
#undef HAVE_VAR___PROGNAME
+/* Define to 1 or 0, depending whether the compiler supports simple visibility
+ declarations. */
+#undef HAVE_VISIBILITY
+
/* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H
@@ -1111,6 +1151,10 @@
/* Define to 1 if you have the <wctype.h> header file. */
#undef HAVE_WCTYPE_H
+/* Define to 1 if the compiler and linker support weak declarations of
+ symbols. */
+#undef HAVE_WEAK_SYMBOLS
+
/* Define to 1 if you have the <winsock2.h> header file. */
#undef HAVE_WINSOCK2_H
@@ -1186,6 +1230,10 @@
*/
#undef MBRTOWC_EMPTY_INPUT_BUG
+/* Define if the mbrtowc function may signal encoding errors in the C locale.
+ */
+#undef MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ
+
/* Define if the mbrtowc function has the NULL pwc argument bug. */
#undef MBRTOWC_NULL_ARG1_BUG
@@ -1198,15 +1246,28 @@
/* Define if the mbrtowc function returns a wrong return value. */
#undef MBRTOWC_RETVAL_BUG
+/* Define if the mbrtowc function stores a wide character when reporting
+ incomplete input. */
+#undef MBRTOWC_STORES_INCOMPLETE_BUG
+
/* Use GNU style printf and scanf. */
#ifndef __USE_MINGW_ANSI_STDIO
# undef __USE_MINGW_ANSI_STDIO
#endif
+/* Define to 1 on musl libc. */
+#undef MUSL_LIBC
+
/* Define to 1 if assertions should be disabled. */
#undef NDEBUG
+/* Define to 1 to enable general improvements of setlocale. */
+#undef NEED_SETLOCALE_IMPROVED
+
+/* Define to 1 to enable a multithread-safety fix of setlocale. */
+#undef NEED_SETLOCALE_MTSAFE
+
/* Define to 1 if open() fails to recognize a trailing slash. */
#undef OPEN_TRAILING_SLASH_BUG
@@ -1247,9 +1308,22 @@
type mode_t. */
#undef PROMOTED_MODE_T
+/* Define if pthread_create is an inline function. */
+#undef PTHREAD_CREATE_IS_INLINE
+
/* Define if the pthread_in_use() detection is hard. */
#undef PTHREAD_IN_USE_DETECTION_HARD
+/* Define to 1 if pthread_sigmask(), when it fails, returns -1 and sets errno.
+ */
+#undef PTHREAD_SIGMASK_FAILS_WITH_ERRNO
+
+/* Define to 1 if pthread_sigmask may return 0 and have no effect. */
+#undef PTHREAD_SIGMASK_INEFFECTIVE
+
+/* Define to 1 if pthread_sigmask() unblocks signals incorrectly. */
+#undef PTHREAD_SIGMASK_UNBLOCK_BUG
+
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
'ptrdiff_t'. */
#undef PTRDIFF_T_SUFFIX
@@ -1286,6 +1360,12 @@
/* Define to 1 if strerror(0) does not return a message implying success. */
#undef REPLACE_STRERROR_0
+/* Define to 1 if setlocale (LC_ALL, NULL) is multithread-safe. */
+#undef SETLOCALE_NULL_ALL_MTSAFE
+
+/* Define to 1 if setlocale (category, NULL) is multithread-safe. */
+#undef SETLOCALE_NULL_ONE_MTSAFE
+
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
'sig_atomic_t'. */
#undef SIG_ATOMIC_T_SUFFIX
@@ -1319,6 +1399,13 @@
/* Define to nonzero if you want access control list support. */
#undef USE_ACL
+/* Define if the combination of the ISO C and POSIX multithreading APIs can be
+ used. */
+#undef USE_ISOC_AND_POSIX_THREADS
+
+/* Define if the ISO C multithreading library can be used. */
+#undef USE_ISOC_THREADS
+
/* Define if the POSIX multithreading library can be used. */
#undef USE_POSIX_THREADS
@@ -1326,20 +1413,6 @@
weak. */
#undef USE_POSIX_THREADS_WEAK
-/* Define if the GNU Pth multithreading library can be used. */
-#undef USE_PTH_THREADS
-
-/* Define if references to the GNU Pth multithreading library should be made
- weak. */
-#undef USE_PTH_THREADS_WEAK
-
-/* Define if the old Solaris multithreading library can be used. */
-#undef USE_SOLARIS_THREADS
-
-/* Define if references to the old Solaris multithreading library should be
- made weak. */
-#undef USE_SOLARIS_THREADS_WEAK
-
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
@@ -1431,6 +1504,12 @@
'wchar_t'. */
#undef WCHAR_T_SUFFIX
+/* Define if the wcrtomb function does not work in the C locale. */
+#undef WCRTOMB_C_LOCALE_BUG
+
+/* Define if the wcrtomb function has an incorrect return value. */
+#undef WCRTOMB_RETVAL_BUG
+
/* Define if WSAStartup is needed. */
#undef WINDOWS_SOCKETS
@@ -1473,10 +1552,20 @@
/* The _Noreturn keyword of C11. */
#ifndef _Noreturn
-# if 201103 <= (defined __cplusplus ? __cplusplus : 0)
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
-# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
- || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
/* _Noreturn works as-is. */
# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
# define _Noreturn __attribute__ ((__noreturn__))
@@ -1519,6 +1608,33 @@
/* Define to 1 if the system <stdint.h> predates C++11. */
#undef __STDC_LIMIT_MACROS
+/* The _GL_ASYNC_SAFE marker should be attached to functions that are
+ signal handlers (for signals other than SIGABRT, SIGPIPE) or can be
+ invoked from such signal handlers. Such functions have some restrictions:
+ * All functions that it calls should be marked _GL_ASYNC_SAFE as well,
+ or should be listed as async-signal-safe in POSIX
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04>
+ section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in
+ particular, are NOT async-signal-safe.
+ * All memory locations (variables and struct fields) that these functions
+ access must be marked 'volatile'. This holds for both read and write
+ accesses. Otherwise the compiler might optimize away stores to and
+ reads from such locations that occur in the program, depending on its
+ data flow analysis. For example, when the program contains a loop
+ that is intended to inspect a variable set from within a signal handler
+ while (!signal_occurred)
+ ;
+ the compiler is allowed to transform this into an endless loop if the
+ variable 'signal_occurred' is not declared 'volatile'.
+ Additionally, recall that:
+ * A signal handler should not modify errno (except if it is a handler
+ for a fatal signal and ends by raising the same signal again, thus
+ provoking the termination of the process). If it invokes a function
+ that may clobber errno, it needs to save and restore the value of
+ errno. */
+#define _GL_ASYNC_SAFE
+
+
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
@@ -1546,7 +1662,7 @@
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
DragonFly; see
- http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
+ http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
FreeBSD; see:
https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
@@ -1721,12 +1837,13 @@
nothing if this is not supported. Do not define if restrict is
supported directly. */
#undef restrict
-/* Work around a bug in Sun C++: it does not support _Restrict or
- __restrict__, even though the corresponding Sun C compiler ends up with
- "#define restrict _Restrict" or "#define restrict __restrict__" in the
- previous line. Perhaps some future version of Sun C++ will work with
- restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
-#if defined __SUNPRO_CC && !defined __RESTRICT
+/* Work around a bug in older versions of Sun C++, which did not
+ #define __restrict__ or support _Restrict or __restrict__
+ even though the corresponding Sun C compiler ended up with
+ "#define restrict _Restrict" or "#define restrict __restrict__"
+ in the previous line. This workaround can be removed once
+ we assume Oracle Developer Studio 12.5 (2016) or later. */
+#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__
# define _Restrict
# define __restrict__
#endif
diff --git a/configure b/configure
index e12fc23..cfd42bb 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.197-b8fd7 for GNU sed 4.7.
+# Generated by GNU Autoconf 2.69.202-d78a for GNU sed 4.8.
#
# Report bugs to <bug-sed@gnu.org>.
#
#
-# Copyright (C) 1992-1996, 1998-2017 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -565,8 +565,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU sed'
PACKAGE_TARNAME='sed'
-PACKAGE_VERSION='4.7'
-PACKAGE_STRING='GNU sed 4.7'
+PACKAGE_VERSION='4.8'
+PACKAGE_STRING='GNU sed 4.8'
PACKAGE_BUGREPORT='bug-sed@gnu.org'
PACKAGE_URL='https://www.gnu.org/software/sed/'
@@ -598,6 +598,7 @@ ac_includes_default="\
ac_header_c_list=
gl_use_threads_default=
+gl_use_winpthreads_default=
ac_func_c_list=
gl_getopt_required=POSIX
gt_needs=
@@ -615,7 +616,6 @@ BUILD_DUMMY_MAN_PAGE_FALSE
BUILD_DUMMY_MAN_PAGE_TRUE
BUILD_MAN_PAGE_FALSE
BUILD_MAN_PAGE_TRUE
-PERL
CROSS_COMPILING_FALSE
CROSS_COMPILING_TRUE
GNULIB_TEST_WARN_CFLAGS
@@ -652,6 +652,15 @@ NEXT_SYS_IOCTL_H
HAVE_SYS_IOCTL_H
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H
NEXT_SIGNAL_H
+LIB_SETLOCALE
+HAVE_STRUCT_SCHED_PARAM
+HAVE_SCHED_H
+NEXT_AS_FIRST_DIRECTIVE_SCHED_H
+NEXT_SCHED_H
+REPLACE_SCHED_YIELD
+HAVE_SCHED_YIELD
+GNULIB_SCHED_YIELD
+LIB_PTHREAD_SIGMASK
REPLACE_RAISE
REPLACE_PTHREAD_SIGMASK
HAVE_SIGHANDLER_T
@@ -668,6 +677,126 @@ GNULIB_SIGPROCMASK
GNULIB_SIGNAL_H_SIGPIPE
GNULIB_RAISE
GNULIB_PTHREAD_SIGMASK
+LIB_PTHREAD
+HAVE_PTHREAD_H
+NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H
+NEXT_PTHREAD_H
+REPLACE_PTHREAD_SPIN_DESTROY
+REPLACE_PTHREAD_SPIN_UNLOCK
+REPLACE_PTHREAD_SPIN_TRYLOCK
+REPLACE_PTHREAD_SPIN_LOCK
+REPLACE_PTHREAD_SPIN_INIT
+REPLACE_PTHREAD_KEY_DELETE
+REPLACE_PTHREAD_GETSPECIFIC
+REPLACE_PTHREAD_SETSPECIFIC
+REPLACE_PTHREAD_KEY_CREATE
+REPLACE_PTHREAD_COND_DESTROY
+REPLACE_PTHREAD_COND_BROADCAST
+REPLACE_PTHREAD_COND_SIGNAL
+REPLACE_PTHREAD_COND_TIMEDWAIT
+REPLACE_PTHREAD_COND_WAIT
+REPLACE_PTHREAD_CONDATTR_DESTROY
+REPLACE_PTHREAD_CONDATTR_INIT
+REPLACE_PTHREAD_COND_INIT
+REPLACE_PTHREAD_RWLOCK_DESTROY
+REPLACE_PTHREAD_RWLOCK_UNLOCK
+REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK
+REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK
+REPLACE_PTHREAD_RWLOCK_TRYWRLOCK
+REPLACE_PTHREAD_RWLOCK_TRYRDLOCK
+REPLACE_PTHREAD_RWLOCK_WRLOCK
+REPLACE_PTHREAD_RWLOCK_RDLOCK
+REPLACE_PTHREAD_RWLOCKATTR_DESTROY
+REPLACE_PTHREAD_RWLOCKATTR_INIT
+REPLACE_PTHREAD_RWLOCK_INIT
+REPLACE_PTHREAD_MUTEX_DESTROY
+REPLACE_PTHREAD_MUTEX_UNLOCK
+REPLACE_PTHREAD_MUTEX_TIMEDLOCK
+REPLACE_PTHREAD_MUTEX_TRYLOCK
+REPLACE_PTHREAD_MUTEX_LOCK
+REPLACE_PTHREAD_MUTEXATTR_DESTROY
+REPLACE_PTHREAD_MUTEXATTR_SETROBUST
+REPLACE_PTHREAD_MUTEXATTR_GETROBUST
+REPLACE_PTHREAD_MUTEXATTR_SETTYPE
+REPLACE_PTHREAD_MUTEXATTR_GETTYPE
+REPLACE_PTHREAD_MUTEXATTR_INIT
+REPLACE_PTHREAD_MUTEX_INIT
+REPLACE_PTHREAD_ONCE
+REPLACE_PTHREAD_EXIT
+REPLACE_PTHREAD_JOIN
+REPLACE_PTHREAD_DETACH
+REPLACE_PTHREAD_EQUAL
+REPLACE_PTHREAD_SELF
+REPLACE_PTHREAD_ATTR_DESTROY
+REPLACE_PTHREAD_ATTR_SETDETACHSTATE
+REPLACE_PTHREAD_ATTR_GETDETACHSTATE
+REPLACE_PTHREAD_ATTR_INIT
+REPLACE_PTHREAD_CREATE
+HAVE_PTHREAD_SPIN_DESTROY
+HAVE_PTHREAD_SPIN_UNLOCK
+HAVE_PTHREAD_SPIN_TRYLOCK
+HAVE_PTHREAD_SPIN_LOCK
+HAVE_PTHREAD_SPIN_INIT
+HAVE_PTHREAD_KEY_DELETE
+HAVE_PTHREAD_GETSPECIFIC
+HAVE_PTHREAD_SETSPECIFIC
+HAVE_PTHREAD_KEY_CREATE
+HAVE_PTHREAD_COND_DESTROY
+HAVE_PTHREAD_COND_BROADCAST
+HAVE_PTHREAD_COND_SIGNAL
+HAVE_PTHREAD_COND_TIMEDWAIT
+HAVE_PTHREAD_COND_WAIT
+HAVE_PTHREAD_CONDATTR_DESTROY
+HAVE_PTHREAD_CONDATTR_INIT
+HAVE_PTHREAD_COND_INIT
+HAVE_PTHREAD_RWLOCK_DESTROY
+HAVE_PTHREAD_RWLOCK_UNLOCK
+HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK
+HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK
+HAVE_PTHREAD_RWLOCK_TRYWRLOCK
+HAVE_PTHREAD_RWLOCK_TRYRDLOCK
+HAVE_PTHREAD_RWLOCK_WRLOCK
+HAVE_PTHREAD_RWLOCK_RDLOCK
+HAVE_PTHREAD_RWLOCKATTR_DESTROY
+HAVE_PTHREAD_RWLOCKATTR_INIT
+HAVE_PTHREAD_RWLOCK_INIT
+HAVE_PTHREAD_MUTEX_DESTROY
+HAVE_PTHREAD_MUTEX_UNLOCK
+HAVE_PTHREAD_MUTEX_TIMEDLOCK
+HAVE_PTHREAD_MUTEX_TRYLOCK
+HAVE_PTHREAD_MUTEX_LOCK
+HAVE_PTHREAD_MUTEXATTR_DESTROY
+HAVE_PTHREAD_MUTEXATTR_SETROBUST
+HAVE_PTHREAD_MUTEXATTR_GETROBUST
+HAVE_PTHREAD_MUTEXATTR_SETTYPE
+HAVE_PTHREAD_MUTEXATTR_GETTYPE
+HAVE_PTHREAD_MUTEXATTR_INIT
+HAVE_PTHREAD_MUTEX_INIT
+HAVE_PTHREAD_ONCE
+HAVE_PTHREAD_EXIT
+HAVE_PTHREAD_JOIN
+HAVE_PTHREAD_DETACH
+HAVE_PTHREAD_EQUAL
+HAVE_PTHREAD_SELF
+HAVE_PTHREAD_ATTR_DESTROY
+HAVE_PTHREAD_ATTR_SETDETACHSTATE
+HAVE_PTHREAD_ATTR_GETDETACHSTATE
+HAVE_PTHREAD_ATTR_INIT
+HAVE_PTHREAD_CREATE
+HAVE_PTHREAD_PROCESS_SHARED
+HAVE_PTHREAD_MUTEX_ROBUST
+HAVE_PTHREAD_MUTEX_RECURSIVE
+HAVE_PTHREAD_CREATE_DETACHED
+HAVE_PTHREAD_SPINLOCK_T
+HAVE_PTHREAD_T
+GNULIB_PTHREAD_MUTEX_TIMEDLOCK
+GNULIB_PTHREAD_SPIN
+GNULIB_PTHREAD_TSS
+GNULIB_PTHREAD_COND
+GNULIB_PTHREAD_RWLOCK
+GNULIB_PTHREAD_MUTEX
+GNULIB_PTHREAD_ONCE
+GNULIB_PTHREAD_THREAD
GL_GENERATE_NETINET_IN_H_FALSE
GL_GENERATE_NETINET_IN_H_TRUE
NETINET_IN_H
@@ -686,25 +815,6 @@ HAVE_PSELECT
GNULIB_SELECT
GNULIB_PSELECT
INTL_MACOSX_LIBS
-NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H
-NEXT_INTTYPES_H
-UINT64_MAX_EQ_ULONG_MAX
-UINT32_MAX_LT_UINTMAX_MAX
-PRIPTR_PREFIX
-PRI_MACROS_BROKEN
-INT64_MAX_EQ_LONG_MAX
-INT32_MAX_LT_INTMAX_MAX
-REPLACE_STRTOUMAX
-REPLACE_STRTOIMAX
-HAVE_IMAXDIV_T
-HAVE_DECL_STRTOUMAX
-HAVE_DECL_STRTOIMAX
-HAVE_DECL_IMAXDIV
-HAVE_DECL_IMAXABS
-GNULIB_STRTOUMAX
-GNULIB_STRTOIMAX
-GNULIB_IMAXDIV
-GNULIB_IMAXABS
INET_PTON_LIB
LIB_HAS_ACL
HAVE_DIRENT_H
@@ -804,34 +914,6 @@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
NEXT_STDLIB_H
NEXT_AS_FIRST_DIRECTIVE_STDIO_H
NEXT_STDIO_H
-GL_GENERATE_STDINT_H_FALSE
-GL_GENERATE_STDINT_H_TRUE
-STDINT_H
-HAVE_SYS_INTTYPES_H
-HAVE_SYS_BITYPES_H
-HAVE_C99_STDINT_H
-WINT_T_SUFFIX
-WCHAR_T_SUFFIX
-SIG_ATOMIC_T_SUFFIX
-SIZE_T_SUFFIX
-PTRDIFF_T_SUFFIX
-HAVE_SIGNED_WINT_T
-HAVE_SIGNED_WCHAR_T
-HAVE_SIGNED_SIG_ATOMIC_T
-BITSIZEOF_WINT_T
-BITSIZEOF_WCHAR_T
-BITSIZEOF_SIG_ATOMIC_T
-BITSIZEOF_SIZE_T
-BITSIZEOF_PTRDIFF_T
-HAVE_STDINT_H
-NEXT_AS_FIRST_DIRECTIVE_STDINT_H
-NEXT_STDINT_H
-HAVE_SYS_TYPES_H
-HAVE_INTTYPES_H
-HAVE_WCHAR_H
-HAVE_UNSIGNED_LONG_LONG_INT
-HAVE_LONG_LONG_INT
-GNULIB_OVERRIDES_WINT_T
HAVE__BOOL
GL_GENERATE_STDBOOL_H_FALSE
GL_GENERATE_STDBOOL_H_TRUE
@@ -851,7 +933,8 @@ NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H
NEXT_SELINUX_SELINUX_H
LIB_SELINUX
GLIBC21
-APPLE_UNIVERSAL_BUILD
+PERL
+LIB_NL_LANGINFO
HAVE_MSVC_INVALID_PARAMETER_HANDLER
UNDEFINE_STRTOK_R
REPLACE_STRSIGNAL
@@ -928,17 +1011,18 @@ GNULIB_MEMCHR
GNULIB_FFSLL
GNULIB_FFSL
GNULIB_EXPLICIT_BZERO
-LOCALE_FR_UTF8
+HAVE_VISIBILITY
+CFLAG_VISIBILITY
+LIB_MBRTOWC
LOCALE_ZH_CN
+LOCALE_FR_UTF8
LOCALE_JA
SED
LTLIBMULTITHREAD
LIBMULTITHREAD
LTLIBTHREAD
LIBTHREAD
-LIBPTH_PREFIX
-LTLIBPTH
-LIBPTH
+LIBSTDTHREAD
NEXT_AS_FIRST_DIRECTIVE_LOCALE_H
NEXT_LOCALE_H
HAVE_XLOCALE_H
@@ -961,14 +1045,10 @@ HAVE_DUPLOCALE
HAVE_NEWLOCALE
GNULIB_LOCALENAME
GNULIB_DUPLOCALE
+GNULIB_SETLOCALE_NULL
GNULIB_SETLOCALE
GNULIB_LOCALECONV
LOCALCHARSET_TESTS_ENVIRONMENT
-GL_GENERATE_LIMITS_H_FALSE
-GL_GENERATE_LIMITS_H_TRUE
-LIMITS_H
-NEXT_AS_FIRST_DIRECTIVE_LIMITS_H
-NEXT_LIMITS_H
HAVE_LANGINFO_YESEXPR
HAVE_LANGINFO_ERA
HAVE_LANGINFO_ALTMON
@@ -980,6 +1060,62 @@ NEXT_LANGINFO_H
REPLACE_NL_LANGINFO
HAVE_NL_LANGINFO
GNULIB_NL_LANGINFO
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H
+NEXT_INTTYPES_H
+UINT64_MAX_EQ_ULONG_MAX
+UINT32_MAX_LT_UINTMAX_MAX
+PRIPTR_PREFIX
+PRI_MACROS_BROKEN
+INT64_MAX_EQ_LONG_MAX
+INT32_MAX_LT_INTMAX_MAX
+REPLACE_STRTOUMAX
+REPLACE_STRTOIMAX
+HAVE_IMAXDIV_T
+HAVE_DECL_STRTOUMAX
+HAVE_DECL_STRTOIMAX
+HAVE_DECL_IMAXDIV
+HAVE_DECL_IMAXABS
+GNULIB_STRTOUMAX
+GNULIB_STRTOIMAX
+GNULIB_IMAXDIV
+GNULIB_IMAXABS
+GL_GENERATE_STDINT_H_FALSE
+GL_GENERATE_STDINT_H_TRUE
+STDINT_H
+HAVE_SYS_INTTYPES_H
+HAVE_SYS_BITYPES_H
+HAVE_C99_STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+APPLE_UNIVERSAL_BUILD
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_WCHAR_H
+GNULIB_OVERRIDES_WINT_T
+GL_GENERATE_LIMITS_H_FALSE
+GL_GENERATE_LIMITS_H_TRUE
+LIMITS_H
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H
+NEXT_LIMITS_H
+LIB_HARD_LOCALE
+LIB_SETLOCALE_NULL
+LIB_SCHED_YIELD
+LIBPMULTITHREAD
+LIBPTHREAD
REPLACE_LOCALTIME
REPLACE_GMTIME
REPLACE_TZSET
@@ -1171,12 +1307,14 @@ NEXT_FCNTL_H
REPLACE_OPENAT
REPLACE_OPEN
REPLACE_FCNTL
+REPLACE_CREAT
HAVE_OPENAT
HAVE_FCNTL
GNULIB_OPENAT
GNULIB_OPEN
GNULIB_NONBLOCKING
GNULIB_FCNTL
+GNULIB_CREAT
EOVERFLOW_VALUE
EOVERFLOW_HIDDEN
ENOLINK_VALUE
@@ -1232,6 +1370,7 @@ REPLACE_DUP2
REPLACE_DUP
REPLACE_CLOSE
REPLACE_CHOWN
+REPLACE_ACCESS
HAVE_SYS_PARAM_H
HAVE_OS_H
HAVE_DECL_TTYNAME_R
@@ -1276,6 +1415,7 @@ HAVE_FACCESSAT
HAVE_EUIDACCESS
HAVE_DUP3
HAVE_DUP2
+HAVE_COPY_FILE_RANGE
HAVE_CHOWN
GNULIB_WRITE
GNULIB_USLEEP
@@ -1306,6 +1446,7 @@ GNULIB_GROUP_MEMBER
GNULIB_GETUSERSHELL
GNULIB_GETPASS
GNULIB_GETPAGESIZE
+GNULIB_GETOPT_POSIX
GNULIB_GETLOGIN_R
GNULIB_GETLOGIN
GNULIB_GETHOSTNAME
@@ -1324,16 +1465,21 @@ GNULIB_ENVIRON
GNULIB_DUP3
GNULIB_DUP2
GNULIB_DUP
+GNULIB_COPY_FILE_RANGE
GNULIB_CLOSE
GNULIB_CHOWN
GNULIB_CHDIR
+GNULIB_ACCESS
REPLACE_WCTOMB
REPLACE_UNSETENV
+REPLACE_STRTOLD
REPLACE_STRTOD
+REPLACE_SETSTATE
REPLACE_SETENV
REPLACE_REALPATH
REPLACE_REALLOC
REPLACE_RANDOM_R
+REPLACE_RANDOM
REPLACE_QSORT_R
REPLACE_PUTENV
REPLACE_PTSNAME_R
@@ -1341,6 +1487,7 @@ REPLACE_PTSNAME
REPLACE_MKSTEMP
REPLACE_MBTOWC
REPLACE_MALLOC
+REPLACE_INITSTATE
REPLACE_CANONICALIZE_FILE_NAME
REPLACE_CALLOC
HAVE_DECL_UNSETENV
@@ -1349,8 +1496,10 @@ HAVE_SYS_LOADAVG_H
HAVE_STRUCT_RANDOM_DATA
HAVE_STRTOULL
HAVE_STRTOLL
+HAVE_STRTOLD
HAVE_STRTOD
HAVE_DECL_SETSTATE
+HAVE_SETSTATE
HAVE_DECL_SETENV
HAVE_SETENV
HAVE_SECURE_GETENV
@@ -1369,7 +1518,9 @@ HAVE_MKSTEMP
HAVE_MKOSTEMPS
HAVE_MKOSTEMP
HAVE_MKDTEMP
+HAVE_MBTOWC
HAVE_DECL_INITSTATE
+HAVE_INITSTATE
HAVE_GRANTPT
HAVE_GETSUBOPT
HAVE_DECL_GETLOADAVG
@@ -1382,6 +1533,7 @@ GNULIB_UNLOCKPT
GNULIB_SYSTEM_POSIX
GNULIB_STRTOULL
GNULIB_STRTOLL
+GNULIB_STRTOLD
GNULIB_STRTOD
GNULIB_SETENV
GNULIB_SECURE_GETENV
@@ -1411,6 +1563,7 @@ GNULIB_CALLOC_POSIX
GNULIB_ATOLL
GNULIB__EXIT
LOCALE_FR
+REPLACE_WCSTOK
REPLACE_WCSFTIME
REPLACE_WCSWIDTH
REPLACE_WCWIDTH
@@ -1505,6 +1658,7 @@ GNULIB_MBRTOWC
GNULIB_MBSINIT
GNULIB_WCTOB
GNULIB_BTOWC
+HAVE_ALLOCA_H
GL_GENERATE_ALLOCA_H_FALSE
GL_GENERATE_ALLOCA_H_TRUE
ALLOCA_H
@@ -1617,17 +1771,17 @@ enable_silent_rules
enable_dependency_tracking
enable_largefile
enable_threads
+enable_cross_guesses
enable_acl
enable_assert
-with_gnu_ld
-enable_rpath
-with_libpth_prefix
with_included_regex
with_selinux
with_packager
with_packager_version
with_packager_bug_reports
enable_nls
+with_gnu_ld
+enable_rpath
with_libiconv_prefix
with_libintl_prefix
enable_i18n
@@ -2192,7 +2346,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU sed 4.7 to adapt to many kinds of systems.
+\`configure' configures GNU sed 4.8 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2263,7 +2417,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU sed 4.7:";;
+ short | recursive ) echo "Configuration of GNU sed 4.8:";;
esac
cat <<\_ACEOF
@@ -2278,13 +2432,15 @@ Optional Features:
--disable-dependency-tracking
speeds up one-time build
--disable-largefile omit support for large files
- --enable-threads={posix|solaris|pth|windows}
+ --enable-threads={isoc|posix|isoc+posix|windows}
specify multithreading API
--disable-threads build without multithread safety
+ --enable-cross-guesses={conservative|risky}
+ specify policy for cross-compilation guesses
--disable-acl do not support ACLs
--disable-assert turn off assertions
- --disable-rpath do not hardcode runtime library paths
--disable-nls do not use Native Language Support
+ --disable-rpath do not hardcode runtime library paths
--disable-i18n disable internationalization (default=enabled)
--enable-gcc-warnings turn on many GCC warnings (for developers; best with
GNU make)
@@ -2292,9 +2448,6 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib
- --without-libpth-prefix don't search for libpth in includedir and libdir
--without-included-regex
don't compile regex; this is the default on systems
with recent-enough versions of the GNU C Library
@@ -2304,6 +2457,7 @@ Optional Packages:
--with-packager-version Packager-specific version information
--with-packager-bug-reports
Packager info for bug reports (URL/e-mail/...)
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
@@ -2387,10 +2541,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU sed configure 4.7
-generated by GNU Autoconf 2.69.197-b8fd7
+GNU sed configure 4.8
+generated by GNU Autoconf 2.69.202-d78a
-Copyright (C) 2017 Free Software Foundation, Inc.
+Copyright (C) 2020 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -2915,6 +3069,8 @@ rm -f conftest.val
# accordingly.
ac_fn_c_check_decl ()
{
+ ac_save_ac_compile="$ac_compile"
+ ac_compile="$ac_compile_for_check_decl"
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
# Initialize each $ac_[]_AC_LANG_ABBREV[]_decl_warn_flag once.
as_decl_name=`echo $2|sed 's/ *(.*//'`
@@ -2958,6 +3114,7 @@ eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ ac_compile="$ac_save_ac_compile"
} # ac_fn_c_check_decl
@@ -3044,8 +3201,8 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU sed $as_me 4.7, which was
-generated by GNU Autoconf 2.69.197-b8fd7. Invocation command line was
+It was created by GNU sed $as_me 4.8, which was
+generated by GNU Autoconf 2.69.202-d78a. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3344,9 +3501,11 @@ as_fn_append ac_func_c_list " getexecname HAVE_GETEXECNAME"
as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H"
as_fn_append ac_func_c_list " gettimeofday HAVE_GETTIMEOFDAY"
+as_fn_append ac_header_c_list " threads.h threads_h HAVE_THREADS_H"
+as_fn_append ac_header_c_list " limits.h limits_h HAVE_LIMITS_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
as_fn_append ac_func_c_list " isblank HAVE_ISBLANK"
as_fn_append ac_header_c_list " langinfo.h langinfo_h HAVE_LANGINFO_H"
-as_fn_append ac_header_c_list " limits.h limits_h HAVE_LIMITS_H"
as_fn_append ac_header_c_list " xlocale.h xlocale_h HAVE_XLOCALE_H"
as_fn_append ac_func_c_list " lstat HAVE_LSTAT"
as_fn_append ac_func_c_list " mbsinit HAVE_MBSINIT"
@@ -3361,7 +3520,6 @@ as_fn_append ac_header_c_list " malloc.h malloc_h HAVE_MALLOC_H"
as_fn_append ac_func_c_list " iswctype HAVE_ISWCTYPE"
as_fn_append ac_func_c_list " link HAVE_LINK"
as_fn_append ac_header_c_list " selinux/selinux.h selinux_selinux_h HAVE_SELINUX_SELINUX_H"
-as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
as_fn_append ac_func_c_list " __xpg_strerror_r HAVE___XPG_STRERROR_R"
as_fn_append ac_header_c_list " features.h features_h HAVE_FEATURES_H"
as_fn_append ac_header_c_list " crtdefs.h crtdefs_h HAVE_CRTDEFS_H"
@@ -3377,14 +3535,16 @@ as_fn_append ac_func_c_list " __fpurge HAVE___FPURGE"
as_fn_append ac_func_c_list " __freading HAVE___FREADING"
as_fn_append ac_func_c_list " ftruncate HAVE_FTRUNCATE"
as_fn_append ac_func_c_list " getdtablesize HAVE_GETDTABLESIZE"
+as_fn_append ac_func_c_list " duplocale HAVE_DUPLOCALE"
as_fn_append ac_header_c_list " netdb.h netdb_h HAVE_NETDB_H"
as_fn_append ac_header_c_list " netinet/in.h netinet_in_h HAVE_NETINET_IN_H"
as_fn_append ac_func_c_list " newlocale HAVE_NEWLOCALE"
as_fn_append ac_func_c_list " uselocale HAVE_USELOCALE"
-as_fn_append ac_func_c_list " duplocale HAVE_DUPLOCALE"
as_fn_append ac_func_c_list " freelocale HAVE_FREELOCALE"
as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H"
as_fn_append ac_func_c_list " pipe HAVE_PIPE"
+as_fn_append ac_header_c_list " pthread.h pthread_h HAVE_PTHREAD_H"
+as_fn_append ac_func_c_list " pthread_sigmask HAVE_PTHREAD_SIGMASK"
as_fn_append ac_header_c_list " sys/wait.h sys_wait_h HAVE_SYS_WAIT_H"
as_fn_append ac_func_c_list " setenv HAVE_SETENV"
as_fn_append ac_func_c_list " sigaction HAVE_SIGACTION"
@@ -3829,8 +3989,8 @@ fi
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-printf %s "checking for a thread-safe mkdir -p... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
if test ${ac_cv_path_mkdir+y}
then :
@@ -4027,7 +4187,7 @@ fi
# Define the identity of the package.
PACKAGE='sed'
- VERSION='4.7'
+ VERSION='4.8'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6430,7 +6590,82 @@ fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
if test ${ac_cv_sys_largefile_source+y}
then :
@@ -6499,6 +6734,14 @@ printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h
fi
+ case "$host_os" in
+ hpux*)
+
+printf "%s\n" "#define _LARGEFILE_SOURCE 1" >>confdefs.h
+
+ ;;
+ esac
+
# Check whether --enable-largefile was given.
if test ${enable_largefile+y}
then :
@@ -6707,78 +6950,6 @@ printf "%s\n" "#define _DARWIN_USE_64_BIT_INODE 1" >>confdefs.h
fi
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-printf %s "checking build system type... " >&6; }
-if test ${ac_cv_build+y}
-then :
- printf %s "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-printf "%s\n" "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-printf %s "checking host system type... " >&6; }
-if test ${ac_cv_host+y}
-then :
- printf %s "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-printf "%s\n" "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
@@ -6794,21 +6965,34 @@ else
gl_use_threads="$gl_use_threads_default"
else
case "$host_os" in
- osf*) gl_use_threads=no ;;
- cygwin*)
+ osf*) gl_use_threads=no ;;
+ cygwin*)
case `uname -r` in
1.[0-5].*) gl_use_threads=no ;;
*) gl_use_threads=yes ;;
esac
;;
+ mingw*)
+ case "$gl_use_winpthreads_default" in
+ yes) gl_use_threads=posix ;;
+ no) gl_use_threads=windows ;;
+ *) gl_use_threads=yes ;;
+ esac
+ ;;
*) gl_use_threads=yes ;;
esac
fi
fi
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # For using <pthread.h>:
+ if test "$gl_use_threads" = yes \
+ || test "$gl_use_threads" = isoc \
+ || test "$gl_use_threads" = posix \
+ || test "$gl_use_threads" = isoc+posix; then
+ # For using <threads.h> or <pthread.h>:
+
+
+ if test -z "$gl_anythreadlib_early_done"; then
case "$host_os" in
osf*)
# On OSF/1, the compiler needs the flag -D_REENTRANT so that it
@@ -6827,6 +7011,9 @@ fi
aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
esac
+ gl_anythreadlib_early_done=done
+ fi
+
fi
@@ -6963,7 +7150,7 @@ fi
# Code from module gnumakefile:
# Code from module gnupload:
# Code from module hard-locale:
- # Code from module havelib:
+ # Code from module hard-locale-tests:
# Code from module ignore-value:
# Code from module ignore-value-tests:
# Code from module include_next:
@@ -7039,11 +7226,42 @@ fi
# Code from module opendir:
# Code from module pathmax:
# Code from module pathmax-tests:
+ # Code from module perl:
# Code from module perror:
# Code from module perror-tests:
# Code from module pipe-posix:
# Code from module pipe-posix-tests:
# Code from module progname:
+ # Code from module pthread-h:
+
+
+ if test -z "$gl_anythreadlib_early_done"; then
+ case "$host_os" in
+ osf*)
+ # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+ # groks <pthread.h>. cc also understands the flag -pthread, but
+ # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+ # 2. putting a flag into CPPFLAGS that has an effect on the linker
+ # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
+ # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ ;;
+ esac
+ # Some systems optimize for single-threaded programs by default, and
+ # need special flags to disable these optimizations. For example, the
+ # definition of 'errno' in <errno.h>.
+ case "$host_os" in
+ aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+ solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+ esac
+ gl_anythreadlib_early_done=done
+ fi
+
+ # Code from module pthread-h-tests:
+ # Code from module pthread-thread:
+ # Code from module pthread-thread-tests:
+ # Code from module pthread_sigmask:
+ # Code from module pthread_sigmask-tests:
# Code from module putenv:
# Code from module qcopy-acl:
# Code from module qset-acl:
@@ -7067,12 +7285,16 @@ fi
# Code from module rmdir:
# Code from module rmdir-tests:
# Code from module same-inode:
+ # Code from module sched:
+ # Code from module sched-tests:
# Code from module select:
# Code from module select-tests:
# Code from module selinux-h:
# Code from module setenv:
# Code from module setenv-tests:
# Code from module setlocale:
+ # Code from module setlocale-null:
+ # Code from module setlocale-null-tests:
# Code from module setlocale-tests:
# Code from module setsockopt:
# Code from module setsockopt-tests:
@@ -7107,6 +7329,7 @@ fi
+ # Code from module stdarg-tests:
# Code from module stdbool:
# Code from module stdbool-tests:
# Code from module stddef:
@@ -7147,6 +7370,8 @@ fi
# Code from module tempname:
# Code from module test-framework-sh:
# Code from module test-framework-sh-tests:
+ # Code from module thread:
+ # Code from module thread-tests:
# Code from module threadlib:
@@ -7177,6 +7402,12 @@ fi
# Code from module wctomb:
# Code from module wctype-h:
# Code from module wctype-h-tests:
+ # Code from module windows-mutex:
+ # Code from module windows-once:
+ # Code from module windows-recmutex:
+ # Code from module windows-rwlock:
+ # Code from module windows-thread:
+ # Code from module windows-tls:
# Code from module xalloc:
# Code from module xalloc-die:
# Code from module xalloc-die-tests:
@@ -7187,6 +7418,27 @@ fi
+
+ # Check whether --enable-cross-guesses was given.
+if test ${enable_cross_guesses+y}
+then :
+ enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5
+printf "%s\n" "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;}
+ enableval=conservative
+ fi
+ gl_cross_guesses="$enableval"
+else
+ gl_cross_guesses=conservative
+fi
+
+ if test $gl_cross_guesses = risky; then
+ gl_cross_guess_normal="guessing yes"
+ gl_cross_guess_inverted="guessing no"
+ else
+ gl_cross_guess_normal="guessing no"
+ gl_cross_guess_inverted="guessing yes"
+ fi
LIBC_FATAL_STDERR_=1
export LIBC_FATAL_STDERR_
@@ -7514,6 +7766,7 @@ fi
REPLACE_WCWIDTH=0;
REPLACE_WCSWIDTH=0;
REPLACE_WCSFTIME=0;
+ REPLACE_WCSTOK=0;
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> uses 'inline' correctly" >&5
@@ -7803,6 +8056,7 @@ printf "%s\n" "$gt_cv_locale_fr" >&6; }
GNULIB_SECURE_GETENV=0;
GNULIB_SETENV=0;
GNULIB_STRTOD=0;
+ GNULIB_STRTOLD=0;
GNULIB_STRTOLL=0;
GNULIB_STRTOULL=0;
GNULIB_SYSTEM_POSIX=0;
@@ -7815,7 +8069,9 @@ printf "%s\n" "$gt_cv_locale_fr" >&6; }
HAVE_DECL_GETLOADAVG=1;
HAVE_GETSUBOPT=1;
HAVE_GRANTPT=1;
+ HAVE_INITSTATE=1;
HAVE_DECL_INITSTATE=1;
+ HAVE_MBTOWC=1;
HAVE_MKDTEMP=1;
HAVE_MKOSTEMP=1;
HAVE_MKOSTEMPS=1;
@@ -7834,8 +8090,10 @@ printf "%s\n" "$gt_cv_locale_fr" >&6; }
HAVE_SECURE_GETENV=1;
HAVE_SETENV=1;
HAVE_DECL_SETENV=1;
+ HAVE_SETSTATE=1;
HAVE_DECL_SETSTATE=1;
HAVE_STRTOD=1;
+ HAVE_STRTOLD=1;
HAVE_STRTOLL=1;
HAVE_STRTOULL=1;
HAVE_STRUCT_RANDOM_DATA=1;
@@ -7844,6 +8102,7 @@ printf "%s\n" "$gt_cv_locale_fr" >&6; }
HAVE_DECL_UNSETENV=1;
REPLACE_CALLOC=0;
REPLACE_CANONICALIZE_FILE_NAME=0;
+ REPLACE_INITSTATE=0;
REPLACE_MALLOC=0;
REPLACE_MBTOWC=0;
REPLACE_MKSTEMP=0;
@@ -7851,11 +8110,14 @@ printf "%s\n" "$gt_cv_locale_fr" >&6; }
REPLACE_PTSNAME_R=0;
REPLACE_PUTENV=0;
REPLACE_QSORT_R=0;
+ REPLACE_RANDOM=0;
REPLACE_RANDOM_R=0;
REPLACE_REALLOC=0;
REPLACE_REALPATH=0;
REPLACE_SETENV=0;
+ REPLACE_SETSTATE=0;
REPLACE_STRTOD=0;
+ REPLACE_STRTOLD=0;
REPLACE_UNSETENV=0;
REPLACE_WCTOMB=0;
@@ -7919,10 +8181,12 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_realpath_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_realpath_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_realpath_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_realpath_works="$gl_cross_guess_normal" ;;
esac
else
@@ -7968,7 +8232,7 @@ nocrash_init (void)
/* Allocate a port on which the thread shall listen for exceptions. */
if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
== KERN_SUCCESS) {
- /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
+ /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
if (mach_port_insert_right (self, our_exception_port, our_exception_port,
MACH_MSG_TYPE_MAKE_SEND)
== KERN_SUCCESS) {
@@ -7987,7 +8251,7 @@ nocrash_init (void)
for a particular thread. This has the effect that when our exception
port gets the message, the thread specific exception port has already
been asked, and we don't need to bother about it.
- See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
+ See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
task_set_exception_ports (self, mask, our_exception_port,
EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
}
@@ -8117,9 +8381,11 @@ printf "%s\n" "#define FUNC_REALPATH_WORKS 1" >>confdefs.h
+ GNULIB_ACCESS=0;
GNULIB_CHDIR=0;
GNULIB_CHOWN=0;
GNULIB_CLOSE=0;
+ GNULIB_COPY_FILE_RANGE=0;
GNULIB_DUP=0;
GNULIB_DUP2=0;
GNULIB_DUP3=0;
@@ -8138,6 +8404,7 @@ printf "%s\n" "#define FUNC_REALPATH_WORKS 1" >>confdefs.h
GNULIB_GETHOSTNAME=0;
GNULIB_GETLOGIN=0;
GNULIB_GETLOGIN_R=0;
+ GNULIB_GETOPT_POSIX=0;
GNULIB_GETPAGESIZE=0;
GNULIB_GETPASS=0;
GNULIB_GETUSERSHELL=0;
@@ -8168,6 +8435,7 @@ printf "%s\n" "#define FUNC_REALPATH_WORKS 1" >>confdefs.h
GNULIB_USLEEP=0;
GNULIB_WRITE=0;
HAVE_CHOWN=1;
+ HAVE_COPY_FILE_RANGE=1;
HAVE_DUP2=1;
HAVE_DUP3=1;
HAVE_EUIDACCESS=1;
@@ -8212,6 +8480,7 @@ printf "%s\n" "#define FUNC_REALPATH_WORKS 1" >>confdefs.h
HAVE_DECL_TTYNAME_R=1;
HAVE_OS_H=0;
HAVE_SYS_PARAM_H=0;
+ REPLACE_ACCESS=0;
REPLACE_CHOWN=0;
REPLACE_CLOSE=0;
REPLACE_DUP=0;
@@ -8764,6 +9033,80 @@ printf "%s\n" "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
fi
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5
+printf %s "checking whether the compiler is clang... " >&6; }
+if test ${gl_cv_compiler_clang+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __clang__
+barfbarf
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "barfbarf" >/dev/null 2>&1
+then :
+ gl_cv_compiler_clang=yes
+else
+ gl_cv_compiler_clang=no
+fi
+rm -rf conftest*
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5
+printf "%s\n" "$gl_cv_compiler_clang" >&6; }
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5
+printf %s "checking for compiler option needed when checking for declarations... " >&6; }
+if test ${gl_cv_compiler_check_decl_option+y}
+then :
+ printf %s "(cached) " >&6
+else
+ if test $gl_cv_compiler_clang = yes; then
+ save_ac_compile="$ac_compile"
+ ac_compile="$ac_compile -Werror=implicit-function-declaration"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'
+else
+ gl_cv_compiler_check_decl_option=none
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_compile="$save_ac_compile"
+ else
+ gl_cv_compiler_check_decl_option=none
+ fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5
+printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; }
+ if test "x$gl_cv_compiler_check_decl_option" != xnone; then
+ ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option"
+ else
+ ac_compile_for_check_decl="$ac_compile"
+ fi
+
# The Clang compiler raises a warning for an undeclared identifier that matches
# a compiler builtin function. All extant Clang versions are affected, as of
# Clang 3.6.0. Test a builtin known to every version. This problem affects the
@@ -8857,7 +9200,7 @@ case $ac_cv_c_decl_report in
*) ac_c_decl_warn_flag= ;;
esac
-ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
if test "x$ac_cv_have_decl_strerror_r" = xyes
then :
ac_have_decl=1
@@ -8951,12 +9294,14 @@ fi
+ GNULIB_CREAT=0;
GNULIB_FCNTL=0;
GNULIB_NONBLOCKING=0;
GNULIB_OPEN=0;
GNULIB_OPENAT=0;
HAVE_FCNTL=1;
HAVE_OPENAT=1;
+ REPLACE_CREAT=0;
REPLACE_FCNTL=0;
REPLACE_OPEN=0;
REPLACE_OPENAT=0;
@@ -9514,7 +9859,7 @@ fi
REPLACE_VSNPRINTF=0;
REPLACE_VSPRINTF=0;
-ac_fn_c_check_decl "$LINENO" "getdelim" "ac_cv_have_decl_getdelim" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "getdelim" "ac_cv_have_decl_getdelim" "$ac_includes_default"
if test "x$ac_cv_have_decl_getdelim" = xyes
then :
ac_have_decl=1
@@ -9847,7 +10192,7 @@ else
export POSIXLY_CORRECT
if test "$cross_compiling" = yes
then :
- gl_cv_func_getopt_gnu="guessing no"
+ gl_cv_func_getopt_gnu="$gl_cross_guess_normal"
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9893,7 +10238,7 @@ nocrash_init (void)
/* Allocate a port on which the thread shall listen for exceptions. */
if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
== KERN_SUCCESS) {
- /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
+ /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
if (mach_port_insert_right (self, our_exception_port, our_exception_port,
MACH_MSG_TYPE_MAKE_SEND)
== KERN_SUCCESS) {
@@ -9912,7 +10257,7 @@ nocrash_init (void)
for a particular thread. This has the effect that when our exception
port gets the message, the thread specific exception port has already
been asked, and we don't need to bother about it.
- See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
+ See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
task_set_exception_ports (self, mask, our_exception_port,
EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
}
@@ -10441,9 +10786,522 @@ printf "%s\n" "$gl_cv_sys_struct_timeval_tv_sec" >&6; }
- GNULIB_NL_LANGINFO=0;
- HAVE_NL_LANGINFO=1;
- REPLACE_NL_LANGINFO=0;
+
+
+ if test -z "$gl_pthreadlib_body_done"; then
+ gl_pthread_api=no
+ LIBPTHREAD=
+ LIBPMULTITHREAD=
+ # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+ # it groks <pthread.h>. It's added above, in gl_ANYTHREADLIB_EARLY.
+ ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes
+then :
+ gl_have_pthread_h=yes
+else
+ gl_have_pthread_h=no
+fi
+
+ if test "$gl_have_pthread_h" = yes; then
+ # Other possible tests:
+ # -lpthreads (FSU threads, PCthreads)
+ # -lgthreads
+ # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+ # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+ # the second one only in libpthread, and lock.c needs it.
+ #
+ # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
+ # needs -pthread for some reason. See:
+ # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
+ save_LIBS=$LIBS
+ for gl_pthread in '' '-pthread'; do
+ LIBS="$LIBS $gl_pthread"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ pthread_mutex_t m;
+ pthread_mutexattr_t ma;
+
+int
+main (void)
+{
+pthread_mutex_lock (&m);
+ pthread_mutexattr_init (&ma);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_pthread_api=yes
+ LIBPTHREAD=$gl_pthread
+ LIBPMULTITHREAD=$gl_pthread
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$save_LIBS
+ test $gl_pthread_api = yes && break
+ done
+
+ # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+ # since it is defined as a macro on OSF/1.)
+ if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then
+ # The program links fine without libpthread. But it may actually
+ # need to link with libpthread in order to create multiple threads.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+printf %s "checking for pthread_kill in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main (void)
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_pthread_pthread_kill=yes
+else
+ ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
+then :
+ LIBPMULTITHREAD=-lpthread
+ # On Solaris and HP-UX, most pthread functions exist also in libc.
+ # Therefore pthread_in_use() needs to actually try to create a
+ # thread: pthread_create from libc will fail, whereas
+ # pthread_create will actually create a thread.
+ # On Solaris 10 or newer, this test is no longer needed, because
+ # libc contains the fully functional pthread functions.
+ case "$host_os" in
+ solaris | solaris2.1-9 | solaris2.1-9.* | hpux*)
+
+printf "%s\n" "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
+
+ esac
+
+fi
+
+ elif test $gl_pthread_api != yes; then
+ # Some library is needed. Try libpthread and libc_r.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+printf %s "checking for pthread_kill in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main (void)
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_pthread_pthread_kill=yes
+else
+ ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
+then :
+ gl_pthread_api=yes
+ LIBPTHREAD=-lpthread
+ LIBPMULTITHREAD=-lpthread
+fi
+
+ if test $gl_pthread_api != yes; then
+ # For FreeBSD 4.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+printf %s "checking for pthread_kill in -lc_r... " >&6; }
+if test ${ac_cv_lib_c_r_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main (void)
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_c_r_pthread_kill=yes
+else
+ ac_cv_lib_c_r_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_c_r_pthread_kill" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_kill" = xyes
+then :
+ gl_pthread_api=yes
+ LIBPTHREAD=-lc_r
+ LIBPMULTITHREAD=-lc_r
+fi
+
+ fi
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
+printf %s "checking whether POSIX threads API is available... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_pthread_api" >&5
+printf "%s\n" "$gl_pthread_api" >&6; }
+
+
+ if test $gl_pthread_api = yes; then
+
+printf "%s\n" "#define HAVE_PTHREAD_API 1" >>confdefs.h
+
+ fi
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sched.h>
+int
+main (void)
+{
+sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ LIB_SCHED_YIELD=
+
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5
+printf %s "checking for sched_yield in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_sched_yield+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main (void)
+{
+return sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_rt_sched_yield=yes
+else
+ ac_cv_lib_rt_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5
+printf "%s\n" "$ac_cv_lib_rt_sched_yield" >&6; }
+if test "x$ac_cv_lib_rt_sched_yield" = xyes
+then :
+ LIB_SCHED_YIELD=-lrt
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lposix4" >&5
+printf %s "checking for sched_yield in -lposix4... " >&6; }
+if test ${ac_cv_lib_posix4_sched_yield+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix4 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main (void)
+{
+return sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_posix4_sched_yield=yes
+else
+ ac_cv_lib_posix4_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix4_sched_yield" >&5
+printf "%s\n" "$ac_cv_lib_posix4_sched_yield" >&6; }
+if test "x$ac_cv_lib_posix4_sched_yield" = xyes
+then :
+ LIB_SCHED_YIELD=-lposix4
+fi
+
+fi
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+ gl_pthreadlib_body_done=done
+ fi
+
+
+
+
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (LC_ALL, NULL) is multithread-safe" >&5
+printf %s "checking whether setlocale (LC_ALL, NULL) is multithread-safe... " >&6; }
+if test ${gl_cv_func_setlocale_null_all_mtsafe+y}
+then :
+ printf %s "(cached) " >&6
+else
+ case "$host_os" in
+ # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin.
+ *-musl* | darwin* | freebsd* | netbsd* | openbsd* | aix* | haiku* | cygwin*)
+ gl_cv_func_setlocale_null_all_mtsafe=no ;;
+ # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows.
+ *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*)
+ gl_cv_func_setlocale_null_all_mtsafe=yes ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *)
+ gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_all_mtsafe" >&5
+printf "%s\n" "$gl_cv_func_setlocale_null_all_mtsafe" >&6; }
+ case "$host_os" in
+ mingw*) ;;
+ *)
+ if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then
+ gl_cv_func_setlocale_null_all_mtsafe="trivially yes"
+ fi
+ ;;
+ esac
+ case "$gl_cv_func_setlocale_null_all_mtsafe" in
+ *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;;
+ *) SETLOCALE_NULL_ALL_MTSAFE=0 ;;
+ esac
+
+printf "%s\n" "#define SETLOCALE_NULL_ALL_MTSAFE $SETLOCALE_NULL_ALL_MTSAFE" >>confdefs.h
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (category, NULL) is multithread-safe" >&5
+printf %s "checking whether setlocale (category, NULL) is multithread-safe... " >&6; }
+if test ${gl_cv_func_setlocale_null_one_mtsafe+y}
+then :
+ printf %s "(cached) " >&6
+else
+ case "$host_os" in
+ # Guess no on OpenBSD, AIX.
+ openbsd* | aix*)
+ gl_cv_func_setlocale_null_one_mtsafe=no ;;
+ # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows.
+ *-gnu* | gnu* | *-musl* | darwin* | freebsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*)
+ gl_cv_func_setlocale_null_one_mtsafe=yes ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *)
+ gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_one_mtsafe" >&5
+printf "%s\n" "$gl_cv_func_setlocale_null_one_mtsafe" >&6; }
+ case "$host_os" in
+ mingw*) ;;
+ *)
+ if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then
+ gl_cv_func_setlocale_null_one_mtsafe="trivially yes"
+ fi
+ ;;
+ esac
+ case "$gl_cv_func_setlocale_null_one_mtsafe" in
+ *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;;
+ *) SETLOCALE_NULL_ONE_MTSAFE=0 ;;
+ esac
+
+printf "%s\n" "#define SETLOCALE_NULL_ONE_MTSAFE $SETLOCALE_NULL_ONE_MTSAFE" >>confdefs.h
+
+
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+ case "$host_os" in
+ mingw*) LIB_SETLOCALE_NULL= ;;
+ *)
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+printf %s "checking whether imported symbols can be declared weak... " >&6; }
+if test ${gl_cv_have_weak+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_cv_have_weak=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main (void)
+{
+xyzzy();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_cv_have_weak=maybe
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $gl_cv_have_weak = maybe; then
+ if test "$cross_compiling" = yes
+then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1
+then :
+ gl_cv_have_weak="guessing yes"
+else
+ gl_cv_have_weak="guessing no"
+fi
+rm -rf conftest*
+
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_have_weak=yes
+else
+ gl_cv_have_weak=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+printf "%s\n" "$gl_cv_have_weak" >&6; }
+ case "$gl_cv_have_weak" in
+ *yes)
+
+printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h
+
+ ;;
+ esac
+
+ case "$gl_cv_have_weak" in
+ *yes) LIB_SETLOCALE_NULL= ;;
+ *) LIB_SETLOCALE_NULL="$LIBPTHREAD" ;;
+ esac
+ ;;
+ esac
+ else
+ LIB_SETLOCALE_NULL=
+ fi
@@ -10578,36 +11436,24 @@ fi
- GNULIB_LOCALECONV=0;
- GNULIB_SETLOCALE=0;
- GNULIB_DUPLOCALE=0;
- GNULIB_LOCALENAME=0;
- HAVE_NEWLOCALE=1;
- HAVE_DUPLOCALE=1;
- HAVE_FREELOCALE=1;
- REPLACE_LOCALECONV=0;
- REPLACE_SETLOCALE=0;
- REPLACE_NEWLOCALE=0;
- REPLACE_DUPLOCALE=0;
- REPLACE_FREELOCALE=0;
- REPLACE_STRUCT_LCONV=0;
-
-
- REPLACE_NULL=0;
- HAVE_MAX_ALIGN_T=1;
- HAVE_WCHAR_T=1;
-
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
-printf %s "checking for wchar_t... " >&6; }
-if test ${gt_cv_c_wchar_t+y}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+printf %s "checking for wint_t... " >&6; }
+if test ${gt_cv_c_wint_t+y}
then :
printf %s "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
int
main (void)
{
@@ -10618,39 +11464,39 @@ main (void)
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gt_cv_c_wchar_t=yes
+ gt_cv_c_wint_t=yes
else
- gt_cv_c_wchar_t=no
+ gt_cv_c_wint_t=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
-printf "%s\n" "$gt_cv_c_wchar_t" >&6; }
- if test $gt_cv_c_wchar_t = yes; then
-
-printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h
-
- fi
-
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+printf "%s\n" "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h
- STDDEF_H=
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for good max_align_t" >&5
-printf %s "checking for good max_align_t... " >&6; }
-if test ${gl_cv_type_max_align_t+y}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
+printf %s "checking whether wint_t is too small... " >&6; }
+if test ${gl_cv_type_wint_t_too_small+y}
then :
printf %s "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stddef.h>
- unsigned int s = sizeof (max_align_t);
- #if defined __GNUC__ || defined __IBM__ALIGNOF__
- int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
- int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1];
- #endif
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+ int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
int
main (void)
@@ -10662,69 +11508,103 @@ main (void)
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_type_max_align_t=yes
+ gl_cv_type_wint_t_too_small=no
else
- gl_cv_type_max_align_t=no
+ gl_cv_type_wint_t_too_small=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_max_align_t" >&5
-printf "%s\n" "$gl_cv_type_max_align_t" >&6; }
- if test $gl_cv_type_max_align_t = no; then
- HAVE_MAX_ALIGN_T=0
- STDDEF_H=stddef.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
+printf "%s\n" "$gl_cv_type_wint_t_too_small" >&6; }
+ if test $gl_cv_type_wint_t_too_small = yes; then
+ GNULIB_OVERRIDES_WINT_T=1
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ else
+ GNULIB_OVERRIDES_WINT_T=0
fi
- if test $gt_cv_c_wchar_t = no; then
- HAVE_WCHAR_T=0
- STDDEF_H=stddef.h
- fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
-printf %s "checking whether NULL can be used in arbitrary expressions... " >&6; }
-if test ${gl_cv_decl_null_works+y}
-then :
- printf %s "(cached) " >&6
-else
+
+
+ gl_cv_c_multiarch=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stddef.h>
- int test[2 * (sizeof NULL == sizeof (void *)) -1];
-
-int
-main (void)
-{
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
- ;
- return 0;
-}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_decl_null_works=yes
-else
- gl_cv_decl_null_works=no
+
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
-printf "%s\n" "$gl_cv_decl_null_works" >&6; }
- if test $gl_cv_decl_null_works = no; then
- REPLACE_NULL=1
- STDDEF_H=stddef.h
+ if test $gl_cv_c_multiarch = yes; then
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+
+
+
+
+
+
+
+
+printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+
+
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
+ else
+ HAVE_WCHAR_H=0
+ fi
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
fi
- if test -n "$STDDEF_H"; then
- GL_GENERATE_STDDEF_H_TRUE=
- GL_GENERATE_STDDEF_H_FALSE='#'
-else
- GL_GENERATE_STDDEF_H_TRUE='#'
- GL_GENERATE_STDDEF_H_FALSE=
-fi
- if test -n "$STDDEF_H"; then
@@ -10734,20 +11614,23 @@ fi
if test $gl_cv_have_include_next = yes; then
- gl_cv_next_stddef_h='<'stddef.h'>'
+ gl_cv_next_stdint_h='<'stdint.h'>'
else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
-printf %s "checking absolute name of <stddef.h>... " >&6; }
-if test ${gl_cv_next_stddef_h+y}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
+printf %s "checking absolute name of <stdint.h>... " >&6; }
+if test ${gl_cv_next_stdint_h+y}
then :
printf %s "(cached) " >&6
else
+ if test $ac_cv_header_stdint_h = yes; then
+
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stddef.h>
+#include <stdint.h>
_ACEOF
case "$host_os" in
aix*) gl_absname_cpp="$ac_cpp -C" ;;
@@ -10763,7 +11646,7 @@ _ACEOF
;;
esac
gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
- gl_header_literal_regex=`echo 'stddef.h' \
+ gl_header_literal_regex=`echo 'stdint.h' \
| sed -e "$gl_make_literal_regex_sed"`
gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
@@ -10772,602 +11655,1180 @@ _ACEOF
q
}'
- gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
sed -n "$gl_absolute_header_sed"`
- gl_header=$gl_cv_absolute_stddef_h
- gl_cv_next_stddef_h='"'$gl_header'"'
+ gl_header=$gl_cv_absolute_stdint_h
+ gl_cv_next_stdint_h='"'$gl_header'"'
+ else
+ gl_cv_next_stdint_h='<'stdint.h'>'
+ fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
-printf "%s\n" "$gl_cv_next_stddef_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
+printf "%s\n" "$gl_cv_next_stdint_h" >&6; }
fi
- NEXT_STDDEF_H=$gl_cv_next_stddef_h
+ NEXT_STDINT_H=$gl_cv_next_stdint_h
if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
- gl_next_as_first_directive='<'stddef.h'>'
+ gl_next_as_first_directive='<'stdint.h'>'
else
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=$gl_cv_next_stddef_h
+ gl_next_as_first_directive=$gl_cv_next_stdint_h
fi
- NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+ NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+ if test $ac_cv_header_stdint_h = yes; then
+ HAVE_STDINT_H=1
+ else
+ HAVE_STDINT_H=0
fi
+ if test $ac_cv_header_stdint_h = yes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
+printf %s "checking whether stdint.h conforms to C99... " >&6; }
+if test ${gl_cv_header_working_stdint_h+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
-# Check whether --with-gnu-ld was given.
-if test ${with_gnu_ld+y}
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+/* Check that SIZE_MAX has the correct type, if possible. */
+#if 201112 <= __STDC_VERSION__
+int k = _Generic (SIZE_MAX, size_t: 0);
+#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
+ || (0x5110 <= __SUNPRO_C && !__STDC__))
+extern size_t k;
+extern __typeof__ (SIZE_MAX) k;
+#endif
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+ ((t) ((t) 0 < (t) -1 \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+struct s {
+ int check_PTRDIFF:
+ PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+ && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+ ? 1 : -1;
+ /* Detect bug in FreeBSD 6.0 / ia64. */
+ int check_SIG_ATOMIC:
+ SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+ && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+ ? 1 : -1;
+ int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+ int check_WCHAR:
+ WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+ && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+ ? 1 : -1;
+ /* Detect bug in mingw. */
+ int check_WINT:
+ WINT_MIN == TYPE_MINIMUM (wint_t)
+ && WINT_MAX == TYPE_MAXIMUM (wint_t)
+ ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in
+ # Guess yes on native Windows.
+ mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
+ # In general, assume it works.
+ *) gl_cv_header_working_stdint_h="guessing yes" ;;
+ esac
+
else
- with_gnu_ld=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+ {
+#ifdef INT8_MAX
+ MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+ MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+ MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+ MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+ MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+ MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+ MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+ MVAL (UINT64_MAX),
+#endif
+ NULL
+ };
+
+int
+main (void)
+{
+
+ const char **mv;
+ for (mv = macro_values; *mv != NULL; mv++)
+ {
+ const char *value = *mv;
+ /* Test whether it looks like a cast expression. */
+ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+ || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+ || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+ || strncmp (value, "((int)"/*)*/, 6) == 0
+ || strncmp (value, "((signed short)"/*)*/, 15) == 0
+ || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+ return mv - macro_values + 1;
+ }
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_header_working_stdint_h=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
- # contains only /bin. Note that ksh looks also at the FPATH variable,
- # so we have to set that as well for the test.
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
- || PATH_SEPARATOR=';'
- }
+
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test -n "$LD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5
-printf %s "checking for ld... " >&6; }
-elif test "$GCC" = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-printf %s "checking for ld used by $CC... " >&6; }
-elif test "$with_gnu_ld" = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-printf %s "checking for GNU ld... " >&6; }
-else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-printf %s "checking for non-GNU ld... " >&6; }
fi
-if test -n "$LD"; then
- # Let the user override the test with a path.
- :
-else
- if test ${acl_cv_path_LD+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
+printf "%s\n" "$gl_cv_header_working_stdint_h" >&6; }
+ fi
+
+ HAVE_C99_STDINT_H=0
+ HAVE_SYS_BITYPES_H=0
+ HAVE_SYS_INTTYPES_H=0
+ STDINT_H=stdint.h
+ case "$gl_cv_header_working_stdint_h" in
+ *yes)
+ HAVE_C99_STDINT_H=1
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h predates C++11" >&5
+printf %s "checking whether stdint.h predates C++11... " >&6; }
+if test ${gl_cv_header_stdint_predates_cxx11_h+y}
then :
printf %s "(cached) " >&6
else
-
- acl_cv_path_LD= # Final result of this test
- ac_prog=ld # Program to search in $PATH
- if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $acl_output in
- # Accept absolute paths.
- [\\/]* | ?:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the pathname of ld
- acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
- while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
- acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
- done
- # Got the pathname. No search in PATH is needed.
- acl_cv_path_LD="$acl_output"
- ac_prog=
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
- fi
- if test -n "$ac_prog"; then
- # Search for $ac_prog in $PATH.
- acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$acl_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
- esac
- fi
- done
- IFS="$acl_save_ifs"
- fi
- case $host in
- *-*-aix*)
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ gl_cv_header_stdint_predates_cxx11_h=yes
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __powerpc64__ || defined _ARCH_PPC64
- int ok;
- #else
- error fail
- #endif
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+intmax_t im = INTMAX_MAX;
+int32_t i32 = INT32_C (0x7fffffff);
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- # The compiler produces 64-bit code. Add option '-b64' so that the
- # linker groks 64-bit object files.
- case "$acl_cv_path_LD " in
- *" -b64 "*) ;;
- *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
- esac
-
+ gl_cv_header_stdint_predates_cxx11_h=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
- sparc64-*-netbsd*)
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_predates_cxx11_h" >&5
+printf "%s\n" "$gl_cv_header_stdint_predates_cxx11_h" >&6; }
+
+ if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
+
+printf "%s\n" "#define __STDC_CONSTANT_MACROS 1" >>confdefs.h
+
+
+printf "%s\n" "#define __STDC_LIMIT_MACROS 1" >>confdefs.h
+
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h has UINTMAX_WIDTH etc." >&5
+printf %s "checking whether stdint.h has UINTMAX_WIDTH etc.... " >&6; }
+if test ${gl_cv_header_stdint_width+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_cv_header_stdint_width=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
+ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+ #endif
+ #include <stdint.h>
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ int iw = UINTMAX_WIDTH;
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
-
-else
- # The compiler produces 32-bit code. Add option '-m elf32_sparc'
- # so that the linker groks 32-bit object files.
- case "$acl_cv_path_LD " in
- *" -m elf32_sparc "*) ;;
- *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
- esac
-
+ gl_cv_header_stdint_width=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
- esac
-
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_width" >&5
+printf "%s\n" "$gl_cv_header_stdint_width" >&6; }
+ if test "$gl_cv_header_stdint_width" = yes; then
+ STDINT_H=
+ fi
+ ;;
+ *)
+ ac_fn_c_check_header_compile "$LINENO" "sys/inttypes.h" "ac_cv_header_sys_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_inttypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_INTTYPES_H 1" >>confdefs.h
- LD="$acl_cv_path_LD"
fi
-if test -n "$LD"; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-printf "%s\n" "$LD" >&6; }
-else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
- as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+ac_fn_c_check_header_compile "$LINENO" "sys/bitypes.h" "ac_cv_header_sys_bitypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_bitypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_BITYPES_H 1" >>confdefs.h
+
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
-if test ${acl_cv_prog_gnu_ld+y}
+
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ fi
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ fi
+
+
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+ for gltype in ptrdiff_t size_t ; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+printf %s "checking for bit size of $gltype... " >&6; }
+if eval test \${gl_cv_bitsizeof_${gltype}+y}
then :
printf %s "(cached) " >&6
else
- # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes
- ;;
-*)
- acl_cv_prog_gnu_ld=no
- ;;
-esac
+ if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>"
+then :
+
+else
+ result=unknown
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
-printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$acl_cv_prog_gnu_ld
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ printf "%s\n" "#define BITSIZEOF_${GLTYPE} $result" >>confdefs.h
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+ fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
-printf %s "checking for shared library run path origin... " >&6; }
-if test ${acl_cv_rpath+y}
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+printf %s "checking for bit size of $gltype... " >&6; }
+if eval test \${gl_cv_bitsizeof_${gltype}+y}
then :
printf %s "(cached) " >&6
else
+ if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
-printf "%s\n" "$acl_cv_rpath" >&6; }
- wl="$acl_cv_wl"
- acl_libext="$acl_cv_libext"
- acl_shlibext="$acl_cv_shlibext"
- acl_libname_spec="$acl_cv_libname_spec"
- acl_library_names_spec="$acl_cv_library_names_spec"
- acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- acl_hardcode_direct="$acl_cv_hardcode_direct"
- acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
- # Check whether --enable-rpath was given.
-if test ${enable_rpath+y}
+#include <limits.h>"
then :
- enableval=$enable_rpath; :
+
else
- enable_rpath=yes
+ result=unknown
+fi
+
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ printf "%s\n" "#define BITSIZEOF_${GLTYPE} $result" >>confdefs.h
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5
-printf %s "checking 32-bit host C ABI... " >&6; }
-if test ${gl_cv_host_cpu_c_abi_32bit+y}
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
+printf %s "checking whether $gltype is signed... " >&6; }
+if eval test \${gl_cv_type_${gltype}_signed+y}
then :
printf %s "(cached) " >&6
else
- if test -n "$gl_cv_host_cpu_c_abi"; then
- case "$gl_cv_host_cpu_c_abi" in
- i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
- gl_cv_host_cpu_c_abi_32bit=yes ;;
- *)
- gl_cv_host_cpu_c_abi_32bit=no ;;
- esac
- else
- case "$host_cpu" in
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- i[4567]86 )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
- x86_64 )
- # On x86_64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
- # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
- # with native Windows (mingw, MSVC).
- # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if (defined __x86_64__ || defined __amd64__ \
- || defined _M_X64 || defined _M_AMD64) \
- && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main (void)
+{
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_host_cpu_c_abi_32bit=no
+ result=yes
else
- gl_cv_host_cpu_c_abi_32bit=yes
+ result=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
+ eval gl_cv_type_${gltype}_signed=\$result
- arm* | aarch64 )
- # Assume arm with EABI.
- # On arm64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
- # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+fi
+eval ac_res=\$gl_cv_type_${gltype}_signed
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ printf "%s\n" "#define HAVE_SIGNED_${GLTYPE} 1" >>confdefs.h
+
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+
+
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+ for gltype in ptrdiff_t size_t ; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+printf %s "checking for $gltype integer literal suffix... " >&6; }
+if eval test \${gl_cv_type_${gltype}_suffix+y}
+then :
+ printf %s "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_host_cpu_c_abi_32bit=no
-else
- gl_cv_host_cpu_c_abi_32bit=yes
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ printf "%s\n" "#define ${GLTYPE}_SUFFIX $result" >>confdefs.h
- hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
- # On hppa, the C compiler may be generating 32-bit code or 64-bit
- # code. In the latter case, it defines _LP64 and __LP64__.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ done
+
+
+ fi
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+printf %s "checking for $gltype integer literal suffix... " >&6; }
+if eval test \${gl_cv_type_${gltype}_suffix+y}
+then :
+ printf %s "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __LP64__
- int ok;
- #else
- error fail
- #endif
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_host_cpu_c_abi_32bit=no
-else
- gl_cv_host_cpu_c_abi_32bit=yes
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ printf "%s\n" "#define ${GLTYPE}_SUFFIX $result" >>confdefs.h
- ia64* )
- # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
- # 32-bit code. In the latter case, it defines _ILP32.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef _ILP32
- int ok;
- #else
- error fail
- #endif
+ done
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=yes
+
+
+ if test $GNULIB_OVERRIDES_WINT_T = 1; then
+ BITSIZEOF_WINT_T=32
+ fi
+
+ ;;
+ esac
+
+
+
+ LIMITS_H='limits.h'
+ if test -n "$LIMITS_H"; then
+ GL_GENERATE_LIMITS_H_TRUE=
+ GL_GENERATE_LIMITS_H_FALSE='#'
else
- gl_cv_host_cpu_c_abi_32bit=no
+ GL_GENERATE_LIMITS_H_TRUE='#'
+ GL_GENERATE_LIMITS_H_FALSE=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
- mips* )
- # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
- # at 32.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
- int ok;
- #else
- error fail
- #endif
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_host_cpu_c_abi_32bit=no
+
+
+
+
+
+ if test -n "$STDINT_H"; then
+ GL_GENERATE_STDINT_H_TRUE=
+ GL_GENERATE_STDINT_H_FALSE='#'
else
- gl_cv_host_cpu_c_abi_32bit=yes
+ GL_GENERATE_STDINT_H_TRUE='#'
+ GL_GENERATE_STDINT_H_FALSE=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
- powerpc* )
- # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
- # No need to distinguish them here; the caller may distinguish
- # them based on the OS.
- # On powerpc64 systems, the C compiler may still be generating
- # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
- # be generating 64-bit code.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined __powerpc64__ || defined _ARCH_PPC64
- int ok;
- #else
- error fail
- #endif
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+
+ GNULIB_IMAXABS=0;
+ GNULIB_IMAXDIV=0;
+ GNULIB_STRTOIMAX=0;
+ GNULIB_STRTOUMAX=0;
+ HAVE_DECL_IMAXABS=1;
+ HAVE_DECL_IMAXDIV=1;
+ HAVE_DECL_STRTOIMAX=1;
+ HAVE_DECL_STRTOUMAX=1;
+ HAVE_IMAXDIV_T=1;
+ REPLACE_STRTOIMAX=0;
+ REPLACE_STRTOUMAX=0;
+ INT32_MAX_LT_INTMAX_MAX=1;
+ INT64_MAX_EQ_LONG_MAX='defined _LP64';
+ PRI_MACROS_BROKEN=0;
+ PRIPTR_PREFIX=__PRIPTR_PREFIX;
+ UINT32_MAX_LT_UINTMAX_MAX=1;
+ UINT64_MAX_EQ_ULONG_MAX='defined _LP64';
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_inttypes_h='<'inttypes.h'>'
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <inttypes.h>" >&5
+printf %s "checking absolute name of <inttypes.h>... " >&6; }
+if test ${gl_cv_next_inttypes_h+y}
then :
- gl_cv_host_cpu_c_abi_32bit=no
+ printf %s "(cached) " >&6
else
- gl_cv_host_cpu_c_abi_32bit=yes
+
+ if test $ac_cv_header_inttypes_h = yes; then
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <inttypes.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'inttypes.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_inttypes_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_inttypes_h
+ gl_cv_next_inttypes_h='"'$gl_header'"'
+ else
+ gl_cv_next_inttypes_h='<'inttypes.h'>'
+ fi
+
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_inttypes_h" >&5
+printf "%s\n" "$gl_cv_next_inttypes_h" >&6; }
+ fi
+ NEXT_INTTYPES_H=$gl_cv_next_inttypes_h
- rs6000 )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'inttypes.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_inttypes_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H=$gl_next_as_first_directive
- riscv32 | riscv64 )
- # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
- # Size of 'long' and 'void *':
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+
+
+
+
+
+
+
+
+
+
+
+ GNULIB_NL_LANGINFO=0;
+ HAVE_NL_LANGINFO=1;
+ REPLACE_NL_LANGINFO=0;
+
+
+
+ GNULIB_LOCALECONV=0;
+ GNULIB_SETLOCALE=0;
+ GNULIB_SETLOCALE_NULL=0;
+ GNULIB_DUPLOCALE=0;
+ GNULIB_LOCALENAME=0;
+ HAVE_NEWLOCALE=1;
+ HAVE_DUPLOCALE=1;
+ HAVE_FREELOCALE=1;
+ REPLACE_LOCALECONV=0;
+ REPLACE_SETLOCALE=0;
+ REPLACE_NEWLOCALE=0;
+ REPLACE_DUPLOCALE=0;
+ REPLACE_FREELOCALE=0;
+ REPLACE_STRUCT_LCONV=0;
+
+
+ REPLACE_NULL=0;
+ HAVE_MAX_ALIGN_T=1;
+ HAVE_WCHAR_T=1;
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+printf %s "checking for wchar_t... " >&6; }
+if test ${gt_cv_c_wchar_t+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __LP64__
- int ok;
- #else
- error fail
- #endif
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main (void)
+{
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_host_cpu_c_abi_32bit=no
+ gt_cv_c_wchar_t=yes
else
- gl_cv_host_cpu_c_abi_32bit=yes
+ gt_cv_c_wchar_t=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+printf "%s\n" "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
- s390* )
- # On s390x, the C compiler may be generating 64-bit (= s390x) code
- # or 31-bit (= s390) code.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+ fi
+
+
+
+
+ STDDEF_H=
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for good max_align_t" >&5
+printf %s "checking for good max_align_t... " >&6; }
+if test ${gl_cv_type_max_align_t+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __LP64__ || defined __s390x__
- int ok;
- #else
- error fail
- #endif
+#include <stddef.h>
+ unsigned int s = sizeof (max_align_t);
+ #if defined __GNUC__ || defined __IBM__ALIGNOF__
+ int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
+ int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1];
+ #endif
+
+int
+main (void)
+{
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_host_cpu_c_abi_32bit=no
+ gl_cv_type_max_align_t=yes
else
- gl_cv_host_cpu_c_abi_32bit=yes
+ gl_cv_type_max_align_t=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
- sparc | sparc64 )
- # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
- # C compiler still generates 32-bit code.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_max_align_t" >&5
+printf "%s\n" "$gl_cv_type_max_align_t" >&6; }
+ if test $gl_cv_type_max_align_t = no; then
+ HAVE_MAX_ALIGN_T=0
+ STDDEF_H=stddef.h
+ fi
+
+ if test $gt_cv_c_wchar_t = no; then
+ HAVE_WCHAR_T=0
+ STDDEF_H=stddef.h
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
+printf %s "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if test ${gl_cv_decl_null_works+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
+#include <stddef.h>
+ int test[2 * (sizeof NULL == sizeof (void *)) -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_host_cpu_c_abi_32bit=no
+ gl_cv_decl_null_works=yes
else
- gl_cv_host_cpu_c_abi_32bit=yes
+ gl_cv_decl_null_works=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ;;
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
+printf "%s\n" "$gl_cv_decl_null_works" >&6; }
+ if test $gl_cv_decl_null_works = no; then
+ REPLACE_NULL=1
+ STDDEF_H=stddef.h
+ fi
- *)
- gl_cv_host_cpu_c_abi_32bit=no
- ;;
- esac
- fi
+ if test -n "$STDDEF_H"; then
+ GL_GENERATE_STDDEF_H_TRUE=
+ GL_GENERATE_STDDEF_H_FALSE='#'
+else
+ GL_GENERATE_STDDEF_H_TRUE='#'
+ GL_GENERATE_STDDEF_H_FALSE=
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5
-printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; }
- HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+ if test -n "$STDDEF_H"; then
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stddef_h='<'stddef.h'>'
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
+printf %s "checking absolute name of <stddef.h>... " >&6; }
+if test ${gl_cv_next_stddef_h+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
case "$host_os" in
- solaris*)
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
-printf %s "checking for 64-bit host... " >&6; }
-if test ${gl_cv_solaris_64bit+y}
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'stddef.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_stddef_h
+ gl_cv_next_stddef_h='"'$gl_header'"'
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
+printf "%s\n" "$gl_cv_next_stddef_h" >&6; }
+ fi
+ NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stddef.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stddef_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+
+ fi
+
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether locale.h defines locale_t" >&5
+printf %s "checking whether locale.h defines locale_t... " >&6; }
+if test ${gl_cv_header_locale_has_locale_t+y}
then :
printf %s "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef _LP64
- int ok;
- #else
- error fail
- #endif
+#include <locale.h>
+ locale_t x;
+int
+main (void)
+{
+ ;
+ return 0;
+}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
- gl_cv_solaris_64bit=yes
+ gl_cv_header_locale_has_locale_t=yes
else
- gl_cv_solaris_64bit=no
+ gl_cv_header_locale_has_locale_t=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
-printf "%s\n" "$gl_cv_solaris_64bit" >&6; };;
- esac
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_has_locale_t" >&5
+printf "%s\n" "$gl_cv_header_locale_has_locale_t" >&6; }
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5
-printf %s "checking for the common suffixes of directories in the library search path... " >&6; }
-if test ${acl_cv_libdirstems+y}
-then :
- printf %s "(cached) " >&6
-else
- acl_libdirstem=lib
- acl_libdirstem2=
- case "$host_os" in
- solaris*)
- if test $gl_cv_solaris_64bit = yes; then
- acl_libdirstem=lib/64
- case "$host_cpu" in
- sparc*) acl_libdirstem2=lib/sparcv9 ;;
- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
- esac
- fi
- ;;
- *)
- if test "$HOST_CPU_C_ABI_32BIT" != yes; then
- searchpath=`(if test -f /usr/bin/gcc \
- && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
- LC_ALL=C /usr/bin/gcc -print-search-dirs; \
- else \
- LC_ALL=C $CC -print-search-dirs; \
- fi) 2>/dev/null \
- | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- */../ | */.. )
- # Better ignore directories of this form. They are misleading.
- ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
- fi
- ;;
- esac
- test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
- acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5
-printf "%s\n" "$acl_cv_libdirstems" >&6; }
- # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
- acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
- acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
+ if test $ac_cv_header_xlocale_h = yes; then
+ HAVE_XLOCALE_H=1
+ if test $gl_cv_header_locale_has_locale_t = yes; then
+ gl_cv_header_locale_h_needs_xlocale_h=no
+ else
+ gl_cv_header_locale_h_needs_xlocale_h=yes
+ fi
+ HAVE_LOCALE_T=1
+ else
+ HAVE_XLOCALE_H=0
+ gl_cv_header_locale_h_needs_xlocale_h=no
+ if test $gl_cv_header_locale_has_locale_t = yes; then
+ HAVE_LOCALE_T=1
+ else
+ HAVE_LOCALE_T=0
+ fi
+ fi
+
@@ -11377,14 +12838,15 @@ printf "%s\n" "$acl_cv_libdirstems" >&6; }
LIBMULTITHREAD=
LTLIBMULTITHREAD=
if test "$gl_use_threads" != no; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
printf %s "checking whether imported symbols can be declared weak... " >&6; }
if test ${gl_cv_have_weak+y}
then :
printf %s "(cached) " >&6
else
gl_cv_have_weak=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
extern void xyzzy ();
#pragma weak xyzzy
@@ -11402,14 +12864,14 @@ then :
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- if test $gl_cv_have_weak = maybe; then
- if test "$cross_compiling" = yes
+ if test $gl_cv_have_weak = maybe; then
+ if test "$cross_compiling" = yes
then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __ELF__
- Extensible Linking Format
- #endif
+ Extensible Linking Format
+ #endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -11443,90 +12905,42 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- fi
- case " $LDFLAGS " in
- *" -static "*) gl_cv_have_weak=no ;;
- esac
+ fi
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
printf "%s\n" "$gl_cv_have_weak" >&6; }
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker supports --as-needed" >&5
-printf %s "checking whether the linker supports --as-needed... " >&6; }
-if test ${gl_cv_linker_have_as_needed+y}
-then :
- printf %s "(cached) " >&6
-else
- if test -n "$GCC"; then
- gl_saved_ldflags="$LDFLAGS"
- LDFLAGS="$gl_saved_ldflags -Wl,--as-needed -Wl,--no-as-needed"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main (void)
-{
+ case "$gl_cv_have_weak" in
+ *yes)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- gl_cv_linker_have_as_needed=yes
-else
- gl_cv_linker_have_as_needed=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$gl_saved_ldflags"
- else
- gl_cv_linker_have_as_needed=no
- fi
+printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_linker_have_as_needed" >&5
-printf "%s\n" "$gl_cv_linker_have_as_needed" >&6; }
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker supports --push-state" >&5
-printf %s "checking whether the linker supports --push-state... " >&6; }
-if test ${gl_cv_linker_have_push_state+y}
-then :
- printf %s "(cached) " >&6
-else
- if test -n "$GCC"; then
- gl_saved_ldflags="$LDFLAGS"
- LDFLAGS="$gl_saved_ldflags -Wl,--push-state -Wl,--pop-state"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ ;;
+ esac
-int
-main (void)
-{
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- gl_cv_linker_have_push_state=yes
-else
- gl_cv_linker_have_push_state=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$gl_saved_ldflags"
- else
- gl_cv_linker_have_push_state=no
- fi
+ :
+ fi
+ if test "$gl_use_threads" = isoc || test "$gl_use_threads" = isoc+posix; then
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_linker_have_push_state" >&5
-printf "%s\n" "$gl_cv_linker_have_push_state" >&6; }
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
- # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
- ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+ gl_have_isoc_threads="$ac_cv_header_threads_h"
+ fi
+ if test "$gl_use_threads" = yes \
+ || test "$gl_use_threads" = posix \
+ || test "$gl_use_threads" = isoc+posix; then
+
+
+ if test -z "$gl_pthreadlib_body_done"; then
+ gl_pthread_api=no
+ LIBPTHREAD=
+ LIBPMULTITHREAD=
+ # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+ # it groks <pthread.h>. It's added above, in gl_ANYTHREADLIB_EARLY.
+ ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
if test "x$ac_cv_header_pthread_h" = xyes
then :
gl_have_pthread_h=yes
@@ -11534,54 +12948,53 @@ else
gl_have_pthread_h=no
fi
- if test "$gl_have_pthread_h" = yes; then
- # Other possible tests:
- # -lpthreads (FSU threads, PCthreads)
- # -lgthreads
- gl_have_pthread=
- # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
- # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
- # the second one only in libpthread, and lock.c needs it.
- #
- # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
- # needs -pthread for some reason. See:
- # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
- save_LIBS=$LIBS
- for gl_pthread in '' '-pthread'; do
- LIBS="$LIBS $gl_pthread"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test "$gl_have_pthread_h" = yes; then
+ # Other possible tests:
+ # -lpthreads (FSU threads, PCthreads)
+ # -lgthreads
+ # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+ # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+ # the second one only in libpthread, and lock.c needs it.
+ #
+ # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
+ # needs -pthread for some reason. See:
+ # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
+ save_LIBS=$LIBS
+ for gl_pthread in '' '-pthread'; do
+ LIBS="$LIBS $gl_pthread"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
- pthread_mutex_t m;
- pthread_mutexattr_t ma;
+ pthread_mutex_t m;
+ pthread_mutexattr_t ma;
int
main (void)
{
pthread_mutex_lock (&m);
- pthread_mutexattr_init (&ma);
+ pthread_mutexattr_init (&ma);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- gl_have_pthread=yes
- LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread
- LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread
+ gl_pthread_api=yes
+ LIBPTHREAD=$gl_pthread
+ LIBPMULTITHREAD=$gl_pthread
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LIBS=$save_LIBS
- test -n "$gl_have_pthread" && break
- done
+ LIBS=$save_LIBS
+ test $gl_pthread_api = yes && break
+ done
- # Test for libpthread by looking for pthread_kill. (Not pthread_self,
- # since it is defined as a macro on OSF/1.)
- if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then
- # The program links fine without libpthread. But it may actually
- # need to link with libpthread in order to create multiple threads.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+ # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+ # since it is defined as a macro on OSF/1.)
+ if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then
+ # The program links fine without libpthread. But it may actually
+ # need to link with libpthread in order to create multiple threads.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
printf %s "checking for pthread_kill in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_kill+y}
then :
@@ -11621,25 +13034,25 @@ fi
printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
then :
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
- # On Solaris and HP-UX, most pthread functions exist also in libc.
- # Therefore pthread_in_use() needs to actually try to create a
- # thread: pthread_create from libc will fail, whereas
- # pthread_create will actually create a thread.
- # On Solaris 10 or newer, this test is no longer needed, because
- # libc contains the fully functional pthread functions.
- case "$host_os" in
- solaris | solaris2.1-9 | solaris2.1-9.* | hpux*)
+ LIBPMULTITHREAD=-lpthread
+ # On Solaris and HP-UX, most pthread functions exist also in libc.
+ # Therefore pthread_in_use() needs to actually try to create a
+ # thread: pthread_create from libc will fail, whereas
+ # pthread_create will actually create a thread.
+ # On Solaris 10 or newer, this test is no longer needed, because
+ # libc contains the fully functional pthread functions.
+ case "$host_os" in
+ solaris | solaris2.1-9 | solaris2.1-9.* | hpux*)
printf "%s\n" "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
- esac
+ esac
fi
- elif test -z "$gl_have_pthread"; then
- # Some library is needed. Try libpthread and libc_r.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+ elif test $gl_pthread_api != yes; then
+ # Some library is needed. Try libpthread and libc_r.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
printf %s "checking for pthread_kill in -lpthread... " >&6; }
if test ${ac_cv_lib_pthread_pthread_kill+y}
then :
@@ -11679,14 +13092,14 @@ fi
printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
then :
- gl_have_pthread=yes
- LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+ gl_pthread_api=yes
+ LIBPTHREAD=-lpthread
+ LIBPMULTITHREAD=-lpthread
fi
- if test -z "$gl_have_pthread"; then
- # For FreeBSD 4.
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+ if test $gl_pthread_api != yes; then
+ # For FreeBSD 4.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
printf %s "checking for pthread_kill in -lc_r... " >&6; }
if test ${ac_cv_lib_c_r_pthread_kill+y}
then :
@@ -11726,673 +13139,599 @@ fi
printf "%s\n" "$ac_cv_lib_c_r_pthread_kill" >&6; }
if test "x$ac_cv_lib_c_r_pthread_kill" = xyes
then :
- gl_have_pthread=yes
- LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
- LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r
+ gl_pthread_api=yes
+ LIBPTHREAD=-lc_r
+ LIBPMULTITHREAD=-lc_r
fi
- fi
fi
- if test -n "$gl_have_pthread"; then
- gl_threads_api=posix
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
+printf %s "checking whether POSIX threads API is available... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_pthread_api" >&5
+printf "%s\n" "$gl_pthread_api" >&6; }
-printf "%s\n" "#define USE_POSIX_THREADS 1" >>confdefs.h
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+ if test $gl_pthread_api = yes; then
-printf "%s\n" "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_API 1" >>confdefs.h
- LIBTHREAD=
- LTLIBTHREAD=
- case "$LIBMULTITHREAD" in
- "") ;;
- -pthread)
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="$LIBMULTITHREAD -Wl,--push-state -Wl,--no-as-needed -lpthread -Wl,--pop-state"
- else
- LIBMULTITHREAD="$LIBMULTITHREAD -Wl,--no-as-needed -lpthread"
- fi
- fi
- ;;
- *)
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state"
- else
- LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD"
- fi
- fi
- ;;
- esac
- # TODO: May need to modify LTLIBMULTITHREAD similarly.
- fi
- fi
- fi
- fi
fi
- if test -z "$gl_have_pthread"; then
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
- gl_have_solaristhread=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS -lthread"
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#include <sched.h>
+int
+main (void)
+{
+sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ LIB_SCHED_YIELD=
-#include <thread.h>
-#include <synch.h>
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5
+printf %s "checking for sched_yield in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_sched_yield+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
int
main (void)
{
-thr_self();
+return sched_yield ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- gl_have_solaristhread=yes
+ ac_cv_lib_rt_sched_yield=yes
+else
+ ac_cv_lib_rt_sched_yield=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_solaristhread"; then
- gl_threads_api=solaris
- LIBTHREAD=-lthread
- LTLIBTHREAD=-lthread
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
-
-printf "%s\n" "#define USE_SOLARIS_THREADS 1" >>confdefs.h
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5
+printf "%s\n" "$ac_cv_lib_rt_sched_yield" >&6; }
+if test "x$ac_cv_lib_rt_sched_yield" = xyes
+then :
+ LIB_SCHED_YIELD=-lrt
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lposix4" >&5
+printf %s "checking for sched_yield in -lposix4... " >&6; }
+if test ${ac_cv_lib_posix4_sched_yield+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix4 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main (void)
+{
+return sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_posix4_sched_yield=yes
+else
+ ac_cv_lib_posix4_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix4_sched_yield" >&5
+printf "%s\n" "$ac_cv_lib_posix4_sched_yield" >&6; }
+if test "x$ac_cv_lib_posix4_sched_yield" = xyes
+then :
+ LIB_SCHED_YIELD=-lposix4
+fi
-printf "%s\n" "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
+fi
- LIBTHREAD=
- LTLIBTHREAD=
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state"
- else
- LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD"
- fi
- fi
- # TODO: May need to modify LTLIBMULTITHREAD similarly.
- fi
- fi
- fi
- fi
- if test "$gl_use_threads" = pth; then
- gl_save_CPPFLAGS="$CPPFLAGS"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ gl_pthreadlib_body_done=done
+ fi
+ LIBTHREAD=$LIBPTHREAD LTLIBTHREAD=$LIBPTHREAD
+ LIBMULTITHREAD=$LIBPMULTITHREAD LTLIBMULTITHREAD=$LIBPMULTITHREAD
+ if test $gl_pthread_api = yes; then
+ if test "$gl_use_threads" = isoc+posix && test "$gl_have_isoc_threads" = yes; then
+ gl_threads_api='isoc+posix'
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
-printf %s "checking how to link with libpth... " >&6; }
-if test ${ac_cv_libpth_libs+y}
-then :
- printf %s "(cached) " >&6
-else
+printf "%s\n" "#define USE_ISOC_AND_POSIX_THREADS 1" >>confdefs.h
+ LIBTHREAD= LTLIBTHREAD=
+ else
+ gl_threads_api=posix
+printf "%s\n" "#define USE_POSIX_THREADS 1" >>confdefs.h
+ if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+printf "%s\n" "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
+ LIBTHREAD= LTLIBTHREAD=
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test $gl_threads_api = none; then
+ if test "$gl_use_threads" = isoc && test "$gl_have_isoc_threads" = yes; then
- use_additional=yes
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
+ if test -z "$gl_stdthreadlib_body_done"; then
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ case "$host_os" in
+ mingw*)
+ LIBSTDTHREAD=
+ ;;
+ *)
-# Check whether --with-libpth-prefix was given.
-if test ${with_libpth_prefix+y}
+ if test -z "$gl_pthreadlib_body_done"; then
+ gl_pthread_api=no
+ LIBPTHREAD=
+ LIBPMULTITHREAD=
+ # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+ # it groks <pthread.h>. It's added above, in gl_ANYTHREADLIB_EARLY.
+ ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes
then :
- withval=$with_libpth_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ gl_have_pthread_h=yes
+else
+ gl_have_pthread_h=no
+fi
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && test ! -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
- fi
- fi
+ if test "$gl_have_pthread_h" = yes; then
+ # Other possible tests:
+ # -lpthreads (FSU threads, PCthreads)
+ # -lgthreads
+ # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+ # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+ # the second one only in libpthread, and lock.c needs it.
+ #
+ # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
+ # needs -pthread for some reason. See:
+ # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
+ save_LIBS=$LIBS
+ for gl_pthread in '' '-pthread'; do
+ LIBS="$LIBS $gl_pthread"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ pthread_mutex_t m;
+ pthread_mutexattr_t ma;
+int
+main (void)
+{
+pthread_mutex_lock (&m);
+ pthread_mutexattr_init (&ma);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_pthread_api=yes
+ LIBPTHREAD=$gl_pthread
+ LIBPMULTITHREAD=$gl_pthread
fi
-
- LIBPTH=
- LTLIBPTH=
- INCPTH=
- LIBPTH_PREFIX=
- HAVE_LIBPTH=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='pth '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$save_LIBS
+ test $gl_pthread_api = yes && break
done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBPTH; do
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+ # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+ # since it is defined as a macro on OSF/1.)
+ if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then
+ # The program links fine without libpthread. But it may actually
+ # need to link with libpthread in order to create multiple threads.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+printf %s "checking for pthread_kill in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no \
- || test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$acl_hardcode_direct" = yes; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBPTH; do
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main (void)
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_pthread_pthread_kill=yes
+else
+ ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
+then :
+ LIBPMULTITHREAD=-lpthread
+ # On Solaris and HP-UX, most pthread functions exist also in libc.
+ # Therefore pthread_in_use() needs to actually try to create a
+ # thread: pthread_create from libc will fail, whereas
+ # pthread_create will actually create a thread.
+ # On Solaris 10 or newer, this test is no longer needed, because
+ # libc contains the fully functional pthread functions.
+ case "$host_os" in
+ solaris | solaris2.1-9 | solaris2.1-9.* | hpux*)
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+printf "%s\n" "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- else
- LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a"
- else
- LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- if test "$name" = 'pth'; then
- LIBPTH_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- */$acl_libdirstem2 | */$acl_libdirstem2/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
- if test "$name" = 'pth'; then
- LIBPTH_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCPTH; do
+ esac
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+fi
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCPTH="${INCPTH}${INCPTH:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBPTH; do
+ elif test $gl_pthread_api != yes; then
+ # Some library is needed. Try libpthread and libc_r.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+printf %s "checking for pthread_kill in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main (void)
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_pthread_pthread_kill=yes
+else
+ ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
+then :
+ gl_pthread_api=yes
+ LIBPTHREAD=-lpthread
+ LIBPMULTITHREAD=-lpthread
+fi
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBPTH; do
+ if test $gl_pthread_api != yes; then
+ # For FreeBSD 4.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+printf %s "checking for pthread_kill in -lc_r... " >&6; }
+if test ${ac_cv_lib_c_r_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main (void)
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_c_r_pthread_kill=yes
+else
+ ac_cv_lib_c_r_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_c_r_pthread_kill" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_kill" = xyes
+then :
+ gl_pthread_api=yes
+ LIBPTHREAD=-lc_r
+ LIBPMULTITHREAD=-lc_r
+fi
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBPTH="${LIBPTH}${LIBPTH:+ }$dep"
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name"
- fi
fi
fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
- done
fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir"
- done
- fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
+printf %s "checking whether POSIX threads API is available... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_pthread_api" >&5
+printf "%s\n" "$gl_pthread_api" >&6; }
+ if test $gl_pthread_api = yes; then
+printf "%s\n" "#define HAVE_PTHREAD_API 1" >>confdefs.h
+ fi
- ac_cv_libpth_libs="$LIBPTH"
- ac_cv_libpth_ltlibs="$LTLIBPTH"
- ac_cv_libpth_cppflags="$INCPTH"
- ac_cv_libpth_prefix="$LIBPTH_PREFIX"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sched.h>
+int
+main (void)
+{
+sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ LIB_SCHED_YIELD=
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
-printf "%s\n" "$ac_cv_libpth_libs" >&6; }
- LIBPTH="$ac_cv_libpth_libs"
- LTLIBPTH="$ac_cv_libpth_ltlibs"
- INCPTH="$ac_cv_libpth_cppflags"
- LIBPTH_PREFIX="$ac_cv_libpth_prefix"
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5
+printf %s "checking for sched_yield in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_sched_yield+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- for element in $INCPTH; do
- haveit=
- for x in $CPPFLAGS; do
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main (void)
+{
+return sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_rt_sched_yield=yes
+else
+ ac_cv_lib_rt_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5
+printf "%s\n" "$ac_cv_lib_rt_sched_yield" >&6; }
+if test "x$ac_cv_lib_rt_sched_yield" = xyes
+then :
+ LIB_SCHED_YIELD=-lrt
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lposix4" >&5
+printf %s "checking for sched_yield in -lposix4... " >&6; }
+if test ${ac_cv_lib_posix4_sched_yield+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix4 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sched_yield ();
+int
+main (void)
+{
+return sched_yield ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_posix4_sched_yield=yes
+else
+ ac_cv_lib_posix4_sched_yield=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix4_sched_yield" >&5
+printf "%s\n" "$ac_cv_lib_posix4_sched_yield" >&6; }
+if test "x$ac_cv_lib_posix4_sched_yield" = xyes
+then :
+ LIB_SCHED_YIELD=-lposix4
+fi
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
- HAVE_LIBPTH=yes
+ gl_pthreadlib_body_done=done
+ fi
+ if test $ac_cv_header_threads_h = yes; then
+ ac_fn_c_check_func "$LINENO" "thrd_create" "ac_cv_func_thrd_create"
+if test "x$ac_cv_func_thrd_create" = xyes
+then :
+ printf "%s\n" "#define HAVE_THRD_CREATE 1" >>confdefs.h
+fi
- gl_have_pth=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBPTH"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test $ac_cv_func_thrd_create = yes; then
+ LIBSTDTHREAD=
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for thrd_create in -lstdthreads" >&5
+printf %s "checking for thrd_create in -lstdthreads... " >&6; }
+if test ${ac_cv_lib_stdthreads_thrd_create+y}
+then :
+ printf %s "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lstdthreads $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <pth.h>
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char thrd_create ();
int
main (void)
{
-pth_self();
+return thrd_create ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
- gl_have_pth=yes
+ ac_cv_lib_stdthreads_thrd_create=yes
+else
+ ac_cv_lib_stdthreads_thrd_create=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_pth"; then
- gl_threads_api=pth
- LIBTHREAD="$LIBPTH"
- LTLIBTHREAD="$LTLIBPTH"
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_stdthreads_thrd_create" >&5
+printf "%s\n" "$ac_cv_lib_stdthreads_thrd_create" >&6; }
+if test "x$ac_cv_lib_stdthreads_thrd_create" = xyes
+then :
-printf "%s\n" "#define USE_PTH_THREADS 1" >>confdefs.h
+ LIBSTDTHREAD='-lstdthreads -lpthread'
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+else
-printf "%s\n" "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
+ LIBSTDTHREAD="$LIBPMULTITHREAD"
+
+fi
- LIBTHREAD=
- LTLIBTHREAD=
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state"
- else
- LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD"
- fi
- fi
- # TODO: May need to modify LTLIBMULTITHREAD similarly.
fi
+ else
+ LIBSTDTHREAD="$LIBPMULTITHREAD $LIB_SCHED_YIELD"
fi
- else
- CPPFLAGS="$gl_save_CPPFLAGS"
+ ;;
+ esac
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ISO C threads API is available" >&5
+printf %s "checking whether ISO C threads API is available... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_threads_h" >&5
+printf "%s\n" "$ac_cv_header_threads_h" >&6; }
+ gl_stdthreadlib_body_done=done
+ fi
+
+ LIBTHREAD=$LIBSTDTHREAD LTLIBTHREAD=$LIBSTDTHREAD
+ LIBMULTITHREAD=$LIBSTDTHREAD LTLIBMULTITHREAD=$LIBSTDTHREAD
+ gl_threads_api=isoc
+
+printf "%s\n" "#define USE_ISOC_THREADS 1" >>confdefs.h
+
fi
fi
- if test -z "$gl_have_pthread"; then
+ if test $gl_threads_api = none; then
case "$gl_use_threads" in
yes | windows | win32) # The 'win32' is for backward compatibility.
if { case "$host_os" in
@@ -12445,8 +13784,8 @@ then :
# Guess no on native Windows.
gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
*)
- # If we don't know, assume the worst.
- gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ gl_cv_func_lstat_dereferences_slashed_symlink="$gl_cross_guess_normal" ;;
esac
else
@@ -12622,11 +13961,11 @@ else
then :
case "$host_os" in
# Guess yes on platforms where we know the result.
- *-gnu* | gnu* | freebsd* | netbsd* | openbsd* \
+ *-gnu* | gnu* | *-musl* | freebsd* | netbsd* | openbsd* \
| hpux* | solaris* | cygwin* | mingw*)
- ac_cv_func_malloc_0_nonnull=yes ;;
- # If we don't know, assume the worst.
- *) ac_cv_func_malloc_0_nonnull=no ;;
+ ac_cv_func_malloc_0_nonnull="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;;
esac
else
@@ -12664,140 +14003,20 @@ fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; }
- if test $ac_cv_func_malloc_0_nonnull = yes
-then :
- gl_cv_func_malloc_0_nonnull=1
-else
- gl_cv_func_malloc_0_nonnull=0
-fi
+ case "$ac_cv_func_malloc_0_nonnull" in
+ *yes)
+ gl_cv_func_malloc_0_nonnull=1
+ ;;
+ *)
+ gl_cv_func_malloc_0_nonnull=0
+ ;;
+ esac
printf "%s\n" "#define MALLOC_0_IS_NONNULL $gl_cv_func_malloc_0_nonnull" >>confdefs.h
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-printf %s "checking for unsigned long long int... " >&6; }
-if test ${ac_cv_type_unsigned_long_long_int+y}
-then :
- printf %s "(cached) " >&6
-else
- ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main (void)
-{
-/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-else
- ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; }
- if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-printf %s "checking for long long int... " >&6; }
-if test ${ac_cv_type_long_long_int+y}
-then :
- printf %s "(cached) " >&6
-else
- ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- if test "$cross_compiling" = yes
-then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
-int
-main (void)
-{
-long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"
-then :
-
-else
- ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
- fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-printf "%s\n" "$ac_cv_type_long_long_int" >&6; }
- if test $ac_cv_type_long_long_int = yes; then
-
-printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
printf %s "checking for mbstate_t... " >&6; }
@@ -12997,10 +14216,9 @@ printf "%s\n" "$gt_cv_locale_ja" >&6; }
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5
-printf %s "checking for a transitional chinese locale... " >&6; }
-if test ${gt_cv_locale_zh_CN+y}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
+printf %s "checking for a french Unicode locale... " >&6; }
+if test ${gt_cv_locale_fr_utf8+y}
then :
printf %s "(cached) " >&6
else
@@ -13009,7 +14227,6 @@ else
/* end confdefs.h. */
#include <locale.h>
-#include <stdlib.h>
#include <time.h>
#if HAVE_LANGINFO_CODESET
# include <langinfo.h>
@@ -13018,14 +14235,11 @@ else
#include <string.h>
struct tm t;
char buf[16];
-int main ()
-{
+int main () {
/* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
imitates locale dependent behaviour by looking at the environment
variables, and all locales use the UTF-8 encoding. */
-#if defined __BEOS__ || defined __HAIKU__
- return 1;
-#else
+#if !(defined __BEOS__ || defined __HAIKU__)
/* Check whether the given locale name is recognized by the system. */
# if defined _WIN32 && !defined __CYGWIN__
/* On native Windows, setlocale(category, "") looks at the system settings,
@@ -13043,14 +14257,11 @@ int main ()
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
- some unit tests fail.
- On MirBSD 10, when an unsupported locale is specified, setlocale()
- succeeds but then nl_langinfo(CODESET) is "UTF-8". */
+ some unit tests fail. */
# if HAVE_LANGINFO_CODESET
{
const char *cs = nl_langinfo (CODESET);
- if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
- || strcmp (cs, "UTF-8") == 0)
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
return 1;
}
# endif
@@ -13060,22 +14271,21 @@ int main ()
LC_ALL is set on the command line. */
if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
# endif
- /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
- This excludes the UTF-8 encoding (except on MirBSD). */
- {
- const char *p;
- t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
- if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
- for (p = buf; *p != '\0'; p++)
- if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
- return 1;
- }
- /* Check whether a typical GB18030 multibyte sequence is recognized as a
- single wide character. This excludes the GB2312 and GBK encodings. */
- if (mblen ("\203\062\332\066", 5) != 4)
+ /* Check whether in the abbreviation of the second month, the second
+ character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+ two bytes long, with UTF-8 encoding. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%b", &t) < 4
+ || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
return 1;
- return 0;
#endif
+#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
+ /* Check whether the decimal separator is a comma.
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+ are nl_langinfo(RADIXCHAR) are both ".". */
+ if (localeconv () ->decimal_point[0] != ',') return 1;
+#endif
+ return 0;
}
_ACEOF
@@ -13093,56 +14303,52 @@ _ACEOF
# and similar.
mingw*)
# Test for the hypothetical native Windows locale name.
- if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_zh_CN=Chinese_China.54936
+ if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=French_France.65001
else
# None found.
- gt_cv_locale_zh_CN=none
+ gt_cv_locale_fr_utf8=none
fi
;;
- solaris2.8)
- # On Solaris 8, the locales zh_CN.GB18030, zh_CN.GBK, zh.GBK are
- # broken. One witness is the test case in gl_MBRTOWC_SANITYCHECK.
- # Another witness is that "LC_ALL=zh_CN.GB18030 bash -c true" dumps core.
- gt_cv_locale_zh_CN=none
- ;;
*)
# Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
# otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
# configure script would override the LC_ALL setting. Likewise for
# LC_CTYPE, which is also set at the beginning of the configure script.
- # Test for the locale name without encoding suffix.
- if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_zh_CN=zh_CN
+ # Test for the usual locale name.
+ if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR
else
# Test for the locale name with explicit encoding suffix.
- if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_zh_CN=zh_CN.GB18030
+ if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr_FR.UTF-8
else
- # None found.
- gt_cv_locale_zh_CN=none
+ # Test for the Solaris 7 locale name.
+ if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_fr_utf8=fr.UTF-8
+ else
+ # None found.
+ gt_cv_locale_fr_utf8=none
+ fi
fi
fi
;;
esac
- else
- # If there was a link error, due to mblen(), the system is so old that
- # it certainly doesn't have a chinese locale.
- gt_cv_locale_zh_CN=none
fi
rm -fr conftest*
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5
-printf "%s\n" "$gt_cv_locale_zh_CN" >&6; }
- LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
+printf "%s\n" "$gt_cv_locale_fr_utf8" >&6; }
+ LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a french Unicode locale" >&5
-printf %s "checking for a french Unicode locale... " >&6; }
-if test ${gt_cv_locale_fr_utf8+y}
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a transitional chinese locale" >&5
+printf %s "checking for a transitional chinese locale... " >&6; }
+if test ${gt_cv_locale_zh_CN+y}
then :
printf %s "(cached) " >&6
else
@@ -13151,6 +14357,7 @@ else
/* end confdefs.h. */
#include <locale.h>
+#include <stdlib.h>
#include <time.h>
#if HAVE_LANGINFO_CODESET
# include <langinfo.h>
@@ -13159,11 +14366,14 @@ else
#include <string.h>
struct tm t;
char buf[16];
-int main () {
+int main ()
+{
/* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
imitates locale dependent behaviour by looking at the environment
variables, and all locales use the UTF-8 encoding. */
-#if !(defined __BEOS__ || defined __HAIKU__)
+#if defined __BEOS__ || defined __HAIKU__
+ return 1;
+#else
/* Check whether the given locale name is recognized by the system. */
# if defined _WIN32 && !defined __CYGWIN__
/* On native Windows, setlocale(category, "") looks at the system settings,
@@ -13181,11 +14391,14 @@ int main () {
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
- some unit tests fail. */
+ some unit tests fail.
+ On MirBSD 10, when an unsupported locale is specified, setlocale()
+ succeeds but then nl_langinfo(CODESET) is "UTF-8". */
# if HAVE_LANGINFO_CODESET
{
const char *cs = nl_langinfo (CODESET);
- if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+ if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
+ || strcmp (cs, "UTF-8") == 0)
return 1;
}
# endif
@@ -13195,21 +14408,22 @@ int main () {
LC_ALL is set on the command line. */
if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
# endif
- /* Check whether in the abbreviation of the second month, the second
- character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
- two bytes long, with UTF-8 encoding. */
- t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
- if (strftime (buf, sizeof (buf), "%b", &t) < 4
- || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+ /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+ This excludes the UTF-8 encoding (except on MirBSD). */
+ {
+ const char *p;
+ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+ for (p = buf; *p != '\0'; p++)
+ if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+ return 1;
+ }
+ /* Check whether a typical GB18030 multibyte sequence is recognized as a
+ single wide character. This excludes the GB2312 and GBK encodings. */
+ if (mblen ("\203\062\332\066", 5) != 4)
return 1;
-#endif
-#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
- /* Check whether the decimal separator is a comma.
- On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
- are nl_langinfo(RADIXCHAR) are both ".". */
- if (localeconv () ->decimal_point[0] != ',') return 1;
-#endif
return 0;
+#endif
}
_ACEOF
@@ -13227,44 +14441,52 @@ _ACEOF
# and similar.
mingw*)
# Test for the hypothetical native Windows locale name.
- if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_fr_utf8=French_France.65001
+ if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=Chinese_China.54936
else
# None found.
- gt_cv_locale_fr_utf8=none
+ gt_cv_locale_zh_CN=none
fi
;;
+ solaris2.8)
+ # On Solaris 8, the locales zh_CN.GB18030, zh_CN.GBK, zh.GBK are
+ # broken. One witness is the test case in gl_MBRTOWC_SANITYCHECK.
+ # Another witness is that "LC_ALL=zh_CN.GB18030 bash -c true" dumps core.
+ gt_cv_locale_zh_CN=none
+ ;;
*)
# Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
# otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
# configure script would override the LC_ALL setting. Likewise for
# LC_CTYPE, which is also set at the beginning of the configure script.
- # Test for the usual locale name.
- if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_fr_utf8=fr_FR
+ # Test for the locale name without encoding suffix.
+ if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN
else
# Test for the locale name with explicit encoding suffix.
- if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_fr_utf8=fr_FR.UTF-8
+ if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_zh_CN=zh_CN.GB18030
else
- # Test for the Solaris 7 locale name.
- if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
- gt_cv_locale_fr_utf8=fr.UTF-8
- else
- # None found.
- gt_cv_locale_fr_utf8=none
- fi
+ # None found.
+ gt_cv_locale_zh_CN=none
fi
fi
;;
esac
+ else
+ # If there was a link error, due to mblen(), the system is so old that
+ # it certainly doesn't have a chinese locale.
+ gt_cv_locale_zh_CN=none
fi
rm -fr conftest*
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr_utf8" >&5
-printf "%s\n" "$gt_cv_locale_fr_utf8" >&6; }
- LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_zh_CN" >&5
+printf "%s\n" "$gt_cv_locale_zh_CN" >&6; }
+ LOCALE_ZH_CN=$gt_cv_locale_zh_CN
+
+
+
@@ -13277,7 +14499,12 @@ printf "%s\n" "$gt_cv_locale_fr_utf8" >&6; }
- if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+ if case "$host_os" in
+ mingw*) true ;;
+ *) test $ac_cv_func_mbsinit = yes ;;
+ esac \
+ && test $ac_cv_func_mbrtowc = yes; then
+
@@ -13338,6 +14565,52 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ else
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ const char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 2;
+ }
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_incomplete_state=yes
+else
+ gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
fi
fi
@@ -13431,7 +14704,7 @@ printf "%s\n" "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
if test $ac_cv_func_mbrtowc = no; then
HAVE_MBRTOWC=0
- ac_fn_c_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" "
+ ac_fn_c_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" "
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
@@ -13814,6 +15087,149 @@ printf "%s\n" "$gl_cv_func_mbrtowc_nul_retval" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc stores incomplete characters" >&5
+printf %s "checking whether mbrtowc stores incomplete characters... " >&6; }
+if test ${gl_cv_func_mbrtowc_stores_incomplete+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;;
+ *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;;
+ esac
+ case "$host_os" in
+ mingw*)
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ int result = 0;
+ if (setlocale (LC_ALL, "French_France.65001") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 1;
+ }
+ if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\226", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 2;
+ }
+ if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\245", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 4;
+ }
+ if (setlocale (LC_ALL, "Chinese_China.936") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\261", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 8;
+ }
+ return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_stores_incomplete=no
+else
+ gl_cv_func_mbrtowc_stores_incomplete=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_stores_incomplete=no
+else
+ gl_cv_func_mbrtowc_stores_incomplete=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_stores_incomplete" >&5
+printf "%s\n" "$gl_cv_func_mbrtowc_stores_incomplete" >&6; }
+
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works on empty input" >&5
printf %s "checking whether mbrtowc works on empty input... " >&6; }
if test ${gl_cv_func_mbrtowc_empty_input+y}
@@ -13862,18 +15278,18 @@ printf "%s\n" "$gl_cv_func_mbrtowc_empty_input" >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C locale is free of encoding errors" >&5
printf %s "checking whether the C locale is free of encoding errors... " >&6; }
-if test ${gl_cv_C_locale_sans_EILSEQ+y}
+if test ${gl_cv_func_mbrtowc_C_locale_sans_EILSEQ+y}
then :
printf %s "(cached) " >&6
else
- gl_cv_C_locale_sans_EILSEQ="guessing no"
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal"
if test "$cross_compiling" = yes
then :
case "$host_os" in
# Guess yes on native Windows.
- mingw*) gl_cv_C_locale_sans_EILSEQ="guessing yes" ;;
+ mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;;
esac
else
@@ -13908,9 +15324,9 @@ main (void)
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
- gl_cv_C_locale_sans_EILSEQ=yes
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes
else
- gl_cv_C_locale_sans_EILSEQ=no
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -13918,8 +15334,8 @@ fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_C_locale_sans_EILSEQ" >&5
-printf "%s\n" "$gl_cv_C_locale_sans_EILSEQ" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" >&5
+printf "%s\n" "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" >&6; }
case "$gl_cv_func_mbrtowc_null_arg1" in
*yes) ;;
@@ -13953,6 +15369,14 @@ printf "%s\n" "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h
REPLACE_MBRTOWC=1
;;
esac
+ case "$gl_cv_func_mbrtowc_stores_incomplete" in
+ *no) ;;
+ *)
+printf "%s\n" "#define MBRTOWC_STORES_INCOMPLETE_BUG 1" >>confdefs.h
+
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
case "$gl_cv_func_mbrtowc_empty_input" in
*yes) ;;
*)
@@ -13961,16 +15385,113 @@ printf "%s\n" "#define MBRTOWC_EMPTY_INPUT_BUG 1" >>confdefs.h
REPLACE_MBRTOWC=1
;;
esac
- case $gl_cv_C_locale_sans_EILSEQ in
+ case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in
*yes) ;;
*)
-printf "%s\n" "#define C_LOCALE_MAYBE_EILSEQ 1" >>confdefs.h
+printf "%s\n" "#define MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ 1" >>confdefs.h
REPLACE_MBRTOWC=1
;;
esac
fi
fi
+ if test $REPLACE_MBSTATE_T = 1; then
+ case "$host_os" in
+ mingw*) LIB_MBRTOWC= ;;
+ *)
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+printf %s "checking whether imported symbols can be declared weak... " >&6; }
+if test ${gl_cv_have_weak+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_cv_have_weak=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main (void)
+{
+xyzzy();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_cv_have_weak=maybe
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $gl_cv_have_weak = maybe; then
+ if test "$cross_compiling" = yes
+then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1
+then :
+ gl_cv_have_weak="guessing yes"
+else
+ gl_cv_have_weak="guessing no"
+fi
+rm -rf conftest*
+
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_have_weak=yes
+else
+ gl_cv_have_weak=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+printf "%s\n" "$gl_cv_have_weak" >&6; }
+ case "$gl_cv_have_weak" in
+ *yes)
+
+printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h
+
+ ;;
+ esac
+
+ case "$gl_cv_have_weak" in
+ *yes) LIB_MBRTOWC= ;;
+ *) LIB_MBRTOWC="$LIBPTHREAD" ;;
+ esac
+ ;;
+ esac
+ else
+ LIB_MBRTOWC=
+ fi
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
@@ -14176,6 +15697,8 @@ printf "%s\n" "#define HAVE_MAP_ANONYMOUS 1" >>confdefs.h
# memchr should not dereference overestimated length after a match
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
# https://sourceware.org/bugzilla/show_bug.cgi?id=10162
+ # memchr should cast the second argument to 'unsigned char'.
+ # This bug exists in Android 4.3.
# Assume that memchr works on platforms that lack mprotect.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether memchr works" >&5
printf %s "checking whether memchr works... " >&6; }
@@ -14186,10 +15709,12 @@ else
if test "$cross_compiling" = yes
then :
case "$host_os" in
- # Guess yes on native Windows.
- mingw*) gl_cv_func_memchr_works="guessing yes" ;;
- # Be pessimistic for now.
- *) gl_cv_func_memchr_works="guessing no" ;;
+ # Guess no on Android.
+ linux*-android*) gl_cv_func_memchr_works="guessing no" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_memchr_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;;
esac
else
@@ -14242,6 +15767,15 @@ main (void)
if (memchr (fence - 1, 0, 3) != fence - 1)
result |= 4;
}
+ /* Test against bug on Android 4.3. */
+ {
+ char input[3];
+ input[0] = 'a';
+ input[1] = 'b';
+ input[2] = 'c';
+ if (memchr (input, 0x789abc00 | 'b', 3) != input + 1)
+ result |= 8;
+ }
return result;
;
@@ -14268,7 +15802,7 @@ printf "%s\n" "$gl_cv_func_memchr_works" >&6; }
esac
fi
-ac_fn_c_check_decl "$LINENO" "memrchr" "ac_cv_have_decl_memrchr" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "memrchr" "ac_cv_have_decl_memrchr" "$ac_includes_default"
if test "x$ac_cv_have_decl_memrchr" = xyes
then :
ac_have_decl=1
@@ -14376,50 +15910,7 @@ printf "%s\n" "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h
- gl_cv_c_multiarch=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
- arch=
- prev=
- for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
- if test -n "$prev"; then
- case $word in
- i?86 | x86_64 | ppc | ppc64)
- if test -z "$arch" || test "$arch" = "$word"; then
- arch="$word"
- else
- gl_cv_c_multiarch=yes
- fi
- ;;
- esac
- prev=
- else
- if test "x$word" = "x-arch"; then
- prev=arch
- fi
- fi
- done
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test $gl_cv_c_multiarch = yes; then
- APPLE_UNIVERSAL_BUILD=1
- else
- APPLE_UNIVERSAL_BUILD=0
- fi
-
-
-
-ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default"
if test "x$ac_cv_have_decl_alarm" = xyes
then :
ac_have_decl=1
@@ -14664,972 +16155,6 @@ fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
-printf %s "checking for wint_t... " >&6; }
-if test ${gt_cv_c_wint_t+y}
-then :
- printf %s "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
- before <wchar.h>. */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
- wint_t foo = (wchar_t)'\0';
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gt_cv_c_wint_t=yes
-else
- gt_cv_c_wint_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
-printf "%s\n" "$gt_cv_c_wint_t" >&6; }
- if test $gt_cv_c_wint_t = yes; then
-
-printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h
-
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
-printf %s "checking whether wint_t is too small... " >&6; }
-if test ${gl_cv_type_wint_t_too_small+y}
-then :
- printf %s "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
-# include <stddef.h>
-# include <stdio.h>
-# include <time.h>
-#endif
-#include <wchar.h>
- int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
-
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_type_wint_t_too_small=no
-else
- gl_cv_type_wint_t_too_small=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
-printf "%s\n" "$gl_cv_type_wint_t_too_small" >&6; }
- if test $gl_cv_type_wint_t_too_small = yes; then
- GNULIB_OVERRIDES_WINT_T=1
- else
- GNULIB_OVERRIDES_WINT_T=0
- fi
- else
- GNULIB_OVERRIDES_WINT_T=0
- fi
-
-
-
-
-
-
-
-
-
- if test $ac_cv_type_long_long_int = yes; then
- HAVE_LONG_LONG_INT=1
- else
- HAVE_LONG_LONG_INT=0
- fi
-
-
- if test $ac_cv_type_unsigned_long_long_int = yes; then
- HAVE_UNSIGNED_LONG_LONG_INT=1
- else
- HAVE_UNSIGNED_LONG_LONG_INT=0
- fi
-
-
-
- if test $ac_cv_header_wchar_h = yes; then
- HAVE_WCHAR_H=1
- else
- HAVE_WCHAR_H=0
- fi
-
-
- if test $ac_cv_header_inttypes_h = yes; then
- HAVE_INTTYPES_H=1
- else
- HAVE_INTTYPES_H=0
- fi
-
-
- if test $ac_cv_header_sys_types_h = yes; then
- HAVE_SYS_TYPES_H=1
- else
- HAVE_SYS_TYPES_H=0
- fi
-
-
-
-
-
-
-
-
-
-
-
- if test $gl_cv_have_include_next = yes; then
- gl_cv_next_stdint_h='<'stdint.h'>'
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
-printf %s "checking absolute name of <stdint.h>... " >&6; }
-if test ${gl_cv_next_stdint_h+y}
-then :
- printf %s "(cached) " >&6
-else
-
- if test $ac_cv_header_stdint_h = yes; then
-
-
-
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdint.h>
-_ACEOF
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
-
- case "$host_os" in
- mingw*)
- gl_dirsep_regex='[/\\]'
- ;;
- *)
- gl_dirsep_regex='\/'
- ;;
- esac
- gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
- gl_header_literal_regex=`echo 'stdint.h' \
- | sed -e "$gl_make_literal_regex_sed"`
- gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
- s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
- s|^/[^/]|//&|
- p
- q
- }'
-
- gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n "$gl_absolute_header_sed"`
-
- gl_header=$gl_cv_absolute_stdint_h
- gl_cv_next_stdint_h='"'$gl_header'"'
- else
- gl_cv_next_stdint_h='<'stdint.h'>'
- fi
-
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
-printf "%s\n" "$gl_cv_next_stdint_h" >&6; }
- fi
- NEXT_STDINT_H=$gl_cv_next_stdint_h
-
- if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
- gl_next_as_first_directive='<'stdint.h'>'
- else
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=$gl_cv_next_stdint_h
- fi
- NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
-
-
-
-
- if test $ac_cv_header_stdint_h = yes; then
- HAVE_STDINT_H=1
- else
- HAVE_STDINT_H=0
- fi
-
-
- if test $ac_cv_header_stdint_h = yes; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
-printf %s "checking whether stdint.h conforms to C99... " >&6; }
-if test ${gl_cv_header_working_stdint_h+y}
-then :
- printf %s "(cached) " >&6
-else
- gl_cv_header_working_stdint_h=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
-#define __STDC_CONSTANT_MACROS 1
-#define __STDC_LIMIT_MACROS 1
-#include <stdint.h>
-/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
-#if !(defined WCHAR_MIN && defined WCHAR_MAX)
-#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
-#endif
-
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-
-#ifdef INT8_MAX
-int8_t a1 = INT8_MAX;
-int8_t a1min = INT8_MIN;
-#endif
-#ifdef INT16_MAX
-int16_t a2 = INT16_MAX;
-int16_t a2min = INT16_MIN;
-#endif
-#ifdef INT32_MAX
-int32_t a3 = INT32_MAX;
-int32_t a3min = INT32_MIN;
-#endif
-#ifdef INT64_MAX
-int64_t a4 = INT64_MAX;
-int64_t a4min = INT64_MIN;
-#endif
-#ifdef UINT8_MAX
-uint8_t b1 = UINT8_MAX;
-#else
-typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
-#endif
-#ifdef UINT16_MAX
-uint16_t b2 = UINT16_MAX;
-#endif
-#ifdef UINT32_MAX
-uint32_t b3 = UINT32_MAX;
-#endif
-#ifdef UINT64_MAX
-uint64_t b4 = UINT64_MAX;
-#endif
-int_least8_t c1 = INT8_C (0x7f);
-int_least8_t c1max = INT_LEAST8_MAX;
-int_least8_t c1min = INT_LEAST8_MIN;
-int_least16_t c2 = INT16_C (0x7fff);
-int_least16_t c2max = INT_LEAST16_MAX;
-int_least16_t c2min = INT_LEAST16_MIN;
-int_least32_t c3 = INT32_C (0x7fffffff);
-int_least32_t c3max = INT_LEAST32_MAX;
-int_least32_t c3min = INT_LEAST32_MIN;
-int_least64_t c4 = INT64_C (0x7fffffffffffffff);
-int_least64_t c4max = INT_LEAST64_MAX;
-int_least64_t c4min = INT_LEAST64_MIN;
-uint_least8_t d1 = UINT8_C (0xff);
-uint_least8_t d1max = UINT_LEAST8_MAX;
-uint_least16_t d2 = UINT16_C (0xffff);
-uint_least16_t d2max = UINT_LEAST16_MAX;
-uint_least32_t d3 = UINT32_C (0xffffffff);
-uint_least32_t d3max = UINT_LEAST32_MAX;
-uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
-uint_least64_t d4max = UINT_LEAST64_MAX;
-int_fast8_t e1 = INT_FAST8_MAX;
-int_fast8_t e1min = INT_FAST8_MIN;
-int_fast16_t e2 = INT_FAST16_MAX;
-int_fast16_t e2min = INT_FAST16_MIN;
-int_fast32_t e3 = INT_FAST32_MAX;
-int_fast32_t e3min = INT_FAST32_MIN;
-int_fast64_t e4 = INT_FAST64_MAX;
-int_fast64_t e4min = INT_FAST64_MIN;
-uint_fast8_t f1 = UINT_FAST8_MAX;
-uint_fast16_t f2 = UINT_FAST16_MAX;
-uint_fast32_t f3 = UINT_FAST32_MAX;
-uint_fast64_t f4 = UINT_FAST64_MAX;
-#ifdef INTPTR_MAX
-intptr_t g = INTPTR_MAX;
-intptr_t gmin = INTPTR_MIN;
-#endif
-#ifdef UINTPTR_MAX
-uintptr_t h = UINTPTR_MAX;
-#endif
-intmax_t i = INTMAX_MAX;
-uintmax_t j = UINTMAX_MAX;
-
-/* Check that SIZE_MAX has the correct type, if possible. */
-#if 201112 <= __STDC_VERSION__
-int k = _Generic (SIZE_MAX, size_t: 0);
-#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
- || (0x5110 <= __SUNPRO_C && !__STDC__))
-extern size_t k;
-extern __typeof__ (SIZE_MAX) k;
-#endif
-
-#include <limits.h> /* for CHAR_BIT */
-#define TYPE_MINIMUM(t) \
- ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
-#define TYPE_MAXIMUM(t) \
- ((t) ((t) 0 < (t) -1 \
- ? (t) -1 \
- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-struct s {
- int check_PTRDIFF:
- PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
- && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
- ? 1 : -1;
- /* Detect bug in FreeBSD 6.0 / ia64. */
- int check_SIG_ATOMIC:
- SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
- && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
- ? 1 : -1;
- int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
- int check_WCHAR:
- WCHAR_MIN == TYPE_MINIMUM (wchar_t)
- && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
- ? 1 : -1;
- /* Detect bug in mingw. */
- int check_WINT:
- WINT_MIN == TYPE_MINIMUM (wint_t)
- && WINT_MAX == TYPE_MAXIMUM (wint_t)
- ? 1 : -1;
-
- /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
- int check_UINT8_C:
- (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
- int check_UINT16_C:
- (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
-
- /* Detect bugs in OpenBSD 3.9 stdint.h. */
-#ifdef UINT8_MAX
- int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
-#endif
-#ifdef UINT16_MAX
- int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
-#endif
-#ifdef UINT32_MAX
- int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
-#endif
-#ifdef UINT64_MAX
- int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
-#endif
- int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
- int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
- int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
- int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
- int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
- int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
- int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
- int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
- int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
- int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
- int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
-};
-
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- if test "$cross_compiling" = yes
-then :
- case "$host_os" in
- # Guess yes on native Windows.
- mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
- # In general, assume it works.
- *) gl_cv_header_working_stdint_h="guessing yes" ;;
- esac
-
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
-#define __STDC_CONSTANT_MACROS 1
-#define __STDC_LIMIT_MACROS 1
-#include <stdint.h>
-
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-
-#include <stdio.h>
-#include <string.h>
-#define MVAL(macro) MVAL1(macro)
-#define MVAL1(expression) #expression
-static const char *macro_values[] =
- {
-#ifdef INT8_MAX
- MVAL (INT8_MAX),
-#endif
-#ifdef INT16_MAX
- MVAL (INT16_MAX),
-#endif
-#ifdef INT32_MAX
- MVAL (INT32_MAX),
-#endif
-#ifdef INT64_MAX
- MVAL (INT64_MAX),
-#endif
-#ifdef UINT8_MAX
- MVAL (UINT8_MAX),
-#endif
-#ifdef UINT16_MAX
- MVAL (UINT16_MAX),
-#endif
-#ifdef UINT32_MAX
- MVAL (UINT32_MAX),
-#endif
-#ifdef UINT64_MAX
- MVAL (UINT64_MAX),
-#endif
- NULL
- };
-
-int
-main (void)
-{
-
- const char **mv;
- for (mv = macro_values; *mv != NULL; mv++)
- {
- const char *value = *mv;
- /* Test whether it looks like a cast expression. */
- if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
- || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
- || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
- || strncmp (value, "((int)"/*)*/, 6) == 0
- || strncmp (value, "((signed short)"/*)*/, 15) == 0
- || strncmp (value, "((signed char)"/*)*/, 14) == 0)
- return mv - macro_values + 1;
- }
- return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"
-then :
- gl_cv_header_working_stdint_h=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
-printf "%s\n" "$gl_cv_header_working_stdint_h" >&6; }
- fi
-
- HAVE_C99_STDINT_H=0
- HAVE_SYS_BITYPES_H=0
- HAVE_SYS_INTTYPES_H=0
- STDINT_H=stdint.h
- case "$gl_cv_header_working_stdint_h" in
- *yes)
- HAVE_C99_STDINT_H=1
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h predates C++11" >&5
-printf %s "checking whether stdint.h predates C++11... " >&6; }
-if test ${gl_cv_header_stdint_predates_cxx11_h+y}
-then :
- printf %s "(cached) " >&6
-else
- gl_cv_header_stdint_predates_cxx11_h=yes
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
-#include <stdint.h>
-
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-
-intmax_t im = INTMAX_MAX;
-int32_t i32 = INT32_C (0x7fffffff);
-
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_header_stdint_predates_cxx11_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_predates_cxx11_h" >&5
-printf "%s\n" "$gl_cv_header_stdint_predates_cxx11_h" >&6; }
-
- if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
-
-printf "%s\n" "#define __STDC_CONSTANT_MACROS 1" >>confdefs.h
-
-
-printf "%s\n" "#define __STDC_LIMIT_MACROS 1" >>confdefs.h
-
- fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stdint.h has UINTMAX_WIDTH etc." >&5
-printf %s "checking whether stdint.h has UINTMAX_WIDTH etc.... " >&6; }
-if test ${gl_cv_header_stdint_width+y}
-then :
- printf %s "(cached) " >&6
-else
- gl_cv_header_stdint_width=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* Work if build is not clean. */
- #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
- #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
- #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
- #endif
- #include <stdint.h>
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
- int iw = UINTMAX_WIDTH;
-
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_header_stdint_width=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_width" >&5
-printf "%s\n" "$gl_cv_header_stdint_width" >&6; }
- if test "$gl_cv_header_stdint_width" = yes; then
- STDINT_H=
- fi
- ;;
- *)
- ac_fn_c_check_header_compile "$LINENO" "sys/inttypes.h" "ac_cv_header_sys_inttypes_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_inttypes_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_INTTYPES_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "sys/bitypes.h" "ac_cv_header_sys_bitypes_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_bitypes_h" = xyes
-then :
- printf "%s\n" "#define HAVE_SYS_BITYPES_H 1" >>confdefs.h
-
-fi
-
- if test $ac_cv_header_sys_inttypes_h = yes; then
- HAVE_SYS_INTTYPES_H=1
- fi
- if test $ac_cv_header_sys_bitypes_h = yes; then
- HAVE_SYS_BITYPES_H=1
- fi
-
-
- if test $APPLE_UNIVERSAL_BUILD = 0; then
-
-
- for gltype in ptrdiff_t size_t ; do
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
-printf %s "checking for bit size of $gltype... " >&6; }
-if eval test \${gl_cv_bitsizeof_${gltype}+y}
-then :
- printf %s "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-#include <limits.h>"
-then :
-
-else
- result=unknown
-fi
-
- eval gl_cv_bitsizeof_${gltype}=\$result
-
-fi
-eval ac_res=\$gl_cv_bitsizeof_${gltype}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- eval result=\$gl_cv_bitsizeof_${gltype}
- if test $result = unknown; then
- result=0
- fi
- GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
- printf "%s\n" "#define BITSIZEOF_${GLTYPE} $result" >>confdefs.h
-
- eval BITSIZEOF_${GLTYPE}=\$result
- done
-
-
- fi
-
-
- for gltype in sig_atomic_t wchar_t wint_t ; do
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
-printf %s "checking for bit size of $gltype... " >&6; }
-if eval test \${gl_cv_bitsizeof_${gltype}+y}
-then :
- printf %s "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
-#include <limits.h>"
-then :
-
-else
- result=unknown
-fi
-
- eval gl_cv_bitsizeof_${gltype}=\$result
-
-fi
-eval ac_res=\$gl_cv_bitsizeof_${gltype}
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- eval result=\$gl_cv_bitsizeof_${gltype}
- if test $result = unknown; then
- result=0
- fi
- GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
- printf "%s\n" "#define BITSIZEOF_${GLTYPE} $result" >>confdefs.h
-
- eval BITSIZEOF_${GLTYPE}=\$result
- done
-
-
-
-
- for gltype in sig_atomic_t wchar_t wint_t ; do
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
-printf %s "checking whether $gltype is signed... " >&6; }
-if eval test \${gl_cv_type_${gltype}_signed+y}
-then :
- printf %s "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
- int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- result=yes
-else
- result=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- eval gl_cv_type_${gltype}_signed=\$result
-
-fi
-eval ac_res=\$gl_cv_type_${gltype}_signed
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- eval result=\$gl_cv_type_${gltype}_signed
- GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
- if test "$result" = yes; then
- printf "%s\n" "#define HAVE_SIGNED_${GLTYPE} 1" >>confdefs.h
-
- eval HAVE_SIGNED_${GLTYPE}=1
- else
- eval HAVE_SIGNED_${GLTYPE}=0
- fi
- done
-
-
- gl_cv_type_ptrdiff_t_signed=yes
- gl_cv_type_size_t_signed=no
- if test $APPLE_UNIVERSAL_BUILD = 0; then
-
-
- for gltype in ptrdiff_t size_t ; do
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
-printf %s "checking for $gltype integer literal suffix... " >&6; }
-if eval test \${gl_cv_type_${gltype}_suffix+y}
-then :
- printf %s "(cached) " >&6
-else
- eval gl_cv_type_${gltype}_suffix=no
- eval result=\$gl_cv_type_${gltype}_signed
- if test "$result" = yes; then
- glsufu=
- else
- glsufu=u
- fi
- for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
- case $glsuf in
- '') gltype1='int';;
- l) gltype1='long int';;
- ll) gltype1='long long int';;
- i64) gltype1='__int64';;
- u) gltype1='unsigned int';;
- ul) gltype1='unsigned long int';;
- ull) gltype1='unsigned long long int';;
- ui64)gltype1='unsigned __int64';;
- esac
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
- extern $gltype foo;
- extern $gltype1 foo;
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- eval gl_cv_type_${gltype}_suffix=\$glsuf
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- eval result=\$gl_cv_type_${gltype}_suffix
- test "$result" != no && break
- done
-fi
-eval ac_res=\$gl_cv_type_${gltype}_suffix
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
- eval result=\$gl_cv_type_${gltype}_suffix
- test "$result" = no && result=
- eval ${GLTYPE}_SUFFIX=\$result
- printf "%s\n" "#define ${GLTYPE}_SUFFIX $result" >>confdefs.h
-
- done
-
-
- fi
-
-
- for gltype in sig_atomic_t wchar_t wint_t ; do
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
-printf %s "checking for $gltype integer literal suffix... " >&6; }
-if eval test \${gl_cv_type_${gltype}_suffix+y}
-then :
- printf %s "(cached) " >&6
-else
- eval gl_cv_type_${gltype}_suffix=no
- eval result=\$gl_cv_type_${gltype}_signed
- if test "$result" = yes; then
- glsufu=
- else
- glsufu=u
- fi
- for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
- case $glsuf in
- '') gltype1='int';;
- l) gltype1='long int';;
- ll) gltype1='long long int';;
- i64) gltype1='__int64';;
- u) gltype1='unsigned int';;
- ul) gltype1='unsigned long int';;
- ull) gltype1='unsigned long long int';;
- ui64)gltype1='unsigned __int64';;
- esac
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
- included before <wchar.h>. */
- #include <stddef.h>
- #include <signal.h>
- #if HAVE_WCHAR_H
- # include <stdio.h>
- # include <time.h>
- # include <wchar.h>
- #endif
-
- extern $gltype foo;
- extern $gltype1 foo;
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- eval gl_cv_type_${gltype}_suffix=\$glsuf
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- eval result=\$gl_cv_type_${gltype}_suffix
- test "$result" != no && break
- done
-fi
-eval ac_res=\$gl_cv_type_${gltype}_suffix
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
- GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
- eval result=\$gl_cv_type_${gltype}_suffix
- test "$result" = no && result=
- eval ${GLTYPE}_SUFFIX=\$result
- printf "%s\n" "#define ${GLTYPE}_SUFFIX $result" >>confdefs.h
-
- done
-
-
-
- if test $GNULIB_OVERRIDES_WINT_T = 1; then
- BITSIZEOF_WINT_T=32
- fi
-
- ;;
- esac
-
-
-
- LIMITS_H='limits.h'
- if test -n "$LIMITS_H"; then
- GL_GENERATE_LIMITS_H_TRUE=
- GL_GENERATE_LIMITS_H_FALSE='#'
-else
- GL_GENERATE_LIMITS_H_TRUE='#'
- GL_GENERATE_LIMITS_H_FALSE=
-fi
-
-
-
-
-
-
-
- if test -n "$STDINT_H"; then
- GL_GENERATE_STDINT_H_TRUE=
- GL_GENERATE_STDINT_H_FALSE='#'
-else
- GL_GENERATE_STDINT_H_TRUE='#'
- GL_GENERATE_STDINT_H_FALSE=
-fi
-
-
-
REPLACE_STRERROR_0=0
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether strerror(0) succeeds" >&5
printf %s "checking whether strerror(0) succeeds... " >&6; }
@@ -15642,10 +16167,12 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;;
# Guess yes on native Windows.
mingw*) gl_cv_func_strerror_0_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_strerror_0_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;;
esac
else
@@ -15815,7 +16342,7 @@ then :
else
if test "$cross_compiling" = yes
then :
- gl_cv_func_strerror_r_works="guessing no"
+ gl_cv_func_strerror_r_works="$gl_cross_guess_normal"
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -16262,7 +16789,7 @@ printf "%s\n" "$gl_cv_next_time_h" >&6; }
-ac_fn_c_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_clearerr_unlocked" = xyes
then :
ac_have_decl=1
@@ -16272,7 +16799,7 @@ fi
printf "%s\n" "#define HAVE_DECL_CLEARERR_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_feof_unlocked" = xyes
then :
ac_have_decl=1
@@ -16282,7 +16809,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "ferror_unlocked" "ac_cv_have_decl_ferror_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "ferror_unlocked" "ac_cv_have_decl_ferror_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_ferror_unlocked" = xyes
then :
ac_have_decl=1
@@ -16292,7 +16819,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FERROR_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "fflush_unlocked" "ac_cv_have_decl_fflush_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fflush_unlocked" "ac_cv_have_decl_fflush_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_fflush_unlocked" = xyes
then :
ac_have_decl=1
@@ -16302,7 +16829,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FFLUSH_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_fgets_unlocked" = xyes
then :
ac_have_decl=1
@@ -16312,7 +16839,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "fputc_unlocked" "ac_cv_have_decl_fputc_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fputc_unlocked" "ac_cv_have_decl_fputc_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_fputc_unlocked" = xyes
then :
ac_have_decl=1
@@ -16322,7 +16849,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FPUTC_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "fputs_unlocked" "ac_cv_have_decl_fputs_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fputs_unlocked" "ac_cv_have_decl_fputs_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_fputs_unlocked" = xyes
then :
ac_have_decl=1
@@ -16332,7 +16859,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FPUTS_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "fread_unlocked" "ac_cv_have_decl_fread_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fread_unlocked" "ac_cv_have_decl_fread_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_fread_unlocked" = xyes
then :
ac_have_decl=1
@@ -16342,7 +16869,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FREAD_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "fwrite_unlocked" "ac_cv_have_decl_fwrite_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fwrite_unlocked" "ac_cv_have_decl_fwrite_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_fwrite_unlocked" = xyes
then :
ac_have_decl=1
@@ -16352,7 +16879,7 @@ fi
printf "%s\n" "#define HAVE_DECL_FWRITE_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_getc_unlocked" = xyes
then :
ac_have_decl=1
@@ -16362,7 +16889,7 @@ fi
printf "%s\n" "#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "getchar_unlocked" "ac_cv_have_decl_getchar_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "getchar_unlocked" "ac_cv_have_decl_getchar_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_getchar_unlocked" = xyes
then :
ac_have_decl=1
@@ -16372,7 +16899,7 @@ fi
printf "%s\n" "#define HAVE_DECL_GETCHAR_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "putc_unlocked" "ac_cv_have_decl_putc_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "putc_unlocked" "ac_cv_have_decl_putc_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_putc_unlocked" = xyes
then :
ac_have_decl=1
@@ -16382,7 +16909,7 @@ fi
printf "%s\n" "#define HAVE_DECL_PUTC_UNLOCKED $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "putchar_unlocked" "ac_cv_have_decl_putchar_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "putchar_unlocked" "ac_cv_have_decl_putchar_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_putchar_unlocked" = xyes
then :
ac_have_decl=1
@@ -16628,9 +17155,15 @@ printf "%s\n" "$gl_cv_next_sys_socket_h" >&6; }
if test $ac_cv_header_sys_socket_h = yes; then
HAVE_SYS_SOCKET_H=1
- HAVE_WS2TCPIP_H=0
else
HAVE_SYS_SOCKET_H=0
+ fi
+
+
+
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_WS2TCPIP_H=0
+ else
if test $ac_cv_header_ws2tcpip_h = yes; then
HAVE_WS2TCPIP_H=1
else
@@ -16865,7 +17398,7 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_var_stdin_large_offset" >&5
printf "%s\n" "$gl_cv_var_stdin_large_offset" >&6; }
-ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default"
if test "x$ac_cv_have_decl_fseeko" = xyes
then :
ac_have_decl=1
@@ -16980,7 +17513,7 @@ FILE *f = fopen ("conftest.txt", "r");
if (lseek (fd, 0, SEEK_CUR) != 5)
{ fclose (f); return 5; }
/* Verify behaviour of fflush after ungetc. See
- <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
+ <https://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
/* Verify behaviour of fflush after a backup ungetc. This fails on
mingw. */
c = fgetc (f);
@@ -17045,12 +17578,16 @@ else
if test "$cross_compiling" = yes
then :
case "$host_os" in
- # Guess yes on glibc and bionic systems.
- *-gnu* | gnu* | *-android*) gl_cv_func_ungetc_works="guessing yes" ;;
- # Guess yes on native Windows.
- mingw*) gl_cv_func_ungetc_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_ungetc_works="guessing no" ;;
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # Guess yes on bionic systems.
+ *-android*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_ungetc_works="$gl_cross_guess_normal" ;;
esac
else
@@ -17115,7 +17652,7 @@ printf "%s\n" "#define FUNC_UNGETC_BROKEN 1" >>confdefs.h
;;
esac
-ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default"
if test "x$ac_cv_have_decl_ftello" = xyes
then :
ac_have_decl=1
@@ -17299,10 +17836,12 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_getcwd_null="guessing yes";;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_getcwd_null="guessing yes";;
# Guess yes on Cygwin.
cygwin*) gl_cv_func_getcwd_null="guessing yes";;
- # If we don't know, assume the worst.
- *) gl_cv_func_getcwd_null="guessing no";;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_getcwd_null="$gl_cross_guess_normal";;
esac
else
@@ -17398,7 +17937,7 @@ fi
printf "%s\n" "$gl_cv_func_getcwd_posix_signature" >&6; }
-ac_fn_c_check_decl "$LINENO" "getdtablesize" "ac_cv_have_decl_getdtablesize" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "getdtablesize" "ac_cv_have_decl_getdtablesize" "$ac_includes_default"
if test "x$ac_cv_have_decl_getdtablesize" = xyes
then :
ac_have_decl=1
@@ -17414,6 +17953,7 @@ printf "%s\n" "#define HAVE_DECL_GETDTABLESIZE $ac_have_decl" >>confdefs.h
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IPv4 sockets" >&5
printf %s "checking for IPv4 sockets... " >&6; }
if test ${gl_cv_socket_ipv4+y}
@@ -17504,116 +18044,6 @@ printf "%s\n" "#define HAVE_IPV6 1" >>confdefs.h
fi
- GNULIB_IMAXABS=0;
- GNULIB_IMAXDIV=0;
- GNULIB_STRTOIMAX=0;
- GNULIB_STRTOUMAX=0;
- HAVE_DECL_IMAXABS=1;
- HAVE_DECL_IMAXDIV=1;
- HAVE_DECL_STRTOIMAX=1;
- HAVE_DECL_STRTOUMAX=1;
- HAVE_IMAXDIV_T=1;
- REPLACE_STRTOIMAX=0;
- REPLACE_STRTOUMAX=0;
- INT32_MAX_LT_INTMAX_MAX=1;
- INT64_MAX_EQ_LONG_MAX='defined _LP64';
- PRI_MACROS_BROKEN=0;
- PRIPTR_PREFIX=__PRIPTR_PREFIX;
- UINT32_MAX_LT_UINTMAX_MAX=1;
- UINT64_MAX_EQ_ULONG_MAX='defined _LP64';
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if test $gl_cv_have_include_next = yes; then
- gl_cv_next_inttypes_h='<'inttypes.h'>'
- else
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <inttypes.h>" >&5
-printf %s "checking absolute name of <inttypes.h>... " >&6; }
-if test ${gl_cv_next_inttypes_h+y}
-then :
- printf %s "(cached) " >&6
-else
-
- if test $ac_cv_header_inttypes_h = yes; then
-
-
-
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <inttypes.h>
-_ACEOF
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
-
- case "$host_os" in
- mingw*)
- gl_dirsep_regex='[/\\]'
- ;;
- *)
- gl_dirsep_regex='\/'
- ;;
- esac
- gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
- gl_header_literal_regex=`echo 'inttypes.h' \
- | sed -e "$gl_make_literal_regex_sed"`
- gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
- s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
- s|^/[^/]|//&|
- p
- q
- }'
-
- gl_cv_absolute_inttypes_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n "$gl_absolute_header_sed"`
-
- gl_header=$gl_cv_absolute_inttypes_h
- gl_cv_next_inttypes_h='"'$gl_header'"'
- else
- gl_cv_next_inttypes_h='<'inttypes.h'>'
- fi
-
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_inttypes_h" >&5
-printf "%s\n" "$gl_cv_next_inttypes_h" >&6; }
- fi
- NEXT_INTTYPES_H=$gl_cv_next_inttypes_h
-
- if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
- gl_next_as_first_directive='<'inttypes.h'>'
- else
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=$gl_cv_next_inttypes_h
- fi
- NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H=$gl_next_as_first_directive
-
-
-
-
-
-
-
-
-
-
-
-
ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
if test "x$ac_cv_header_inttypes_h" = xyes
then :
@@ -17714,7 +18144,8 @@ printf "%s\n" "#define HAVE_LC_MESSAGES 1" >>confdefs.h
- if test $ac_cv_func_uselocale = yes; then
+
+ if test $ac_cv_func_uselocale = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5
printf %s "checking whether uselocale works... " >&6; }
@@ -17724,10 +18155,10 @@ then :
else
if test "$cross_compiling" = yes
then :
- # Guess no on AIX, yes otherwise.
+ # Guess no on AIX and z/OS, yes otherwise.
case "$host_os" in
- aix*) gt_cv_func_uselocale_works="guessing no" ;;
- *) gt_cv_func_uselocale_works="guessing yes" ;;
+ aix* | openedition*) gt_cv_func_uselocale_works="guessing no" ;;
+ *) gt_cv_func_uselocale_works="guessing yes" ;;
esac
else
@@ -17738,6 +18169,7 @@ else
#if HAVE_XLOCALE_H
# include <xlocale.h>
#endif
+locale_t loc1;
int main ()
{
uselocale (NULL);
@@ -17890,13 +18322,15 @@ fi
;;
esac
- gt_nameless_locales=no
- if false; then
- gt_nameless_locales=yes
+ gt_nameless_locales=no
+ case "$host_os" in
+ aix*)
+ gt_nameless_locales=yes
printf "%s\n" "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h
- fi
+ ;;
+ esac
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
@@ -17935,43 +18369,7 @@ printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-printf %s "checking for CFLocaleCopyCurrent... " >&6; }
-if test ${gt_cv_func_CFLocaleCopyCurrent+y}
-then :
- printf %s "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFLocale.h>
-int
-main (void)
-{
-CFLocaleCopyCurrent();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- gt_cv_func_CFLocaleCopyCurrent=yes
-else
- gt_cv_func_CFLocaleCopyCurrent=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-
-printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
-
- fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; }
if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y}
then :
@@ -18009,7 +18407,6 @@ printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
fi
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
- || test $gt_cv_func_CFLocaleCopyCurrent = yes \
|| test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
fi
@@ -18017,7 +18414,6 @@ printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
-
GNULIB_PSELECT=0;
GNULIB_SELECT=0;
HAVE_PSELECT=1;
@@ -18495,8 +18891,8 @@ then :
linux-* | linux) gl_cv_func_select_detects_ebadf="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_select_detects_ebadf="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_select_detects_ebadf="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_select_detects_ebadf="$gl_cross_guess_normal" ;;
esac
else
@@ -18673,6 +19069,125 @@ printf "%s\n" "#define PROMOTED_MODE_T $gl_cv_promoted_mode_t" >>confdefs.h
+ GNULIB_PTHREAD_THREAD=0;
+ GNULIB_PTHREAD_ONCE=0;
+ GNULIB_PTHREAD_MUTEX=0;
+ GNULIB_PTHREAD_RWLOCK=0;
+ GNULIB_PTHREAD_COND=0;
+ GNULIB_PTHREAD_TSS=0;
+ GNULIB_PTHREAD_SPIN=0;
+ GNULIB_PTHREAD_MUTEX_TIMEDLOCK=0;
+ HAVE_PTHREAD_T=1;
+ HAVE_PTHREAD_SPINLOCK_T=1;
+ HAVE_PTHREAD_CREATE_DETACHED=1;
+ HAVE_PTHREAD_MUTEX_RECURSIVE=1;
+ HAVE_PTHREAD_MUTEX_ROBUST=1;
+ HAVE_PTHREAD_PROCESS_SHARED=1;
+ HAVE_PTHREAD_CREATE=1;
+ HAVE_PTHREAD_ATTR_INIT=1;
+ HAVE_PTHREAD_ATTR_GETDETACHSTATE=1;
+ HAVE_PTHREAD_ATTR_SETDETACHSTATE=1;
+ HAVE_PTHREAD_ATTR_DESTROY=1;
+ HAVE_PTHREAD_SELF=1;
+ HAVE_PTHREAD_EQUAL=1;
+ HAVE_PTHREAD_DETACH=1;
+ HAVE_PTHREAD_JOIN=1;
+ HAVE_PTHREAD_EXIT=1;
+ HAVE_PTHREAD_ONCE=1;
+ HAVE_PTHREAD_MUTEX_INIT=1;
+ HAVE_PTHREAD_MUTEXATTR_INIT=1;
+ HAVE_PTHREAD_MUTEXATTR_GETTYPE=1;
+ HAVE_PTHREAD_MUTEXATTR_SETTYPE=1;
+ HAVE_PTHREAD_MUTEXATTR_GETROBUST=1;
+ HAVE_PTHREAD_MUTEXATTR_SETROBUST=1;
+ HAVE_PTHREAD_MUTEXATTR_DESTROY=1;
+ HAVE_PTHREAD_MUTEX_LOCK=1;
+ HAVE_PTHREAD_MUTEX_TRYLOCK=1;
+ HAVE_PTHREAD_MUTEX_TIMEDLOCK=1;
+ HAVE_PTHREAD_MUTEX_UNLOCK=1;
+ HAVE_PTHREAD_MUTEX_DESTROY=1;
+ HAVE_PTHREAD_RWLOCK_INIT=1;
+ HAVE_PTHREAD_RWLOCKATTR_INIT=1;
+ HAVE_PTHREAD_RWLOCKATTR_DESTROY=1;
+ HAVE_PTHREAD_RWLOCK_RDLOCK=1;
+ HAVE_PTHREAD_RWLOCK_WRLOCK=1;
+ HAVE_PTHREAD_RWLOCK_TRYRDLOCK=1;
+ HAVE_PTHREAD_RWLOCK_TRYWRLOCK=1;
+ HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK=1;
+ HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK=1;
+ HAVE_PTHREAD_RWLOCK_UNLOCK=1;
+ HAVE_PTHREAD_RWLOCK_DESTROY=1;
+ HAVE_PTHREAD_COND_INIT=1;
+ HAVE_PTHREAD_CONDATTR_INIT=1;
+ HAVE_PTHREAD_CONDATTR_DESTROY=1;
+ HAVE_PTHREAD_COND_WAIT=1;
+ HAVE_PTHREAD_COND_TIMEDWAIT=1;
+ HAVE_PTHREAD_COND_SIGNAL=1;
+ HAVE_PTHREAD_COND_BROADCAST=1;
+ HAVE_PTHREAD_COND_DESTROY=1;
+ HAVE_PTHREAD_KEY_CREATE=1;
+ HAVE_PTHREAD_SETSPECIFIC=1;
+ HAVE_PTHREAD_GETSPECIFIC=1;
+ HAVE_PTHREAD_KEY_DELETE=1;
+ HAVE_PTHREAD_SPIN_INIT=1;
+ HAVE_PTHREAD_SPIN_LOCK=1;
+ HAVE_PTHREAD_SPIN_TRYLOCK=1;
+ HAVE_PTHREAD_SPIN_UNLOCK=1;
+ HAVE_PTHREAD_SPIN_DESTROY=1;
+ REPLACE_PTHREAD_CREATE=0;
+ REPLACE_PTHREAD_ATTR_INIT=0;
+ REPLACE_PTHREAD_ATTR_GETDETACHSTATE=0;
+ REPLACE_PTHREAD_ATTR_SETDETACHSTATE=0;
+ REPLACE_PTHREAD_ATTR_DESTROY=0;
+ REPLACE_PTHREAD_SELF=0;
+ REPLACE_PTHREAD_EQUAL=0;
+ REPLACE_PTHREAD_DETACH=0;
+ REPLACE_PTHREAD_JOIN=0;
+ REPLACE_PTHREAD_EXIT=0;
+ REPLACE_PTHREAD_ONCE=0;
+ REPLACE_PTHREAD_MUTEX_INIT=0;
+ REPLACE_PTHREAD_MUTEXATTR_INIT=0;
+ REPLACE_PTHREAD_MUTEXATTR_GETTYPE=0;
+ REPLACE_PTHREAD_MUTEXATTR_SETTYPE=0;
+ REPLACE_PTHREAD_MUTEXATTR_GETROBUST=0;
+ REPLACE_PTHREAD_MUTEXATTR_SETROBUST=0;
+ REPLACE_PTHREAD_MUTEXATTR_DESTROY=0;
+ REPLACE_PTHREAD_MUTEX_LOCK=0;
+ REPLACE_PTHREAD_MUTEX_TRYLOCK=0;
+ REPLACE_PTHREAD_MUTEX_TIMEDLOCK=0;
+ REPLACE_PTHREAD_MUTEX_UNLOCK=0;
+ REPLACE_PTHREAD_MUTEX_DESTROY=0;
+ REPLACE_PTHREAD_RWLOCK_INIT=0;
+ REPLACE_PTHREAD_RWLOCKATTR_INIT=0;
+ REPLACE_PTHREAD_RWLOCKATTR_DESTROY=0;
+ REPLACE_PTHREAD_RWLOCK_RDLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_WRLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_TRYRDLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_TRYWRLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_UNLOCK=0;
+ REPLACE_PTHREAD_RWLOCK_DESTROY=0;
+ REPLACE_PTHREAD_COND_INIT=0;
+ REPLACE_PTHREAD_CONDATTR_INIT=0;
+ REPLACE_PTHREAD_CONDATTR_DESTROY=0;
+ REPLACE_PTHREAD_COND_WAIT=0;
+ REPLACE_PTHREAD_COND_TIMEDWAIT=0;
+ REPLACE_PTHREAD_COND_SIGNAL=0;
+ REPLACE_PTHREAD_COND_BROADCAST=0;
+ REPLACE_PTHREAD_COND_DESTROY=0;
+ REPLACE_PTHREAD_KEY_CREATE=0;
+ REPLACE_PTHREAD_SETSPECIFIC=0;
+ REPLACE_PTHREAD_GETSPECIFIC=0;
+ REPLACE_PTHREAD_KEY_DELETE=0;
+ REPLACE_PTHREAD_SPIN_INIT=0;
+ REPLACE_PTHREAD_SPIN_LOCK=0;
+ REPLACE_PTHREAD_SPIN_TRYLOCK=0;
+ REPLACE_PTHREAD_SPIN_UNLOCK=0;
+ REPLACE_PTHREAD_SPIN_DESTROY=0;
+
+
+
GNULIB_PTHREAD_SIGMASK=0;
GNULIB_RAISE=0;
GNULIB_SIGNAL_H_SIGPIPE=0;
@@ -18693,6 +19208,7 @@ printf "%s\n" "#define PROMOTED_MODE_T $gl_cv_promoted_mode_t" >>confdefs.h
REPLACE_RAISE=0;
+
ac_fn_c_check_type "$LINENO" "sigset_t" "ac_cv_type_sigset_t" "
#include <signal.h>
/* Mingw defines sigset_t not in <signal.h>, but in <sys/types.h>. */
@@ -18714,7 +19230,12 @@ fi
fi
-ac_fn_c_check_decl "$LINENO" "setenv" "ac_cv_have_decl_setenv" "$ac_includes_default"
+ GNULIB_SCHED_YIELD=0;
+ HAVE_SCHED_YIELD=1;
+ REPLACE_SCHED_YIELD=0;
+
+
+ ac_fn_c_check_decl "$LINENO" "setenv" "ac_cv_have_decl_setenv" "$ac_includes_default"
if test "x$ac_cv_have_decl_setenv" = xyes
then :
ac_have_decl=1
@@ -18789,7 +19310,7 @@ fi
-ac_fn_c_check_decl "$LINENO" "strdup" "ac_cv_have_decl_strdup" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "strdup" "ac_cv_have_decl_strdup" "$ac_includes_default"
if test "x$ac_cv_have_decl_strdup" = xyes
then :
ac_have_decl=1
@@ -18806,7 +19327,7 @@ printf "%s\n" "#define HAVE_DECL_STRDUP $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "unsetenv" "ac_cv_have_decl_unsetenv" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "unsetenv" "ac_cv_have_decl_unsetenv" "$ac_includes_default"
if test "x$ac_cv_have_decl_unsetenv" = xyes
then :
ac_have_decl=1
@@ -19308,6 +19829,13 @@ else
fi
+ if test $ac_cv_working_alloca_h = yes; then
+ HAVE_ALLOCA_H=1
+ else
+ HAVE_ALLOCA_H=0
+ fi
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable assertions" >&5
printf %s "checking whether to enable assertions... " >&6; }
@@ -19640,17 +20168,11 @@ printf "%s\n" "#define GNULIB_TEST_CHDIR 1" >>confdefs.h
- :
-
-
printf "%s\n" "#define GNULIB_CLOSE_STREAM 1" >>confdefs.h
- :
-
-
@@ -19915,6 +20437,55 @@ printf "%s\n" "$gl_cv_next_fcntl_h" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flexible array member" >&5
+printf %s "checking for flexible array member... " >&6; }
+if test ${ac_cv_c_flexmember+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+ #include <stdio.h>
+ #include <stddef.h>
+ struct m { struct m *next, **list; char name[]; };
+ struct s { struct s *p; struct m *m; int n; double d[]; };
+int
+main (void)
+{
+int m = getchar ();
+ size_t nbytes = offsetof (struct s, d) + m * sizeof (double);
+ nbytes += sizeof (struct s) - 1;
+ nbytes -= nbytes % sizeof (struct s);
+ struct s *p = malloc (nbytes);
+ p->p = p;
+ p->m = NULL;
+ p->d[0] = 0.0;
+ return p->d != (double *) NULL;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_c_flexmember=yes
+else
+ ac_cv_c_flexmember=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
+printf "%s\n" "$ac_cv_c_flexmember" >&6; }
+ if test $ac_cv_c_flexmember = yes; then
+
+printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
+
+ else
+ printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
+
+ fi
+
+
fp_headers='
#include <stdio.h>
@@ -19953,7 +20524,7 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func___fpending" >&5
printf "%s\n" "$gl_cv_func___fpending" >&6; }
if test $gl_cv_func___fpending = yes; then
- ac_fn_c_check_decl "$LINENO" "__fpending" "ac_cv_have_decl___fpending" "$fp_headers
+ ac_fn_c_check_decl "$LINENO" "__fpending" "ac_cv_have_decl___fpending" "$fp_headers
"
if test "x$ac_cv_have_decl___fpending" = xyes
then :
@@ -20067,9 +20638,9 @@ then :
printf %s "(cached) " >&6
else
echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
- if test "$cross_compiling" = yes
+ if test "$cross_compiling" = yes
then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <features.h>
@@ -20085,7 +20656,11 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
then :
gl_cv_func_working_getdelim="guessing yes"
else
- gl_cv_func_working_getdelim="guessing no"
+ case "$host_os" in
+ *-musl*) gl_cv_func_working_getdelim="guessing yes" ;;
+ *) gl_cv_func_working_getdelim="$gl_cross_guess_normal" ;;
+ esac
+
fi
rm -rf conftest*
@@ -20135,13 +20710,13 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_getdelim" >&5
printf "%s\n" "$gl_cv_func_working_getdelim" >&6; }
case "$gl_cv_func_working_getdelim" in
- *no)
- REPLACE_GETDELIM=1
- ;;
+ *yes) ;;
+ *) REPLACE_GETDELIM=1 ;;
esac
else
HAVE_GETDELIM=0
@@ -20176,7 +20751,7 @@ then :
fi
- ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
if test "x$ac_cv_have_decl_getc_unlocked" = xyes
then :
ac_have_decl=1
@@ -20264,8 +20839,23 @@ printf "%s\n" "#define __GETOPT_PREFIX rpl_" >>confdefs.h
+
+
+ GNULIB_GETOPT_POSIX=1
+
+
+
+
+
+printf "%s\n" "#define GNULIB_TEST_GETOPT_POSIX 1" >>confdefs.h
+
+
+
+
+
+
ac_found=0
- ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
+ ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
"
if test "x$ac_cv_have_decl_program_invocation_name" = xyes
then :
@@ -20280,7 +20870,7 @@ then :
ac_found=1
fi
- ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
+ ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
"
if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes
then :
@@ -20295,7 +20885,7 @@ then :
ac_found=1
fi
- ac_fn_c_check_decl "$LINENO" "__argv" "ac_cv_have_decl___argv" "#include <stdlib.h>
+ ac_fn_c_check_decl "$LINENO" "__argv" "ac_cv_have_decl___argv" "#include <stdlib.h>
"
if test "x$ac_cv_have_decl___argv" = xyes
then :
@@ -20383,10 +20973,12 @@ then :
case "$host_os" in
# Guess all is fine on glibc systems.
*-gnu* | gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
+ # Guess all is fine on musl systems.
+ *-musl*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_gettimeofday_clobber="$gl_cross_guess_inverted" ;;
esac
else
@@ -20555,6 +21147,10 @@ printf "%s\n" "#define GNULIB_TEST_GETTIMEOFDAY 1" >>confdefs.h
ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
+ LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL"
+
+
+
@@ -20907,6 +21503,8 @@ printf "%s\n" "#define HAVE___INLINE 1" >>confdefs.h
+
+
case "$host_os" in
solaris*)
@@ -20945,49 +21543,6 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_h_posix2001" >&5
printf "%s\n" "$gl_cv_header_locale_h_posix2001" >&6; }
-
- if test $ac_cv_header_xlocale_h = yes; then
- HAVE_XLOCALE_H=1
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether locale.h defines locale_t" >&5
-printf %s "checking whether locale.h defines locale_t... " >&6; }
-if test ${gl_cv_header_locale_has_locale_t+y}
-then :
- printf %s "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <locale.h>
- locale_t x;
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- gl_cv_header_locale_has_locale_t=yes
-else
- gl_cv_header_locale_has_locale_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_locale_has_locale_t" >&5
-printf "%s\n" "$gl_cv_header_locale_has_locale_t" >&6; }
- if test $gl_cv_header_locale_has_locale_t = yes; then
- gl_cv_header_locale_h_needs_xlocale_h=no
- else
- gl_cv_header_locale_h_needs_xlocale_h=yes
- fi
- else
- HAVE_XLOCALE_H=0
- gl_cv_header_locale_h_needs_xlocale_h=no
- fi
-
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct lconv is properly defined" >&5
printf %s "checking whether struct lconv is properly defined... " >&6; }
if test ${gl_cv_sys_struct_lconv_ok+y}
@@ -21020,7 +21575,28 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_lconv_ok" >&5
printf "%s\n" "$gl_cv_sys_struct_lconv_ok" >&6; }
if test $gl_cv_sys_struct_lconv_ok = no; then
- REPLACE_STRUCT_LCONV=1
+ case "$host_os" in
+ mingw*)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef _MSC_VER
+ Special
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Special" >/dev/null 2>&1
+then :
+
+else
+ REPLACE_STRUCT_LCONV=1
+fi
+rm -rf conftest*
+
+ ;;
+ *) REPLACE_STRUCT_LCONV=1 ;;
+ esac
fi
@@ -21177,7 +21753,7 @@ fi
if $has_rwlock; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5
printf %s "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; }
if test ${gl_cv_pthread_rwlock_rdlock_prefer_writer+y}
then :
@@ -21187,7 +21763,25 @@ else
LIBS="$LIBS $LIBMULTITHREAD"
if test "$cross_compiling" = yes
then :
- gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"
+ case "$host_os" in
+ # Guess no on glibc systems.
+ *-gnu* | gnu*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;;
+ # Guess no on musl systems.
+ *-musl*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;;
+ # Guess no on bionic systems.
+ *-android*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;;
+ # Guess yes on native Windows with the mingw-w64 winpthreads library.
+ # Guess no on native Windows with the gnulib windows-rwlock module.
+ mingw*) if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+ gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"
+ else
+ gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no"
+ fi
+ ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_pthread_rwlock_rdlock_prefer_writer="$gl_cross_guess_normal" ;;
+ esac
+
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -21414,6 +22008,7 @@ printf "%s\n" "#define GNULIB_TEST_LSTAT 1" >>confdefs.h
+
if test $gl_cv_func_malloc_posix = yes; then
printf "%s\n" "#define HAVE_MALLOC_POSIX 1" >>confdefs.h
@@ -21458,10 +22053,9 @@ printf "%s\n" "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h
-
if test $ac_cv_func_mbrlen = no; then
HAVE_MBRLEN=0
- ac_fn_c_check_decl "$LINENO" "mbrlen" "ac_cv_have_decl_mbrlen" "
+ ac_fn_c_check_decl "$LINENO" "mbrlen" "ac_cv_have_decl_mbrlen" "
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
@@ -21530,7 +22124,15 @@ printf "%s\n" "#define GNULIB_TEST_MBRLEN 1" >>confdefs.h
- if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+
+
+ if case "$host_os" in
+ mingw*) true ;;
+ *) test $ac_cv_func_mbsinit = yes ;;
+ esac \
+ && test $ac_cv_func_mbrtowc = yes; then
+
@@ -21591,6 +22193,52 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ else
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ const char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 2;
+ }
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_incomplete_state=yes
+else
+ gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
fi
fi
@@ -21684,7 +22332,7 @@ printf "%s\n" "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
if test $ac_cv_func_mbrtowc = no; then
HAVE_MBRTOWC=0
- ac_fn_c_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" "
+ ac_fn_c_check_decl "$LINENO" "mbrtowc" "ac_cv_have_decl_mbrtowc" "
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
@@ -22067,6 +22715,149 @@ printf "%s\n" "$gl_cv_func_mbrtowc_nul_retval" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc stores incomplete characters" >&5
+printf %s "checking whether mbrtowc stores incomplete characters... " >&6; }
+if test ${gl_cv_func_mbrtowc_stores_incomplete+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ case "$host_os" in
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;;
+ *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;;
+ esac
+ case "$host_os" in
+ mingw*)
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ int result = 0;
+ if (setlocale (LC_ALL, "French_France.65001") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 1;
+ }
+ if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\226", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 2;
+ }
+ if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\245", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 4;
+ }
+ if (setlocale (LC_ALL, "Chinese_China.936") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\261", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 8;
+ }
+ return result;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_stores_incomplete=no
+else
+ gl_cv_func_mbrtowc_stores_incomplete=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ *)
+
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ return 1;
+ }
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_stores_incomplete=no
+else
+ gl_cv_func_mbrtowc_stores_incomplete=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_stores_incomplete" >&5
+printf "%s\n" "$gl_cv_func_mbrtowc_stores_incomplete" >&6; }
+
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc works on empty input" >&5
printf %s "checking whether mbrtowc works on empty input... " >&6; }
if test ${gl_cv_func_mbrtowc_empty_input+y}
@@ -22115,18 +22906,18 @@ printf "%s\n" "$gl_cv_func_mbrtowc_empty_input" >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C locale is free of encoding errors" >&5
printf %s "checking whether the C locale is free of encoding errors... " >&6; }
-if test ${gl_cv_C_locale_sans_EILSEQ+y}
+if test ${gl_cv_func_mbrtowc_C_locale_sans_EILSEQ+y}
then :
printf %s "(cached) " >&6
else
- gl_cv_C_locale_sans_EILSEQ="guessing no"
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal"
if test "$cross_compiling" = yes
then :
case "$host_os" in
# Guess yes on native Windows.
- mingw*) gl_cv_C_locale_sans_EILSEQ="guessing yes" ;;
+ mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;;
esac
else
@@ -22161,9 +22952,9 @@ main (void)
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
- gl_cv_C_locale_sans_EILSEQ=yes
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes
else
- gl_cv_C_locale_sans_EILSEQ=no
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -22171,8 +22962,8 @@ fi
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_C_locale_sans_EILSEQ" >&5
-printf "%s\n" "$gl_cv_C_locale_sans_EILSEQ" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" >&5
+printf "%s\n" "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" >&6; }
case "$gl_cv_func_mbrtowc_null_arg1" in
*yes) ;;
@@ -22206,6 +22997,14 @@ printf "%s\n" "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h
REPLACE_MBRTOWC=1
;;
esac
+ case "$gl_cv_func_mbrtowc_stores_incomplete" in
+ *no) ;;
+ *)
+printf "%s\n" "#define MBRTOWC_STORES_INCOMPLETE_BUG 1" >>confdefs.h
+
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
case "$gl_cv_func_mbrtowc_empty_input" in
*yes) ;;
*)
@@ -22214,16 +23013,113 @@ printf "%s\n" "#define MBRTOWC_EMPTY_INPUT_BUG 1" >>confdefs.h
REPLACE_MBRTOWC=1
;;
esac
- case $gl_cv_C_locale_sans_EILSEQ in
+ case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in
*yes) ;;
*)
-printf "%s\n" "#define C_LOCALE_MAYBE_EILSEQ 1" >>confdefs.h
+printf "%s\n" "#define MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ 1" >>confdefs.h
REPLACE_MBRTOWC=1
;;
esac
fi
fi
+ if test $REPLACE_MBSTATE_T = 1; then
+ case "$host_os" in
+ mingw*) LIB_MBRTOWC= ;;
+ *)
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+printf %s "checking whether imported symbols can be declared weak... " >&6; }
+if test ${gl_cv_have_weak+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_cv_have_weak=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main (void)
+{
+xyzzy();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_cv_have_weak=maybe
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $gl_cv_have_weak = maybe; then
+ if test "$cross_compiling" = yes
+then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1
+then :
+ gl_cv_have_weak="guessing yes"
+else
+ gl_cv_have_weak="guessing no"
+fi
+rm -rf conftest*
+
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_have_weak=yes
+else
+ gl_cv_have_weak=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+printf "%s\n" "$gl_cv_have_weak" >&6; }
+ case "$gl_cv_have_weak" in
+ *yes)
+
+printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h
+
+ ;;
+ esac
+
+ case "$gl_cv_have_weak" in
+ *yes) LIB_MBRTOWC= ;;
+ *) LIB_MBRTOWC="$LIBPTHREAD" ;;
+ esac
+ ;;
+ esac
+ else
+ LIB_MBRTOWC=
+ fi
+
if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
@@ -22236,6 +23132,116 @@ printf "%s\n" "#define C_LOCALE_MAYBE_EILSEQ 1" >>confdefs.h
gl_LIBOBJS="$gl_LIBOBJS mbrtowc.$ac_objext"
+ if test $REPLACE_MBSTATE_T = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS lc-charset-dispatch.$ac_objext"
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mbtowc-lock.$ac_objext"
+
+
+
+
+ CFLAG_VISIBILITY=
+ HAVE_VISIBILITY=0
+ if test -n "$GCC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
+printf %s "checking whether the -Werror option is usable... " >&6; }
+if test ${gl_cv_cc_vis_werror+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_cc_vis_werror=yes
+else
+ gl_cv_cc_vis_werror=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$gl_save_CFLAGS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
+printf "%s\n" "$gl_cv_cc_vis_werror" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
+printf %s "checking for simple visibility declarations... " >&6; }
+if test ${gl_cv_cc_visibility+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ if test $gl_cv_cc_vis_werror = yes; then
+ CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+ extern __attribute__((__visibility__("default"))) int exportedvar;
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void) {}
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_cc_visibility=yes
+else
+ gl_cv_cc_visibility=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$gl_save_CFLAGS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
+printf "%s\n" "$gl_cv_cc_visibility" >&6; }
+ if test $gl_cv_cc_visibility = yes; then
+ CFLAG_VISIBILITY="-fvisibility=hidden"
+ HAVE_VISIBILITY=1
+ fi
+ fi
+
+
+
+printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h
+
+
+
+ fi
:
@@ -22267,7 +23273,13 @@ printf "%s\n" "#define GNULIB_TEST_MBRTOWC 1" >>confdefs.h
- if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+ if case "$host_os" in
+ mingw*) true ;;
+ *) test $ac_cv_func_mbsinit = yes ;;
+ esac \
+ && test $ac_cv_func_mbrtowc = yes; then
+
@@ -22328,6 +23340,52 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ else
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ const char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 2;
+ }
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_incomplete_state=yes
+else
+ gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
fi
fi
@@ -22421,7 +23479,7 @@ printf "%s\n" "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
if test $ac_cv_func_mbsinit = no; then
HAVE_MBSINIT=0
- ac_fn_c_check_decl "$LINENO" "mbsinit" "ac_cv_have_decl_mbsinit" "
+ ac_fn_c_check_decl "$LINENO" "mbsinit" "ac_cv_have_decl_mbsinit" "
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
@@ -22487,11 +23545,22 @@ printf "%s\n" "#define GNULIB_TEST_MBSINIT 1" >>confdefs.h
- if false; then
- REPLACE_MBTOWC=1
+ ac_fn_c_check_func "$LINENO" "mbtowc" "ac_cv_func_mbtowc"
+if test "x$ac_cv_func_mbtowc" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBTOWC 1" >>confdefs.h
+
+fi
+
+ if test $ac_cv_func_mbtowc = no; then
+ HAVE_MBTOWC=0
+ else
+ if false; then
+ REPLACE_MBTOWC=1
+ fi
fi
- if test $REPLACE_MBTOWC = 1; then
+ if test $HAVE_MBTOWC = 0 || test $REPLACE_MBTOWC = 1; then
@@ -22641,8 +23710,8 @@ fi
rm -rf conftest*
;;
- # If we don't know, assume the worst.
- *) gl_cv_func_mkdir_trailing_slash_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_mkdir_trailing_slash_works="$gl_cross_guess_normal" ;;
esac
else
@@ -22695,10 +23764,12 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;;
esac
else
@@ -22834,7 +23905,8 @@ printf "%s\n" "#define GNULIB_MSVC_NOTHROW 1" >>confdefs.h
- if test $ac_cv_func_nl_langinfo = yes; then
+
+ if test $ac_cv_func_nl_langinfo = yes; then
# On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether YESEXPR works" >&5
printf %s "checking whether YESEXPR works... " >&6; }
@@ -22902,6 +23974,12 @@ printf "%s\n" "#define REPLACE_NL_LANGINFO 1" >>confdefs.h
else
HAVE_NL_LANGINFO=0
fi
+ if test $HAVE_NL_LANGINFO = 0 || test $HAVE_LANGINFO_CODESET = 0; then
+ LIB_NL_LANGINFO="$LIB_SETLOCALE_NULL"
+ else
+ LIB_NL_LANGINFO=
+ fi
+
if test $HAVE_NL_LANGINFO = 0 || test $REPLACE_NL_LANGINFO = 1; then
@@ -22999,7 +24077,47 @@ printf "%s\n" "#define HAVE_OBSTACK 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl5.005 or newer" >&5
+printf %s "checking for perl5.005 or newer... " >&6; }
+ if test "${PERL+set}" = set; then
+ # 'PERL' is set in the user's environment.
+ candidate_perl_names="$PERL"
+ perl_specified=yes
+ else
+ candidate_perl_names='perl perl5'
+ perl_specified=no
+ fi
+
+ found=no
+
+ PERL="$am_missing_run perl"
+ for perl in $candidate_perl_names; do
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ if ( $perl -e 'require 5.005; use File::Compare; use warnings;' ) > /dev/null 2>&1; then
+ PERL=$perl
+ found=yes
+ break
+ fi
+ done
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $found" >&5
+printf "%s\n" "$found" >&6; }
+ test $found = no && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
+ a usable version of the Perl File::Compare module. As a result,
+ you may be unable to run a few tests or to regenerate certain
+ files if you modify the sources from which they are derived.
+ " >&5
+printf "%s\n" "$as_me: WARNING:
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
+ a usable version of the Perl File::Compare module. As a result,
+ you may be unable to run a few tests or to regenerate certain
+ files if you modify the sources from which they are derived.
+ " >&2;}
+
+ ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
"
if test "x$ac_cv_have_decl_program_invocation_name" = xyes
then :
@@ -23010,7 +24128,7 @@ fi
printf "%s\n" "#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
+ ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
"
if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes
then :
@@ -23078,8 +24196,8 @@ then :
linux-* | linux) gl_cv_func_readlink_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_readlink_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_readlink_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_readlink_works="$gl_cross_guess_normal" ;;
esac
else
@@ -23185,8 +24303,8 @@ then :
case "$host_os" in
# Guess no on native Windows.
mingw*) gl_cv_func_re_compile_pattern_working="guessing no" ;;
- # Otherwise, assume it is not working.
- *) gl_cv_func_re_compile_pattern_working="guessing no" ;;
+ # Otherwise obey --enable-cross-guesses.
+ *) gl_cv_func_re_compile_pattern_working="$gl_cross_guess_normal" ;;
esac
else
@@ -23506,7 +24624,7 @@ then :
fi
- ac_fn_c_check_decl "$LINENO" "isblank" "ac_cv_have_decl_isblank" "#include <ctype.h>
+ ac_fn_c_check_decl "$LINENO" "isblank" "ac_cv_have_decl_isblank" "#include <ctype.h>
"
if test "x$ac_cv_have_decl_isblank" = xyes
then :
@@ -23546,8 +24664,8 @@ then :
*-gnu*) gl_cv_func_rename_slash_dst_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_rename_slash_dst_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_slash_dst_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_slash_dst_works="$gl_cross_guess_normal" ;;
esac
else
@@ -23622,8 +24740,8 @@ then :
*-gnu*) gl_cv_func_rename_slash_src_works="guessing yes" ;;
# Guess yes on native Windows.
mingw*) gl_cv_func_rename_slash_src_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_slash_src_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_slash_src_works="$gl_cross_guess_normal" ;;
esac
else
@@ -23684,52 +24802,44 @@ then :
printf %s "(cached) " >&6
else
if test $ac_cv_func_link = yes; then
- rm -rf conftest.f conftest.f1 conftest.f2
- if touch conftest.f conftest.f2 && ln conftest.f conftest.f1 &&
- set x `ls -i conftest.f conftest.f1` && test "" = ""; then
- if test "$cross_compiling" = yes
+ if test $cross_compiling != yes; then
+ rm -rf conftest.f conftest.f1 conftest.f2
+ if touch conftest.f conftest.f2 && ln conftest.f conftest.f1 &&
+ set x `ls -i conftest.f conftest.f1` && test "" = ""; then
+ if test "$cross_compiling" = yes
then :
- case "$host_os" in
- # Guess yes on Linux systems.
- linux-* | linux) gl_cv_func_rename_link_works="guessing yes" ;;
- # Guess yes on glibc systems.
- *-gnu*) gl_cv_func_rename_link_works="guessing yes" ;;
- # Guess yes on native Windows.
- mingw*) gl_cv_func_rename_link_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_link_works="guessing no" ;;
- esac
+ :
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# include <errno.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <unistd.h>
+# include <errno.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
int
main (void)
{
int result = 0;
- if (rename ("conftest.f", "conftest.f1"))
- result |= 1;
- if (unlink ("conftest.f1"))
- result |= 2;
-
- /* Allow either the POSIX-required behavior, where the
- previous rename kept conftest.f, or the (better) NetBSD
- behavior, where it removed conftest.f. */
- if (rename ("conftest.f", "conftest.f") != 0
- && errno != ENOENT)
- result |= 4;
-
- if (rename ("conftest.f1", "conftest.f1") == 0)
- result |= 8;
- if (rename ("conftest.f2", "conftest.f2") != 0)
- result |= 16;
- return result;
+ if (rename ("conftest.f", "conftest.f1"))
+ result |= 1;
+ if (unlink ("conftest.f1"))
+ result |= 2;
+
+ /* Allow either the POSIX-required behavior, where the
+ previous rename kept conftest.f, or the (better) NetBSD
+ behavior, where it removed conftest.f. */
+ if (rename ("conftest.f", "conftest.f") != 0
+ && errno != ENOENT)
+ result |= 4;
+
+ if (rename ("conftest.f1", "conftest.f1") == 0)
+ result |= 8;
+ if (rename ("conftest.f2", "conftest.f2") != 0)
+ result |= 16;
+ return result;
;
return 0;
@@ -23745,10 +24855,22 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ else
+ gl_cv_func_rename_link_works="guessing no"
+ fi
+ rm -rf conftest.f conftest.f1 conftest.f2
else
- gl_cv_func_rename_link_works="guessing no"
+ case "$host_os" in
+ # Guess yes on Linux systems.
+ linux-* | linux) gl_cv_func_rename_link_works="guessing yes" ;;
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_rename_link_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_rename_link_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_link_works="$gl_cross_guess_normal" ;;
+ esac
fi
- rm -rf conftest.f conftest.f1 conftest.f2
else
gl_cv_func_rename_link_works=yes
fi
@@ -23784,8 +24906,8 @@ then :
*-gnu*) gl_cv_func_rename_dest_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_rename_dest_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_dest_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_dest_works="$gl_cross_guess_normal" ;;
esac
else
@@ -23881,8 +25003,8 @@ then :
*-gnu* | gnu*) gl_cv_func_rmdir_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_rmdir_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rmdir_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rmdir_works="$gl_cross_guess_normal" ;;
esac
else
@@ -24121,6 +25243,298 @@ fi
fi
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (LC_ALL, NULL) is multithread-safe" >&5
+printf %s "checking whether setlocale (LC_ALL, NULL) is multithread-safe... " >&6; }
+if test ${gl_cv_func_setlocale_null_all_mtsafe+y}
+then :
+ printf %s "(cached) " >&6
+else
+ case "$host_os" in
+ # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin.
+ *-musl* | darwin* | freebsd* | netbsd* | openbsd* | aix* | haiku* | cygwin*)
+ gl_cv_func_setlocale_null_all_mtsafe=no ;;
+ # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows.
+ *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*)
+ gl_cv_func_setlocale_null_all_mtsafe=yes ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *)
+ gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_all_mtsafe" >&5
+printf "%s\n" "$gl_cv_func_setlocale_null_all_mtsafe" >&6; }
+ case "$host_os" in
+ mingw*) ;;
+ *)
+ if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then
+ gl_cv_func_setlocale_null_all_mtsafe="trivially yes"
+ fi
+ ;;
+ esac
+ case "$gl_cv_func_setlocale_null_all_mtsafe" in
+ *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;;
+ *) SETLOCALE_NULL_ALL_MTSAFE=0 ;;
+ esac
+
+printf "%s\n" "#define SETLOCALE_NULL_ALL_MTSAFE $SETLOCALE_NULL_ALL_MTSAFE" >>confdefs.h
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale (category, NULL) is multithread-safe" >&5
+printf %s "checking whether setlocale (category, NULL) is multithread-safe... " >&6; }
+if test ${gl_cv_func_setlocale_null_one_mtsafe+y}
+then :
+ printf %s "(cached) " >&6
+else
+ case "$host_os" in
+ # Guess no on OpenBSD, AIX.
+ openbsd* | aix*)
+ gl_cv_func_setlocale_null_one_mtsafe=no ;;
+ # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows.
+ *-gnu* | gnu* | *-musl* | darwin* | freebsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*)
+ gl_cv_func_setlocale_null_one_mtsafe=yes ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *)
+ gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_null_one_mtsafe" >&5
+printf "%s\n" "$gl_cv_func_setlocale_null_one_mtsafe" >&6; }
+ case "$host_os" in
+ mingw*) ;;
+ *)
+ if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then
+ gl_cv_func_setlocale_null_one_mtsafe="trivially yes"
+ fi
+ ;;
+ esac
+ case "$gl_cv_func_setlocale_null_one_mtsafe" in
+ *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;;
+ *) SETLOCALE_NULL_ONE_MTSAFE=0 ;;
+ esac
+
+printf "%s\n" "#define SETLOCALE_NULL_ONE_MTSAFE $SETLOCALE_NULL_ONE_MTSAFE" >>confdefs.h
+
+
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+ case "$host_os" in
+ mingw*) LIB_SETLOCALE_NULL= ;;
+ *)
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+printf %s "checking whether imported symbols can be declared weak... " >&6; }
+if test ${gl_cv_have_weak+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_cv_have_weak=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main (void)
+{
+xyzzy();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_cv_have_weak=maybe
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $gl_cv_have_weak = maybe; then
+ if test "$cross_compiling" = yes
+then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1
+then :
+ gl_cv_have_weak="guessing yes"
+else
+ gl_cv_have_weak="guessing no"
+fi
+rm -rf conftest*
+
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_have_weak=yes
+else
+ gl_cv_have_weak=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+printf "%s\n" "$gl_cv_have_weak" >&6; }
+ case "$gl_cv_have_weak" in
+ *yes)
+
+printf "%s\n" "#define HAVE_WEAK_SYMBOLS 1" >>confdefs.h
+
+ ;;
+ esac
+
+ case "$gl_cv_have_weak" in
+ *yes) LIB_SETLOCALE_NULL= ;;
+ *) LIB_SETLOCALE_NULL="$LIBPTHREAD" ;;
+ esac
+ ;;
+ esac
+ else
+ LIB_SETLOCALE_NULL=
+ fi
+
+
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS setlocale-lock.$ac_objext"
+
+
+
+
+ CFLAG_VISIBILITY=
+ HAVE_VISIBILITY=0
+ if test -n "$GCC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
+printf %s "checking whether the -Werror option is usable... " >&6; }
+if test ${gl_cv_cc_vis_werror+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_cc_vis_werror=yes
+else
+ gl_cv_cc_vis_werror=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$gl_save_CFLAGS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
+printf "%s\n" "$gl_cv_cc_vis_werror" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
+printf %s "checking for simple visibility declarations... " >&6; }
+if test ${gl_cv_cc_visibility+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ if test $gl_cv_cc_vis_werror = yes; then
+ CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+ extern __attribute__((__visibility__("default"))) int exportedvar;
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void) {}
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_cc_visibility=yes
+else
+ gl_cv_cc_visibility=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$gl_save_CFLAGS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
+printf "%s\n" "$gl_cv_cc_visibility" >&6; }
+ if test $gl_cv_cc_visibility = yes; then
+ CFLAG_VISIBILITY="-fvisibility=hidden"
+ HAVE_VISIBILITY=1
+ fi
+ fi
+
+
+
+printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h
+
+
+
+ fi
+
+
+
+
+
+ GNULIB_SETLOCALE_NULL=1
+
+
+
+
+
+printf "%s\n" "#define GNULIB_TEST_SETLOCALE_NULL 1" >>confdefs.h
+
+
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
printf %s "checking for ssize_t... " >&6; }
if test ${gt_cv_ssize_t+y}
@@ -24182,8 +25596,8 @@ then :
linux-* | linux) gl_cv_func_stat_file_slash="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_stat_file_slash="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_stat_file_slash="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_stat_file_slash="$gl_cross_guess_normal" ;;
esac
else
@@ -24679,10 +26093,20 @@ fi
- # Define two additional variables used in the Makefile substitution.
- if test "$ac_cv_header_stdbool_h" = yes; then
- STDBOOL_H=''
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ case "$host_os" in
+ solaris*)
+ if test -z "$GCC"; then
+ STDBOOL_H='stdbool.h'
+ else
+ STDBOOL_H=''
+ fi
+ ;;
+ *)
+ STDBOOL_H=''
+ ;;
+ esac
else
STDBOOL_H='stdbool.h'
fi
@@ -25127,8 +26551,10 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_working_strerror="guessing no" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_working_strerror="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;;
esac
else
@@ -25431,9 +26857,6 @@ fi
-
-
-
if test $gl_cv_have_include_next = yes; then
gl_cv_next_unistd_h='<'unistd.h'>'
else
@@ -25703,7 +27126,13 @@ printf "%s\n" "$gl_cv_next_wchar_h" >&6; }
- if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+
+ if case "$host_os" in
+ mingw*) true ;;
+ *) test $ac_cv_func_mbsinit = yes ;;
+ esac \
+ && test $ac_cv_func_mbrtowc = yes; then
+
@@ -25764,6 +27193,52 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ else
+ if test $LOCALE_FR_UTF8 != none; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ const char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 2;
+ }
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_mbrtowc_incomplete_state=yes
+else
+ gl_cv_func_mbrtowc_incomplete_state=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
fi
fi
@@ -25857,7 +27332,7 @@ printf "%s\n" "$gl_cv_func_mbrtowc_sanitycheck" >&6; }
if test $ac_cv_func_wcrtomb = no; then
HAVE_WCRTOMB=0
- ac_fn_c_check_decl "$LINENO" "wcrtomb" "ac_cv_have_decl_wcrtomb" "
+ ac_fn_c_check_decl "$LINENO" "wcrtomb" "ac_cv_have_decl_wcrtomb" "
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
@@ -25881,15 +27356,75 @@ printf "%s\n" "#define HAVE_DECL_WCRTOMB $ac_have_decl" >>confdefs.h
REPLACE_WCRTOMB=1
fi
else
- if test $REPLACE_MBSTATE_T = 1; then
- REPLACE_WCRTOMB=1
- else
+ if test $REPLACE_WCRTOMB = 0; then
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wcrtomb works in the C locale" >&5
+printf %s "checking whether wcrtomb works in the C locale... " >&6; }
+if test ${gl_cv_func_wcrtomb_works+y}
+then :
+ printf %s "(cached) " >&6
+else
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in
+ # Guess no on Android.
+ linux*-android*) gl_cv_func_wcrtomb_works="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_wcrtomb_works="guessing yes";;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <string.h>
+#include <stdlib.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <wchar.h>
+int main ()
+{
+ mbstate_t state;
+ char out[64];
+ int count;
+ memset (&state, 0, sizeof (state));
+ out[0] = 'x';
+ count = wcrtomb (out, L'a', &state);
+ return !(count == 1 && out[0] == 'a');
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_wcrtomb_works=yes
+else
+ gl_cv_func_wcrtomb_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wcrtomb return value is correct" >&5
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_wcrtomb_works" >&5
+printf "%s\n" "$gl_cv_func_wcrtomb_works" >&6; }
+ case "$gl_cv_func_wcrtomb_works" in
+ *yes) ;;
+ *)
+printf "%s\n" "#define WCRTOMB_C_LOCALE_BUG 1" >>confdefs.h
+
+ REPLACE_WCRTOMB=1 ;;
+ esac
+ fi
+ if test $REPLACE_WCRTOMB = 0; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wcrtomb return value is correct" >&5
printf %s "checking whether wcrtomb return value is correct... " >&6; }
if test ${gl_cv_func_wcrtomb_retval+y}
then :
@@ -25897,12 +27432,10 @@ then :
else
case "$host_os" in
- # Guess no on AIX 4, OSF/1 and Solaris.
- aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
- # Guess yes on native Windows.
- mingw*) gl_cv_func_wcrtomb_retval="guessing yes" ;;
- # Guess yes otherwise.
- *) gl_cv_func_wcrtomb_retval="guessing yes" ;;
+ # Guess no on AIX 4, OSF/1, Solaris, native Windows.
+ aix4* | osf* | solaris* | mingw*) gl_cv_func_wcrtomb_retval="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_wcrtomb_retval="guessing yes" ;;
esac
if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
if test "$cross_compiling" = yes
@@ -25922,6 +27455,7 @@ else
#include <stdio.h>
#include <time.h>
#include <wchar.h>
+#include <stdlib.h>
int main ()
{
int result = 0;
@@ -25934,6 +27468,12 @@ int main ()
{
if (wcrtomb (NULL, 0, NULL) != 1)
result |= 2;
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ if (mbtowc (&wc, "\303\274", 2) == 2)
+ if (wcrtomb (NULL, wc, NULL) != 1)
+ result |= 2;
+ }
}
if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
{
@@ -25965,7 +27505,10 @@ fi
printf "%s\n" "$gl_cv_func_wcrtomb_retval" >&6; }
case "$gl_cv_func_wcrtomb_retval" in
*yes) ;;
- *) REPLACE_WCRTOMB=1 ;;
+ *)
+printf "%s\n" "#define WCRTOMB_RETVAL_BUG 1" >>confdefs.h
+
+ REPLACE_WCRTOMB=1 ;;
esac
fi
fi
@@ -26083,6 +27626,7 @@ else
/* end confdefs.h. */
#include <locale.h>
+#include <stdlib.h>
#include <string.h>
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
@@ -26126,7 +27670,7 @@ printf "%s\n" "$gl_cv_func_wctob_works" >&6; }
esac
if test $REPLACE_WCTOB = 0; then
- ac_fn_c_check_decl "$LINENO" "wctob" "ac_cv_have_decl_wctob" "
+ ac_fn_c_check_decl "$LINENO" "wctob" "ac_cv_have_decl_wctob" "
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
@@ -26390,10 +27934,14 @@ printf "%s\n" "$gl_cv_func_iswcntrl_works" >&6; }
fi
- case "$gl_cv_func_iswcntrl_works" in
- *yes) REPLACE_ISWCNTRL=0 ;;
- *) REPLACE_ISWCNTRL=1 ;;
- esac
+ if test $GNULIB_OVERRIDES_WINT_T = 1; then
+ REPLACE_ISWCNTRL=1
+ else
+ case "$gl_cv_func_iswcntrl_works" in
+ *yes) REPLACE_ISWCNTRL=0 ;;
+ *) REPLACE_ISWCNTRL=1 ;;
+ esac
+ fi
if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
@@ -26413,7 +27961,7 @@ fi
if test $ac_cv_func_towlower = yes; then
REPLACE_TOWLOWER=0
else
- ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
included before <wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
must be included before <wchar.h>. */
@@ -26538,6 +28086,66 @@ printf "%s\n" "$gl_cv_type_wctrans_t" >&6; }
+
+ case "$host_os" in
+ mingw*)
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS windows-mutex.$ac_objext"
+
+ ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS windows-once.$ac_objext"
+
+ ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS windows-recmutex.$ac_objext"
+
+ ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS windows-rwlock.$ac_objext"
+
+ ;;
+ esac
:
# End of code from modules
@@ -26693,6 +28301,20 @@ printf "%s\n" "$gl_cv_next_arpa_inet_h" >&6; }
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_WS2TCPIP_H=0
+ else
+ if test $ac_cv_header_ws2tcpip_h = yes; then
+ HAVE_WS2TCPIP_H=1
+ else
+ HAVE_WS2TCPIP_H=0
+ fi
+ fi
+
+
+
+
+
@@ -27165,6 +28787,7 @@ else
#endif
#include <stdlib.h>
#include <string.h>
+#include <wctype.h>
struct tm t;
char buf[16];
int main () {
@@ -27542,7 +29165,7 @@ then :
fi
- ac_fn_c_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include <sys/types.h>
+ ac_fn_c_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include <sys/types.h>
#include <dirent.h>
"
if test "x$ac_cv_have_decl_dirfd" = xyes
@@ -28217,7 +29840,7 @@ FILE *f = fopen ("conftest.txt", "r");
if (lseek (fd, 0, SEEK_CUR) != 5)
{ fclose (f); return 5; }
/* Verify behaviour of fflush after ungetc. See
- <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
+ <https://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
/* Verify behaviour of fflush after a backup ungetc. This fails on
mingw. */
c = fgetc (f);
@@ -28357,59 +29980,10 @@ printf "%s\n" "#define GETXATTR_WITH_POSIX_ACLS 1" >>confdefs.h
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flexible array member" >&5
-printf %s "checking for flexible array member... " >&6; }
-if test ${ac_cv_c_flexmember+y}
-then :
- printf %s "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
- #include <stdio.h>
- #include <stddef.h>
- struct m { struct m *next, **list; char name[]; };
- struct s { struct s *p; struct m *m; int n; double d[]; };
-int
-main (void)
-{
-int m = getchar ();
- size_t nbytes = offsetof (struct s, d) + m * sizeof (double);
- nbytes += sizeof (struct s) - 1;
- nbytes -= nbytes % sizeof (struct s);
- struct s *p = malloc (nbytes);
- p->p = p;
- p->m = NULL;
- p->d[0] = 0.0;
- return p->d != (double *) NULL;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_c_flexmember=yes
-else
- ac_cv_c_flexmember=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
-printf "%s\n" "$ac_cv_c_flexmember" >&6; }
- if test $ac_cv_c_flexmember = yes; then
-
-printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
- else
- printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
-
- fi
-
-
-
- ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include <stdio.h>
+ ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include <stdio.h>
"
if test "x$ac_cv_have_decl_fpurge" = xyes
then :
@@ -28422,7 +29996,7 @@ printf "%s\n" "#define HAVE_DECL_FPURGE $ac_have_decl" >>confdefs.h
if test "x$ac_cv_func_fpurge" = xyes; then
HAVE_FPURGE=1
- # Detect BSD bug. Only cygwin 1.7 is known to be immune.
+ # Detect BSD bug. Only cygwin 1.7 and musl are known to be immune.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether fpurge works" >&5
printf %s "checking whether fpurge works... " >&6; }
if test ${gl_cv_func_fpurge_works+y}
@@ -28431,7 +30005,13 @@ then :
else
if test "$cross_compiling" = yes
then :
- gl_cv_func_fpurge_works='guessing no'
+ case "$host_os" in
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_fpurge_works="guessing yes" ;;
+ # Otherwise obey --enable-cross-guesses.
+ *) gl_cv_func_fpurge_works="$gl_cross_guess_normal" ;;
+ esac
+
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -28484,12 +30064,14 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fpurge_works" >&5
printf "%s\n" "$gl_cv_func_fpurge_works" >&6; }
- if test "x$gl_cv_func_fpurge_works" != xyes; then
- REPLACE_FPURGE=1
- fi
+ case "$gl_cv_func_fpurge_works" in
+ *yes) ;;
+ *) REPLACE_FPURGE=1 ;;
+ esac
else
HAVE_FPURGE=0
fi
@@ -28679,7 +30261,7 @@ FILE *f = fopen ("conftest.txt", "r");
if (lseek (fd, 0, SEEK_CUR) != 5)
{ fclose (f); return 5; }
/* Verify behaviour of fflush after ungetc. See
- <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
+ <https://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
/* Verify behaviour of fflush after a backup ungetc. This fails on
mingw. */
c = fgetc (f);
@@ -28752,7 +30334,7 @@ then :
fi
if test $ac_cv_func__fseeki64 = yes; then
- ac_fn_c_check_decl "$LINENO" "_fseeki64" "ac_cv_have_decl__fseeki64" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "_fseeki64" "ac_cv_have_decl__fseeki64" "$ac_includes_default"
if test "x$ac_cv_have_decl__fseeki64" = xyes
then :
ac_have_decl=1
@@ -29297,7 +30879,7 @@ fi
REPLACE_GETPAGESIZE=1
;;
esac
- ac_fn_c_check_decl "$LINENO" "getpagesize" "ac_cv_have_decl_getpagesize" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "getpagesize" "ac_cv_have_decl_getpagesize" "$ac_includes_default"
if test "x$ac_cv_have_decl_getpagesize" = xyes
then :
@@ -29340,6 +30922,13 @@ printf "%s\n" "#define GNULIB_TEST_GETPAGESIZE 1" >>confdefs.h
+ case "$host_os" in
+ *-musl*)
+printf "%s\n" "#define MUSL_LIBC 1" >>confdefs.h
+ ;;
+ esac
+
+
@@ -29371,7 +30960,8 @@ fi
if test $HAVE_WINSOCK2_H = 1; then
- ac_fn_c_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" "#include <ws2tcpip.h>
+ REPLACE_INET_PTON=1
+ ac_fn_c_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" "#include <ws2tcpip.h>
"
if test "x$ac_cv_have_decl_inet_pton" = xyes
then :
@@ -29383,11 +30973,9 @@ fi
printf "%s\n" "#define HAVE_DECL_INET_PTON $ac_have_decl" >>confdefs.h
if test $ac_cv_have_decl_inet_pton = yes; then
- REPLACE_INET_PTON=1
INET_PTON_LIB="-lws2_32"
else
HAVE_DECL_INET_PTON=0
- HAVE_INET_PTON=0
fi
else
gl_save_LIBS=$LIBS
@@ -29473,7 +31061,7 @@ fi
fi
- ac_fn_c_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" "#include <arpa/inet.h>
+ ac_fn_c_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" "#include <arpa/inet.h>
#if HAVE_NETDB_H
# include <netdb.h>
#endif
@@ -29494,7 +31082,7 @@ printf "%s\n" "#define HAVE_DECL_INET_PTON $ac_have_decl" >>confdefs.h
fi
- if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1; then
+ if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_PTON = 1; then
@@ -29668,16 +31256,16 @@ then :
# Try to guess by grepping values from an object file.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-short int ascii_mm[] =
+unsigned short int ascii_mm[] =
{ 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
+ unsigned short int ascii_ii[] =
{ 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
int use_ascii (int i) {
return ascii_mm[i] + ascii_ii[i];
}
- short int ebcdic_ii[] =
+ unsigned short int ebcdic_ii[] =
{ 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
+ unsigned short int ebcdic_mm[] =
{ 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
int use_ebcdic (int i) {
return ebcdic_mm[i] + ebcdic_ii[i];
@@ -29819,10 +31407,8 @@ else
#if defined INT32_MAX && defined INTMAX_MAX
#define CONDITION (INT32_MAX < INTMAX_MAX)
- #elif HAVE_LONG_LONG_INT
- #define CONDITION (sizeof (int) < sizeof (long long int))
#else
- #define CONDITION 0
+ #define CONDITION (sizeof (int) < sizeof (long long int))
#endif
int test[CONDITION ? 1 : -1];
int
@@ -29873,10 +31459,8 @@ else
#if defined INT64_MAX
#define CONDITION (INT64_MAX == LONG_MAX)
- #elif HAVE_LONG_LONG_INT
- #define CONDITION (sizeof (long long int) == sizeof (long int))
#else
- #define CONDITION 0
+ #define CONDITION (sizeof (long long int) == sizeof (long int))
#endif
int test[CONDITION ? 1 : -1];
int
@@ -29929,10 +31513,8 @@ else
#if defined UINT32_MAX && defined UINTMAX_MAX
#define CONDITION (UINT32_MAX < UINTMAX_MAX)
- #elif HAVE_LONG_LONG_INT
- #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
#else
- #define CONDITION 0
+ #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
#endif
int test[CONDITION ? 1 : -1];
int
@@ -29983,10 +31565,8 @@ else
#if defined UINT64_MAX
#define CONDITION (UINT64_MAX == ULONG_MAX)
- #elif HAVE_LONG_LONG_INT
- #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
#else
- #define CONDITION 0
+ #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
#endif
int test[CONDITION ? 1 : -1];
int
@@ -30022,7 +31602,6 @@ printf "%s\n" "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
-
HAVE_IOCTL=1
if test "$ac_cv_header_winsock2_h" = yes; then
HAVE_IOCTL=0
@@ -30133,8 +31712,8 @@ then :
linux-* | linux) gl_cv_func_link_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_link_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_link_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_link_works="$gl_cross_guess_normal" ;;
esac
else
@@ -30259,21 +31838,24 @@ printf "%s\n" "#define GNULIB_TEST_LISTEN 1" >>confdefs.h
- ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
-if test "x$ac_cv_func_setlocale" = xyes
-then :
- printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
-
-fi
+ if test $HAVE_LOCALE_T = 1; then
- if test $ac_cv_func_newlocale != yes; then
+ gl_func_newlocale="$ac_cv_func_newlocale"
+ gl_func_duplocale="$ac_cv_func_duplocale"
+ gl_func_freelocale="$ac_cv_func_freelocale"
+ else
+ gl_func_newlocale=no
+ gl_func_duplocale=no
+ gl_func_freelocale=no
+ fi
+ if test $gl_func_newlocale != yes; then
HAVE_NEWLOCALE=0
fi
- if test $ac_cv_func_duplocale != yes; then
+ if test $gl_func_duplocale != yes; then
HAVE_DUPLOCALE=0
fi
- if test $ac_cv_func_freelocale != yes; then
+ if test $gl_func_freelocale != yes; then
HAVE_FREELOCALE=0
fi
if test $gt_nameless_locales = yes; then
@@ -31360,8 +32942,8 @@ then :
gl_cv_func_nanosleep='guessing no (mishandles large arguments)' ;;
mingw*) # Guess no on native Windows.
gl_cv_func_nanosleep='guessing no' ;;
- *) # If we don't know, assume the worst.
- gl_cv_func_nanosleep='guessing no' ;;
+ *) # If we don't know, obey --enable-cross-guesses.
+ gl_cv_func_nanosleep="$gl_cross_guess_normal" ;;
esac
else
@@ -31932,26 +33514,28 @@ printf "%s\n" "$gt_cv_locale_fr_utf8" >&6; }
if test "$gl_cv_macro_O_CLOEXEC" != yes; then
REPLACE_OPEN=1
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether open recognizes a trailing slash" >&5
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether open recognizes a trailing slash" >&5
printf %s "checking whether open recognizes a trailing slash... " >&6; }
if test ${gl_cv_func_open_slash+y}
then :
printf %s "(cached) " >&6
else
# Assume that if we have lstat, we can also check symlinks.
- if test $ac_cv_func_lstat = yes; then
- touch conftest.tmp
- ln -s conftest.tmp conftest.lnk
- fi
- if test "$cross_compiling" = yes
+ if test $ac_cv_func_lstat = yes; then
+ touch conftest.tmp
+ ln -s conftest.tmp conftest.lnk
+ fi
+ if test "$cross_compiling" = yes
then :
- case "$host_os" in
- freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
- gl_cv_func_open_slash="guessing no" ;;
- *)
- gl_cv_func_open_slash="guessing yes" ;;
- esac
+ case "$host_os" in
+ freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
+ gl_cv_func_open_slash="guessing no" ;;
+ *)
+ gl_cv_func_open_slash="guessing yes" ;;
+ esac
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -31983,16 +33567,21 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- rm -f conftest.sl conftest.tmp conftest.lnk
+ rm -f conftest.sl conftest.tmp conftest.lnk
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_open_slash" >&5
printf "%s\n" "$gl_cv_func_open_slash" >&6; }
- case "$gl_cv_func_open_slash" in
- *no)
+ case "$gl_cv_func_open_slash" in
+ *no)
printf "%s\n" "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h
+ ;;
+ esac
+
+ case "$gl_cv_func_open_slash" in
+ *no)
REPLACE_OPEN=1
;;
esac
@@ -32109,10 +33698,12 @@ else
if test "$cross_compiling" = yes
then :
case "$host_os" in
- # Guess yes on native Windows.
- mingw*) gl_cv_func_perror_works="guessing yes" ;;
- # Otherwise guess no.
- *) gl_cv_func_perror_works="guessing no" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_perror_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_perror_works="guessing yes" ;;
+ # Otherwise obey --enable-cross-guesses.
+ *) gl_cv_func_perror_works="$gl_cross_guess_normal" ;;
esac
else
@@ -32244,6 +33835,736 @@ printf "%s\n" "#define GNULIB_TEST_PIPE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_pthread_h='<'pthread.h'>'
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <pthread.h>" >&5
+printf %s "checking absolute name of <pthread.h>... " >&6; }
+if test ${gl_cv_next_pthread_h+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ if test $ac_cv_header_pthread_h = yes; then
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'pthread.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_pthread_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_pthread_h
+ gl_cv_next_pthread_h='"'$gl_header'"'
+ else
+ gl_cv_next_pthread_h='<'pthread.h'>'
+ fi
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_pthread_h" >&5
+printf "%s\n" "$gl_cv_next_pthread_h" >&6; }
+ fi
+ NEXT_PTHREAD_H=$gl_cv_next_pthread_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'pthread.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_pthread_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H=$gl_next_as_first_directive
+
+
+
+
+ if test $ac_cv_header_pthread_h = yes; then
+ HAVE_PTHREAD_H=1
+
+
+ if { case "$host_os" in mingw*) true;; *) false;; esac; } \
+ && test $gl_threads_api = windows; then
+ HAVE_PTHREAD_H=0
+ fi
+
+ else
+ HAVE_PTHREAD_H=0
+ fi
+
+
+ ac_fn_c_check_type "$LINENO" "pthread_t" "ac_cv_type_pthread_t" "$ac_includes_default
+ #if HAVE_PTHREAD_H
+ #include <pthread.h>
+ #endif
+"
+if test "x$ac_cv_type_pthread_t" = xyes
+then :
+
+printf "%s\n" "#define HAVE_PTHREAD_T 1" >>confdefs.h
+
+
+fi
+ac_fn_c_check_type "$LINENO" "pthread_spinlock_t" "ac_cv_type_pthread_spinlock_t" "$ac_includes_default
+ #if HAVE_PTHREAD_H
+ #include <pthread.h>
+ #endif
+"
+if test "x$ac_cv_type_pthread_spinlock_t" = xyes
+then :
+
+printf "%s\n" "#define HAVE_PTHREAD_SPINLOCK_T 1" >>confdefs.h
+
+
+fi
+
+ if test $ac_cv_type_pthread_t != yes; then
+ HAVE_PTHREAD_T=0
+ fi
+ if test $ac_cv_type_pthread_spinlock_t != yes; then
+ HAVE_PTHREAD_SPINLOCK_T=0
+ fi
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_CREATE_DETACHED" >&5
+printf %s "checking for PTHREAD_CREATE_DETACHED... " >&6; }
+if test ${gl_cv_const_PTHREAD_CREATE_DETACHED+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ int x = PTHREAD_CREATE_DETACHED;
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_const_PTHREAD_CREATE_DETACHED=yes
+else
+ gl_cv_const_PTHREAD_CREATE_DETACHED=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_const_PTHREAD_CREATE_DETACHED" >&5
+printf "%s\n" "$gl_cv_const_PTHREAD_CREATE_DETACHED" >&6; }
+ if test $gl_cv_const_PTHREAD_CREATE_DETACHED != yes; then
+ HAVE_PTHREAD_CREATE_DETACHED=0
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_RECURSIVE" >&5
+printf %s "checking for PTHREAD_MUTEX_RECURSIVE... " >&6; }
+if test ${gl_cv_const_PTHREAD_MUTEX_RECURSIVE+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ int x = PTHREAD_MUTEX_RECURSIVE;
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_const_PTHREAD_MUTEX_RECURSIVE=yes
+else
+ gl_cv_const_PTHREAD_MUTEX_RECURSIVE=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_const_PTHREAD_MUTEX_RECURSIVE" >&5
+printf "%s\n" "$gl_cv_const_PTHREAD_MUTEX_RECURSIVE" >&6; }
+ if test $gl_cv_const_PTHREAD_MUTEX_RECURSIVE != yes; then
+ HAVE_PTHREAD_MUTEX_RECURSIVE=0
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_MUTEX_ROBUST" >&5
+printf %s "checking for PTHREAD_MUTEX_ROBUST... " >&6; }
+if test ${gl_cv_const_PTHREAD_MUTEX_ROBUST+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ int x = PTHREAD_MUTEX_ROBUST;
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_const_PTHREAD_MUTEX_ROBUST=yes
+else
+ gl_cv_const_PTHREAD_MUTEX_ROBUST=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_const_PTHREAD_MUTEX_ROBUST" >&5
+printf "%s\n" "$gl_cv_const_PTHREAD_MUTEX_ROBUST" >&6; }
+ if test $gl_cv_const_PTHREAD_MUTEX_ROBUST != yes; then
+ HAVE_PTHREAD_MUTEX_ROBUST=0
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PROCESS_SHARED" >&5
+printf %s "checking for PTHREAD_PROCESS_SHARED... " >&6; }
+if test ${gl_cv_const_PTHREAD_PROCESS_SHARED+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ int x = PTHREAD_PROCESS_SHARED;
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ gl_cv_const_PTHREAD_PROCESS_SHARED=yes
+else
+ gl_cv_const_PTHREAD_PROCESS_SHARED=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_const_PTHREAD_PROCESS_SHARED" >&5
+printf "%s\n" "$gl_cv_const_PTHREAD_PROCESS_SHARED" >&6; }
+ if test $gl_cv_const_PTHREAD_PROCESS_SHARED != yes; then
+ HAVE_PTHREAD_PROCESS_SHARED=0
+ fi
+
+
+
+
+
+
+
+ LIB_PTHREAD="$LIBPMULTITHREAD"
+
+
+
+
+
+
+ if { case "$host_os" in mingw*) true;; *) false;; esac; } \
+ && test $gl_threads_api = windows; then
+ REPLACE_PTHREAD_CREATE=1
+ REPLACE_PTHREAD_ATTR_INIT=1
+ REPLACE_PTHREAD_ATTR_GETDETACHSTATE=1
+ REPLACE_PTHREAD_ATTR_SETDETACHSTATE=1
+ REPLACE_PTHREAD_ATTR_DESTROY=1
+ REPLACE_PTHREAD_SELF=1
+ REPLACE_PTHREAD_EQUAL=1
+ REPLACE_PTHREAD_DETACH=1
+ REPLACE_PTHREAD_JOIN=1
+ REPLACE_PTHREAD_EXIT=1
+ else
+ if test $HAVE_PTHREAD_H = 0; then
+ HAVE_PTHREAD_CREATE=0
+ HAVE_PTHREAD_ATTR_INIT=0
+ HAVE_PTHREAD_ATTR_GETDETACHSTATE=0
+ HAVE_PTHREAD_ATTR_SETDETACHSTATE=0
+ HAVE_PTHREAD_ATTR_DESTROY=0
+ HAVE_PTHREAD_SELF=0
+ HAVE_PTHREAD_EQUAL=0
+ HAVE_PTHREAD_DETACH=0
+ HAVE_PTHREAD_JOIN=0
+ HAVE_PTHREAD_EXIT=0
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_create exists as a global function" >&5
+printf %s "checking whether pthread_create exists as a global function... " >&6; }
+if test ${gl_cv_func_pthread_create+y}
+then :
+ printf %s "(cached) " >&6
+else
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPMULTITHREAD"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+ int pthread_create (void);
+ int main ()
+ {
+ return pthread_create ();
+ }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_cv_func_pthread_create=yes
+else
+ gl_cv_func_pthread_create=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$saved_LIBS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_create" >&5
+printf "%s\n" "$gl_cv_func_pthread_create" >&6; }
+ if test $gl_cv_func_pthread_create = no; then
+ REPLACE_PTHREAD_CREATE=1
+ REPLACE_PTHREAD_ATTR_INIT=1
+
+printf "%s\n" "#define PTHREAD_CREATE_IS_INLINE 1" >>confdefs.h
+
+ fi
+ fi
+ fi
+
+ if test $HAVE_PTHREAD_CREATE = 0 || test $REPLACE_PTHREAD_CREATE = 1; then
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS pthread-thread.$ac_objext"
+
+ fi
+
+
+
+
+
+ if test "$GNULIB_PTHREAD_THREAD" != 1; then
+ if test "$GNULIB_PTHREAD_THREAD" = 0; then
+ GNULIB_PTHREAD_THREAD=$gl_module_indicator_condition
+ else
+ GNULIB_PTHREAD_THREAD="($GNULIB_PTHREAD_THREAD || $gl_module_indicator_condition)"
+ fi
+ fi
+
+
+
+
+
+printf "%s\n" "#define GNULIB_TEST_PTHREAD_THREAD 1" >>confdefs.h
+
+
+
+
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_sigmask is a macro" >&5
+printf %s "checking whether pthread_sigmask is a macro... " >&6; }
+if test ${gl_cv_func_pthread_sigmask_macro+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <pthread.h>
+#include <signal.h>
+#ifdef pthread_sigmask
+ headers_define_pthread_sigmask
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "headers_define_pthread_sigmask" >/dev/null 2>&1
+then :
+ gl_cv_func_pthread_sigmask_macro=yes
+else
+ gl_cv_func_pthread_sigmask_macro=no
+fi
+rm -rf conftest*
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_macro" >&5
+printf "%s\n" "$gl_cv_func_pthread_sigmask_macro" >&6; }
+
+ LIB_PTHREAD_SIGMASK=
+
+ if test $gl_cv_func_pthread_sigmask_macro = yes; then
+ HAVE_PTHREAD_SIGMASK=0
+ REPLACE_PTHREAD_SIGMASK=1
+ else
+
+
+
+ if test "$gl_threads_api" = posix; then
+ if test $ac_cv_func_pthread_sigmask = yes; then
+ :
+ else
+ if test -n "$LIBMULTITHREAD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_sigmask in $LIBMULTITHREAD" >&5
+printf %s "checking for pthread_sigmask in $LIBMULTITHREAD... " >&6; }
+if test ${gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD+y}
+then :
+ printf %s "(cached) " >&6
+else
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ #include <signal.h>
+
+int
+main (void)
+{
+return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes
+else
+ gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gl_save_LIBS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&5
+printf "%s\n" "$gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&6; }
+ if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
+ LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
+ else
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ else
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ fi
+ else
+ if test $ac_cv_func_pthread_sigmask = yes; then
+ REPLACE_PTHREAD_SIGMASK=1
+ else
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ fi
+
+ fi
+
+
+
+ if test $HAVE_PTHREAD_SIGMASK = 1; then
+
+
+ if test -z "$LIB_PTHREAD_SIGMASK"; then
+ case " $LIBS " in
+ *' -pthread '*) ;;
+ *' -lpthread '*) ;;
+ *)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_sigmask works without -lpthread" >&5
+printf %s "checking whether pthread_sigmask works without -lpthread... " >&6; }
+if test ${gl_cv_func_pthread_sigmask_in_libc_works+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes
+then :
+
+ case "$host_os" in
+ freebsd* | hpux* | solaris | solaris2.[2-9]*)
+ gl_cv_func_pthread_sigmask_in_libc_works="guessing no";;
+ *)
+ gl_cv_func_pthread_sigmask_in_libc_works="guessing yes";;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <pthread.h>
+ #include <signal.h>
+ #include <stddef.h>
+ int main ()
+ {
+ sigset_t set;
+ sigemptyset (&set);
+ return pthread_sigmask (1729, &set, NULL) != 0;
+ }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_pthread_sigmask_in_libc_works=no
+else
+ gl_cv_func_pthread_sigmask_in_libc_works=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_in_libc_works" >&5
+printf "%s\n" "$gl_cv_func_pthread_sigmask_in_libc_works" >&6; }
+ case "$gl_cv_func_pthread_sigmask_in_libc_works" in
+ *no)
+ REPLACE_PTHREAD_SIGMASK=1
+
+printf "%s\n" "#define PTHREAD_SIGMASK_INEFFECTIVE 1" >>confdefs.h
+
+ ;;
+ esac;;
+ esac
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_sigmask returns error numbers" >&5
+printf %s "checking whether pthread_sigmask returns error numbers... " >&6; }
+if test ${gl_cv_func_pthread_sigmask_return_works+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB_PTHREAD_SIGMASK"
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in
+ cygwin*)
+ gl_cv_func_pthread_sigmask_return_works="guessing no";;
+ *)
+ gl_cv_func_pthread_sigmask_return_works="guessing yes";;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <pthread.h>
+#include <signal.h>
+#include <stddef.h>
+int main ()
+{
+ sigset_t set;
+ sigemptyset (&set);
+ if (pthread_sigmask (1729, &set, NULL) == -1)
+ return 1;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_pthread_sigmask_return_works=yes
+else
+ gl_cv_func_pthread_sigmask_return_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ LIBS="$gl_save_LIBS"
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_return_works" >&5
+printf "%s\n" "$gl_cv_func_pthread_sigmask_return_works" >&6; }
+ case "$gl_cv_func_pthread_sigmask_return_works" in
+ *no)
+ REPLACE_PTHREAD_SIGMASK=1
+
+printf "%s\n" "#define PTHREAD_SIGMASK_FAILS_WITH_ERRNO 1" >>confdefs.h
+
+ ;;
+ esac
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_sigmask unblocks signals correctly" >&5
+printf %s "checking whether pthread_sigmask unblocks signals correctly... " >&6; }
+if test ${gl_cv_func_pthread_sigmask_unblock_works+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ case "$host_os" in
+ irix*)
+ gl_cv_func_pthread_sigmask_unblock_works="guessing no";;
+ *)
+ gl_cv_func_pthread_sigmask_unblock_works="guessing yes";;
+ esac
+ gl_save_LIBS=$LIBS
+ LIBS="$LIBS $LIBMULTITHREAD"
+ if test "$cross_compiling" = yes
+then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+static volatile int sigint_occurred;
+static void
+sigint_handler (int sig)
+{
+ sigint_occurred++;
+}
+int main ()
+{
+ sigset_t set;
+ int pid = getpid ();
+ char command[80];
+ signal (SIGINT, sigint_handler);
+ sigemptyset (&set);
+ sigaddset (&set, SIGINT);
+ if (!(pthread_sigmask (SIG_BLOCK, &set, NULL) == 0))
+ return 1;
+ sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, pid);
+ if (!(system (command) == 0))
+ return 2;
+ sleep (2);
+ if (!(sigint_occurred == 0))
+ return 3;
+ if (!(pthread_sigmask (SIG_UNBLOCK, &set, NULL) == 0))
+ return 4;
+ if (!(sigint_occurred == 1)) /* This fails on IRIX. */
+ return 5;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ :
+else
+ gl_cv_func_pthread_sigmask_unblock_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ LIBS=$gl_save_LIBS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_unblock_works" >&5
+printf "%s\n" "$gl_cv_func_pthread_sigmask_unblock_works" >&6; }
+ case "$gl_cv_func_pthread_sigmask_unblock_works" in
+ *no)
+ REPLACE_PTHREAD_SIGMASK=1
+
+printf "%s\n" "#define PTHREAD_SIGMASK_UNBLOCK_BUG 1" >>confdefs.h
+
+ ;;
+ esac
+ fi
+
+ if test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1; then
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS pthread_sigmask.$ac_objext"
+
+
+ if test $HAVE_PTHREAD_SIGMASK = 1; then
+
+printf "%s\n" "#define HAVE_PTHREAD_SIGMASK 1" >>confdefs.h
+
+ fi
+
+ fi
+
+
+
+
+
+ if test "$GNULIB_PTHREAD_SIGMASK" != 1; then
+ if test "$GNULIB_PTHREAD_SIGMASK" = 0; then
+ GNULIB_PTHREAD_SIGMASK=$gl_module_indicator_condition
+ else
+ GNULIB_PTHREAD_SIGMASK="($GNULIB_PTHREAD_SIGMASK || $gl_module_indicator_condition)"
+ fi
+ fi
+
+
+
+
+
+printf "%s\n" "#define GNULIB_TEST_PTHREAD_SIGMASK 1" >>confdefs.h
+
+
+
+
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for putenv compatible with GNU and SVID" >&5
printf %s "checking for putenv compatible with GNU and SVID... " >&6; }
if test ${gl_cv_func_svid_putenv+y}
@@ -32255,10 +34576,12 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_svid_putenv="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_svid_putenv="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_svid_putenv="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_svid_putenv="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_svid_putenv="$gl_cross_guess_normal" ;;
esac
else
@@ -32320,7 +34643,7 @@ printf "%s\n" "$gl_cv_func_svid_putenv" >&6; }
gltests_LIBOBJS="$gltests_LIBOBJS putenv.$ac_objext"
- ac_fn_c_check_decl "$LINENO" "_putenv" "ac_cv_have_decl__putenv" "$ac_includes_default"
+ ac_fn_c_check_decl "$LINENO" "_putenv" "ac_cv_have_decl__putenv" "$ac_includes_default"
if test "x$ac_cv_have_decl__putenv" = xyes
then :
ac_have_decl=1
@@ -32592,6 +34915,155 @@ printf "%s\n" "#define GNULIB_TEST_REALLOC_POSIX 1" >>confdefs.h
+
+
+ ac_fn_c_check_header_compile "$LINENO" "sched.h" "ac_cv_header_sched_h" "#if HAVE_SYS_CDEFS_H
+ #include <sys/cdefs.h>
+ #endif
+
+"
+if test "x$ac_cv_header_sched_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCHED_H 1" >>confdefs.h
+
+fi
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_sched_h='<'sched.h'>'
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking absolute name of <sched.h>" >&5
+printf %s "checking absolute name of <sched.h>... " >&6; }
+if test ${gl_cv_next_sched_h+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sched.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'sched.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_sched_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_sched_h
+ gl_cv_next_sched_h='"'$gl_header'"'
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sched_h" >&5
+printf "%s\n" "$gl_cv_next_sched_h" >&6; }
+ fi
+ NEXT_SCHED_H=$gl_cv_next_sched_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'sched.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_sched_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_SCHED_H=$gl_next_as_first_directive
+
+
+
+
+
+ if test "$ac_cv_header_sched_h" = yes; then
+ HAVE_SCHED_H=1
+ else
+ HAVE_SCHED_H=0
+ fi
+
+
+ if test "$HAVE_SCHED_H" = 1; then
+ ac_fn_c_check_type "$LINENO" "struct sched_param" "ac_cv_type_struct_sched_param" "#if HAVE_SYS_CDEFS_H
+ #include <sys/cdefs.h>
+ #endif
+ #include <sched.h>
+
+"
+if test "x$ac_cv_type_struct_sched_param" = xyes
+then :
+ HAVE_STRUCT_SCHED_PARAM=1
+else
+ HAVE_STRUCT_SCHED_PARAM=0
+fi
+
+ else
+ HAVE_STRUCT_SCHED_PARAM=0
+ case "$host_os" in
+ os2*)
+ ac_fn_c_check_type "$LINENO" "struct sched_param" "ac_cv_type_struct_sched_param" "#include <spawn.h>
+"
+if test "x$ac_cv_type_struct_sched_param" = xyes
+then :
+ HAVE_STRUCT_SCHED_PARAM=1
+fi
+
+ ;;
+ vms)
+ ac_fn_c_check_type "$LINENO" "struct sched_param" "ac_cv_type_struct_sched_param" "#include <pthread.h>
+"
+if test "x$ac_cv_type_struct_sched_param" = xyes
+then :
+ HAVE_STRUCT_SCHED_PARAM=1
+fi
+
+ ;;
+ esac
+ fi
+
+
+ if test "$ac_cv_header_sys_cdefs_h" = yes; then
+ HAVE_SYS_CDEFS_H=1
+ else
+ HAVE_SYS_CDEFS_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
if test "$ac_cv_header_winsock2_h" = yes; then
REPLACE_SELECT=1
else
@@ -32664,8 +35136,8 @@ then :
linux-* | linux) gl_cv_func_select_detects_ebadf="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_select_detects_ebadf="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_select_detects_ebadf="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_select_detects_ebadf="$gl_cross_guess_normal" ;;
esac
else
@@ -32797,8 +35269,10 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_setenv_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_setenv_works="guessing no" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_setenv_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_setenv_works="$gl_cross_guess_normal" ;;
esac
else
@@ -32889,15 +35363,85 @@ printf "%s\n" "#define GNULIB_TEST_SETENV 1" >>confdefs.h
+
+
+ NEED_SETLOCALE_IMPROVED=0
case "$host_os" in
- mingw*) REPLACE_SETLOCALE=1 ;;
+ mingw*) NEED_SETLOCALE_IMPROVED=1 ;;
cygwin*)
case `uname -r` in
- 1.5.*) REPLACE_SETLOCALE=1 ;;
+ 1.5.*) NEED_SETLOCALE_IMPROVED=1 ;;
+ esac
+ ;;
+ *)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether setlocale supports the C locale" >&5
+printf %s "checking whether setlocale supports the C locale... " >&6; }
+if test ${gl_cv_func_setlocale_works+y}
+then :
+ printf %s "(cached) " >&6
+else
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in
+ # Guess no on Android.
+ linux*-android*) gl_cv_func_setlocale_works="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_setlocale_works="guessing yes";;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+int main ()
+{
+ return setlocale (LC_ALL, "C") == NULL;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ gl_cv_func_setlocale_works=yes
+else
+ gl_cv_func_setlocale_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_setlocale_works" >&5
+printf "%s\n" "$gl_cv_func_setlocale_works" >&6; }
+ case "$gl_cv_func_setlocale_works" in
+ *yes) ;;
+ *) NEED_SETLOCALE_IMPROVED=1 ;;
esac
;;
esac
+printf "%s\n" "#define NEED_SETLOCALE_IMPROVED $NEED_SETLOCALE_IMPROVED" >>confdefs.h
+
+
+ NEED_SETLOCALE_MTSAFE=0
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+ NEED_SETLOCALE_MTSAFE=1
+ fi
+
+printf "%s\n" "#define NEED_SETLOCALE_MTSAFE $NEED_SETLOCALE_MTSAFE" >>confdefs.h
+
+
+ if test $NEED_SETLOCALE_IMPROVED = 1 || test $NEED_SETLOCALE_MTSAFE = 1; then
+ REPLACE_SETLOCALE=1
+ fi
+
+ if test $NEED_SETLOCALE_MTSAFE = 1; then
+ LIB_SETLOCALE="$LIB_SETLOCALE_NULL"
+ else
+ LIB_SETLOCALE=
+ fi
+
+
if test $REPLACE_SETLOCALE = 1; then
@@ -33770,7 +36314,7 @@ printf "%s\n" "#define GNULIB_TEST_SIGPROCMASK 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "sleep" "ac_cv_have_decl_sleep" "#include <unistd.h>
+ ac_fn_c_check_decl "$LINENO" "sleep" "ac_cv_have_decl_sleep" "#include <unistd.h>
"
if test "x$ac_cv_have_decl_sleep" = xyes
then :
@@ -33796,10 +36340,12 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_sleep_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_sleep_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_sleep_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_sleep_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_sleep_works="$gl_cross_guess_normal" ;;
esac
else
@@ -34137,8 +36683,8 @@ then :
linux-* | linux) gl_cv_func_symlink_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_symlink_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_symlink_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_symlink_works="$gl_cross_guess_normal" ;;
esac
else
@@ -34438,6 +36984,22 @@ printf "%s\n" "$gl_cv_next_sys_uio_h" >&6; }
+ if test $gl_threads_api = posix; then
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ ac_fn_c_check_func "$LINENO" "pthread_atfork" "ac_cv_func_pthread_atfork"
+if test "x$ac_cv_func_pthread_atfork" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_ATFORK 1" >>confdefs.h
+
+fi
+
+ LIBS="$gl_save_LIBS"
+ fi
+
+
+
+
if test $ac_cv_have_decl_unsetenv = no; then
HAVE_DECL_UNSETENV=0
fi
@@ -34506,8 +37068,8 @@ then :
case "$host_os" in
# Guess yes on glibc systems.
*-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_unsetenv_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_unsetenv_works="$gl_cross_guess_normal" ;;
esac
else
@@ -35169,6 +37731,36 @@ printf "%s\n" "$gt_cv_locale_zh_CN" >&6; }
+ case "$host_os" in
+ mingw*)
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS windows-thread.$ac_objext"
+
+ ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+
+
+
+
+
+
+
+
+ gltests_LIBOBJS="$gltests_LIBOBJS windows-tls.$ac_objext"
+
+ ;;
+ esac
+
@@ -35189,6 +37781,12 @@ printf "%s\n" "$gt_cv_locale_zh_CN" >&6; }
+# Ensure VLAs are not used.
+# Note -Wvla is implicitly added by gl_MANYWARN_ALL_GCC
+
+printf "%s\n" "#define GNULIB_NO_VLA 1" >>confdefs.h
+
+
# The test suite needs to know if we have a working perl.
# FIXME: this is suboptimal. Ideally, we would be able to call gl_PERL
# with an ACTION-IF-NOT-FOUND argument ...
@@ -35711,6 +38309,246 @@ fi
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+
+# Check whether --with-gnu-ld was given.
+if test ${with_gnu_ld+y}
+then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
+ while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
+fi
+if test ${acl_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else
+ if test -z "$LD"; then
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${acl_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes
+ ;;
+*)
+ acl_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+printf %s "checking for shared library run path origin... " >&6; }
+if test ${acl_cv_rpath+y}
+then :
+ printf %s "(cached) " >&6
+else
+
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+printf "%s\n" "$acl_cv_rpath" >&6; }
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ # Check whether --enable-rpath was given.
+if test ${enable_rpath+y}
+then :
+ enableval=$enable_rpath; :
+else
+ enable_rpath=yes
+fi
+
+
+
+
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+printf %s "checking for 64-bit host... " >&6; }
+if test ${gl_cv_solaris_64bit+y}
+then :
+ printf %s "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef _LP64
+sixtyfour bits
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "sixtyfour bits" >/dev/null 2>&1
+then :
+ gl_cv_solaris_64bit=yes
+else
+ gl_cv_solaris_64bit=no
+fi
+rm -rf conftest*
+
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+printf "%s\n" "$gl_cv_solaris_64bit" >&6; }
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+
+
+
@@ -35758,7 +38596,7 @@ then :
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && test ! -d "$withval/$acl_libdirstem"; then
+ && ! test -d "$withval/$acl_libdirstem"; then
additional_libdir="$withval/$acl_libdirstem2"
fi
fi
@@ -36199,6 +39037,7 @@ fi
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
printf %s "checking for CFPreferencesCopyAppValue... " >&6; }
if test ${gt_cv_func_CFPreferencesCopyAppValue+y}
@@ -36235,43 +39074,7 @@ printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-printf %s "checking for CFLocaleCopyCurrent... " >&6; }
-if test ${gt_cv_func_CFLocaleCopyCurrent+y}
-then :
- printf %s "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFLocale.h>
-int
-main (void)
-{
-CFLocaleCopyCurrent();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- gt_cv_func_CFLocaleCopyCurrent=yes
-else
- gt_cv_func_CFLocaleCopyCurrent=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-
-printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
-
- fi
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; }
if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y}
then :
@@ -36309,7 +39112,6 @@ printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
fi
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
- || test $gt_cv_func_CFLocaleCopyCurrent = yes \
|| test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
fi
@@ -36653,6 +39455,7 @@ printf "%s\n" "$LIBICONV" >&6; }
+
use_additional=yes
acl_save_prefix="$prefix"
@@ -36691,7 +39494,7 @@ then :
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && test ! -d "$withval/$acl_libdirstem"; then
+ && ! test -d "$withval/$acl_libdirstem"; then
additional_libdir="$withval/$acl_libdirstem2"
fi
fi
@@ -37107,6 +39910,7 @@ fi
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
printf %s "checking for GNU gettext in libintl... " >&6; }
if eval test \${$gt_func_gnugettext_libintl+y}
@@ -37586,7 +40390,6 @@ fi
nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
nw="$nw -Wsign-conversion" # Too many warnings for now
nw="$nw -Wformat-nonliteral" # who.c and pinky.c strftime uses
- nw="$nw -Wvla" # warnings in gettext.h
nw="$nw -Wswitch-default" # Too many warnings for now
@@ -37717,16 +40520,19 @@ printf "%s\n" "$gl_cv_cc_uninitialized_supported" >&6; }
gl_manywarn_set=
for gl_manywarn_item in -fno-common \
-W \
+ -Wabsolute-value \
-Waddress \
+ -Waddress-of-packed-member \
-Waggressive-loop-optimizations \
-Wall \
- -Wattribute-alias \
+ -Wattribute-warning \
-Wattributes \
-Wbad-function-cast \
-Wbool-compare \
-Wbool-operation \
-Wbuiltin-declaration-mismatch \
-Wbuiltin-macro-redefined \
+ -Wcannot-profile \
-Wcast-align \
-Wcast-align=strict \
-Wcast-function-type \
@@ -37791,6 +40597,7 @@ printf "%s\n" "$gl_cv_cc_uninitialized_supported" >&6; }
-Wmissing-field-initializers \
-Wmissing-include-dirs \
-Wmissing-parameter-type \
+ -Wmissing-profile \
-Wmissing-prototypes \
-Wmultichar \
-Wmultistatement-macros \
@@ -37902,6 +40709,7 @@ fi
printf "%s\n" "$gl_alloc_max" >&6; }
gl_manywarn_set="$gl_manywarn_set -Walloc-size-larger-than=$gl_alloc_max"
gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
+ gl_manywarn_set="$gl_manywarn_set -Wattribute-alias=2"
gl_manywarn_set="$gl_manywarn_set -Wformat-overflow=2"
gl_manywarn_set="$gl_manywarn_set -Wformat-truncation=2"
gl_manywarn_set="$gl_manywarn_set -Wimplicit-fallthrough=5"
@@ -38527,6 +41335,14 @@ if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FAL
as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then
as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -38578,14 +41394,6 @@ if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FAL
as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then
- as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
- as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
gl_libobjs=
gl_ltlibobjs=
@@ -39012,8 +41820,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU sed $as_me 4.7, which was
-generated by GNU Autoconf 2.69.197-b8fd7. Invocation command line was
+This file was extended by GNU sed $as_me 4.8, which was
+generated by GNU Autoconf 2.69.202-d78a. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -39086,11 +41894,11 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-GNU sed config.status 4.7
-configured by $0, generated by GNU Autoconf 2.69.197-b8fd7,
+GNU sed config.status 4.8
+configured by $0, generated by GNU Autoconf 2.69.202-d78a,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2017 Free Software Foundation, Inc.
+Copyright (C) 2020 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
diff --git a/configure.ac b/configure.ac
index 960efb5..ad734e5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-# Copyright (C) 1993-2018 Free Software Foundation, Inc.
+# Copyright (C) 1993-2020 Free Software Foundation, Inc.
# This 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 @@ AC_CONFIG_AUX_DIR(build-aux)
AC_CONFIG_SRCDIR([sed/sed.c])
AM_CONFIG_HEADER(config.h:config_h.in)
AC_PREREQ([2.64])
-AM_INIT_AUTOMAKE([1.11.1 no-dist-gzip dist-xz color-tests parallel-tests
+AM_INIT_AUTOMAKE([1.11.1 dist-xz color-tests parallel-tests
subdir-objects])
AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
AC_CONFIG_MACRO_DIR([m4])
@@ -32,6 +32,10 @@ gl_EARLY
gl_INIT
gl_DISABLE_THREADS
+# Ensure VLAs are not used.
+# Note -Wvla is implicitly added by gl_MANYWARN_ALL_GCC
+AC_DEFINE([GNULIB_NO_VLA], [1], [Define to 1 to disable use of VLAs])
+
# The test suite needs to know if we have a working perl.
# FIXME: this is suboptimal. Ideally, we would be able to call gl_PERL
# with an ACTION-IF-NOT-FOUND argument ...
@@ -242,7 +246,6 @@ if test "$gl_gcc_warnings" = yes; then
nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
nw="$nw -Wsign-conversion" # Too many warnings for now
nw="$nw -Wformat-nonliteral" # who.c and pinky.c strftime uses
- nw="$nw -Wvla" # warnings in gettext.h
nw="$nw -Wswitch-default" # Too many warnings for now
gl_MANYWARN_ALL_GCC([ws])
diff --git a/doc/local.mk b/doc/local.mk
index 3031692..652d945 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/doc/sed.1 b/doc/sed.1
index 2609369..c5ceab3 100644
--- a/doc/sed.1
+++ b/doc/sed.1
@@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
-.TH SED "1" "December 2018" "sed 4.7" "User Commands"
+.TH SED "1" "January 2020" "sed 4.8" "User Commands"
.SH NAME
sed \- stream editor for filtering and transforming text
.SH SYNOPSIS
@@ -389,11 +389,15 @@ of your report if at all possible.
.SH AUTHOR
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
Paolo Bonzini, Jim Meyering, and Assaf Gordon.
+.PP
+This sed program was built with SELinux support.
+SELinux is enabled on this system.
+.PP
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
.SH COPYRIGHT
-Copyright \(co 2018 Free Software Foundation, Inc.
+Copyright \(co 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
.br
This is free software: you are free to change and redistribute it.
diff --git a/doc/sed.info b/doc/sed.info
index 6a93301..45aa845 100644
--- a/doc/sed.info
+++ b/doc/sed.info
@@ -1,8 +1,8 @@
This is sed.info, produced by makeinfo version 6.5 from sed.texi.
-This file documents version 4.7 of GNU 'sed', a stream editor.
+This file documents version 4.8 of GNU 'sed', a stream editor.
- Copyright (C) 1998-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-2020 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -22,9 +22,9 @@ File: sed.info, Node: Top, Next: Introduction, Up: (dir)
GNU 'sed'
*********
-This file documents version 4.7 of GNU 'sed', a stream editor.
+This file documents version 4.8 of GNU 'sed', a stream editor.
- Copyright (C) 1998-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-2020 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
diff --git a/doc/sed.texi b/doc/sed.texi
index 9529525..0c9b9c6 100644
--- a/doc/sed.texi
+++ b/doc/sed.texi
@@ -34,7 +34,7 @@
This file documents version @value{VERSION} of
@value{SSED}, a stream editor.
-Copyright @copyright{} 1998-2018 Free Software Foundation, Inc.
+Copyright @copyright{} 1998--2020 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/stamp-vti b/doc/stamp-vti
index 6b34a0a..ae062b9 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
-@set UPDATED 27 October 2018
-@set UPDATED-MONTH October 2018
-@set EDITION 4.7
-@set VERSION 4.7
+@set UPDATED 1 January 2020
+@set UPDATED-MONTH January 2020
+@set EDITION 4.8
+@set VERSION 4.8
diff --git a/doc/version.texi b/doc/version.texi
index 6b34a0a..ae062b9 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED 27 October 2018
-@set UPDATED-MONTH October 2018
-@set EDITION 4.7
-@set VERSION 4.7
+@set UPDATED 1 January 2020
+@set UPDATED-MONTH January 2020
+@set EDITION 4.8
+@set VERSION 4.8
diff --git a/gnulib-tests/Makefile.in b/gnulib-tests/Makefile.in
index 68e355e..33b40cb 100644
--- a/gnulib-tests/Makefile.in
+++ b/gnulib-tests/Makefile.in
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16a from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -14,7 +14,7 @@
@SET_MAKE@
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 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
@@ -138,29 +138,37 @@ TESTS = test-accept$(EXEEXT) test-set-mode-acl.sh \
test-getdelim$(EXEEXT) test-getdtablesize$(EXEEXT) \
test-getopt-gnu$(EXEEXT) test-getopt-posix$(EXEEXT) \
test-getprogname$(EXEEXT) test-gettimeofday$(EXEEXT) \
- test-ignore-value$(EXEEXT) test-inet_pton$(EXEEXT) \
- test-intprops$(EXEEXT) test-inttypes$(EXEEXT) \
- test-ioctl$(EXEEXT) test-isblank$(EXEEXT) \
- test-langinfo$(EXEEXT) test-limits-h$(EXEEXT) \
- test-link$(EXEEXT) test-listen$(EXEEXT) test-locale$(EXEEXT) \
- test-localeconv$(EXEEXT) test-localename$(EXEEXT) \
- test-lseek.sh test-lstat$(EXEEXT) test-malloca$(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-mbsinit.sh \
- test-memchr$(EXEEXT) test-memrchr$(EXEEXT) test-mkdir$(EXEEXT) \
+ test-hard-locale$(EXEEXT) test-ignore-value$(EXEEXT) \
+ test-inet_pton$(EXEEXT) test-intprops$(EXEEXT) \
+ test-inttypes$(EXEEXT) test-ioctl$(EXEEXT) \
+ test-isblank$(EXEEXT) test-langinfo$(EXEEXT) \
+ test-limits-h$(EXEEXT) test-link$(EXEEXT) test-listen$(EXEEXT) \
+ test-locale$(EXEEXT) test-localeconv$(EXEEXT) \
+ test-localename$(EXEEXT) test-lseek.sh test-lstat$(EXEEXT) \
+ test-malloca$(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-memrchr$(EXEEXT) test-mkdir$(EXEEXT) \
test-nanosleep$(EXEEXT) test-netinet_in$(EXEEXT) \
- test-nl_langinfo.sh test-open$(EXEEXT) test-pathmax$(EXEEXT) \
- test-perror.sh test-perror2$(EXEEXT) test-pipe$(EXEEXT) \
- test-quotearg-simple$(EXEEXT) test-raise$(EXEEXT) \
- test-read-file$(EXEEXT) test-readlink$(EXEEXT) \
- test-regex$(EXEEXT) test-rename$(EXEEXT) test-rmdir$(EXEEXT) \
+ test-nl_langinfo.sh test-nl_langinfo-mt$(EXEEXT) \
+ test-open$(EXEEXT) test-pathmax$(EXEEXT) test-perror.sh \
+ test-perror2$(EXEEXT) test-pipe$(EXEEXT) test-pthread$(EXEEXT) \
+ test-pthread-thread$(EXEEXT) test-pthread_sigmask1$(EXEEXT) \
+ test-pthread_sigmask2$(EXEEXT) test-quotearg-simple$(EXEEXT) \
+ test-raise$(EXEEXT) test-read-file$(EXEEXT) \
+ test-readlink$(EXEEXT) test-regex$(EXEEXT) \
+ test-rename$(EXEEXT) test-rmdir$(EXEEXT) test-sched$(EXEEXT) \
test-select$(EXEEXT) test-select-in.sh test-select-out.sh \
- test-setenv$(EXEEXT) test-setlocale1.sh test-setlocale2.sh \
- test-setsockopt$(EXEEXT) test-sigaction$(EXEEXT) \
- test-signal-h$(EXEEXT) test-sigprocmask$(EXEEXT) \
- test-sleep$(EXEEXT) test-sockets$(EXEEXT) test-stat$(EXEEXT) \
+ test-setenv$(EXEEXT) test-setlocale_null$(EXEEXT) \
+ test-setlocale_null-mt-one$(EXEEXT) \
+ test-setlocale_null-mt-all$(EXEEXT) test-setlocale1.sh \
+ test-setlocale2.sh test-setsockopt$(EXEEXT) \
+ test-sigaction$(EXEEXT) test-signal-h$(EXEEXT) \
+ test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \
+ test-sockets$(EXEEXT) test-stat$(EXEEXT) \
test-stat-time$(EXEEXT) test-stdalign$(EXEEXT) \
test-stdbool$(EXEEXT) test-stddef$(EXEEXT) \
test-stdint$(EXEEXT) test-stdio$(EXEEXT) test-stdlib$(EXEEXT) \
@@ -170,15 +178,17 @@ TESTS = test-accept$(EXEEXT) test-set-mode-acl.sh \
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-unistd$(EXEEXT) test-unsetenv$(EXEEXT) \
test-update-copyright.sh test-vc-list-files-git.sh \
test-vc-list-files-cvs.sh test-verify$(EXEEXT) test-verify.sh \
test-version-etc.sh test-wchar$(EXEEXT) 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-wctype-h$(EXEEXT) \
+ test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh \
+ test-wcrtomb-w32-7.sh test-wctype-h$(EXEEXT) \
test-xalloc-die.sh
-noinst_PROGRAMS = test-localcharset$(EXEEXT)
+noinst_PROGRAMS = current-locale$(EXEEXT) test-localcharset$(EXEEXT)
check_PROGRAMS = test-accept$(EXEEXT) test-set-mode-acl$(EXEEXT) \
test-copy-acl$(EXEEXT) test-sameacls$(EXEEXT) \
test-alignof$(EXEEXT) test-alloca-opt$(EXEEXT) \
@@ -204,29 +214,35 @@ check_PROGRAMS = test-accept$(EXEEXT) test-set-mode-acl$(EXEEXT) \
test-getdelim$(EXEEXT) test-getdtablesize$(EXEEXT) \
test-getopt-gnu$(EXEEXT) test-getopt-posix$(EXEEXT) \
test-getprogname$(EXEEXT) test-gettimeofday$(EXEEXT) \
- test-ignore-value$(EXEEXT) test-inet_pton$(EXEEXT) \
- test-intprops$(EXEEXT) test-inttypes$(EXEEXT) \
- test-ioctl$(EXEEXT) test-isblank$(EXEEXT) \
- test-langinfo$(EXEEXT) test-limits-h$(EXEEXT) \
- test-link$(EXEEXT) test-listen$(EXEEXT) test-locale$(EXEEXT) \
- test-localeconv$(EXEEXT) test-localename$(EXEEXT) \
- test-lseek$(EXEEXT) test-lstat$(EXEEXT) test-malloca$(EXEEXT) \
+ test-hard-locale$(EXEEXT) test-ignore-value$(EXEEXT) \
+ test-inet_pton$(EXEEXT) test-intprops$(EXEEXT) \
+ test-inttypes$(EXEEXT) test-ioctl$(EXEEXT) \
+ test-isblank$(EXEEXT) test-langinfo$(EXEEXT) \
+ test-limits-h$(EXEEXT) test-link$(EXEEXT) test-listen$(EXEEXT) \
+ test-locale$(EXEEXT) test-localeconv$(EXEEXT) \
+ test-localename$(EXEEXT) test-lseek$(EXEEXT) \
+ test-lstat$(EXEEXT) test-malloca$(EXEEXT) \
test-mbrtowc$(EXEEXT) test-mbrtowc-w32$(EXEEXT) \
test-mbsinit$(EXEEXT) test-memchr$(EXEEXT) \
test-memrchr$(EXEEXT) test-mkdir$(EXEEXT) \
test-nanosleep$(EXEEXT) test-netinet_in$(EXEEXT) \
- test-nl_langinfo$(EXEEXT) test-open$(EXEEXT) \
- test-pathmax$(EXEEXT) test-perror$(EXEEXT) \
- test-perror2$(EXEEXT) test-pipe$(EXEEXT) \
- test-quotearg-simple$(EXEEXT) test-raise$(EXEEXT) \
- test-read-file$(EXEEXT) test-readlink$(EXEEXT) \
- test-regex$(EXEEXT) test-rename$(EXEEXT) test-rmdir$(EXEEXT) \
+ test-nl_langinfo$(EXEEXT) test-nl_langinfo-mt$(EXEEXT) \
+ test-open$(EXEEXT) test-pathmax$(EXEEXT) test-perror$(EXEEXT) \
+ test-perror2$(EXEEXT) test-pipe$(EXEEXT) test-pthread$(EXEEXT) \
+ test-pthread-thread$(EXEEXT) test-pthread_sigmask1$(EXEEXT) \
+ test-pthread_sigmask2$(EXEEXT) test-quotearg-simple$(EXEEXT) \
+ test-raise$(EXEEXT) test-read-file$(EXEEXT) \
+ test-readlink$(EXEEXT) test-regex$(EXEEXT) \
+ test-rename$(EXEEXT) test-rmdir$(EXEEXT) test-sched$(EXEEXT) \
test-select$(EXEEXT) test-select-fd$(EXEEXT) \
test-select-stdin$(EXEEXT) test-setenv$(EXEEXT) \
- test-setlocale1$(EXEEXT) test-setlocale2$(EXEEXT) \
- test-setsockopt$(EXEEXT) test-sigaction$(EXEEXT) \
- test-signal-h$(EXEEXT) test-sigprocmask$(EXEEXT) \
- test-sleep$(EXEEXT) test-sockets$(EXEEXT) test-stat$(EXEEXT) \
+ test-setlocale_null$(EXEEXT) \
+ test-setlocale_null-mt-one$(EXEEXT) \
+ test-setlocale_null-mt-all$(EXEEXT) test-setlocale1$(EXEEXT) \
+ test-setlocale2$(EXEEXT) test-setsockopt$(EXEEXT) \
+ test-sigaction$(EXEEXT) test-signal-h$(EXEEXT) \
+ test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \
+ test-sockets$(EXEEXT) test-stat$(EXEEXT) \
test-stat-time$(EXEEXT) test-stdalign$(EXEEXT) \
test-stdbool$(EXEEXT) test-stddef$(EXEEXT) \
test-stdint$(EXEEXT) test-stdio$(EXEEXT) test-stdlib$(EXEEXT) \
@@ -236,6 +252,7 @@ check_PROGRAMS = test-accept$(EXEEXT) test-set-mode-acl$(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-unistd$(EXEEXT) test-unsetenv$(EXEEXT) \
test-verify$(EXEEXT) test-version-etc$(EXEEXT) \
test-wchar$(EXEEXT) test-wcrtomb$(EXEEXT) \
@@ -250,12 +267,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/arpa_inet_h.m4 \
$(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/btowc.m4 \
$(top_srcdir)/m4/builtin-expect.m4 \
- $(top_srcdir)/m4/canonicalize.m4 \
- $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \
- $(top_srcdir)/m4/closedir.m4 $(top_srcdir)/m4/closeout.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/ctype.m4 \
- $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \
- $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/close.m4 \
+ $(top_srcdir)/m4/closedir.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/ctype.m4 $(top_srcdir)/m4/dirent_h.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/environ.m4 \
$(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
@@ -274,8 +289,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/getprogname.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glibc21.m4 \
$(top_srcdir)/m4/gnulib-common.m4 \
- $(top_srcdir)/m4/gnulib-comp.m4 \
- $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
$(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inet_pton.m4 \
$(top_srcdir)/m4/intl-thread-locale.m4 \
$(top_srcdir)/m4/intlmacosx.m4 \
@@ -290,36 +304,41 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/locale-zh.m4 $(top_srcdir)/m4/locale_h.m4 \
$(top_srcdir)/m4/localeconv.m4 $(top_srcdir)/m4/localename.m4 \
$(top_srcdir)/m4/localtime-buffer.m4 $(top_srcdir)/m4/lock.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lseek.m4 \
- $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/malloc.m4 \
- $(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
- $(top_srcdir)/m4/mbrlen.m4 $(top_srcdir)/m4/mbrtowc.m4 \
- $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \
- $(top_srcdir)/m4/mbtowc.m4 $(top_srcdir)/m4/memchr.m4 \
- $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/minmax.m4 \
- $(top_srcdir)/m4/mkdir.m4 $(top_srcdir)/m4/mkostemp.m4 \
- $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/mode_t.m4 \
- $(top_srcdir)/m4/msvc-inval.m4 \
+ $(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/malloca.m4 \
+ $(top_srcdir)/m4/manywarnings.m4 $(top_srcdir)/m4/mbrlen.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbtowc.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memrchr.m4 \
+ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir.m4 \
+ $(top_srcdir)/m4/mkostemp.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ $(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
$(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
$(top_srcdir)/m4/nanosleep.m4 $(top_srcdir)/m4/netinet_in_h.m4 \
$(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/nocrash.m4 \
$(top_srcdir)/m4/non-recursive-gnulib-prefix-hack.m4 \
$(top_srcdir)/m4/obstack.m4 $(top_srcdir)/m4/off_t.m4 \
- $(top_srcdir)/m4/open-cloexec.m4 $(top_srcdir)/m4/open.m4 \
+ $(top_srcdir)/m4/open-cloexec.m4 \
+ $(top_srcdir)/m4/open-slash.m4 $(top_srcdir)/m4/open.m4 \
$(top_srcdir)/m4/opendir.m4 $(top_srcdir)/m4/pathmax.m4 \
- $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/perror.m4 \
+ $(top_srcdir)/m4/pipe.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/pthread-thread.m4 \
+ $(top_srcdir)/m4/pthread_h.m4 \
$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
- $(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quote.m4 \
- $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/raise.m4 \
- $(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/readdir.m4 \
- $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/realloc.m4 \
- $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \
- $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/select.m4 \
+ $(top_srcdir)/m4/pthread_sigmask.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/raise.m4 $(top_srcdir)/m4/read-file.m4 \
+ $(top_srcdir)/m4/readdir.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir.m4 \
+ $(top_srcdir)/m4/sched_h.m4 $(top_srcdir)/m4/select.m4 \
$(top_srcdir)/m4/selinux-context-h.m4 \
$(top_srcdir)/m4/selinux-selinux-h.m4 \
$(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/setlocale.m4 \
+ $(top_srcdir)/m4/setlocale_null.m4 \
$(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \
$(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/sleep.m4 \
$(top_srcdir)/m4/socketlib.m4 $(top_srcdir)/m4/sockets.m4 \
@@ -337,10 +356,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
$(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/sys_uio_h.m4 \
- $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/threadlib.m4 \
- $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/ungetc.m4 \
- $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlocked-io.m4 \
- $(top_srcdir)/m4/version-etc.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/thread.m4 \
+ $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/ungetc.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/version-etc.m4 $(top_srcdir)/m4/visibility.m4 \
$(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
$(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctob.m4 \
@@ -363,16 +383,24 @@ am__v_AR_0 = @echo " AR " $@;
am__v_AR_1 =
libtests_a_AR = $(AR) $(ARFLAGS)
am__DEPENDENCIES_1 =
+am__dirstamp = $(am__leading_dot)dirstamp
am_libtests_a_OBJECTS = cloexec.$(OBJEXT) fd-hook.$(OBJEXT) \
file-has-acl.$(OBJEXT) freading.$(OBJEXT) localename.$(OBJEXT) \
localename-table.$(OBJEXT) read-file.$(OBJEXT) \
- sig-handler.$(OBJEXT) sockets.$(OBJEXT) sys_socket.$(OBJEXT)
+ sig-handler.$(OBJEXT) sockets.$(OBJEXT) sys_socket.$(OBJEXT) \
+ glthread/thread.$(OBJEXT)
libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am_current_locale_OBJECTS = locale.$(OBJEXT)
+current_locale_OBJECTS = $(am_current_locale_OBJECTS)
+current_locale_LDADD = $(LDADD)
+current_locale_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+ $(am__DEPENDENCIES_1)
dfa_match_aux_SOURCES = dfa-match-aux.c
dfa_match_aux_OBJECTS = dfa-match-aux.$(OBJEXT)
am__DEPENDENCIES_2 = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
-dfa_match_aux_DEPENDENCIES = $(am__DEPENDENCIES_2)
+dfa_match_aux_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_accept_SOURCES = test-accept.c
test_accept_OBJECTS = test-accept.$(OBJEXT)
test_accept_DEPENDENCIES = $(am__DEPENDENCIES_2)
@@ -401,24 +429,19 @@ test_bind_OBJECTS = test-bind.$(OBJEXT)
test_bind_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
test_btowc_SOURCES = test-btowc.c
test_btowc_OBJECTS = test-btowc.$(OBJEXT)
-test_btowc_LDADD = $(LDADD)
-test_btowc_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
- $(am__DEPENDENCIES_1)
+test_btowc_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
test_c_ctype_SOURCES = test-c-ctype.c
test_c_ctype_OBJECTS = test-c-ctype.$(OBJEXT)
-test_c_ctype_LDADD = $(LDADD)
-test_c_ctype_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+test_c_ctype_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1)
test_c_strcasecmp_SOURCES = test-c-strcasecmp.c
test_c_strcasecmp_OBJECTS = test-c-strcasecmp.$(OBJEXT)
-test_c_strcasecmp_LDADD = $(LDADD)
-test_c_strcasecmp_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+test_c_strcasecmp_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1)
test_c_strncasecmp_SOURCES = test-c-strncasecmp.c
test_c_strncasecmp_OBJECTS = test-c-strncasecmp.$(OBJEXT)
-test_c_strncasecmp_LDADD = $(LDADD)
-test_c_strncasecmp_DEPENDENCIES = libtests.a ../lib/libsed.a \
- libtests.a $(am__DEPENDENCIES_1)
+test_c_strncasecmp_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
test_canonicalize_lgpl_SOURCES = test-canonicalize-lgpl.c
test_canonicalize_lgpl_OBJECTS = test-canonicalize-lgpl.$(OBJEXT)
test_canonicalize_lgpl_LDADD = $(LDADD)
@@ -446,7 +469,7 @@ test_connect_DEPENDENCIES = $(am__DEPENDENCIES_2) \
test_copy_acl_SOURCES = test-copy-acl.c
test_copy_acl_OBJECTS = test-copy-acl.$(OBJEXT)
test_copy_acl_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_ctype_SOURCES = test-ctype.c
test_ctype_OBJECTS = test-ctype.$(OBJEXT)
test_ctype_LDADD = $(LDADD)
@@ -626,6 +649,10 @@ test_gettimeofday_OBJECTS = test-gettimeofday.$(OBJEXT)
test_gettimeofday_LDADD = $(LDADD)
test_gettimeofday_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
+test_hard_locale_SOURCES = test-hard-locale.c
+test_hard_locale_OBJECTS = test-hard-locale.$(OBJEXT)
+test_hard_locale_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
test_ignore_value_SOURCES = test-ignore-value.c
test_ignore_value_OBJECTS = test-ignore-value.$(OBJEXT)
test_ignore_value_LDADD = $(LDADD)
@@ -674,8 +701,7 @@ test_listen_OBJECTS = test-listen.$(OBJEXT)
test_listen_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_localcharset_SOURCES = test-localcharset.c
test_localcharset_OBJECTS = test-localcharset.$(OBJEXT)
-test_localcharset_LDADD = $(LDADD)
-test_localcharset_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+test_localcharset_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1)
test_locale_SOURCES = test-locale.c
test_locale_OBJECTS = test-locale.$(OBJEXT)
@@ -690,7 +716,7 @@ test_localeconv_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
test_localename_SOURCES = test-localename.c
test_localename_OBJECTS = test-localename.$(OBJEXT)
test_localename_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_lseek_SOURCES = test-lseek.c
test_lseek_OBJECTS = test-lseek.$(OBJEXT)
test_lseek_LDADD = $(LDADD)
@@ -708,9 +734,8 @@ test_malloca_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_mbrtowc_SOURCES = test-mbrtowc.c
test_mbrtowc_OBJECTS = test-mbrtowc.$(OBJEXT)
-test_mbrtowc_LDADD = $(LDADD)
-test_mbrtowc_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
- $(am__DEPENDENCIES_1)
+test_mbrtowc_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_mbrtowc_w32_SOURCES = test-mbrtowc-w32.c
test_mbrtowc_w32_OBJECTS = test-mbrtowc-w32.$(OBJEXT)
test_mbrtowc_w32_LDADD = $(LDADD)
@@ -718,9 +743,8 @@ test_mbrtowc_w32_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_mbsinit_SOURCES = test-mbsinit.c
test_mbsinit_OBJECTS = test-mbsinit.$(OBJEXT)
-test_mbsinit_LDADD = $(LDADD)
-test_mbsinit_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
- $(am__DEPENDENCIES_1)
+test_mbsinit_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_memchr_SOURCES = test-memchr.c
test_memchr_OBJECTS = test-memchr.$(OBJEXT)
test_memchr_LDADD = $(LDADD)
@@ -747,8 +771,12 @@ test_netinet_in_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_nl_langinfo_SOURCES = test-nl_langinfo.c
test_nl_langinfo_OBJECTS = test-nl_langinfo.$(OBJEXT)
-test_nl_langinfo_LDADD = $(LDADD)
-test_nl_langinfo_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+test_nl_langinfo_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
+test_nl_langinfo_mt_SOURCES = test-nl_langinfo-mt.c
+test_nl_langinfo_mt_OBJECTS = test-nl_langinfo-mt.$(OBJEXT)
+test_nl_langinfo_mt_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
test_open_SOURCES = test-open.c
test_open_OBJECTS = test-open.$(OBJEXT)
@@ -775,9 +803,24 @@ test_pipe_OBJECTS = test-pipe.$(OBJEXT)
test_pipe_LDADD = $(LDADD)
test_pipe_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
+test_pthread_SOURCES = test-pthread.c
+test_pthread_OBJECTS = test-pthread.$(OBJEXT)
+test_pthread_LDADD = $(LDADD)
+test_pthread_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+ $(am__DEPENDENCIES_1)
+test_pthread_thread_SOURCES = test-pthread-thread.c
+test_pthread_thread_OBJECTS = test-pthread-thread.$(OBJEXT)
+test_pthread_thread_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_pthread_sigmask1_SOURCES = test-pthread_sigmask1.c
+test_pthread_sigmask1_OBJECTS = test-pthread_sigmask1.$(OBJEXT)
+test_pthread_sigmask1_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_pthread_sigmask2_SOURCES = test-pthread_sigmask2.c
+test_pthread_sigmask2_OBJECTS = test-pthread_sigmask2.$(OBJEXT)
+test_pthread_sigmask2_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_quotearg_simple_SOURCES = test-quotearg-simple.c
test_quotearg_simple_OBJECTS = test-quotearg-simple.$(OBJEXT)
-test_quotearg_simple_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_quotearg_simple_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
test_raise_SOURCES = test-raise.c
test_raise_OBJECTS = test-raise.$(OBJEXT)
test_raise_LDADD = $(LDADD)
@@ -795,7 +838,8 @@ test_readlink_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_regex_SOURCES = test-regex.c
test_regex_OBJECTS = test-regex.$(OBJEXT)
-test_regex_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+test_regex_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_rename_SOURCES = test-rename.c
test_rename_OBJECTS = test-rename.$(OBJEXT)
test_rename_LDADD = $(LDADD)
@@ -809,6 +853,11 @@ test_rmdir_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
test_sameacls_SOURCES = test-sameacls.c
test_sameacls_OBJECTS = test-sameacls.$(OBJEXT)
test_sameacls_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_sched_SOURCES = test-sched.c
+test_sched_OBJECTS = test-sched.$(OBJEXT)
+test_sched_LDADD = $(LDADD)
+test_sched_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_select_SOURCES = test-select.c
test_select_OBJECTS = test-select.$(OBJEXT)
@@ -822,7 +871,7 @@ test_select_stdin_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_set_mode_acl_SOURCES = test-set-mode-acl.c
test_set_mode_acl_OBJECTS = test-set-mode-acl.$(OBJEXT)
test_set_mode_acl_DEPENDENCIES = $(am__DEPENDENCIES_2) \
- $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
test_setenv_SOURCES = test-setenv.c
test_setenv_OBJECTS = test-setenv.$(OBJEXT)
test_setenv_LDADD = $(LDADD)
@@ -830,14 +879,23 @@ test_setenv_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_setlocale1_SOURCES = test-setlocale1.c
test_setlocale1_OBJECTS = test-setlocale1.$(OBJEXT)
-test_setlocale1_LDADD = $(LDADD)
-test_setlocale1_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
- $(am__DEPENDENCIES_1)
+test_setlocale1_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_setlocale2_SOURCES = test-setlocale2.c
test_setlocale2_OBJECTS = test-setlocale2.$(OBJEXT)
-test_setlocale2_LDADD = $(LDADD)
-test_setlocale2_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
- $(am__DEPENDENCIES_1)
+test_setlocale2_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_setlocale_null_SOURCES = test-setlocale_null.c
+test_setlocale_null_OBJECTS = test-setlocale_null.$(OBJEXT)
+test_setlocale_null_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_setlocale_null_mt_all_SOURCES = test-setlocale_null-mt-all.c
+test_setlocale_null_mt_all_OBJECTS = \
+ test-setlocale_null-mt-all.$(OBJEXT)
+test_setlocale_null_mt_all_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_setlocale_null_mt_one_SOURCES = test-setlocale_null-mt-one.c
+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_setsockopt_SOURCES = test-setsockopt.c
test_setsockopt_OBJECTS = test-setsockopt.$(OBJEXT)
test_setsockopt_DEPENDENCIES = $(am__DEPENDENCIES_2)
@@ -961,6 +1019,12 @@ test_sys_uio_OBJECTS = test-sys_uio.$(OBJEXT)
test_sys_uio_LDADD = $(LDADD)
test_sys_uio_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
+test_thread_create_SOURCES = test-thread_create.c
+test_thread_create_OBJECTS = test-thread_create.$(OBJEXT)
+test_thread_create_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_thread_self_SOURCES = test-thread_self.c
+test_thread_self_OBJECTS = test-thread_self.$(OBJEXT)
+test_thread_self_DEPENDENCIES = $(am__DEPENDENCIES_2)
test_time_SOURCES = test-time.c
test_time_OBJECTS = test-time.$(OBJEXT)
test_time_LDADD = $(LDADD)
@@ -996,8 +1060,7 @@ test_wchar_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
$(am__DEPENDENCIES_1)
test_wcrtomb_SOURCES = test-wcrtomb.c
test_wcrtomb_OBJECTS = test-wcrtomb.$(OBJEXT)
-test_wcrtomb_LDADD = $(LDADD)
-test_wcrtomb_DEPENDENCIES = libtests.a ../lib/libsed.a libtests.a \
+test_wcrtomb_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1)
test_wcrtomb_w32_SOURCES = test-wcrtomb-w32.c
test_wcrtomb_w32_OBJECTS = test-wcrtomb-w32.$(OBJEXT)
@@ -1041,24 +1104,26 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/bind.Po \
./$(DEPDIR)/getdtablesize.Po ./$(DEPDIR)/getpagesize.Po \
./$(DEPDIR)/inet_pton.Po ./$(DEPDIR)/ioctl.Po \
./$(DEPDIR)/link.Po ./$(DEPDIR)/listen.Po \
- ./$(DEPDIR)/localename-table.Po ./$(DEPDIR)/localename.Po \
- ./$(DEPDIR)/lseek.Po ./$(DEPDIR)/nanosleep.Po \
- ./$(DEPDIR)/open.Po ./$(DEPDIR)/opendir.Po \
- ./$(DEPDIR)/perror.Po ./$(DEPDIR)/pipe.Po \
- ./$(DEPDIR)/putenv.Po ./$(DEPDIR)/raise.Po \
- ./$(DEPDIR)/read-file.Po ./$(DEPDIR)/readdir.Po \
- ./$(DEPDIR)/realloc.Po ./$(DEPDIR)/select.Po \
- ./$(DEPDIR)/setenv.Po ./$(DEPDIR)/setlocale.Po \
- ./$(DEPDIR)/setsockopt.Po ./$(DEPDIR)/sig-handler.Po \
- ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigprocmask.Po \
- ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/socket.Po \
- ./$(DEPDIR)/sockets.Po ./$(DEPDIR)/strdup.Po \
- ./$(DEPDIR)/strerror_r.Po ./$(DEPDIR)/symlink.Po \
- ./$(DEPDIR)/sys_socket.Po ./$(DEPDIR)/test-accept.Po \
- ./$(DEPDIR)/test-alignof.Po ./$(DEPDIR)/test-alloca-opt.Po \
- ./$(DEPDIR)/test-arpa_inet.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)/locale.Po ./$(DEPDIR)/localename-table.Po \
+ ./$(DEPDIR)/localename.Po ./$(DEPDIR)/lseek.Po \
+ ./$(DEPDIR)/nanosleep.Po ./$(DEPDIR)/open.Po \
+ ./$(DEPDIR)/opendir.Po ./$(DEPDIR)/perror.Po \
+ ./$(DEPDIR)/pipe.Po ./$(DEPDIR)/pthread-thread.Po \
+ ./$(DEPDIR)/pthread_sigmask.Po ./$(DEPDIR)/putenv.Po \
+ ./$(DEPDIR)/raise.Po ./$(DEPDIR)/read-file.Po \
+ ./$(DEPDIR)/readdir.Po ./$(DEPDIR)/realloc.Po \
+ ./$(DEPDIR)/select.Po ./$(DEPDIR)/setenv.Po \
+ ./$(DEPDIR)/setlocale.Po ./$(DEPDIR)/setsockopt.Po \
+ ./$(DEPDIR)/sig-handler.Po ./$(DEPDIR)/sigaction.Po \
+ ./$(DEPDIR)/sigprocmask.Po ./$(DEPDIR)/sleep.Po \
+ ./$(DEPDIR)/socket.Po ./$(DEPDIR)/sockets.Po \
+ ./$(DEPDIR)/strdup.Po ./$(DEPDIR)/strerror_r.Po \
+ ./$(DEPDIR)/symlink.Po ./$(DEPDIR)/sys_socket.Po \
+ ./$(DEPDIR)/test-accept.Po ./$(DEPDIR)/test-alignof.Po \
+ ./$(DEPDIR)/test-alloca-opt.Po ./$(DEPDIR)/test-arpa_inet.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-c-strncasecmp.Po \
./$(DEPDIR)/test-canonicalize-lgpl.Po \
./$(DEPDIR)/test-chdir.Po ./$(DEPDIR)/test-cloexec.Po \
@@ -1084,6 +1149,7 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/bind.Po \
./$(DEPDIR)/test-getopt-posix.Po \
./$(DEPDIR)/test-getprogname.Po \
./$(DEPDIR)/test-gettimeofday.Po \
+ ./$(DEPDIR)/test-hard-locale.Po \
./$(DEPDIR)/test-ignore-value.Po ./$(DEPDIR)/test-inet_pton.Po \
./$(DEPDIR)/test-intprops.Po ./$(DEPDIR)/test-inttypes.Po \
./$(DEPDIR)/test-ioctl.Po ./$(DEPDIR)/test-isblank.Po \
@@ -1096,17 +1162,25 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/bind.Po \
./$(DEPDIR)/test-mbrtowc.Po ./$(DEPDIR)/test-mbsinit.Po \
./$(DEPDIR)/test-memchr.Po ./$(DEPDIR)/test-memrchr.Po \
./$(DEPDIR)/test-mkdir.Po ./$(DEPDIR)/test-nanosleep.Po \
- ./$(DEPDIR)/test-netinet_in.Po ./$(DEPDIR)/test-nl_langinfo.Po \
- ./$(DEPDIR)/test-open.Po ./$(DEPDIR)/test-pathmax.Po \
- ./$(DEPDIR)/test-perror.Po ./$(DEPDIR)/test-perror2.Po \
- ./$(DEPDIR)/test-pipe.Po ./$(DEPDIR)/test-quotearg-simple.Po \
- ./$(DEPDIR)/test-raise.Po ./$(DEPDIR)/test-read-file.Po \
- ./$(DEPDIR)/test-readlink.Po ./$(DEPDIR)/test-regex.Po \
- ./$(DEPDIR)/test-rename.Po ./$(DEPDIR)/test-rmdir.Po \
- ./$(DEPDIR)/test-sameacls.Po ./$(DEPDIR)/test-select-fd.Po \
+ ./$(DEPDIR)/test-netinet_in.Po \
+ ./$(DEPDIR)/test-nl_langinfo-mt.Po \
+ ./$(DEPDIR)/test-nl_langinfo.Po ./$(DEPDIR)/test-open.Po \
+ ./$(DEPDIR)/test-pathmax.Po ./$(DEPDIR)/test-perror.Po \
+ ./$(DEPDIR)/test-perror2.Po ./$(DEPDIR)/test-pipe.Po \
+ ./$(DEPDIR)/test-pthread-thread.Po ./$(DEPDIR)/test-pthread.Po \
+ ./$(DEPDIR)/test-pthread_sigmask1.Po \
+ ./$(DEPDIR)/test-pthread_sigmask2.Po \
+ ./$(DEPDIR)/test-quotearg-simple.Po ./$(DEPDIR)/test-raise.Po \
+ ./$(DEPDIR)/test-read-file.Po ./$(DEPDIR)/test-readlink.Po \
+ ./$(DEPDIR)/test-regex.Po ./$(DEPDIR)/test-rename.Po \
+ ./$(DEPDIR)/test-rmdir.Po ./$(DEPDIR)/test-sameacls.Po \
+ ./$(DEPDIR)/test-sched.Po ./$(DEPDIR)/test-select-fd.Po \
./$(DEPDIR)/test-select-stdin.Po ./$(DEPDIR)/test-select.Po \
./$(DEPDIR)/test-set-mode-acl.Po ./$(DEPDIR)/test-setenv.Po \
./$(DEPDIR)/test-setlocale1.Po ./$(DEPDIR)/test-setlocale2.Po \
+ ./$(DEPDIR)/test-setlocale_null-mt-all.Po \
+ ./$(DEPDIR)/test-setlocale_null-mt-one.Po \
+ ./$(DEPDIR)/test-setlocale_null.Po \
./$(DEPDIR)/test-setsockopt.Po ./$(DEPDIR)/test-sigaction.Po \
./$(DEPDIR)/test-signal-h.Po ./$(DEPDIR)/test-sigprocmask.Po \
./$(DEPDIR)/test-sleep.Po ./$(DEPDIR)/test-sockets.Po \
@@ -1120,12 +1194,15 @@ am__depfiles_remade = ./$(DEPDIR)/accept.Po ./$(DEPDIR)/bind.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-time.Po ./$(DEPDIR)/test-unistd.Po \
- ./$(DEPDIR)/test-unsetenv.Po ./$(DEPDIR)/test-verify-try.Po \
- ./$(DEPDIR)/test-verify.Po ./$(DEPDIR)/test-version-etc.Po \
- ./$(DEPDIR)/test-wchar.Po ./$(DEPDIR)/test-wcrtomb-w32.Po \
- ./$(DEPDIR)/test-wcrtomb.Po ./$(DEPDIR)/test-wctype-h.Po \
- ./$(DEPDIR)/test-xalloc-die.Po ./$(DEPDIR)/unsetenv.Po
+ ./$(DEPDIR)/test-thread_create.Po \
+ ./$(DEPDIR)/test-thread_self.Po ./$(DEPDIR)/test-time.Po \
+ ./$(DEPDIR)/test-unistd.Po ./$(DEPDIR)/test-unsetenv.Po \
+ ./$(DEPDIR)/test-verify-try.Po ./$(DEPDIR)/test-verify.Po \
+ ./$(DEPDIR)/test-version-etc.Po ./$(DEPDIR)/test-wchar.Po \
+ ./$(DEPDIR)/test-wcrtomb-w32.Po ./$(DEPDIR)/test-wcrtomb.Po \
+ ./$(DEPDIR)/test-wctype-h.Po ./$(DEPDIR)/test-xalloc-die.Po \
+ ./$(DEPDIR)/unsetenv.Po ./$(DEPDIR)/windows-thread.Po \
+ ./$(DEPDIR)/windows-tls.Po glthread/$(DEPDIR)/thread.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -1140,9 +1217,10 @@ 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) \
- dfa-match-aux.c test-accept.c test-alignof.c test-alloca-opt.c \
- test-arpa_inet.c test-binary-io.c test-bind.c test-btowc.c \
- test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \
+ $(current_locale_SOURCES) dfa-match-aux.c test-accept.c \
+ test-alignof.c test-alloca-opt.c test-arpa_inet.c \
+ test-binary-io.c test-bind.c test-btowc.c test-c-ctype.c \
+ test-c-strcasecmp.c test-c-strncasecmp.c \
test-canonicalize-lgpl.c test-chdir.c test-cloexec.c \
test-close.c test-connect.c test-copy-acl.c test-ctype.c \
test-dirent.c test-dup2.c test-environ.c test-errno.c \
@@ -1155,19 +1233,23 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
test-fwrite.c test-fwriting.c test-getcwd-lgpl.c \
test-getdelim.c test-getdtablesize.c test-getopt-gnu.c \
test-getopt-posix.c test-getprogname.c test-gettimeofday.c \
- test-ignore-value.c test-inet_pton.c test-intprops.c \
- test-inttypes.c test-ioctl.c test-isblank.c test-langinfo.c \
- test-limits-h.c test-link.c test-listen.c test-localcharset.c \
- test-locale.c test-localeconv.c test-localename.c test-lseek.c \
- test-lstat.c test-malloca.c test-mbrtowc.c test-mbrtowc-w32.c \
- test-mbsinit.c test-memchr.c test-memrchr.c test-mkdir.c \
- test-nanosleep.c test-netinet_in.c test-nl_langinfo.c \
- test-open.c test-pathmax.c test-perror.c test-perror2.c \
- test-pipe.c test-quotearg-simple.c test-raise.c \
+ test-hard-locale.c test-ignore-value.c test-inet_pton.c \
+ test-intprops.c test-inttypes.c test-ioctl.c test-isblank.c \
+ test-langinfo.c test-limits-h.c test-link.c test-listen.c \
+ test-localcharset.c test-locale.c test-localeconv.c \
+ test-localename.c test-lseek.c test-lstat.c test-malloca.c \
+ test-mbrtowc.c test-mbrtowc-w32.c test-mbsinit.c test-memchr.c \
+ test-memrchr.c test-mkdir.c test-nanosleep.c test-netinet_in.c \
+ test-nl_langinfo.c test-nl_langinfo-mt.c test-open.c \
+ test-pathmax.c test-perror.c test-perror2.c test-pipe.c \
+ test-pthread.c test-pthread-thread.c test-pthread_sigmask1.c \
+ test-pthread_sigmask2.c test-quotearg-simple.c test-raise.c \
test-read-file.c test-readlink.c test-regex.c test-rename.c \
- test-rmdir.c test-sameacls.c test-select.c test-select-fd.c \
- test-select-stdin.c test-set-mode-acl.c test-setenv.c \
- test-setlocale1.c test-setlocale2.c test-setsockopt.c \
+ test-rmdir.c test-sameacls.c test-sched.c test-select.c \
+ test-select-fd.c test-select-stdin.c test-set-mode-acl.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-sigaction.c test-signal-h.c test-sigprocmask.c \
test-sleep.c test-sockets.c test-stat.c test-stat-time.c \
test-stdalign.c test-stdbool.c test-stddef.c test-stdint.c \
@@ -1175,14 +1257,16 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
test-string.c test-strverscmp.c test-symlink.c \
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-time.c test-unistd.c test-unsetenv.c \
- test-verify.c test-verify-try.c test-version-etc.c \
- test-wchar.c test-wcrtomb.c test-wcrtomb-w32.c test-wctype-h.c \
+ test-sys_uio.c test-thread_create.c test-thread_self.c \
+ test-time.c test-unistd.c test-unsetenv.c test-verify.c \
+ test-verify-try.c test-version-etc.c test-wchar.c \
+ test-wcrtomb.c test-wcrtomb-w32.c test-wctype-h.c \
test-xalloc-die.c
DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
- dfa-match-aux.c test-accept.c test-alignof.c test-alloca-opt.c \
- test-arpa_inet.c test-binary-io.c test-bind.c test-btowc.c \
- test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \
+ $(current_locale_SOURCES) dfa-match-aux.c test-accept.c \
+ test-alignof.c test-alloca-opt.c test-arpa_inet.c \
+ test-binary-io.c test-bind.c test-btowc.c test-c-ctype.c \
+ test-c-strcasecmp.c test-c-strncasecmp.c \
test-canonicalize-lgpl.c test-chdir.c test-cloexec.c \
test-close.c test-connect.c test-copy-acl.c test-ctype.c \
test-dirent.c test-dup2.c test-environ.c test-errno.c \
@@ -1195,19 +1279,23 @@ DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
test-fwrite.c test-fwriting.c test-getcwd-lgpl.c \
test-getdelim.c test-getdtablesize.c test-getopt-gnu.c \
test-getopt-posix.c test-getprogname.c test-gettimeofday.c \
- test-ignore-value.c test-inet_pton.c test-intprops.c \
- test-inttypes.c test-ioctl.c test-isblank.c test-langinfo.c \
- test-limits-h.c test-link.c test-listen.c test-localcharset.c \
- test-locale.c test-localeconv.c test-localename.c test-lseek.c \
- test-lstat.c test-malloca.c test-mbrtowc.c test-mbrtowc-w32.c \
- test-mbsinit.c test-memchr.c test-memrchr.c test-mkdir.c \
- test-nanosleep.c test-netinet_in.c test-nl_langinfo.c \
- test-open.c test-pathmax.c test-perror.c test-perror2.c \
- test-pipe.c test-quotearg-simple.c test-raise.c \
+ test-hard-locale.c test-ignore-value.c test-inet_pton.c \
+ test-intprops.c test-inttypes.c test-ioctl.c test-isblank.c \
+ test-langinfo.c test-limits-h.c test-link.c test-listen.c \
+ test-localcharset.c test-locale.c test-localeconv.c \
+ test-localename.c test-lseek.c test-lstat.c test-malloca.c \
+ test-mbrtowc.c test-mbrtowc-w32.c test-mbsinit.c test-memchr.c \
+ test-memrchr.c test-mkdir.c test-nanosleep.c test-netinet_in.c \
+ test-nl_langinfo.c test-nl_langinfo-mt.c test-open.c \
+ test-pathmax.c test-perror.c test-perror2.c test-pipe.c \
+ test-pthread.c test-pthread-thread.c test-pthread_sigmask1.c \
+ test-pthread_sigmask2.c test-quotearg-simple.c test-raise.c \
test-read-file.c test-readlink.c test-regex.c test-rename.c \
- test-rmdir.c test-sameacls.c test-select.c test-select-fd.c \
- test-select-stdin.c test-set-mode-acl.c test-setenv.c \
- test-setlocale1.c test-setlocale2.c test-setsockopt.c \
+ test-rmdir.c test-sameacls.c test-sched.c test-select.c \
+ test-select-fd.c test-select-stdin.c test-set-mode-acl.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-sigaction.c test-signal-h.c test-sigprocmask.c \
test-sleep.c test-sockets.c test-stat.c test-stat-time.c \
test-stdalign.c test-stdbool.c test-stddef.c test-stdint.c \
@@ -1215,9 +1303,10 @@ DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
test-string.c test-strverscmp.c test-symlink.c \
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-time.c test-unistd.c test-unsetenv.c \
- test-verify.c test-verify-try.c test-version-etc.c \
- test-wchar.c test-wcrtomb.c test-wcrtomb-w32.c test-wctype-h.c \
+ test-sys_uio.c test-thread_create.c test-thread_self.c \
+ test-time.c test-unistd.c test-unsetenv.c test-verify.c \
+ test-verify-try.c test-version-etc.c test-wchar.c \
+ test-wcrtomb.c test-wcrtomb-w32.c test-wctype-h.c \
test-xalloc-die.c
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
@@ -1513,6 +1602,7 @@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
CONFIG_INCLUDE = @CONFIG_INCLUDE@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
@@ -1539,6 +1629,7 @@ GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GNULIB_ACCEPT = @GNULIB_ACCEPT@
GNULIB_ACCEPT4 = @GNULIB_ACCEPT4@
+GNULIB_ACCESS = @GNULIB_ACCESS@
GNULIB_ALPHASORT = @GNULIB_ALPHASORT@
GNULIB_ATOLL = @GNULIB_ATOLL@
GNULIB_BIND = @GNULIB_BIND@
@@ -1550,6 +1641,8 @@ GNULIB_CHOWN = @GNULIB_CHOWN@
GNULIB_CLOSE = @GNULIB_CLOSE@
GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@
GNULIB_CONNECT = @GNULIB_CONNECT@
+GNULIB_COPY_FILE_RANGE = @GNULIB_COPY_FILE_RANGE@
+GNULIB_CREAT = @GNULIB_CREAT@
GNULIB_CTIME = @GNULIB_CTIME@
GNULIB_DIRFD = @GNULIB_DIRFD@
GNULIB_DPRINTF = @GNULIB_DPRINTF@
@@ -1605,6 +1698,7 @@ GNULIB_GETLINE = @GNULIB_GETLINE@
GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETOPT_POSIX = @GNULIB_GETOPT_POSIX@
GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
GNULIB_GETPASS = @GNULIB_GETPASS@
GNULIB_GETPEERNAME = @GNULIB_GETPEERNAME@
@@ -1691,7 +1785,15 @@ GNULIB_PREAD = @GNULIB_PREAD@
GNULIB_PRINTF = @GNULIB_PRINTF@
GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
GNULIB_PSELECT = @GNULIB_PSELECT@
+GNULIB_PTHREAD_COND = @GNULIB_PTHREAD_COND@
+GNULIB_PTHREAD_MUTEX = @GNULIB_PTHREAD_MUTEX@
+GNULIB_PTHREAD_MUTEX_TIMEDLOCK = @GNULIB_PTHREAD_MUTEX_TIMEDLOCK@
+GNULIB_PTHREAD_ONCE = @GNULIB_PTHREAD_ONCE@
+GNULIB_PTHREAD_RWLOCK = @GNULIB_PTHREAD_RWLOCK@
GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@
+GNULIB_PTHREAD_SPIN = @GNULIB_PTHREAD_SPIN@
+GNULIB_PTHREAD_THREAD = @GNULIB_PTHREAD_THREAD@
+GNULIB_PTHREAD_TSS = @GNULIB_PTHREAD_TSS@
GNULIB_PTSNAME = @GNULIB_PTSNAME@
GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@
GNULIB_PUTC = @GNULIB_PUTC@
@@ -1721,6 +1823,7 @@ GNULIB_RMDIR = @GNULIB_RMDIR@
GNULIB_RPMATCH = @GNULIB_RPMATCH@
GNULIB_SCANDIR = @GNULIB_SCANDIR@
GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SCHED_YIELD = @GNULIB_SCHED_YIELD@
GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
GNULIB_SELECT = @GNULIB_SELECT@
GNULIB_SEND = @GNULIB_SEND@
@@ -1728,6 +1831,7 @@ GNULIB_SENDTO = @GNULIB_SENDTO@
GNULIB_SETENV = @GNULIB_SETENV@
GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
GNULIB_SETLOCALE = @GNULIB_SETLOCALE@
+GNULIB_SETLOCALE_NULL = @GNULIB_SETLOCALE_NULL@
GNULIB_SETSOCKOPT = @GNULIB_SETSOCKOPT@
GNULIB_SHUTDOWN = @GNULIB_SHUTDOWN@
GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -1759,6 +1863,7 @@ GNULIB_STRSTR = @GNULIB_STRSTR@
GNULIB_STRTOD = @GNULIB_STRTOD@
GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLD = @GNULIB_STRTOLD@
GNULIB_STRTOLL = @GNULIB_STRTOLL@
GNULIB_STRTOULL = @GNULIB_STRTOULL@
GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
@@ -1834,6 +1939,7 @@ GNULIB_WRITE = @GNULIB_WRITE@
GNULIB__EXIT = @GNULIB__EXIT@
GREP = @GREP@
HAVE_ACCEPT4 = @HAVE_ACCEPT4@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
HAVE_ALPHASORT = @HAVE_ALPHASORT@
HAVE_ARPA_INET_H = @HAVE_ARPA_INET_H@
HAVE_ATOLL = @HAVE_ATOLL@
@@ -1842,6 +1948,7 @@ HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
HAVE_CHOWN = @HAVE_CHOWN@
HAVE_CLOSEDIR = @HAVE_CLOSEDIR@
+HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@
HAVE_CRTDEFS_H = @HAVE_CRTDEFS_H@
HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@
HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
@@ -1922,6 +2029,7 @@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
HAVE_GRANTPT = @HAVE_GRANTPT@
HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@
+HAVE_INITSTATE = @HAVE_INITSTATE@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_ISBLANK = @HAVE_ISBLANK@
HAVE_ISWBLANK = @HAVE_ISWBLANK@
@@ -1936,7 +2044,6 @@ HAVE_LCHMOD = @HAVE_LCHMOD@
HAVE_LCHOWN = @HAVE_LCHOWN@
HAVE_LINK = @HAVE_LINK@
HAVE_LINKAT = @HAVE_LINKAT@
-HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_LSTAT = @HAVE_LSTAT@
HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
HAVE_MBRLEN = @HAVE_MBRLEN@
@@ -1945,6 +2052,7 @@ HAVE_MBSINIT = @HAVE_MBSINIT@
HAVE_MBSLEN = @HAVE_MBSLEN@
HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MBTOWC = @HAVE_MBTOWC@
HAVE_MEMCHR = @HAVE_MEMCHR@
HAVE_MEMPCPY = @HAVE_MEMPCPY@
HAVE_MKDIRAT = @HAVE_MKDIRAT@
@@ -1973,7 +2081,65 @@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@
HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@
HAVE_PREAD = @HAVE_PREAD@
HAVE_PSELECT = @HAVE_PSELECT@
+HAVE_PTHREAD_ATTR_DESTROY = @HAVE_PTHREAD_ATTR_DESTROY@
+HAVE_PTHREAD_ATTR_GETDETACHSTATE = @HAVE_PTHREAD_ATTR_GETDETACHSTATE@
+HAVE_PTHREAD_ATTR_INIT = @HAVE_PTHREAD_ATTR_INIT@
+HAVE_PTHREAD_ATTR_SETDETACHSTATE = @HAVE_PTHREAD_ATTR_SETDETACHSTATE@
+HAVE_PTHREAD_CONDATTR_DESTROY = @HAVE_PTHREAD_CONDATTR_DESTROY@
+HAVE_PTHREAD_CONDATTR_INIT = @HAVE_PTHREAD_CONDATTR_INIT@
+HAVE_PTHREAD_COND_BROADCAST = @HAVE_PTHREAD_COND_BROADCAST@
+HAVE_PTHREAD_COND_DESTROY = @HAVE_PTHREAD_COND_DESTROY@
+HAVE_PTHREAD_COND_INIT = @HAVE_PTHREAD_COND_INIT@
+HAVE_PTHREAD_COND_SIGNAL = @HAVE_PTHREAD_COND_SIGNAL@
+HAVE_PTHREAD_COND_TIMEDWAIT = @HAVE_PTHREAD_COND_TIMEDWAIT@
+HAVE_PTHREAD_COND_WAIT = @HAVE_PTHREAD_COND_WAIT@
+HAVE_PTHREAD_CREATE = @HAVE_PTHREAD_CREATE@
+HAVE_PTHREAD_CREATE_DETACHED = @HAVE_PTHREAD_CREATE_DETACHED@
+HAVE_PTHREAD_DETACH = @HAVE_PTHREAD_DETACH@
+HAVE_PTHREAD_EQUAL = @HAVE_PTHREAD_EQUAL@
+HAVE_PTHREAD_EXIT = @HAVE_PTHREAD_EXIT@
+HAVE_PTHREAD_GETSPECIFIC = @HAVE_PTHREAD_GETSPECIFIC@
+HAVE_PTHREAD_H = @HAVE_PTHREAD_H@
+HAVE_PTHREAD_JOIN = @HAVE_PTHREAD_JOIN@
+HAVE_PTHREAD_KEY_CREATE = @HAVE_PTHREAD_KEY_CREATE@
+HAVE_PTHREAD_KEY_DELETE = @HAVE_PTHREAD_KEY_DELETE@
+HAVE_PTHREAD_MUTEXATTR_DESTROY = @HAVE_PTHREAD_MUTEXATTR_DESTROY@
+HAVE_PTHREAD_MUTEXATTR_GETROBUST = @HAVE_PTHREAD_MUTEXATTR_GETROBUST@
+HAVE_PTHREAD_MUTEXATTR_GETTYPE = @HAVE_PTHREAD_MUTEXATTR_GETTYPE@
+HAVE_PTHREAD_MUTEXATTR_INIT = @HAVE_PTHREAD_MUTEXATTR_INIT@
+HAVE_PTHREAD_MUTEXATTR_SETROBUST = @HAVE_PTHREAD_MUTEXATTR_SETROBUST@
+HAVE_PTHREAD_MUTEXATTR_SETTYPE = @HAVE_PTHREAD_MUTEXATTR_SETTYPE@
+HAVE_PTHREAD_MUTEX_DESTROY = @HAVE_PTHREAD_MUTEX_DESTROY@
+HAVE_PTHREAD_MUTEX_INIT = @HAVE_PTHREAD_MUTEX_INIT@
+HAVE_PTHREAD_MUTEX_LOCK = @HAVE_PTHREAD_MUTEX_LOCK@
+HAVE_PTHREAD_MUTEX_RECURSIVE = @HAVE_PTHREAD_MUTEX_RECURSIVE@
+HAVE_PTHREAD_MUTEX_ROBUST = @HAVE_PTHREAD_MUTEX_ROBUST@
+HAVE_PTHREAD_MUTEX_TIMEDLOCK = @HAVE_PTHREAD_MUTEX_TIMEDLOCK@
+HAVE_PTHREAD_MUTEX_TRYLOCK = @HAVE_PTHREAD_MUTEX_TRYLOCK@
+HAVE_PTHREAD_MUTEX_UNLOCK = @HAVE_PTHREAD_MUTEX_UNLOCK@
+HAVE_PTHREAD_ONCE = @HAVE_PTHREAD_ONCE@
+HAVE_PTHREAD_PROCESS_SHARED = @HAVE_PTHREAD_PROCESS_SHARED@
+HAVE_PTHREAD_RWLOCKATTR_DESTROY = @HAVE_PTHREAD_RWLOCKATTR_DESTROY@
+HAVE_PTHREAD_RWLOCKATTR_INIT = @HAVE_PTHREAD_RWLOCKATTR_INIT@
+HAVE_PTHREAD_RWLOCK_DESTROY = @HAVE_PTHREAD_RWLOCK_DESTROY@
+HAVE_PTHREAD_RWLOCK_INIT = @HAVE_PTHREAD_RWLOCK_INIT@
+HAVE_PTHREAD_RWLOCK_RDLOCK = @HAVE_PTHREAD_RWLOCK_RDLOCK@
+HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK = @HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK@
+HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK = @HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK@
+HAVE_PTHREAD_RWLOCK_TRYRDLOCK = @HAVE_PTHREAD_RWLOCK_TRYRDLOCK@
+HAVE_PTHREAD_RWLOCK_TRYWRLOCK = @HAVE_PTHREAD_RWLOCK_TRYWRLOCK@
+HAVE_PTHREAD_RWLOCK_UNLOCK = @HAVE_PTHREAD_RWLOCK_UNLOCK@
+HAVE_PTHREAD_RWLOCK_WRLOCK = @HAVE_PTHREAD_RWLOCK_WRLOCK@
+HAVE_PTHREAD_SELF = @HAVE_PTHREAD_SELF@
+HAVE_PTHREAD_SETSPECIFIC = @HAVE_PTHREAD_SETSPECIFIC@
HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@
+HAVE_PTHREAD_SPINLOCK_T = @HAVE_PTHREAD_SPINLOCK_T@
+HAVE_PTHREAD_SPIN_DESTROY = @HAVE_PTHREAD_SPIN_DESTROY@
+HAVE_PTHREAD_SPIN_INIT = @HAVE_PTHREAD_SPIN_INIT@
+HAVE_PTHREAD_SPIN_LOCK = @HAVE_PTHREAD_SPIN_LOCK@
+HAVE_PTHREAD_SPIN_TRYLOCK = @HAVE_PTHREAD_SPIN_TRYLOCK@
+HAVE_PTHREAD_SPIN_UNLOCK = @HAVE_PTHREAD_SPIN_UNLOCK@
+HAVE_PTHREAD_T = @HAVE_PTHREAD_T@
HAVE_PTSNAME = @HAVE_PTSNAME@
HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
HAVE_PWRITE = @HAVE_PWRITE@
@@ -1993,9 +2159,12 @@ HAVE_REWINDDIR = @HAVE_REWINDDIR@
HAVE_RPMATCH = @HAVE_RPMATCH@
HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@
HAVE_SCANDIR = @HAVE_SCANDIR@
+HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SCHED_YIELD = @HAVE_SCHED_YIELD@
HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
HAVE_SETENV = @HAVE_SETENV@
HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
+HAVE_SETSTATE = @HAVE_SETSTATE@
HAVE_SIGACTION = @HAVE_SIGACTION@
HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@
HAVE_SIGINFO_T = @HAVE_SIGINFO_T@
@@ -2013,9 +2182,11 @@ HAVE_STRPBRK = @HAVE_STRPBRK@
HAVE_STRPTIME = @HAVE_STRPTIME@
HAVE_STRSEP = @HAVE_STRSEP@
HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLD = @HAVE_STRTOLD@
HAVE_STRTOLL = @HAVE_STRTOLL@
HAVE_STRTOULL = @HAVE_STRTOULL@
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@
HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@
HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@
@@ -2041,11 +2212,11 @@ HAVE_TZSET = @HAVE_TZSET@
HAVE_UNISTD_H = @HAVE_UNISTD_H@
HAVE_UNLINKAT = @HAVE_UNLINKAT@
HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
-HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_USLEEP = @HAVE_USLEEP@
HAVE_UTIMENSAT = @HAVE_UTIMENSAT@
HAVE_VASPRINTF = @HAVE_VASPRINTF@
HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
HAVE_WCPCPY = @HAVE_WCPCPY@
@@ -2106,19 +2277,28 @@ LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBMULTITHREAD = @LIBMULTITHREAD@
LIBOBJS = @LIBOBJS@
-LIBPTH = @LIBPTH@
-LIBPTH_PREFIX = @LIBPTH_PREFIX@
+LIBPMULTITHREAD = @LIBPMULTITHREAD@
+LIBPTHREAD = @LIBPTHREAD@
LIBS = @LIBS@
LIBSED_LIBDEPS = @LIBSED_LIBDEPS@
LIBSED_LTLIBDEPS = @LIBSED_LTLIBDEPS@
LIBSOCKET = @LIBSOCKET@
+LIBSTDTHREAD = @LIBSTDTHREAD@
LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
LIBTHREAD = @LIBTHREAD@
LIB_ACL = @LIB_ACL@
+LIB_HARD_LOCALE = @LIB_HARD_LOCALE@
LIB_HAS_ACL = @LIB_HAS_ACL@
+LIB_MBRTOWC = @LIB_MBRTOWC@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LIB_NL_LANGINFO = @LIB_NL_LANGINFO@
+LIB_PTHREAD = @LIB_PTHREAD@
+LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
+LIB_SCHED_YIELD = @LIB_SCHED_YIELD@
LIB_SELECT = @LIB_SELECT@
LIB_SELINUX = @LIB_SELINUX@
+LIB_SETLOCALE = @LIB_SETLOCALE@
+LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@
LIMITS_H = @LIMITS_H@
LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
LOCALE_FR = @LOCALE_FR@
@@ -2130,7 +2310,6 @@ LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
LTLIBOBJS = @LTLIBOBJS@
-LTLIBPTH = @LTLIBPTH@
LTLIBTHREAD = @LTLIBTHREAD@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
@@ -2150,6 +2329,8 @@ NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@
+NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H = @NEXT_AS_FIRST_DIRECTIVE_PTHREAD_H@
+NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@
NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H = @NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H@
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
@@ -2179,6 +2360,8 @@ NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
NEXT_LIMITS_H = @NEXT_LIMITS_H@
NEXT_LOCALE_H = @NEXT_LOCALE_H@
NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@
+NEXT_PTHREAD_H = @NEXT_PTHREAD_H@
+NEXT_SCHED_H = @NEXT_SCHED_H@
NEXT_SELINUX_SELINUX_H = @NEXT_SELINUX_SELINUX_H@
NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
NEXT_STDARG_H = @NEXT_STDARG_H@
@@ -2216,12 +2399,14 @@ PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
+REPLACE_ACCESS = @REPLACE_ACCESS@
REPLACE_BTOWC = @REPLACE_BTOWC@
REPLACE_CALLOC = @REPLACE_CALLOC@
REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
REPLACE_CHOWN = @REPLACE_CHOWN@
REPLACE_CLOSE = @REPLACE_CLOSE@
REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@
+REPLACE_CREAT = @REPLACE_CREAT@
REPLACE_CTIME = @REPLACE_CTIME@
REPLACE_DIRFD = @REPLACE_DIRFD@
REPLACE_DPRINTF = @REPLACE_DPRINTF@
@@ -2261,6 +2446,7 @@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
REPLACE_GMTIME = @REPLACE_GMTIME@
REPLACE_INET_NTOP = @REPLACE_INET_NTOP@
REPLACE_INET_PTON = @REPLACE_INET_PTON@
+REPLACE_INITSTATE = @REPLACE_INITSTATE@
REPLACE_IOCTL = @REPLACE_IOCTL@
REPLACE_ISATTY = @REPLACE_ISATTY@
REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
@@ -2301,13 +2487,65 @@ REPLACE_POPEN = @REPLACE_POPEN@
REPLACE_PREAD = @REPLACE_PREAD@
REPLACE_PRINTF = @REPLACE_PRINTF@
REPLACE_PSELECT = @REPLACE_PSELECT@
+REPLACE_PTHREAD_ATTR_DESTROY = @REPLACE_PTHREAD_ATTR_DESTROY@
+REPLACE_PTHREAD_ATTR_GETDETACHSTATE = @REPLACE_PTHREAD_ATTR_GETDETACHSTATE@
+REPLACE_PTHREAD_ATTR_INIT = @REPLACE_PTHREAD_ATTR_INIT@
+REPLACE_PTHREAD_ATTR_SETDETACHSTATE = @REPLACE_PTHREAD_ATTR_SETDETACHSTATE@
+REPLACE_PTHREAD_CONDATTR_DESTROY = @REPLACE_PTHREAD_CONDATTR_DESTROY@
+REPLACE_PTHREAD_CONDATTR_INIT = @REPLACE_PTHREAD_CONDATTR_INIT@
+REPLACE_PTHREAD_COND_BROADCAST = @REPLACE_PTHREAD_COND_BROADCAST@
+REPLACE_PTHREAD_COND_DESTROY = @REPLACE_PTHREAD_COND_DESTROY@
+REPLACE_PTHREAD_COND_INIT = @REPLACE_PTHREAD_COND_INIT@
+REPLACE_PTHREAD_COND_SIGNAL = @REPLACE_PTHREAD_COND_SIGNAL@
+REPLACE_PTHREAD_COND_TIMEDWAIT = @REPLACE_PTHREAD_COND_TIMEDWAIT@
+REPLACE_PTHREAD_COND_WAIT = @REPLACE_PTHREAD_COND_WAIT@
+REPLACE_PTHREAD_CREATE = @REPLACE_PTHREAD_CREATE@
+REPLACE_PTHREAD_DETACH = @REPLACE_PTHREAD_DETACH@
+REPLACE_PTHREAD_EQUAL = @REPLACE_PTHREAD_EQUAL@
+REPLACE_PTHREAD_EXIT = @REPLACE_PTHREAD_EXIT@
+REPLACE_PTHREAD_GETSPECIFIC = @REPLACE_PTHREAD_GETSPECIFIC@
+REPLACE_PTHREAD_JOIN = @REPLACE_PTHREAD_JOIN@
+REPLACE_PTHREAD_KEY_CREATE = @REPLACE_PTHREAD_KEY_CREATE@
+REPLACE_PTHREAD_KEY_DELETE = @REPLACE_PTHREAD_KEY_DELETE@
+REPLACE_PTHREAD_MUTEXATTR_DESTROY = @REPLACE_PTHREAD_MUTEXATTR_DESTROY@
+REPLACE_PTHREAD_MUTEXATTR_GETROBUST = @REPLACE_PTHREAD_MUTEXATTR_GETROBUST@
+REPLACE_PTHREAD_MUTEXATTR_GETTYPE = @REPLACE_PTHREAD_MUTEXATTR_GETTYPE@
+REPLACE_PTHREAD_MUTEXATTR_INIT = @REPLACE_PTHREAD_MUTEXATTR_INIT@
+REPLACE_PTHREAD_MUTEXATTR_SETROBUST = @REPLACE_PTHREAD_MUTEXATTR_SETROBUST@
+REPLACE_PTHREAD_MUTEXATTR_SETTYPE = @REPLACE_PTHREAD_MUTEXATTR_SETTYPE@
+REPLACE_PTHREAD_MUTEX_DESTROY = @REPLACE_PTHREAD_MUTEX_DESTROY@
+REPLACE_PTHREAD_MUTEX_INIT = @REPLACE_PTHREAD_MUTEX_INIT@
+REPLACE_PTHREAD_MUTEX_LOCK = @REPLACE_PTHREAD_MUTEX_LOCK@
+REPLACE_PTHREAD_MUTEX_TIMEDLOCK = @REPLACE_PTHREAD_MUTEX_TIMEDLOCK@
+REPLACE_PTHREAD_MUTEX_TRYLOCK = @REPLACE_PTHREAD_MUTEX_TRYLOCK@
+REPLACE_PTHREAD_MUTEX_UNLOCK = @REPLACE_PTHREAD_MUTEX_UNLOCK@
+REPLACE_PTHREAD_ONCE = @REPLACE_PTHREAD_ONCE@
+REPLACE_PTHREAD_RWLOCKATTR_DESTROY = @REPLACE_PTHREAD_RWLOCKATTR_DESTROY@
+REPLACE_PTHREAD_RWLOCKATTR_INIT = @REPLACE_PTHREAD_RWLOCKATTR_INIT@
+REPLACE_PTHREAD_RWLOCK_DESTROY = @REPLACE_PTHREAD_RWLOCK_DESTROY@
+REPLACE_PTHREAD_RWLOCK_INIT = @REPLACE_PTHREAD_RWLOCK_INIT@
+REPLACE_PTHREAD_RWLOCK_RDLOCK = @REPLACE_PTHREAD_RWLOCK_RDLOCK@
+REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK = @REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK@
+REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK = @REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK@
+REPLACE_PTHREAD_RWLOCK_TRYRDLOCK = @REPLACE_PTHREAD_RWLOCK_TRYRDLOCK@
+REPLACE_PTHREAD_RWLOCK_TRYWRLOCK = @REPLACE_PTHREAD_RWLOCK_TRYWRLOCK@
+REPLACE_PTHREAD_RWLOCK_UNLOCK = @REPLACE_PTHREAD_RWLOCK_UNLOCK@
+REPLACE_PTHREAD_RWLOCK_WRLOCK = @REPLACE_PTHREAD_RWLOCK_WRLOCK@
+REPLACE_PTHREAD_SELF = @REPLACE_PTHREAD_SELF@
+REPLACE_PTHREAD_SETSPECIFIC = @REPLACE_PTHREAD_SETSPECIFIC@
REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTHREAD_SPIN_DESTROY = @REPLACE_PTHREAD_SPIN_DESTROY@
+REPLACE_PTHREAD_SPIN_INIT = @REPLACE_PTHREAD_SPIN_INIT@
+REPLACE_PTHREAD_SPIN_LOCK = @REPLACE_PTHREAD_SPIN_LOCK@
+REPLACE_PTHREAD_SPIN_TRYLOCK = @REPLACE_PTHREAD_SPIN_TRYLOCK@
+REPLACE_PTHREAD_SPIN_UNLOCK = @REPLACE_PTHREAD_SPIN_UNLOCK@
REPLACE_PTSNAME = @REPLACE_PTSNAME@
REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
REPLACE_PUTENV = @REPLACE_PUTENV@
REPLACE_PWRITE = @REPLACE_PWRITE@
REPLACE_QSORT_R = @REPLACE_QSORT_R@
REPLACE_RAISE = @REPLACE_RAISE@
+REPLACE_RANDOM = @REPLACE_RANDOM@
REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
REPLACE_READ = @REPLACE_READ@
REPLACE_READLINK = @REPLACE_READLINK@
@@ -2318,9 +2556,11 @@ REPLACE_REMOVE = @REPLACE_REMOVE@
REPLACE_RENAME = @REPLACE_RENAME@
REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SCHED_YIELD = @REPLACE_SCHED_YIELD@
REPLACE_SELECT = @REPLACE_SELECT@
REPLACE_SETENV = @REPLACE_SETENV@
REPLACE_SETLOCALE = @REPLACE_SETLOCALE@
+REPLACE_SETSTATE = @REPLACE_SETSTATE@
REPLACE_SLEEP = @REPLACE_SLEEP@
REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
REPLACE_SPRINTF = @REPLACE_SPRINTF@
@@ -2342,6 +2582,7 @@ REPLACE_STRSTR = @REPLACE_STRSTR@
REPLACE_STRTOD = @REPLACE_STRTOD@
REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_STRTOLD = @REPLACE_STRTOLD@
REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@
REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@
REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@
@@ -2368,6 +2609,7 @@ REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
REPLACE_WCSFTIME = @REPLACE_WCSFTIME@
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSTOK = @REPLACE_WCSTOK@
REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
REPLACE_WCTOB = @REPLACE_WCTOB@
REPLACE_WCTOMB = @REPLACE_WCTOMB@
@@ -2466,7 +2708,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = 1.11 foreign
+AUTOMAKE_OPTIONS = 1.11 foreign subdir-objects
SUBDIRS = .
TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' srcdir='$(srcdir)' \
USE_ACL=$(USE_ACL) LOCALE_FR='@LOCALE_FR@' \
@@ -2508,29 +2750,29 @@ EXTRA_DIST = accept.c w32sock.h test-accept.c signature.h macros.h \
macros.h test-fgetc.c signature.h macros.h \
test-file-has-acl.sh test-file-has-acl-1.sh \
test-file-has-acl-2.sh test-file-has-acl.c macros.h \
- flexmember.h test-fpending.c test-fpending.sh macros.h \
- fpurge.c stdio-impl.h test-fpurge.c macros.h test-fputc.c \
- signature.h macros.h test-fread.c signature.h macros.h \
- freading.h stdio-impl.h test-freading.c macros.h fseek.c \
- test-fseek.c test-fseek.sh test-fseek2.sh signature.h macros.h \
- fseeko.c stdio-impl.h test-fseeko.c test-fseeko.sh \
- test-fseeko2.sh test-fseeko3.c test-fseeko3.sh test-fseeko4.c \
- test-fseeko4.sh signature.h macros.h test-fstat.c signature.h \
- macros.h ftell.c test-ftell.c test-ftell.sh test-ftell2.sh \
- test-ftell3.c signature.h macros.h ftello.c stdio-impl.h \
- test-ftello.c test-ftello.sh test-ftello2.sh test-ftello3.c \
- test-ftello4.c test-ftello4.sh signature.h macros.h \
- ftruncate.c test-ftruncate.c test-ftruncate.sh signature.h \
- macros.h test-fwrite.c signature.h macros.h test-fwriting.c \
- macros.h getcwd-lgpl.c test-getcwd-lgpl.c signature.h macros.h \
+ test-fpending.c test-fpending.sh macros.h fpurge.c \
+ stdio-impl.h test-fpurge.c macros.h test-fputc.c signature.h \
+ macros.h test-fread.c signature.h macros.h freading.h \
+ stdio-impl.h test-freading.c macros.h fseek.c test-fseek.c \
+ test-fseek.sh test-fseek2.sh signature.h macros.h fseeko.c \
+ stdio-impl.h test-fseeko.c test-fseeko.sh test-fseeko2.sh \
+ test-fseeko3.c test-fseeko3.sh test-fseeko4.c test-fseeko4.sh \
+ signature.h macros.h test-fstat.c signature.h macros.h ftell.c \
+ test-ftell.c test-ftell.sh test-ftell2.sh test-ftell3.c \
+ signature.h macros.h ftello.c stdio-impl.h test-ftello.c \
+ test-ftello.sh test-ftello2.sh test-ftello3.c test-ftello4.c \
+ test-ftello4.sh signature.h macros.h ftruncate.c \
+ test-ftruncate.c test-ftruncate.sh signature.h macros.h \
+ test-fwrite.c signature.h macros.h test-fwriting.c macros.h \
+ getcwd-lgpl.c test-getcwd-lgpl.c signature.h macros.h \
test-getdelim.c signature.h macros.h getdtablesize.c \
test-getdtablesize.c signature.h macros.h macros.h signature.h \
test-getopt-gnu.c test-getopt-main.h test-getopt.h \
test-getopt_long.h macros.h signature.h test-getopt-posix.c \
test-getopt-main.h test-getopt.h getpagesize.c \
test-getprogname.c signature.h test-gettimeofday.c \
- test-ignore-value.c inet_pton.c test-inet_pton.c signature.h \
- macros.h test-intprops.c macros.h inttypes.in.h \
+ test-hard-locale.c locale.c test-ignore-value.c inet_pton.c \
+ test-inet_pton.c signature.h macros.h test-intprops.c macros.h \
test-inttypes.c ioctl.c w32sock.h test-ioctl.c signature.h \
macros.h test-isblank.c signature.h macros.h test-langinfo.c \
test-limits-h.c link.c test-link.h test-link.c signature.h \
@@ -2543,56 +2785,65 @@ EXTRA_DIST = accept.c w32sock.h test-accept.c signature.h macros.h \
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.c signature.h macros.h \
+ 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 \
test-memchr.c zerosize-ptr.h signature.h macros.h \
test-memrchr.c zerosize-ptr.h signature.h macros.h \
test-mkdir.h test-mkdir.c signature.h macros.h nanosleep.c \
test-nanosleep.c signature.h macros.h netinet_in.in.h \
test-netinet_in.c test-nl_langinfo.sh test-nl_langinfo.c \
- signature.h macros.h open.c test-open.h test-open.c \
- signature.h macros.h dirent-private.h opendir.c test-pathmax.c \
- perror.c macros.h signature.h test-perror.c test-perror2.c \
- test-perror.sh pipe.c test-pipe.c signature.h macros.h \
- putenv.c test-quotearg-simple.c test-quotearg.h macros.h \
- zerosize-ptr.h raise.c test-raise.c signature.h macros.h \
- read-file.h test-read-file.c dirent-private.h readdir.c \
- test-readlink.h test-readlink.c signature.h macros.h realloc.c \
- test-regex.c macros.h test-rename.h test-rename.c signature.h \
- macros.h test-rmdir.h test-rmdir.c signature.h macros.h \
- select.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 setenv.c test-setenv.c signature.h \
- macros.h setlocale.c test-setlocale1.sh test-setlocale1.c \
- test-setlocale2.sh test-setlocale2.c signature.h macros.h \
- setsockopt.c w32sock.h test-setsockopt.c signature.h macros.h \
- sig-handler.h sigaction.c test-sigaction.c signature.h \
- macros.h signal.in.h test-signal-h.c sigprocmask.c \
- test-sigprocmask.c signature.h macros.h sleep.c test-sleep.c \
- signature.h macros.h _Noreturn.h arg-nonnull.h c++defs.h \
- unused-parameter.h warn-on-use.h socket.c w32sock.h w32sock.h \
- test-sockets.c test-stat.h test-stat.c signature.h macros.h \
- test-stat-time.c macros.h nap.h test-stdalign.c macros.h \
- test-stdbool.c test-stddef.c test-stdint.c test-stdio.c \
- test-stdlib.c test-sys_wait.h strdup.c test-strerror.c \
- signature.h macros.h strerror_r.c test-strerror_r.c \
- signature.h macros.h test-string.c test-strverscmp.c \
- signature.h macros.h symlink.c 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-nl_langinfo-mt.c signature.h macros.h open.c test-open.h \
+ test-open.c signature.h macros.h dirent-private.h opendir.c \
+ test-pathmax.c perror.c macros.h signature.h test-perror.c \
+ test-perror2.c test-perror.sh pipe.c test-pipe.c signature.h \
+ macros.h pthread.in.h test-pthread.c pthread-thread.c \
+ test-pthread-thread.c macros.h pthread_sigmask.c \
+ test-pthread_sigmask1.c test-pthread_sigmask2.c signature.h \
+ macros.h putenv.c test-quotearg-simple.c test-quotearg.h \
+ macros.h zerosize-ptr.h raise.c test-raise.c signature.h \
+ macros.h read-file.h test-read-file.c dirent-private.h \
+ readdir.c test-readlink.h test-readlink.c signature.h macros.h \
+ realloc.c test-regex.c macros.h test-rename.h test-rename.c \
+ signature.h macros.h test-rmdir.h test-rmdir.c signature.h \
+ macros.h sched.in.h test-sched.c select.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 setenv.c test-setenv.c \
+ signature.h macros.h setlocale.c test-setlocale_null.c \
+ test-setlocale_null-mt-one.c test-setlocale_null-mt-all.c \
+ test-setlocale1.sh test-setlocale1.c test-setlocale2.sh \
+ test-setlocale2.c signature.h macros.h setsockopt.c w32sock.h \
+ test-setsockopt.c signature.h macros.h sig-handler.h \
+ sigaction.c test-sigaction.c signature.h macros.h signal.in.h \
+ test-signal-h.c sigprocmask.c test-sigprocmask.c signature.h \
+ macros.h sleep.c test-sleep.c signature.h macros.h _Noreturn.h \
+ arg-nonnull.h c++defs.h unused-parameter.h warn-on-use.h \
+ socket.c w32sock.h w32sock.h test-sockets.c test-stat.h \
+ test-stat.c signature.h macros.h test-stat-time.c macros.h \
+ nap.h test-stdalign.c macros.h test-stdbool.c test-stddef.c \
+ test-stdint.c test-stdio.c test-stdlib.c test-sys_wait.h \
+ strdup.c test-strerror.c signature.h macros.h strerror_r.c \
+ test-strerror_r.c signature.h macros.h test-string.c \
+ test-strverscmp.c signature.h macros.h symlink.c \
+ 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 test-sys_stat.c test-sys_time.c \
test-sys_types.c sys_uio.in.h test-sys_uio.c init.sh \
- test-init.sh test-time.c test-unistd.c unsetenv.c \
- test-unsetenv.c signature.h macros.h test-update-copyright.sh \
+ test-init.sh test-thread_self.c test-thread_create.c macros.h \
+ test-time.c test-unistd.c unsetenv.c test-unsetenv.c \
+ signature.h macros.h test-update-copyright.sh \
test-vc-list-files-git.sh test-vc-list-files-cvs.sh \
test-verify.c test-verify-try.c test-verify.sh \
test-version-etc.c test-version-etc.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.c \
- signature.h macros.h test-wctype-h.c macros.h \
- test-xalloc-die.c test-xalloc-die.sh
-BUILT_SOURCES = arpa/inet.h dirent.h inttypes.h $(NETINET_IN_H) \
+ 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-wctype-h.c macros.h windows-thread.c \
+ windows-thread.h windows-tls.c windows-tls.h test-xalloc-die.c \
+ test-xalloc-die.sh
+BUILT_SOURCES = arpa/inet.h dirent.h $(NETINET_IN_H) pthread.h sched.h \
signal.h sys/ioctl.h sys/select.h sys/socket.h sys/uio.h
SUFFIXES =
@@ -2602,10 +2853,10 @@ SUFFIXES =
MOSTLYCLEANFILES = core *.stackdump arpa/inet.h arpa/inet.h-t dirent.h \
dirent.h-t test-fflush.txt test-fpending.t t-fpurge.tmp \
t-freading.tmp t-ftell3.tmp t-ftello3.tmp t-fwriting.tmp \
- test-getdelim.txt inttypes.h inttypes.h-t netinet/in.h \
- netinet/in.h-t signal.h signal.h-t sys/ioctl.h sys/ioctl.h-t \
- sys/select.h sys/select.h-t sys/socket.h sys/socket.h-t \
- sys/uio.h sys/uio.h-t .deps/test-verify-try.Tpo
+ test-getdelim.txt netinet/in.h netinet/in.h-t pthread.h \
+ pthread.h-t sched.h sched.h-t signal.h signal.h-t sys/ioctl.h \
+ sys/ioctl.h-t sys/select.h sys/select.h-t sys/socket.h \
+ sys/socket.h-t sys/uio.h sys/uio.h-t .deps/test-verify-try.Tpo
MOSTLYCLEANDIRS = arpa netinet sys sys sys sys
CLEANFILES =
DISTCLEANFILES =
@@ -2619,7 +2870,8 @@ AM_CPPFLAGS = \
LDADD = libtests.a ../lib/libsed.a libtests.a $(LIBTESTS_LIBDEPS)
libtests_a_SOURCES = cloexec.c fd-hook.c file-has-acl.c freading.c \
localename.c localename-table.c read-file.c sig-handler.c \
- sockets.h sockets.c sys_socket.c
+ sockets.h sockets.c sys_socket.c glthread/thread.h \
+ glthread/thread.c
libtests_a_LIBADD = $(gltests_LIBOBJS)
libtests_a_DEPENDENCIES = $(gltests_LIBOBJS)
EXTRA_libtests_a_SOURCES = accept.c bind.c close.c closedir.c \
@@ -2627,31 +2879,52 @@ EXTRA_libtests_a_SOURCES = accept.c bind.c close.c closedir.c \
fseek.c fseeko.c ftell.c ftello.c ftruncate.c getcwd-lgpl.c \
getdtablesize.c getpagesize.c inet_pton.c ioctl.c link.c \
listen.c lseek.c nanosleep.c open.c opendir.c perror.c pipe.c \
- putenv.c raise.c readdir.c realloc.c select.c setenv.c \
- setlocale.c setsockopt.c sigaction.c sigprocmask.c sleep.c \
- socket.c strdup.c strerror_r.c symlink.c unsetenv.c
+ pthread-thread.c pthread_sigmask.c putenv.c raise.c readdir.c \
+ realloc.c select.c setenv.c setlocale.c setsockopt.c \
+ sigaction.c sigprocmask.c sleep.c socket.c strdup.c \
+ strerror_r.c symlink.c unsetenv.c windows-thread.c \
+ windows-tls.c
AM_LIBTOOLFLAGS = --preserve-dup-deps
test_accept_LDADD = $(LDADD) @LIBSOCKET@
-test_set_mode_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
-test_copy_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
-test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
+test_set_mode_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ $(LIB_MBRTOWC)
+test_copy_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ $(LIB_MBRTOWC)
+test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ $(LIB_MBRTOWC)
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_connect_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
-dfa_match_aux_LDADD = $(LDADD) @LIBINTL@
+dfa_match_aux_LDADD = $(LDADD) $(LIB_SETLOCALE) @LIBINTL@ $(LIB_MBRTOWC)
test_file_has_acl_LDADD = $(LDADD) $(LIB_HAS_ACL)
test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL)
test_getopt_gnu_LDADD = $(LDADD) $(LIBINTL)
test_getopt_posix_LDADD = $(LDADD) $(LIBINTL)
test_getprogname_LDADD = $(LDADD)
+test_hard_locale_LDADD = $(LDADD) $(LIB_SETLOCALE) @LIB_HARD_LOCALE@
+current_locale_SOURCES = locale.c
test_inet_pton_LDADD = $(LDADD) @INET_PTON_LIB@
test_listen_LDADD = $(LDADD) @LIBSOCKET@
-test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_localcharset_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_localename_LDADD = $(LDADD) $(LIB_SETLOCALE) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_mbrtowc_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
+test_mbsinit_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC)
test_nanosleep_LDADD = $(LDADD) $(LIB_NANOSLEEP)
-test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@
-test_regex_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD) $(LIB_PTHREAD)
+test_nl_langinfo_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_nl_langinfo_mt_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBMULTITHREAD) $(LIB_NANOSLEEP)
+test_pthread_thread_LDADD = $(LDADD) @LIBPMULTITHREAD@
+test_pthread_sigmask1_LDADD = $(LDADD) @LIB_PTHREAD_SIGMASK@
+test_pthread_sigmask2_LDADD = $(LDADD) @LIB_PTHREAD_SIGMASK@ @LIBMULTITHREAD@
+test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@ $(LIB_MBRTOWC)
+test_regex_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC) @LIBINTL@ $(LIBTHREAD)
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_setsockopt_LDADD = $(LDADD) @LIBSOCKET@
# Because this Makefile snippet defines a variable used by other
@@ -2681,7 +2954,10 @@ 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_thread_self_LDADD = $(LDADD) @LIBTHREAD@
+test_thread_create_LDADD = $(LDADD) @LIBMULTITHREAD@
test_version_etc_LDADD = $(LDADD) @LIBINTL@
+test_wcrtomb_LDADD = $(LDADD) $(LIB_SETLOCALE)
test_xalloc_die_LDADD = $(LDADD) @LIBINTL@
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -2730,12 +3006,24 @@ clean-checkLIBRARIES:
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+glthread/$(am__dirstamp):
+ @$(MKDIR_P) glthread
+ @: > glthread/$(am__dirstamp)
+glthread/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) glthread/$(DEPDIR)
+ @: > glthread/$(DEPDIR)/$(am__dirstamp)
+glthread/thread.$(OBJEXT): glthread/$(am__dirstamp) \
+ glthread/$(DEPDIR)/$(am__dirstamp)
libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES) $(EXTRA_libtests_a_DEPENDENCIES)
$(AM_V_at)-rm -f libtests.a
$(AM_V_AR)$(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD)
$(AM_V_at)$(RANLIB) libtests.a
+current-locale$(EXEEXT): $(current_locale_OBJECTS) $(current_locale_DEPENDENCIES) $(EXTRA_current_locale_DEPENDENCIES)
+ @rm -f current-locale$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(current_locale_OBJECTS) $(current_locale_LDADD) $(LIBS)
+
dfa-match-aux$(EXEEXT): $(dfa_match_aux_OBJECTS) $(dfa_match_aux_DEPENDENCIES) $(EXTRA_dfa_match_aux_DEPENDENCIES)
@rm -f dfa-match-aux$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(dfa_match_aux_OBJECTS) $(dfa_match_aux_LDADD) $(LIBS)
@@ -2952,6 +3240,10 @@ test-gettimeofday$(EXEEXT): $(test_gettimeofday_OBJECTS) $(test_gettimeofday_DEP
@rm -f test-gettimeofday$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_gettimeofday_OBJECTS) $(test_gettimeofday_LDADD) $(LIBS)
+test-hard-locale$(EXEEXT): $(test_hard_locale_OBJECTS) $(test_hard_locale_DEPENDENCIES) $(EXTRA_test_hard_locale_DEPENDENCIES)
+ @rm -f test-hard-locale$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_hard_locale_OBJECTS) $(test_hard_locale_LDADD) $(LIBS)
+
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)
@@ -3056,6 +3348,10 @@ test-nl_langinfo$(EXEEXT): $(test_nl_langinfo_OBJECTS) $(test_nl_langinfo_DEPEND
@rm -f test-nl_langinfo$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_nl_langinfo_OBJECTS) $(test_nl_langinfo_LDADD) $(LIBS)
+test-nl_langinfo-mt$(EXEEXT): $(test_nl_langinfo_mt_OBJECTS) $(test_nl_langinfo_mt_DEPENDENCIES) $(EXTRA_test_nl_langinfo_mt_DEPENDENCIES)
+ @rm -f test-nl_langinfo-mt$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_nl_langinfo_mt_OBJECTS) $(test_nl_langinfo_mt_LDADD) $(LIBS)
+
test-open$(EXEEXT): $(test_open_OBJECTS) $(test_open_DEPENDENCIES) $(EXTRA_test_open_DEPENDENCIES)
@rm -f test-open$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_open_OBJECTS) $(test_open_LDADD) $(LIBS)
@@ -3076,6 +3372,22 @@ test-pipe$(EXEEXT): $(test_pipe_OBJECTS) $(test_pipe_DEPENDENCIES) $(EXTRA_test_
@rm -f test-pipe$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_pipe_OBJECTS) $(test_pipe_LDADD) $(LIBS)
+test-pthread$(EXEEXT): $(test_pthread_OBJECTS) $(test_pthread_DEPENDENCIES) $(EXTRA_test_pthread_DEPENDENCIES)
+ @rm -f test-pthread$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pthread_OBJECTS) $(test_pthread_LDADD) $(LIBS)
+
+test-pthread-thread$(EXEEXT): $(test_pthread_thread_OBJECTS) $(test_pthread_thread_DEPENDENCIES) $(EXTRA_test_pthread_thread_DEPENDENCIES)
+ @rm -f test-pthread-thread$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pthread_thread_OBJECTS) $(test_pthread_thread_LDADD) $(LIBS)
+
+test-pthread_sigmask1$(EXEEXT): $(test_pthread_sigmask1_OBJECTS) $(test_pthread_sigmask1_DEPENDENCIES) $(EXTRA_test_pthread_sigmask1_DEPENDENCIES)
+ @rm -f test-pthread_sigmask1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pthread_sigmask1_OBJECTS) $(test_pthread_sigmask1_LDADD) $(LIBS)
+
+test-pthread_sigmask2$(EXEEXT): $(test_pthread_sigmask2_OBJECTS) $(test_pthread_sigmask2_DEPENDENCIES) $(EXTRA_test_pthread_sigmask2_DEPENDENCIES)
+ @rm -f test-pthread_sigmask2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_pthread_sigmask2_OBJECTS) $(test_pthread_sigmask2_LDADD) $(LIBS)
+
test-quotearg-simple$(EXEEXT): $(test_quotearg_simple_OBJECTS) $(test_quotearg_simple_DEPENDENCIES) $(EXTRA_test_quotearg_simple_DEPENDENCIES)
@rm -f test-quotearg-simple$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_quotearg_simple_OBJECTS) $(test_quotearg_simple_LDADD) $(LIBS)
@@ -3108,6 +3420,10 @@ test-sameacls$(EXEEXT): $(test_sameacls_OBJECTS) $(test_sameacls_DEPENDENCIES) $
@rm -f test-sameacls$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_sameacls_OBJECTS) $(test_sameacls_LDADD) $(LIBS)
+test-sched$(EXEEXT): $(test_sched_OBJECTS) $(test_sched_DEPENDENCIES) $(EXTRA_test_sched_DEPENDENCIES)
+ @rm -f test-sched$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_sched_OBJECTS) $(test_sched_LDADD) $(LIBS)
+
test-select$(EXEEXT): $(test_select_OBJECTS) $(test_select_DEPENDENCIES) $(EXTRA_test_select_DEPENDENCIES)
@rm -f test-select$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_select_OBJECTS) $(test_select_LDADD) $(LIBS)
@@ -3136,6 +3452,18 @@ test-setlocale2$(EXEEXT): $(test_setlocale2_OBJECTS) $(test_setlocale2_DEPENDENC
@rm -f test-setlocale2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_setlocale2_OBJECTS) $(test_setlocale2_LDADD) $(LIBS)
+test-setlocale_null$(EXEEXT): $(test_setlocale_null_OBJECTS) $(test_setlocale_null_DEPENDENCIES) $(EXTRA_test_setlocale_null_DEPENDENCIES)
+ @rm -f test-setlocale_null$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_setlocale_null_OBJECTS) $(test_setlocale_null_LDADD) $(LIBS)
+
+test-setlocale_null-mt-all$(EXEEXT): $(test_setlocale_null_mt_all_OBJECTS) $(test_setlocale_null_mt_all_DEPENDENCIES) $(EXTRA_test_setlocale_null_mt_all_DEPENDENCIES)
+ @rm -f test-setlocale_null-mt-all$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_setlocale_null_mt_all_OBJECTS) $(test_setlocale_null_mt_all_LDADD) $(LIBS)
+
+test-setlocale_null-mt-one$(EXEEXT): $(test_setlocale_null_mt_one_OBJECTS) $(test_setlocale_null_mt_one_DEPENDENCIES) $(EXTRA_test_setlocale_null_mt_one_DEPENDENCIES)
+ @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-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)
@@ -3240,6 +3568,14 @@ test-sys_uio$(EXEEXT): $(test_sys_uio_OBJECTS) $(test_sys_uio_DEPENDENCIES) $(EX
@rm -f test-sys_uio$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_sys_uio_OBJECTS) $(test_sys_uio_LDADD) $(LIBS)
+test-thread_create$(EXEEXT): $(test_thread_create_OBJECTS) $(test_thread_create_DEPENDENCIES) $(EXTRA_test_thread_create_DEPENDENCIES)
+ @rm -f test-thread_create$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_thread_create_OBJECTS) $(test_thread_create_LDADD) $(LIBS)
+
+test-thread_self$(EXEEXT): $(test_thread_self_OBJECTS) $(test_thread_self_DEPENDENCIES) $(EXTRA_test_thread_self_DEPENDENCIES)
+ @rm -f test-thread_self$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_thread_self_OBJECTS) $(test_thread_self_LDADD) $(LIBS)
+
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)
@@ -3286,6 +3622,7 @@ test-xalloc-die$(EXEEXT): $(test_xalloc_die_OBJECTS) $(test_xalloc_die_DEPENDENC
mostlyclean-compile:
-rm -f *.$(OBJEXT)
+ -rm -f glthread/*.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@@ -3318,6 +3655,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/locale.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localename-table.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localename.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ # am--include-marker
@@ -3326,6 +3664,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opendir.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perror.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pthread-thread.Po@am__quote@ # am--include-marker
+@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)/read-file.Po@am__quote@ # am--include-marker
@@ -3398,6 +3738,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getopt-posix.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getprogname.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-gettimeofday.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-hard-locale.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ignore-value.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-inet_pton.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-intprops.Po@am__quote@ # am--include-marker
@@ -3423,12 +3764,17 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mkdir.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nanosleep.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-netinet_in.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nl_langinfo-mt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nl_langinfo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-open.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pathmax.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-perror.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-perror2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pthread-thread.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pthread.Po@am__quote@ # am--include-marker
+@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-quotearg-simple.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-read-file.Po@am__quote@ # am--include-marker
@@ -3437,6 +3783,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rename.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rmdir.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sameacls.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sched.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-select-fd.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-select-stdin.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-select.Po@am__quote@ # am--include-marker
@@ -3444,6 +3791,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setenv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale1.Po@am__quote@ # am--include-marker
@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.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-sigaction.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signal-h.Po@am__quote@ # am--include-marker
@@ -3470,6 +3820,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_time.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_types.Po@am__quote@ # am--include-marker
@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.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
@@ -3482,6 +3834,9 @@ 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-xalloc-die.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)/windows-thread.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windows-tls.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/thread.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@@ -4207,6 +4562,13 @@ test-gettimeofday.log: test-gettimeofday$(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-hard-locale.log: test-hard-locale$(EXEEXT)
+ @p='test-hard-locale$(EXEEXT)'; \
+ b='test-hard-locale'; \
+ $(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-ignore-value.log: test-ignore-value$(EXEEXT)
@p='test-ignore-value$(EXEEXT)'; \
b='test-ignore-value'; \
@@ -4389,6 +4751,20 @@ test-mbrtowc-w32-5.sh.log: test-mbrtowc-w32-5.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-6.sh.log: test-mbrtowc-w32-6.sh
+ @p='test-mbrtowc-w32-6.sh'; \
+ b='test-mbrtowc-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-mbrtowc-w32-7.sh.log: test-mbrtowc-w32-7.sh
+ @p='test-mbrtowc-w32-7.sh'; \
+ b='test-mbrtowc-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-mbsinit.sh.log: test-mbsinit.sh
@p='test-mbsinit.sh'; \
b='test-mbsinit.sh'; \
@@ -4438,6 +4814,13 @@ test-nl_langinfo.sh.log: test-nl_langinfo.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-nl_langinfo-mt.log: test-nl_langinfo-mt$(EXEEXT)
+ @p='test-nl_langinfo-mt$(EXEEXT)'; \
+ b='test-nl_langinfo-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-open.log: test-open$(EXEEXT)
@p='test-open$(EXEEXT)'; \
b='test-open'; \
@@ -4473,6 +4856,34 @@ test-pipe.log: test-pipe$(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-pthread.log: test-pthread$(EXEEXT)
+ @p='test-pthread$(EXEEXT)'; \
+ b='test-pthread'; \
+ $(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-pthread-thread.log: test-pthread-thread$(EXEEXT)
+ @p='test-pthread-thread$(EXEEXT)'; \
+ b='test-pthread-thread'; \
+ $(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-pthread_sigmask1.log: test-pthread_sigmask1$(EXEEXT)
+ @p='test-pthread_sigmask1$(EXEEXT)'; \
+ b='test-pthread_sigmask1'; \
+ $(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-pthread_sigmask2.log: test-pthread_sigmask2$(EXEEXT)
+ @p='test-pthread_sigmask2$(EXEEXT)'; \
+ b='test-pthread_sigmask2'; \
+ $(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-quotearg-simple.log: test-quotearg-simple$(EXEEXT)
@p='test-quotearg-simple$(EXEEXT)'; \
b='test-quotearg-simple'; \
@@ -4522,6 +4933,13 @@ test-rmdir.log: test-rmdir$(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-sched.log: test-sched$(EXEEXT)
+ @p='test-sched$(EXEEXT)'; \
+ b='test-sched'; \
+ $(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-select.log: test-select$(EXEEXT)
@p='test-select$(EXEEXT)'; \
b='test-select'; \
@@ -4550,6 +4968,27 @@ test-setenv.log: test-setenv$(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.log: test-setlocale_null$(EXEEXT)
+ @p='test-setlocale_null$(EXEEXT)'; \
+ b='test-setlocale_null'; \
+ $(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-setlocale_null-mt-one.log: test-setlocale_null-mt-one$(EXEEXT)
+ @p='test-setlocale_null-mt-one$(EXEEXT)'; \
+ b='test-setlocale_null-mt-one'; \
+ $(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-setlocale_null-mt-all.log: test-setlocale_null-mt-all$(EXEEXT)
+ @p='test-setlocale_null-mt-all$(EXEEXT)'; \
+ b='test-setlocale_null-mt-all'; \
+ $(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'; \
@@ -4753,6 +5192,20 @@ test-init.sh.log: test-init.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-thread_self.log: test-thread_self$(EXEEXT)
+ @p='test-thread_self$(EXEEXT)'; \
+ b='test-thread_self'; \
+ $(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-thread_create.log: test-thread_create$(EXEEXT)
+ @p='test-thread_create$(EXEEXT)'; \
+ b='test-thread_create'; \
+ $(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'; \
@@ -4865,6 +5318,20 @@ test-wcrtomb-w32-5.sh.log: test-wcrtomb-w32-5.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-6.sh.log: test-wcrtomb-w32-6.sh
+ @p='test-wcrtomb-w32-6.sh'; \
+ b='test-wcrtomb-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-wcrtomb-w32-7.sh.log: test-wcrtomb-w32-7.sh
+ @p='test-wcrtomb-w32-7.sh'; \
+ b='test-wcrtomb-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-wctype-h.log: test-wctype-h$(EXEEXT)
@p='test-wctype-h$(EXEEXT)'; \
b='test-wctype-h'; \
@@ -4992,6 +5459,8 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f glthread/$(DEPDIR)/$(am__dirstamp)
+ -rm -f glthread/$(am__dirstamp)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@@ -5034,6 +5503,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/ioctl.Po
-rm -f ./$(DEPDIR)/link.Po
-rm -f ./$(DEPDIR)/listen.Po
+ -rm -f ./$(DEPDIR)/locale.Po
-rm -f ./$(DEPDIR)/localename-table.Po
-rm -f ./$(DEPDIR)/localename.Po
-rm -f ./$(DEPDIR)/lseek.Po
@@ -5042,6 +5512,8 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/opendir.Po
-rm -f ./$(DEPDIR)/perror.Po
-rm -f ./$(DEPDIR)/pipe.Po
+ -rm -f ./$(DEPDIR)/pthread-thread.Po
+ -rm -f ./$(DEPDIR)/pthread_sigmask.Po
-rm -f ./$(DEPDIR)/putenv.Po
-rm -f ./$(DEPDIR)/raise.Po
-rm -f ./$(DEPDIR)/read-file.Po
@@ -5114,6 +5586,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-getopt-posix.Po
-rm -f ./$(DEPDIR)/test-getprogname.Po
-rm -f ./$(DEPDIR)/test-gettimeofday.Po
+ -rm -f ./$(DEPDIR)/test-hard-locale.Po
-rm -f ./$(DEPDIR)/test-ignore-value.Po
-rm -f ./$(DEPDIR)/test-inet_pton.Po
-rm -f ./$(DEPDIR)/test-intprops.Po
@@ -5139,12 +5612,17 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-mkdir.Po
-rm -f ./$(DEPDIR)/test-nanosleep.Po
-rm -f ./$(DEPDIR)/test-netinet_in.Po
+ -rm -f ./$(DEPDIR)/test-nl_langinfo-mt.Po
-rm -f ./$(DEPDIR)/test-nl_langinfo.Po
-rm -f ./$(DEPDIR)/test-open.Po
-rm -f ./$(DEPDIR)/test-pathmax.Po
-rm -f ./$(DEPDIR)/test-perror.Po
-rm -f ./$(DEPDIR)/test-perror2.Po
-rm -f ./$(DEPDIR)/test-pipe.Po
+ -rm -f ./$(DEPDIR)/test-pthread-thread.Po
+ -rm -f ./$(DEPDIR)/test-pthread.Po
+ -rm -f ./$(DEPDIR)/test-pthread_sigmask1.Po
+ -rm -f ./$(DEPDIR)/test-pthread_sigmask2.Po
-rm -f ./$(DEPDIR)/test-quotearg-simple.Po
-rm -f ./$(DEPDIR)/test-raise.Po
-rm -f ./$(DEPDIR)/test-read-file.Po
@@ -5153,6 +5631,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-rename.Po
-rm -f ./$(DEPDIR)/test-rmdir.Po
-rm -f ./$(DEPDIR)/test-sameacls.Po
+ -rm -f ./$(DEPDIR)/test-sched.Po
-rm -f ./$(DEPDIR)/test-select-fd.Po
-rm -f ./$(DEPDIR)/test-select-stdin.Po
-rm -f ./$(DEPDIR)/test-select.Po
@@ -5160,6 +5639,9 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-setenv.Po
-rm -f ./$(DEPDIR)/test-setlocale1.Po
-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.Po
-rm -f ./$(DEPDIR)/test-setsockopt.Po
-rm -f ./$(DEPDIR)/test-sigaction.Po
-rm -f ./$(DEPDIR)/test-signal-h.Po
@@ -5186,6 +5668,8 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-sys_time.Po
-rm -f ./$(DEPDIR)/test-sys_types.Po
-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.Po
-rm -f ./$(DEPDIR)/test-unistd.Po
-rm -f ./$(DEPDIR)/test-unsetenv.Po
@@ -5198,6 +5682,9 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/test-wctype-h.Po
-rm -f ./$(DEPDIR)/test-xalloc-die.Po
-rm -f ./$(DEPDIR)/unsetenv.Po
+ -rm -f ./$(DEPDIR)/windows-thread.Po
+ -rm -f ./$(DEPDIR)/windows-tls.Po
+ -rm -f glthread/$(DEPDIR)/thread.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -5271,6 +5758,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/ioctl.Po
-rm -f ./$(DEPDIR)/link.Po
-rm -f ./$(DEPDIR)/listen.Po
+ -rm -f ./$(DEPDIR)/locale.Po
-rm -f ./$(DEPDIR)/localename-table.Po
-rm -f ./$(DEPDIR)/localename.Po
-rm -f ./$(DEPDIR)/lseek.Po
@@ -5279,6 +5767,8 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/opendir.Po
-rm -f ./$(DEPDIR)/perror.Po
-rm -f ./$(DEPDIR)/pipe.Po
+ -rm -f ./$(DEPDIR)/pthread-thread.Po
+ -rm -f ./$(DEPDIR)/pthread_sigmask.Po
-rm -f ./$(DEPDIR)/putenv.Po
-rm -f ./$(DEPDIR)/raise.Po
-rm -f ./$(DEPDIR)/read-file.Po
@@ -5351,6 +5841,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-getopt-posix.Po
-rm -f ./$(DEPDIR)/test-getprogname.Po
-rm -f ./$(DEPDIR)/test-gettimeofday.Po
+ -rm -f ./$(DEPDIR)/test-hard-locale.Po
-rm -f ./$(DEPDIR)/test-ignore-value.Po
-rm -f ./$(DEPDIR)/test-inet_pton.Po
-rm -f ./$(DEPDIR)/test-intprops.Po
@@ -5376,12 +5867,17 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-mkdir.Po
-rm -f ./$(DEPDIR)/test-nanosleep.Po
-rm -f ./$(DEPDIR)/test-netinet_in.Po
+ -rm -f ./$(DEPDIR)/test-nl_langinfo-mt.Po
-rm -f ./$(DEPDIR)/test-nl_langinfo.Po
-rm -f ./$(DEPDIR)/test-open.Po
-rm -f ./$(DEPDIR)/test-pathmax.Po
-rm -f ./$(DEPDIR)/test-perror.Po
-rm -f ./$(DEPDIR)/test-perror2.Po
-rm -f ./$(DEPDIR)/test-pipe.Po
+ -rm -f ./$(DEPDIR)/test-pthread-thread.Po
+ -rm -f ./$(DEPDIR)/test-pthread.Po
+ -rm -f ./$(DEPDIR)/test-pthread_sigmask1.Po
+ -rm -f ./$(DEPDIR)/test-pthread_sigmask2.Po
-rm -f ./$(DEPDIR)/test-quotearg-simple.Po
-rm -f ./$(DEPDIR)/test-raise.Po
-rm -f ./$(DEPDIR)/test-read-file.Po
@@ -5390,6 +5886,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-rename.Po
-rm -f ./$(DEPDIR)/test-rmdir.Po
-rm -f ./$(DEPDIR)/test-sameacls.Po
+ -rm -f ./$(DEPDIR)/test-sched.Po
-rm -f ./$(DEPDIR)/test-select-fd.Po
-rm -f ./$(DEPDIR)/test-select-stdin.Po
-rm -f ./$(DEPDIR)/test-select.Po
@@ -5397,6 +5894,9 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-setenv.Po
-rm -f ./$(DEPDIR)/test-setlocale1.Po
-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.Po
-rm -f ./$(DEPDIR)/test-setsockopt.Po
-rm -f ./$(DEPDIR)/test-sigaction.Po
-rm -f ./$(DEPDIR)/test-signal-h.Po
@@ -5423,6 +5923,8 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-sys_time.Po
-rm -f ./$(DEPDIR)/test-sys_types.Po
-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.Po
-rm -f ./$(DEPDIR)/test-unistd.Po
-rm -f ./$(DEPDIR)/test-unsetenv.Po
@@ -5435,6 +5937,9 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/test-wctype-h.Po
-rm -f ./$(DEPDIR)/test-xalloc-die.Po
-rm -f ./$(DEPDIR)/unsetenv.Po
+ -rm -f ./$(DEPDIR)/windows-thread.Po
+ -rm -f ./$(DEPDIR)/windows-tls.Po
+ -rm -f glthread/$(DEPDIR)/thread.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -5490,6 +5995,7 @@ arpa/inet.h: arpa_inet.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON
-e 's|@''HAVE_ARPA_INET_H''@|$(HAVE_ARPA_INET_H)|g' \
-e 's/@''GNULIB_INET_NTOP''@/$(GNULIB_INET_NTOP)/g' \
-e 's/@''GNULIB_INET_PTON''@/$(GNULIB_INET_PTON)/g' \
+ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
-e 's|@''HAVE_DECL_INET_NTOP''@|$(HAVE_DECL_INET_NTOP)|g' \
-e 's|@''HAVE_DECL_INET_PTON''@|$(HAVE_DECL_INET_PTON)|g' \
-e 's|@''REPLACE_INET_NTOP''@|$(REPLACE_INET_NTOP)|g' \
@@ -5540,43 +6046,6 @@ dirent.h: dirent.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
} > $@-t && \
mv $@-t $@
-# We need the following in order to create <inttypes.h> when the system
-# doesn't have one that works with the given compiler.
-inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
- $(AM_V_GEN)rm -f $@-t $@ && \
- { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
- -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
- -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
- -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
- -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
- -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
- -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
- -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
- -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
- -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
- -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
- -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
- -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
- -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
- -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
- -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
- -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \
- -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \
- -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \
- -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
- -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
- -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
- -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \
- -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)' \
- < $(srcdir)/inttypes.in.h; \
- } > $@-t && \
- mv $@-t $@
-
# We need the following in order to create <netinet/in.h> when the system
# doesn't have one.
@GL_GENERATE_NETINET_IN_H_TRUE@netinet/in.h: netinet_in.in.h $(top_builddir)/config.status
@@ -5595,6 +6064,163 @@ inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_U
@GL_GENERATE_NETINET_IN_H_FALSE@netinet/in.h: $(top_builddir)/config.status
@GL_GENERATE_NETINET_IN_H_FALSE@ rm -f $@
+# We need the following in order to create <pthread.h> when the system
+# doesn't have one that works with the given compiler.
+pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_PTHREAD_H''@|$(HAVE_PTHREAD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_PTHREAD_H''@|$(NEXT_PTHREAD_H)|g' \
+ -e 's/@''GNULIB_PTHREAD_THREAD''@/$(GNULIB_PTHREAD_THREAD)/g' \
+ -e 's/@''GNULIB_PTHREAD_ONCE''@/$(GNULIB_PTHREAD_ONCE)/g' \
+ -e 's/@''GNULIB_PTHREAD_MUTEX''@/$(GNULIB_PTHREAD_MUTEX)/g' \
+ -e 's/@''GNULIB_PTHREAD_RWLOCK''@/$(GNULIB_PTHREAD_RWLOCK)/g' \
+ -e 's/@''GNULIB_PTHREAD_COND''@/$(GNULIB_PTHREAD_COND)/g' \
+ -e 's/@''GNULIB_PTHREAD_TSS''@/$(GNULIB_PTHREAD_TSS)/g' \
+ -e 's/@''GNULIB_PTHREAD_SPIN''@/$(GNULIB_PTHREAD_SPIN)/g' \
+ -e 's/@''GNULIB_PTHREAD_MUTEX_TIMEDLOCK''@/$(GNULIB_PTHREAD_MUTEX_TIMEDLOCK)/g' \
+ -e 's|@''HAVE_PTHREAD_T''@|$(HAVE_PTHREAD_T)|g' \
+ -e 's|@''HAVE_PTHREAD_SPINLOCK_T''@|$(HAVE_PTHREAD_SPINLOCK_T)|g' \
+ -e 's|@''HAVE_PTHREAD_CREATE_DETACHED''@|$(HAVE_PTHREAD_CREATE_DETACHED)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_RECURSIVE''@|$(HAVE_PTHREAD_MUTEX_RECURSIVE)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_ROBUST''@|$(HAVE_PTHREAD_MUTEX_ROBUST)|g' \
+ -e 's|@''HAVE_PTHREAD_PROCESS_SHARED''@|$(HAVE_PTHREAD_PROCESS_SHARED)|g' \
+ -e 's|@''HAVE_PTHREAD_CREATE''@|$(HAVE_PTHREAD_CREATE)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_INIT''@|$(HAVE_PTHREAD_ATTR_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_GETDETACHSTATE''@|$(HAVE_PTHREAD_ATTR_GETDETACHSTATE)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_SETDETACHSTATE''@|$(HAVE_PTHREAD_ATTR_SETDETACHSTATE)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_DESTROY''@|$(HAVE_PTHREAD_ATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_SELF''@|$(HAVE_PTHREAD_SELF)|g' \
+ -e 's|@''HAVE_PTHREAD_EQUAL''@|$(HAVE_PTHREAD_EQUAL)|g' \
+ -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' \
+ -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' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_GETTYPE''@|$(HAVE_PTHREAD_MUTEXATTR_GETTYPE)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_SETTYPE''@|$(HAVE_PTHREAD_MUTEXATTR_SETTYPE)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_GETROBUST''@|$(HAVE_PTHREAD_MUTEXATTR_GETROBUST)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_SETROBUST''@|$(HAVE_PTHREAD_MUTEXATTR_SETROBUST)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_DESTROY''@|$(HAVE_PTHREAD_MUTEXATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_LOCK''@|$(HAVE_PTHREAD_MUTEX_LOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_TRYLOCK''@|$(HAVE_PTHREAD_MUTEX_TRYLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_TIMEDLOCK''@|$(HAVE_PTHREAD_MUTEX_TIMEDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_UNLOCK''@|$(HAVE_PTHREAD_MUTEX_UNLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_DESTROY''@|$(HAVE_PTHREAD_MUTEX_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_INIT''@|$(HAVE_PTHREAD_RWLOCK_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCKATTR_INIT''@|$(HAVE_PTHREAD_RWLOCKATTR_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCKATTR_DESTROY''@|$(HAVE_PTHREAD_RWLOCKATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_RDLOCK''@|$(HAVE_PTHREAD_RWLOCK_RDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_WRLOCK''@|$(HAVE_PTHREAD_RWLOCK_WRLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TRYRDLOCK''@|$(HAVE_PTHREAD_RWLOCK_TRYRDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TRYWRLOCK''@|$(HAVE_PTHREAD_RWLOCK_TRYWRLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK''@|$(HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK''@|$(HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_UNLOCK''@|$(HAVE_PTHREAD_RWLOCK_UNLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_DESTROY''@|$(HAVE_PTHREAD_RWLOCK_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_INIT''@|$(HAVE_PTHREAD_COND_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_CONDATTR_INIT''@|$(HAVE_PTHREAD_CONDATTR_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_CONDATTR_DESTROY''@|$(HAVE_PTHREAD_CONDATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_WAIT''@|$(HAVE_PTHREAD_COND_WAIT)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_TIMEDWAIT''@|$(HAVE_PTHREAD_COND_TIMEDWAIT)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_SIGNAL''@|$(HAVE_PTHREAD_COND_SIGNAL)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_BROADCAST''@|$(HAVE_PTHREAD_COND_BROADCAST)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_DESTROY''@|$(HAVE_PTHREAD_COND_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_KEY_CREATE''@|$(HAVE_PTHREAD_KEY_CREATE)|g' \
+ -e 's|@''HAVE_PTHREAD_SETSPECIFIC''@|$(HAVE_PTHREAD_SETSPECIFIC)|g' \
+ -e 's|@''HAVE_PTHREAD_GETSPECIFIC''@|$(HAVE_PTHREAD_GETSPECIFIC)|g' \
+ -e 's|@''HAVE_PTHREAD_KEY_DELETE''@|$(HAVE_PTHREAD_KEY_DELETE)|g' \
+ -e 's|@''HAVE_PTHREAD_SPIN_INIT''@|$(HAVE_PTHREAD_SPIN_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_SPIN_LOCK''@|$(HAVE_PTHREAD_SPIN_LOCK)|g' \
+ -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' \
+ -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' \
+ -e 's|@''REPLACE_PTHREAD_ATTR_DESTROY''@|$(REPLACE_PTHREAD_ATTR_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_SELF''@|$(REPLACE_PTHREAD_SELF)|g' \
+ -e 's|@''REPLACE_PTHREAD_EQUAL''@|$(REPLACE_PTHREAD_EQUAL)|g' \
+ -e 's|@''REPLACE_PTHREAD_DETACH''@|$(REPLACE_PTHREAD_DETACH)|g' \
+ -e 's|@''REPLACE_PTHREAD_JOIN''@|$(REPLACE_PTHREAD_JOIN)|g' \
+ -e 's|@''REPLACE_PTHREAD_EXIT''@|$(REPLACE_PTHREAD_EXIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_ONCE''@|$(REPLACE_PTHREAD_ONCE)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_INIT''@|$(REPLACE_PTHREAD_MUTEX_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_INIT''@|$(REPLACE_PTHREAD_MUTEXATTR_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_GETTYPE''@|$(REPLACE_PTHREAD_MUTEXATTR_GETTYPE)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_SETTYPE''@|$(REPLACE_PTHREAD_MUTEXATTR_SETTYPE)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_GETROBUST''@|$(REPLACE_PTHREAD_MUTEXATTR_GETROBUST)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_SETROBUST''@|$(REPLACE_PTHREAD_MUTEXATTR_SETROBUST)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_DESTROY''@|$(REPLACE_PTHREAD_MUTEXATTR_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_LOCK''@|$(REPLACE_PTHREAD_MUTEX_LOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_TRYLOCK''@|$(REPLACE_PTHREAD_MUTEX_TRYLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_TIMEDLOCK''@|$(REPLACE_PTHREAD_MUTEX_TIMEDLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_UNLOCK''@|$(REPLACE_PTHREAD_MUTEX_UNLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_DESTROY''@|$(REPLACE_PTHREAD_MUTEX_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_INIT''@|$(REPLACE_PTHREAD_RWLOCK_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCKATTR_INIT''@|$(REPLACE_PTHREAD_RWLOCKATTR_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCKATTR_DESTROY''@|$(REPLACE_PTHREAD_RWLOCKATTR_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_RDLOCK''@|$(REPLACE_PTHREAD_RWLOCK_RDLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_WRLOCK''@|$(REPLACE_PTHREAD_RWLOCK_WRLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_TRYRDLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TRYRDLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_TRYWRLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TRYWRLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK)|g' \
+ -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' \
+ -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' \
+ -e 's|@''REPLACE_PTHREAD_COND_WAIT''@|$(REPLACE_PTHREAD_COND_WAIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_TIMEDWAIT''@|$(REPLACE_PTHREAD_COND_TIMEDWAIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_SIGNAL''@|$(REPLACE_PTHREAD_COND_SIGNAL)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_BROADCAST''@|$(REPLACE_PTHREAD_COND_BROADCAST)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_DESTROY''@|$(REPLACE_PTHREAD_COND_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_KEY_CREATE''@|$(REPLACE_PTHREAD_KEY_CREATE)|g' \
+ -e 's|@''REPLACE_PTHREAD_SETSPECIFIC''@|$(REPLACE_PTHREAD_SETSPECIFIC)|g' \
+ -e 's|@''REPLACE_PTHREAD_GETSPECIFIC''@|$(REPLACE_PTHREAD_GETSPECIFIC)|g' \
+ -e 's|@''REPLACE_PTHREAD_KEY_DELETE''@|$(REPLACE_PTHREAD_KEY_DELETE)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_INIT''@|$(REPLACE_PTHREAD_SPIN_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_LOCK''@|$(REPLACE_PTHREAD_SPIN_LOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_TRYLOCK''@|$(REPLACE_PTHREAD_SPIN_TRYLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_UNLOCK''@|$(REPLACE_PTHREAD_SPIN_UNLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_DESTROY''@|$(REPLACE_PTHREAD_SPIN_DESTROY)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_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 && \
+ mv $@-t $@
+
+# We need the following in order to create a replacement for <sched.h> when
+# the system doesn't have one.
+sched.h: sched.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_SCHED_H''@|$(HAVE_SCHED_H)|g' \
+ -e 's|@''HAVE_SYS_CDEFS_H''@|$(HAVE_SYS_CDEFS_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_SCHED_H''@|$(NEXT_SCHED_H)|g' \
+ -e 's|@''HAVE_STRUCT_SCHED_PARAM''@|$(HAVE_STRUCT_SCHED_PARAM)|g' \
+ -e 's/@''GNULIB_SCHED_YIELD''@/$(GNULIB_SCHED_YIELD)/g' \
+ -e 's|@''HAVE_SCHED_YIELD''@|$(HAVE_SCHED_YIELD)|g' \
+ -e 's|@''REPLACE_SCHED_YIELD''@|$(REPLACE_SCHED_YIELD)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/sched.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
# We need the following in order to create <signal.h> when the system
# doesn't have a complete one.
signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
diff --git a/gnulib-tests/_Noreturn.h b/gnulib-tests/_Noreturn.h
index 94fdfaf..0d4b9c2 100644
--- a/gnulib-tests/_Noreturn.h
+++ b/gnulib-tests/_Noreturn.h
@@ -1,8 +1,34 @@
+/* A C macro for declaring that a function does not return.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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 _Noreturn
-# if 201103 <= (defined __cplusplus ? __cplusplus : 0)
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
-# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
- || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
/* _Noreturn works as-is. */
# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
# define _Noreturn __attribute__ ((__noreturn__))
diff --git a/gnulib-tests/accept.c b/gnulib-tests/accept.c
index 9659c71..9be0211 100644
--- a/gnulib-tests/accept.c
+++ b/gnulib-tests/accept.c
@@ -1,6 +1,6 @@
/* accept.c --- wrappers for Windows accept function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/arg-nonnull.h b/gnulib-tests/arg-nonnull.h
index 5f03408..ac26ca8 100644
--- a/gnulib-tests/arg-nonnull.h
+++ b/gnulib-tests/arg-nonnull.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that specific arguments must not be NULL.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program 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/gnulib-tests/arpa_inet.in.h b/gnulib-tests/arpa_inet.in.h
index 3253d79..9f13d48 100644
--- a/gnulib-tests/arpa_inet.in.h
+++ b/gnulib-tests/arpa_inet.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <arpa/inet.h>.
- Copyright (C) 2005-2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2006, 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -49,6 +49,12 @@
#ifndef _@GUARD_PREFIX@_ARPA_INET_H
#define _@GUARD_PREFIX@_ARPA_INET_H
+/* Get all possible declarations of inet_ntop() and inet_pton(). */
+#if (@GNULIB_INET_NTOP@ || @GNULIB_INET_PTON@ || defined GNULIB_POSIXCHECK) \
+ && @HAVE_WS2TCPIP_H@
+# include <ws2tcpip.h>
+#endif
+
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_ARG_NONNULL is copied here. */
@@ -70,8 +76,8 @@
the return value is NULL and errno is set to ENOSPC. A good value
for CNT is 46.
- For more details, see the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/inet_ntop.html>. */
+ For more details, see the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntop.html>. */
# if @REPLACE_INET_NTOP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef inet_ntop
@@ -97,7 +103,9 @@ _GL_CXXALIAS_SYS_CAST (inet_ntop, const char *,
(int af, const void *restrict src,
char *restrict dst, socklen_t cnt));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (inet_ntop);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef inet_ntop
# if HAVE_RAW_DECL_INET_NTOP
@@ -126,7 +134,9 @@ _GL_FUNCDECL_SYS (inet_pton, int,
_GL_CXXALIAS_SYS (inet_pton, int,
(int af, const char *restrict src, void *restrict dst));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (inet_pton);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef inet_pton
# if HAVE_RAW_DECL_INET_PTON
diff --git a/gnulib-tests/bind.c b/gnulib-tests/bind.c
index 5c3556d..3c60a76 100644
--- a/gnulib-tests/bind.c
+++ b/gnulib-tests/bind.c
@@ -1,6 +1,6 @@
/* bind.c --- wrappers for Windows bind function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/c++defs.h b/gnulib-tests/c++defs.h
index 72ff1ff..7a05763 100644
--- a/gnulib-tests/c++defs.h
+++ b/gnulib-tests/c++defs.h
@@ -1,5 +1,5 @@
/* C++ compatible function declaration macros.
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program 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/gnulib-tests/cloexec.c b/gnulib-tests/cloexec.c
index 238ab18..510be3d 100644
--- a/gnulib-tests/cloexec.c
+++ b/gnulib-tests/cloexec.c
@@ -1,6 +1,6 @@
/* cloexec.c - set or clear the close-on-exec descriptor flag
- Copyright (C) 1991, 2004-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1991, 2004-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/cloexec.h b/gnulib-tests/cloexec.h
index 5902805..f14a997 100644
--- a/gnulib-tests/cloexec.h
+++ b/gnulib-tests/cloexec.h
@@ -1,6 +1,6 @@
/* cloexec.c - set or clear the close-on-exec descriptor flag
- Copyright (C) 2004, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/close.c b/gnulib-tests/close.c
index 01c326a..0c8780d 100644
--- a/gnulib-tests/close.c
+++ b/gnulib-tests/close.c
@@ -1,5 +1,5 @@
/* close replacement.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/closedir.c b/gnulib-tests/closedir.c
index 562a3ec..9afaa1f 100644
--- a/gnulib-tests/closedir.c
+++ b/gnulib-tests/closedir.c
@@ -1,5 +1,5 @@
/* Stop reading the entries of a directory.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/connect.c b/gnulib-tests/connect.c
index 300a594..aaf36c8 100644
--- a/gnulib-tests/connect.c
+++ b/gnulib-tests/connect.c
@@ -1,6 +1,6 @@
/* connect.c --- wrappers for Windows connect function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/dfa-invalid-char-class.sh b/gnulib-tests/dfa-invalid-char-class.sh
index 5ddd1b6..8e8824d 100755
--- a/gnulib-tests/dfa-invalid-char-class.sh
+++ b/gnulib-tests/dfa-invalid-char-class.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# This use of our DFA-testing helper would fail for grep-2.21.
-# Copyright 2014-2018 Free Software Foundation, Inc.
+# Copyright 2014-2020 Free Software Foundation, Inc.
# This 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,7 +24,7 @@ path_prepend_ .
fail=0
echo 'dfaerror: invalid character class' > exp
-LC_ALL=C dfa-match-aux '[[:foo:]]' a > out 2>&1
+LC_ALL=C ${CHECKER} dfa-match-aux '[[:foo:]]' a > out 2>&1
compare exp out || fail=1
Exit $fail
diff --git a/gnulib-tests/dfa-match-aux.c b/gnulib-tests/dfa-match-aux.c
index 85b0b5b..e0c5f3d 100644
--- a/gnulib-tests/dfa-match-aux.c
+++ b/gnulib-tests/dfa-match-aux.c
@@ -1,6 +1,6 @@
/* Auxiliary program to test a DFA code path that cannot be triggered
by grep or gawk.
- Copyright 2014-2018 Free Software Foundation, Inc.
+ Copyright 2014-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/dfa-match.sh b/gnulib-tests/dfa-match.sh
index 1923c2d..bc9e1dc 100755
--- a/gnulib-tests/dfa-match.sh
+++ b/gnulib-tests/dfa-match.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# This would fail with grep-2.21's dfa.c.
-# Copyright 2014-2018 Free Software Foundation, Inc.
+# Copyright 2014-2020 Free Software Foundation, Inc.
# This 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,11 +33,11 @@ fi
fail=0
-dfa-match-aux a ba 0 > out || fail=1
+${CHECKER} dfa-match-aux a ba 0 > out || fail=1
compare /dev/null out || fail=1
in=$(printf "bb\nbb")
-$timeout_10 dfa-match-aux a "$in" 1 > out || fail=1
+$timeout_10 ${CHECKER} dfa-match-aux a "$in" 1 > out || fail=1
compare /dev/null out || fail=1
Exit $fail
diff --git a/gnulib-tests/dirent-private.h b/gnulib-tests/dirent-private.h
index 69edcc5..4b4eba4 100644
--- a/gnulib-tests/dirent-private.h
+++ b/gnulib-tests/dirent-private.h
@@ -1,5 +1,5 @@
/* Private details of the DIR type.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/dirent.in.h b/gnulib-tests/dirent.in.h
index 2ab25af..f7c2681 100644
--- a/gnulib-tests/dirent.in.h
+++ b/gnulib-tests/dirent.in.h
@@ -1,5 +1,5 @@
/* A GNU-like <dirent.h>.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/dirfd.c b/gnulib-tests/dirfd.c
index 19c8046..f653977 100644
--- a/gnulib-tests/dirfd.c
+++ b/gnulib-tests/dirfd.c
@@ -1,6 +1,6 @@
/* dirfd.c -- return the file descriptor associated with an open DIR*
- Copyright (C) 2001, 2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2006, 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/dup2.c b/gnulib-tests/dup2.c
index c7d1767..88ef259 100644
--- a/gnulib-tests/dup2.c
+++ b/gnulib-tests/dup2.c
@@ -1,6 +1,6 @@
/* Duplicate an open file descriptor to a specified file descriptor.
- Copyright (C) 1999, 2004-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2004-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/fcntl.c b/gnulib-tests/fcntl.c
index 74e0f5d..6b9927e 100644
--- a/gnulib-tests/fcntl.c
+++ b/gnulib-tests/fcntl.c
@@ -1,6 +1,6 @@
/* Provide file descriptor control.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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 @@
#include <errno.h>
#include <limits.h>
#include <stdarg.h>
+#include <stdlib.h>
#include <unistd.h>
#ifdef __KLIBC__
@@ -545,7 +546,7 @@ rpl_fcntl_DUPFD_CLOEXEC (int fd, int target)
#ifdef __KLIBC__
static int
-klibc_fcntl (int fd, int action, /* arg */...);
+klibc_fcntl (int fd, int action, /* arg */...)
{
va_list arg_ptr;
int arg;
diff --git a/gnulib-tests/fd-hook.c b/gnulib-tests/fd-hook.c
index 95a0662..8840f63 100644
--- a/gnulib-tests/fd-hook.c
+++ b/gnulib-tests/fd-hook.c
@@ -1,5 +1,5 @@
/* Hook for making file descriptor functions close(), ioctl() extensible.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2009.
This program is free software: you can redistribute it and/or modify it
diff --git a/gnulib-tests/fd-hook.h b/gnulib-tests/fd-hook.h
index dbc5b67..ed1a15a 100644
--- a/gnulib-tests/fd-hook.h
+++ b/gnulib-tests/fd-hook.h
@@ -1,5 +1,5 @@
/* Hook for making file descriptor functions close(), ioctl() extensible.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program 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/gnulib-tests/fdopen.c b/gnulib-tests/fdopen.c
index 669d85d..b0f13fa 100644
--- a/gnulib-tests/fdopen.c
+++ b/gnulib-tests/fdopen.c
@@ -1,5 +1,5 @@
/* Open a stream with a given file descriptor.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/fflush.c b/gnulib-tests/fflush.c
index a140b7a..b3a40e8 100644
--- a/gnulib-tests/fflush.c
+++ b/gnulib-tests/fflush.c
@@ -1,5 +1,5 @@
/* fflush.c -- allow flushing input streams
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -159,25 +159,28 @@ rpl_fflush (FILE *stream)
#else
{
- /* Notes about the file-position indicator:
- 1) The file position indicator is incremented by fgetc() and decremented
+ /* What POSIX says:
+ 1) About the file-position indicator (-> fseeko, ftello):
+ The file position indicator is incremented by fgetc() and decremented
by ungetc():
- <http://www.opengroup.org/susv3/functions/fgetc.html>
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fgetc.html>
"... the fgetc() function shall ... advance the associated file
position indicator for the stream ..."
- <http://www.opengroup.org/susv3/functions/ungetc.html>
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/ungetc.html>
"The file-position indicator is decremented by each successful
call to ungetc()..."
- 2) <http://www.opengroup.org/susv3/functions/ungetc.html> says:
- "The value of the file-position indicator for the stream after
- reading or discarding all pushed-back bytes shall be the same
- as it was before the bytes were pushed back."
- Here we are discarding all pushed-back bytes. But more specifically,
- 3) <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> says:
- "[After fflush(),] the file offset of the underlying open file
- description shall be set to the file position of the stream, and
- any characters pushed back onto the stream by ungetc() ... shall
- be discarded." */
+ 2) fflush discards bytes pushed back by ungetc:
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fflush.html>
+ "...any characters pushed back onto the stream by ungetc()
+ or ungetwc() that have not subsequently been read from the
+ stream shall be discarded..."
+ This implies implicitly: fflush does not change the file position
+ indicator.
+ 3) Effects on the file descriptor, if the file descriptor is capable of
+ seeking:
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fflush.html>
+ "...the file offset of the underlying open file description shall
+ be set to the file position of the stream..." */
/* POSIX does not specify fflush behavior for non-seekable input
streams. Some implementations purge unread data, some return
diff --git a/gnulib-tests/file-has-acl.c b/gnulib-tests/file-has-acl.c
index 97fb08a..c667ae9 100644
--- a/gnulib-tests/file-has-acl.c
+++ b/gnulib-tests/file-has-acl.c
@@ -1,6 +1,6 @@
/* Test whether a file has a nontrivial ACL. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/fpurge.c b/gnulib-tests/fpurge.c
index f9c82cd..f05da5a 100644
--- a/gnulib-tests/fpurge.c
+++ b/gnulib-tests/fpurge.c
@@ -1,5 +1,5 @@
/* Flushing buffers of a FILE stream.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/freading.c b/gnulib-tests/freading.c
index 790f92c..f4dab78 100644
--- a/gnulib-tests/freading.c
+++ b/gnulib-tests/freading.c
@@ -1,5 +1,5 @@
/* Retrieve information about a FILE stream.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/freading.h b/gnulib-tests/freading.h
index 31d71fd..6c5592e 100644
--- a/gnulib-tests/freading.h
+++ b/gnulib-tests/freading.h
@@ -1,5 +1,5 @@
/* Retrieve information about a FILE stream.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/fseek.c b/gnulib-tests/fseek.c
index e0b5877..81f35a2 100644
--- a/gnulib-tests/fseek.c
+++ b/gnulib-tests/fseek.c
@@ -1,5 +1,5 @@
/* An fseek() function that, together with fflush(), is POSIX compliant.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/fseeko.c b/gnulib-tests/fseeko.c
index 5bd7d66..9c0b7a9 100644
--- a/gnulib-tests/fseeko.c
+++ b/gnulib-tests/fseeko.c
@@ -1,5 +1,5 @@
/* An fseeko() function that, together with fflush(), is POSIX compliant.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/ftell.c b/gnulib-tests/ftell.c
index 74a1da8..234c193 100644
--- a/gnulib-tests/ftell.c
+++ b/gnulib-tests/ftell.c
@@ -1,5 +1,5 @@
/* An ftell() function that works around platform bugs.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/ftello.c b/gnulib-tests/ftello.c
index 495c254..43d4a4d 100644
--- a/gnulib-tests/ftello.c
+++ b/gnulib-tests/ftello.c
@@ -1,5 +1,5 @@
/* An ftello() function that works around platform bugs.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/ftruncate.c b/gnulib-tests/ftruncate.c
index 80cb480..a185637 100644
--- a/gnulib-tests/ftruncate.c
+++ b/gnulib-tests/ftruncate.c
@@ -1,5 +1,5 @@
/* ftruncate emulations for native Windows.
- Copyright (C) 1992-2018 Free Software Foundation, Inc.
+ Copyright (C) 1992-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/getcwd-lgpl.c b/gnulib-tests/getcwd-lgpl.c
index 9f0e007..fca6bde 100644
--- a/gnulib-tests/getcwd-lgpl.c
+++ b/gnulib-tests/getcwd-lgpl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
This file is part of gnulib.
This program is free software: you can redistribute it and/or modify
@@ -115,10 +115,15 @@ rpl_getcwd (char *buf, size_t size)
}
else
{
- /* Trim to fit, if possible. */
- result = realloc (buf, strlen (buf) + 1);
- if (!result)
- result = buf;
+ /* Here result == buf. */
+ /* Shrink result before returning it. */
+ size_t actual_size = strlen (result) + 1;
+ if (actual_size < size)
+ {
+ char *shrinked_result = realloc (result, actual_size);
+ if (shrinked_result != NULL)
+ result = shrinked_result;
+ }
}
return result;
}
diff --git a/gnulib-tests/getdtablesize.c b/gnulib-tests/getdtablesize.c
index ac05bc4..0fe7092 100644
--- a/gnulib-tests/getdtablesize.c
+++ b/gnulib-tests/getdtablesize.c
@@ -1,5 +1,5 @@
/* getdtablesize() function: Return maximum possible file descriptor value + 1.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/getpagesize.c b/gnulib-tests/getpagesize.c
index 9e79ed6..0ce5ae5 100644
--- a/gnulib-tests/getpagesize.c
+++ b/gnulib-tests/getpagesize.c
@@ -1,6 +1,6 @@
/* getpagesize emulation for systems where it cannot be done in a C macro.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/glthread/thread.c b/gnulib-tests/glthread/thread.c
new file mode 100644
index 0000000..08ef339
--- /dev/null
+++ b/gnulib-tests/glthread/thread.c
@@ -0,0 +1,205 @@
+/* Creating and controlling threads.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-win32.h. */
+
+#include <config.h>
+
+/* Specification. */
+# define _GLTHREAD_THREAD_INLINE _GL_EXTERN_INLINE
+#include "glthread/thread.h"
+
+#include <stdlib.h>
+#include "glthread/lock.h"
+
+/* ========================================================================= */
+
+#if USE_ISOC_THREADS
+
+struct thrd_with_exitvalue
+{
+ thrd_t volatile tid;
+ void * volatile exitvalue;
+};
+
+/* The Thread-Specific Storage (TSS) key that allows to access each thread's
+ 'struct thrd_with_exitvalue *' pointer. */
+static tss_t thrd_with_exitvalue_key;
+
+/* Initializes thrd_with_exitvalue_key.
+ This function must only be called once. */
+static void
+do_init_thrd_with_exitvalue_key (void)
+{
+ if (tss_create (&thrd_with_exitvalue_key, NULL) != thrd_success)
+ abort ();
+}
+
+/* Initializes thrd_with_exitvalue_key. */
+static void
+init_thrd_with_exitvalue_key (void)
+{
+ static once_flag once = ONCE_FLAG_INIT;
+ call_once (&once, do_init_thrd_with_exitvalue_key);
+}
+
+typedef union
+ {
+ struct thrd_with_exitvalue t;
+ struct
+ {
+ thrd_t tid; /* reserve memory for t.tid */
+ void *(*mainfunc) (void *);
+ void *arg;
+ } a;
+ }
+ main_arg_t;
+
+static int
+thrd_main_func (void *pmarg)
+{
+ /* Unpack the object that combines mainfunc and arg. */
+ main_arg_t *main_arg = (main_arg_t *) pmarg;
+ void *(*mainfunc) (void *) = main_arg->a.mainfunc;
+ void *arg = main_arg->a.arg;
+
+ if (tss_set (thrd_with_exitvalue_key, &main_arg->t) != thrd_success)
+ abort ();
+
+ /* Execute mainfunc, with arg as argument. */
+ {
+ void *exitvalue = mainfunc (arg);
+ /* Store the exitvalue, for use by glthread_join(). */
+ main_arg->t.exitvalue = exitvalue;
+ return 0;
+ }
+}
+
+int
+glthread_create (gl_thread_t *threadp, void *(*mainfunc) (void *), void *arg)
+{
+ init_thrd_with_exitvalue_key ();
+ {
+ /* Combine mainfunc and arg in a single object.
+ A stack-allocated object does not work, because it would be out of
+ existence when thrd_create returns before thrd_main_func is
+ entered. So, allocate it in the heap. */
+ main_arg_t *main_arg = (main_arg_t *) malloc (sizeof (main_arg_t));
+ if (main_arg == NULL)
+ return ENOMEM;
+ main_arg->a.mainfunc = mainfunc;
+ main_arg->a.arg = arg;
+ switch (thrd_create ((thrd_t *) &main_arg->t.tid, thrd_main_func, main_arg))
+ {
+ case thrd_success:
+ break;
+ case thrd_nomem:
+ free (main_arg);
+ return ENOMEM;
+ default:
+ free (main_arg);
+ return EAGAIN;
+ }
+ *threadp = &main_arg->t;
+ return 0;
+ }
+}
+
+gl_thread_t
+gl_thread_self (void)
+{
+ init_thrd_with_exitvalue_key ();
+ {
+ gl_thread_t thread =
+ (struct thrd_with_exitvalue *) tss_get (thrd_with_exitvalue_key);
+ if (thread == NULL)
+ {
+ /* This happens only in threads that have not been created through
+ glthread_create(), such as the main thread. */
+ for (;;)
+ {
+ thread =
+ (struct thrd_with_exitvalue *)
+ malloc (sizeof (struct thrd_with_exitvalue));
+ if (thread != NULL)
+ break;
+ /* 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;
+ thrd_sleep (&ts, NULL);
+ }
+ }
+ thread->tid = thrd_current ();
+ thread->exitvalue = NULL; /* just to be deterministic */
+ if (tss_set (thrd_with_exitvalue_key, thread) != thrd_success)
+ abort ();
+ }
+ return thread;
+ }
+}
+
+int
+glthread_join (gl_thread_t thread, void **return_value_ptr)
+{
+ /* On Solaris 11.4, thrd_join crashes when the second argument we pass is
+ NULL. */
+ int dummy;
+
+ if (thread == gl_thread_self ())
+ return EINVAL;
+ if (thrd_join (thread->tid, &dummy) != thrd_success)
+ return EINVAL;
+ if (return_value_ptr != NULL)
+ *return_value_ptr = thread->exitvalue;
+ free (thread);
+ return 0;
+}
+
+_Noreturn void
+gl_thread_exit (void *return_value)
+{
+ gl_thread_t thread = gl_thread_self ();
+ thread->exitvalue = return_value;
+ thrd_exit (0);
+}
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS
+
+#include <pthread.h>
+
+#if defined PTW32_VERSION || defined __MVS__
+
+const gl_thread_t gl_null_thread /* = { .p = NULL } */;
+
+#endif
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_WINDOWS_THREADS
+
+#endif
+
+/* ========================================================================= */
diff --git a/gnulib-tests/glthread/thread.h b/gnulib-tests/glthread/thread.h
new file mode 100644
index 0000000..a980e65
--- /dev/null
+++ b/gnulib-tests/glthread/thread.h
@@ -0,0 +1,356 @@
+/* Creating and controlling threads.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-win32.h. */
+
+/* This file contains primitives for creating and controlling threads.
+
+ Thread data type: gl_thread_t.
+
+ Creating a thread:
+ thread = gl_thread_create (func, arg);
+ Or with control of error handling:
+ err = glthread_create (&thread, func, arg);
+ extern int glthread_create (gl_thread_t *result,
+ void *(*func) (void *), void *arg);
+
+ Querying and changing the signal mask of a thread (not supported on all
+ platforms):
+ gl_thread_sigmask (how, newmask, oldmask);
+ Or with control of error handling:
+ err = glthread_sigmask (how, newmask, oldmask);
+ extern int glthread_sigmask (int how, const sigset_t *newmask, sigset_t *oldmask);
+
+ Waiting for termination of another thread:
+ gl_thread_join (thread, &return_value);
+ Or with control of error handling:
+ err = glthread_join (thread, &return_value);
+ extern int glthread_join (gl_thread_t thread, void **return_value_ptr);
+
+ Getting a reference to the current thread:
+ current = gl_thread_self ();
+ extern gl_thread_t gl_thread_self (void);
+
+ Getting a reference to the current thread as a pointer, for debugging:
+ ptr = gl_thread_self_pointer ();
+ extern void * gl_thread_self_pointer (void);
+
+ Terminating the current thread:
+ gl_thread_exit (return_value);
+ extern _Noreturn void gl_thread_exit (void *return_value);
+
+ Requesting custom code to be executed at fork() time (not supported on all
+ platforms):
+ gl_thread_atfork (prepare_func, parent_func, child_func);
+ Or with control of error handling:
+ err = glthread_atfork (prepare_func, parent_func, child_func);
+ extern int glthread_atfork (void (*prepare_func) (void),
+ void (*parent_func) (void),
+ void (*child_func) (void));
+ Note that even on platforms where this is supported, use of fork() and
+ threads together is problematic, see
+ <https://lists.gnu.org/r/bug-gnulib/2008-08/msg00062.html>
+ */
+
+
+#ifndef _GLTHREAD_THREAD_H
+#define _GLTHREAD_THREAD_H
+
+#include <errno.h>
+#include <stdlib.h>
+
+#if !defined c11_threads_in_use
+# if HAVE_THREADS_H && USE_POSIX_THREADS_WEAK
+# include <threads.h>
+# pragma weak thrd_exit
+# define c11_threads_in_use() (thrd_exit != NULL)
+# else
+# define c11_threads_in_use() 0
+# endif
+#endif
+
+#ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GLTHREAD_THREAD_INLINE
+# define _GLTHREAD_THREAD_INLINE _GL_INLINE
+#endif
+
+/* ========================================================================= */
+
+#if USE_ISOC_THREADS
+
+/* Use the ISO C threads library. */
+
+# include <threads.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* -------------------------- gl_thread_t datatype -------------------------- */
+
+typedef struct thrd_with_exitvalue *gl_thread_t;
+extern int glthread_create (gl_thread_t *threadp,
+ void *(*func) (void *), void *arg);
+# define glthread_sigmask(HOW, SET, OSET) \
+ pthread_sigmask (HOW, SET, OSET)
+extern int glthread_join (gl_thread_t thread, void **return_value_ptr);
+extern gl_thread_t gl_thread_self (void);
+# define gl_thread_self_pointer() \
+ (void *) gl_thread_self ()
+extern _Noreturn void gl_thread_exit (void *return_value);
+# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS
+
+/* Use the POSIX threads library. */
+
+# include <pthread.h>
+
+/* On IRIX, pthread_atfork is declared in <unistd.h>, not in <pthread.h>. */
+# if defined __sgi
+# include <unistd.h>
+# endif
+
+# if USE_POSIX_THREADS_WEAK
+/* Compilers other than GCC need to see the declaration of pthread_sigmask
+ before the "#pragma weak pthread_sigmask" below. */
+# include <signal.h>
+# endif
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# if PTHREAD_IN_USE_DETECTION_HARD
+
+/* The pthread_in_use() detection needs to be done at runtime. */
+# define pthread_in_use() \
+ glthread_in_use ()
+extern int glthread_in_use (void);
+
+# endif
+
+# if USE_POSIX_THREADS_WEAK
+
+/* Use weak references to the POSIX threads library. */
+
+/* Weak references avoid dragging in external libraries if the other parts
+ of the program don't use them. Here we use them, because we don't want
+ every program that uses libintl to depend on libpthread. This assumes
+ that libpthread would not be loaded after libintl; i.e. if libintl is
+ loaded first, by an executable that does not depend on libpthread, and
+ then a module is dynamically loaded that depends on libpthread, libintl
+ will not be multithread-safe. */
+
+/* The way to test at runtime whether libpthread is present is to test
+ whether a function pointer's value, such as &pthread_mutex_init, is
+ non-NULL. However, some versions of GCC have a bug through which, in
+ PIC mode, &foo != NULL always evaluates to true if there is a direct
+ call to foo(...) in the same function. To avoid this, we test the
+ address of a function in libpthread that we don't use. */
+
+# ifndef pthread_sigmask /* Do not declare rpl_pthread_sigmask weak. */
+# pragma weak pthread_sigmask
+# endif
+
+# pragma weak pthread_join
+# ifndef pthread_self
+# pragma weak pthread_self
+# endif
+# pragma weak pthread_exit
+# if HAVE_PTHREAD_ATFORK
+# pragma weak pthread_atfork
+# endif
+
+# if !PTHREAD_IN_USE_DETECTION_HARD
+# pragma weak pthread_mutexattr_gettype
+# define pthread_in_use() \
+ (pthread_mutexattr_gettype != NULL || c11_threads_in_use ())
+# endif
+
+# else
+
+# if !PTHREAD_IN_USE_DETECTION_HARD
+# define pthread_in_use() 1
+# endif
+
+# endif
+
+/* -------------------------- gl_thread_t datatype -------------------------- */
+
+/* This choice of gl_thread_t assumes that
+ pthread_equal (a, b) is equivalent to ((a) == (b)).
+ This is the case on all platforms in use in 2008. */
+typedef pthread_t gl_thread_t;
+# define glthread_create(THREADP, FUNC, ARG) \
+ (pthread_in_use () ? pthread_create (THREADP, NULL, FUNC, ARG) : ENOSYS)
+# define glthread_sigmask(HOW, SET, OSET) \
+ (pthread_in_use () ? pthread_sigmask (HOW, SET, OSET) : 0)
+# define glthread_join(THREAD, RETVALP) \
+ (pthread_in_use () ? pthread_join (THREAD, RETVALP) : 0)
+# ifdef PTW32_VERSION
+ /* In pthreads-win32, pthread_t is a struct with a pointer field 'p' and
+ other fields. */
+# define gl_thread_self() \
+ (pthread_in_use () ? pthread_self () : gl_null_thread)
+# define gl_thread_self_pointer() \
+ (pthread_in_use () ? pthread_self ().p : NULL)
+extern const gl_thread_t gl_null_thread;
+# elif defined __MVS__
+ /* On IBM z/OS, pthread_t is a struct with an 8-byte '__' field.
+ The first three bytes of this field appear to uniquely identify a
+ pthread_t, though not necessarily representing a pointer. */
+# define gl_thread_self() \
+ (pthread_in_use () ? pthread_self () : gl_null_thread)
+# define gl_thread_self_pointer() \
+ (pthread_in_use () ? *((void **) pthread_self ().__) : NULL)
+extern const gl_thread_t gl_null_thread;
+# else
+# define gl_thread_self() \
+ (pthread_in_use () ? pthread_self () : (pthread_t) NULL)
+# define gl_thread_self_pointer() \
+ (pthread_in_use () ? (void *) pthread_self () : NULL)
+# endif
+# define gl_thread_exit(RETVAL) \
+ (pthread_in_use () ? pthread_exit (RETVAL) : 0)
+
+# if HAVE_PTHREAD_ATFORK
+# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) \
+ (pthread_in_use () ? pthread_atfork (PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) : 0)
+# else
+# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0
+# endif
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if USE_WINDOWS_THREADS
+
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
+
+# include "windows-thread.h"
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* -------------------------- gl_thread_t datatype -------------------------- */
+
+typedef glwthread_thread_t gl_thread_t;
+# define glthread_create(THREADP, FUNC, ARG) \
+ glwthread_thread_create (THREADP, 0, FUNC, ARG)
+# define glthread_sigmask(HOW, SET, OSET) \
+ /* unsupported */ 0
+# define glthread_join(THREAD, RETVALP) \
+ glwthread_thread_join (THREAD, RETVALP)
+# define gl_thread_self() \
+ glwthread_thread_self ()
+# define gl_thread_self_pointer() \
+ gl_thread_self ()
+# define gl_thread_exit(RETVAL) \
+ glwthread_thread_exit (RETVAL)
+# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
+/* ========================================================================= */
+
+#if !(USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS)
+
+/* Provide dummy implementation if threads are not supported. */
+
+typedef int gl_thread_t;
+# define glthread_create(THREADP, FUNC, ARG) ENOSYS
+# define glthread_sigmask(HOW, SET, OSET) 0
+# define glthread_join(THREAD, RETVALP) 0
+# define gl_thread_self() 0
+# define gl_thread_self_pointer() \
+ ((void *) gl_thread_self ())
+# define gl_thread_exit(RETVAL) 0
+# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0
+
+#endif
+
+/* ========================================================================= */
+
+/* Macros with built-in error handling. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_GLTHREAD_THREAD_INLINE gl_thread_t
+gl_thread_create (void *(*func) (void *arg), void *arg)
+{
+ gl_thread_t thread;
+ int ret;
+
+ ret = glthread_create (&thread, func, arg);
+ if (ret != 0)
+ abort ();
+ return thread;
+}
+#define gl_thread_sigmask(HOW, SET, OSET) \
+ do \
+ { \
+ if (glthread_sigmask (HOW, SET, OSET)) \
+ abort (); \
+ } \
+ while (0)
+#define gl_thread_join(THREAD, RETVAL) \
+ do \
+ { \
+ if (glthread_join (THREAD, RETVAL)) \
+ abort (); \
+ } \
+ while (0)
+#define gl_thread_atfork(PREPARE, PARENT, CHILD) \
+ do \
+ { \
+ if (glthread_atfork (PREPARE, PARENT, CHILD)) \
+ abort (); \
+ } \
+ while (0)
+
+#ifdef __cplusplus
+}
+#endif
+
+_GL_INLINE_HEADER_END
+
+#endif /* _GLTHREAD_THREAD_H */
diff --git a/gnulib-tests/gnulib.mk b/gnulib-tests/gnulib.mk
index cd6d2a8..62a679f 100644
--- a/gnulib-tests/gnulib.mk
+++ b/gnulib-tests/gnulib.mk
@@ -1,6 +1,6 @@
## DO NOT EDIT! GENERATED AUTOMATICALLY!
## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 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
@@ -22,7 +22,7 @@
#
# Generated by gnulib-tool.
-AUTOMAKE_OPTIONS = 1.11 foreign
+AUTOMAKE_OPTIONS = 1.11 foreign subdir-objects
SUBDIRS = .
TESTS =
@@ -84,9 +84,9 @@ TESTS += \
test-copy-acl.sh test-copy-acl-1.sh test-copy-acl-2.sh
TESTS_ENVIRONMENT += USE_ACL=$(USE_ACL)
check_PROGRAMS += test-set-mode-acl test-copy-acl test-sameacls
-test_set_mode_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
-test_copy_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
-test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@
+test_set_mode_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ $(LIB_MBRTOWC)
+test_copy_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ $(LIB_MBRTOWC)
+test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ $(LIB_MBRTOWC)
EXTRA_DIST += test-set-mode-acl.sh test-set-mode-acl-1.sh test-set-mode-acl-2.sh test-copy-acl.sh test-copy-acl-1.sh test-copy-acl-2.sh test-set-mode-acl.c test-copy-acl.c test-sameacls.c macros.h
## end gnulib module acl-tests
@@ -128,6 +128,7 @@ arpa/inet.h: arpa_inet.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON
-e 's|@''HAVE_ARPA_INET_H''@|$(HAVE_ARPA_INET_H)|g' \
-e 's/@''GNULIB_INET_NTOP''@/$(GNULIB_INET_NTOP)/g' \
-e 's/@''GNULIB_INET_PTON''@/$(GNULIB_INET_PTON)/g' \
+ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
-e 's|@''HAVE_DECL_INET_NTOP''@|$(HAVE_DECL_INET_NTOP)|g' \
-e 's|@''HAVE_DECL_INET_PTON''@|$(HAVE_DECL_INET_PTON)|g' \
-e 's|@''REPLACE_INET_NTOP''@|$(REPLACE_INET_NTOP)|g' \
@@ -185,7 +186,7 @@ EXTRA_DIST += test-bind.c signature.h macros.h
TESTS += test-btowc1.sh test-btowc2.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
## end gnulib module btowc-tests
@@ -194,6 +195,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)
EXTRA_DIST += test-c-ctype.c macros.h
## end gnulib module c-ctype-tests
@@ -203,6 +205,8 @@ 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)
EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c macros.h
## end gnulib module c-strcase-tests
@@ -298,7 +302,7 @@ TESTS += \
dfa-match.sh
check_PROGRAMS += dfa-match-aux
-dfa_match_aux_LDADD = $(LDADD) @LIBINTL@
+dfa_match_aux_LDADD = $(LDADD) $(LIB_SETLOCALE) @LIBINTL@ $(LIB_MBRTOWC)
EXTRA_DIST += dfa-match.sh dfa-match-aux.c dfa-invalid-char-class.sh
## end gnulib module dfa-tests
@@ -496,13 +500,6 @@ EXTRA_DIST += test-file-has-acl.sh test-file-has-acl-1.sh test-file-has-acl-2.sh
## end gnulib module file-has-acl-tests
-## begin gnulib module flexmember
-
-
-EXTRA_DIST += flexmember.h
-
-## end gnulib module flexmember
-
## begin gnulib module fpending-tests
TESTS += test-fpending.sh
@@ -765,6 +762,19 @@ EXTRA_DIST += signature.h test-gettimeofday.c
## end gnulib module gettimeofday-tests
+## begin gnulib module hard-locale-tests
+
+TESTS += test-hard-locale
+check_PROGRAMS += test-hard-locale
+test_hard_locale_LDADD = $(LDADD) $(LIB_SETLOCALE) @LIB_HARD_LOCALE@
+# 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
+current_locale_SOURCES = locale.c
+EXTRA_DIST += test-hard-locale.c locale.c
+
+## end gnulib module hard-locale-tests
+
## begin gnulib module ignore-value-tests
TESTS += test-ignore-value
@@ -799,52 +809,6 @@ EXTRA_DIST += test-intprops.c macros.h
## end gnulib module intprops-tests
-## begin gnulib module inttypes-incomplete
-
-BUILT_SOURCES += inttypes.h
-
-# We need the following in order to create <inttypes.h> when the system
-# doesn't have one that works with the given compiler.
-inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
- $(AM_V_GEN)rm -f $@-t $@ && \
- { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
- -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
- -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
- -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
- -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
- -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
- -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
- -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
- -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
- -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
- -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
- -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
- -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
- -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
- -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
- -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
- -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \
- -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \
- -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \
- -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
- -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
- -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
- -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \
- -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)' \
- < $(srcdir)/inttypes.in.h; \
- } > $@-t && \
- mv $@-t $@
-MOSTLYCLEANFILES += inttypes.h inttypes.h-t
-
-EXTRA_DIST += inttypes.in.h
-
-## end gnulib module inttypes-incomplete
-
## begin gnulib module inttypes-tests
TESTS += test-inttypes
@@ -932,6 +896,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)
EXTRA_DIST += test-localcharset.c
## end gnulib module localcharset-tests
@@ -964,7 +929,7 @@ EXTRA_DIST += localename-table.h localename.h
TESTS += test-localename
check_PROGRAMS += test-localename
-test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
+test_localename_LDADD = $(LDADD) $(LIB_SETLOCALE) @INTL_MACOSX_LIBS@ $(LIBTHREAD)
EXTRA_DIST += test-localename.c macros.h
@@ -1010,14 +975,16 @@ 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-4.sh test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh \
+ test-mbrtowc-w32-7.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
-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.c signature.h macros.h
+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
## end gnulib module mbrtowc-tests
@@ -1026,7 +993,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)
EXTRA_DIST += test-mbsinit.sh test-mbsinit.c signature.h macros.h
## end gnulib module mbsinit-tests
@@ -1114,10 +1081,12 @@ EXTRA_DIST += test-netinet_in.c
## begin gnulib module nl_langinfo-tests
-TESTS += test-nl_langinfo.sh
+TESTS += test-nl_langinfo.sh test-nl_langinfo-mt
TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
-check_PROGRAMS += test-nl_langinfo
-EXTRA_DIST += test-nl_langinfo.sh test-nl_langinfo.c signature.h macros.h
+check_PROGRAMS += test-nl_langinfo test-nl_langinfo-mt
+test_nl_langinfo_LDADD = $(LDADD) $(LIB_SETLOCALE)
+test_nl_langinfo_mt_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIBMULTITHREAD) $(LIB_NANOSLEEP)
+EXTRA_DIST += test-nl_langinfo.sh test-nl_langinfo.c test-nl_langinfo-mt.c signature.h macros.h
## end gnulib module nl_langinfo-tests
@@ -1189,6 +1158,195 @@ EXTRA_DIST += test-pipe.c signature.h macros.h
## end gnulib module pipe-posix-tests
+## begin gnulib module pthread-h
+
+BUILT_SOURCES += pthread.h
+
+# We need the following in order to create <pthread.h> when the system
+# doesn't have one that works with the given compiler.
+pthread.h: pthread.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_PTHREAD_H''@|$(HAVE_PTHREAD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_PTHREAD_H''@|$(NEXT_PTHREAD_H)|g' \
+ -e 's/@''GNULIB_PTHREAD_THREAD''@/$(GNULIB_PTHREAD_THREAD)/g' \
+ -e 's/@''GNULIB_PTHREAD_ONCE''@/$(GNULIB_PTHREAD_ONCE)/g' \
+ -e 's/@''GNULIB_PTHREAD_MUTEX''@/$(GNULIB_PTHREAD_MUTEX)/g' \
+ -e 's/@''GNULIB_PTHREAD_RWLOCK''@/$(GNULIB_PTHREAD_RWLOCK)/g' \
+ -e 's/@''GNULIB_PTHREAD_COND''@/$(GNULIB_PTHREAD_COND)/g' \
+ -e 's/@''GNULIB_PTHREAD_TSS''@/$(GNULIB_PTHREAD_TSS)/g' \
+ -e 's/@''GNULIB_PTHREAD_SPIN''@/$(GNULIB_PTHREAD_SPIN)/g' \
+ -e 's/@''GNULIB_PTHREAD_MUTEX_TIMEDLOCK''@/$(GNULIB_PTHREAD_MUTEX_TIMEDLOCK)/g' \
+ -e 's|@''HAVE_PTHREAD_T''@|$(HAVE_PTHREAD_T)|g' \
+ -e 's|@''HAVE_PTHREAD_SPINLOCK_T''@|$(HAVE_PTHREAD_SPINLOCK_T)|g' \
+ -e 's|@''HAVE_PTHREAD_CREATE_DETACHED''@|$(HAVE_PTHREAD_CREATE_DETACHED)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_RECURSIVE''@|$(HAVE_PTHREAD_MUTEX_RECURSIVE)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_ROBUST''@|$(HAVE_PTHREAD_MUTEX_ROBUST)|g' \
+ -e 's|@''HAVE_PTHREAD_PROCESS_SHARED''@|$(HAVE_PTHREAD_PROCESS_SHARED)|g' \
+ -e 's|@''HAVE_PTHREAD_CREATE''@|$(HAVE_PTHREAD_CREATE)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_INIT''@|$(HAVE_PTHREAD_ATTR_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_GETDETACHSTATE''@|$(HAVE_PTHREAD_ATTR_GETDETACHSTATE)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_SETDETACHSTATE''@|$(HAVE_PTHREAD_ATTR_SETDETACHSTATE)|g' \
+ -e 's|@''HAVE_PTHREAD_ATTR_DESTROY''@|$(HAVE_PTHREAD_ATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_SELF''@|$(HAVE_PTHREAD_SELF)|g' \
+ -e 's|@''HAVE_PTHREAD_EQUAL''@|$(HAVE_PTHREAD_EQUAL)|g' \
+ -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' \
+ -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' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_GETTYPE''@|$(HAVE_PTHREAD_MUTEXATTR_GETTYPE)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_SETTYPE''@|$(HAVE_PTHREAD_MUTEXATTR_SETTYPE)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_GETROBUST''@|$(HAVE_PTHREAD_MUTEXATTR_GETROBUST)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_SETROBUST''@|$(HAVE_PTHREAD_MUTEXATTR_SETROBUST)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEXATTR_DESTROY''@|$(HAVE_PTHREAD_MUTEXATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_LOCK''@|$(HAVE_PTHREAD_MUTEX_LOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_TRYLOCK''@|$(HAVE_PTHREAD_MUTEX_TRYLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_TIMEDLOCK''@|$(HAVE_PTHREAD_MUTEX_TIMEDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_UNLOCK''@|$(HAVE_PTHREAD_MUTEX_UNLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_MUTEX_DESTROY''@|$(HAVE_PTHREAD_MUTEX_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_INIT''@|$(HAVE_PTHREAD_RWLOCK_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCKATTR_INIT''@|$(HAVE_PTHREAD_RWLOCKATTR_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCKATTR_DESTROY''@|$(HAVE_PTHREAD_RWLOCKATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_RDLOCK''@|$(HAVE_PTHREAD_RWLOCK_RDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_WRLOCK''@|$(HAVE_PTHREAD_RWLOCK_WRLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TRYRDLOCK''@|$(HAVE_PTHREAD_RWLOCK_TRYRDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TRYWRLOCK''@|$(HAVE_PTHREAD_RWLOCK_TRYWRLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK''@|$(HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK''@|$(HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_UNLOCK''@|$(HAVE_PTHREAD_RWLOCK_UNLOCK)|g' \
+ -e 's|@''HAVE_PTHREAD_RWLOCK_DESTROY''@|$(HAVE_PTHREAD_RWLOCK_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_INIT''@|$(HAVE_PTHREAD_COND_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_CONDATTR_INIT''@|$(HAVE_PTHREAD_CONDATTR_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_CONDATTR_DESTROY''@|$(HAVE_PTHREAD_CONDATTR_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_WAIT''@|$(HAVE_PTHREAD_COND_WAIT)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_TIMEDWAIT''@|$(HAVE_PTHREAD_COND_TIMEDWAIT)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_SIGNAL''@|$(HAVE_PTHREAD_COND_SIGNAL)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_BROADCAST''@|$(HAVE_PTHREAD_COND_BROADCAST)|g' \
+ -e 's|@''HAVE_PTHREAD_COND_DESTROY''@|$(HAVE_PTHREAD_COND_DESTROY)|g' \
+ -e 's|@''HAVE_PTHREAD_KEY_CREATE''@|$(HAVE_PTHREAD_KEY_CREATE)|g' \
+ -e 's|@''HAVE_PTHREAD_SETSPECIFIC''@|$(HAVE_PTHREAD_SETSPECIFIC)|g' \
+ -e 's|@''HAVE_PTHREAD_GETSPECIFIC''@|$(HAVE_PTHREAD_GETSPECIFIC)|g' \
+ -e 's|@''HAVE_PTHREAD_KEY_DELETE''@|$(HAVE_PTHREAD_KEY_DELETE)|g' \
+ -e 's|@''HAVE_PTHREAD_SPIN_INIT''@|$(HAVE_PTHREAD_SPIN_INIT)|g' \
+ -e 's|@''HAVE_PTHREAD_SPIN_LOCK''@|$(HAVE_PTHREAD_SPIN_LOCK)|g' \
+ -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' \
+ -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' \
+ -e 's|@''REPLACE_PTHREAD_ATTR_DESTROY''@|$(REPLACE_PTHREAD_ATTR_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_SELF''@|$(REPLACE_PTHREAD_SELF)|g' \
+ -e 's|@''REPLACE_PTHREAD_EQUAL''@|$(REPLACE_PTHREAD_EQUAL)|g' \
+ -e 's|@''REPLACE_PTHREAD_DETACH''@|$(REPLACE_PTHREAD_DETACH)|g' \
+ -e 's|@''REPLACE_PTHREAD_JOIN''@|$(REPLACE_PTHREAD_JOIN)|g' \
+ -e 's|@''REPLACE_PTHREAD_EXIT''@|$(REPLACE_PTHREAD_EXIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_ONCE''@|$(REPLACE_PTHREAD_ONCE)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_INIT''@|$(REPLACE_PTHREAD_MUTEX_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_INIT''@|$(REPLACE_PTHREAD_MUTEXATTR_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_GETTYPE''@|$(REPLACE_PTHREAD_MUTEXATTR_GETTYPE)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_SETTYPE''@|$(REPLACE_PTHREAD_MUTEXATTR_SETTYPE)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_GETROBUST''@|$(REPLACE_PTHREAD_MUTEXATTR_GETROBUST)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_SETROBUST''@|$(REPLACE_PTHREAD_MUTEXATTR_SETROBUST)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEXATTR_DESTROY''@|$(REPLACE_PTHREAD_MUTEXATTR_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_LOCK''@|$(REPLACE_PTHREAD_MUTEX_LOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_TRYLOCK''@|$(REPLACE_PTHREAD_MUTEX_TRYLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_TIMEDLOCK''@|$(REPLACE_PTHREAD_MUTEX_TIMEDLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_UNLOCK''@|$(REPLACE_PTHREAD_MUTEX_UNLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_MUTEX_DESTROY''@|$(REPLACE_PTHREAD_MUTEX_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_INIT''@|$(REPLACE_PTHREAD_RWLOCK_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCKATTR_INIT''@|$(REPLACE_PTHREAD_RWLOCKATTR_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCKATTR_DESTROY''@|$(REPLACE_PTHREAD_RWLOCKATTR_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_RDLOCK''@|$(REPLACE_PTHREAD_RWLOCK_RDLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_WRLOCK''@|$(REPLACE_PTHREAD_RWLOCK_WRLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_TRYRDLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TRYRDLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_TRYWRLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TRYWRLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK''@|$(REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK)|g' \
+ -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' \
+ -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' \
+ -e 's|@''REPLACE_PTHREAD_COND_WAIT''@|$(REPLACE_PTHREAD_COND_WAIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_TIMEDWAIT''@|$(REPLACE_PTHREAD_COND_TIMEDWAIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_SIGNAL''@|$(REPLACE_PTHREAD_COND_SIGNAL)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_BROADCAST''@|$(REPLACE_PTHREAD_COND_BROADCAST)|g' \
+ -e 's|@''REPLACE_PTHREAD_COND_DESTROY''@|$(REPLACE_PTHREAD_COND_DESTROY)|g' \
+ -e 's|@''REPLACE_PTHREAD_KEY_CREATE''@|$(REPLACE_PTHREAD_KEY_CREATE)|g' \
+ -e 's|@''REPLACE_PTHREAD_SETSPECIFIC''@|$(REPLACE_PTHREAD_SETSPECIFIC)|g' \
+ -e 's|@''REPLACE_PTHREAD_GETSPECIFIC''@|$(REPLACE_PTHREAD_GETSPECIFIC)|g' \
+ -e 's|@''REPLACE_PTHREAD_KEY_DELETE''@|$(REPLACE_PTHREAD_KEY_DELETE)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_INIT''@|$(REPLACE_PTHREAD_SPIN_INIT)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_LOCK''@|$(REPLACE_PTHREAD_SPIN_LOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_TRYLOCK''@|$(REPLACE_PTHREAD_SPIN_TRYLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_UNLOCK''@|$(REPLACE_PTHREAD_SPIN_UNLOCK)|g' \
+ -e 's|@''REPLACE_PTHREAD_SPIN_DESTROY''@|$(REPLACE_PTHREAD_SPIN_DESTROY)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_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 && \
+ mv $@-t $@
+MOSTLYCLEANFILES += pthread.h pthread.h-t
+
+EXTRA_DIST += pthread.in.h
+
+## end gnulib module pthread-h
+
+## begin gnulib module pthread-h-tests
+
+TESTS += test-pthread
+check_PROGRAMS += test-pthread
+EXTRA_DIST += test-pthread.c
+
+## end gnulib module pthread-h-tests
+
+## begin gnulib module pthread-thread
+
+
+EXTRA_DIST += pthread-thread.c
+
+EXTRA_libtests_a_SOURCES += pthread-thread.c
+
+## end gnulib module pthread-thread
+
+## begin gnulib module pthread-thread-tests
+
+TESTS += test-pthread-thread
+check_PROGRAMS += test-pthread-thread
+test_pthread_thread_LDADD = $(LDADD) @LIBPMULTITHREAD@
+EXTRA_DIST += test-pthread-thread.c macros.h
+
+## end gnulib module pthread-thread-tests
+
+## begin gnulib module pthread_sigmask
+
+
+EXTRA_DIST += pthread_sigmask.c
+
+EXTRA_libtests_a_SOURCES += pthread_sigmask.c
+
+## end gnulib module pthread_sigmask
+
+## begin gnulib module pthread_sigmask-tests
+
+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@
+EXTRA_DIST += test-pthread_sigmask1.c test-pthread_sigmask2.c signature.h macros.h
+
+## end gnulib module pthread_sigmask-tests
+
## begin gnulib module putenv
@@ -1202,7 +1360,7 @@ EXTRA_libtests_a_SOURCES += putenv.c
TESTS += test-quotearg-simple
check_PROGRAMS += test-quotearg-simple
-test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@
+test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@ $(LIB_MBRTOWC)
EXTRA_DIST += test-quotearg-simple.c test-quotearg.h macros.h zerosize-ptr.h
## end gnulib module quotearg-simple-tests
@@ -1270,7 +1428,7 @@ EXTRA_libtests_a_SOURCES += realloc.c
TESTS += test-regex
check_PROGRAMS += test-regex
-test_regex_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD) $(LIB_PTHREAD)
+test_regex_LDADD = $(LDADD) $(LIB_SETLOCALE) $(LIB_MBRTOWC) @LIBINTL@ $(LIBTHREAD)
EXTRA_DIST += test-regex.c macros.h
## end gnulib module regex-tests
@@ -1291,6 +1449,45 @@ EXTRA_DIST += test-rmdir.h test-rmdir.c signature.h macros.h
## end gnulib module rmdir-tests
+## begin gnulib module sched
+
+BUILT_SOURCES += sched.h
+
+# We need the following in order to create a replacement for <sched.h> when
+# the system doesn't have one.
+sched.h: sched.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_SCHED_H''@|$(HAVE_SCHED_H)|g' \
+ -e 's|@''HAVE_SYS_CDEFS_H''@|$(HAVE_SYS_CDEFS_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_SCHED_H''@|$(NEXT_SCHED_H)|g' \
+ -e 's|@''HAVE_STRUCT_SCHED_PARAM''@|$(HAVE_STRUCT_SCHED_PARAM)|g' \
+ -e 's/@''GNULIB_SCHED_YIELD''@/$(GNULIB_SCHED_YIELD)/g' \
+ -e 's|@''HAVE_SCHED_YIELD''@|$(HAVE_SCHED_YIELD)|g' \
+ -e 's|@''REPLACE_SCHED_YIELD''@|$(REPLACE_SCHED_YIELD)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/sched.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += sched.h sched.h-t
+
+EXTRA_DIST += sched.in.h
+
+## end gnulib module sched
+
+## begin gnulib module sched-tests
+
+TESTS += test-sched
+check_PROGRAMS += test-sched
+EXTRA_DIST += test-sched.c
+
+## end gnulib module sched-tests
+
## begin gnulib module select
@@ -1338,6 +1535,23 @@ EXTRA_libtests_a_SOURCES += setlocale.c
## end gnulib module setlocale
+## begin gnulib module setlocale-null-tests
+
+TESTS += \
+ test-setlocale_null \
+ test-setlocale_null-mt-one \
+ test-setlocale_null-mt-all
+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)
+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-tests
TESTS += test-setlocale1.sh test-setlocale2.sh
@@ -1347,6 +1561,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@
EXTRA_DIST += test-setlocale1.sh test-setlocale1.c test-setlocale2.sh test-setlocale2.c signature.h macros.h
## end gnulib module setlocale-tests
@@ -1898,6 +2114,22 @@ EXTRA_DIST += test-init.sh
## end gnulib module test-framework-sh-tests
+## begin gnulib module thread
+
+libtests_a_SOURCES += glthread/thread.h glthread/thread.c
+
+## end gnulib module thread
+
+## begin gnulib module thread-tests
+
+TESTS += test-thread_self test-thread_create
+check_PROGRAMS += test-thread_self test-thread_create
+test_thread_self_LDADD = $(LDADD) @LIBTHREAD@
+test_thread_create_LDADD = $(LDADD) @LIBMULTITHREAD@
+EXTRA_DIST += test-thread_self.c test-thread_create.c macros.h
+
+## end gnulib module thread-tests
+
## begin gnulib module time-tests
TESTS += test-time
@@ -1987,15 +2219,16 @@ EXTRA_DIST += test-wchar.c
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-4.sh test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh \
+ test-wcrtomb-w32-7.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
-
-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.c signature.h macros.h
+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
## end gnulib module wcrtomb-tests
@@ -2007,6 +2240,24 @@ EXTRA_DIST += test-wctype-h.c macros.h
## end gnulib module wctype-h-tests
+## begin gnulib module windows-thread
+
+
+EXTRA_DIST += windows-thread.c windows-thread.h
+
+EXTRA_libtests_a_SOURCES += windows-thread.c
+
+## end gnulib module windows-thread
+
+## begin gnulib module windows-tls
+
+
+EXTRA_DIST += windows-tls.c windows-tls.h
+
+EXTRA_libtests_a_SOURCES += windows-tls.c
+
+## end gnulib module windows-tls
+
## begin gnulib module xalloc-die-tests
TESTS += test-xalloc-die.sh
diff --git a/gnulib-tests/inet_pton.c b/gnulib-tests/inet_pton.c
index c10b6f2..3e392fc 100644
--- a/gnulib-tests/inet_pton.c
+++ b/gnulib-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-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/init.sh b/gnulib-tests/init.sh
index 93d14f5..b4a5944 100644
--- a/gnulib-tests/init.sh
+++ b/gnulib-tests/init.sh
@@ -1,6 +1,6 @@
# source this file; set up for tests
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -60,6 +60,9 @@
# 4. Finally
# $ exit
+# =============================================================================
+# Elementary diagnostics
+
ME_=`expr "./$0" : '.*/\(.*\)$'`
# Prepare PATH_SEPARATOR.
@@ -109,26 +112,8 @@ skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; }
fatal_ () { warn_ "$ME_: hard error: $@"; Exit 99; }
framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; }
-# This is used to simplify checking of the return value
-# which is useful when ensuring a command fails as desired.
-# I.e., just doing `command ... &&fail=1` will not catch
-# a segfault in command for example. With this helper you
-# instead check an explicit exit code like
-# returns_ 1 command ... || fail
-returns_ () {
- # Disable tracing so it doesn't interfere with stderr of the wrapped command
- { set +x; } 2>/dev/null
-
- local exp_exit="$1"
- shift
- "$@"
- test $? -eq $exp_exit && ret_=0 || ret_=1
-
- if test "$VERBOSE" = yes && test "$gl_set_x_corrupts_stderr_" = false; then
- set -x
- fi
- { return $ret_; } 2>/dev/null
-}
+# =============================================================================
+# Ensure the shell supports modern syntax.
# Sanitize this shell to POSIX mode, if possible.
DUALCASE=1; export DUALCASE
@@ -144,6 +129,8 @@ else
fi
# We require $(...) support unconditionally.
+# We require that the printf built-in work correctly regarding octal escapes;
+# this eliminates /bin/sh on AIX 7.2.
# We require non-surprising "local" semantics (this eliminates dash).
# This takes the admittedly draconian step of eliminating dash, because the
# assignment tab=$(printf '\t') works fine, yet preceding it with "local "
@@ -173,6 +160,12 @@ fi
# ? - not ok
gl_shell_test_script_='
test $(echo y) = y || exit 1
+LC_ALL=en_US.UTF-8 printf "\\351" 2>/dev/null \
+ | LC_ALL=C tr "\\351" x | LC_ALL=C grep "^x$" > /dev/null \
+ || exit 1
+printf "\\351" 2>/dev/null \
+ | LC_ALL=C tr "\\351" x | LC_ALL=C grep "^x$" > /dev/null \
+ || exit 1
f_local_() { local v=1; }; f_local_ || exit 1
f_dash_local_fail_() { local t=$(printf " 1"); }; f_dash_local_fail_
score_=10
@@ -255,6 +248,9 @@ else
fi
fi
+# =============================================================================
+# Ensure the shell behaves reasonably.
+
# If this is bash, turn off all aliases.
test -n "$BASH_VERSION" && unalias -a
@@ -265,99 +261,177 @@ test -n "$BASH_VERSION" && unalias -a
# widespread than that for hyphen-containing function names.
test -n "$EXEEXT" && test -n "$BASH_VERSION" && shopt -s expand_aliases
-# Enable glibc's malloc-perturbing option.
-# This is useful for exposing code that depends on the fact that
-# malloc-related functions often return memory that is mostly zeroed.
-# If you have the time and cycles, use valgrind to do an even better job.
-: ${MALLOC_PERTURB_=87}
-export MALLOC_PERTURB_
+# =============================================================================
+# Creating a temporary directory (needed by the core test framework)
-# This is a stub function that is run upon trap (upon regular exit and
-# interrupt). Override it with a per-test function, e.g., to unmount
-# a partition, or to undo any other global state changes.
-cleanup_ () { :; }
+# Create a temporary directory, much like mktemp -d does.
+# Written by Jim Meyering.
+#
+# Usage: mktempd_ /tmp phoey.XXXXXXXXXX
+#
+# First, try to use the mktemp program.
+# Failing that, we'll roll our own mktemp-like function:
+# - try to get random bytes from /dev/urandom
+# - failing that, generate output from a combination of quickly-varying
+# sources and gzip. Ignore non-varying gzip header, and extract
+# "random" bits from there.
+# - given those bits, map to file-name bytes using tr, and try to create
+# the desired directory.
+# - make only $MAX_TRIES_ attempts
-# Emit a header similar to that from diff -u; Print the simulated "diff"
-# command so that the order of arguments is clear. Don't bother with @@ lines.
-emit_diff_u_header_ ()
+# Helper function. Print $N pseudo-random bytes from a-zA-Z0-9.
+rand_bytes_ ()
{
- printf '%s\n' "diff -u $*" \
- "--- $1 1970-01-01" \
- "+++ $2 1970-01-01"
+ n_=$1
+
+ # Maybe try openssl rand -base64 $n_prime_|tr '+/=\012' abcd first?
+ # But if they have openssl, they probably have mktemp, too.
+
+ chars_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+ dev_rand_=/dev/urandom
+ if test -r "$dev_rand_"; then
+ # Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194.
+ dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \
+ | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
+ return
+ fi
+
+ n_plus_50_=`expr $n_ + 50`
+ cmds_='date; date +%N; free; who -a; w; ps auxww; ps -ef'
+ data_=` (eval "$cmds_") 2>&1 | gzip `
+
+ # Ensure that $data_ has length at least 50+$n_
+ while :; do
+ len_=`echo "$data_"|wc -c`
+ test $n_plus_50_ -le $len_ && break;
+ data_=` (echo "$data_"; eval "$cmds_") 2>&1 | gzip `
+ done
+
+ echo "$data_" \
+ | dd bs=1 skip=50 count=$n_ 2>/dev/null \
+ | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
}
-# Arrange not to let diff or cmp operate on /dev/null,
-# since on some systems (at least OSF/1 5.1), that doesn't work.
-# When there are not two arguments, or no argument is /dev/null, return 2.
-# When one argument is /dev/null and the other is not empty,
-# cat the nonempty file to stderr and return 1.
-# Otherwise, return 0.
-compare_dev_null_ ()
+mktempd_ ()
{
- test $# = 2 || return 2
+ case $# in
+ 2);;
+ *) fail_ "Usage: mktempd_ DIR TEMPLATE";;
+ esac
- if test "x$1" = x/dev/null; then
- test -s "$2" || return 0
- emit_diff_u_header_ "$@"; sed 's/^/+/' "$2"
- return 1
- fi
+ destdir_=$1
+ template_=$2
- if test "x$2" = x/dev/null; then
- test -s "$1" || return 0
- emit_diff_u_header_ "$@"; sed 's/^/-/' "$1"
- return 1
- fi
+ MAX_TRIES_=4
- return 2
+ # Disallow any trailing slash on specified destdir:
+ # it would subvert the post-mktemp "case"-based destdir test.
+ case $destdir_ in
+ / | //) destdir_slash_=$destdir;;
+ */) fail_ "invalid destination dir: remove trailing slash(es)";;
+ *) destdir_slash_=$destdir_/;;
+ esac
+
+ case $template_ in
+ *XXXX) ;;
+ *) fail_ \
+ "invalid template: $template_ (must have a suffix of at least 4 X's)";;
+ esac
+
+ # First, try to use mktemp.
+ d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` &&
+
+ # The resulting name must be in the specified directory.
+ case $d in "$destdir_slash_"*) :;; *) false;; esac &&
+
+ # It must have created the directory.
+ test -d "$d" &&
+
+ # It must have 0700 permissions. Handle sticky "S" bits.
+ perms=`ls -dgo "$d" 2>/dev/null` &&
+ case $perms in drwx--[-S]---*) :;; *) false;; esac && {
+ echo "$d"
+ return
+ }
+
+ # If we reach this point, we'll have to create a directory manually.
+
+ # Get a copy of the template without its suffix of X's.
+ base_template_=`echo "$template_"|sed 's/XX*$//'`
+
+ # Calculate how many X's we've just removed.
+ template_length_=`echo "$template_" | wc -c`
+ nx_=`echo "$base_template_" | wc -c`
+ nx_=`expr $template_length_ - $nx_`
+
+ err_=
+ i_=1
+ while :; do
+ X_=`rand_bytes_ $nx_`
+ candidate_dir_="$destdir_slash_$base_template_$X_"
+ err_=`mkdir -m 0700 "$candidate_dir_" 2>&1` \
+ && { echo "$candidate_dir_"; return; }
+ test $MAX_TRIES_ -le $i_ && break;
+ i_=`expr $i_ + 1`
+ done
+ fail_ "$err_"
}
-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` &&
- break
-done
-if test "$diff_opt_" != no; then
- if test -z "$diff_out_"; then
- compare_ () { 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
- diff_status_=$?
- test $diff_status_ -eq 0 || cat diff.out || diff_status_=2
- rm -f diff.out || diff_status_=2
- return $diff_status_
- }
- fi
-elif cmp -s /dev/null /dev/null 2>/dev/null; then
- compare_ () { cmp -s "$@"; }
-else
- compare_ () { cmp "$@"; }
-fi
+# =============================================================================
+# Core test framework
-# Usage: compare EXPECTED ACTUAL
-#
-# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more.
-# Otherwise, propagate $? to caller: any diffs have already been printed.
-compare ()
+# An arbitrary prefix to help distinguish test directories.
+testdir_prefix_ () { printf gt; }
+
+# Set up the environment for the test to run in.
+setup_ ()
{
- # This looks like it can be factored to use a simple "case $?"
- # after unchecked compare_dev_null_ invocation, but that would
- # fail in a "set -e" environment.
- if compare_dev_null_ "$@"; then
- return 0
- else
- case $? in
- 1) return 1;;
- *) compare_ "$@";;
- esac
+ if test "$VERBOSE" = yes; then
+ # Test whether set -x may cause the selected shell to corrupt an
+ # application's stderr. Many do, including zsh-4.3.10 and the /bin/sh
+ # from SunOS 5.11, OpenBSD 4.7 and Irix 5.x and 6.5.
+ # If enabling verbose output this way would cause trouble, simply
+ # issue a warning and refrain.
+ if $gl_set_x_corrupts_stderr_; then
+ warn_ "using SHELL=$SHELL with 'set -x' corrupts stderr"
+ else
+ set -x
+ fi
fi
+
+ initial_cwd_=$PWD
+
+ # Create and enter the temporary directory.
+ pfx_=`testdir_prefix_`
+ test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \
+ || fail_ "failed to create temporary directory in $initial_cwd_"
+ cd "$test_dir_" || fail_ "failed to cd to temporary directory"
+ # Set variables srcdir, builddir, for the convenience of the test.
+ case $srcdir in
+ /* | ?:*) ;;
+ *) srcdir="../$srcdir" ;;
+ esac
+ builddir=".."
+ export srcdir builddir
+
+ # As autoconf-generated configure scripts do, ensure that IFS
+ # is defined initially, so that saving and restoring $IFS works.
+ gl_init_sh_nl_='
+'
+ IFS=" "" $gl_init_sh_nl_"
+
+ # This trap statement, along with a trap on 0 below, ensure that the
+ # temporary directory, $test_dir_, is removed upon exit as well as
+ # upon receipt of any of the listed signals.
+ for sig_ in 1 2 3 13 15; do
+ eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
+ done
}
-# An arbitrary prefix to help distinguish test directories.
-testdir_prefix_ () { printf gt; }
+# This is a stub function that is run upon trap (upon regular exit and
+# interrupt). Override it with a per-test function, e.g., to unmount
+# a partition, or to undo any other global state changes.
+cleanup_ () { :; }
# Run the user-overridable cleanup_ function, remove the temporary
# directory and exit with the incoming value of $?.
@@ -377,6 +451,9 @@ remove_tmp_ ()
exit $__st
}
+# =============================================================================
+# Prepending directories to PATH
+
# Given a directory name, DIR, if every entry in it that matches *.exe
# contains only the specified bytes (see the case stmt below), then print
# a space-separated list of those names and return 0. Otherwise, don't
@@ -458,160 +535,148 @@ path_prepend_ ()
export PATH
}
-setup_ ()
-{
- if test "$VERBOSE" = yes; then
- # Test whether set -x may cause the selected shell to corrupt an
- # application's stderr. Many do, including zsh-4.3.10 and the /bin/sh
- # from SunOS 5.11, OpenBSD 4.7 and Irix 5.x and 6.5.
- # If enabling verbose output this way would cause trouble, simply
- # issue a warning and refrain.
- if $gl_set_x_corrupts_stderr_; then
- warn_ "using SHELL=$SHELL with 'set -x' corrupts stderr"
- else
- set -x
- fi
- fi
+# =============================================================================
+# Convenience environment variables for the tests
- initial_cwd_=$PWD
+# -----------------------------------------------------------------------------
- pfx_=`testdir_prefix_`
- test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \
- || fail_ "failed to create temporary directory in $initial_cwd_"
- cd "$test_dir_" || fail_ "failed to cd to temporary directory"
+# Enable glibc's malloc-perturbing option.
+# This is useful for exposing code that depends on the fact that
+# malloc-related functions often return memory that is mostly zeroed.
+# If you have the time and cycles, use valgrind to do an even better job.
+: ${MALLOC_PERTURB_=87}
+export MALLOC_PERTURB_
- # As autoconf-generated configure scripts do, ensure that IFS
- # is defined initially, so that saving and restoring $IFS works.
- gl_init_sh_nl_='
-'
- IFS=" "" $gl_init_sh_nl_"
+# -----------------------------------------------------------------------------
- # This trap statement, along with a trap on 0 below, ensure that the
- # temporary directory, $test_dir_, is removed upon exit as well as
- # upon receipt of any of the listed signals.
- for sig_ in 1 2 3 13 15; do
- eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
- done
-}
+# The interpreter for Bourne-shell scripts.
+# No special standards compatibility requirements.
+# Some environments, such as Android, don't have /bin/sh.
+if test -f /bin/sh$EXEEXT; then
+ BOURNE_SHELL=/bin/sh
+else
+ BOURNE_SHELL=sh
+fi
-# Create a temporary directory, much like mktemp -d does.
-# Written by Jim Meyering.
-#
-# Usage: mktempd_ /tmp phoey.XXXXXXXXXX
-#
-# First, try to use the mktemp program.
-# Failing that, we'll roll our own mktemp-like function:
-# - try to get random bytes from /dev/urandom
-# - failing that, generate output from a combination of quickly-varying
-# sources and gzip. Ignore non-varying gzip header, and extract
-# "random" bits from there.
-# - given those bits, map to file-name bytes using tr, and try to create
-# the desired directory.
-# - make only $MAX_TRIES_ attempts
+# =============================================================================
+# Convenience functions for the tests
-# Helper function. Print $N pseudo-random bytes from a-zA-Z0-9.
-rand_bytes_ ()
-{
- n_=$1
+# -----------------------------------------------------------------------------
+# Return value checking
- # Maybe try openssl rand -base64 $n_prime_|tr '+/=\012' abcd first?
- # But if they have openssl, they probably have mktemp, too.
+# This is used to simplify checking of the return value
+# which is useful when ensuring a command fails as desired.
+# I.e., just doing `command ... &&fail=1` will not catch
+# a segfault in command for example. With this helper you
+# instead check an explicit exit code like
+# returns_ 1 command ... || fail
+returns_ () {
+ # Disable tracing so it doesn't interfere with stderr of the wrapped command
+ { set +x; } 2>/dev/null
- chars_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
- dev_rand_=/dev/urandom
- if test -r "$dev_rand_"; then
- # Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194.
- dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \
- | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
- return
- fi
+ local exp_exit="$1"
+ shift
+ "$@"
+ test $? -eq $exp_exit && ret_=0 || ret_=1
- n_plus_50_=`expr $n_ + 50`
- cmds_='date; date +%N; free; who -a; w; ps auxww; ps -ef'
- data_=` (eval "$cmds_") 2>&1 | gzip `
+ if test "$VERBOSE" = yes && test "$gl_set_x_corrupts_stderr_" = false; then
+ set -x
+ fi
+ { return $ret_; } 2>/dev/null
+}
- # Ensure that $data_ has length at least 50+$n_
- while :; do
- len_=`echo "$data_"|wc -c`
- test $n_plus_50_ -le $len_ && break;
- data_=` (echo "$data_"; eval "$cmds_") 2>&1 | gzip `
- done
+# -----------------------------------------------------------------------------
+# Text file comparison
- echo "$data_" \
- | dd bs=1 skip=50 count=$n_ 2>/dev/null \
- | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
+# Emit a header similar to that from diff -u; Print the simulated "diff"
+# command so that the order of arguments is clear. Don't bother with @@ lines.
+emit_diff_u_header_ ()
+{
+ printf '%s\n' "diff -u $*" \
+ "--- $1 1970-01-01" \
+ "+++ $2 1970-01-01"
}
-mktempd_ ()
+# Arrange not to let diff or cmp operate on /dev/null,
+# since on some systems (at least OSF/1 5.1), that doesn't work.
+# When there are not two arguments, or no argument is /dev/null, return 2.
+# When one argument is /dev/null and the other is not empty,
+# cat the nonempty file to stderr and return 1.
+# Otherwise, return 0.
+compare_dev_null_ ()
{
- case $# in
- 2);;
- *) fail_ "Usage: mktempd_ DIR TEMPLATE";;
- esac
-
- destdir_=$1
- template_=$2
-
- MAX_TRIES_=4
-
- # Disallow any trailing slash on specified destdir:
- # it would subvert the post-mktemp "case"-based destdir test.
- case $destdir_ in
- / | //) destdir_slash_=$destdir;;
- */) fail_ "invalid destination dir: remove trailing slash(es)";;
- *) destdir_slash_=$destdir_/;;
- esac
-
- case $template_ in
- *XXXX) ;;
- *) fail_ \
- "invalid template: $template_ (must have a suffix of at least 4 X's)";;
- esac
-
- # First, try to use mktemp.
- d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` &&
-
- # The resulting name must be in the specified directory.
- case $d in "$destdir_slash_"*) :;; *) false;; esac &&
-
- # It must have created the directory.
- test -d "$d" &&
+ test $# = 2 || return 2
- # It must have 0700 permissions. Handle sticky "S" bits.
- perms=`ls -dgo "$d" 2>/dev/null` &&
- case $perms in drwx--[-S]---*) :;; *) false;; esac && {
- echo "$d"
- return
- }
+ if test "x$1" = x/dev/null; then
+ test -s "$2" || return 0
+ emit_diff_u_header_ "$@"; sed 's/^/+/' "$2"
+ return 1
+ fi
- # If we reach this point, we'll have to create a directory manually.
+ if test "x$2" = x/dev/null; then
+ test -s "$1" || return 0
+ emit_diff_u_header_ "$@"; sed 's/^/-/' "$1"
+ return 1
+ fi
- # Get a copy of the template without its suffix of X's.
- base_template_=`echo "$template_"|sed 's/XX*$//'`
+ return 2
+}
- # Calculate how many X's we've just removed.
- template_length_=`echo "$template_" | wc -c`
- nx_=`echo "$base_template_" | wc -c`
- nx_=`expr $template_length_ - $nx_`
+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` &&
+ break
+done
+if test "$diff_opt_" != no; then
+ if test -z "$diff_out_"; then
+ compare_ () { 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
+ diff_status_=$?
+ test $diff_status_ -eq 0 || cat diff.out || diff_status_=2
+ rm -f diff.out || diff_status_=2
+ return $diff_status_
+ }
+ fi
+elif cmp -s /dev/null /dev/null 2>/dev/null; then
+ compare_ () { cmp -s "$@"; }
+else
+ compare_ () { cmp "$@"; }
+fi
- err_=
- i_=1
- while :; do
- X_=`rand_bytes_ $nx_`
- candidate_dir_="$destdir_slash_$base_template_$X_"
- err_=`mkdir -m 0700 "$candidate_dir_" 2>&1` \
- && { echo "$candidate_dir_"; return; }
- test $MAX_TRIES_ -le $i_ && break;
- i_=`expr $i_ + 1`
- done
- fail_ "$err_"
+# Usage: compare EXPECTED ACTUAL
+#
+# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more.
+# Otherwise, propagate $? to caller: any diffs have already been printed.
+compare ()
+{
+ # This looks like it can be factored to use a simple "case $?"
+ # after unchecked compare_dev_null_ invocation, but that would
+ # fail in a "set -e" environment.
+ if compare_dev_null_ "$@"; then
+ return 0
+ else
+ case $? in
+ 1) return 1;;
+ *) compare_ "$@";;
+ esac
+ fi
}
+# -----------------------------------------------------------------------------
+
# If you want to override the testdir_prefix_ function,
# or to add more utility functions, use this file.
test -f "$srcdir/init.cfg" \
&& . "$srcdir/init.cfg"
+# =============================================================================
+# Set up the environment for the test to run in.
+
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.
diff --git a/gnulib-tests/ioctl.c b/gnulib-tests/ioctl.c
index 140c7b6..eb2e825 100644
--- a/gnulib-tests/ioctl.c
+++ b/gnulib-tests/ioctl.c
@@ -1,6 +1,6 @@
/* ioctl.c --- wrappers for Windows ioctl function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/link.c b/gnulib-tests/link.c
index c1cca7a..22f7c82 100644
--- a/gnulib-tests/link.c
+++ b/gnulib-tests/link.c
@@ -1,6 +1,6 @@
/* Emulate link on platforms that lack it, namely native Windows platforms.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/listen.c b/gnulib-tests/listen.c
index 00627f6..c1db145 100644
--- a/gnulib-tests/listen.c
+++ b/gnulib-tests/listen.c
@@ -1,6 +1,6 @@
/* listen.c --- wrappers for Windows listen function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/locale.c b/gnulib-tests/locale.c
new file mode 100644
index 0000000..323040c
--- /dev/null
+++ b/gnulib-tests/locale.c
@@ -0,0 +1,85 @@
+/* Program that prints the names of the categories of the current locale.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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 <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* We want to use the system's setlocale() function here, not the gnulib
+ override. */
+#undef setlocale
+
+/* Specification:
+ <https://pubs.opengroup.org/onlinepubs/9699919799/utilities/locale.html>
+ Here we implement only the invocation without any command-line options. */
+
+static const char *
+defaulted_getenv (const char *variable)
+{
+ const char *value = getenv (variable);
+ return (value != NULL ? value : "");
+}
+
+static void
+print_category (int category, const char *variable)
+{
+ const char *value = defaulted_getenv (variable);
+ if (value[0] != '\0' && defaulted_getenv ("LC_ALL")[0] == '\0')
+ /* The variable is set in the environment and not overridden by LC_ALL. */
+ printf ("%s=%s\n", variable, value);
+ else
+ printf ("%s=\"%s\"\n", variable, setlocale (category, NULL));
+}
+
+int
+main ()
+{
+ setlocale (LC_ALL, "");
+
+ printf ("LANG=%s\n", defaulted_getenv ("LANG"));
+ print_category (LC_CTYPE, "LC_CTYPE");
+ print_category (LC_NUMERIC, "LC_NUMERIC");
+ print_category (LC_TIME, "LC_TIME");
+ print_category (LC_COLLATE, "LC_COLLATE");
+ print_category (LC_MONETARY, "LC_MONETARY");
+ print_category (LC_MESSAGES, "LC_MESSAGES");
+#ifdef LC_PAPER
+ print_category (LC_PAPER, "LC_PAPER");
+#endif
+#ifdef LC_NAME
+ print_category (LC_NAME, "LC_NAME");
+#endif
+#ifdef LC_ADDRESS
+ print_category (LC_ADDRESS, "LC_ADDRESS");
+#endif
+#ifdef LC_TELEPHONE
+ print_category (LC_TELEPHONE, "LC_TELEPHONE");
+#endif
+#ifdef LC_MEASUREMENT
+ print_category (LC_MEASUREMENT, "LC_MEASUREMENT");
+#endif
+#ifdef LC_IDENTIFICATION
+ print_category (LC_IDENTIFICATION, "LC_IDENTIFICATION");
+#endif
+
+ printf ("LC_ALL=%s\n", defaulted_getenv ("LC_ALL"));
+
+ return 0;
+}
diff --git a/gnulib-tests/localename-table.c b/gnulib-tests/localename-table.c
index 40f0709..89db245 100644
--- a/gnulib-tests/localename-table.c
+++ b/gnulib-tests/localename-table.c
@@ -1,5 +1,5 @@
/* Table that maps a locale object to the names of the locale categories.
- Copyright (C) 2018 Free Software Foundation, Inc.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/localename-table.h b/gnulib-tests/localename-table.h
index e1a7181..d9b8128 100644
--- a/gnulib-tests/localename-table.h
+++ b/gnulib-tests/localename-table.h
@@ -1,5 +1,5 @@
/* Table that maps a locale object to the names of the locale categories.
- Copyright (C) 2018 Free Software Foundation, Inc.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/localename.c b/gnulib-tests/localename.c
index 96f4a20..20be646 100644
--- a/gnulib-tests/localename.c
+++ b/gnulib-tests/localename.c
@@ -1,5 +1,5 @@
/* Determine name of the currently selected locale.
- Copyright (C) 1995-2018 Free Software Foundation, Inc.
+ Copyright (C) 1995-2020 Free Software Foundation, Inc.
This 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,6 +34,7 @@
#include <string.h>
#include "flexmember.h"
+#include "setlocale_null.h"
/* We cannot support uselocale() on platforms where the locale_t type is fake.
See intl-thread-locale.m4 for details. */
@@ -66,13 +67,9 @@ extern char * getlocalename_l(int, locale_t);
# endif
#endif
-#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+#if HAVE_CFPREFERENCESCOPYAPPVALUE
# include <CoreFoundation/CFString.h>
-# if HAVE_CFLOCALECOPYCURRENT
-# include <CoreFoundation/CFLocale.h>
-# elif HAVE_CFPREFERENCESCOPYAPPVALUE
-# include <CoreFoundation/CFPreferences.h>
-# endif
+# include <CoreFoundation/CFPreferences.h>
#endif
#if defined _WIN32 && !defined __CYGWIN__
@@ -1155,8 +1152,12 @@ extern char * getlocalename_l(int, locale_t);
# endif
#endif
+/* We want to use the system's setlocale() function here, not the gnulib
+ override. */
+#undef setlocale
+
-#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+#if HAVE_CFPREFERENCESCOPYAPPVALUE
/* Mac OS X 10.4 or newer */
/* Canonicalize a Mac OS X locale name to a Unix locale name.
@@ -2296,8 +2297,8 @@ gl_locale_name_from_win32_LANGID (LANGID langid)
}
return "wen";
case LANG_SOTHO:
- /* <https://msdn.microsoft.com/en-us/library/dd318693.aspx> calls
- it "Sesotho sa Leboa"; according to
+ /* <https://docs.microsoft.com/en-us/windows/desktop/Intl/language-identifier-constants-and-strings>
+ calls it "Sesotho sa Leboa"; according to
<https://www.ethnologue.com/show_language.asp?code=nso>
<https://www.ethnologue.com/show_language.asp?code=sot>
it's the same as Northern Sotho. */
@@ -2729,7 +2730,7 @@ get_locale_t_name (int category, locale_t locale)
if (locale == LC_GLOBAL_LOCALE)
{
/* Query the global locale. */
- const char *name = setlocale (category, NULL);
+ const char *name = setlocale_null (category);
if (name != NULL)
return struniq (name);
else
@@ -3191,6 +3192,8 @@ gl_locale_name_thread_unsafe (int category, const char *categoryname)
return "";
}
# endif
+# elif defined _AIX && HAVE_NAMELESS_LOCALES
+ return get_locale_t_name (category, thread_locale);
# elif defined __CYGWIN__
/* Cygwin < 2.6 lacks uselocale and thread-local locales altogether.
Cygwin <= 2.6.1 lacks NL_LOCALE_NAME, requiring peeking inside
@@ -3245,20 +3248,15 @@ gl_locale_name_posix (int category, const char *categoryname)
#if defined WINDOWS_NATIVE
if (LC_MIN <= category && category <= LC_MAX)
{
- const char *locname = setlocale (category, NULL);
- LCID lcid;
-
- /* If CATEGORY is LC_ALL, the result might be a semi-colon
- separated list of locales. We need only one, so we take the
- one corresponding to LC_CTYPE, as the most important for
- character translations. */
- if (category == LC_ALL && strchr (locname, ';'))
- locname = setlocale (LC_CTYPE, NULL);
+ const char *locname =
+ /* setlocale_null (category) is identical to setlocale (category, NULL)
+ on this platform. */
+ setlocale (category, NULL);
/* Convert locale name to LCID. We don't want to use
LocaleNameToLCID because (a) it is only available since Vista,
and (b) it doesn't accept locale names returned by 'setlocale'. */
- lcid = get_lcid (locname);
+ LCID lcid = get_lcid (locname);
if (lcid > 0)
return gl_locale_name_from_win32_LCID (lcid);
@@ -3269,8 +3267,8 @@ gl_locale_name_posix (int category, const char *categoryname)
/* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
On some systems this can be done by the 'setlocale' function itself. */
-#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
- locname = setlocale (category, NULL);
+#if defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+ locname = setlocale_null (category);
#else
/* On other systems we ignore what setlocale reports and instead look at the
environment variables directly. This is necessary
@@ -3294,15 +3292,16 @@ gl_locale_name_posix (int category, const char *categoryname)
/* Convert the locale name from the format returned by setlocale() or found
in the environment variables to the XPG syntax. */
#if defined WINDOWS_NATIVE
- {
- /* Convert locale name to LCID. We don't want to use
- LocaleNameToLCID because (a) it is only available since Vista,
- and (b) it doesn't accept locale names returned by 'setlocale'. */
- LCID lcid = get_lcid (locname);
+ if (locname != NULL)
+ {
+ /* Convert locale name to LCID. We don't want to use
+ LocaleNameToLCID because (a) it is only available since Vista,
+ and (b) it doesn't accept locale names returned by 'setlocale'. */
+ LCID lcid = get_lcid (locname);
- if (lcid > 0)
- return gl_locale_name_from_win32_LCID (lcid);
- }
+ if (lcid > 0)
+ return gl_locale_name_from_win32_LCID (lcid);
+ }
#endif
return locname;
}
@@ -3325,7 +3324,7 @@ gl_locale_name_environ (int category, const char *categoryname)
retval = getenv ("LANG");
if (retval != NULL && retval[0] != '\0')
{
-#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+#if HAVE_CFPREFERENCESCOPYAPPVALUE
/* Mac OS X 10.2 or newer.
Ignore invalid LANG value set by the Terminal application. */
if (strcmp (retval, "UTF-8") != 0)
@@ -3372,7 +3371,7 @@ gl_locale_name_default (void)
"C.UTF-8" locale, which operates in the same way as the "C" locale.
*/
-#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined WINDOWS_NATIVE || defined __CYGWIN__)
+#if !(HAVE_CFPREFERENCESCOPYAPPVALUE || defined WINDOWS_NATIVE || defined __CYGWIN__)
/* The system does not have a way of setting the locale, other than the
POSIX specified environment variables. We use C as default locale. */
@@ -3385,8 +3384,17 @@ gl_locale_name_default (void)
context, because message catalogs are not specific to a single
codeset. */
-# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
+# if HAVE_CFPREFERENCESCOPYAPPVALUE
/* Mac OS X 10.4 or newer */
+ /* Don't use the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent,
+ because in macOS 10.13.4 it has the following behaviour:
+ When two or more languages are specified in the
+ "System Preferences > Language & Region > Preferred Languages" panel,
+ it returns en_CC where CC is the territory (even when English is not among
+ the preferred languages!). What we want instead is what
+ CFLocaleCopyCurrent returned in earlier macOS releases and what
+ CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the
+ first among the preferred languages and CC is the territory. */
{
/* Cache the locale name, since CoreFoundation calls are expensive. */
static const char *cached_localename;
@@ -3394,17 +3402,12 @@ gl_locale_name_default (void)
if (cached_localename == NULL)
{
char namebuf[256];
-# if HAVE_CFLOCALECOPYCURRENT /* Mac OS X 10.5 or newer */
- CFLocaleRef locale = CFLocaleCopyCurrent ();
- CFStringRef name = CFLocaleGetIdentifier (locale);
-# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* Mac OS X 10.4 or newer */
CFTypeRef value =
CFPreferencesCopyAppValue (CFSTR ("AppleLocale"),
kCFPreferencesCurrentApplication);
if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
{
CFStringRef name = (CFStringRef)value;
-# endif
if (CFStringGetCString (name, namebuf, sizeof (namebuf),
kCFStringEncodingASCII))
@@ -3412,12 +3415,7 @@ gl_locale_name_default (void)
gl_locale_name_canonicalize (namebuf);
cached_localename = strdup (namebuf);
}
-
-# if HAVE_CFLOCALECOPYCURRENT /* Mac OS X 10.5 or newer */
- CFRelease (locale);
-# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* Mac OS X 10.4 or newer */
}
-# endif
if (cached_localename == NULL)
cached_localename = "C";
}
diff --git a/gnulib-tests/localename.h b/gnulib-tests/localename.h
index ab17e81..b67f306 100644
--- a/gnulib-tests/localename.h
+++ b/gnulib-tests/localename.h
@@ -1,5 +1,5 @@
/* Determine name of the currently selected locale.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -86,8 +86,7 @@ extern const char * gl_locale_name_environ (int category, const char *categoryna
The result must not be freed; it is statically allocated. */
extern const char * gl_locale_name_default (void)
-#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE \
- || defined _WIN32 || defined __CYGWIN__)
+#if !(HAVE_CFPREFERENCESCOPYAPPVALUE || defined _WIN32 || defined __CYGWIN__)
_GL_ATTRIBUTE_CONST
#endif
;
diff --git a/gnulib-tests/lseek.c b/gnulib-tests/lseek.c
index 9125b98..3ed6bdb 100644
--- a/gnulib-tests/lseek.c
+++ b/gnulib-tests/lseek.c
@@ -1,5 +1,5 @@
/* An lseek() function that detects pipes.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/macros.h b/gnulib-tests/macros.h
index dd6357a..c72cc92 100644
--- a/gnulib-tests/macros.h
+++ b/gnulib-tests/macros.h
@@ -1,5 +1,5 @@
/* Common macros used by gnulib tests.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/nanosleep.c b/gnulib-tests/nanosleep.c
index 2cc3909..123c66b 100644
--- a/gnulib-tests/nanosleep.c
+++ b/gnulib-tests/nanosleep.c
@@ -1,6 +1,6 @@
/* Provide a replacement for the POSIX nanosleep function.
- Copyright (C) 1999-2000, 2002, 2004-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2000, 2002, 2004-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -194,7 +194,7 @@ static sig_atomic_t volatile suspended;
/* Handle SIGCONT. */
-static void
+static _GL_ASYNC_SAFE void
sighandler (int sig)
{
suspended = 1;
diff --git a/gnulib-tests/nap.h b/gnulib-tests/nap.h
index c4f45d8..5dd264f 100644
--- a/gnulib-tests/nap.h
+++ b/gnulib-tests/nap.h
@@ -1,5 +1,5 @@
/* Assist in file system timestamp tests.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ nap_get_stat (struct stat *st, int do_write)
#if defined _WIN32 || defined __CYGWIN__
/* On Windows, the modification times are not changed until NAP_FD
is closed. See
- https://msdn.microsoft.com/en-us/library/windows/desktop/aa365747(v=vs.85).aspx */
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-writefile> */
close (nap_fd);
nap_fd = open (TEMPFILE, O_RDWR, 0600);
ASSERT (nap_fd != -1);
diff --git a/gnulib-tests/netinet_in.in.h b/gnulib-tests/netinet_in.in.h
index 0f26cf5..84ad215 100644
--- a/gnulib-tests/netinet_in.in.h
+++ b/gnulib-tests/netinet_in.in.h
@@ -1,5 +1,5 @@
/* Substitute for <netinet/in.h>.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/null-ptr.h b/gnulib-tests/null-ptr.h
index 1ba0755..b978418 100644
--- a/gnulib-tests/null-ptr.h
+++ b/gnulib-tests/null-ptr.h
@@ -1,5 +1,5 @@
/* Return a NULL pointer, without letting the compiler know it.
- Copyright (C) 2017-2018 Free Software Foundation, Inc.
+ Copyright (C) 2017-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/open.c b/gnulib-tests/open.c
index 792e258..487194f 100644
--- a/gnulib-tests/open.c
+++ b/gnulib-tests/open.c
@@ -1,5 +1,5 @@
/* Open a descriptor to a file.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,22 +92,19 @@ open (const char *filename, int flags, ...)
#endif
#if OPEN_TRAILING_SLASH_BUG
- /* If the filename ends in a slash and one of O_CREAT, O_WRONLY, O_RDWR
- is specified, then fail.
- Rationale: POSIX <http://www.opengroup.org/susv3/basedefs/xbd_chap04.html>
- says that
- "A pathname that contains at least one non-slash character and that
- ends with one or more trailing slashes shall be resolved as if a
- single dot character ( '.' ) were appended to the pathname."
- and
- "The special filename dot shall refer to the directory specified by
- its predecessor."
+ /* Fail if one of O_CREAT, O_WRONLY, O_RDWR is specified and the filename
+ ends in a slash, as POSIX says such a filename must name a directory
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13>:
+ "A pathname that contains at least one non-<slash> character and that
+ ends with one or more trailing <slash> characters shall not be resolved
+ successfully unless the last pathname component before the trailing
+ <slash> characters names an existing directory"
If the named file already exists as a directory, then
- if O_CREAT is specified, open() must fail because of the semantics
of O_CREAT,
- if O_WRONLY or O_RDWR is specified, open() must fail because POSIX
- <http://www.opengroup.org/susv3/functions/open.html> says that it
- fails with errno = EISDIR in this case.
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html>
+ says that it fails with errno = EISDIR in this case.
If the named file does not exist or does not name a directory, then
- if O_CREAT is specified, open() must fail since open() cannot create
directories,
@@ -171,14 +168,12 @@ open (const char *filename, int flags, ...)
#if OPEN_TRAILING_SLASH_BUG
/* If the filename ends in a slash and fd does not refer to a directory,
then fail.
- Rationale: POSIX <http://www.opengroup.org/susv3/basedefs/xbd_chap04.html>
- says that
- "A pathname that contains at least one non-slash character and that
- ends with one or more trailing slashes shall be resolved as if a
- single dot character ( '.' ) were appended to the pathname."
- and
- "The special filename dot shall refer to the directory specified by
- its predecessor."
+ Rationale: POSIX says such a filename must name a directory
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13>:
+ "A pathname that contains at least one non-<slash> character and that
+ ends with one or more trailing <slash> characters shall not be resolved
+ successfully unless the last pathname component before the trailing
+ <slash> characters names an existing directory"
If the named file without the slash is not a directory, open() must fail
with ENOTDIR. */
if (fd >= 0)
diff --git a/gnulib-tests/opendir.c b/gnulib-tests/opendir.c
index b77f540..162ae4a 100644
--- a/gnulib-tests/opendir.c
+++ b/gnulib-tests/opendir.c
@@ -1,5 +1,5 @@
/* Start reading the entries of a directory.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/perror.c b/gnulib-tests/perror.c
index 827a37c..6eb83ee 100644
--- a/gnulib-tests/perror.c
+++ b/gnulib-tests/perror.c
@@ -1,5 +1,5 @@
/* Print a message describing error code.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
Written by Bruno Haible and Simon Josefsson.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/pipe.c b/gnulib-tests/pipe.c
index 9f0edae..fd554fe 100644
--- a/gnulib-tests/pipe.c
+++ b/gnulib-tests/pipe.c
@@ -1,5 +1,5 @@
/* Create a pipe.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/pthread-thread.c b/gnulib-tests/pthread-thread.c
new file mode 100644
index 0000000..13fda18
--- /dev/null
+++ b/gnulib-tests/pthread-thread.c
@@ -0,0 +1,178 @@
+/* Creating and controlling POSIX threads.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
+
+ This 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, 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 Paul Eggert, 2010, and Bruno Haible <bruno@clisp.org>, 2019. */
+
+#include <config.h>
+
+/* Specification. */
+#include <pthread.h>
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# include "windows-thread.h"
+#else
+# include <stdlib.h>
+#endif
+
+typedef void * (* pthread_main_function_t) (void *);
+
+#if ((defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS) || !HAVE_PTHREAD_H
+
+int
+pthread_attr_init (pthread_attr_t *attr)
+{
+ *attr = PTHREAD_CREATE_JOINABLE;
+ return 0;
+}
+
+int
+pthread_attr_getdetachstate (const pthread_attr_t *attr, int *detachstatep)
+{
+ *detachstatep = *attr & (PTHREAD_CREATE_JOINABLE | PTHREAD_CREATE_DETACHED);
+ return 0;
+}
+
+int
+pthread_attr_setdetachstate (pthread_attr_t *attr, int detachstate)
+{
+ if (!(detachstate == PTHREAD_CREATE_JOINABLE
+ || detachstate == PTHREAD_CREATE_DETACHED))
+ return EINVAL;
+ *attr ^= (*attr ^ detachstate)
+ & (PTHREAD_CREATE_JOINABLE | PTHREAD_CREATE_DETACHED);
+ return 0;
+}
+
+int
+pthread_attr_destroy (pthread_attr_t *attr _GL_UNUSED)
+{
+ return 0;
+}
+
+#endif
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+/* Use Windows threads. */
+
+int
+pthread_create (pthread_t *threadp, const pthread_attr_t *attr,
+ pthread_main_function_t mainfunc, void *arg)
+{
+ unsigned int glwthread_attr =
+ (attr != NULL
+ && (*attr & (PTHREAD_CREATE_JOINABLE | PTHREAD_CREATE_DETACHED))
+ != PTHREAD_CREATE_JOINABLE
+ ? GLWTHREAD_ATTR_DETACHED
+ : 0);
+ return glwthread_thread_create (threadp, glwthread_attr, mainfunc, arg);
+}
+
+pthread_t
+pthread_self (void)
+{
+ return glwthread_thread_self ();
+}
+
+int
+pthread_equal (pthread_t thread1, pthread_t thread2)
+{
+ return thread1 == thread2;
+}
+
+int
+pthread_detach (pthread_t thread)
+{
+ return glwthread_thread_detach (thread);
+}
+
+int
+pthread_join (pthread_t thread, void **valuep)
+{
+ return glwthread_thread_join (thread, valuep);
+}
+
+void
+pthread_exit (void *value)
+{
+ glwthread_thread_exit (value);
+}
+
+#elif HAVE_PTHREAD_H
+/* Provide workarounds for POSIX threads. */
+
+# if PTHREAD_CREATE_IS_INLINE
+int
+pthread_create (pthread_t *threadp, const pthread_attr_t *attr,
+ pthread_main_function_t mainfunc, void *arg)
+# undef pthread_create
+{
+ return pthread_create (threadp, attr, mainfunc, arg);
+}
+
+int
+pthread_attr_init (pthread_attr_t *attr)
+# undef pthread_attr_init
+{
+ return pthread_attr_init (attr);
+}
+
+# endif
+
+#else
+/* Provide a dummy implementation for single-threaded applications. */
+
+int
+pthread_create (pthread_t *threadp, const pthread_attr_t *attr,
+ pthread_main_function_t mainfunc, void *arg)
+{
+ /* The maximum number of threads is reached. Do not create a thread. */
+ return EAGAIN;
+}
+
+pthread_t
+pthread_self (void)
+{
+ return 42;
+}
+
+int
+pthread_equal (pthread_t thread1, pthread_t thread2)
+{
+ return thread1 == thread2;
+}
+
+int
+pthread_detach (pthread_t thread)
+{
+ /* There are no joinable threads. */
+ return EINVAL;
+}
+
+int
+pthread_join (pthread_t thread, void **valuep)
+{
+ /* There are no joinable threads. */
+ return EINVAL;
+}
+
+void
+pthread_exit (void *value)
+{
+ /* There is just one thread, so the process exits. */
+ exit (0);
+}
+
+#endif
diff --git a/gnulib-tests/pthread.in.h b/gnulib-tests/pthread.in.h
new file mode 100644
index 0000000..7cf1930
--- /dev/null
+++ b/gnulib-tests/pthread.in.h
@@ -0,0 +1,1831 @@
+/* Implement the most essential subset of POSIX 1003.1-2008 pthread.h.
+
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+ This 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, 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 Paul Eggert, Glen Lenker, and Bruno Haible. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined _GL_ALREADY_INCLUDING_PTHREAD_H
+/* Special invocation convention:
+ On Android, we have a sequence of nested includes
+ <pthread.h> -> <time.h> -> <sys/time.h> -> <sys/select.h> ->
+ <signal.h> -> <pthread.h>.
+ In this situation, PTHREAD_COND_INITIALIZER is not yet defined,
+ therefore we should not attempt to define PTHREAD_MUTEX_NORMAL etc. */
+
+#@INCLUDE_NEXT@ @NEXT_PTHREAD_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _@GUARD_PREFIX@_PTHREAD_H_
+
+#if @HAVE_PTHREAD_H@
+
+# define _GL_ALREADY_INCLUDING_PTHREAD_H
+
+/* The include_next requires a split double-inclusion guard. */
+# @INCLUDE_NEXT@ @NEXT_PTHREAD_H@
+
+# undef _GL_ALREADY_INCLUDING_PTHREAD_H
+
+#endif
+
+#ifndef _@GUARD_PREFIX@_PTHREAD_H_
+#define _@GUARD_PREFIX@_PTHREAD_H_
+
+#define __need_system_stdlib_h
+#include <stdlib.h>
+#undef __need_system_stdlib_h
+
+
+/* The pthreads-win32 <pthread.h> defines a couple of broken macros. */
+#undef asctime_r
+#undef ctime_r
+#undef gmtime_r
+#undef localtime_r
+#undef rand_r
+#undef strtok_r
+
+#include <errno.h>
+#include <sched.h>
+#include <sys/types.h>
+#include <time.h>
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _Noreturn is copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+/* =========== Thread types and macros =========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_THREAD@
+# include "windows-thread.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_t rpl_pthread_t
+# define pthread_attr_t rpl_pthread_attr_t
+# endif
+# if !GNULIB_defined_pthread_thread_types
+typedef glwthread_thread_t pthread_t;
+typedef unsigned int pthread_attr_t;
+# define GNULIB_defined_pthread_thread_types 1
+# endif
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_t rpl_pthread_t
+# define pthread_attr_t rpl_pthread_attr_t
+# endif
+# if !GNULIB_defined_pthread_thread_types
+typedef int pthread_t;
+typedef unsigned int pthread_attr_t;
+# define GNULIB_defined_pthread_thread_types 1
+# endif
+# endif
+# undef PTHREAD_CREATE_JOINABLE
+# undef PTHREAD_CREATE_DETACHED
+# define PTHREAD_CREATE_JOINABLE 0
+# define PTHREAD_CREATE_DETACHED 1
+#else
+# if !@HAVE_PTHREAD_T@
+# if !GNULIB_defined_pthread_thread_types
+typedef int pthread_t;
+typedef unsigned int pthread_attr_t;
+# define GNULIB_defined_pthread_thread_types 1
+# endif
+# endif
+# if !@HAVE_PTHREAD_CREATE_DETACHED@
+# define PTHREAD_CREATE_JOINABLE 0
+# define PTHREAD_CREATE_DETACHED 1
+# endif
+#endif
+
+/* =========== Once-only control (initialization) types and macros ========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_ONCE@
+# include "windows-once.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_once_t rpl_pthread_once_t
+# endif
+# if !GNULIB_defined_pthread_once_types
+typedef glwthread_once_t pthread_once_t;
+# define GNULIB_defined_pthread_once_types 1
+# endif
+# undef PTHREAD_ONCE_INIT
+# define PTHREAD_ONCE_INIT GLWTHREAD_ONCE_INIT
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_once_t rpl_pthread_once_t
+# endif
+# if !GNULIB_defined_pthread_once_types
+typedef int pthread_once_t;
+# define GNULIB_defined_pthread_once_types 1
+# endif
+# undef PTHREAD_ONCE_INIT
+# define PTHREAD_ONCE_INIT { 0 }
+# endif
+#else
+# if !@HAVE_PTHREAD_T@
+# if !GNULIB_defined_pthread_once_types
+typedef int pthread_once_t;
+# define GNULIB_defined_pthread_once_types 1
+# endif
+# undef PTHREAD_ONCE_INIT
+# define PTHREAD_ONCE_INIT { 0 }
+# endif
+#endif
+
+/* =========== Mutex types and macros =========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_MUTEX@
+# include "windows-timedmutex.h"
+# include "windows-timedrecmutex.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_mutex_t rpl_pthread_mutex_t
+# define pthread_mutexattr_t rpl_pthread_mutexattr_t
+# endif
+# if !GNULIB_defined_pthread_mutex_types
+typedef struct
+ {
+ int type;
+ union
+ {
+ glwthread_timedmutex_t u_timedmutex;
+ glwthread_timedrecmutex_t u_timedrecmutex;
+ }
+ u;
+ }
+ pthread_mutex_t;
+typedef unsigned int pthread_mutexattr_t;
+# define GNULIB_defined_pthread_mutex_types 1
+# endif
+# undef PTHREAD_MUTEX_INITIALIZER
+# define PTHREAD_MUTEX_INITIALIZER { 1, { GLWTHREAD_TIMEDMUTEX_INIT } }
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_mutex_t rpl_pthread_mutex_t
+# define pthread_mutexattr_t rpl_pthread_mutexattr_t
+# endif
+# if !GNULIB_defined_pthread_mutex_types
+typedef int pthread_mutex_t;
+typedef unsigned int pthread_mutexattr_t;
+# define GNULIB_defined_pthread_mutex_types 1
+# endif
+# undef PTHREAD_MUTEX_INITIALIZER
+# define PTHREAD_MUTEX_INITIALIZER { 0 }
+# endif
+# undef PTHREAD_MUTEX_DEFAULT
+# undef PTHREAD_MUTEX_NORMAL
+# undef PTHREAD_MUTEX_ERRORCHECK
+# undef PTHREAD_MUTEX_RECURSIVE
+# define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
+# define PTHREAD_MUTEX_NORMAL 0
+# define PTHREAD_MUTEX_ERRORCHECK 1
+# define PTHREAD_MUTEX_RECURSIVE 2
+# undef PTHREAD_MUTEX_STALLED
+# undef PTHREAD_MUTEX_ROBUST
+# define PTHREAD_MUTEX_STALLED 0
+# define PTHREAD_MUTEX_ROBUST 1
+#else
+# if !@HAVE_PTHREAD_T@
+# if !GNULIB_defined_pthread_mutex_types
+typedef int pthread_mutex_t;
+typedef unsigned int pthread_mutexattr_t;
+# define GNULIB_defined_pthread_mutex_types 1
+# endif
+# undef PTHREAD_MUTEX_INITIALIZER
+# define PTHREAD_MUTEX_INITIALIZER { 0 }
+# endif
+# if !@HAVE_PTHREAD_MUTEX_RECURSIVE@
+# define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
+# define PTHREAD_MUTEX_NORMAL 0
+# define PTHREAD_MUTEX_ERRORCHECK 1
+# define PTHREAD_MUTEX_RECURSIVE 2
+# endif
+# if !@HAVE_PTHREAD_MUTEX_ROBUST@
+# define PTHREAD_MUTEX_STALLED 0
+# define PTHREAD_MUTEX_ROBUST 1
+# endif
+#endif
+
+/* =========== Read-write lock types and macros =========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_RWLOCK@
+# include "windows-timedrwlock.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_rwlock_t rpl_pthread_rwlock_t
+# define pthread_rwlockattr_t rpl_pthread_rwlockattr_t
+# endif
+# if !GNULIB_defined_pthread_rwlock_types
+typedef glwthread_timedrwlock_t pthread_rwlock_t;
+typedef unsigned int pthread_rwlockattr_t;
+# define GNULIB_defined_pthread_rwlock_types 1
+# endif
+# undef PTHREAD_RWLOCK_INITIALIZER
+# define PTHREAD_RWLOCK_INITIALIZER GLWTHREAD_TIMEDRWLOCK_INIT
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_rwlock_t rpl_pthread_rwlock_t
+# define pthread_rwlockattr_t rpl_pthread_rwlockattr_t
+# endif
+# if !GNULIB_defined_pthread_rwlock_types
+typedef int pthread_rwlock_t;
+typedef unsigned int pthread_rwlockattr_t;
+# define GNULIB_defined_pthread_rwlock_types 1
+# endif
+# undef PTHREAD_RWLOCK_INITIALIZER
+# define PTHREAD_RWLOCK_INITIALIZER { 0 }
+# endif
+#elif @GNULIB_PTHREAD_RWLOCK@ && @REPLACE_PTHREAD_RWLOCK_INIT@ /* i.e. PTHREAD_RWLOCK_UNIMPLEMENTED */
+# if @HAVE_PTHREAD_T@
+# define pthread_rwlock_t rpl_pthread_rwlock_t
+# define pthread_rwlockattr_t rpl_pthread_rwlockattr_t
+# endif
+# if !GNULIB_defined_pthread_rwlock_types
+typedef struct
+ {
+ pthread_mutex_t lock; /* protects the remaining fields */
+ pthread_cond_t waiting_readers; /* waiting readers */
+ pthread_cond_t waiting_writers; /* waiting writers */
+ unsigned int waiting_writers_count; /* number of waiting writers */
+ int runcount; /* number of readers running, or -1 when a writer runs */
+ }
+ pthread_rwlock_t;
+typedef unsigned int pthread_rwlockattr_t;
+# define GNULIB_defined_pthread_rwlock_types 1
+# endif
+# undef PTHREAD_RWLOCK_INITIALIZER
+# define PTHREAD_RWLOCK_INITIALIZER \
+ { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 }
+#else
+# if @HAVE_PTHREAD_T@
+# if !defined PTHREAD_RWLOCK_INITIALIZER && defined PTHREAD_RWLOCK_INITIALIZER_NP /* z/OS */
+# define PTHREAD_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER_NP
+# endif
+# else
+# if !GNULIB_defined_pthread_rwlock_types
+typedef int pthread_rwlock_t;
+typedef unsigned int pthread_rwlockattr_t;
+# define GNULIB_defined_pthread_rwlock_types 1
+# endif
+# undef PTHREAD_RWLOCK_INITIALIZER
+# define PTHREAD_RWLOCK_INITIALIZER { 0 }
+# endif
+#endif
+
+/* =========== Condition variable types and macros =========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_COND@
+# include "windows-cond.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_cond_t rpl_pthread_cond_t
+# define pthread_condattr_t rpl_pthread_condattr_t
+# endif
+# if !GNULIB_defined_pthread_cond_types
+typedef glwthread_cond_t pthread_cond_t;
+typedef unsigned int pthread_condattr_t;
+# define GNULIB_defined_pthread_cond_types 1
+# endif
+# undef PTHREAD_COND_INITIALIZER
+# define PTHREAD_COND_INITIALIZER GLWTHREAD_COND_INIT
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_cond_t rpl_pthread_cond_t
+# define pthread_condattr_t rpl_pthread_condattr_t
+# endif
+# if !GNULIB_defined_pthread_cond_types
+typedef int pthread_cond_t;
+typedef unsigned int pthread_condattr_t;
+# define GNULIB_defined_pthread_cond_types 1
+# endif
+# undef PTHREAD_COND_INITIALIZER
+# define PTHREAD_COND_INITIALIZER { 0 }
+# endif
+#else
+# if !@HAVE_PTHREAD_T@
+# if !GNULIB_defined_pthread_cond_types
+typedef int pthread_cond_t;
+typedef unsigned int pthread_condattr_t;
+# define GNULIB_defined_pthread_cond_types 1
+# endif
+# undef PTHREAD_COND_INITIALIZER
+# define PTHREAD_COND_INITIALIZER { 0 }
+# endif
+#endif
+
+/* =========== Thread-specific storage types and macros =========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_TSS@
+# include "windows-tls.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_key_t rpl_pthread_key_t
+# endif
+# if !GNULIB_defined_pthread_tss_types
+typedef glwthread_tls_key_t pthread_key_t;
+# define GNULIB_defined_pthread_tss_types 1
+# endif
+# undef PTHREAD_DESTRUCTOR_ITERATIONS
+# define PTHREAD_DESTRUCTOR_ITERATIONS GLWTHREAD_DESTRUCTOR_ITERATIONS
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_key_t rpl_pthread_key_t
+# endif
+# if !GNULIB_defined_pthread_tss_types
+typedef void ** pthread_key_t;
+# define GNULIB_defined_pthread_tss_types 1
+# endif
+# undef PTHREAD_DESTRUCTOR_ITERATIONS
+# define PTHREAD_DESTRUCTOR_ITERATIONS 0
+# endif
+#else
+# if !@HAVE_PTHREAD_T@
+# if !GNULIB_defined_pthread_tss_types
+typedef void ** pthread_key_t;
+# define GNULIB_defined_pthread_tss_types 1
+# endif
+# undef PTHREAD_DESTRUCTOR_ITERATIONS
+# define PTHREAD_DESTRUCTOR_ITERATIONS 0
+# endif
+#endif
+
+/* =========== Spinlock types and macros =========== */
+
+#if (defined _WIN32 && ! defined __CYGWIN__) && USE_WINDOWS_THREADS
+# if @GNULIB_PTHREAD_SPIN@
+# include "windows-spin.h"
+# if @HAVE_PTHREAD_T@
+# define pthread_spinlock_t rpl_pthread_spinlock_t
+# endif
+# if !GNULIB_defined_pthread_spin_types
+typedef glwthread_spinlock_t pthread_spinlock_t;
+# define GNULIB_defined_pthread_spin_types 1
+# endif
+# else
+# if @HAVE_PTHREAD_T@
+# define pthread_spinlock_t rpl_pthread_spinlock_t
+# endif
+# if !GNULIB_defined_pthread_spin_types
+typedef pthread_mutex_t pthread_spinlock_t;
+# define GNULIB_defined_pthread_spin_types 1
+# endif
+# endif
+# undef PTHREAD_PROCESS_PRIVATE
+# undef PTHREAD_PROCESS_SHARED
+# define PTHREAD_PROCESS_PRIVATE 0
+# define PTHREAD_PROCESS_SHARED 1
+#else
+# if !@HAVE_PTHREAD_SPINLOCK_T@
+/* Approximate spinlocks with mutexes. */
+# if !GNULIB_defined_pthread_spin_types
+typedef pthread_mutex_t pthread_spinlock_t;
+# define GNULIB_defined_pthread_spin_types 1
+# endif
+# endif
+# if !@HAVE_PTHREAD_PROCESS_SHARED@
+# define PTHREAD_PROCESS_PRIVATE 0
+# define PTHREAD_PROCESS_SHARED 1
+# endif
+#endif
+
+/* =========== Other types and macros =========== */
+
+#if !@HAVE_PTHREAD_T@
+# if !GNULIB_defined_other_pthread_types
+typedef int pthread_barrier_t;
+typedef unsigned int pthread_barrierattr_t;
+# define GNULIB_defined_other_pthread_types 1
+# endif
+#endif
+
+#if !defined PTHREAD_CANCELED
+
+# define PTHREAD_BARRIER_SERIAL_THREAD (-1)
+
+# define PTHREAD_CANCEL_DEFERRED 0
+# define PTHREAD_CANCEL_ASYNCHRONOUS 1
+
+# define PTHREAD_CANCEL_ENABLE 0
+# define PTHREAD_CANCEL_DISABLE 1
+
+# define PTHREAD_CANCELED ((void *) -1)
+
+# define PTHREAD_INHERIT_SCHED 0
+# define PTHREAD_EXPLICIT_SCHED 1
+
+# define PTHREAD_PRIO_NONE 0
+# define PTHREAD_PRIO_INHERIT 1
+# define PTHREAD_PRIO_PROTECT 2
+
+# define PTHREAD_SCOPE_SYSTEM 0
+# define PTHREAD_SCOPE_PROCESS 1
+
+#endif
+
+/* =========== Thread functions =========== */
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_CREATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_create
+# define pthread_create rpl_pthread_create
+# endif
+_GL_FUNCDECL_RPL (pthread_create, int,
+ (pthread_t *threadp, const pthread_attr_t *attr,
+ void * (*mainfunc) (void *), void *arg)
+ _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (pthread_create, int,
+ (pthread_t *threadp, const pthread_attr_t *attr,
+ void * (*mainfunc) (void *), void *arg));
+# else
+# if !@HAVE_PTHREAD_CREATE@
+_GL_FUNCDECL_SYS (pthread_create, int,
+ (pthread_t *threadp, const pthread_attr_t *attr,
+ void * (*mainfunc) (void *), void *arg)
+ _GL_ARG_NONNULL ((1, 3)));
+# endif
+_GL_CXXALIAS_SYS_CAST (pthread_create, int,
+ (pthread_t *threadp, const pthread_attr_t *attr,
+ void * (*mainfunc) (void *), void *arg));
+# endif
+_GL_CXXALIASWARN (pthread_create);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_create
+# if HAVE_RAW_DECL_PTHREAD_CREATE
+_GL_WARN_ON_USE (pthread_create, "pthread_create is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_ATTR_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_attr_init
+# define pthread_attr_init rpl_pthread_attr_init
+# endif
+_GL_FUNCDECL_RPL (pthread_attr_init, int, (pthread_attr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_attr_init, int, (pthread_attr_t *attr));
+# else
+# if !@HAVE_PTHREAD_ATTR_INIT@
+_GL_FUNCDECL_SYS (pthread_attr_init, int, (pthread_attr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_attr_init, int, (pthread_attr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_attr_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_attr_init
+# if HAVE_RAW_DECL_PTHREAD_ATTR_INIT
+_GL_WARN_ON_USE (pthread_attr_init, "pthread_attr_init is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_ATTR_GETDETACHSTATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_attr_getdetachstate
+# define pthread_attr_getdetachstate rpl_pthread_attr_getdetachstate
+# endif
+_GL_FUNCDECL_RPL (pthread_attr_getdetachstate, int,
+ (const pthread_attr_t *attr, int *detachstatep)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_attr_getdetachstate, int,
+ (const pthread_attr_t *attr, int *detachstatep));
+# else
+# if !@HAVE_PTHREAD_ATTR_GETDETACHSTATE@
+_GL_FUNCDECL_SYS (pthread_attr_getdetachstate, int,
+ (const pthread_attr_t *attr, int *detachstatep)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (pthread_attr_getdetachstate, int,
+ (const pthread_attr_t *attr, int *detachstatep));
+# endif
+_GL_CXXALIASWARN (pthread_attr_getdetachstate);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_attr_getdetachstate
+# if HAVE_RAW_DECL_PTHREAD_ATTR_GETDETACHSTATE
+_GL_WARN_ON_USE (pthread_attr_getdetachstate, "pthread_attr_getdetachstate is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_ATTR_SETDETACHSTATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_attr_setdetachstate
+# define pthread_attr_setdetachstate rpl_pthread_attr_setdetachstate
+# endif
+_GL_FUNCDECL_RPL (pthread_attr_setdetachstate, int,
+ (pthread_attr_t *attr, int detachstate)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_attr_setdetachstate, int,
+ (pthread_attr_t *attr, int detachstate));
+# else
+# if !@HAVE_PTHREAD_ATTR_SETDETACHSTATE@
+_GL_FUNCDECL_SYS (pthread_attr_setdetachstate, int,
+ (pthread_attr_t *attr, int detachstate)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_attr_setdetachstate, int,
+ (pthread_attr_t *attr, int detachstate));
+# endif
+_GL_CXXALIASWARN (pthread_attr_setdetachstate);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_attr_setdetachstate
+# if HAVE_RAW_DECL_PTHREAD_ATTR_SETDETACHSTATE
+_GL_WARN_ON_USE (pthread_attr_setdetachstate, "pthread_attr_setdetachstate is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_ATTR_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_attr_destroy
+# define pthread_attr_destroy rpl_pthread_attr_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_attr_destroy, int, (pthread_attr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_attr_destroy, int, (pthread_attr_t *attr));
+# else
+# if !@HAVE_PTHREAD_ATTR_DESTROY@
+_GL_FUNCDECL_SYS (pthread_attr_destroy, int, (pthread_attr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_attr_destroy, int, (pthread_attr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_attr_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_attr_destroy
+# if HAVE_RAW_DECL_PTHREAD_ATTR_DESTROY
+_GL_WARN_ON_USE (pthread_attr_destroy, "pthread_attr_destroy is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_SELF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_self
+# define pthread_self rpl_pthread_self
+# endif
+_GL_FUNCDECL_RPL (pthread_self, pthread_t, (void) _GL_ATTRIBUTE_PURE);
+_GL_CXXALIAS_RPL (pthread_self, pthread_t, (void));
+# else
+# if !@HAVE_PTHREAD_SELF@
+_GL_FUNCDECL_SYS (pthread_self, pthread_t, (void) _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (pthread_self, pthread_t, (void));
+# endif
+_GL_CXXALIASWARN (pthread_self);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_self
+# if HAVE_RAW_DECL_PTHREAD_SELF
+_GL_WARN_ON_USE (pthread_self, "pthread_self is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_EQUAL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_equal
+# define pthread_equal rpl_pthread_equal
+# endif
+_GL_FUNCDECL_RPL (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
+_GL_CXXALIAS_RPL (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
+# else
+# if !@HAVE_PTHREAD_EQUAL@
+_GL_FUNCDECL_SYS (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
+# endif
+_GL_CXXALIAS_SYS (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
+# endif
+_GL_CXXALIASWARN (pthread_equal);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_equal
+# if HAVE_RAW_DECL_PTHREAD_EQUAL
+_GL_WARN_ON_USE (pthread_equal, "pthread_equal is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_DETACH@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_detach
+# define pthread_detach rpl_pthread_detach
+# endif
+_GL_FUNCDECL_RPL (pthread_detach, int, (pthread_t thread));
+_GL_CXXALIAS_RPL (pthread_detach, int, (pthread_t thread));
+# else
+# if !@HAVE_PTHREAD_DETACH@
+_GL_FUNCDECL_SYS (pthread_detach, int, (pthread_t thread));
+# endif
+_GL_CXXALIAS_SYS (pthread_detach, int, (pthread_t thread));
+# endif
+_GL_CXXALIASWARN (pthread_detach);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_detach
+# if HAVE_RAW_DECL_PTHREAD_DETACH
+_GL_WARN_ON_USE (pthread_detach, "pthread_detach is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_JOIN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_join
+# define pthread_join rpl_pthread_join
+# endif
+_GL_FUNCDECL_RPL (pthread_join, int, (pthread_t thread, void **valuep));
+_GL_CXXALIAS_RPL (pthread_join, int, (pthread_t thread, void **valuep));
+# else
+# if !@HAVE_PTHREAD_JOIN@
+_GL_FUNCDECL_SYS (pthread_join, int, (pthread_t thread, void **valuep));
+# endif
+_GL_CXXALIAS_SYS (pthread_join, int, (pthread_t thread, void **valuep));
+# endif
+_GL_CXXALIASWARN (pthread_join);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_join
+# if HAVE_RAW_DECL_PTHREAD_JOIN
+_GL_WARN_ON_USE (pthread_join, "pthread_join is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_THREAD@
+# if @REPLACE_PTHREAD_EXIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_exit
+# define pthread_exit rpl_pthread_exit
+# endif
+_GL_FUNCDECL_RPL (pthread_exit, _Noreturn void, (void *value));
+_GL_CXXALIAS_RPL (pthread_exit, void, (void *value));
+# else
+# if !@HAVE_PTHREAD_EXIT@
+_GL_FUNCDECL_SYS (pthread_exit, _Noreturn void, (void *value));
+# endif
+/* Need to cast because of AIX with xlclang++. */
+_GL_CXXALIAS_SYS_CAST (pthread_exit, void, (void *value));
+# endif
+_GL_CXXALIASWARN (pthread_exit);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_exit
+# if HAVE_RAW_DECL_PTHREAD_EXIT
+_GL_WARN_ON_USE (pthread_exit, "pthread_exit is not portable - "
+ "use gnulib module pthread-thread for portability");
+# endif
+#endif
+
+/* =========== Once-only control (initialization) functions =========== */
+
+#if @GNULIB_PTHREAD_ONCE@
+# if @REPLACE_PTHREAD_ONCE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_once
+# define pthread_once rpl_pthread_once
+# endif
+_GL_FUNCDECL_RPL (pthread_once, int,
+ (pthread_once_t *once_control, void (*initfunction) (void))
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_once, int,
+ (pthread_once_t *once_control, void (*initfunction) (void)));
+# else
+# if !@HAVE_PTHREAD_ONCE@
+_GL_FUNCDECL_SYS (pthread_once, int,
+ (pthread_once_t *once_control, void (*initfunction) (void))
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS_CAST (pthread_once, int,
+ (pthread_once_t *once_control,
+ void (*initfunction) (void)));
+# endif
+_GL_CXXALIASWARN (pthread_once);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_once
+# if HAVE_RAW_DECL_PTHREAD_ONCE
+_GL_WARN_ON_USE (pthread_once, "pthread_once is not portable - "
+ "use gnulib module pthread-once for portability");
+# endif
+#endif
+
+/* =========== Mutex functions =========== */
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEX_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutex_init
+# define pthread_mutex_init rpl_pthread_mutex_init
+# endif
+_GL_FUNCDECL_RPL (pthread_mutex_init, int,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutex_init, int,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_MUTEX_INIT@
+_GL_FUNCDECL_SYS (pthread_mutex_init, int,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutex_init, int,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_mutex_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutex_init
+# if HAVE_RAW_DECL_PTHREAD_MUTEX_INIT
+_GL_WARN_ON_USE (pthread_mutex_init, "pthread_mutex_init is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEXATTR_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutexattr_init
+# define pthread_mutexattr_init rpl_pthread_mutexattr_init
+# endif
+_GL_FUNCDECL_RPL (pthread_mutexattr_init, int, (pthread_mutexattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutexattr_init, int, (pthread_mutexattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_MUTEXATTR_INIT@
+_GL_FUNCDECL_SYS (pthread_mutexattr_init, int, (pthread_mutexattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutexattr_init, int, (pthread_mutexattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_mutexattr_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutexattr_init
+# if HAVE_RAW_DECL_PTHREAD_MUTEXATTR_INIT
+_GL_WARN_ON_USE (pthread_mutexattr_init, "pthread_mutexattr_init is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEXATTR_GETTYPE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutexattr_gettype
+# define pthread_mutexattr_gettype rpl_pthread_mutexattr_gettype
+# endif
+_GL_FUNCDECL_RPL (pthread_mutexattr_gettype, int,
+ (const pthread_mutexattr_t *attr, int *typep)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_mutexattr_gettype, int,
+ (const pthread_mutexattr_t *attr, int *typep));
+# else
+# if !@HAVE_PTHREAD_MUTEXATTR_GETTYPE@
+_GL_FUNCDECL_SYS (pthread_mutexattr_gettype, int,
+ (const pthread_mutexattr_t *attr, int *typep)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+/* Need to cast, because on FreeBSD the first parameter is
+ pthread_mutexattr_t *attr. */
+_GL_CXXALIAS_SYS_CAST (pthread_mutexattr_gettype, int,
+ (const pthread_mutexattr_t *attr, int *typep));
+# endif
+_GL_CXXALIASWARN (pthread_mutexattr_gettype);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutexattr_gettype
+# if HAVE_RAW_DECL_PTHREAD_MUTEXATTR_GETTYPE
+_GL_WARN_ON_USE (pthread_mutexattr_gettype, "pthread_mutexattr_gettype is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEXATTR_SETTYPE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutexattr_settype
+# define pthread_mutexattr_settype rpl_pthread_mutexattr_settype
+# endif
+_GL_FUNCDECL_RPL (pthread_mutexattr_settype, int,
+ (pthread_mutexattr_t *attr, int type) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutexattr_settype, int,
+ (pthread_mutexattr_t *attr, int type));
+# else
+# if !@HAVE_PTHREAD_MUTEXATTR_SETTYPE@
+_GL_FUNCDECL_SYS (pthread_mutexattr_settype, int,
+ (pthread_mutexattr_t *attr, int type) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutexattr_settype, int,
+ (pthread_mutexattr_t *attr, int type));
+# endif
+_GL_CXXALIASWARN (pthread_mutexattr_settype);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutexattr_settype
+# if HAVE_RAW_DECL_PTHREAD_MUTEXATTR_SETTYPE
+_GL_WARN_ON_USE (pthread_mutexattr_settype, "pthread_mutexattr_settype is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEXATTR_GETROBUST@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutexattr_getrobust
+# define pthread_mutexattr_getrobust rpl_pthread_mutexattr_getrobust
+# endif
+_GL_FUNCDECL_RPL (pthread_mutexattr_getrobust, int,
+ (const pthread_mutexattr_t *attr, int *robustp)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_mutexattr_getrobust, int,
+ (const pthread_mutexattr_t *attr, int *robustp));
+# else
+# if !@HAVE_PTHREAD_MUTEXATTR_GETROBUST@
+_GL_FUNCDECL_SYS (pthread_mutexattr_getrobust, int,
+ (const pthread_mutexattr_t *attr, int *robustp)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+/* Need to cast, because on FreeBSD the first parameter is
+ pthread_mutexattr_t *attr. */
+_GL_CXXALIAS_SYS_CAST (pthread_mutexattr_getrobust, int,
+ (const pthread_mutexattr_t *attr, int *robustp));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_mutexattr_getrobust);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutexattr_getrobust
+# if HAVE_RAW_DECL_PTHREAD_MUTEXATTR_GETROBUST
+_GL_WARN_ON_USE (pthread_mutexattr_getrobust, "pthread_mutexattr_getrobust is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEXATTR_SETROBUST@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutexattr_setrobust
+# define pthread_mutexattr_setrobust rpl_pthread_mutexattr_setrobust
+# endif
+_GL_FUNCDECL_RPL (pthread_mutexattr_setrobust, int,
+ (pthread_mutexattr_t *attr, int robust)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutexattr_setrobust, int,
+ (pthread_mutexattr_t *attr, int robust));
+# else
+# if !@HAVE_PTHREAD_MUTEXATTR_SETROBUST@
+_GL_FUNCDECL_SYS (pthread_mutexattr_setrobust, int,
+ (pthread_mutexattr_t *attr, int robust)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutexattr_setrobust, int,
+ (pthread_mutexattr_t *attr, int robust));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_mutexattr_setrobust);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutexattr_setrobust
+# if HAVE_RAW_DECL_PTHREAD_MUTEXATTR_SETROBUST
+_GL_WARN_ON_USE (pthread_mutexattr_setrobust, "pthread_mutexattr_setrobust is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEXATTR_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutexattr_destroy
+# define pthread_mutexattr_destroy rpl_pthread_mutexattr_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_mutexattr_destroy, int, (pthread_mutexattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutexattr_destroy, int, (pthread_mutexattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_MUTEXATTR_DESTROY@
+_GL_FUNCDECL_SYS (pthread_mutexattr_destroy, int, (pthread_mutexattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutexattr_destroy, int, (pthread_mutexattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_mutexattr_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutexattr_destroy
+# if HAVE_RAW_DECL_PTHREAD_MUTEXATTR_DESTROY
+_GL_WARN_ON_USE (pthread_mutexattr_destroy, "pthread_mutexattr_destroy is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEX_LOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutex_lock
+# define pthread_mutex_lock rpl_pthread_mutex_lock
+# endif
+_GL_FUNCDECL_RPL (pthread_mutex_lock, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutex_lock, int, (pthread_mutex_t *mutex));
+# else
+# if !@HAVE_PTHREAD_MUTEX_LOCK@
+_GL_FUNCDECL_SYS (pthread_mutex_lock, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutex_lock, int, (pthread_mutex_t *mutex));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_mutex_lock);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutex_lock
+# if HAVE_RAW_DECL_PTHREAD_MUTEX_LOCK
+_GL_WARN_ON_USE (pthread_mutex_lock, "pthread_mutex_lock is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEX_TRYLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutex_trylock
+# define pthread_mutex_trylock rpl_pthread_mutex_trylock
+# endif
+_GL_FUNCDECL_RPL (pthread_mutex_trylock, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutex_trylock, int, (pthread_mutex_t *mutex));
+# else
+# if !@HAVE_PTHREAD_MUTEX_TRYLOCK@
+_GL_FUNCDECL_SYS (pthread_mutex_trylock, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutex_trylock, int, (pthread_mutex_t *mutex));
+# endif
+_GL_CXXALIASWARN (pthread_mutex_trylock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutex_trylock
+# if HAVE_RAW_DECL_PTHREAD_MUTEX_TRYLOCK
+_GL_WARN_ON_USE (pthread_mutex_trylock, "pthread_mutex_trylock is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX_TIMEDLOCK@
+# if @REPLACE_PTHREAD_MUTEX_TIMEDLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutex_timedlock
+# define pthread_mutex_timedlock rpl_pthread_mutex_timedlock
+# endif
+_GL_FUNCDECL_RPL (pthread_mutex_timedlock, int,
+ (pthread_mutex_t *mutex, const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_mutex_timedlock, int,
+ (pthread_mutex_t *mutex, const struct timespec *abstime));
+# else
+# if !@HAVE_PTHREAD_MUTEX_TIMEDLOCK@
+_GL_FUNCDECL_SYS (pthread_mutex_timedlock, int,
+ (pthread_mutex_t *mutex, const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutex_timedlock, int,
+ (pthread_mutex_t *mutex, const struct timespec *abstime));
+# endif
+_GL_CXXALIASWARN (pthread_mutex_timedlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutex_timedlock
+# if HAVE_RAW_DECL_PTHREAD_MUTEX_TIMEDLOCK
+_GL_WARN_ON_USE (pthread_mutex_timedlock, "pthread_mutex_timedlock is not portable - "
+ "use gnulib module pthread_mutex_timedlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEX_UNLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutex_unlock
+# define pthread_mutex_unlock rpl_pthread_mutex_unlock
+# endif
+_GL_FUNCDECL_RPL (pthread_mutex_unlock, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutex_unlock, int, (pthread_mutex_t *mutex));
+# else
+# if !@HAVE_PTHREAD_MUTEX_UNLOCK@
+_GL_FUNCDECL_SYS (pthread_mutex_unlock, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutex_unlock, int, (pthread_mutex_t *mutex));
+# endif
+_GL_CXXALIASWARN (pthread_mutex_unlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutex_unlock
+# if HAVE_RAW_DECL_PTHREAD_MUTEX_UNLOCK
+_GL_WARN_ON_USE (pthread_mutex_unlock, "pthread_mutex_unlock is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_MUTEX@
+# if @REPLACE_PTHREAD_MUTEX_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_mutex_destroy
+# define pthread_mutex_destroy rpl_pthread_mutex_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_mutex_destroy, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_mutex_destroy, int, (pthread_mutex_t *mutex));
+# else
+# if !@HAVE_PTHREAD_MUTEX_DESTROY@
+_GL_FUNCDECL_SYS (pthread_mutex_destroy, int, (pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_mutex_destroy, int, (pthread_mutex_t *mutex));
+# endif
+_GL_CXXALIASWARN (pthread_mutex_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_mutex_destroy
+# if HAVE_RAW_DECL_PTHREAD_MUTEX_DESTROY
+_GL_WARN_ON_USE (pthread_mutex_destroy, "pthread_mutex_destroy is not portable - "
+ "use gnulib module pthread-mutex for portability");
+# endif
+#endif
+
+/* =========== Read-write lock functions =========== */
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_init
+# define pthread_rwlock_init rpl_pthread_rwlock_init
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_init, int,
+ (pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_init, int,
+ (pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_INIT@
+_GL_FUNCDECL_SYS (pthread_rwlock_init, int,
+ (pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_init, int,
+ (pthread_rwlock_t *lock, const pthread_rwlockattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_init
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_INIT
+_GL_WARN_ON_USE (pthread_rwlock_init, "pthread_rwlock_init is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCKATTR_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlockattr_init
+# define pthread_rwlockattr_init rpl_pthread_rwlockattr_init
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlockattr_init, int, (pthread_rwlockattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlockattr_init, int, (pthread_rwlockattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_RWLOCKATTR_INIT@
+_GL_FUNCDECL_SYS (pthread_rwlockattr_init, int, (pthread_rwlockattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlockattr_init, int, (pthread_rwlockattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_rwlockattr_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlockattr_init
+# if HAVE_RAW_DECL_PTHREAD_RWLOCKATTR_INIT
+_GL_WARN_ON_USE (pthread_rwlockattr_init, "pthread_rwlockattr_init is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCKATTR_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlockattr_destroy
+# define pthread_rwlockattr_destroy rpl_pthread_rwlockattr_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlockattr_destroy, int,
+ (pthread_rwlockattr_t *attr) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlockattr_destroy, int,
+ (pthread_rwlockattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_RWLOCKATTR_DESTROY@
+_GL_FUNCDECL_SYS (pthread_rwlockattr_destroy, int,
+ (pthread_rwlockattr_t *attr) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlockattr_destroy, int,
+ (pthread_rwlockattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_rwlockattr_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlockattr_destroy
+# if HAVE_RAW_DECL_PTHREAD_RWLOCKATTR_DESTROY
+_GL_WARN_ON_USE (pthread_rwlockattr_destroy, "pthread_rwlockattr_destroy is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_RDLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_rdlock
+# define pthread_rwlock_rdlock rpl_pthread_rwlock_rdlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_rdlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_rdlock, int, (pthread_rwlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_RDLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_rdlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_rdlock, int, (pthread_rwlock_t *lock));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_rdlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_rdlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_RDLOCK
+_GL_WARN_ON_USE (pthread_rwlock_rdlock, "pthread_rwlock_rdlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_WRLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_wrlock
+# define pthread_rwlock_wrlock rpl_pthread_rwlock_wrlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_wrlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_wrlock, int, (pthread_rwlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_WRLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_wrlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_wrlock, int, (pthread_rwlock_t *lock));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_wrlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_wrlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_WRLOCK
+_GL_WARN_ON_USE (pthread_rwlock_wrlock, "pthread_rwlock_wrlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_TRYRDLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_tryrdlock
+# define pthread_rwlock_tryrdlock rpl_pthread_rwlock_tryrdlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_tryrdlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_tryrdlock, int, (pthread_rwlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_TRYRDLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_tryrdlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_tryrdlock, int, (pthread_rwlock_t *lock));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_tryrdlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_tryrdlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_TRYRDLOCK
+_GL_WARN_ON_USE (pthread_rwlock_tryrdlock, "pthread_rwlock_tryrdlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_TRYWRLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_trywrlock
+# define pthread_rwlock_trywrlock rpl_pthread_rwlock_trywrlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_trywrlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_trywrlock, int, (pthread_rwlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_TRYWRLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_trywrlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_trywrlock, int, (pthread_rwlock_t *lock));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_trywrlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_trywrlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_TRYWRLOCK
+_GL_WARN_ON_USE (pthread_rwlock_trywrlock, "pthread_rwlock_trywrlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_timedrdlock
+# define pthread_rwlock_timedrdlock rpl_pthread_rwlock_timedrdlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_timedrdlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_rwlock_timedrdlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_timedrdlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_timedrdlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_timedrdlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_timedrdlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_TIMEDRDLOCK
+_GL_WARN_ON_USE (pthread_rwlock_timedrdlock, "pthread_rwlock_timedrdlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_timedwrlock
+# define pthread_rwlock_timedwrlock rpl_pthread_rwlock_timedwrlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_timedwrlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_rwlock_timedwrlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_timedwrlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_timedwrlock, int,
+ (pthread_rwlock_t *lock, const struct timespec *abstime));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_timedwrlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_timedwrlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_TIMEDWRLOCK
+_GL_WARN_ON_USE (pthread_rwlock_timedwrlock, "pthread_rwlock_timedwrlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_UNLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_unlock
+# define pthread_rwlock_unlock rpl_pthread_rwlock_unlock
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_unlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_unlock, int, (pthread_rwlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_UNLOCK@
+_GL_FUNCDECL_SYS (pthread_rwlock_unlock, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_unlock, int, (pthread_rwlock_t *lock));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_unlock);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_unlock
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_UNLOCK
+_GL_WARN_ON_USE (pthread_rwlock_unlock, "pthread_rwlock_unlock is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_RWLOCK@
+# if @REPLACE_PTHREAD_RWLOCK_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_rwlock_destroy
+# define pthread_rwlock_destroy rpl_pthread_rwlock_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_rwlock_destroy, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_rwlock_destroy, int, (pthread_rwlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_RWLOCK_DESTROY@
+_GL_FUNCDECL_SYS (pthread_rwlock_destroy, int, (pthread_rwlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_rwlock_destroy, int, (pthread_rwlock_t *lock));
+# endif
+_GL_CXXALIASWARN (pthread_rwlock_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_rwlock_destroy
+# if HAVE_RAW_DECL_PTHREAD_RWLOCK_DESTROY
+_GL_WARN_ON_USE (pthread_rwlock_destroy, "pthread_rwlock_destroy is not portable - "
+ "use gnulib module pthread-rwlock for portability");
+# endif
+#endif
+
+/* =========== Condition variable functions =========== */
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_COND_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_cond_init
+# define pthread_cond_init rpl_pthread_cond_init
+# endif
+_GL_FUNCDECL_RPL (pthread_cond_init, int,
+ (pthread_cond_t *cond, const pthread_condattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_cond_init, int,
+ (pthread_cond_t *cond, const pthread_condattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_COND_INIT@
+_GL_FUNCDECL_SYS (pthread_cond_init, int,
+ (pthread_cond_t *cond, const pthread_condattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_cond_init, int,
+ (pthread_cond_t *cond, const pthread_condattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_cond_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_cond_init
+# if HAVE_RAW_DECL_PTHREAD_COND_INIT
+_GL_WARN_ON_USE (pthread_cond_init, "pthread_cond_init is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_CONDATTR_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_condattr_init
+# define pthread_condattr_init rpl_pthread_condattr_init
+# endif
+_GL_FUNCDECL_RPL (pthread_condattr_init, int, (pthread_condattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_condattr_init, int, (pthread_condattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_CONDATTR_INIT@
+_GL_FUNCDECL_SYS (pthread_condattr_init, int, (pthread_condattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_condattr_init, int, (pthread_condattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_condattr_init);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_condattr_init
+# if HAVE_RAW_DECL_PTHREAD_CONDATTR_INIT
+_GL_WARN_ON_USE (pthread_condattr_init, "pthread_condattr_init is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_CONDATTR_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_condattr_destroy
+# define pthread_condattr_destroy rpl_pthread_condattr_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_condattr_destroy, int, (pthread_condattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_condattr_destroy, int, (pthread_condattr_t *attr));
+# else
+# if !@HAVE_PTHREAD_CONDATTR_DESTROY@
+_GL_FUNCDECL_SYS (pthread_condattr_destroy, int, (pthread_condattr_t *attr)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_condattr_destroy, int, (pthread_condattr_t *attr));
+# endif
+_GL_CXXALIASWARN (pthread_condattr_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_condattr_destroy
+# if HAVE_RAW_DECL_PTHREAD_CONDATTR_DESTROY
+_GL_WARN_ON_USE (pthread_condattr_destroy, "pthread_condattr_destroy is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_COND_WAIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_cond_wait
+# define pthread_cond_wait rpl_pthread_cond_wait
+# endif
+_GL_FUNCDECL_RPL (pthread_cond_wait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (pthread_cond_wait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex));
+# else
+# if !@HAVE_PTHREAD_COND_WAIT@
+_GL_FUNCDECL_SYS (pthread_cond_wait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (pthread_cond_wait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex));
+# endif
+_GL_CXXALIASWARN (pthread_cond_wait);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_cond_wait
+# if HAVE_RAW_DECL_PTHREAD_COND_WAIT
+_GL_WARN_ON_USE (pthread_cond_wait, "pthread_cond_wait is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_COND_TIMEDWAIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_cond_timedwait
+# define pthread_cond_timedwait rpl_pthread_cond_timedwait
+# endif
+_GL_FUNCDECL_RPL (pthread_cond_timedwait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
+ const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+_GL_CXXALIAS_RPL (pthread_cond_timedwait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
+ const struct timespec *abstime));
+# else
+# if !@HAVE_PTHREAD_COND_TIMEDWAIT@
+_GL_FUNCDECL_SYS (pthread_cond_timedwait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
+ const struct timespec *abstime)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+# endif
+_GL_CXXALIAS_SYS (pthread_cond_timedwait, int,
+ (pthread_cond_t *cond, pthread_mutex_t *mutex,
+ const struct timespec *abstime));
+# endif
+_GL_CXXALIASWARN (pthread_cond_timedwait);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_cond_timedwait
+# if HAVE_RAW_DECL_PTHREAD_COND_TIMEDWAIT
+_GL_WARN_ON_USE (pthread_cond_timedwait, "pthread_cond_timedwait is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_COND_SIGNAL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_cond_signal
+# define pthread_cond_signal rpl_pthread_cond_signal
+# endif
+_GL_FUNCDECL_RPL (pthread_cond_signal, int, (pthread_cond_t *cond)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_cond_signal, int, (pthread_cond_t *cond));
+# else
+# if !@HAVE_PTHREAD_COND_SIGNAL@
+_GL_FUNCDECL_SYS (pthread_cond_signal, int, (pthread_cond_t *cond)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_cond_signal, int, (pthread_cond_t *cond));
+# endif
+_GL_CXXALIASWARN (pthread_cond_signal);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_cond_signal
+# if HAVE_RAW_DECL_PTHREAD_COND_SIGNAL
+_GL_WARN_ON_USE (pthread_cond_signal, "pthread_cond_signal is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_COND_BROADCAST@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_cond_broadcast
+# define pthread_cond_broadcast rpl_pthread_cond_broadcast
+# endif
+_GL_FUNCDECL_RPL (pthread_cond_broadcast, int, (pthread_cond_t *cond)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_cond_broadcast, int, (pthread_cond_t *cond));
+# else
+# if !@HAVE_PTHREAD_COND_BROADCAST@
+_GL_FUNCDECL_SYS (pthread_cond_broadcast, int, (pthread_cond_t *cond)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_cond_broadcast, int, (pthread_cond_t *cond));
+# endif
+_GL_CXXALIASWARN (pthread_cond_broadcast);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_cond_broadcast
+# if HAVE_RAW_DECL_PTHREAD_COND_BROADCAST
+_GL_WARN_ON_USE (pthread_cond_broadcast, "pthread_cond_broadcast is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_COND@
+# if @REPLACE_PTHREAD_COND_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_cond_destroy
+# define pthread_cond_destroy rpl_pthread_cond_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_cond_destroy, int, (pthread_cond_t *cond)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_cond_destroy, int, (pthread_cond_t *cond));
+# else
+# if !@HAVE_PTHREAD_COND_DESTROY@
+_GL_FUNCDECL_SYS (pthread_cond_destroy, int, (pthread_cond_t *cond)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_cond_destroy, int, (pthread_cond_t *cond));
+# endif
+_GL_CXXALIASWARN (pthread_cond_destroy);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_cond_destroy
+# if HAVE_RAW_DECL_PTHREAD_COND_DESTROY
+_GL_WARN_ON_USE (pthread_cond_destroy, "pthread_cond_destroy is not portable - "
+ "use gnulib module pthread-cond for portability");
+# endif
+#endif
+
+/* =========== Thread-specific storage functions =========== */
+
+#if @GNULIB_PTHREAD_TSS@
+# if @REPLACE_PTHREAD_KEY_CREATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_key_create
+# define pthread_key_create rpl_pthread_key_create
+# endif
+_GL_FUNCDECL_RPL (pthread_key_create, int,
+ (pthread_key_t *keyp, void (*destructor) (void *))
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_key_create, int,
+ (pthread_key_t *keyp, void (*destructor) (void *)));
+# else
+# if !@HAVE_PTHREAD_KEY_CREATE@
+_GL_FUNCDECL_SYS (pthread_key_create, int,
+ (pthread_key_t *keyp, void (*destructor) (void *))
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS_CAST (pthread_key_create, int,
+ (pthread_key_t *keyp, void (*destructor) (void *)));
+# endif
+_GL_CXXALIASWARN (pthread_key_create);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_key_create
+# if HAVE_RAW_DECL_PTHREAD_KEY_CREATE
+_GL_WARN_ON_USE (pthread_key_create, "pthread_key_create is not portable - "
+ "use gnulib module pthread-tss for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_TSS@
+# if @REPLACE_PTHREAD_SETSPECIFIC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_setspecific
+# define pthread_setspecific rpl_pthread_setspecific
+# endif
+_GL_FUNCDECL_RPL (pthread_setspecific, int,
+ (pthread_key_t key, const void *value));
+_GL_CXXALIAS_RPL (pthread_setspecific, int,
+ (pthread_key_t key, const void *value));
+# else
+# if !@HAVE_PTHREAD_SETSPECIFIC@
+_GL_FUNCDECL_SYS (pthread_setspecific, int,
+ (pthread_key_t key, const void *value));
+# endif
+_GL_CXXALIAS_SYS (pthread_setspecific, int,
+ (pthread_key_t key, const void *value));
+# endif
+_GL_CXXALIASWARN (pthread_setspecific);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_setspecific
+# if HAVE_RAW_DECL_PTHREAD_SETSPECIFIC
+_GL_WARN_ON_USE (pthread_setspecific, "pthread_setspecific is not portable - "
+ "use gnulib module pthread-tss for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_TSS@
+# if @REPLACE_PTHREAD_GETSPECIFIC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_getspecific
+# define pthread_getspecific rpl_pthread_getspecific
+# endif
+_GL_FUNCDECL_RPL (pthread_getspecific, void *, (pthread_key_t key));
+_GL_CXXALIAS_RPL (pthread_getspecific, void *, (pthread_key_t key));
+# else
+# if !@HAVE_PTHREAD_GETSPECIFIC@
+_GL_FUNCDECL_SYS (pthread_getspecific, void *, (pthread_key_t key));
+# endif
+_GL_CXXALIAS_SYS (pthread_getspecific, void *, (pthread_key_t key));
+# endif
+_GL_CXXALIASWARN (pthread_getspecific);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_getspecific
+# if HAVE_RAW_DECL_PTHREAD_GETSPECIFIC
+_GL_WARN_ON_USE (pthread_getspecific, "pthread_getspecific is not portable - "
+ "use gnulib module pthread-tss for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_TSS@
+# if @REPLACE_PTHREAD_KEY_DELETE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_key_delete
+# define pthread_key_delete rpl_pthread_key_delete
+# endif
+_GL_FUNCDECL_RPL (pthread_key_delete, int, (pthread_key_t key));
+_GL_CXXALIAS_RPL (pthread_key_delete, int, (pthread_key_t key));
+# else
+# if !@HAVE_PTHREAD_KEY_DELETE@
+_GL_FUNCDECL_SYS (pthread_key_delete, int, (pthread_key_t key));
+# endif
+_GL_CXXALIAS_SYS (pthread_key_delete, int, (pthread_key_t key));
+# endif
+_GL_CXXALIASWARN (pthread_key_delete);
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_key_delete
+# if HAVE_RAW_DECL_PTHREAD_KEY_DELETE
+_GL_WARN_ON_USE (pthread_key_delete, "pthread_key_delete is not portable - "
+ "use gnulib module pthread-tss for portability");
+# endif
+#endif
+
+/* =========== Spinlock functions =========== */
+
+#if @GNULIB_PTHREAD_SPIN@
+# if @REPLACE_PTHREAD_SPIN_INIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_spin_init
+# define pthread_spin_init rpl_pthread_spin_init
+# endif
+_GL_FUNCDECL_RPL (pthread_spin_init, int,
+ (pthread_spinlock_t *lock, int shared_across_processes)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_spin_init, int,
+ (pthread_spinlock_t *lock, int shared_across_processes));
+# else
+# if !@HAVE_PTHREAD_SPIN_INIT@
+_GL_FUNCDECL_SYS (pthread_spin_init, int,
+ (pthread_spinlock_t *lock, int shared_across_processes)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_spin_init, int,
+ (pthread_spinlock_t *lock, int shared_across_processes));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_spin_init);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_spin_init
+# if HAVE_RAW_DECL_PTHREAD_SPIN_INIT
+_GL_WARN_ON_USE (pthread_spin_init, "pthread_spin_init is not portable - "
+ "use gnulib module pthread-spin for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_SPIN@
+# if @REPLACE_PTHREAD_SPIN_LOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_spin_lock
+# define pthread_spin_lock rpl_pthread_spin_lock
+# endif
+_GL_FUNCDECL_RPL (pthread_spin_lock, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_spin_lock, int, (pthread_spinlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_SPIN_LOCK@
+_GL_FUNCDECL_SYS (pthread_spin_lock, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_spin_lock, int, (pthread_spinlock_t *lock));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_spin_lock);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_spin_lock
+# if HAVE_RAW_DECL_PTHREAD_SPIN_LOCK
+_GL_WARN_ON_USE (pthread_spin_lock, "pthread_spin_lock is not portable - "
+ "use gnulib module pthread-spin for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_SPIN@
+# if @REPLACE_PTHREAD_SPIN_TRYLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_spin_trylock
+# define pthread_spin_trylock rpl_pthread_spin_trylock
+# endif
+_GL_FUNCDECL_RPL (pthread_spin_trylock, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_spin_trylock, int, (pthread_spinlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_SPIN_TRYLOCK@
+_GL_FUNCDECL_SYS (pthread_spin_trylock, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_spin_trylock, int, (pthread_spinlock_t *lock));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_spin_trylock);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_spin_trylock
+# if HAVE_RAW_DECL_PTHREAD_SPIN_TRYLOCK
+_GL_WARN_ON_USE (pthread_spin_trylock, "pthread_spin_trylock is not portable - "
+ "use gnulib module pthread-spin for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_SPIN@
+# if @REPLACE_PTHREAD_SPIN_UNLOCK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_spin_unlock
+# define pthread_spin_unlock rpl_pthread_spin_unlock
+# endif
+_GL_FUNCDECL_RPL (pthread_spin_unlock, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_spin_unlock, int, (pthread_spinlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_SPIN_UNLOCK@
+_GL_FUNCDECL_SYS (pthread_spin_unlock, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_spin_unlock, int, (pthread_spinlock_t *lock));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_spin_unlock);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_spin_unlock
+# if HAVE_RAW_DECL_PTHREAD_SPIN_UNLOCK
+_GL_WARN_ON_USE (pthread_spin_unlock, "pthread_spin_unlock is not portable - "
+ "use gnulib module pthread-spin for portability");
+# endif
+#endif
+
+#if @GNULIB_PTHREAD_SPIN@
+# if @REPLACE_PTHREAD_SPIN_DESTROY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pthread_spin_destroy
+# define pthread_spin_destroy rpl_pthread_spin_destroy
+# endif
+_GL_FUNCDECL_RPL (pthread_spin_destroy, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pthread_spin_destroy, int, (pthread_spinlock_t *lock));
+# else
+# if !@HAVE_PTHREAD_SPIN_DESTROY@
+_GL_FUNCDECL_SYS (pthread_spin_destroy, int, (pthread_spinlock_t *lock)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pthread_spin_destroy, int, (pthread_spinlock_t *lock));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (pthread_spin_destroy);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef pthread_spin_destroy
+# if HAVE_RAW_DECL_PTHREAD_SPIN_DESTROY
+_GL_WARN_ON_USE (pthread_spin_destroy, "pthread_spin_destroy is not portable - "
+ "use gnulib module pthread-spin for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_PTHREAD_H_ */
+#endif /* _@GUARD_PREFIX@_PTHREAD_H_ */
+#endif
diff --git a/gnulib-tests/pthread_sigmask.c b/gnulib-tests/pthread_sigmask.c
new file mode 100644
index 0000000..3eb74f2
--- /dev/null
+++ b/gnulib-tests/pthread_sigmask.c
@@ -0,0 +1,92 @@
+/* POSIX compatible signal blocking for threads.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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>
+
+/* Specification. */
+#include <signal.h>
+
+#include <errno.h>
+#include <stddef.h>
+
+#if PTHREAD_SIGMASK_INEFFECTIVE
+# include <string.h>
+#endif
+
+#if PTHREAD_SIGMASK_UNBLOCK_BUG
+# include <unistd.h>
+#endif
+
+int
+pthread_sigmask (int how, const sigset_t *new_mask, sigset_t *old_mask)
+#undef pthread_sigmask
+{
+#if HAVE_PTHREAD_SIGMASK
+ int ret;
+
+# if PTHREAD_SIGMASK_INEFFECTIVE
+ sigset_t omask, omask_copy;
+ sigset_t *old_mask_ptr = &omask;
+ sigemptyset (&omask);
+ /* Add a signal unlikely to be blocked, so that OMASK_COPY
+ is unlikely to match the actual mask. */
+ sigaddset (&omask, SIGILL);
+ memcpy (&omask_copy, &omask, sizeof omask);
+# else
+ sigset_t *old_mask_ptr = old_mask;
+# endif
+
+ ret = pthread_sigmask (how, new_mask, old_mask_ptr);
+
+# if PTHREAD_SIGMASK_INEFFECTIVE
+ if (ret == 0)
+ {
+ /* Detect whether pthread_sigmask is currently ineffective.
+ Don't cache the information: libpthread.so could be dynamically
+ loaded after the program started and after pthread_sigmask was
+ called for the first time. */
+ if (memcmp (&omask_copy, &omask, sizeof omask) == 0
+ && pthread_sigmask (1729, &omask_copy, NULL) == 0)
+ {
+ /* pthread_sigmask is currently ineffective. The program is not
+ linked to -lpthread. So use sigprocmask instead. */
+ return (sigprocmask (how, new_mask, old_mask) < 0 ? errno : 0);
+ }
+
+ if (old_mask)
+ memcpy (old_mask, &omask, sizeof omask);
+ }
+# endif
+# if PTHREAD_SIGMASK_FAILS_WITH_ERRNO
+ if (ret == -1)
+ return errno;
+# endif
+# if PTHREAD_SIGMASK_UNBLOCK_BUG
+ if (ret == 0
+ && new_mask != NULL
+ && (how == SIG_UNBLOCK || how == SIG_SETMASK))
+ {
+ /* Give the OS the opportunity to raise signals that were pending before
+ the pthread_sigmask call and have now been unblocked. */
+ usleep (1);
+ }
+# endif
+ return ret;
+#else
+ int ret = sigprocmask (how, new_mask, old_mask);
+ return (ret < 0 ? errno : 0);
+#endif
+}
diff --git a/gnulib-tests/putenv.c b/gnulib-tests/putenv.c
index 801e372..9e862e6 100644
--- a/gnulib-tests/putenv.c
+++ b/gnulib-tests/putenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2018 Free Software
+/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2020 Free Software
Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
diff --git a/gnulib-tests/raise.c b/gnulib-tests/raise.c
index 8a93bea..1b93e52 100644
--- a/gnulib-tests/raise.c
+++ b/gnulib-tests/raise.c
@@ -1,6 +1,6 @@
/* Provide a non-threads replacement for the POSIX raise function.
- Copyright (C) 2002-2003, 2005-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/read-file.c b/gnulib-tests/read-file.c
index af1ab8b..cf68e9b 100644
--- a/gnulib-tests/read-file.c
+++ b/gnulib-tests/read-file.c
@@ -1,5 +1,5 @@
/* read-file.c -- read file contents into a string
- Copyright (C) 2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
Written by Simon Josefsson and Bruno Haible.
This program is free software; you can redistribute it and/or modify
diff --git a/gnulib-tests/read-file.h b/gnulib-tests/read-file.h
index bddeab3..ffe7a0d 100644
--- a/gnulib-tests/read-file.h
+++ b/gnulib-tests/read-file.h
@@ -1,5 +1,5 @@
/* read-file.h -- read file contents into a string
- Copyright (C) 2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
Written by Simon Josefsson.
This program is free software; you can redistribute it and/or modify
diff --git a/gnulib-tests/readdir.c b/gnulib-tests/readdir.c
index c1c564d..1a02ce4 100644
--- a/gnulib-tests/readdir.c
+++ b/gnulib-tests/readdir.c
@@ -1,5 +1,5 @@
/* Read the next entry of a directory.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This 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 @@ readdir (DIR *dirp)
/* There is no need to add code to produce entries for "." and "..".
According to the POSIX:2008 section "4.12 Pathname Resolution"
- <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html>
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html>
"." and ".." are syntactic entities.
POSIX also says:
"If entries for dot or dot-dot exist, one entry shall be returned
diff --git a/gnulib-tests/realloc.c b/gnulib-tests/realloc.c
index 7620b6a..a24054d 100644
--- a/gnulib-tests/realloc.c
+++ b/gnulib-tests/realloc.c
@@ -1,6 +1,6 @@
/* realloc() function that is glibc compatible.
- Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2018 Free Software
+ Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/sched.in.h b/gnulib-tests/sched.in.h
new file mode 100644
index 0000000..7146b50
--- /dev/null
+++ b/gnulib-tests/sched.in.h
@@ -0,0 +1,97 @@
+/* A GNU-like <sched.h>.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
+
+ This 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 _@GUARD_PREFIX@_SCHED_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_SCHED_H@
+# if @HAVE_SYS_CDEFS_H@
+# include <sys/cdefs.h>
+# endif
+# @INCLUDE_NEXT@ @NEXT_SCHED_H@
+#endif
+
+#ifndef _@GUARD_PREFIX@_SCHED_H
+#define _@GUARD_PREFIX@_SCHED_H
+
+/* Get pid_t.
+ This is needed on glibc 2.11 (see
+ glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=13198>)
+ and Mac OS X 10.5. */
+#include <sys/types.h>
+
+#ifdef __KLIBC__
+/* On OS/2 kLIBC, struct sched_param is in spawn.h. */
+# include <spawn.h>
+#endif
+
+#ifdef __VMS
+/* On OpenVMS, struct sched_param is in <pthread.h>. */
+# include <pthread.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+#if !@HAVE_STRUCT_SCHED_PARAM@
+
+# if !GNULIB_defined_struct_sched_param
+struct sched_param
+{
+ int sched_priority;
+};
+# define GNULIB_defined_struct_sched_param 1
+# endif
+
+#endif
+
+#if !(defined SCHED_FIFO && defined SCHED_RR && defined SCHED_OTHER)
+# define SCHED_FIFO 1
+# define SCHED_RR 2
+# define SCHED_OTHER 0
+#endif
+
+#if @GNULIB_SCHED_YIELD@
+# if @REPLACE_SCHED_YIELD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef sched_yield
+# define sched_yield rpl_sched_yield
+# endif
+_GL_FUNCDECL_RPL (sched_yield, int, (void));
+_GL_CXXALIAS_RPL (sched_yield, int, (void));
+# else
+# if !@HAVE_SCHED_YIELD@
+_GL_FUNCDECL_SYS (sched_yield, int, (void));
+# endif
+_GL_CXXALIAS_SYS (sched_yield, int, (void));
+# endif
+_GL_CXXALIASWARN (sched_yield);
+#elif defined GNULIB_POSIXCHECK
+# undef sched_yield
+# if HAVE_RAW_DECL_SCHED_YIELD
+_GL_WARN_ON_USE (sched_yield, "sched_yield is not portable - "
+ "use gnulib module sched_yield for portability");
+# endif
+#endif
+
+#endif /* _@GUARD_PREFIX@_SCHED_H */
+#endif /* _@GUARD_PREFIX@_SCHED_H */
diff --git a/gnulib-tests/select.c b/gnulib-tests/select.c
index 670a3e1..6748c21 100644
--- a/gnulib-tests/select.c
+++ b/gnulib-tests/select.c
@@ -1,7 +1,7 @@
/* Emulation for select(2)
Contributed by Paolo Bonzini.
- Copyright 2008-2018 Free Software Foundation, Inc.
+ Copyright 2008-2020 Free Software Foundation, Inc.
This file is part of gnulib.
diff --git a/gnulib-tests/setenv.c b/gnulib-tests/setenv.c
index 439e1ff..d03bc5a 100644
--- a/gnulib-tests/setenv.c
+++ b/gnulib-tests/setenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2003, 2005-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995-2003, 2005-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/setlocale.c b/gnulib-tests/setlocale.c
index 63f870f..f4141be 100644
--- a/gnulib-tests/setlocale.c
+++ b/gnulib-tests/setlocale.c
@@ -1,5 +1,5 @@
/* Set the current locale. -*- coding: utf-8 -*-
- Copyright (C) 2009, 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -51,6 +51,37 @@ extern void gl_locale_name_canonicalize (char *name);
# undef setlocale
+/* Which of the replacements to activate? */
+# if NEED_SETLOCALE_IMPROVED
+# define setlocale_improved rpl_setlocale
+# elif NEED_SETLOCALE_MTSAFE
+# define setlocale_mtsafe rpl_setlocale
+# else
+# error "This file should only be compiled if NEED_SETLOCALE_IMPROVED || NEED_SETLOCALE_MTSAFE."
+# endif
+
+/* Like setlocale, but guaranteed to be multithread-safe if LOCALE == NULL. */
+# if !SETLOCALE_NULL_ALL_MTSAFE || !SETLOCALE_NULL_ONE_MTSAFE /* i.e. if NEED_SETLOCALE_MTSAFE */
+
+# if NEED_SETLOCALE_IMPROVED
+static
+# endif
+char *
+setlocale_mtsafe (int category, const char *locale)
+{
+ if (locale == NULL)
+ return (char *) setlocale_null (category);
+ else
+ return setlocale (category, locale);
+}
+# else /* !NEED_SETLOCALE_MTSAFE */
+
+# define setlocale_mtsafe setlocale
+
+# endif /* NEED_SETLOCALE_MTSAFE */
+
+# if NEED_SETLOCALE_IMPROVED
+
/* Return string representation of locale category CATEGORY. */
static const char *
category_to_name (int category)
@@ -85,7 +116,7 @@ category_to_name (int category)
return retval;
}
-# if defined _WIN32 && ! defined __CYGWIN__
+# if defined _WIN32 && ! defined __CYGWIN__
/* The native Windows setlocale() function expects locale names of the form
"German" or "German_Germany" or "DEU", but not "de" or "de_DE". We need
@@ -617,7 +648,7 @@ search (const struct table_entry *table, size_t table_size, const char *string,
{
size_t i;
- for (i = mid; i < hi; i++)
+ for (i = mid + 1; i < hi; i++)
{
if (strcmp (table[i].code, string) > 0)
{
@@ -652,7 +683,7 @@ setlocale_unixlike (int category, const char *locale)
locale = "C";
/* First, try setlocale with the original argument unchanged. */
- result = setlocale (category, locale);
+ result = setlocale_mtsafe (category, locale);
if (result != NULL)
return result;
@@ -794,11 +825,44 @@ setlocale_unixlike (int category, const char *locale)
return NULL;
}
-# else
-# define setlocale_unixlike setlocale
-# endif
+# elif defined __ANDROID__
-# if LC_MESSAGES == 1729
+/* Like setlocale, but accept also the locale names "C" and "POSIX". */
+static char *
+setlocale_unixlike (int category, const char *locale)
+{
+ char *result = setlocale_mtsafe (category, locale);
+ if (result == NULL)
+ switch (category)
+ {
+ case LC_CTYPE:
+ case LC_NUMERIC:
+ case LC_TIME:
+ case LC_COLLATE:
+ case LC_MONETARY:
+ case LC_MESSAGES:
+ case LC_ALL:
+ case LC_PAPER:
+ case LC_NAME:
+ case LC_ADDRESS:
+ case LC_TELEPHONE:
+ case LC_MEASUREMENT:
+ if (locale == NULL
+ || strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0)
+ result = (char *) "C";
+ break;
+ default:
+ break;
+ }
+ return result;
+}
+# define setlocale setlocale_unixlike
+
+# else
+# define setlocale_unixlike setlocale_mtsafe
+# endif
+
+# if LC_MESSAGES == 1729
/* The system does not store an LC_MESSAGES locale category. Do it here. */
static char lc_messages_name[64] = "C";
@@ -820,12 +884,533 @@ setlocale_single (int category, const char *locale)
return setlocale_unixlike (category, locale);
}
-# else
-# define setlocale_single setlocale_unixlike
-# endif
+# else
+# define setlocale_single setlocale_unixlike
+# endif
+
+# if defined __APPLE__ && defined __MACH__
+
+/* Mapping from language to main territory where that language is spoken. */
+static char const locales_with_principal_territory[][6 + 1] =
+ {
+ /* Language Main territory */
+ "ace_ID", /* Achinese Indonesia */
+ "af_ZA", /* Afrikaans South Africa */
+ "ak_GH", /* Akan Ghana */
+ "am_ET", /* Amharic Ethiopia */
+ "an_ES", /* Aragonese Spain */
+ "ang_GB", /* Old English Britain */
+ "arn_CL", /* Mapudungun Chile */
+ "as_IN", /* Assamese India */
+ "ast_ES", /* Asturian Spain */
+ "av_RU", /* Avaric Russia */
+ "awa_IN", /* Awadhi India */
+ "az_AZ", /* Azerbaijani Azerbaijan */
+ "ban_ID", /* Balinese Indonesia */
+ "be_BY", /* Belarusian Belarus */
+ "bej_SD", /* Beja Sudan */
+ "bem_ZM", /* Bemba Zambia */
+ "bg_BG", /* Bulgarian Bulgaria */
+ "bho_IN", /* Bhojpuri India */
+ "bi_VU", /* Bislama Vanuatu */
+ "bik_PH", /* Bikol Philippines */
+ "bin_NG", /* Bini Nigeria */
+ "bm_ML", /* Bambara Mali */
+ "bn_IN", /* Bengali India */
+ "bo_CN", /* Tibetan China */
+ "br_FR", /* Breton France */
+ "bs_BA", /* Bosnian Bosnia */
+ "bug_ID", /* Buginese Indonesia */
+ "ca_ES", /* Catalan Spain */
+ "ce_RU", /* Chechen Russia */
+ "ceb_PH", /* Cebuano Philippines */
+ "co_FR", /* Corsican France */
+ "cr_CA", /* Cree Canada */
+ /* Don't put "crh_UZ" or "crh_UA" here. That would be asking for fruitless
+ political discussion. */
+ "cs_CZ", /* Czech Czech Republic */
+ "csb_PL", /* Kashubian Poland */
+ "cy_GB", /* Welsh Britain */
+ "da_DK", /* Danish Denmark */
+ "de_DE", /* German Germany */
+ "din_SD", /* Dinka Sudan */
+ "doi_IN", /* Dogri India */
+ "dsb_DE", /* Lower Sorbian Germany */
+ "dv_MV", /* Divehi Maldives */
+ "dz_BT", /* Dzongkha Bhutan */
+ "ee_GH", /* Éwé Ghana */
+ "el_GR", /* Greek Greece */
+ /* Don't put "en_GB" or "en_US" here. That would be asking for fruitless
+ political discussion. */
+ "es_ES", /* Spanish Spain */
+ "et_EE", /* Estonian Estonia */
+ "fa_IR", /* Persian Iran */
+ "fi_FI", /* Finnish Finland */
+ "fil_PH", /* Filipino Philippines */
+ "fj_FJ", /* Fijian Fiji */
+ "fo_FO", /* Faroese Faeroe Islands */
+ "fon_BJ", /* Fon Benin */
+ "fr_FR", /* French France */
+ "fur_IT", /* Friulian Italy */
+ "fy_NL", /* Western Frisian Netherlands */
+ "ga_IE", /* Irish Ireland */
+ "gd_GB", /* Scottish Gaelic Britain */
+ "gon_IN", /* Gondi India */
+ "gsw_CH", /* Swiss German Switzerland */
+ "gu_IN", /* Gujarati India */
+ "he_IL", /* Hebrew Israel */
+ "hi_IN", /* Hindi India */
+ "hil_PH", /* Hiligaynon Philippines */
+ "hr_HR", /* Croatian Croatia */
+ "hsb_DE", /* Upper Sorbian Germany */
+ "ht_HT", /* Haitian Haiti */
+ "hu_HU", /* Hungarian Hungary */
+ "hy_AM", /* Armenian Armenia */
+ "id_ID", /* Indonesian Indonesia */
+ "ig_NG", /* Igbo Nigeria */
+ "ii_CN", /* Sichuan Yi China */
+ "ilo_PH", /* Iloko Philippines */
+ "is_IS", /* Icelandic Iceland */
+ "it_IT", /* Italian Italy */
+ "ja_JP", /* Japanese Japan */
+ "jab_NG", /* Hyam Nigeria */
+ "jv_ID", /* Javanese Indonesia */
+ "ka_GE", /* Georgian Georgia */
+ "kab_DZ", /* Kabyle Algeria */
+ "kaj_NG", /* Jju Nigeria */
+ "kam_KE", /* Kamba Kenya */
+ "kmb_AO", /* Kimbundu Angola */
+ "kcg_NG", /* Tyap Nigeria */
+ "kdm_NG", /* Kagoma Nigeria */
+ "kg_CD", /* Kongo Democratic Republic of Congo */
+ "kk_KZ", /* Kazakh Kazakhstan */
+ "kl_GL", /* Kalaallisut Greenland */
+ "km_KH", /* Central Khmer Cambodia */
+ "kn_IN", /* Kannada India */
+ "ko_KR", /* Korean Korea (South) */
+ "kok_IN", /* Konkani India */
+ "kr_NG", /* Kanuri Nigeria */
+ "kru_IN", /* Kurukh India */
+ "ky_KG", /* Kyrgyz Kyrgyzstan */
+ "lg_UG", /* Ganda Uganda */
+ "li_BE", /* Limburgish Belgium */
+ "lo_LA", /* Laotian Laos */
+ "lt_LT", /* Lithuanian Lithuania */
+ "lu_CD", /* Luba-Katanga Democratic Republic of Congo */
+ "lua_CD", /* Luba-Lulua Democratic Republic of Congo */
+ "luo_KE", /* Luo Kenya */
+ "lv_LV", /* Latvian Latvia */
+ "mad_ID", /* Madurese Indonesia */
+ "mag_IN", /* Magahi India */
+ "mai_IN", /* Maithili India */
+ "mak_ID", /* Makasar Indonesia */
+ "man_ML", /* Mandingo Mali */
+ "men_SL", /* Mende Sierra Leone */
+ "mfe_MU", /* Mauritian Creole Mauritius */
+ "mg_MG", /* Malagasy Madagascar */
+ "mi_NZ", /* Maori New Zealand */
+ "min_ID", /* Minangkabau Indonesia */
+ "mk_MK", /* Macedonian North Macedonia */
+ "ml_IN", /* Malayalam India */
+ "mn_MN", /* Mongolian Mongolia */
+ "mni_IN", /* Manipuri India */
+ "mos_BF", /* Mossi Burkina Faso */
+ "mr_IN", /* Marathi India */
+ "ms_MY", /* Malay Malaysia */
+ "mt_MT", /* Maltese Malta */
+ "mwr_IN", /* Marwari India */
+ "my_MM", /* Burmese Myanmar */
+ "na_NR", /* Nauru Nauru */
+ "nah_MX", /* Nahuatl Mexico */
+ "nap_IT", /* Neapolitan Italy */
+ "nb_NO", /* Norwegian Bokmål Norway */
+ "nds_DE", /* Low Saxon Germany */
+ "ne_NP", /* Nepali Nepal */
+ "nl_NL", /* Dutch Netherlands */
+ "nn_NO", /* Norwegian Nynorsk Norway */
+ "no_NO", /* Norwegian Norway */
+ "nr_ZA", /* South Ndebele South Africa */
+ "nso_ZA", /* Northern Sotho South Africa */
+ "ny_MW", /* Chichewa Malawi */
+ "nym_TZ", /* Nyamwezi Tanzania */
+ "nyn_UG", /* Nyankole Uganda */
+ "oc_FR", /* Occitan France */
+ "oj_CA", /* Ojibwa Canada */
+ "or_IN", /* Oriya India */
+ "pa_IN", /* Punjabi India */
+ "pag_PH", /* Pangasinan Philippines */
+ "pam_PH", /* Pampanga Philippines */
+ "pap_AN", /* Papiamento Netherlands Antilles - this line can be removed in 2018 */
+ "pbb_CO", /* Páez Colombia */
+ "pl_PL", /* Polish Poland */
+ "ps_AF", /* Pashto Afghanistan */
+ "pt_PT", /* Portuguese Portugal */
+ "raj_IN", /* Rajasthani India */
+ "rm_CH", /* Romansh Switzerland */
+ "rn_BI", /* Kirundi Burundi */
+ "ro_RO", /* Romanian Romania */
+ "ru_RU", /* Russian Russia */
+ "rw_RW", /* Kinyarwanda Rwanda */
+ "sa_IN", /* Sanskrit India */
+ "sah_RU", /* Yakut Russia */
+ "sas_ID", /* Sasak Indonesia */
+ "sat_IN", /* Santali India */
+ "sc_IT", /* Sardinian Italy */
+ "scn_IT", /* Sicilian Italy */
+ "sg_CF", /* Sango Central African Republic */
+ "shn_MM", /* Shan Myanmar */
+ "si_LK", /* Sinhala Sri Lanka */
+ "sid_ET", /* Sidamo Ethiopia */
+ "sk_SK", /* Slovak Slovakia */
+ "sl_SI", /* Slovenian Slovenia */
+ "sm_WS", /* Samoan Samoa */
+ "smn_FI", /* Inari Sami Finland */
+ "sms_FI", /* Skolt Sami Finland */
+ "so_SO", /* Somali Somalia */
+ "sq_AL", /* Albanian Albania */
+ "sr_RS", /* Serbian Serbia */
+ "srr_SN", /* Serer Senegal */
+ "suk_TZ", /* Sukuma Tanzania */
+ "sus_GN", /* Susu Guinea */
+ "sv_SE", /* Swedish Sweden */
+ "te_IN", /* Telugu India */
+ "tem_SL", /* Timne Sierra Leone */
+ "tet_ID", /* Tetum Indonesia */
+ "tg_TJ", /* Tajik Tajikistan */
+ "th_TH", /* Thai Thailand */
+ "ti_ER", /* Tigrinya Eritrea */
+ "tiv_NG", /* Tiv Nigeria */
+ "tk_TM", /* Turkmen Turkmenistan */
+ "tl_PH", /* Tagalog Philippines */
+ "to_TO", /* Tonga Tonga */
+ "tpi_PG", /* Tok Pisin Papua New Guinea */
+ "tr_TR", /* Turkish Turkey */
+ "tum_MW", /* Tumbuka Malawi */
+ "ug_CN", /* Uighur China */
+ "uk_UA", /* Ukrainian Ukraine */
+ "umb_AO", /* Umbundu Angola */
+ "ur_PK", /* Urdu Pakistan */
+ "uz_UZ", /* Uzbek Uzbekistan */
+ "ve_ZA", /* Venda South Africa */
+ "vi_VN", /* Vietnamese Vietnam */
+ "wa_BE", /* Walloon Belgium */
+ "wal_ET", /* Walamo Ethiopia */
+ "war_PH", /* Waray Philippines */
+ "wen_DE", /* Sorbian Germany */
+ "yao_MW", /* Yao Malawi */
+ "zap_MX" /* Zapotec Mexico */
+ };
+
+/* Compare just the language part of two locale names. */
+static int
+langcmp (const char *locale1, const char *locale2)
+{
+ size_t locale1_len;
+ size_t locale2_len;
+ int cmp;
+
+ {
+ const char *locale1_end = strchr (locale1, '_');
+ if (locale1_end != NULL)
+ locale1_len = locale1_end - locale1;
+ else
+ locale1_len = strlen (locale1);
+ }
+ {
+ const char *locale2_end = strchr (locale2, '_');
+ if (locale2_end != NULL)
+ locale2_len = locale2_end - locale2;
+ else
+ locale2_len = strlen (locale2);
+ }
+
+ if (locale1_len < locale2_len)
+ {
+ cmp = memcmp (locale1, locale2, locale1_len);
+ if (cmp == 0)
+ cmp = -1;
+ }
+ else
+ {
+ cmp = memcmp (locale1, locale2, locale2_len);
+ if (locale1_len > locale2_len && cmp == 0)
+ cmp = 1;
+ }
+
+ return cmp;
+}
+
+/* Given a locale name, return the main locale with the same language,
+ or NULL if not found.
+ For example: "fr_DE" -> "fr_FR". */
+static const char *
+get_main_locale_with_same_language (const char *locale)
+{
+# define table locales_with_principal_territory
+ /* The table is sorted. Perform a binary search. */
+ size_t hi = sizeof (table) / sizeof (table[0]);
+ size_t lo = 0;
+ while (lo < hi)
+ {
+ /* Invariant:
+ for i < lo, langcmp (table[i], locale) < 0,
+ for i >= hi, langcmp (table[i], locale) > 0. */
+ size_t mid = (hi + lo) >> 1; /* >= lo, < hi */
+ int cmp = langcmp (table[mid], locale);
+ if (cmp < 0)
+ lo = mid + 1;
+ else if (cmp > 0)
+ hi = mid;
+ else
+ {
+ /* Found an i with
+ langcmp (language_table[i], locale) == 0.
+ Verify that it is the only such i. */
+ if (mid > lo && langcmp (table[mid - 1], locale) >= 0)
+ abort ();
+ if (mid + 1 < hi && langcmp (table[mid + 1], locale) <= 0)
+ abort ();
+ return table[mid];
+ }
+ }
+# undef table
+ return NULL;
+}
+
+/* Mapping from territory to main language that is spoken in that territory. */
+static char const locales_with_principal_language[][6 + 1] =
+ {
+ /* This is based on the set of existing locales in glibc, with duplicates
+ removed, and on the Wikipedia pages named "Languages of <territory>".
+ If in doubt, use the locale that exists in macOS. For example, the only
+ "*_IN" locale in macOS 10.13 is "hi_IN", so use that. */
+ /* A useful shell function for producing a line of this table is:
+ func_line ()
+ {
+ # Usage: func_line ll_CC
+ ll=`echo "$1" | sed -e 's|_.*||'`
+ cc=`echo "$1" | sed -e 's|^.*_||'`
+ llx=`sed -n -e "s|^${ll} ||p" < gettext-tools/doc/ISO_639`
+ ccx=`expand gettext-tools/doc/ISO_3166 | sed -n -e "s|^${cc} *||p"`
+ echo " \"$1\", /$X* ${llx} ${ccx} *$X/"
+ }
+ */
+ /* Main language Territory */
+ "ca_AD", /* Catalan Andorra */
+ "ar_AE", /* Arabic United Arab Emirates */
+ "ps_AF", /* Pashto Afghanistan */
+ "en_AG", /* English Antigua and Barbuda */
+ "sq_AL", /* Albanian Albania */
+ "hy_AM", /* Armenian Armenia */
+ "pap_AN", /* Papiamento Netherlands Antilles - this line can be removed in 2018 */
+ "pt_AO", /* Portuguese Angola */
+ "es_AR", /* Spanish Argentina */
+ "de_AT", /* German Austria */
+ "en_AU", /* English Australia */
+ /* Aruba has two official languages: "nl_AW", "pap_AW". */
+ "az_AZ", /* Azerbaijani Azerbaijan */
+ "bs_BA", /* Bosnian Bosnia */
+ "bn_BD", /* Bengali Bangladesh */
+ "nl_BE", /* Dutch Belgium */
+ "fr_BF", /* French Burkina Faso */
+ "bg_BG", /* Bulgarian Bulgaria */
+ "ar_BH", /* Arabic Bahrain */
+ "rn_BI", /* Kirundi Burundi */
+ "fr_BJ", /* French Benin */
+ "es_BO", /* Spanish Bolivia */
+ "pt_BR", /* Portuguese Brazil */
+ "dz_BT", /* Dzongkha Bhutan */
+ "en_BW", /* English Botswana */
+ "be_BY", /* Belarusian Belarus */
+ "en_CA", /* English Canada */
+ "fr_CD", /* French Democratic Republic of Congo */
+ "sg_CF", /* Sango Central African Republic */
+ "de_CH", /* German Switzerland */
+ "es_CL", /* Spanish Chile */
+ "zh_CN", /* Chinese China */
+ "es_CO", /* Spanish Colombia */
+ "es_CR", /* Spanish Costa Rica */
+ "es_CU", /* Spanish Cuba */
+ /* Curaçao has three official languages: "nl_CW", "pap_CW", "en_CW". */
+ "el_CY", /* Greek Cyprus */
+ "cs_CZ", /* Czech Czech Republic */
+ "de_DE", /* German Germany */
+ /* Djibouti has two official languages: "ar_DJ" and "fr_DJ". */
+ "da_DK", /* Danish Denmark */
+ "es_DO", /* Spanish Dominican Republic */
+ "ar_DZ", /* Arabic Algeria */
+ "es_EC", /* Spanish Ecuador */
+ "et_EE", /* Estonian Estonia */
+ "ar_EG", /* Arabic Egypt */
+ "ti_ER", /* Tigrinya Eritrea */
+ "es_ES", /* Spanish Spain */
+ "am_ET", /* Amharic Ethiopia */
+ "fi_FI", /* Finnish Finland */
+ /* Fiji has three official languages: "en_FJ", "fj_FJ", "hif_FJ". */
+ "fo_FO", /* Faroese Faeroe Islands */
+ "fr_FR", /* French France */
+ "en_GB", /* English Britain */
+ "ka_GE", /* Georgian Georgia */
+ "en_GH", /* English Ghana */
+ "kl_GL", /* Kalaallisut Greenland */
+ "fr_GN", /* French Guinea */
+ "el_GR", /* Greek Greece */
+ "es_GT", /* Spanish Guatemala */
+ "zh_HK", /* Chinese Hong Kong */
+ "es_HN", /* Spanish Honduras */
+ "hr_HR", /* Croatian Croatia */
+ "ht_HT", /* Haitian Haiti */
+ "hu_HU", /* Hungarian Hungary */
+ "id_ID", /* Indonesian Indonesia */
+ "en_IE", /* English Ireland */
+ "he_IL", /* Hebrew Israel */
+ "hi_IN", /* Hindi India */
+ "ar_IQ", /* Arabic Iraq */
+ "fa_IR", /* Persian Iran */
+ "is_IS", /* Icelandic Iceland */
+ "it_IT", /* Italian Italy */
+ "ar_JO", /* Arabic Jordan */
+ "ja_JP", /* Japanese Japan */
+ "sw_KE", /* Swahili Kenya */
+ "ky_KG", /* Kyrgyz Kyrgyzstan */
+ "km_KH", /* Central Khmer Cambodia */
+ "ko_KR", /* Korean Korea (South) */
+ "ar_KW", /* Arabic Kuwait */
+ "kk_KZ", /* Kazakh Kazakhstan */
+ "lo_LA", /* Laotian Laos */
+ "ar_LB", /* Arabic Lebanon */
+ "de_LI", /* German Liechtenstein */
+ "si_LK", /* Sinhala Sri Lanka */
+ "lt_LT", /* Lithuanian Lithuania */
+ /* Luxembourg has three official languages: "lb_LU", "fr_LU", "de_LU". */
+ "lv_LV", /* Latvian Latvia */
+ "ar_LY", /* Arabic Libya */
+ "ar_MA", /* Arabic Morocco */
+ "sr_ME", /* Serbian Montenegro */
+ "mg_MG", /* Malagasy Madagascar */
+ "mk_MK", /* Macedonian North Macedonia */
+ "fr_ML", /* French Mali */
+ "my_MM", /* Burmese Myanmar */
+ "mn_MN", /* Mongolian Mongolia */
+ "mt_MT", /* Maltese Malta */
+ "mfe_MU", /* Mauritian Creole Mauritius */
+ "dv_MV", /* Divehi Maldives */
+ "ny_MW", /* Chichewa Malawi */
+ "es_MX", /* Spanish Mexico */
+ "ms_MY", /* Malay Malaysia */
+ "en_NG", /* English Nigeria */
+ "es_NI", /* Spanish Nicaragua */
+ "nl_NL", /* Dutch Netherlands */
+ "no_NO", /* Norwegian Norway */
+ "ne_NP", /* Nepali Nepal */
+ "na_NR", /* Nauru Nauru */
+ "niu_NU", /* Niuean Niue */
+ "en_NZ", /* English New Zealand */
+ "ar_OM", /* Arabic Oman */
+ "es_PA", /* Spanish Panama */
+ "es_PE", /* Spanish Peru */
+ "tpi_PG", /* Tok Pisin Papua New Guinea */
+ "fil_PH", /* Filipino Philippines */
+ "pa_PK", /* Punjabi Pakistan */
+ "pl_PL", /* Polish Poland */
+ "es_PR", /* Spanish Puerto Rico */
+ "pt_PT", /* Portuguese Portugal */
+ "es_PY", /* Spanish Paraguay */
+ "ar_QA", /* Arabic Qatar */
+ "ro_RO", /* Romanian Romania */
+ "sr_RS", /* Serbian Serbia */
+ "ru_RU", /* Russian Russia */
+ "rw_RW", /* Kinyarwanda Rwanda */
+ "ar_SA", /* Arabic Saudi Arabia */
+ "en_SC", /* English Seychelles */
+ "ar_SD", /* Arabic Sudan */
+ "sv_SE", /* Swedish Sweden */
+ "en_SG", /* English Singapore */
+ "sl_SI", /* Slovenian Slovenia */
+ "sk_SK", /* Slovak Slovakia */
+ "en_SL", /* English Sierra Leone */
+ "fr_SN", /* French Senegal */
+ "so_SO", /* Somali Somalia */
+ "ar_SS", /* Arabic South Sudan */
+ "es_SV", /* Spanish El Salvador */
+ "ar_SY", /* Arabic Syria */
+ "th_TH", /* Thai Thailand */
+ "tg_TJ", /* Tajik Tajikistan */
+ "tk_TM", /* Turkmen Turkmenistan */
+ "ar_TN", /* Arabic Tunisia */
+ "to_TO", /* Tonga Tonga */
+ "tr_TR", /* Turkish Turkey */
+ "zh_TW", /* Chinese Taiwan */
+ "sw_TZ", /* Swahili Tanzania */
+ "uk_UA", /* Ukrainian Ukraine */
+ "lg_UG", /* Ganda Uganda */
+ "en_US", /* English United States of America */
+ "es_UY", /* Spanish Uruguay */
+ "uz_UZ", /* Uzbek Uzbekistan */
+ "es_VE", /* Spanish Venezuela */
+ "vi_VN", /* Vietnamese Vietnam */
+ "bi_VU", /* Bislama Vanuatu */
+ "sm_WS", /* Samoan Samoa */
+ "ar_YE", /* Arabic Yemen */
+ "en_ZA", /* English South Africa */
+ "en_ZM", /* English Zambia */
+ "en_ZW" /* English Zimbabwe */
+ };
+
+/* Compare just the territory part of two locale names. */
+static int
+terrcmp (const char *locale1, const char *locale2)
+{
+ const char *territory1 = strrchr (locale1, '_') + 1;
+ const char *territory2 = strrchr (locale2, '_') + 1;
+
+ return strcmp (territory1, territory2);
+}
+
+/* Given a locale name, return the locale corresponding to the main language
+ with the same territory, or NULL if not found.
+ For example: "fr_DE" -> "de_DE". */
+static const char *
+get_main_locale_with_same_territory (const char *locale)
+{
+ if (strrchr (locale, '_') != NULL)
+ {
+# define table locales_with_principal_language
+ /* The table is sorted. Perform a binary search. */
+ size_t hi = sizeof (table) / sizeof (table[0]);
+ size_t lo = 0;
+ while (lo < hi)
+ {
+ /* Invariant:
+ for i < lo, terrcmp (table[i], locale) < 0,
+ for i >= hi, terrcmp (table[i], locale) > 0. */
+ size_t mid = (hi + lo) >> 1; /* >= lo, < hi */
+ int cmp = terrcmp (table[mid], locale);
+ if (cmp < 0)
+ lo = mid + 1;
+ else if (cmp > 0)
+ hi = mid;
+ else
+ {
+ /* Found an i with
+ terrcmp (language_table[i], locale) == 0.
+ Verify that it is the only such i. */
+ if (mid > lo && terrcmp (table[mid - 1], locale) >= 0)
+ abort ();
+ if (mid + 1 < hi && terrcmp (table[mid + 1], locale) <= 0)
+ abort ();
+ return table[mid];
+ }
+ }
+# undef table
+ }
+ return NULL;
+}
+
+# endif
char *
-rpl_setlocale (int category, const char *locale)
+setlocale_improved (int category, const char *locale)
{
if (locale != NULL && locale[0] == '\0')
{
@@ -877,14 +1462,14 @@ rpl_setlocale (int category, const char *locale)
goto fail;
i = 0;
}
-# if defined _WIN32 && ! defined __CYGWIN__
+# if defined _WIN32 && ! defined __CYGWIN__
/* On native Windows, setlocale(LC_ALL,...) may succeed but set the
LC_CTYPE category to an invalid value ("C") when it does not
support the specified encoding. Report a failure instead. */
if (strchr (base_name, '.') != NULL
&& strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
goto fail;
-# endif
+# endif
for (; i < sizeof (categories) / sizeof (categories[0]); i++)
{
@@ -898,30 +1483,32 @@ rpl_setlocale (int category, const char *locale)
/* If name is the same as base_name, it has already been set
through the setlocale call before the loop. */
if (strcmp (name, base_name) != 0
-# if LC_MESSAGES == 1729
+# if LC_MESSAGES == 1729
|| cat == LC_MESSAGES
-# endif
+# endif
)
if (setlocale_single (cat, name) == NULL)
-# if defined __APPLE__ && defined __MACH__
+# if defined __APPLE__ && defined __MACH__
{
/* On Mac OS X 10.13, some locales can be set through
System Preferences > Language & Region, that are not
supported by libc. The system's setlocale() falls
- back to "C" for these locale categories. We can possibly
- do better. If we can't, print a warning, to limit user
+ back to "C" for these locale categories. We can do
+ better, by trying an existing locale with the same
+ language or an existing locale with the same territory.
+ If we can't, print a warning, to limit user
expectations. */
- int warn = 1;
+ int warn = 0;
if (cat == LC_CTYPE)
warn = (setlocale_single (cat, "UTF-8") == NULL);
-# if HAVE_CFLOCALECOPYPREFERREDLANGUAGES || HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.4 or newer */
else if (cat == LC_MESSAGES)
{
+# if HAVE_CFLOCALECOPYPREFERREDLANGUAGES || HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.4 or newer */
/* Take the primary language preference. */
-# if HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* MacOS X 10.5 or newer */
+# if HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* MacOS X 10.5 or newer */
CFArrayRef prefArray = CFLocaleCopyPreferredLanguages ();
-# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.4 or newer */
+# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.4 or newer */
CFTypeRef preferences =
CFPreferencesCopyAppValue (CFSTR ("AppleLanguages"),
kCFPreferencesCurrentApplication);
@@ -929,7 +1516,7 @@ rpl_setlocale (int category, const char *locale)
&& CFGetTypeID (preferences) == CFArrayGetTypeID ())
{
CFArrayRef prefArray = (CFArrayRef)preferences;
-# endif
+# endif
int n = CFArrayGetCount (prefArray);
if (n > 0)
{
@@ -952,36 +1539,71 @@ rpl_setlocale (int category, const char *locale)
gl_locale_name_canonicalize (buf);
/* Try setlocale with this value. */
- warn = (setlocale_single (cat, buf) == NULL);
+ if (setlocale_single (cat, buf) == NULL)
+ {
+ const char *last_try =
+ get_main_locale_with_same_language (buf);
+
+ if (last_try == NULL
+ || setlocale_single (cat, last_try) == NULL)
+ warn = 1;
+ }
}
}
-# if HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* MacOS X 10.5 or newer */
+# if HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* MacOS X 10.5 or newer */
CFRelease (prefArray);
-# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.4 or newer */
+# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.4 or newer */
}
+# endif
+# else
+ const char *last_try =
+ get_main_locale_with_same_language (name);
+
+ if (last_try == NULL
+ || setlocale_single (cat, last_try) == NULL)
+ warn = 1;
# endif
}
-# endif
- /* No fallback possible for LC_NUMERIC. The application
- should use the locale properties
- kCFLocaleDecimalSeparator, kCFLocaleGroupingSeparator.
- No fallback possible for LC_TIME. The application should
- use the locale property kCFLocaleCalendarIdentifier.
- No fallback possible for LC_COLLATE. The application
- should use the locale properties
- kCFLocaleCollationIdentifier, kCFLocaleCollatorIdentifier.
- No fallback possible for LC_MONETARY. The application
- should use the locale properties
- kCFLocaleCurrencySymbol, kCFLocaleCurrencyCode. */
+ else
+ {
+ /* For LC_NUMERIC, the application should use the locale
+ properties kCFLocaleDecimalSeparator,
+ kCFLocaleGroupingSeparator.
+ For LC_TIME, the application should use the locale
+ property kCFLocaleCalendarIdentifier.
+ For LC_COLLATE, the application should use the locale
+ properties kCFLocaleCollationIdentifier,
+ kCFLocaleCollatorIdentifier.
+ For LC_MONETARY, the applicationshould use the locale
+ properties kCFLocaleCurrencySymbol,
+ kCFLocaleCurrencyCode.
+ But since most applications don't have macOS specific
+ code like this, try an existing locale with the same
+ territory. */
+ const char *last_try =
+ get_main_locale_with_same_territory (name);
+
+ if (last_try == NULL
+ || setlocale_single (cat, last_try) == NULL)
+ warn = 1;
+ }
if (warn)
- fprintf (stderr,
- "Warning: Failed to set locale category %s to %s.\n",
- category_to_name (cat), name);
+ {
+ /* Warn only if the environment variable
+ SETLOCALE_VERBOSE is set. Otherwise these warnings
+ are just annoyances, since normal users won't invoke
+ 'localedef'. */
+ const char *verbose = getenv ("SETLOCALE_VERBOSE");
+ if (verbose != NULL && verbose[0] != '\0')
+ fprintf (stderr,
+ "Warning: Failed to set locale category %s to %s.\n",
+ category_to_name (cat), name);
+ }
}
-# else
+# else
goto fail;
-# endif
+# endif
}
/* All steps were successful. */
@@ -1006,7 +1628,7 @@ rpl_setlocale (int category, const char *locale)
}
else
{
-# if defined _WIN32 && ! defined __CYGWIN__
+# if defined _WIN32 && ! defined __CYGWIN__
if (category == LC_ALL && locale != NULL && strchr (locale, '.') != NULL)
{
char *saved_locale;
@@ -1041,9 +1663,11 @@ rpl_setlocale (int category, const char *locale)
return setlocale (LC_ALL, NULL);
}
else
-# endif
+# endif
return setlocale_single (category, locale);
}
}
+# endif /* NEED_SETLOCALE_IMPROVED */
+
#endif
diff --git a/gnulib-tests/setsockopt.c b/gnulib-tests/setsockopt.c
index 1a7b583..ce0f9dd 100644
--- a/gnulib-tests/setsockopt.c
+++ b/gnulib-tests/setsockopt.c
@@ -1,6 +1,6 @@
/* setsockopt.c --- wrappers for Windows setsockopt function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sig-handler.h b/gnulib-tests/sig-handler.h
index 9ea3394..17604ea 100644
--- a/gnulib-tests/sig-handler.h
+++ b/gnulib-tests/sig-handler.h
@@ -1,6 +1,6 @@
/* Convenience declarations when working with <signal.h>.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sigaction.c b/gnulib-tests/sigaction.c
index 7e4af5f..792b3e8 100644
--- a/gnulib-tests/sigaction.c
+++ b/gnulib-tests/sigaction.c
@@ -1,5 +1,5 @@
/* POSIX compatible signal blocking.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
Written by Eric Blake <ebb9@byu.net>, 2008.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/signal.in.h b/gnulib-tests/signal.in.h
index 7d4927b..9fe9f60 100644
--- a/gnulib-tests/signal.in.h
+++ b/gnulib-tests/signal.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <signal.h>.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -144,7 +144,9 @@ _GL_FUNCDECL_SYS (pthread_sigmask, int,
_GL_CXXALIAS_SYS (pthread_sigmask, int,
(int how, const sigset_t *new_mask, sigset_t *old_mask));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (pthread_sigmask);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef pthread_sigmask
# if HAVE_RAW_DECL_PTHREAD_SIGMASK
@@ -168,7 +170,9 @@ _GL_FUNCDECL_SYS (raise, int, (int sig));
# endif
_GL_CXXALIAS_SYS (raise, int, (int sig));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (raise);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef raise
/* Assume raise is always declared. */
@@ -318,10 +322,18 @@ _GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t,
_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t,
(int sig, _gl_function_taking_int_returning_void_t func));
# else
+/* On OpenBSD, the declaration of 'signal' may not be present at this point,
+ because it occurs in <sys/signal.h>, not <signal.h> directly. */
+# if defined __OpenBSD__
+_GL_FUNCDECL_SYS (signal, _gl_function_taking_int_returning_void_t,
+ (int sig, _gl_function_taking_int_returning_void_t func));
+# endif
_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t,
(int sig, _gl_function_taking_int_returning_void_t func));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (signal);
+# endif
# if !@HAVE_POSIX_SIGNALBLOCKING@ && GNULIB_defined_SIGPIPE
/* Raise signal SIGPIPE. */
diff --git a/gnulib-tests/signature.h b/gnulib-tests/signature.h
index adabfad..c586fec 100644
--- a/gnulib-tests/signature.h
+++ b/gnulib-tests/signature.h
@@ -1,5 +1,5 @@
/* Macro for checking that a function declaration is compliant.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sigprocmask.c b/gnulib-tests/sigprocmask.c
index 7a49bcd..d186106 100644
--- a/gnulib-tests/sigprocmask.c
+++ b/gnulib-tests/sigprocmask.c
@@ -1,5 +1,5 @@
/* POSIX compatible signal blocking.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2006.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/sleep.c b/gnulib-tests/sleep.c
index 8b75390..8aca605 100644
--- a/gnulib-tests/sleep.c
+++ b/gnulib-tests/sleep.c
@@ -1,5 +1,5 @@
/* Pausing execution of the current thread.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2007.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/socket.c b/gnulib-tests/socket.c
index 84f4d94..67c6b1e 100644
--- a/gnulib-tests/socket.c
+++ b/gnulib-tests/socket.c
@@ -1,6 +1,6 @@
/* socket.c --- wrappers for Windows socket function
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sockets.c b/gnulib-tests/sockets.c
index eec1ec8..9e3251a 100644
--- a/gnulib-tests/sockets.c
+++ b/gnulib-tests/sockets.c
@@ -1,6 +1,6 @@
/* sockets.c --- wrappers for Windows socket functions
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sockets.h b/gnulib-tests/sockets.h
index 5a83332..4575fc5 100644
--- a/gnulib-tests/sockets.h
+++ b/gnulib-tests/sockets.h
@@ -1,6 +1,6 @@
/* sockets.h - wrappers for Windows socket functions
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/stdio-impl.h b/gnulib-tests/stdio-impl.h
index 393ef0c..067b95e 100644
--- a/gnulib-tests/stdio-impl.h
+++ b/gnulib-tests/stdio-impl.h
@@ -1,5 +1,5 @@
/* Implementation details of FILE streams.
- Copyright (C) 2007-2008, 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2008, 2010-2020 Free Software Foundation, Inc.
This 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,11 +18,16 @@
the same implementation of stdio extension API, except that some fields
have different naming conventions, or their access requires some casts. */
-/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this
- problem by defining it ourselves. FIXME: Do not rely on glibc
+/* Glibc 2.28 made _IO_UNBUFFERED and _IO_IN_BACKUP private. For now, work
+ around this problem by defining them ourselves. FIXME: Do not rely on glibc
internals. */
-#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-# define _IO_IN_BACKUP 0x100
+#if defined _IO_EOF_SEEN
+# if !defined _IO_UNBUFFERED
+# define _IO_UNBUFFERED 0x2
+# endif
+# if !defined _IO_IN_BACKUP
+# define _IO_IN_BACKUP 0x100
+# endif
#endif
/* BSD stdio derived implementations. */
@@ -61,6 +66,11 @@
# define _r pub._r
# define _w pub._w
# elif defined __ANDROID__ /* Android */
+# ifdef __LP64__
+# define _gl_flags_file_t int
+# else
+# define _gl_flags_file_t short
+# endif
/* Up to this commit from 2015-10-12
<https://android.googlesource.com/platform/bionic.git/+/f0141dfab10a4b332769d52fa76631a64741297a>
the innards of FILE were public, and fp_ub could be defined like for OpenBSD,
@@ -70,8 +80,8 @@
# define fp_ ((struct { unsigned char *_p; \
int _r; \
int _w; \
- int _flags; \
- int _file; \
+ _gl_flags_file_t _flags; \
+ _gl_flags_file_t _file; \
struct { unsigned char *_base; size_t _size; } _bf; \
int _lbfsize; \
void *_cookie; \
diff --git a/gnulib-tests/strdup.c b/gnulib-tests/strdup.c
index ce43940..4da6007 100644
--- a/gnulib-tests/strdup.c
+++ b/gnulib-tests/strdup.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2018 Free Software
+/* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2020 Free Software
Foundation, Inc.
This file is part of the GNU C Library.
diff --git a/gnulib-tests/strerror_r.c b/gnulib-tests/strerror_r.c
index 2a22cb4..9ccc6c3 100644
--- a/gnulib-tests/strerror_r.c
+++ b/gnulib-tests/strerror_r.c
@@ -1,6 +1,6 @@
/* strerror_r.c --- POSIX compatible system error routine
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/symlink.c b/gnulib-tests/symlink.c
index c1c4b40..e7dbd18 100644
--- a/gnulib-tests/symlink.c
+++ b/gnulib-tests/symlink.c
@@ -1,5 +1,5 @@
/* Stub for symlink().
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sys_ioctl.in.h b/gnulib-tests/sys_ioctl.in.h
index 42a5ca4..8437adf 100644
--- a/gnulib-tests/sys_ioctl.in.h
+++ b/gnulib-tests/sys_ioctl.in.h
@@ -1,5 +1,5 @@
/* Substitute for and wrapper around <sys/ioctl.h>.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/sys_select.in.h b/gnulib-tests/sys_select.in.h
index 154e570..7a7b157 100644
--- a/gnulib-tests/sys_select.in.h
+++ b/gnulib-tests/sys_select.in.h
@@ -1,5 +1,5 @@
/* Substitute for <sys/select.h>.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -295,11 +295,11 @@ _GL_FUNCDECL_RPL (select, int,
struct timeval *restrict));
_GL_CXXALIAS_RPL (select, int,
(int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
- struct timeval *restrict));
+ timeval *restrict));
# else
_GL_CXXALIAS_SYS (select, int,
(int, fd_set *restrict, fd_set *restrict, fd_set *restrict,
- struct timeval *restrict));
+ timeval *restrict));
# endif
_GL_CXXALIASWARN (select);
#elif @HAVE_WINSOCK2_H@
diff --git a/gnulib-tests/sys_socket.in.h b/gnulib-tests/sys_socket.in.h
index ef65dc6..41f71f6 100644
--- a/gnulib-tests/sys_socket.in.h
+++ b/gnulib-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-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
Written by Simon Josefsson.
This program is free software; you can redistribute it and/or modify
@@ -169,7 +169,7 @@ struct sockaddr_storage
code may not run on older Windows releases then. My Windows 2000
box was not able to run the code, for example. The situation is
slightly confusing because
- <https://msdn.microsoft.com/en-us/library/ms738520>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/ws2tcpip/nf-ws2tcpip-getaddrinfo>
suggests that getaddrinfo should be available on all Windows
releases. */
@@ -517,7 +517,10 @@ _GL_FUNCDECL_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags)
_GL_ARG_NONNULL ((2)));
_GL_CXXALIAS_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags));
# else
-_GL_CXXALIAS_SYS (recv, ssize_t, (int fd, void *buf, size_t len, int flags));
+/* Need to cast, because on HP-UX 11.31 the return type may be
+ int,
+ depending on compiler options. */
+_GL_CXXALIAS_SYS_CAST (recv, ssize_t, (int fd, void *buf, size_t len, int flags));
# endif
_GL_CXXALIASWARN (recv);
#elif @HAVE_WINSOCK2_H@
@@ -543,8 +546,11 @@ _GL_FUNCDECL_RPL (send, ssize_t,
_GL_CXXALIAS_RPL (send, ssize_t,
(int fd, const void *buf, size_t len, int flags));
# else
-_GL_CXXALIAS_SYS (send, ssize_t,
- (int fd, const void *buf, size_t len, int flags));
+/* Need to cast, because on HP-UX 11.31 the return type may be
+ int,
+ depending on compiler options. */
+_GL_CXXALIAS_SYS_CAST (send, ssize_t,
+ (int fd, const void *buf, size_t len, int flags));
# endif
_GL_CXXALIASWARN (send);
#elif @HAVE_WINSOCK2_H@
diff --git a/gnulib-tests/sys_uio.in.h b/gnulib-tests/sys_uio.in.h
index 0b5790b..8588d3c 100644
--- a/gnulib-tests/sys_uio.in.h
+++ b/gnulib-tests/sys_uio.in.h
@@ -1,5 +1,5 @@
/* Substitute for <sys/uio.h>.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-accept.c b/gnulib-tests/test-accept.c
index 10228dc..cdf8cb2 100644
--- a/gnulib-tests/test-accept.c
+++ b/gnulib-tests/test-accept.c
@@ -1,5 +1,5 @@
/* Test accepting a connection to a server socket.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-alignof.c b/gnulib-tests/test-alignof.c
index 6cd8a56..34eaec2 100644
--- a/gnulib-tests/test-alignof.c
+++ b/gnulib-tests/test-alignof.c
@@ -1,5 +1,5 @@
/* Test of <alignof.h>.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-alloca-opt.c b/gnulib-tests/test-alloca-opt.c
index c8c82db..faf7c74 100644
--- a/gnulib-tests/test-alloca-opt.c
+++ b/gnulib-tests/test-alloca-opt.c
@@ -1,5 +1,5 @@
/* Test of optional automatic memory allocation.
- Copyright (C) 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-arpa_inet.c b/gnulib-tests/test-arpa_inet.c
index fd93721..b7234b3 100644
--- a/gnulib-tests/test-arpa_inet.c
+++ b/gnulib-tests/test-arpa_inet.c
@@ -1,5 +1,5 @@
/* Test of <arpa/inet.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-binary-io.c b/gnulib-tests/test-binary-io.c
index be7cdf3..808b8b5 100644
--- a/gnulib-tests/test-binary-io.c
+++ b/gnulib-tests/test-binary-io.c
@@ -1,5 +1,5 @@
/* Test of binary mode I/O.
- Copyright (C) 2005, 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-binary-io.sh b/gnulib-tests/test-binary-io.sh
index 38af099..a177d94 100755
--- a/gnulib-tests/test-binary-io.sh
+++ b/gnulib-tests/test-binary-io.sh
@@ -4,7 +4,7 @@ tmpfiles=""
trap 'rm -fr $tmpfiles' 1 2 3 15
tmpfiles="$tmpfiles t-bin-out0.tmp t-bin-out1.tmp"
-./test-binary-io${EXEEXT} 1 > t-bin-out1.tmp || exit 1
+${CHECKER} ./test-binary-io${EXEEXT} 1 > t-bin-out1.tmp || exit 1
cmp t-bin-out0.tmp t-bin-out1.tmp > /dev/null || exit 1
rm -fr $tmpfiles
diff --git a/gnulib-tests/test-bind.c b/gnulib-tests/test-bind.c
index 5c2c00b..2f38de9 100644
--- a/gnulib-tests/test-bind.c
+++ b/gnulib-tests/test-bind.c
@@ -1,5 +1,5 @@
/* Test binding a server socket to a port.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-btowc.c b/gnulib-tests/test-btowc.c
index a19a61a..18ad71b 100644
--- a/gnulib-tests/test-btowc.c
+++ b/gnulib-tests/test-btowc.c
@@ -1,5 +1,5 @@
/* Test of conversion of unibyte character to wide character.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-btowc1.sh b/gnulib-tests/test-btowc1.sh
index aaef48d..ab4b287 100755
--- a/gnulib-tests/test-btowc1.sh
+++ b/gnulib-tests/test-btowc1.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR = none; then
fi
LC_ALL=$LOCALE_FR \
-./test-btowc${EXEEXT} 1
+${CHECKER} ./test-btowc${EXEEXT} 1
diff --git a/gnulib-tests/test-btowc2.sh b/gnulib-tests/test-btowc2.sh
index 2e06038..d7d4d9c 100755
--- a/gnulib-tests/test-btowc2.sh
+++ b/gnulib-tests/test-btowc2.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR_UTF8 = none; then
fi
LC_ALL=$LOCALE_FR_UTF8 \
-./test-btowc${EXEEXT} 2
+${CHECKER} ./test-btowc${EXEEXT} 2
diff --git a/gnulib-tests/test-c-ctype.c b/gnulib-tests/test-c-ctype.c
index 735227a..0cf1fdf 100644
--- a/gnulib-tests/test-c-ctype.c
+++ b/gnulib-tests/test-c-ctype.c
@@ -1,5 +1,5 @@
/* Test of character handling in C locale.
- Copyright (C) 2005, 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-c-strcase.sh b/gnulib-tests/test-c-strcase.sh
index 5fcf906..14bdfb2 100755
--- a/gnulib-tests/test-c-strcase.sh
+++ b/gnulib-tests/test-c-strcase.sh
@@ -1,21 +1,21 @@
#!/bin/sh
# Test in the C locale.
-./test-c-strcasecmp${EXEEXT} || exit 1
-./test-c-strncasecmp${EXEEXT} || exit 1
+${CHECKER} ./test-c-strcasecmp${EXEEXT} || exit 1
+${CHECKER} ./test-c-strncasecmp${EXEEXT} || 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 ./test-c-strcasecmp${EXEEXT} locale || exit 1
- LC_ALL=$LOCALE_FR ./test-c-strncasecmp${EXEEXT} locale || exit 1
+ LC_ALL=$LOCALE_FR ${CHECKER} ./test-c-strcasecmp${EXEEXT} locale || exit 1
+ LC_ALL=$LOCALE_FR ${CHECKER} ./test-c-strncasecmp${EXEEXT} locale || exit 1
fi
# Test in a Turkish UTF-8 locale.
: ${LOCALE_TR_UTF8=tr_TR.UTF-8}
if test $LOCALE_TR_UTF8 != none; then
- LC_ALL=$LOCALE_TR_UTF8 ./test-c-strcasecmp${EXEEXT} locale || exit 1
- LC_ALL=$LOCALE_TR_UTF8 ./test-c-strncasecmp${EXEEXT} locale || exit 1
+ LC_ALL=$LOCALE_TR_UTF8 ${CHECKER} ./test-c-strcasecmp${EXEEXT} locale || exit 1
+ LC_ALL=$LOCALE_TR_UTF8 ${CHECKER} ./test-c-strncasecmp${EXEEXT} locale || exit 1
fi
exit 0
diff --git a/gnulib-tests/test-c-strcasecmp.c b/gnulib-tests/test-c-strcasecmp.c
index bc5494e..c73cb9d 100644
--- a/gnulib-tests/test-c-strcasecmp.c
+++ b/gnulib-tests/test-c-strcasecmp.c
@@ -1,5 +1,5 @@
/* Test of case-insensitive string comparison function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-c-strncasecmp.c b/gnulib-tests/test-c-strncasecmp.c
index 4677bd4..bbef54f 100644
--- a/gnulib-tests/test-c-strncasecmp.c
+++ b/gnulib-tests/test-c-strncasecmp.c
@@ -1,5 +1,5 @@
/* Test of case-insensitive string comparison function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-canonicalize-lgpl.c b/gnulib-tests/test-canonicalize-lgpl.c
index 4cec490..fb49b20 100644
--- a/gnulib-tests/test-canonicalize-lgpl.c
+++ b/gnulib-tests/test-canonicalize-lgpl.c
@@ -1,5 +1,5 @@
-/* Test of execution of program termination handlers.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+/* Test of execution of file name canonicalization.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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. */
+/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc
+ may "optimize" the null_ptr function, when its result gets passed to a
+ function that has an argument declared as _GL_ARG_NONNULL. */
+#define _GL_ARG_NONNULL(params)
+
#include <config.h>
#include <stdlib.h>
@@ -66,14 +71,22 @@ main (void)
ASSERT (strstr (result, "/" BASE "/tra")
== result + strlen (result) - strlen ("/" BASE "/tra"));
free (result);
+
errno = 0;
result = canonicalize_file_name ("");
ASSERT (result == NULL);
ASSERT (errno == ENOENT);
+
+ /* This test works only if the canonicalize_file_name implementation
+ comes from gnulib. If it comes from libc, we have no way to prevent
+ gcc from "optimizing" the null_ptr function in invalid ways. See
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93156>. */
+#if GNULIB_defined_canonicalize_file_name
errno = 0;
result = canonicalize_file_name (null_ptr ());
ASSERT (result == NULL);
ASSERT (errno == EINVAL);
+#endif
}
/* Check that a non-directory with trailing slash yields NULL. */
diff --git a/gnulib-tests/test-chdir.c b/gnulib-tests/test-chdir.c
index 80e4fca..9f0739d 100644
--- a/gnulib-tests/test-chdir.c
+++ b/gnulib-tests/test-chdir.c
@@ -1,5 +1,5 @@
/* Test changing to a directory.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-cloexec.c b/gnulib-tests/test-cloexec.c
index 8f8fcf6..7c992df 100644
--- a/gnulib-tests/test-cloexec.c
+++ b/gnulib-tests/test-cloexec.c
@@ -1,5 +1,5 @@
/* Test duplicating non-inheritable file descriptors.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-close.c b/gnulib-tests/test-close.c
index 36b0ef5..beb7768 100644
--- a/gnulib-tests/test-close.c
+++ b/gnulib-tests/test-close.c
@@ -1,5 +1,5 @@
/* Test closing a file or socket.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-connect.c b/gnulib-tests/test-connect.c
index 644361c..7f35ad1 100644
--- a/gnulib-tests/test-connect.c
+++ b/gnulib-tests/test-connect.c
@@ -1,5 +1,5 @@
/* Test connecting a client socket.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-copy-acl-1.sh b/gnulib-tests/test-copy-acl-1.sh
index 2f9880e..0fe44a5 100755
--- a/gnulib-tests/test-copy-acl-1.sh
+++ b/gnulib-tests/test-copy-acl-1.sh
@@ -3,11 +3,16 @@
# Test copy-acl on the file system of /var/tmp, which usually is a local
# file system.
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
if test -d /var/tmp; then
TMPDIR=/var/tmp
else
TMPDIR=/tmp
fi
+test -d $TMPDIR || Exit 77
export TMPDIR
-exec "${srcdir}/test-copy-acl.sh"
+$BOURNE_SHELL "${srcdir}/test-copy-acl.sh"
+
+Exit $?
diff --git a/gnulib-tests/test-copy-acl-2.sh b/gnulib-tests/test-copy-acl-2.sh
index 984602d..a35c12e 100755
--- a/gnulib-tests/test-copy-acl-2.sh
+++ b/gnulib-tests/test-copy-acl-2.sh
@@ -3,7 +3,11 @@
# Test copy-acl on the file system of the build directory, which may be
# a local file system or NFS mounted.
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
TMPDIR=`pwd`
export TMPDIR
-exec "${srcdir}/test-copy-acl.sh"
+$BOURNE_SHELL "${srcdir}/test-copy-acl.sh"
+
+Exit $?
diff --git a/gnulib-tests/test-copy-acl.c b/gnulib-tests/test-copy-acl.c
index 9176b56..e7c5e54 100644
--- a/gnulib-tests/test-copy-acl.c
+++ b/gnulib-tests/test-copy-acl.c
@@ -1,5 +1,5 @@
/* Test of copying of files.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-copy-acl.sh b/gnulib-tests/test-copy-acl.sh
index 147bf56..9f69d14 100755
--- a/gnulib-tests/test-copy-acl.sh
+++ b/gnulib-tests/test-copy-acl.sh
@@ -41,7 +41,12 @@ func_tmpdir ()
}
func_tmpdir
-builddir=`pwd`
+# builddir may already be set by the script that invokes this one.
+case "$builddir" in
+ '') builddir=`pwd` ;;
+ /* | ?:*) ;;
+ *) builddir=`pwd`/$builddir ;;
+esac
cd "$builddir" ||
{
echo "$0: cannot determine build directory (unreadable parent dir?)" >&2
@@ -204,9 +209,9 @@ cd "$builddir" ||
{
echo "Simple contents" > "$2"
chmod 600 "$2"
- "$builddir"/test-copy-acl${EXEEXT} "$1" "$2" || exit 1
- "$builddir"/test-sameacls${EXEEXT} "$1" "$2" || exit 1
- func_test_same_acls "$1" "$2" || exit 1
+ ${CHECKER} "$builddir"/test-copy-acl${EXEEXT} "$1" "$2" || exit 1
+ ${CHECKER} "$builddir"/test-sameacls${EXEEXT} "$1" "$2" || exit 1
+ func_test_same_acls "$1" "$2" || exit 1
}
func_test_copy tmpfile0 tmpfile1
diff --git a/gnulib-tests/test-ctype.c b/gnulib-tests/test-ctype.c
index 897e988..9fc1965 100644
--- a/gnulib-tests/test-ctype.c
+++ b/gnulib-tests/test-ctype.c
@@ -1,5 +1,5 @@
/* Test of <ctype.h> substitute.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-dirent.c b/gnulib-tests/test-dirent.c
index 030cb49..f451322 100644
--- a/gnulib-tests/test-dirent.c
+++ b/gnulib-tests/test-dirent.c
@@ -1,5 +1,5 @@
/* Test of <dirent.h> substitute.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-dup2.c b/gnulib-tests/test-dup2.c
index 6654254..7f7b1c4 100644
--- a/gnulib-tests/test-dup2.c
+++ b/gnulib-tests/test-dup2.c
@@ -1,5 +1,5 @@
/* Test duplicating file descriptors.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-environ.c b/gnulib-tests/test-environ.c
index 9fab110..55ccd5d 100644
--- a/gnulib-tests/test-environ.c
+++ b/gnulib-tests/test-environ.c
@@ -1,5 +1,5 @@
/* Test of environ variable.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-errno.c b/gnulib-tests/test-errno.c
index 581c93c..54f5ae6 100644
--- a/gnulib-tests/test-errno.c
+++ b/gnulib-tests/test-errno.c
@@ -1,5 +1,5 @@
/* Test of <errno.h> substitute.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fcntl-h.c b/gnulib-tests/test-fcntl-h.c
index d861f51..22a6212 100644
--- a/gnulib-tests/test-fcntl-h.c
+++ b/gnulib-tests/test-fcntl-h.c
@@ -1,5 +1,5 @@
/* Test of <fcntl.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fcntl.c b/gnulib-tests/test-fcntl.c
index 5d64674..d5e7e63 100644
--- a/gnulib-tests/test-fcntl.c
+++ b/gnulib-tests/test-fcntl.c
@@ -1,5 +1,5 @@
/* Test of fcntl(2).
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fdopen.c b/gnulib-tests/test-fdopen.c
index a1229f1..e10a858 100644
--- a/gnulib-tests/test-fdopen.c
+++ b/gnulib-tests/test-fdopen.c
@@ -1,5 +1,5 @@
/* Test opening a stream with a file descriptor.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fflush.c b/gnulib-tests/test-fflush.c
index 4010557..cf61905 100644
--- a/gnulib-tests/test-fflush.c
+++ b/gnulib-tests/test-fflush.c
@@ -1,5 +1,5 @@
/* Test of POSIX compatible fflush() function.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fflush2.c b/gnulib-tests/test-fflush2.c
index 22796c7..acca0ae 100644
--- a/gnulib-tests/test-fflush2.c
+++ b/gnulib-tests/test-fflush2.c
@@ -1,5 +1,5 @@
/* Test of POSIX compatible fflush() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -69,16 +69,10 @@ main (int argc, char **argv)
according to the Austin Group's resolution on 2009-01-08. */
/* Check that fflush after a non-backup ungetc() call discards the
ungetc buffer. This is mandated by POSIX
- <http://www.opengroup.org/susv3/functions/ungetc.html>:
- "The value of the file-position indicator for the stream after
- reading or discarding all pushed-back bytes shall be the same
- as it was before the bytes were pushed back."
- <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt>
- "[After fflush(),] the file offset of the underlying open file
- description shall be set to the file position of the stream, and
- any characters pushed back onto the stream by ungetc() or
- ungetwc() that have not subsequently been read from the stream
- shall be discarded." */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fflush.html>:
+ "...any characters pushed back onto the stream by ungetc()
+ or ungetwc() that have not subsequently been read from the
+ stream shall be discarded..." */
c = fgetc (stdin);
ASSERT (c == '#');
diff --git a/gnulib-tests/test-fflush2.sh b/gnulib-tests/test-fflush2.sh
index ef77fa4..0d8859d 100755
--- a/gnulib-tests/test-fflush2.sh
+++ b/gnulib-tests/test-fflush2.sh
@@ -2,8 +2,8 @@
# Execute the test only with seekable input stream.
# The behaviour of fflush() on a non-seekable input stream is undefined.
-./test-fflush2${EXEEXT} 1 < "$srcdir/test-fflush2.sh" || exit $?
-./test-fflush2${EXEEXT} 2 < "$srcdir/test-fflush2.sh" || exit $?
-#cat "$srcdir/test-fflush2.sh" | ./test-fflush2${EXEEXT} || exit $?
+${CHECKER} ./test-fflush2${EXEEXT} 1 < "$srcdir/test-fflush2.sh" || exit $?
+${CHECKER} ./test-fflush2${EXEEXT} 2 < "$srcdir/test-fflush2.sh" || exit $?
+#cat "$srcdir/test-fflush2.sh" | ${CHECKER} ./test-fflush2${EXEEXT} || exit $?
exit 0
diff --git a/gnulib-tests/test-fgetc.c b/gnulib-tests/test-fgetc.c
index f54599c..42db301 100644
--- a/gnulib-tests/test-fgetc.c
+++ b/gnulib-tests/test-fgetc.c
@@ -1,5 +1,5 @@
/* Test of fgetc() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-file-has-acl-1.sh b/gnulib-tests/test-file-has-acl-1.sh
index e3ad9c0..c789d22 100755
--- a/gnulib-tests/test-file-has-acl-1.sh
+++ b/gnulib-tests/test-file-has-acl-1.sh
@@ -3,11 +3,16 @@
# Test file-has-acl on the file system of /var/tmp, which usually is a local
# file system.
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
if test -d /var/tmp; then
TMPDIR=/var/tmp
else
TMPDIR=/tmp
fi
+test -d $TMPDIR || Exit 77
export TMPDIR
-exec "${srcdir}/test-file-has-acl.sh"
+$BOURNE_SHELL "${srcdir}/test-file-has-acl.sh"
+
+Exit $?
diff --git a/gnulib-tests/test-file-has-acl-2.sh b/gnulib-tests/test-file-has-acl-2.sh
index 6b92b1d..41561d6 100755
--- a/gnulib-tests/test-file-has-acl-2.sh
+++ b/gnulib-tests/test-file-has-acl-2.sh
@@ -3,7 +3,11 @@
# Test file-has-acl on the file system of the build directory, which may be
# a local file system or NFS mounted.
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
TMPDIR=`pwd`
export TMPDIR
-exec "${srcdir}/test-file-has-acl.sh"
+$BOURNE_SHELL "${srcdir}/test-file-has-acl.sh"
+
+Exit $?
diff --git a/gnulib-tests/test-file-has-acl.c b/gnulib-tests/test-file-has-acl.c
index 3c11c55..35f8658 100644
--- a/gnulib-tests/test-file-has-acl.c
+++ b/gnulib-tests/test-file-has-acl.c
@@ -1,5 +1,5 @@
/* Test for presence of ACL.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-file-has-acl.sh b/gnulib-tests/test-file-has-acl.sh
index 26610c1..09d18da 100755
--- a/gnulib-tests/test-file-has-acl.sh
+++ b/gnulib-tests/test-file-has-acl.sh
@@ -41,7 +41,12 @@ func_tmpdir ()
}
func_tmpdir
-builddir=`pwd`
+# builddir may already be set by the script that invokes this one.
+case "$builddir" in
+ '') builddir=`pwd` ;;
+ /* | ?:*) ;;
+ *) builddir=`pwd`/$builddir ;;
+esac
cd "$builddir" ||
{
echo "$0: cannot determine build directory (unreadable parent dir?)" >&2
@@ -129,7 +134,7 @@ cd "$builddir" ||
# matches the expected value.
func_test_file_has_acl ()
{
- res=`"$builddir"/test-file-has-acl${EXEEXT} "$1"`
+ res=`${CHECKER} "$builddir"/test-file-has-acl${EXEEXT} "$1"`
test "$res" = "$2" || {
echo "file_has_acl(\"$1\") returned $res, expected $2" 1>&2
exit 1
diff --git a/gnulib-tests/test-fpending.c b/gnulib-tests/test-fpending.c
index fbe6c10..a0bdd96 100644
--- a/gnulib-tests/test-fpending.c
+++ b/gnulib-tests/test-fpending.c
@@ -1,6 +1,6 @@
/* Ensure that __fpending works.
- Copyright (C) 2004, 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fpending.sh b/gnulib-tests/test-fpending.sh
index 636af25..abe7d83 100755
--- a/gnulib-tests/test-fpending.sh
+++ b/gnulib-tests/test-fpending.sh
@@ -5,7 +5,7 @@ trap 'rm -fr $tmpfile' 1 2 3 15
tmpfile=test-fpending.t
-./test-fpending${EXEEXT} > $tmpfile || exit 1
+${CHECKER} ./test-fpending${EXEEXT} > $tmpfile || exit 1
rm -fr $tmpfile
diff --git a/gnulib-tests/test-fpurge.c b/gnulib-tests/test-fpurge.c
index b100c3a..3bca176 100644
--- a/gnulib-tests/test-fpurge.c
+++ b/gnulib-tests/test-fpurge.c
@@ -1,5 +1,5 @@
/* Test of fpurge() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fputc.c b/gnulib-tests/test-fputc.c
index 788877b..e8e25b8 100644
--- a/gnulib-tests/test-fputc.c
+++ b/gnulib-tests/test-fputc.c
@@ -1,5 +1,5 @@
/* Test of fputc() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fread.c b/gnulib-tests/test-fread.c
index 4fe20f8..08b3a11 100644
--- a/gnulib-tests/test-fread.c
+++ b/gnulib-tests/test-fread.c
@@ -1,5 +1,5 @@
/* Test of fread() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-freading.c b/gnulib-tests/test-freading.c
index 1658b10..f2abd1f 100644
--- a/gnulib-tests/test-freading.c
+++ b/gnulib-tests/test-freading.c
@@ -1,5 +1,5 @@
/* Test of freading() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fseek.c b/gnulib-tests/test-fseek.c
index c8191bd..ae653a7 100644
--- a/gnulib-tests/test-fseek.c
+++ b/gnulib-tests/test-fseek.c
@@ -1,5 +1,5 @@
/* Test of fseek() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fseek.sh b/gnulib-tests/test-fseek.sh
index bad6c08..4ad3fda 100755
--- a/gnulib-tests/test-fseek.sh
+++ b/gnulib-tests/test-fseek.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-./test-fseek${EXEEXT} 1 < "$srcdir/test-fseek.sh" || exit 1
-echo hi | ./test-fseek${EXEEXT} || exit 1
+${CHECKER} ./test-fseek${EXEEXT} 1 < "$srcdir/test-fseek.sh" || exit 1
+echo hi | ${CHECKER} ./test-fseek${EXEEXT} || exit 1
exit 0
diff --git a/gnulib-tests/test-fseek2.sh b/gnulib-tests/test-fseek2.sh
index a4c9cb7..beadc98 100755
--- a/gnulib-tests/test-fseek2.sh
+++ b/gnulib-tests/test-fseek2.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-exec ./test-fseek${EXEEXT} 1 2 < "$srcdir/test-fseek2.sh"
+exec ${CHECKER} ./test-fseek${EXEEXT} 1 2 < "$srcdir/test-fseek2.sh"
diff --git a/gnulib-tests/test-fseeko.c b/gnulib-tests/test-fseeko.c
index f412789..2452999 100644
--- a/gnulib-tests/test-fseeko.c
+++ b/gnulib-tests/test-fseeko.c
@@ -1,5 +1,5 @@
/* Test of fseeko() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fseeko.sh b/gnulib-tests/test-fseeko.sh
index 5c55827..c7b675e 100755
--- a/gnulib-tests/test-fseeko.sh
+++ b/gnulib-tests/test-fseeko.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-./test-fseeko${EXEEXT} 1 < "$srcdir/test-fseeko.sh" || exit 1
-echo hi | ./test-fseeko${EXEEXT} || exit 1
+${CHECKER} ./test-fseeko${EXEEXT} 1 < "$srcdir/test-fseeko.sh" || exit 1
+echo hi | ${CHECKER} ./test-fseeko${EXEEXT} || exit 1
exit 0
diff --git a/gnulib-tests/test-fseeko2.sh b/gnulib-tests/test-fseeko2.sh
index 6e1130c..7bf315e 100755
--- a/gnulib-tests/test-fseeko2.sh
+++ b/gnulib-tests/test-fseeko2.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-exec ./test-fseeko${EXEEXT} 1 2 < "$srcdir/test-fseeko2.sh"
+exec ${CHECKER} ./test-fseeko${EXEEXT} 1 2 < "$srcdir/test-fseeko2.sh"
diff --git a/gnulib-tests/test-fseeko3.c b/gnulib-tests/test-fseeko3.c
index 31fce62..78b79c6 100644
--- a/gnulib-tests/test-fseeko3.c
+++ b/gnulib-tests/test-fseeko3.c
@@ -1,5 +1,5 @@
/* Test of fseeko() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fseeko3.sh b/gnulib-tests/test-fseeko3.sh
index c50b4a2..254d0cb 100755
--- a/gnulib-tests/test-fseeko3.sh
+++ b/gnulib-tests/test-fseeko3.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-./test-fseeko3${EXEEXT} 0 "$srcdir/test-fseeko3.sh" || exit 1
+${CHECKER} ./test-fseeko3${EXEEXT} 0 "$srcdir/test-fseeko3.sh" || exit 1
-./test-fseeko3${EXEEXT} 1 "$srcdir/test-fseeko3.sh" || exit 1
+${CHECKER} ./test-fseeko3${EXEEXT} 1 "$srcdir/test-fseeko3.sh" || exit 1
exit 0
diff --git a/gnulib-tests/test-fseeko4.c b/gnulib-tests/test-fseeko4.c
index bd2c64c..5e19c27 100644
--- a/gnulib-tests/test-fseeko4.c
+++ b/gnulib-tests/test-fseeko4.c
@@ -1,5 +1,5 @@
/* Test of fseeko() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fseeko4.sh b/gnulib-tests/test-fseeko4.sh
index e6464ae..7a4d352 100755
--- a/gnulib-tests/test-fseeko4.sh
+++ b/gnulib-tests/test-fseeko4.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-./test-fseeko4${EXEEXT} "$srcdir/test-fseeko4.sh" || exit 1
+${CHECKER} ./test-fseeko4${EXEEXT} "$srcdir/test-fseeko4.sh" || exit 1
exit 0
diff --git a/gnulib-tests/test-fstat.c b/gnulib-tests/test-fstat.c
index 16d8406..621498c 100644
--- a/gnulib-tests/test-fstat.c
+++ b/gnulib-tests/test-fstat.c
@@ -1,5 +1,5 @@
/* Tests of fstat() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftell.c b/gnulib-tests/test-ftell.c
index 1bfab20..859fec7 100644
--- a/gnulib-tests/test-ftell.c
+++ b/gnulib-tests/test-ftell.c
@@ -1,5 +1,5 @@
/* Test of ftell() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftell.sh b/gnulib-tests/test-ftell.sh
index bf55d2e..5c27808 100755
--- a/gnulib-tests/test-ftell.sh
+++ b/gnulib-tests/test-ftell.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-./test-ftell${EXEEXT} 1 < "$srcdir/test-ftell.sh" || exit 1
-echo hi | ./test-ftell${EXEEXT} || exit 1
+${CHECKER} ./test-ftell${EXEEXT} 1 < "$srcdir/test-ftell.sh" || exit 1
+echo hi | ${CHECKER} ./test-ftell${EXEEXT} || exit 1
exit 0
diff --git a/gnulib-tests/test-ftell2.sh b/gnulib-tests/test-ftell2.sh
index 3b645b8..7d116d2 100755
--- a/gnulib-tests/test-ftell2.sh
+++ b/gnulib-tests/test-ftell2.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-exec ./test-ftell${EXEEXT} 1 2 < "$srcdir/test-ftell2.sh"
+exec ${CHECKER} ./test-ftell${EXEEXT} 1 2 < "$srcdir/test-ftell2.sh"
diff --git a/gnulib-tests/test-ftell3.c b/gnulib-tests/test-ftell3.c
index d0f4f10..1feafcb 100644
--- a/gnulib-tests/test-ftell3.c
+++ b/gnulib-tests/test-ftell3.c
@@ -1,5 +1,5 @@
/* Test of ftell() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftello.c b/gnulib-tests/test-ftello.c
index f33ccde..71936a1 100644
--- a/gnulib-tests/test-ftello.c
+++ b/gnulib-tests/test-ftello.c
@@ -1,5 +1,5 @@
/* Test of ftello() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftello.sh b/gnulib-tests/test-ftello.sh
index 33d2e83..e8db061 100755
--- a/gnulib-tests/test-ftello.sh
+++ b/gnulib-tests/test-ftello.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-./test-ftello${EXEEXT} 1 < "$srcdir/test-ftello.sh" || exit 1
-echo hi | ./test-ftello${EXEEXT} || exit 1
+${CHECKER} ./test-ftello${EXEEXT} 1 < "$srcdir/test-ftello.sh" || exit 1
+echo hi | ${CHECKER} ./test-ftello${EXEEXT} || exit 1
exit 0
diff --git a/gnulib-tests/test-ftello2.sh b/gnulib-tests/test-ftello2.sh
index ba750b0..63a222c 100755
--- a/gnulib-tests/test-ftello2.sh
+++ b/gnulib-tests/test-ftello2.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-exec ./test-ftello${EXEEXT} 1 2 < "$srcdir/test-ftello2.sh"
+exec ${CHECKER} ./test-ftello${EXEEXT} 1 2 < "$srcdir/test-ftello2.sh"
diff --git a/gnulib-tests/test-ftello3.c b/gnulib-tests/test-ftello3.c
index 77eae43..f693596 100644
--- a/gnulib-tests/test-ftello3.c
+++ b/gnulib-tests/test-ftello3.c
@@ -1,5 +1,5 @@
/* Test of ftello() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftello4.c b/gnulib-tests/test-ftello4.c
index 07e11f1..54cfe75 100644
--- a/gnulib-tests/test-ftello4.c
+++ b/gnulib-tests/test-ftello4.c
@@ -1,5 +1,5 @@
/* Test of ftello() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftello4.sh b/gnulib-tests/test-ftello4.sh
index e3702bb..f7ff149 100755
--- a/gnulib-tests/test-ftello4.sh
+++ b/gnulib-tests/test-ftello4.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-./test-ftello4${EXEEXT} "$srcdir/test-ftello4.sh" || exit 1
+${CHECKER} ./test-ftello4${EXEEXT} "$srcdir/test-ftello4.sh" || exit 1
exit 0
diff --git a/gnulib-tests/test-ftruncate.c b/gnulib-tests/test-ftruncate.c
index 6f597fb..3ad7edd 100644
--- a/gnulib-tests/test-ftruncate.c
+++ b/gnulib-tests/test-ftruncate.c
@@ -1,5 +1,5 @@
/* Test truncating a file.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ftruncate.sh b/gnulib-tests/test-ftruncate.sh
index d7394d2..203e07b 100755
--- a/gnulib-tests/test-ftruncate.sh
+++ b/gnulib-tests/test-ftruncate.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-exec ./test-ftruncate${EXEEXT} "$srcdir/test-ftruncate.sh"
+exec ${CHECKER} ./test-ftruncate${EXEEXT} "$srcdir/test-ftruncate.sh"
diff --git a/gnulib-tests/test-fwrite.c b/gnulib-tests/test-fwrite.c
index 12012db..9ff0d07 100644
--- a/gnulib-tests/test-fwrite.c
+++ b/gnulib-tests/test-fwrite.c
@@ -1,5 +1,5 @@
/* Test of fwrite() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-fwriting.c b/gnulib-tests/test-fwriting.c
index c23068b..5377c96 100644
--- a/gnulib-tests/test-fwriting.c
+++ b/gnulib-tests/test-fwriting.c
@@ -1,5 +1,5 @@
/* Test of fwriting() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getcwd-lgpl.c b/gnulib-tests/test-getcwd-lgpl.c
index 3912c19..fdf0afd 100644
--- a/gnulib-tests/test-getcwd-lgpl.c
+++ b/gnulib-tests/test-getcwd-lgpl.c
@@ -1,5 +1,5 @@
/* Test of getcwd() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getdelim.c b/gnulib-tests/test-getdelim.c
index 8144c84..3ce7ccc 100644
--- a/gnulib-tests/test-getdelim.c
+++ b/gnulib-tests/test-getdelim.c
@@ -1,5 +1,5 @@
/* Test of getdelim() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getdtablesize.c b/gnulib-tests/test-getdtablesize.c
index 2bfcaeb..bf00fb4 100644
--- a/gnulib-tests/test-getdtablesize.c
+++ b/gnulib-tests/test-getdtablesize.c
@@ -1,5 +1,5 @@
/* Test of getdtablesize() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getopt-gnu.c b/gnulib-tests/test-getopt-gnu.c
index 1176d7b..34db5ae 100644
--- a/gnulib-tests/test-getopt-gnu.c
+++ b/gnulib-tests/test-getopt-gnu.c
@@ -1,5 +1,5 @@
/* Test of command line argument processing.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,7 +23,7 @@
#define _GL_NO_LARGE_FILES
/* POSIX and glibc provide the getopt() function in <unistd.h>, see
- http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html
But gnulib provides the getopt() function in <getopt.h>, not in <unistd.h>.
This is what we are testing here. */
diff --git a/gnulib-tests/test-getopt-main.h b/gnulib-tests/test-getopt-main.h
index c9c97bd..f3278cc 100644
--- a/gnulib-tests/test-getopt-main.h
+++ b/gnulib-tests/test-getopt-main.h
@@ -1,5 +1,5 @@
/* Test of command line argument processing.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getopt-posix.c b/gnulib-tests/test-getopt-posix.c
index b13f987..10ed784 100644
--- a/gnulib-tests/test-getopt-posix.c
+++ b/gnulib-tests/test-getopt-posix.c
@@ -1,5 +1,5 @@
/* Test of command line argument processing.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,7 +23,7 @@
#define _GL_NO_LARGE_FILES
/* POSIX and glibc provide the getopt() function in <unistd.h>, see
- http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html
But gnulib provides the getopt() function in <getopt.h>, not in <unistd.h>.
Nevertheless the getopt() function should also be found in <unistd.h>. */
diff --git a/gnulib-tests/test-getopt.h b/gnulib-tests/test-getopt.h
index 98ea389..c9237b0 100644
--- a/gnulib-tests/test-getopt.h
+++ b/gnulib-tests/test-getopt.h
@@ -1,5 +1,5 @@
/* Test of command line argument processing.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getopt_long.h b/gnulib-tests/test-getopt_long.h
index 4c22d8d..eaa61b4 100644
--- a/gnulib-tests/test-getopt_long.h
+++ b/gnulib-tests/test-getopt_long.h
@@ -1,5 +1,5 @@
/* Test of command line argument processing.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-getprogname.c b/gnulib-tests/test-getprogname.c
index 7e219f4..38163ea 100644
--- a/gnulib-tests/test-getprogname.c
+++ b/gnulib-tests/test-getprogname.c
@@ -1,5 +1,5 @@
/* Test the gnulib getprogname module.
- Copyright (C) 2016-2018 Free Software Foundation, Inc.
+ Copyright (C) 2016-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-gettimeofday.c b/gnulib-tests/test-gettimeofday.c
index 322e7bd..4ce4107 100644
--- a/gnulib-tests/test-gettimeofday.c
+++ b/gnulib-tests/test-gettimeofday.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+ * Copyright (C) 2005, 2007, 2009-2020 Free Software Foundation, Inc.
* Written by Jim Meyering.
*
* This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/test-hard-locale.c b/gnulib-tests/test-hard-locale.c
new file mode 100644
index 0000000..e232123
--- /dev/null
+++ b/gnulib-tests/test-hard-locale.c
@@ -0,0 +1,109 @@
+/* Test of determination whether a locale is different from the "C" locale.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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 "hard-locale.h"
+
+#include <locale.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+
+/* True if all locale names are accepted and all locales are trivial.
+ This is the case e.g. on OpenBSD 3.8. */
+static bool all_trivial;
+
+static int
+test_one (const char *name, int failure_bitmask)
+{
+ if (setlocale (LC_ALL, name) != NULL)
+ {
+ bool expected;
+
+ /* 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__
+ expected = true;
+#else
+ expected = !all_trivial;
+#endif
+ if (hard_locale (LC_CTYPE) != expected)
+ {
+ if (expected)
+ fprintf (stderr, "Unexpected: The category LC_CTYPE of the locale '%s' is not equivalent to C or POSIX.\n",
+ name);
+ else
+ fprintf (stderr, "Unexpected: The category LC_CTYPE of the locale '%s' is equivalent to C or POSIX.\n",
+ name);
+ return 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. */
+#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 */
+ expected = true;
+#else
+ expected = !all_trivial;
+#endif
+ if (hard_locale (LC_COLLATE) != expected)
+ {
+ if (expected)
+ fprintf (stderr, "Unexpected: The category LC_COLLATE of the locale '%s' is not equivalent to C or POSIX.\n",
+ name);
+ else
+ fprintf (stderr, "Unexpected: The category LC_COLLATE of the locale '%s' is equivalent to C or POSIX.\n",
+ name);
+ return failure_bitmask;
+ }
+ }
+ return 0;
+}
+
+int
+main ()
+{
+ int fail = 0;
+
+ /* The initial locale is the "C" or "POSIX" locale. */
+ if (hard_locale (LC_CTYPE) || hard_locale (LC_COLLATE))
+ {
+ fprintf (stderr, "The initial locale should not be hard!\n");
+ fail |= 1;
+ }
+
+ all_trivial = (setlocale (LC_ALL, "foobar") != NULL);
+
+ fail |= test_one ("de", 2);
+ fail |= test_one ("de_DE", 4);
+ fail |= test_one ("de_DE.ISO8859-1", 8);
+ fail |= test_one ("de_DE.iso88591", 8);
+ fail |= test_one ("de_DE.UTF-8", 16);
+ fail |= test_one ("de_DE.utf8", 16);
+ fail |= test_one ("german", 32);
+ fail |= test_one ("C.UTF-8", 64);
+
+ return fail;
+}
diff --git a/gnulib-tests/test-ignore-value.c b/gnulib-tests/test-ignore-value.c
index d7b6308..f323a7b 100644
--- a/gnulib-tests/test-ignore-value.c
+++ b/gnulib-tests/test-ignore-value.c
@@ -1,6 +1,6 @@
/* Test the "ignore-value" module.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-inet_pton.c b/gnulib-tests/test-inet_pton.c
index 7dc91c1..8ae0fe2 100644
--- a/gnulib-tests/test-inet_pton.c
+++ b/gnulib-tests/test-inet_pton.c
@@ -1,5 +1,5 @@
/* Test of inet_pton function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-init.sh b/gnulib-tests/test-init.sh
index 1cf0cb9..e9d2524 100755
--- a/gnulib-tests/test-init.sh
+++ b/gnulib-tests/test-init.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Unit tests for init.sh
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 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/gnulib-tests/test-intprops.c b/gnulib-tests/test-intprops.c
index 286669a..a56b18e 100644
--- a/gnulib-tests/test-intprops.c
+++ b/gnulib-tests/test-intprops.c
@@ -1,5 +1,5 @@
/* Test intprops.h.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -56,6 +56,9 @@
#define DONTCARE __LINE__
+int int_minus_2 = -2;
+int int_1 = 1;
+
int
main (void)
{
@@ -215,8 +218,10 @@ main (void)
CHECK_SBINOP (*, MULTIPLY, INT_MIN, INT_MIN, int, true, 0);
CHECK_SBINOP (*, MULTIPLY, -1, INT_MIN, int,
INT_NEGATE_OVERFLOW (INT_MIN), INT_MIN);
+#if !defined __HP_cc
CHECK_SBINOP (*, MULTIPLY, LONG_MIN / INT_MAX, (long int) INT_MAX,
long int, false, LONG_MIN - LONG_MIN % INT_MAX);
+#endif
CHECK_BINOP (/, DIVIDE, INT_MIN, -1, int,
INT_NEGATE_OVERFLOW (INT_MIN), INT_MIN);
@@ -237,33 +242,48 @@ main (void)
/* INT_<op>_OVERFLOW and INT_<op>_WRAPV with mixed types. */
#define CHECK_SUM(a, b, t, v, vres) \
- CHECK_SUM1(a, b, t, v, vres); \
- CHECK_SUM1(b, a, t, v, vres)
- #define CHECK_SSUM(a, b, t, v, vres) \
- CHECK_SSUM1(a, b, t, v, vres); \
- CHECK_SSUM1(b, a, t, v, vres)
+ CHECK_SUM1 (a, b, t, v, vres); \
+ CHECK_SUM1 (b, a, t, v, vres)
+ #define CHECK_SUM_WRAPV(a, b, t, v, vres, okres) \
+ CHECK_SUM_WRAPV1 (a, b, t, v, vres, okres); \
+ CHECK_SUM_WRAPV1 (b, a, t, v, vres, okres)
#define CHECK_SUM1(a, b, t, v, vres) \
- VERIFY (INT_ADD_OVERFLOW (a, b) == (v))
- #define CHECK_SSUM1(a, b, t, v, vres) \
- CHECK_SUM1(a, b, t, v, vres); \
+ VERIFY (INT_ADD_OVERFLOW (a, b) == (v)); \
+ CHECK_SUM_WRAPV1 (a, b, t, v, vres, (a) + (b))
+ #define CHECK_SUM_WRAPV1(a, b, t, v, vres, okres) \
{ \
t result; \
ASSERT (INT_ADD_WRAPV (a, b, &result) == (v)); \
- ASSERT (result == ((v) ? (vres) : ((a) + (b)))); \
+ ASSERT (result == ((v) ? (vres) : (okres))); \
}
- CHECK_SSUM (-1, LONG_MIN, long int, true, LONG_MAX);
+ CHECK_SUM (-1, LONG_MIN, long int, true, LONG_MAX);
CHECK_SUM (-1, UINT_MAX, unsigned int, false, DONTCARE);
- CHECK_SSUM (-1L, INT_MIN, long int, INT_MIN == LONG_MIN,
+ CHECK_SUM (-1L, INT_MIN, long int, INT_MIN == LONG_MIN,
INT_MIN == LONG_MIN ? INT_MAX : DONTCARE);
CHECK_SUM (0u, -1, unsigned int, true, 0u + -1);
CHECK_SUM (0u, 0, unsigned int, false, DONTCARE);
CHECK_SUM (0u, 1, unsigned int, false, DONTCARE);
- CHECK_SSUM (1, LONG_MAX, long int, true, LONG_MIN);
+ CHECK_SUM (1, LONG_MAX, long int, true, LONG_MIN);
CHECK_SUM (1, UINT_MAX, unsigned int, true, 0u);
- CHECK_SSUM (1L, INT_MAX, long int, INT_MAX == LONG_MAX,
+ CHECK_SUM (1L, INT_MAX, long int, INT_MAX == LONG_MAX,
INT_MAX == LONG_MAX ? INT_MIN : DONTCARE);
CHECK_SUM (1u, INT_MAX, unsigned int, INT_MAX == UINT_MAX, 1u + INT_MAX);
CHECK_SUM (1u, INT_MIN, unsigned int, true, 1u + INT_MIN);
+ CHECK_SUM_WRAPV (-1, 1u, int, false, DONTCARE, 0);
+ CHECK_SUM_WRAPV (-1, 1ul, int, false, DONTCARE, 0);
+ CHECK_SUM_WRAPV (-1l, 1u, int, false, DONTCARE, 0);
+ CHECK_SUM_WRAPV (-100, 1000u, int, false, DONTCARE, 900);
+ CHECK_SUM_WRAPV (INT_MIN, UINT_MAX, int, false, DONTCARE, INT_MAX);
+ CHECK_SUM_WRAPV (1u, INT_MAX, int, true, INT_MIN, DONTCARE);
+ CHECK_SUM_WRAPV (INT_MAX, 1, long int, LONG_MAX <= INT_MAX, INT_MIN,
+ INT_MAX + 1L);
+ CHECK_SUM_WRAPV (UINT_MAX, 1, long int, LONG_MAX <= UINT_MAX, 0,
+ UINT_MAX + 1L);
+ CHECK_SUM_WRAPV (INT_MAX, 1, unsigned long int, ULONG_MAX <= INT_MAX, 0,
+ INT_MAX + 1uL);
+ CHECK_SUM_WRAPV (UINT_MAX, 1, unsigned long int, ULONG_MAX <= UINT_MAX, 0,
+ UINT_MAX + 1uL);
+
{
long int result;
ASSERT (INT_ADD_WRAPV (1, INT_MAX, &result) == (INT_MAX == LONG_MAX));
@@ -273,7 +293,9 @@ main (void)
#define CHECK_DIFFERENCE(a, b, t, v, vres) \
VERIFY (INT_SUBTRACT_OVERFLOW (a, b) == (v))
#define CHECK_SDIFFERENCE(a, b, t, v, vres) \
- CHECK_DIFFERENCE(a, b, t, v, vres); \
+ CHECK_DIFFERENCE (a, b, t, v, vres); \
+ CHECK_SDIFFERENCE_WRAPV (a, b, t, v, vres)
+ #define CHECK_SDIFFERENCE_WRAPV(a, b, t, v, vres) \
{ \
t result; \
ASSERT (INT_SUBTRACT_WRAPV (a, b, &result) == (v)); \
@@ -290,6 +312,11 @@ main (void)
CHECK_SDIFFERENCE (-1, INT_MAX, int, false, -1 - INT_MAX);
CHECK_SDIFFERENCE (0, INT_MIN, int, INT_MIN < -INT_MAX, INT_MIN);
CHECK_SDIFFERENCE (0, INT_MAX, int, false, 0 - INT_MAX);
+ CHECK_SDIFFERENCE_WRAPV (-1, 1u, int, false, DONTCARE);
+ CHECK_SDIFFERENCE_WRAPV (-1, 1ul, int, false, DONTCARE);
+ CHECK_SDIFFERENCE_WRAPV (-1l, 1u, int, false, DONTCARE);
+ CHECK_SDIFFERENCE_WRAPV (0u, INT_MAX, int, false, DONTCARE);
+ CHECK_SDIFFERENCE_WRAPV (1u, INT_MIN, int, true, 1u - INT_MIN);
{
long int result;
ASSERT (INT_SUBTRACT_WRAPV (INT_MAX, -1, &result) == (INT_MAX == LONG_MAX));
@@ -297,15 +324,20 @@ main (void)
}
#define CHECK_PRODUCT(a, b, t, v, vres) \
- CHECK_PRODUCT1(a, b, t, v, vres); \
- CHECK_PRODUCT1(b, a, t, v, vres)
+ CHECK_PRODUCT1 (a, b, t, v, vres); \
+ CHECK_PRODUCT1 (b, a, t, v, vres)
#define CHECK_SPRODUCT(a, b, t, v, vres) \
- CHECK_SPRODUCT1(a, b, t, v, vres); \
- CHECK_SPRODUCT1(b, a, t, v, vres)
+ CHECK_SPRODUCT1 (a, b, t, v, vres); \
+ CHECK_SPRODUCT1 (b, a, t, v, vres)
+ #define CHECK_SPRODUCT_WRAPV(a, b, t, v, vres) \
+ CHECK_SPRODUCT_WRAPV1 (a, b, t, v, vres); \
+ CHECK_SPRODUCT_WRAPV1 (b, a, t, v, vres)
#define CHECK_PRODUCT1(a, b, t, v, vres) \
VERIFY (INT_MULTIPLY_OVERFLOW (a, b) == (v))
#define CHECK_SPRODUCT1(a, b, t, v, vres) \
- CHECK_PRODUCT1(a, b, t, v, vres); \
+ CHECK_PRODUCT1 (a, b, t, v, vres); \
+ CHECK_SPRODUCT_WRAPV1 (a, b, t, v, vres)
+ #define CHECK_SPRODUCT_WRAPV1(a, b, t, v, vres) \
{ \
t result; \
ASSERT (INT_MULTIPLY_WRAPV (a, b, &result) == (v)); \
@@ -338,11 +370,17 @@ main (void)
CHECK_PRODUCT (INT_MAX, UINT_MAX, unsigned int, true, INT_MAX * UINT_MAX);
CHECK_PRODUCT (INT_MAX, ULONG_MAX, unsigned long int, true,
INT_MAX * ULONG_MAX);
+#if !defined __HP_cc
CHECK_SPRODUCT (INT_MIN, LONG_MAX / INT_MIN - 1, long int, true, LONG_MIN);
CHECK_SPRODUCT (INT_MIN, LONG_MAX / INT_MIN, long int, false, DONTCARE);
+#endif
CHECK_PRODUCT (INT_MIN, UINT_MAX, unsigned int, true, INT_MIN * UINT_MAX);
CHECK_PRODUCT (INT_MIN, ULONG_MAX, unsigned long int, true,
INT_MIN * ULONG_MAX);
+ CHECK_SPRODUCT_WRAPV (-1, INT_MAX + 1u, int, false, DONTCARE);
+ CHECK_SPRODUCT_WRAPV (-1, 1u, int, false, DONTCARE);
+ CHECK_SPRODUCT (0, ULONG_MAX, int, false, DONTCARE);
+ CHECK_SPRODUCT (0u, LONG_MIN, int, false, DONTCARE);
{
long int result;
ASSERT (INT_MULTIPLY_WRAPV (INT_MAX, INT_MAX, &result)
@@ -365,6 +403,12 @@ main (void)
}
# endif
+ /* Check for GCC bug 91450. */
+ {
+ unsigned long long result;
+ ASSERT (INT_MULTIPLY_WRAPV (int_minus_2, int_1, &result) && result == -2);
+ }
+
#define CHECK_QUOTIENT(a, b, v) VERIFY (INT_DIVIDE_OVERFLOW (a, b) == (v))
CHECK_QUOTIENT (INT_MIN, -1L, INT_MIN == LONG_MIN);
diff --git a/gnulib-tests/test-inttypes.c b/gnulib-tests/test-inttypes.c
index eb19655..21db820 100644
--- a/gnulib-tests/test-inttypes.c
+++ b/gnulib-tests/test-inttypes.c
@@ -1,5 +1,5 @@
/* Test of <inttypes.h> substitute.
- Copyright (C) 2006-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-ioctl.c b/gnulib-tests/test-ioctl.c
index 97dec4c..e09b009 100644
--- a/gnulib-tests/test-ioctl.c
+++ b/gnulib-tests/test-ioctl.c
@@ -1,5 +1,5 @@
/* Test of ioctl() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-isblank.c b/gnulib-tests/test-isblank.c
index 5df1628..7dd9136 100644
--- a/gnulib-tests/test-isblank.c
+++ b/gnulib-tests/test-isblank.c
@@ -1,5 +1,5 @@
/* Test of isblank() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,7 +35,7 @@ main (int argc, char *argv[])
/* Verify the property in the "C" locale.
POSIX specifies in
- <http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html>
that
- in all locales, the blank characters include the <space> and <tab>
characters,
diff --git a/gnulib-tests/test-langinfo.c b/gnulib-tests/test-langinfo.c
index ba5fa86..4f3bbb0 100644
--- a/gnulib-tests/test-langinfo.c
+++ b/gnulib-tests/test-langinfo.c
@@ -1,5 +1,5 @@
/* Test of <langinfo.h> substitute.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-limits-h.c b/gnulib-tests/test-limits-h.c
index ee30bde..2629c96 100644
--- a/gnulib-tests/test-limits-h.c
+++ b/gnulib-tests/test-limits-h.c
@@ -1,5 +1,5 @@
/* Test of <limits.h> substitute.
- Copyright 2016-2018 Free Software Foundation, Inc.
+ Copyright 2016-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-link.c b/gnulib-tests/test-link.c
index 3b0fbc1..5e192dc 100644
--- a/gnulib-tests/test-link.c
+++ b/gnulib-tests/test-link.c
@@ -1,5 +1,5 @@
/* Test of link() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-link.h b/gnulib-tests/test-link.h
index 4d8cf0e..a244077 100644
--- a/gnulib-tests/test-link.h
+++ b/gnulib-tests/test-link.h
@@ -1,5 +1,5 @@
/* Test of link() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-listen.c b/gnulib-tests/test-listen.c
index 121ef74..74d31ea 100644
--- a/gnulib-tests/test-listen.c
+++ b/gnulib-tests/test-listen.c
@@ -1,5 +1,5 @@
/* Test listen() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-localcharset.c b/gnulib-tests/test-localcharset.c
index 69bca0b..b2dd51c 100644
--- a/gnulib-tests/test-localcharset.c
+++ b/gnulib-tests/test-localcharset.c
@@ -1,5 +1,5 @@
/* Manual test of localcharset() function.
- Copyright (C) 2018 Free Software Foundation, Inc.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-locale.c b/gnulib-tests/test-locale.c
index c09ae9a..264d7b6 100644
--- a/gnulib-tests/test-locale.c
+++ b/gnulib-tests/test-locale.c
@@ -1,5 +1,5 @@
/* Test of <locale.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This 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,7 +44,7 @@ verify (sizeof NULL == sizeof (void *));
int
main ()
{
-#if HAVE_NEWLOCALE
+#if HAVE_WORKING_NEWLOCALE
/* Check that the locale_t type and the LC_GLOBAL_LOCALE macro are defined. */
locale_t b = LC_GLOBAL_LOCALE;
(void) b;
diff --git a/gnulib-tests/test-localeconv.c b/gnulib-tests/test-localeconv.c
index d2bd761..ab54dde 100644
--- a/gnulib-tests/test-localeconv.c
+++ b/gnulib-tests/test-localeconv.c
@@ -1,5 +1,5 @@
/* Test of localeconv() function.
- Copyright (C) 2012-2018 Free Software Foundation, Inc.
+ Copyright (C) 2012-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-localename.c b/gnulib-tests/test-localename.c
index 21a5f5d..6ff10d9 100644
--- a/gnulib-tests/test-localename.c
+++ b/gnulib-tests/test-localename.c
@@ -1,5 +1,5 @@
/* Test of gl_locale_name function and its variants.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,7 +26,7 @@
#include "macros.h"
-#if HAVE_NEWLOCALE && HAVE_WORKING_USELOCALE && !HAVE_FAKE_LOCALES
+#if HAVE_WORKING_NEWLOCALE && HAVE_WORKING_USELOCALE && !HAVE_FAKE_LOCALES
# define HAVE_GOOD_USELOCALE 1
#endif
diff --git a/gnulib-tests/test-lseek.c b/gnulib-tests/test-lseek.c
index 146f5ce..fd9e60e 100644
--- a/gnulib-tests/test-lseek.c
+++ b/gnulib-tests/test-lseek.c
@@ -1,5 +1,5 @@
/* Test of lseek() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-lseek.sh b/gnulib-tests/test-lseek.sh
index 47237b5..ff206c6 100755
--- a/gnulib-tests/test-lseek.sh
+++ b/gnulib-tests/test-lseek.sh
@@ -5,14 +5,14 @@ trap 'rm -fr $tmpfiles' 1 2 3 15
tmpfiles=t-lseek.tmp
# seekable files
-./test-lseek${EXEEXT} 0 < "$srcdir/test-lseek.sh" > t-lseek.tmp || exit 1
+${CHECKER} ./test-lseek${EXEEXT} 0 < "$srcdir/test-lseek.sh" > t-lseek.tmp || exit 1
# pipes
-echo hi | { ./test-lseek${EXEEXT} 1; echo $? > t-lseek.tmp; cat > /dev/null; } | cat
+echo hi | { ${CHECKER} ./test-lseek${EXEEXT} 1; echo $? > t-lseek.tmp; cat > /dev/null; } | cat
test "`cat t-lseek.tmp`" = "0" || exit 1
# closed descriptors
-./test-lseek${EXEEXT} 2 <&- >&- || exit 1
+${CHECKER} ./test-lseek${EXEEXT} 2 <&- >&- || exit 1
rm -rf $tmpfiles
exit 0
diff --git a/gnulib-tests/test-lstat.c b/gnulib-tests/test-lstat.c
index 9ef2fcd..a7b928a 100644
--- a/gnulib-tests/test-lstat.c
+++ b/gnulib-tests/test-lstat.c
@@ -1,5 +1,5 @@
/* Test of lstat() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-lstat.h b/gnulib-tests/test-lstat.h
index 248e7df..f9ad11d 100644
--- a/gnulib-tests/test-lstat.h
+++ b/gnulib-tests/test-lstat.h
@@ -1,5 +1,5 @@
/* Test of lstat() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This 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,12 +31,16 @@ test_lstat_func (int (*func) (char const *, struct stat *), bool print)
/* Test for common directories. */
ASSERT (func (".", &st1) == 0);
ASSERT (func ("./", &st2) == 0);
+#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
ASSERT (SAME_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));
+#endif
ASSERT (S_ISDIR (st1.st_mode));
ASSERT (S_ISDIR (st2.st_mode));
ASSERT (func ("..", &st1) == 0);
@@ -85,7 +89,9 @@ test_lstat_func (int (*func) (char const *, struct stat *), bool print)
ASSERT (stat (BASE "link1", &st2) == 0);
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));
+#endif
ASSERT (func (BASE "link2", &st1) == 0);
ASSERT (S_ISLNK (st1.st_mode));
diff --git a/gnulib-tests/test-malloca.c b/gnulib-tests/test-malloca.c
index a07667b..a546add 100644
--- a/gnulib-tests/test-malloca.c
+++ b/gnulib-tests/test-malloca.c
@@ -1,5 +1,5 @@
/* Test of safe automatic memory allocation.
- Copyright (C) 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-mbrtowc-w32-1.sh b/gnulib-tests/test-mbrtowc-w32-1.sh
index 3f12e44..fec9ead 100755
--- a/gnulib-tests/test-mbrtowc-w32-1.sh
+++ b/gnulib-tests/test-mbrtowc-w32-1.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP1252 locale.
-./test-mbrtowc-w32${EXEEXT} French_France 1252
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} French_France 1252
diff --git a/gnulib-tests/test-mbrtowc-w32-2.sh b/gnulib-tests/test-mbrtowc-w32-2.sh
index 9e1a765..c55a0ec 100755
--- a/gnulib-tests/test-mbrtowc-w32-2.sh
+++ b/gnulib-tests/test-mbrtowc-w32-2.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP1256 locale.
-./test-mbrtowc-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
diff --git a/gnulib-tests/test-mbrtowc-w32-3.sh b/gnulib-tests/test-mbrtowc-w32-3.sh
index 782c2d0..c49f4bd 100755
--- a/gnulib-tests/test-mbrtowc-w32-3.sh
+++ b/gnulib-tests/test-mbrtowc-w32-3.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP932 locale.
-./test-mbrtowc-w32${EXEEXT} Japanese_Japan 932
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Japanese_Japan 932
diff --git a/gnulib-tests/test-mbrtowc-w32-4.sh b/gnulib-tests/test-mbrtowc-w32-4.sh
index 0630f30..3e78615 100755
--- a/gnulib-tests/test-mbrtowc-w32-4.sh
+++ b/gnulib-tests/test-mbrtowc-w32-4.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP950 locale.
-./test-mbrtowc-w32${EXEEXT} Chinese_Taiwan 950
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_Taiwan 950
diff --git a/gnulib-tests/test-mbrtowc-w32-5.sh b/gnulib-tests/test-mbrtowc-w32-5.sh
index 7d7faa9..c6ba222 100755
--- a/gnulib-tests/test-mbrtowc-w32-5.sh
+++ b/gnulib-tests/test-mbrtowc-w32-5.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP936 locale.
-./test-mbrtowc-w32${EXEEXT} Chinese_China 936
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_China 936
diff --git a/gnulib-tests/test-mbrtowc-w32-6.sh b/gnulib-tests/test-mbrtowc-w32-6.sh
new file mode 100755
index 0000000..c2e8dfe
--- /dev/null
+++ b/gnulib-tests/test-mbrtowc-w32-6.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} Chinese_China 54936
diff --git a/gnulib-tests/test-mbrtowc-w32-7.sh b/gnulib-tests/test-mbrtowc-w32-7.sh
new file mode 100755
index 0000000..2c5d555
--- /dev/null
+++ b/gnulib-tests/test-mbrtowc-w32-7.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test some UTF-8 locales.
+${CHECKER} ./test-mbrtowc-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
diff --git a/gnulib-tests/test-mbrtowc-w32.c b/gnulib-tests/test-mbrtowc-w32.c
index ba4d755..17908ed 100644
--- a/gnulib-tests/test-mbrtowc-w32.c
+++ b/gnulib-tests/test-mbrtowc-w32.c
@@ -1,5 +1,5 @@
/* Test of conversion of multibyte character to wide character.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This 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 @@
#include <stdlib.h>
#include <string.h>
+#include "localcharset.h"
#include "macros.h"
#if defined _WIN32 && !defined __CYGWIN__
@@ -476,6 +477,8 @@ test_one_locale (const char *name, int codepage)
case 54936:
/* Locale encoding is CP54936 = GB18030. */
+ if (strcmp (locale_charset (), "GB18030") != 0)
+ return 77;
{
char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
memset (&state, '\0', sizeof (mbstate_t));
@@ -523,7 +526,7 @@ test_one_locale (const char *name, int codepage)
ASSERT (ret == 1);
ASSERT (wc == 'e');
ASSERT (mbsinit (&state));
- input[5] = '\0';
+ input[7] = '\0';
wc = (wchar_t) 0xBADFACE;
ret = mbrtowc (&wc, input + 8, 1, &state);
@@ -572,6 +575,8 @@ test_one_locale (const char *name, int codepage)
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));
diff --git a/gnulib-tests/test-mbrtowc.c b/gnulib-tests/test-mbrtowc.c
index 44da295..09fbda7 100644
--- a/gnulib-tests/test-mbrtowc.c
+++ b/gnulib-tests/test-mbrtowc.c
@@ -1,5 +1,5 @@
/* Test of conversion of multibyte character to wide character.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -111,7 +111,7 @@ main (int argc, char *argv[])
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) == WEOF ? c : btowc (c)));
+ ASSERT (wc == (btowc (c) == 0xDF00 + c ? btowc (c) : c));
ASSERT (mbsinit (&state));
ret = mbrtowc (NULL, buf, 1, &state);
ASSERT (ret == 1);
@@ -338,7 +338,7 @@ main (int argc, char *argv[])
ASSERT (ret == 1);
ASSERT (wc == 'e');
ASSERT (mbsinit (&state));
- input[5] = '\0';
+ input[7] = '\0';
wc = (wchar_t) 0xBADFACE;
ret = mbrtowc (&wc, input + 8, 1, &state);
diff --git a/gnulib-tests/test-mbrtowc1.sh b/gnulib-tests/test-mbrtowc1.sh
index 3becba3..00b108b 100755
--- a/gnulib-tests/test-mbrtowc1.sh
+++ b/gnulib-tests/test-mbrtowc1.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR = none; then
fi
LC_ALL=$LOCALE_FR \
-./test-mbrtowc${EXEEXT} 1
+${CHECKER} ./test-mbrtowc${EXEEXT} 1
diff --git a/gnulib-tests/test-mbrtowc2.sh b/gnulib-tests/test-mbrtowc2.sh
index 0405aba..5036930 100755
--- a/gnulib-tests/test-mbrtowc2.sh
+++ b/gnulib-tests/test-mbrtowc2.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR_UTF8 = none; then
fi
LC_ALL=$LOCALE_FR_UTF8 \
-./test-mbrtowc${EXEEXT} 2
+${CHECKER} ./test-mbrtowc${EXEEXT} 2
diff --git a/gnulib-tests/test-mbrtowc3.sh b/gnulib-tests/test-mbrtowc3.sh
index 63a89a2..2773fa7 100755
--- a/gnulib-tests/test-mbrtowc3.sh
+++ b/gnulib-tests/test-mbrtowc3.sh
@@ -12,4 +12,4 @@ if test $LOCALE_JA = none; then
fi
LC_ALL=$LOCALE_JA \
-./test-mbrtowc${EXEEXT} 3
+${CHECKER} ./test-mbrtowc${EXEEXT} 3
diff --git a/gnulib-tests/test-mbrtowc4.sh b/gnulib-tests/test-mbrtowc4.sh
index b299a2c..92f641c 100755
--- a/gnulib-tests/test-mbrtowc4.sh
+++ b/gnulib-tests/test-mbrtowc4.sh
@@ -12,4 +12,4 @@ if test $LOCALE_ZH_CN = none; then
fi
LC_ALL=$LOCALE_ZH_CN \
-./test-mbrtowc${EXEEXT} 4
+${CHECKER} ./test-mbrtowc${EXEEXT} 4
diff --git a/gnulib-tests/test-mbrtowc5.sh b/gnulib-tests/test-mbrtowc5.sh
index c10b228..490496d 100755
--- a/gnulib-tests/test-mbrtowc5.sh
+++ b/gnulib-tests/test-mbrtowc5.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Test whether the POSIX locale has encoding errors.
LC_ALL=C \
-./test-mbrtowc${EXEEXT} 5 || exit
+${CHECKER} ./test-mbrtowc${EXEEXT} 5 || exit
LC_ALL=POSIX \
-./test-mbrtowc${EXEEXT} 5
+${CHECKER} ./test-mbrtowc${EXEEXT} 5
diff --git a/gnulib-tests/test-mbsinit.c b/gnulib-tests/test-mbsinit.c
index 3b2d418..44beca3 100644
--- a/gnulib-tests/test-mbsinit.c
+++ b/gnulib-tests/test-mbsinit.c
@@ -1,5 +1,5 @@
/* Test of test for initial conversion state.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-mbsinit.sh b/gnulib-tests/test-mbsinit.sh
index bbda48d..7308714 100755
--- a/gnulib-tests/test-mbsinit.sh
+++ b/gnulib-tests/test-mbsinit.sh
@@ -12,4 +12,4 @@ if test $LOCALE_FR_UTF8 = none; then
fi
LC_ALL=$LOCALE_FR_UTF8 \
-./test-mbsinit${EXEEXT}
+${CHECKER} ./test-mbsinit${EXEEXT}
diff --git a/gnulib-tests/test-memchr.c b/gnulib-tests/test-memchr.c
index f191587..ab8d2c0 100644
--- a/gnulib-tests/test-memchr.c
+++ b/gnulib-tests/test-memchr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ * Copyright (C) 2008-2020 Free Software Foundation, Inc.
* Written by Eric Blake and Bruno Haible
*
* This program is free software: you can redistribute it and/or modify
@@ -88,7 +88,7 @@ main (void)
/* Check that memchr() does not read past the first occurrence of the
byte being searched. See the Austin Group's clarification
- <http://www.opengroup.org/austin/docs/austin_454.txt>.
+ <https://www.opengroup.org/austin/docs/austin_454.txt>.
Test both '\0' and something else, since some implementations
special-case searching for NUL.
*/
diff --git a/gnulib-tests/test-memrchr.c b/gnulib-tests/test-memrchr.c
index 0a35812..001134b 100644
--- a/gnulib-tests/test-memrchr.c
+++ b/gnulib-tests/test-memrchr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ * Copyright (C) 2008-2020 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/gnulib-tests/test-mkdir.c b/gnulib-tests/test-mkdir.c
index 66a713f..9ce5817 100644
--- a/gnulib-tests/test-mkdir.c
+++ b/gnulib-tests/test-mkdir.c
@@ -1,5 +1,5 @@
/* Tests of mkdir.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-mkdir.h b/gnulib-tests/test-mkdir.h
index 9849300..7da2706 100644
--- a/gnulib-tests/test-mkdir.h
+++ b/gnulib-tests/test-mkdir.h
@@ -1,5 +1,5 @@
/* Test of mkdir() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-nanosleep.c b/gnulib-tests/test-nanosleep.c
index 65e261f..e82e45d 100644
--- a/gnulib-tests/test-nanosleep.c
+++ b/gnulib-tests/test-nanosleep.c
@@ -1,5 +1,5 @@
/* Test of nanosleep() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-netinet_in.c b/gnulib-tests/test-netinet_in.c
index 692878c..f170410 100644
--- a/gnulib-tests/test-netinet_in.c
+++ b/gnulib-tests/test-netinet_in.c
@@ -1,5 +1,5 @@
/* Test of <netinet/in.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-nl_langinfo-mt.c b/gnulib-tests/test-nl_langinfo-mt.c
new file mode 100644
index 0000000..de6cd99
--- /dev/null
+++ b/gnulib-tests/test-nl_langinfo-mt.c
@@ -0,0 +1,255 @@
+/* Multithread-safety test for nl_langinfo().
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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>
+
+#if USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS
+
+/* Specification. */
+#include <langinfo.h>
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "glthread/thread.h"
+
+
+/* Some common locale names. */
+
+#if defined _WIN32 && !defined __CYGWIN__
+# define ENGLISH "English_United States"
+# define FRENCH "French_France"
+# define GERMAN "German_Germany"
+# define ENCODING ".1252"
+#else
+# define ENGLISH "en_US"
+# define FRENCH "fr_FR"
+# define GERMAN "de_DE"
+# if defined __sgi
+# define ENCODING ".ISO8859-15"
+# elif defined __hpux
+# define ENCODING ".utf8"
+# else
+# define ENCODING ".UTF-8"
+# endif
+#endif
+
+static const char LOCALE1[] = ENGLISH ENCODING;
+static const char LOCALE2[] = FRENCH ENCODING;
+static const char LOCALE3[] = GERMAN ENCODING;
+
+static char *expected1;
+
+static void *
+thread1_func (void *arg)
+{
+ for (;;)
+ {
+ const char *value = nl_langinfo (CODESET);
+ if (strcmp (expected1, value) != 0)
+ {
+ fprintf (stderr, "thread1 disturbed by threadN!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static char *expected2;
+
+static void *
+thread2_func (void *arg)
+{
+ for (;;)
+ {
+ const char *value = nl_langinfo (PM_STR);
+ if (strcmp (expected2, value) != 0)
+ {
+ fprintf (stderr, "thread2 disturbed by threadN!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static char *expected3;
+
+static void *
+thread3_func (void *arg)
+{
+ for (;;)
+ {
+ const char *value = nl_langinfo (DAY_2);
+ if (strcmp (expected3, value) != 0)
+ {
+ fprintf (stderr, "thread3 disturbed by threadN!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static char *expected4;
+
+static void *
+thread4_func (void *arg)
+{
+ for (;;)
+ {
+ const char *value = nl_langinfo (ALTMON_2);
+ if (strcmp (expected4, value) != 0)
+ {
+ fprintf (stderr, "thread4 disturbed by threadN!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static char *expected5;
+
+static void *
+thread5_func (void *arg)
+{
+ for (;;)
+ {
+ const char *value = nl_langinfo (CRNCYSTR);
+ if (strcmp (expected5, value) != 0)
+ {
+ fprintf (stderr, "thread5 disturbed by threadN!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static char *expected6;
+
+static void *
+thread6_func (void *arg)
+{
+ for (;;)
+ {
+ const char *value = nl_langinfo (RADIXCHAR);
+ if (strcmp (expected6, value) != 0)
+ {
+ fprintf (stderr, "thread6 disturbed by threadN!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static void *
+threadN_func (void *arg)
+{
+ for (;;)
+ {
+ nl_langinfo (CODESET); /* LC_CTYPE */ /* locale charmap */
+ nl_langinfo (AM_STR); /* LC_TIME */ /* locale -k am_pm */
+ nl_langinfo (PM_STR); /* LC_TIME */ /* locale -k am_pm */
+ nl_langinfo (DAY_2); /* LC_TIME */ /* locale -k day */
+ nl_langinfo (DAY_5); /* LC_TIME */ /* locale -k day */
+ nl_langinfo (ALTMON_2); /* LC_TIME */ /* locale -k alt_mon */
+ nl_langinfo (ALTMON_9); /* LC_TIME */ /* locale -k alt_mon */
+ nl_langinfo (CRNCYSTR); /* LC_MONETARY */ /* locale -k currency_symbol */
+ nl_langinfo (RADIXCHAR); /* LC_NUMERIC */ /* locale -k decimal_point */
+ nl_langinfo (THOUSEP); /* LC_NUMERIC */ /* locale -k thousands_sep */
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+int
+main (int argc, char *argv[])
+{
+ if (setlocale (LC_ALL, LOCALE1) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE1 not recognized\n");
+ return 77;
+ }
+ if (setlocale (LC_MONETARY, LOCALE2) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE2 not recognized\n");
+ return 77;
+ }
+ if (setlocale (LC_NUMERIC, LOCALE3) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE3 not recognized\n");
+ return 77;
+ }
+
+ expected1 = strdup (nl_langinfo (CODESET));
+ expected2 = strdup (nl_langinfo (PM_STR));
+ expected3 = strdup (nl_langinfo (DAY_2));
+ expected4 = strdup (nl_langinfo (ALTMON_2));
+ expected5 = strdup (nl_langinfo (CRNCYSTR));
+ expected6 = strdup (nl_langinfo (RADIXCHAR));
+
+ /* Create the checker threads. */
+ gl_thread_create (thread1_func, NULL);
+ gl_thread_create (thread2_func, NULL);
+ gl_thread_create (thread3_func, NULL);
+ gl_thread_create (thread4_func, NULL);
+ gl_thread_create (thread5_func, NULL);
+ gl_thread_create (thread6_func, NULL);
+ /* Create the disturber thread. */
+ gl_thread_create (threadN_func, NULL);
+
+ /* Let them run for 2 seconds. */
+ {
+ struct timespec duration;
+ duration.tv_sec = (argc > 1 ? atoi (argv[1]) : 2);
+ duration.tv_nsec = 0;
+
+ nanosleep (&duration, NULL);
+ }
+
+ 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/gnulib-tests/test-nl_langinfo.c b/gnulib-tests/test-nl_langinfo.c
index a13fb71..e21d003 100644
--- a/gnulib-tests/test-nl_langinfo.c
+++ b/gnulib-tests/test-nl_langinfo.c
@@ -1,5 +1,5 @@
/* Test of nl_langinfo replacement.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-nl_langinfo.sh b/gnulib-tests/test-nl_langinfo.sh
index 3168f42..b1ce46c 100755
--- a/gnulib-tests/test-nl_langinfo.sh
+++ b/gnulib-tests/test-nl_langinfo.sh
@@ -1,17 +1,17 @@
#!/bin/sh
-LC_ALL=C ./test-nl_langinfo${EXEEXT} 0 || exit 1
+LC_ALL=C ${CHECKER} ./test-nl_langinfo${EXEEXT} 0 || exit 1
# Test whether a specific traditional locale is installed.
: ${LOCALE_FR=fr_FR}
if test $LOCALE_FR != none; then
- LC_ALL=$LOCALE_FR ./test-nl_langinfo${EXEEXT} 1 || exit 1
+ LC_ALL=$LOCALE_FR ${CHECKER} ./test-nl_langinfo${EXEEXT} 1 || 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 ./test-nl_langinfo${EXEEXT} 2 || exit 1
+ LC_ALL=$LOCALE_FR_UTF8 ${CHECKER} ./test-nl_langinfo${EXEEXT} 2 || exit 1
fi
exit 0
diff --git a/gnulib-tests/test-open.c b/gnulib-tests/test-open.c
index 125950e..30d9764 100644
--- a/gnulib-tests/test-open.c
+++ b/gnulib-tests/test-open.c
@@ -1,5 +1,5 @@
/* Test of opening a file descriptor.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-open.h b/gnulib-tests/test-open.h
index 8996c09..c57054f 100644
--- a/gnulib-tests/test-open.h
+++ b/gnulib-tests/test-open.h
@@ -1,5 +1,5 @@
/* Test of opening a file descriptor.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,11 @@ static ALWAYS_INLINE int
test_open (int (*func) (char const *, int, ...), bool print)
{
int fd;
+
/* Remove anything from prior partial run. */
unlink (BASE "file");
+ unlink (BASE "e.exe");
+ unlink (BASE "link");
/* Cannot create directory. */
errno = 0;
@@ -51,6 +54,11 @@ test_open (int (*func) (char const *, int, ...), bool print)
ASSERT (0 <= fd);
ASSERT (close (fd) == 0);
+ /* Create an executable regular file. */
+ fd = func (BASE "e.exe", O_CREAT | O_RDONLY, 0700);
+ ASSERT (0 <= fd);
+ ASSERT (close (fd) == 0);
+
/* Trailing slash handling. */
errno = 0;
ASSERT (func (BASE "file/", O_RDONLY) == -1);
@@ -98,6 +106,7 @@ test_open (int (*func) (char const *, int, ...), bool print)
/* Cleanup. */
ASSERT (unlink (BASE "file") == 0);
+ ASSERT (unlink (BASE "e.exe") == 0);
ASSERT (unlink (BASE "link") == 0);
return 0;
diff --git a/gnulib-tests/test-pathmax.c b/gnulib-tests/test-pathmax.c
index aa55be8..3c4bd56 100644
--- a/gnulib-tests/test-pathmax.c
+++ b/gnulib-tests/test-pathmax.c
@@ -1,5 +1,5 @@
/* Test of "pathmax.h".
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-perror.c b/gnulib-tests/test-perror.c
index eacadec..a6263f2 100644
--- a/gnulib-tests/test-perror.c
+++ b/gnulib-tests/test-perror.c
@@ -1,5 +1,5 @@
/* Test of perror() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-perror.sh b/gnulib-tests/test-perror.sh
index 40a3034..e776609 100755
--- a/gnulib-tests/test-perror.sh
+++ b/gnulib-tests/test-perror.sh
@@ -5,22 +5,22 @@
# Test NULL prefix. Result should not contain a number, except in lines that
# start with 'EDC' (IBM z/OS libc produces an error identifier before the
# error message).
-test-perror 2>&1 >/dev/null | LC_ALL=C tr -d '\r' > t-perror.tmp
+${CHECKER} test-perror 2>&1 >/dev/null | LC_ALL=C tr -d '\r' > t-perror.tmp
grep -v '^EDC' t-perror.tmp | grep '[0-9]' > /dev/null \
&& fail_ "result should not contain a number"
# Test empty prefix. Result should be the same.
-test-perror '' 2>&1 >/dev/null | LC_ALL=C tr -d '\r' > t-perror1.tmp
+${CHECKER} test-perror '' 2>&1 >/dev/null | LC_ALL=C tr -d '\r' > t-perror1.tmp
diff t-perror.tmp t-perror1.tmp \
|| fail_ "empty prefix should behave like NULL argument"
# Test non-empty prefix.
-test-perror foo 2>&1 >/dev/null | LC_ALL=C tr -d '\r' > t-perror3.tmp
+${CHECKER} test-perror foo 2>&1 >/dev/null | LC_ALL=C tr -d '\r' > t-perror3.tmp
sed -e 's/^/foo: /' < t-perror.tmp > t-perror2.tmp
diff t-perror2.tmp t-perror3.tmp || fail_ "prefix applied incorrectly"
# Test exit status.
-test-perror >out 2>/dev/null || fail_ "unexpected exit status"
+${CHECKER} test-perror >out 2>/dev/null || fail_ "unexpected exit status"
test -s out && fail_ "unexpected output"
Exit 0
diff --git a/gnulib-tests/test-perror2.c b/gnulib-tests/test-perror2.c
index 8e6adb4..1d14eda 100644
--- a/gnulib-tests/test-perror2.c
+++ b/gnulib-tests/test-perror2.c
@@ -1,5 +1,5 @@
/* Test of perror() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-pipe.c b/gnulib-tests/test-pipe.c
index 55f6208..36ff480 100644
--- a/gnulib-tests/test-pipe.c
+++ b/gnulib-tests/test-pipe.c
@@ -1,5 +1,5 @@
/* Test of pipe.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-pthread-thread.c b/gnulib-tests/test-pthread-thread.c
new file mode 100644
index 0000000..a274d78
--- /dev/null
+++ b/gnulib-tests/test-pthread-thread.c
@@ -0,0 +1,73 @@
+/* Test of pthread_create () function.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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>, 2011. */
+
+#include <config.h>
+
+#include <pthread.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "macros.h"
+
+static pthread_t main_thread_before;
+static pthread_t main_thread_after;
+static pthread_t worker_thread;
+
+#define MAGIC ((void *) 1266074729)
+static volatile int work_done;
+
+static void *
+worker_thread_func (void *arg)
+{
+ work_done = 1;
+ return MAGIC;
+}
+
+int
+main ()
+{
+ main_thread_before = pthread_self ();
+
+ if (pthread_create (&worker_thread, NULL, worker_thread_func, NULL) == 0)
+ {
+ void *ret;
+
+ /* Check that pthread_self () has the same value before than after the
+ first call to pthread_create (). */
+ main_thread_after = pthread_self ();
+ ASSERT (memcmp (&main_thread_before, &main_thread_after,
+ sizeof (pthread_t))
+ == 0);
+
+ ASSERT (pthread_join (worker_thread, &ret) == 0);
+
+ /* Check the return value of the thread. */
+ ASSERT (ret == MAGIC);
+
+ /* Check that worker_thread_func () has finished executing. */
+ ASSERT (work_done);
+
+ return 0;
+ }
+ else
+ {
+ fputs ("pthread_create failed\n", stderr);
+ return 1;
+ }
+}
diff --git a/gnulib-tests/test-pthread.c b/gnulib-tests/test-pthread.c
new file mode 100644
index 0000000..800ad04
--- /dev/null
+++ b/gnulib-tests/test-pthread.c
@@ -0,0 +1,90 @@
+/* Test of <pthread.h> substitute.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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 <pthread.h>
+
+#include "verify.h"
+
+/* Check that the types are all defined. */
+
+pthread_t t1;
+pthread_attr_t t2;
+
+pthread_once_t t3 = PTHREAD_ONCE_INIT;
+
+pthread_mutex_t t4 = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutexattr_t t5;
+
+pthread_rwlock_t t6 = PTHREAD_RWLOCK_INITIALIZER;
+pthread_rwlockattr_t t7;
+
+pthread_cond_t t8 = PTHREAD_COND_INITIALIZER;
+pthread_condattr_t t9;
+
+pthread_key_t t10;
+
+pthread_spinlock_t t11;
+
+#ifdef TODO /* Not implemented in gnulib yet */
+pthread_barrier_t t12;
+pthread_barrierattr_t t13;
+#endif
+
+/* Check that the various macros are defined. */
+
+/* Constants for pthread_attr_setdetachstate(). */
+int ds[] = { PTHREAD_CREATE_JOINABLE, PTHREAD_CREATE_DETACHED };
+
+/* Constants for pthread_exit(). */
+void *canceled = PTHREAD_CANCELED;
+
+/* Constants for pthread_mutexattr_settype(). */
+int mt[] = {
+ PTHREAD_MUTEX_DEFAULT,
+ PTHREAD_MUTEX_NORMAL,
+ PTHREAD_MUTEX_RECURSIVE,
+ PTHREAD_MUTEX_ERRORCHECK
+};
+
+#ifdef TODO /* Not implemented in gnulib yet */
+
+/* Constants for pthread_mutexattr_setrobust(). */
+int mr[] = { PTHREAD_MUTEX_ROBUST, PTHREAD_MUTEX_STALLED };
+
+/* Constants for pthread_barrierattr_setpshared(). */
+int bp[] = { PTHREAD_PROCESS_SHARED, PTHREAD_PROCESS_PRIVATE };
+
+/* Constants for pthread_barrier_wait(). */
+int bw[] = { PTHREAD_BARRIER_SERIAL_THREAD };
+
+/* Constants for pthread_setcancelstate(). */
+int cs[] = { PTHREAD_CANCEL_ENABLE, PTHREAD_CANCEL_DISABLE };
+
+/* Constants for pthread_setcanceltype(). */
+int ct[] = { PTHREAD_CANCEL_DEFERRED, PTHREAD_CANCEL_ASYNCHRONOUS };
+
+#endif
+
+
+int
+main (void)
+{
+ return 0;
+}
diff --git a/gnulib-tests/test-pthread_sigmask1.c b/gnulib-tests/test-pthread_sigmask1.c
new file mode 100644
index 0000000..c1df429
--- /dev/null
+++ b/gnulib-tests/test-pthread_sigmask1.c
@@ -0,0 +1,95 @@
+/* Test of pthread_sigmask in a single-threaded program.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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>, 2011. */
+
+#include <config.h>
+
+#include <signal.h>
+
+#include "signature.h"
+SIGNATURE_CHECK (pthread_sigmask, int, (int, const sigset_t *, sigset_t *));
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "macros.h"
+
+#if !(defined _WIN32 && !defined __CYGWIN__)
+
+static volatile int sigint_occurred;
+
+static void
+sigint_handler (int sig)
+{
+ sigint_occurred++;
+}
+
+int
+main (int argc, char *argv[])
+{
+ sigset_t set;
+ int pid = getpid ();
+ char command[80];
+
+ signal (SIGINT, sigint_handler);
+
+ sigemptyset (&set);
+ sigaddset (&set, SIGINT);
+
+ /* Check error handling. */
+ ASSERT (pthread_sigmask (1729, &set, NULL) == EINVAL);
+
+ /* Block SIGINT. */
+ 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);
+ ASSERT (system (command) == 0);
+
+ /* Wait. */
+ sleep (2);
+
+ /* The signal should not have arrived yet, because it is blocked. */
+ ASSERT (sigint_occurred == 0);
+
+ /* Unblock SIGINT. */
+ ASSERT (pthread_sigmask (SIG_UNBLOCK, &set, NULL) == 0);
+
+ /* The signal should have arrived now, because POSIX says
+ "If there are any pending unblocked signals after the call to
+ pthread_sigmask(), at least one of those signals shall be delivered
+ before the call to pthread_sigmask() returns." */
+ ASSERT (sigint_occurred == 1);
+
+ return 0;
+}
+
+#else
+
+/* On native Windows, getpid() values and the arguments that are passed to
+ the (Cygwin?) 'kill' program are not necessarily related. */
+
+int
+main ()
+{
+ fputs ("Skipping test: native Windows platform\n", stderr);
+ return 77;
+}
+
+#endif
diff --git a/gnulib-tests/test-pthread_sigmask2.c b/gnulib-tests/test-pthread_sigmask2.c
new file mode 100644
index 0000000..1877458
--- /dev/null
+++ b/gnulib-tests/test-pthread_sigmask2.c
@@ -0,0 +1,105 @@
+/* Test of pthread_sigmask in a multi-threaded program.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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>, 2011. */
+
+#include <config.h>
+
+#include <signal.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "macros.h"
+
+#if USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS
+
+static pthread_t main_thread;
+static pthread_t killer_thread;
+
+static void *
+killer_thread_func (void *arg)
+{
+ sleep (1);
+ pthread_kill (main_thread, SIGINT);
+ return NULL;
+}
+
+static volatile int sigint_occurred;
+
+static void
+sigint_handler (int sig)
+{
+ sigint_occurred++;
+}
+
+int
+main (int argc, char *argv[])
+{
+ sigset_t set;
+
+ signal (SIGINT, sigint_handler);
+
+ sigemptyset (&set);
+ sigaddset (&set, SIGINT);
+
+ /* Check error handling. */
+ /* This call returns 0 on NetBSD 8.0. */
+#if !defined __NetBSD__
+ ASSERT (pthread_sigmask (1729, &set, NULL) == EINVAL);
+#endif
+
+ /* Block SIGINT. */
+ ASSERT (pthread_sigmask (SIG_BLOCK, &set, NULL) == 0);
+
+ /* Request a SIGINT signal from another thread. */
+ main_thread = pthread_self ();
+ ASSERT (pthread_create (&killer_thread, NULL, killer_thread_func, NULL) == 0);
+
+ /* Wait. */
+ sleep (2);
+
+ /* The signal should not have arrived yet, because it is blocked. */
+ ASSERT (sigint_occurred == 0);
+
+ /* Unblock SIGINT. */
+ ASSERT (pthread_sigmask (SIG_UNBLOCK, &set, NULL) == 0);
+
+ /* The signal should have arrived now, because POSIX says
+ "If there are any pending unblocked signals after the call to
+ pthread_sigmask(), at least one of those signals shall be delivered
+ before the call to pthread_sigmask() returns." */
+ ASSERT (sigint_occurred == 1);
+
+ /* Clean up the thread. This avoid a "ThreadSanitizer: thread leak" warning
+ from "gcc -fsanitize=thread". */
+ ASSERT (pthread_join (killer_thread, NULL) == 0);
+
+ return 0;
+}
+
+#else
+
+int
+main ()
+{
+ fputs ("Skipping test: POSIX threads not enabled\n", stderr);
+ return 77;
+}
+
+#endif
diff --git a/gnulib-tests/test-quotearg-simple.c b/gnulib-tests/test-quotearg-simple.c
index b350141..e1c8ba8 100644
--- a/gnulib-tests/test-quotearg-simple.c
+++ b/gnulib-tests/test-quotearg-simple.c
@@ -1,5 +1,5 @@
/* Test of quotearg family of functions.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-quotearg.h b/gnulib-tests/test-quotearg.h
index 177d2bc..dd7529a 100644
--- a/gnulib-tests/test-quotearg.h
+++ b/gnulib-tests/test-quotearg.h
@@ -1,5 +1,5 @@
/* Test of quotearg family of functions.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-raise.c b/gnulib-tests/test-raise.c
index 1210ced..9135623 100644
--- a/gnulib-tests/test-raise.c
+++ b/gnulib-tests/test-raise.c
@@ -1,5 +1,5 @@
/* Test raising a signal.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-read-file.c b/gnulib-tests/test-read-file.c
index aa0cd60..930cf4a 100644
--- a/gnulib-tests/test-read-file.c
+++ b/gnulib-tests/test-read-file.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006-2007, 2010-2018 Free Software Foundation, Inc.
+ * Copyright (C) 2006-2007, 2010-2020 Free Software Foundation, Inc.
* Written by Simon Josefsson
*
* This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/test-readlink.c b/gnulib-tests/test-readlink.c
index 176b9be..c625e9b 100644
--- a/gnulib-tests/test-readlink.c
+++ b/gnulib-tests/test-readlink.c
@@ -1,5 +1,5 @@
/* Tests of readlink.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-readlink.h b/gnulib-tests/test-readlink.h
index 19f92c8..f2e7bd2 100644
--- a/gnulib-tests/test-readlink.h
+++ b/gnulib-tests/test-readlink.h
@@ -1,5 +1,5 @@
/* Tests of readlink.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-regex.c b/gnulib-tests/test-regex.c
index a0aa112..d3f429a 100644
--- a/gnulib-tests/test-regex.c
+++ b/gnulib-tests/test-regex.c
@@ -1,5 +1,5 @@
/* Test regular expressions
- Copyright 1996-2001, 2003-2018 Free Software Foundation, Inc.
+ Copyright 1996-2001, 2003-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-rename.c b/gnulib-tests/test-rename.c
index 7be4d79..633a70f 100644
--- a/gnulib-tests/test-rename.c
+++ b/gnulib-tests/test-rename.c
@@ -1,5 +1,5 @@
/* Test of rename() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-rename.h b/gnulib-tests/test-rename.h
index 0548c6c..844e107 100644
--- a/gnulib-tests/test-rename.h
+++ b/gnulib-tests/test-rename.h
@@ -1,5 +1,5 @@
/* Test of rename() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-rmdir.c b/gnulib-tests/test-rmdir.c
index 29c299d..0c787b9 100644
--- a/gnulib-tests/test-rmdir.c
+++ b/gnulib-tests/test-rmdir.c
@@ -1,5 +1,5 @@
/* Tests of rmdir.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-rmdir.h b/gnulib-tests/test-rmdir.h
index 3b200ee..c5bdef2 100644
--- a/gnulib-tests/test-rmdir.h
+++ b/gnulib-tests/test-rmdir.h
@@ -1,5 +1,5 @@
/* Tests of rmdir.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sameacls.c b/gnulib-tests/test-sameacls.c
index 51196e3..cdb10f4 100644
--- a/gnulib-tests/test-sameacls.c
+++ b/gnulib-tests/test-sameacls.c
@@ -1,5 +1,5 @@
/* Test whether two files have the same ACLs.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -84,6 +84,9 @@ main (int argc, char *argv[])
fflush (stderr);
abort ();
}
+
+ free (contents2);
+ free (contents1);
}
/* Compare the access permissions of the two files, including ACLs. */
@@ -218,6 +221,12 @@ main (int argc, char *argv[])
return 1;
}
}
+ acl_free (text2);
+ if (acl2 != (acl_t)NULL)
+ acl_free (acl2);
+ acl_free (text1);
+ if (acl1 != (acl_t)NULL)
+ acl_free (acl1);
}
#elif HAVE_FACL && defined GETACL /* Solaris, Cygwin, not HP-UX */
int count1;
@@ -287,6 +296,8 @@ main (int argc, char *argv[])
return 1;
}
}
+ free (entries2);
+ free (entries1);
}
# ifdef ACE_GETACL
count1 = acl (file1, ACE_GETACLCNT, 0, NULL);
@@ -366,6 +377,8 @@ main (int argc, char *argv[])
return 1;
}
}
+ free (entries2);
+ free (entries1);
}
# endif
#elif HAVE_GETACL /* HP-UX */
@@ -438,6 +451,8 @@ main (int argc, char *argv[])
return 1;
}
}
+ free (entries2);
+ free (entries1);
}
# if HAVE_ACLV_H /* HP-UX >= 11.11 */
@@ -511,6 +526,8 @@ main (int argc, char *argv[])
return 1;
}
}
+ free (entries2);
+ free (entries1);
}
# endif
#elif HAVE_ACLX_GET /* AIX */
@@ -687,6 +704,8 @@ main (int argc, char *argv[])
return 1;
}
}
+ free (entries2);
+ free (entries1);
}
#endif
}
diff --git a/gnulib-tests/test-sched.c b/gnulib-tests/test-sched.c
new file mode 100644
index 0000000..7fa4b66
--- /dev/null
+++ b/gnulib-tests/test-sched.c
@@ -0,0 +1,41 @@
+/* Test of <sched.h> substitute.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
+
+ This 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 <sched.h>
+
+/* Check that 'struct sched_param' is defined. */
+static struct sched_param a;
+
+/* Check that the SCHED_* macros are defined and compile-time constants. */
+int b[] = { SCHED_FIFO, SCHED_RR, SCHED_OTHER };
+
+/* Check that the types are all defined. */
+pid_t t1;
+
+static int f1;
+
+int
+main ()
+{
+ /* Check fields of 'struct sched_param'. */
+ f1 = a.sched_priority;
+
+ return 0;
+}
diff --git a/gnulib-tests/test-select-fd.c b/gnulib-tests/test-select-fd.c
index 3c1cb98..02f10c4 100644
--- a/gnulib-tests/test-select-fd.c
+++ b/gnulib-tests/test-select-fd.c
@@ -1,5 +1,5 @@
/* Test of select() substitute, reading or writing from a given file descriptor.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-select-in.sh b/gnulib-tests/test-select-in.sh
index 44f5dbb..68176d3 100755
--- a/gnulib-tests/test-select-in.sh
+++ b/gnulib-tests/test-select-in.sh
@@ -12,25 +12,25 @@ tmpfiles="$tmpfiles t-select-in.tmp"
# Regular files.
rm -f t-select-in.tmp
-./test-select-fd${EXEEXT} r 0 t-select-in.tmp < ./test-select-fd${EXEEXT}
+${CHECKER} ./test-select-fd${EXEEXT} r 0 t-select-in.tmp < ./test-select-fd${EXEEXT}
test `cat t-select-in.tmp` = "1" || exit 1
# Pipes.
rm -f t-select-in.tmp
{ sleep 1; echo abc; } | \
- { ./test-select-fd${EXEEXT} r 0 t-select-in.tmp; cat > /dev/null; }
+ { ${CHECKER} ./test-select-fd${EXEEXT} r 0 t-select-in.tmp; cat > /dev/null; }
test `cat t-select-in.tmp` = "0" || exit 1
rm -f t-select-in.tmp
-echo abc | { sleep 1; ./test-select-fd${EXEEXT} r 0 t-select-in.tmp; }
+echo abc | { sleep 1; ${CHECKER} ./test-select-fd${EXEEXT} r 0 t-select-in.tmp; }
test `cat t-select-in.tmp` = "1" || exit 1
# Special files.
# This part of the test is known to fail on Solaris 2.6 and older.
rm -f t-select-in.tmp
-./test-select-fd${EXEEXT} r 0 t-select-in.tmp < /dev/null
+${CHECKER} ./test-select-fd${EXEEXT} r 0 t-select-in.tmp < /dev/null
test `cat t-select-in.tmp` = "1" || exit 1
rm -fr $tmpfiles
diff --git a/gnulib-tests/test-select-out.sh b/gnulib-tests/test-select-out.sh
index c5fd861..dbeace5 100755
--- a/gnulib-tests/test-select-out.sh
+++ b/gnulib-tests/test-select-out.sh
@@ -9,25 +9,25 @@ tmpfiles="$tmpfiles t-select-out.out t-select-out.tmp"
# Regular files.
rm -f t-select-out.tmp
-./test-select-fd${EXEEXT} w 1 t-select-out.tmp > t-select-out.out
+${CHECKER} ./test-select-fd${EXEEXT} w 1 t-select-out.tmp > t-select-out.out
test `cat t-select-out.tmp` = "1" || exit 1
# Pipes.
if false; then # This test fails on some platforms.
rm -f t-select-out.tmp
- ( { echo abc; ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | { sleep 1; cat; } ) > /dev/null
+ ( { echo abc; ${CHECKER} ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | { sleep 1; cat; } ) > /dev/null
test `cat t-select-out.tmp` = "0" || exit 1
fi
rm -f t-select-out.tmp
-( { sleep 1; echo abc; ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | cat) > /dev/null
+( { sleep 1; echo abc; ${CHECKER} ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | cat) > /dev/null
test `cat t-select-out.tmp` = "1" || exit 1
# Special files.
rm -f t-select-out.tmp
-./test-select-fd${EXEEXT} w 1 t-select-out.tmp > /dev/null
+${CHECKER} ./test-select-fd${EXEEXT} w 1 t-select-out.tmp > /dev/null
test `cat t-select-out.tmp` = "1" || exit 1
rm -fr $tmpfiles
diff --git a/gnulib-tests/test-select-stdin.c b/gnulib-tests/test-select-stdin.c
index f8d7617..aadba6e 100644
--- a/gnulib-tests/test-select-stdin.c
+++ b/gnulib-tests/test-select-stdin.c
@@ -1,5 +1,5 @@
/* Test of select() substitute, reading from stdin.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-select.c b/gnulib-tests/test-select.c
index 00e4fb6..55ad7bc 100644
--- a/gnulib-tests/test-select.c
+++ b/gnulib-tests/test-select.c
@@ -1,5 +1,5 @@
/* Test of select() substitute.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-select.h b/gnulib-tests/test-select.h
index b0f17f3..45d0325 100644
--- a/gnulib-tests/test-select.h
+++ b/gnulib-tests/test-select.h
@@ -1,5 +1,5 @@
/* Test of select() substitute.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-set-mode-acl-1.sh b/gnulib-tests/test-set-mode-acl-1.sh
index 68c247c..73a4010 100755
--- a/gnulib-tests/test-set-mode-acl-1.sh
+++ b/gnulib-tests/test-set-mode-acl-1.sh
@@ -3,11 +3,16 @@
# Test set-mode-acl on the file system of /var/tmp, which usually is a local
# file system.
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
if test -d /var/tmp; then
TMPDIR=/var/tmp
else
TMPDIR=/tmp
fi
+test -d $TMPDIR || Exit 77
export TMPDIR
-exec "${srcdir}/test-set-mode-acl.sh"
+$BOURNE_SHELL "${srcdir}/test-set-mode-acl.sh"
+
+Exit $?
diff --git a/gnulib-tests/test-set-mode-acl-2.sh b/gnulib-tests/test-set-mode-acl-2.sh
index d1377df..2f7c8c0 100755
--- a/gnulib-tests/test-set-mode-acl-2.sh
+++ b/gnulib-tests/test-set-mode-acl-2.sh
@@ -3,7 +3,11 @@
# Test set-mode-acl on the file system of the build directory, which may be
# a local file system or NFS mounted.
+. "${srcdir=.}/init.sh"; path_prepend_ .
+
TMPDIR=`pwd`
export TMPDIR
-exec "${srcdir}/test-set-mode-acl.sh"
+$BOURNE_SHELL "${srcdir}/test-set-mode-acl.sh"
+
+Exit $?
diff --git a/gnulib-tests/test-set-mode-acl.c b/gnulib-tests/test-set-mode-acl.c
index 13eb601..638eda7 100644
--- a/gnulib-tests/test-set-mode-acl.c
+++ b/gnulib-tests/test-set-mode-acl.c
@@ -1,5 +1,5 @@
/* Test of setting an ACL equivalent to a mode.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-set-mode-acl.sh b/gnulib-tests/test-set-mode-acl.sh
index f0b1641..fdcd64b 100755
--- a/gnulib-tests/test-set-mode-acl.sh
+++ b/gnulib-tests/test-set-mode-acl.sh
@@ -41,7 +41,12 @@ func_tmpdir ()
}
func_tmpdir
-builddir=`pwd`
+# builddir may already be set by the script that invokes this one.
+case "$builddir" in
+ '') builddir=`pwd` ;;
+ /* | ?:*) ;;
+ *) builddir=`pwd`/$builddir ;;
+esac
cd "$builddir" ||
{
echo "$0: cannot determine build directory (unreadable parent dir?)" >&2
@@ -155,14 +160,14 @@ cd "$builddir" ||
chmod 600 tmpfile1
# Try to set the ACL to only the given mode.
- "$builddir"/test-set-mode-acl${EXEEXT} tmpfile1 $mode
+ ${CHECKER} "$builddir"/test-set-mode-acl${EXEEXT} tmpfile1 $mode
# Verify that tmpfile1 has no ACL and has the desired mode.
modestring=`ls -l tmpfile1 | dd ibs=1 count=10 2>/dev/null`
if test "x$modestring" != "x$modestring0"; then
echo "mode = $mode: tmpfile1 has wrong mode: $modestring" 1>&2
exit 1
fi
- if test `"$builddir"/test-file-has-acl${EXEEXT} tmpfile1` != no; then
+ if test `${CHECKER} "$builddir"/test-file-has-acl${EXEEXT} tmpfile1` != no; then
echo "mode = $mode: tmpfile1 got an ACL" 1>&2
exit 1
fi
@@ -207,14 +212,14 @@ cd "$builddir" ||
esac
# Try to set the ACL to only the given mode.
- "$builddir"/test-set-mode-acl${EXEEXT} tmpfile2 $mode
+ ${CHECKER} "$builddir"/test-set-mode-acl${EXEEXT} tmpfile2 $mode
# Verify that tmpfile2 has no ACL and has the desired mode.
modestring=`ls -l tmpfile2 | dd ibs=1 count=10 2>/dev/null`
if test "x$modestring" != "x$modestring0"; then
echo "mode = $mode: tmpfile2 has wrong mode: $modestring" 1>&2
exit 1
fi
- if test `"$builddir"/test-file-has-acl${EXEEXT} tmpfile2` != no; then
+ if test `${CHECKER} "$builddir"/test-file-has-acl${EXEEXT} tmpfile2` != no; then
echo "mode = $mode: tmpfile2 still has an ACL" 1>&2
exit 1
fi
diff --git a/gnulib-tests/test-setenv.c b/gnulib-tests/test-setenv.c
index ded124d..2114d9e 100644
--- a/gnulib-tests/test-setenv.c
+++ b/gnulib-tests/test-setenv.c
@@ -1,5 +1,5 @@
/* Tests of setenv.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-setlocale1.c b/gnulib-tests/test-setlocale1.c
index a9bb3a0..1dd41e3 100644
--- a/gnulib-tests/test-setlocale1.c
+++ b/gnulib-tests/test-setlocale1.c
@@ -1,5 +1,5 @@
/* Test of setting the current locale.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-setlocale1.sh b/gnulib-tests/test-setlocale1.sh
index 59a0532..53ad09f 100755
--- a/gnulib-tests/test-setlocale1.sh
+++ b/gnulib-tests/test-setlocale1.sh
@@ -16,19 +16,19 @@ if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none \
fi
if test $LOCALE_FR != none; then
- LC_ALL=$LOCALE_FR ./test-setlocale1${EXEEXT} || exit 1
+ LC_ALL=$LOCALE_FR ${CHECKER} ./test-setlocale1${EXEEXT} || exit 1
fi
if test $LOCALE_FR_UTF8 != none; then
- LC_ALL=$LOCALE_FR_UTF8 ./test-setlocale1${EXEEXT} || exit 1
+ LC_ALL=$LOCALE_FR_UTF8 ${CHECKER} ./test-setlocale1${EXEEXT} || exit 1
fi
if test $LOCALE_JA != none; then
- LC_ALL=$LOCALE_JA ./test-setlocale1${EXEEXT} || exit 1
+ LC_ALL=$LOCALE_JA ${CHECKER} ./test-setlocale1${EXEEXT} || exit 1
fi
if test $LOCALE_ZH_CN != none; then
- LC_ALL=$LOCALE_ZH_CN ./test-setlocale1${EXEEXT} || exit 1
+ LC_ALL=$LOCALE_ZH_CN ${CHECKER} ./test-setlocale1${EXEEXT} || exit 1
fi
exit 0
diff --git a/gnulib-tests/test-setlocale2.c b/gnulib-tests/test-setlocale2.c
index 780e1ea..d634689 100644
--- a/gnulib-tests/test-setlocale2.c
+++ b/gnulib-tests/test-setlocale2.c
@@ -1,5 +1,5 @@
/* Test of setting the current locale.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-setlocale2.sh b/gnulib-tests/test-setlocale2.sh
index f772cb0..79ea32f 100755
--- a/gnulib-tests/test-setlocale2.sh
+++ b/gnulib-tests/test-setlocale2.sh
@@ -2,7 +2,7 @@
# Test locale names with likely unsupported encoding in Unix syntax.
for name in ar_SA.ISO-8859-1 fr_FR.CP1251 zh_TW.GB18030 zh_CN.BIG5; do
- env LC_ALL=$name ./test-setlocale2${EXEEXT} 1 || exit 1
+ env LC_ALL=$name ${CHECKER} ./test-setlocale2${EXEEXT} 1 || exit 1
done
# Test locale names with likely unsupported encoding in native Windows syntax.
@@ -11,7 +11,7 @@ for name in "Arabic_Saudi Arabia.1252" "Arabic_Saudi Arabia.65001" \
Chinese_Taiwan.65001 Chinese_China.54936 Chinese_China.65001; do
# Here we use 'env' to set the LC_ALL environment variable, because on
# Solaris 11.0, the /bin/sh refuses to do it for Turkish_Turkey.65001.
- env LC_ALL="$name" ./test-setlocale2${EXEEXT} 1 || exit 1
+ env LC_ALL="$name" ${CHECKER} ./test-setlocale2${EXEEXT} 1 || exit 1
done
exit 0
diff --git a/gnulib-tests/test-setlocale_null-mt-all.c b/gnulib-tests/test-setlocale_null-mt-all.c
new file mode 100644
index 0000000..19bdb55
--- /dev/null
+++ b/gnulib-tests/test-setlocale_null-mt-all.c
@@ -0,0 +1,169 @@
+/* Multithread-safety test for setlocale_null_r (LC_ALL, ...).
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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>
+
+#if USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS
+
+/* Specification. */
+#include <locale.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "glthread/thread.h"
+
+/* We want to use the system's setlocale() function here, not the gnulib
+ override. */
+#undef setlocale
+
+
+/* Some common locale names. */
+
+#if defined _WIN32 && !defined __CYGWIN__
+# define ENGLISH "English_United States"
+# define GERMAN "German_Germany"
+# define FRENCH "French_France"
+# define ENCODING ".1252"
+#else
+# define ENGLISH "en_US"
+# define GERMAN "de_DE"
+# define FRENCH "fr_FR"
+# if defined __sgi
+# define ENCODING ".ISO8859-15"
+# elif defined __hpux
+# define ENCODING ".utf8"
+# else
+# define ENCODING ".UTF-8"
+# endif
+#endif
+
+static const char LOCALE1[] = ENGLISH ENCODING;
+static const char LOCALE2[] = GERMAN ENCODING;
+static const char LOCALE3[] = FRENCH ENCODING;
+
+static char *expected;
+
+static void *
+thread1_func (void *arg)
+{
+ for (;;)
+ {
+ char buf[SETLOCALE_NULL_ALL_MAX];
+
+ if (setlocale_null_r (LC_ALL, buf, sizeof (buf)))
+ abort ();
+ if (strcmp (expected, buf) != 0)
+ {
+ fprintf (stderr, "thread1 disturbed by thread2!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static void *
+thread2_func (void *arg)
+{
+ for (;;)
+ {
+ char buf[SETLOCALE_NULL_ALL_MAX];
+
+ setlocale_null_r (LC_NUMERIC, buf, sizeof (buf));
+ setlocale_null_r (LC_ALL, buf, sizeof (buf));
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+int
+main (int argc, char *argv[])
+{
+ if (setlocale (LC_ALL, LOCALE1) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE1 not recognized\n");
+ return 77;
+ }
+ if (setlocale (LC_NUMERIC, LOCALE2) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE2 not recognized\n");
+ return 77;
+ }
+ if (setlocale (LC_TIME, LOCALE3) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE3 not recognized\n");
+ return 77;
+ }
+
+ expected = strdup (setlocale (LC_ALL, NULL));
+
+ /* Create the two threads. */
+ gl_thread_create (thread1_func, NULL);
+ gl_thread_create (thread2_func, NULL);
+
+ /* Let them run for 5 seconds. */
+ {
+ struct timespec duration;
+ duration.tv_sec = 5;
+ duration.tv_nsec = 0;
+
+ nanosleep (&duration, NULL);
+ }
+
+ return 0;
+}
+
+#else
+
+/* No multithreading available. */
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fputs ("Skipping test: multithreading not enabled\n", stderr);
+ return 77;
+}
+
+#endif
+
+/* Without locking, the results of this test would be:
+glibc OK
+musl libc crash < 10 sec
+macOS crash < 1 sec
+FreeBSD crash < 1 sec
+NetBSD crash < 2 sec
+OpenBSD crash < 1 sec
+AIX crash < 2 sec
+HP-UX OK
+IRIX OK
+Solaris 10 OK
+Solaris 11.0 OK
+Solaris 11.4 OK
+Solaris OpenIndiana OK
+Haiku crash < 1 sec
+Cygwin crash < 1 sec
+mingw OK
+MSVC OK (assuming compiler option /MD !)
+*/
diff --git a/gnulib-tests/test-setlocale_null-mt-one.c b/gnulib-tests/test-setlocale_null-mt-one.c
new file mode 100644
index 0000000..fd6083a
--- /dev/null
+++ b/gnulib-tests/test-setlocale_null-mt-one.c
@@ -0,0 +1,169 @@
+/* Multithread-safety test for setlocale_null_r (LC_xxx, ...).
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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>
+
+#if USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS
+
+/* Specification. */
+#include <locale.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "glthread/thread.h"
+
+/* We want to use the system's setlocale() function here, not the gnulib
+ override. */
+#undef setlocale
+
+
+/* Some common locale names. */
+
+#if defined _WIN32 && !defined __CYGWIN__
+# define ENGLISH "English_United States"
+# define GERMAN "German_Germany"
+# define FRENCH "French_France"
+# define ENCODING ".1252"
+#else
+# define ENGLISH "en_US"
+# define GERMAN "de_DE"
+# define FRENCH "fr_FR"
+# if defined __sgi
+# define ENCODING ".ISO8859-15"
+# elif defined __hpux
+# define ENCODING ".utf8"
+# else
+# define ENCODING ".UTF-8"
+# endif
+#endif
+
+static const char LOCALE1[] = ENGLISH ENCODING;
+static const char LOCALE2[] = GERMAN ENCODING;
+static const char LOCALE3[] = FRENCH ENCODING;
+
+static char *expected;
+
+static void *
+thread1_func (void *arg)
+{
+ for (;;)
+ {
+ char buf[SETLOCALE_NULL_MAX];
+
+ if (setlocale_null_r (LC_NUMERIC, buf, sizeof (buf)))
+ abort ();
+ if (strcmp (expected, buf) != 0)
+ {
+ fprintf (stderr, "thread1 disturbed by thread2!\n"); fflush (stderr);
+ abort ();
+ }
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+static void *
+thread2_func (void *arg)
+{
+ for (;;)
+ {
+ char buf[SETLOCALE_NULL_MAX];
+
+ setlocale_null_r (LC_NUMERIC, buf, sizeof (buf));
+ setlocale_null_r (LC_TIME, buf, sizeof (buf));
+ }
+
+ /*NOTREACHED*/
+ return NULL;
+}
+
+int
+main (int argc, char *argv[])
+{
+ if (setlocale (LC_ALL, LOCALE1) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE1 not recognized\n");
+ return 77;
+ }
+ if (setlocale (LC_NUMERIC, LOCALE2) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE2 not recognized\n");
+ return 77;
+ }
+ if (setlocale (LC_TIME, LOCALE3) == NULL)
+ {
+ fprintf (stderr, "Skipping test: LOCALE3 not recognized\n");
+ return 77;
+ }
+
+ expected = strdup (setlocale (LC_NUMERIC, NULL));
+
+ /* Create the two threads. */
+ gl_thread_create (thread1_func, NULL);
+ gl_thread_create (thread2_func, NULL);
+
+ /* Let them run for 2 seconds. */
+ {
+ struct timespec duration;
+ duration.tv_sec = 2;
+ duration.tv_nsec = 0;
+
+ nanosleep (&duration, NULL);
+ }
+
+ return 0;
+}
+
+#else
+
+/* No multithreading available. */
+
+#include <stdio.h>
+
+int
+main ()
+{
+ fputs ("Skipping test: multithreading not enabled\n", stderr);
+ return 77;
+}
+
+#endif
+
+/* Without locking, the results of this test would be:
+glibc OK
+musl libc OK
+macOS OK
+FreeBSD OK
+NetBSD OK
+OpenBSD crash < 1 sec
+AIX crash < 2 sec
+HP-UX OK
+IRIX OK
+Solaris 10 OK
+Solaris 11.0 OK
+Solaris 11.4 OK
+Solaris OpenIndiana OK
+Haiku OK
+Cygwin OK
+mingw OK
+MSVC OK (assuming compiler option /MD !)
+*/
diff --git a/gnulib-tests/test-setlocale_null.c b/gnulib-tests/test-setlocale_null.c
new file mode 100644
index 0000000..5a9329e
--- /dev/null
+++ b/gnulib-tests/test-setlocale_null.c
@@ -0,0 +1,32 @@
+/* Test of setlocale_null_r function.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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 <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() can be used with $(LIB_SETLOCALE_NULL). */
+ return setlocale_null_r (LC_ALL, buf, sizeof (buf)) != 0;
+}
diff --git a/gnulib-tests/test-setsockopt.c b/gnulib-tests/test-setsockopt.c
index 22a444f..d2456dd 100644
--- a/gnulib-tests/test-setsockopt.c
+++ b/gnulib-tests/test-setsockopt.c
@@ -1,5 +1,5 @@
/* Test setsockopt() function.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sigaction.c b/gnulib-tests/test-sigaction.c
index e0ef06c..e48ba2b 100644
--- a/gnulib-tests/test-sigaction.c
+++ b/gnulib-tests/test-sigaction.c
@@ -1,5 +1,5 @@
/* Test of sigaction() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-signal-h.c b/gnulib-tests/test-signal-h.c
index 0ee5146..a504f56 100644
--- a/gnulib-tests/test-signal-h.c
+++ b/gnulib-tests/test-signal-h.c
@@ -1,5 +1,5 @@
/* Test of <signal.h> substitute.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sigprocmask.c b/gnulib-tests/test-sigprocmask.c
index 7b09bb1..df3602e 100644
--- a/gnulib-tests/test-sigprocmask.c
+++ b/gnulib-tests/test-sigprocmask.c
@@ -1,5 +1,5 @@
/* Test of sigprocmask.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sleep.c b/gnulib-tests/test-sleep.c
index 2f0a995..cb659ba 100644
--- a/gnulib-tests/test-sleep.c
+++ b/gnulib-tests/test-sleep.c
@@ -1,5 +1,5 @@
/* Test of sleep() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sockets.c b/gnulib-tests/test-sockets.c
index 4ff8357..cd35952 100644
--- a/gnulib-tests/test-sockets.c
+++ b/gnulib-tests/test-sockets.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ * Copyright (C) 2008-2020 Free Software Foundation, Inc.
* Written by Simon Josefsson.
*
* This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/test-stat-time.c b/gnulib-tests/test-stat-time.c
index 49d5497..86d4346 100644
--- a/gnulib-tests/test-stat-time.c
+++ b/gnulib-tests/test-stat-time.c
@@ -1,5 +1,5 @@
/* Test of <stat-time.h>.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-stat.c b/gnulib-tests/test-stat.c
index 19971e7..59cfca7 100644
--- a/gnulib-tests/test-stat.c
+++ b/gnulib-tests/test-stat.c
@@ -1,5 +1,5 @@
/* Tests of stat.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-stat.h b/gnulib-tests/test-stat.h
index 425246e..264d739 100644
--- a/gnulib-tests/test-stat.h
+++ b/gnulib-tests/test-stat.h
@@ -1,5 +1,5 @@
/* Tests of stat.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,12 +32,18 @@ test_stat_func (int (*func) (char const *, struct stat *), bool print)
ASSERT (cwd);
ASSERT (func (".", &st1) == 0);
ASSERT (func ("./", &st2) == 0);
+#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
ASSERT (SAME_INODE (st1, st2));
+#endif
ASSERT (func (cwd, &st2) == 0);
+#if !(defined _WIN32 && !defined __CYGWIN__ && !_GL_WINDOWS_STAT_INODES)
ASSERT (SAME_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));
+#endif
errno = 0;
ASSERT (func ("", &st1) == -1);
diff --git a/gnulib-tests/test-stdalign.c b/gnulib-tests/test-stdalign.c
index bced3f6..65e5c6a 100644
--- a/gnulib-tests/test-stdalign.c
+++ b/gnulib-tests/test-stdalign.c
@@ -1,5 +1,5 @@
/* Test of <stdalign.h>.
- Copyright 2009-2018 Free Software Foundation, Inc.
+ Copyright 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-stdbool.c b/gnulib-tests/test-stdbool.c
index 6b775bf..b128b55 100644
--- a/gnulib-tests/test-stdbool.c
+++ b/gnulib-tests/test-stdbool.c
@@ -1,5 +1,5 @@
/* Test of <stdbool.h> substitute.
- Copyright (C) 2002-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-stddef.c b/gnulib-tests/test-stddef.c
index 311001a..636c075 100644
--- a/gnulib-tests/test-stddef.c
+++ b/gnulib-tests/test-stddef.c
@@ -1,5 +1,5 @@
/* Test of <stddef.h> substitute.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-stdint.c b/gnulib-tests/test-stdint.c
index 8a46557..6da84b2 100644
--- a/gnulib-tests/test-stdint.c
+++ b/gnulib-tests/test-stdint.c
@@ -1,5 +1,5 @@
/* Test of <stdint.h> substitute.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -217,12 +217,14 @@ err or;
/* 7.18.2.4. Limits of integer types capable of holding object pointers */
intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX };
+verify (sizeof (void *) <= sizeof (intptr_t));
verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN);
verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX);
verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0);
verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0);
uintptr_t h[2] = { 17, UINTPTR_MAX };
+verify (sizeof (void *) <= sizeof (uintptr_t));
verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX);
verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0);
diff --git a/gnulib-tests/test-stdio.c b/gnulib-tests/test-stdio.c
index c307d8c..55a34db 100644
--- a/gnulib-tests/test-stdio.c
+++ b/gnulib-tests/test-stdio.c
@@ -1,5 +1,5 @@
/* Test of <stdio.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-stdlib.c b/gnulib-tests/test-stdlib.c
index 3a5c608..1314d77 100644
--- a/gnulib-tests/test-stdlib.c
+++ b/gnulib-tests/test-stdlib.c
@@ -1,5 +1,5 @@
/* Test of <stdlib.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-strerror.c b/gnulib-tests/test-strerror.c
index cd0df39..16afe00 100644
--- a/gnulib-tests/test-strerror.c
+++ b/gnulib-tests/test-strerror.c
@@ -1,5 +1,5 @@
/* Test of strerror() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-strerror_r.c b/gnulib-tests/test-strerror_r.c
index da3679a..b11d6fd 100644
--- a/gnulib-tests/test-strerror_r.c
+++ b/gnulib-tests/test-strerror_r.c
@@ -1,5 +1,5 @@
/* Test of strerror_r() function.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-string.c b/gnulib-tests/test-string.c
index 75313b2..2151f7a 100644
--- a/gnulib-tests/test-string.c
+++ b/gnulib-tests/test-string.c
@@ -1,5 +1,5 @@
/* Test of <string.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-strverscmp.c b/gnulib-tests/test-strverscmp.c
index 5aeec59..22cca34 100644
--- a/gnulib-tests/test-strverscmp.c
+++ b/gnulib-tests/test-strverscmp.c
@@ -1,5 +1,5 @@
/* Test of strverscmp() function.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-symlink.c b/gnulib-tests/test-symlink.c
index d58f27e..76ac63f 100644
--- a/gnulib-tests/test-symlink.c
+++ b/gnulib-tests/test-symlink.c
@@ -1,5 +1,5 @@
/* Tests of symlink.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-symlink.h b/gnulib-tests/test-symlink.h
index ddc8994..da6b184 100644
--- a/gnulib-tests/test-symlink.h
+++ b/gnulib-tests/test-symlink.h
@@ -1,5 +1,5 @@
/* Tests of symlink.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -67,7 +67,8 @@ test_symlink (int (*func) (char const *, char const *), bool print)
ASSERT (errno == EEXIST);
errno = 0;
ASSERT (func ("nowhere", BASE "dir/") == -1);
- ASSERT (errno == EEXIST || errno == EINVAL);
+ ASSERT (errno == EEXIST || errno == EINVAL
+ || errno == ENOENT /* Lustre FS on Linux */);
ASSERT (close (creat (BASE "file", 0600)) == 0);
errno = 0;
ASSERT (func ("nowhere", BASE "file") == -1);
diff --git a/gnulib-tests/test-sys_ioctl.c b/gnulib-tests/test-sys_ioctl.c
index 7643bed..3aeb375 100644
--- a/gnulib-tests/test-sys_ioctl.c
+++ b/gnulib-tests/test-sys_ioctl.c
@@ -1,5 +1,5 @@
/* Test of <sys/ioctl.h> substitute.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_select.c b/gnulib-tests/test-sys_select.c
index d9ca02d..01eced5 100644
--- a/gnulib-tests/test-sys_select.c
+++ b/gnulib-tests/test-sys_select.c
@@ -1,5 +1,5 @@
/* Test of <sys/select.h> substitute.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_socket.c b/gnulib-tests/test-sys_socket.c
index 1335823..82c1419 100644
--- a/gnulib-tests/test-sys_socket.c
+++ b/gnulib-tests/test-sys_socket.c
@@ -1,5 +1,5 @@
/* Test of <sys/socket.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_stat.c b/gnulib-tests/test-sys_stat.c
index 3c68c3c..a75f5f6 100644
--- a/gnulib-tests/test-sys_stat.c
+++ b/gnulib-tests/test-sys_stat.c
@@ -1,5 +1,5 @@
/* Test of <sys/stat.h> substitute.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_time.c b/gnulib-tests/test-sys_time.c
index 6a35e0f..db9909b 100644
--- a/gnulib-tests/test-sys_time.c
+++ b/gnulib-tests/test-sys_time.c
@@ -1,5 +1,5 @@
/* Test of <sys/time.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_types.c b/gnulib-tests/test-sys_types.c
index a44164d..65d49dc 100644
--- a/gnulib-tests/test-sys_types.c
+++ b/gnulib-tests/test-sys_types.c
@@ -1,5 +1,5 @@
/* Test of <sys/types.h> substitute.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_uio.c b/gnulib-tests/test-sys_uio.c
index 0b9347c..fc62cf3 100644
--- a/gnulib-tests/test-sys_uio.c
+++ b/gnulib-tests/test-sys_uio.c
@@ -1,5 +1,5 @@
/* Test of <sys/uio.h> substitute.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-sys_wait.h b/gnulib-tests/test-sys_wait.h
index 699f2fb..20c4f31 100644
--- a/gnulib-tests/test-sys_wait.h
+++ b/gnulib-tests/test-sys_wait.h
@@ -1,5 +1,5 @@
/* Test of macros shared between <sys/wait.h> and <stdlib.h>.
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-thread_create.c b/gnulib-tests/test-thread_create.c
new file mode 100644
index 0000000..320d64a
--- /dev/null
+++ b/gnulib-tests/test-thread_create.c
@@ -0,0 +1,78 @@
+/* Test of gl_thread_create () macro.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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>, 2011. */
+
+#include <config.h>
+
+#include "glthread/thread.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include "macros.h"
+
+static gl_thread_t main_thread_before;
+static gl_thread_t main_thread_after;
+static gl_thread_t worker_thread;
+
+static int dummy;
+static volatile int work_done;
+
+static void *
+worker_thread_func (void *arg)
+{
+ work_done = 1;
+ return &dummy;
+}
+
+int
+main ()
+{
+ main_thread_before = gl_thread_self ();
+
+ if (glthread_create (&worker_thread, worker_thread_func, NULL) == 0)
+ {
+ void *ret;
+
+ /* Check that gl_thread_self () has the same value before than after the
+ first call to gl_thread_create (). */
+ main_thread_after = gl_thread_self ();
+ ASSERT (memcmp (&main_thread_before, &main_thread_after,
+ sizeof (gl_thread_t))
+ == 0);
+
+ gl_thread_join (worker_thread, &ret);
+
+ /* Check the return value of the thread. */
+ ASSERT (ret == &dummy);
+
+ /* Check that worker_thread_func () has finished executing. */
+ ASSERT (work_done);
+
+ return 0;
+ }
+ else
+ {
+#if USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS
+ fputs ("glthread_create failed\n", stderr);
+ return 1;
+#else
+ fputs ("Skipping test: multithreading not enabled\n", stderr);
+ return 77;
+#endif
+ }
+}
diff --git a/gnulib-tests/test-thread_self.c b/gnulib-tests/test-thread_self.c
new file mode 100644
index 0000000..f0c302b
--- /dev/null
+++ b/gnulib-tests/test-thread_self.c
@@ -0,0 +1,39 @@
+/* Test of gl_thread_self () macro.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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>, 2011. */
+
+#include <config.h>
+
+#include "glthread/thread.h"
+
+gl_thread_t main_thread;
+
+int
+main ()
+{
+ /* Check that gl_thread_self () can be used with just $(LIBTHREAD), not
+ $(LIBMULTITHREAD), i.e. in libraries that are multithread-safe but don't
+ create threads themselves. */
+ /* This is not the case on AIX with --enable-threads=isoc+posix, because in
+ this case, $(LIBTHREAD) is empty whereas $(LIBMULTITHREAD) is '-lpthread'.
+ */
+#if !defined _AIX
+ main_thread = gl_thread_self ();
+#endif
+
+ return 0;
+}
diff --git a/gnulib-tests/test-time.c b/gnulib-tests/test-time.c
index e016397..1587c28 100644
--- a/gnulib-tests/test-time.c
+++ b/gnulib-tests/test-time.c
@@ -1,5 +1,5 @@
/* Test of <time.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-unistd.c b/gnulib-tests/test-unistd.c
index 2219456..5ba7d5b 100644
--- a/gnulib-tests/test-unistd.c
+++ b/gnulib-tests/test-unistd.c
@@ -1,5 +1,5 @@
/* Test of <unistd.h> substitute.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-unsetenv.c b/gnulib-tests/test-unsetenv.c
index a5dd594..f912e79 100644
--- a/gnulib-tests/test-unsetenv.c
+++ b/gnulib-tests/test-unsetenv.c
@@ -1,5 +1,5 @@
/* Tests of unsetenv.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-update-copyright.sh b/gnulib-tests/test-update-copyright.sh
index d1d18c1..adba779 100755
--- a/gnulib-tests/test-update-copyright.sh
+++ b/gnulib-tests/test-update-copyright.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Test suite for update-copyright.
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
@@ -37,9 +37,23 @@ trap 'rm -f $TMP_BASE*' 0 1 2 3 15
TMP=$TMP_BASE
s=$TMP-script
cat <<\EOF > $s
-eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" "$@"'
- & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
- if 0;
+#!/bin/sh
+#! -*-perl-*-
+# This is a prologue that allows to run a perl script as an executable
+# on systems that are compliant to a POSIX version before POSIX:2017.
+# On such systems, the usual invocation of an executable through execlp()
+# or execvp() fails with ENOEXEC if it is a script that does not start
+# with a #! line. The script interpreter mentioned in the #! line has
+# to be /bin/sh, because on GuixSD systems that is the only program that
+# has a fixed file name. The second line is essential for perl and is
+# also useful for editing this file in Emacs. The next two lines below
+# are valid code in both sh and perl. When executed by sh, they re-execute
+# the script through the perl program found in $PATH. The '-x' option
+# is essential as well; without it, perl would re-execute the script
+# through /bin/sh. When executed by perl, the next two lines are a no-op.
+eval 'exec perl -wSx -pi "$0" "$@"'
+ if 0;
+
s/a/b/
EOF
chmod a+x $s
diff --git a/gnulib-tests/test-vc-list-files-cvs.sh b/gnulib-tests/test-vc-list-files-cvs.sh
index 5cd37f7..964d1c4 100755
--- a/gnulib-tests/test-vc-list-files-cvs.sh
+++ b/gnulib-tests/test-vc-list-files-cvs.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Unit tests for vc-list-files
-# Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# Copyright (C) 2008-2020 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
@@ -17,7 +17,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>. */
: ${srcdir=.}
-. "$srcdir/init.sh"; path_prepend_ "$abs_aux_dir" .
+. "$srcdir/init.sh"; path_prepend_ .
tmpdir=vc-cvs
repo=`pwd`/$tmpdir/repo
@@ -44,7 +44,7 @@ for i in with-cvsu without; do
cvs -Q -d "$repo" import -m imp m M M0 &&
cvs -Q -d "$repo" co m && cd m &&
printf '%s\n' b c d/a > expected &&
- vc-list-files | sort > actual &&
+ $BOURNE_SHELL "$abs_aux_dir/vc-list-files" | sort > actual &&
compare expected actual &&
ok=1
test $ok = 0 && fail=1
diff --git a/gnulib-tests/test-vc-list-files-git.sh b/gnulib-tests/test-vc-list-files-git.sh
index 2775fd8..ef537f8 100755
--- a/gnulib-tests/test-vc-list-files-git.sh
+++ b/gnulib-tests/test-vc-list-files-git.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Unit tests for vc-list-files
-# Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# Copyright (C) 2008-2020 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
@@ -17,7 +17,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>. */
: ${srcdir=.}
-. "$srcdir/init.sh"; path_prepend_ "$abs_aux_dir" .
+. "$srcdir/init.sh"; path_prepend_ .
tmpdir=vc-git-$$
GIT_DIR= GIT_WORK_TREE=; unset GIT_DIR GIT_WORK_TREE
@@ -35,7 +35,7 @@ mkdir $tmpdir && cd $tmpdir &&
git add . > /dev/null &&
git commit -q -a -m log &&
printf '%s\n' b c d/a > expected &&
- vc-list-files > actual &&
+ $BOURNE_SHELL "$abs_aux_dir/vc-list-files" > actual &&
compare expected actual &&
fail=0
diff --git a/gnulib-tests/test-verify-try.c b/gnulib-tests/test-verify-try.c
index 20ccffc..c44a065 100644
--- a/gnulib-tests/test-verify-try.c
+++ b/gnulib-tests/test-verify-try.c
@@ -1,6 +1,6 @@
/* Test the "verify" module.
- Copyright (C) 2017-2018 Free Software Foundation, Inc.
+ Copyright (C) 2017-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-verify.c b/gnulib-tests/test-verify.c
index af97076..498dd2f 100644
--- a/gnulib-tests/test-verify.c
+++ b/gnulib-tests/test-verify.c
@@ -1,6 +1,6 @@
/* Test the "verify" module.
- Copyright (C) 2005, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2009-2020 Free Software Foundation, Inc.
This 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,7 +39,7 @@ verify (1 == 1); verify (1 == 1); /* should be ok */
enum
{
- item = verify_true (1 == 1) * 0 + 17 /* should be ok */
+ item = verify_expr (1 == 1, 10 * 0 + 17) /* should be ok */
};
static int
diff --git a/gnulib-tests/test-version-etc.c b/gnulib-tests/test-version-etc.c
index 931aa08..5c66e85 100644
--- a/gnulib-tests/test-version-etc.c
+++ b/gnulib-tests/test-version-etc.c
@@ -1,5 +1,5 @@
/* Test suite for version-etc.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 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/gnulib-tests/test-version-etc.sh b/gnulib-tests/test-version-etc.sh
index b796f3e..6e9e6c4 100755
--- a/gnulib-tests/test-version-etc.sh
+++ b/gnulib-tests/test-version-etc.sh
@@ -1,6 +1,6 @@
#! /bin/sh
# Test suite for version-etc.
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
@@ -33,7 +33,7 @@ There is NO WARRANTY, to the extent permitted by law.
Written by Sergey Poznyakoff and Eric Blake.
EOT
-test-version-etc${EXEEXT} --version |
+${CHECKER} test-version-etc${EXEEXT} --version |
sed '1s/test-version-etc (.*) .*/test-version-etc (PROJECT) VERSION/
/^Packaged by/d
2,3 s/Copyright (C) [0-9]\{4,4\}/COPYRIGHT/' |
diff --git a/gnulib-tests/test-wchar.c b/gnulib-tests/test-wchar.c
index ac1b508..7069b60 100644
--- a/gnulib-tests/test-wchar.c
+++ b/gnulib-tests/test-wchar.c
@@ -1,5 +1,5 @@
/* Test of <wchar.h> substitute.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-wcrtomb-w32-1.sh b/gnulib-tests/test-wcrtomb-w32-1.sh
index 50c82f5..b01c543 100755
--- a/gnulib-tests/test-wcrtomb-w32-1.sh
+++ b/gnulib-tests/test-wcrtomb-w32-1.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP1252 locale.
-./test-wcrtomb-w32${EXEEXT} French_France 1252
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} French_France 1252
diff --git a/gnulib-tests/test-wcrtomb-w32-2.sh b/gnulib-tests/test-wcrtomb-w32-2.sh
index 783c70c..5481634 100755
--- a/gnulib-tests/test-wcrtomb-w32-2.sh
+++ b/gnulib-tests/test-wcrtomb-w32-2.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP1256 locale.
-./test-wcrtomb-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
diff --git a/gnulib-tests/test-wcrtomb-w32-3.sh b/gnulib-tests/test-wcrtomb-w32-3.sh
index 619ea64..f35879d 100755
--- a/gnulib-tests/test-wcrtomb-w32-3.sh
+++ b/gnulib-tests/test-wcrtomb-w32-3.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP932 locale.
-./test-wcrtomb-w32${EXEEXT} Japanese_Japan 932
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Japanese_Japan 932
diff --git a/gnulib-tests/test-wcrtomb-w32-4.sh b/gnulib-tests/test-wcrtomb-w32-4.sh
index 67b6803..8eec6cb 100755
--- a/gnulib-tests/test-wcrtomb-w32-4.sh
+++ b/gnulib-tests/test-wcrtomb-w32-4.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP950 locale.
-./test-wcrtomb-w32${EXEEXT} Chinese_Taiwan 950
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_Taiwan 950
diff --git a/gnulib-tests/test-wcrtomb-w32-5.sh b/gnulib-tests/test-wcrtomb-w32-5.sh
index 9841fa9..fd47d6f 100755
--- a/gnulib-tests/test-wcrtomb-w32-5.sh
+++ b/gnulib-tests/test-wcrtomb-w32-5.sh
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP936 locale.
-./test-wcrtomb-w32${EXEEXT} Chinese_China 936
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_China 936
diff --git a/gnulib-tests/test-wcrtomb-w32-6.sh b/gnulib-tests/test-wcrtomb-w32-6.sh
new file mode 100755
index 0000000..802237d
--- /dev/null
+++ b/gnulib-tests/test-wcrtomb-w32-6.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} Chinese_China 54936
diff --git a/gnulib-tests/test-wcrtomb-w32-7.sh b/gnulib-tests/test-wcrtomb-w32-7.sh
new file mode 100755
index 0000000..fb04e58
--- /dev/null
+++ b/gnulib-tests/test-wcrtomb-w32-7.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test some UTF-8 locales.
+${CHECKER} ./test-wcrtomb-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
diff --git a/gnulib-tests/test-wcrtomb-w32.c b/gnulib-tests/test-wcrtomb-w32.c
index 19770d1..0f02ed2 100644
--- a/gnulib-tests/test-wcrtomb-w32.c
+++ b/gnulib-tests/test-wcrtomb-w32.c
@@ -1,5 +1,5 @@
/* Test of conversion of wide character to multibyte character.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This 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,7 @@
#include <stdlib.h>
#include <string.h>
+#include "localcharset.h"
#include "macros.h"
#if defined _WIN32 && !defined __CYGWIN__
@@ -257,6 +258,8 @@ test_one_locale (const char *name, int codepage)
case 54936:
/* Locale encoding is CP54936 = GB18030. */
+ if (strcmp (locale_charset (), "GB18030") != 0)
+ return 77;
{
/* Convert "B\250\271\201\060\211\070er": "Büßer" */
memset (buf, 'x', 8);
@@ -275,6 +278,8 @@ test_one_locale (const char *name, int codepage)
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);
diff --git a/gnulib-tests/test-wcrtomb.c b/gnulib-tests/test-wcrtomb.c
index 3c53fcb..3924d59 100644
--- a/gnulib-tests/test-wcrtomb.c
+++ b/gnulib-tests/test-wcrtomb.c
@@ -1,5 +1,5 @@
/* Test of conversion of wide character to multibyte character.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -156,6 +156,10 @@ 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/gnulib-tests/test-wcrtomb.sh b/gnulib-tests/test-wcrtomb.sh
index 3eda8f3..1a31b6e 100755
--- a/gnulib-tests/test-wcrtomb.sh
+++ b/gnulib-tests/test-wcrtomb.sh
@@ -4,7 +4,7 @@
: ${LOCALE_FR=fr_FR}
if test $LOCALE_FR != none; then
LC_ALL=$LOCALE_FR \
- ./test-wcrtomb${EXEEXT} 1 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 1 \
|| exit 1
fi
@@ -12,7 +12,7 @@ fi
: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
if test $LOCALE_FR_UTF8 != none; then
LC_ALL=$LOCALE_FR_UTF8 \
- ./test-wcrtomb${EXEEXT} 2 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 2 \
|| exit 1
fi
@@ -20,7 +20,7 @@ fi
: ${LOCALE_JA=ja_JP}
if test $LOCALE_JA != none; then
LC_ALL=$LOCALE_JA \
- ./test-wcrtomb${EXEEXT} 3 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 3 \
|| exit 1
fi
@@ -28,8 +28,12 @@ fi
: ${LOCALE_ZH_CN=zh_CN.GB18030}
if test $LOCALE_ZH_CN != none; then
LC_ALL=$LOCALE_ZH_CN \
- ./test-wcrtomb${EXEEXT} 4 \
+ ${CHECKER} ./test-wcrtomb${EXEEXT} 4 \
|| 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/gnulib-tests/test-wctype-h.c b/gnulib-tests/test-wctype-h.c
index 673cdc3..e1c4e23 100644
--- a/gnulib-tests/test-wctype-h.c
+++ b/gnulib-tests/test-wctype-h.c
@@ -1,5 +1,5 @@
/* Test of <wctype.h> substitute.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-xalloc-die.c b/gnulib-tests/test-xalloc-die.c
index 28c3bf7..7f0069e 100644
--- a/gnulib-tests/test-xalloc-die.c
+++ b/gnulib-tests/test-xalloc-die.c
@@ -1,5 +1,5 @@
/* Test of xalloc_die() function.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/test-xalloc-die.sh b/gnulib-tests/test-xalloc-die.sh
index 8596cd1..033084b 100755
--- a/gnulib-tests/test-xalloc-die.sh
+++ b/gnulib-tests/test-xalloc-die.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Test suite for xalloc_die.
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This file is part of the GNUlib Library.
#
# This program is free software: you can redistribute it and/or modify
@@ -18,7 +18,7 @@
. "${srcdir=.}/init.sh"; path_prepend_ .
-test-xalloc-die${EXEEXT} > out 2> err
+${CHECKER} test-xalloc-die${EXEEXT} > out 2> err
case $? in
1) ;;
*) Exit 1;;
diff --git a/gnulib-tests/unsetenv.c b/gnulib-tests/unsetenv.c
index 82c6c06..766df35 100644
--- a/gnulib-tests/unsetenv.c
+++ b/gnulib-tests/unsetenv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2002, 2005-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995-2002, 2005-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
diff --git a/gnulib-tests/unused-parameter.h b/gnulib-tests/unused-parameter.h
index 40a0ff8..f5cf21e 100644
--- a/gnulib-tests/unused-parameter.h
+++ b/gnulib-tests/unused-parameter.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that specific function parameters are not used.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program 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/gnulib-tests/w32sock.h b/gnulib-tests/w32sock.h
index 1e5e584..9c23c9d 100644
--- a/gnulib-tests/w32sock.h
+++ b/gnulib-tests/w32sock.h
@@ -1,6 +1,6 @@
/* w32sock.h --- internal auxiliary functions for Windows socket functions
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/warn-on-use.h b/gnulib-tests/warn-on-use.h
index 72d67cc..1be2cbb 100644
--- a/gnulib-tests/warn-on-use.h
+++ b/gnulib-tests/warn-on-use.h
@@ -1,5 +1,5 @@
/* A C macro for emitting warnings if a function is used.
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program 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/gnulib-tests/windows-thread.c b/gnulib-tests/windows-thread.c
new file mode 100644
index 0000000..1fc02a0
--- /dev/null
+++ b/gnulib-tests/windows-thread.c
@@ -0,0 +1,243 @@
+/* Creating and controlling threads (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#include <config.h>
+
+/* Specification. */
+#include "windows-thread.h"
+
+#include <errno.h>
+#include <process.h>
+#include <stdlib.h>
+
+#include "windows-once.h"
+#include "windows-tls.h"
+
+/* The Thread-Local Storage (TLS) key that allows to access each thread's
+ 'struct glwthread_thread_struct *' pointer. */
+static DWORD self_key = (DWORD)-1;
+
+/* Initializes self_key. This function must only be called once. */
+static void
+do_init_self_key (void)
+{
+ self_key = TlsAlloc ();
+ /* If this fails, we're hosed. */
+ if (self_key == (DWORD)-1)
+ abort ();
+}
+
+/* Initializes self_key. */
+static void
+init_self_key (void)
+{
+ static glwthread_once_t once = GLWTHREAD_ONCE_INIT;
+ glwthread_once (&once, do_init_self_key);
+}
+
+/* This structure contains information about a thread.
+ It is stored in TLS under key self_key. */
+struct glwthread_thread_struct
+{
+ /* Fields for managing the handle. */
+ HANDLE volatile handle;
+ CRITICAL_SECTION handle_lock;
+ /* Fields for managing the exit value. */
+ BOOL volatile detached;
+ void * volatile result;
+ /* Fields for managing the thread start. */
+ void * (*func) (void *);
+ void *arg;
+};
+
+/* Return a real HANDLE object for the current thread. */
+static HANDLE
+get_current_thread_handle (void)
+{
+ HANDLE this_handle;
+
+ /* GetCurrentThread() returns a pseudo-handle, i.e. only a symbolic
+ identifier, not a real handle. */
+ if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
+ GetCurrentProcess (), &this_handle,
+ 0, FALSE, DUPLICATE_SAME_ACCESS))
+ abort ();
+ return this_handle;
+}
+
+glwthread_thread_t
+glwthread_thread_self (void)
+{
+ glwthread_thread_t thread;
+
+ if (self_key == (DWORD)-1)
+ init_self_key ();
+ thread = TlsGetValue (self_key);
+ if (thread == NULL)
+ {
+ /* This happens only in threads that have not been created through
+ glthread_create(), such as the main thread. */
+ for (;;)
+ {
+ thread =
+ (struct glwthread_thread_struct *)
+ malloc (sizeof (struct glwthread_thread_struct));
+ if (thread != NULL)
+ break;
+ /* Memory allocation failed. There is not much we can do. Have to
+ busy-loop, waiting for the availability of memory. */
+ Sleep (1);
+ }
+
+ thread->handle = get_current_thread_handle ();
+ InitializeCriticalSection (&thread->handle_lock);
+ thread->detached = FALSE; /* This can lead to a memory leak. */
+ thread->result = NULL; /* just to be deterministic */
+ TlsSetValue (self_key, thread);
+ }
+ return thread;
+}
+
+/* The main function of a freshly creating thread. It's a wrapper around
+ the FUNC and ARG arguments passed to glthread_create_func. */
+static unsigned int WINAPI
+wrapper_func (void *varg)
+{
+ struct glwthread_thread_struct *thread =
+ (struct glwthread_thread_struct *) varg;
+
+ EnterCriticalSection (&thread->handle_lock);
+ /* Create a new handle for the thread only if the parent thread did not yet
+ fill in the handle. */
+ if (thread->handle == NULL)
+ thread->handle = get_current_thread_handle ();
+ LeaveCriticalSection (&thread->handle_lock);
+
+ if (self_key == (DWORD)-1)
+ init_self_key ();
+ TlsSetValue (self_key, thread);
+
+ /* Run the thread. Store the exit value if the thread was not terminated
+ otherwise. */
+ thread->result = thread->func (thread->arg);
+
+ /* Process the TLS destructors. */
+ glwthread_tls_process_destructors ();
+
+ if (thread->detached)
+ {
+ /* Clean up the thread, like thrd_join would do. */
+ DeleteCriticalSection (&thread->handle_lock);
+ CloseHandle (thread->handle);
+ free (thread);
+ }
+
+ return 0;
+}
+
+int
+glwthread_thread_create (glwthread_thread_t *threadp, unsigned int attr,
+ void * (*func) (void *), void *arg)
+{
+ struct glwthread_thread_struct *thread =
+ (struct glwthread_thread_struct *)
+ malloc (sizeof (struct glwthread_thread_struct));
+ if (thread == NULL)
+ return ENOMEM;
+ thread->handle = NULL;
+ InitializeCriticalSection (&thread->handle_lock);
+ thread->detached = (attr & GLWTHREAD_ATTR_DETACHED ? TRUE : FALSE);
+ thread->result = NULL; /* just to be deterministic */
+ thread->func = func;
+ thread->arg = arg;
+
+ {
+ unsigned int thread_id;
+ HANDLE thread_handle;
+
+ thread_handle = (HANDLE)
+ _beginthreadex (NULL, 100000, wrapper_func, thread, 0, &thread_id);
+ /* calls CreateThread with the same arguments */
+ if (thread_handle == NULL)
+ {
+ DeleteCriticalSection (&thread->handle_lock);
+ free (thread);
+ return EAGAIN;
+ }
+
+ EnterCriticalSection (&thread->handle_lock);
+ if (thread->handle == NULL)
+ thread->handle = thread_handle;
+ else
+ /* thread->handle was already set by the thread itself. */
+ CloseHandle (thread_handle);
+ LeaveCriticalSection (&thread->handle_lock);
+
+ *threadp = thread;
+ return 0;
+ }
+}
+
+int
+glwthread_thread_join (glwthread_thread_t thread, void **retvalp)
+{
+ if (thread == NULL)
+ return EINVAL;
+
+ if (thread == glwthread_thread_self ())
+ return EDEADLK;
+
+ if (thread->detached)
+ return EINVAL;
+
+ if (WaitForSingleObject (thread->handle, INFINITE) == WAIT_FAILED)
+ return EINVAL;
+
+ if (retvalp != NULL)
+ *retvalp = thread->result;
+
+ DeleteCriticalSection (&thread->handle_lock);
+ CloseHandle (thread->handle);
+ free (thread);
+
+ return 0;
+}
+
+int
+glwthread_thread_detach (glwthread_thread_t thread)
+{
+ if (thread == NULL)
+ return EINVAL;
+
+ if (thread->detached)
+ return EINVAL;
+
+ thread->detached = TRUE;
+ return 0;
+}
+
+int
+glwthread_thread_exit (void *retval)
+{
+ glwthread_thread_t thread = glwthread_thread_self ();
+ thread->result = retval;
+ glwthread_tls_process_destructors ();
+ _endthreadex (0); /* calls ExitThread (0) */
+ abort ();
+}
diff --git a/gnulib-tests/windows-thread.h b/gnulib-tests/windows-thread.h
new file mode 100644
index 0000000..0a9714c
--- /dev/null
+++ b/gnulib-tests/windows-thread.h
@@ -0,0 +1,55 @@
+/* Creating and controlling threads (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#ifndef _WINDOWS_THREAD_H
+#define _WINDOWS_THREAD_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+/* The glwthread_thread_t is a pointer to a structure in memory.
+ Why not the thread handle? If it were the thread handle, it would be hard
+ to implement glwthread_thread_self() (since GetCurrentThread () returns a
+ pseudo-handle, DuplicateHandle (GetCurrentThread ()) returns a handle that
+ must be closed afterwards, and there is no function for quickly retrieving
+ a thread handle from its id).
+ Why not the thread id? I tried it. It did not work: Sometimes ids appeared
+ that did not belong to running threads, and glthread_join failed with ESRCH.
+ */
+typedef struct glwthread_thread_struct *glwthread_thread_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* attr is a bit mask, consisting of the following bits: */
+#define GLWTHREAD_ATTR_DETACHED 1
+extern int glwthread_thread_create (glwthread_thread_t *threadp,
+ unsigned int attr,
+ void * (*func) (void *), void *arg);
+extern int glwthread_thread_join (glwthread_thread_t thread, void **retvalp);
+extern int glwthread_thread_detach (glwthread_thread_t thread);
+extern glwthread_thread_t glwthread_thread_self (void);
+extern int glwthread_thread_exit (void *retval);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDOWS_THREAD_H */
diff --git a/gnulib-tests/windows-tls.c b/gnulib-tests/windows-tls.c
new file mode 100644
index 0000000..d52515c
--- /dev/null
+++ b/gnulib-tests/windows-tls.c
@@ -0,0 +1,339 @@
+/* Thread-local storage (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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>, 2005. */
+
+#include <config.h>
+
+/* Specification. */
+#include "windows-tls.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#include "windows-once.h"
+
+void *
+glwthread_tls_get (glwthread_tls_key_t key)
+{
+ return TlsGetValue (key);
+}
+
+int
+glwthread_tls_set (glwthread_tls_key_t key, void *value)
+{
+ if (!TlsSetValue (key, value))
+ return EINVAL;
+ return 0;
+}
+
+/* The following variables keep track of TLS keys with non-NULL destructor. */
+
+static glwthread_once_t dtor_table_init_once = GLWTHREAD_ONCE_INIT;
+
+static CRITICAL_SECTION dtor_table_lock;
+
+struct dtor { glwthread_tls_key_t key; void (*destructor) (void *); };
+
+/* The table of dtors. */
+static struct dtor *dtor_table;
+/* Number of active entries in the dtor_table. */
+static unsigned int dtors_count;
+/* Valid indices into dtor_table are 0..dtors_used-1. */
+static unsigned int dtors_used;
+/* Allocation size of dtor_table. */
+static unsigned int dtors_allocated;
+/* Invariant: 0 <= dtors_count <= dtors_used <= dtors_allocated. */
+
+/* Number of threads that are currently processing destructors. */
+static unsigned int dtor_processing_threads;
+
+static void
+dtor_table_initialize (void)
+{
+ InitializeCriticalSection (&dtor_table_lock);
+ /* The other variables are already initialized to NULL or 0, respectively. */
+}
+
+static void
+dtor_table_ensure_initialized (void)
+{
+ glwthread_once (&dtor_table_init_once, dtor_table_initialize);
+}
+
+/* Shrinks dtors_used down to dtors_count, by replacing inactive entries
+ with active ones. */
+static void
+dtor_table_shrink_used (void)
+{
+ unsigned int i = 0;
+ unsigned int j = dtors_used;
+
+ for (;;)
+ {
+ BOOL i_found = FALSE;
+ BOOL j_found = FALSE;
+ /* Find the next inactive entry, from the left. */
+ for (; i < dtors_count;)
+ {
+ if (dtor_table[i].destructor == NULL)
+ {
+ i_found = TRUE;
+ break;
+ }
+ i++;
+ }
+
+ /* Find the next active entry, from the right. */
+ for (; j > dtors_count;)
+ {
+ j--;
+ if (dtor_table[j].destructor != NULL)
+ {
+ j_found = TRUE;
+ break;
+ }
+ }
+
+ if (i_found != j_found)
+ /* dtors_count was apparently wrong. */
+ abort ();
+
+ if (!i_found)
+ break;
+
+ /* i_found and j_found are TRUE. Swap the two entries. */
+ dtor_table[i] = dtor_table[j];
+
+ i++;
+ }
+
+ dtors_used = dtors_count;
+}
+
+void
+glwthread_tls_process_destructors (void)
+{
+ unsigned int repeat;
+
+ dtor_table_ensure_initialized ();
+
+ EnterCriticalSection (&dtor_table_lock);
+ if (dtor_processing_threads == 0)
+ {
+ /* Now it's the appropriate time for shrinking dtors_used. */
+ if (dtors_used > dtors_count)
+ dtor_table_shrink_used ();
+ }
+ dtor_processing_threads++;
+
+ for (repeat = GLWTHREAD_DESTRUCTOR_ITERATIONS; repeat > 0; repeat--)
+ {
+ unsigned int destructors_run = 0;
+
+ /* Iterate across dtor_table. We don't need to make a copy of dtor_table,
+ because
+ * When another thread calls glwthread_tls_key_create with a non-NULL
+ destructor argument, this will possibly reallocate the dtor_table
+ array and increase dtors_allocated as well as dtors_used and
+ dtors_count, but it will not change dtors_used nor the contents of
+ the first dtors_used entries of dtor_table.
+ * When another thread calls glwthread_tls_key_delete, this will
+ possibly set some 'destructor' member to NULL, thus marking an
+ entry as inactive, but it will not otherwise change dtors_used nor
+ the contents of the first dtors_used entries of dtor_table. */
+ unsigned int i_limit = dtors_used;
+ unsigned int i;
+
+ for (i = 0; i < i_limit; i++)
+ {
+ struct dtor current = dtor_table[i];
+ if (current.destructor != NULL)
+ {
+ /* The current dtor has not been deleted yet. */
+ void *current_value = glwthread_tls_get (current.key);
+ if (current_value != NULL)
+ {
+ /* The current value is non-NULL. Run the destructor. */
+ glwthread_tls_set (current.key, NULL);
+ LeaveCriticalSection (&dtor_table_lock);
+ current.destructor (current_value);
+ EnterCriticalSection (&dtor_table_lock);
+ destructors_run++;
+ }
+ }
+ }
+
+ /* When all TLS values were already NULL, no further iterations are
+ needed. */
+ if (destructors_run == 0)
+ break;
+ }
+
+ dtor_processing_threads--;
+ LeaveCriticalSection (&dtor_table_lock);
+}
+
+int
+glwthread_tls_key_create (glwthread_tls_key_t *keyp, void (*destructor) (void *))
+{
+ if (destructor != NULL)
+ {
+ dtor_table_ensure_initialized ();
+
+ EnterCriticalSection (&dtor_table_lock);
+ if (dtor_processing_threads == 0)
+ {
+ /* Now it's the appropriate time for shrinking dtors_used. */
+ if (dtors_used > dtors_count)
+ dtor_table_shrink_used ();
+ }
+
+ while (dtors_used == dtors_allocated)
+ {
+ /* Need to grow the dtor_table. */
+ unsigned int new_allocated = 2 * dtors_allocated + 1;
+ if (new_allocated < 7)
+ new_allocated = 7;
+ if (new_allocated <= dtors_allocated) /* overflow? */
+ new_allocated = UINT_MAX;
+
+ LeaveCriticalSection (&dtor_table_lock);
+ {
+ struct dtor *new_table =
+ (struct dtor *) malloc (new_allocated * sizeof (struct dtor));
+ if (new_table == NULL)
+ return ENOMEM;
+ EnterCriticalSection (&dtor_table_lock);
+ /* Attention! dtors_used, dtors_allocated may have changed! */
+ if (dtors_used < new_allocated)
+ {
+ if (dtors_allocated < new_allocated)
+ {
+ /* The new_table is useful. */
+ memcpy (new_table, dtor_table,
+ dtors_used * sizeof (struct dtor));
+ dtor_table = new_table;
+ dtors_allocated = new_allocated;
+ }
+ else
+ {
+ /* The new_table is not useful, since another thread
+ meanwhile allocated a drop_table that is at least
+ as large. */
+ free (new_table);
+ }
+ break;
+ }
+ /* The new_table is not useful, since other threads increased
+ dtors_used. Free it any retry. */
+ free (new_table);
+ }
+ }
+ /* Here dtors_used < dtors_allocated. */
+ {
+ /* Allocate a new key. */
+ glwthread_tls_key_t key = TlsAlloc ();
+ if (key == (DWORD)-1)
+ {
+ LeaveCriticalSection (&dtor_table_lock);
+ return EAGAIN;
+ }
+ /* Store the new dtor in the dtor_table, after all used entries.
+ Do not overwrite inactive entries with indices < dtors_used, in order
+ not to disturb glwthread_tls_process_destructors invocations that may
+ be executing in other threads. */
+ dtor_table[dtors_used].key = key;
+ dtor_table[dtors_used].destructor = destructor;
+ dtors_used++;
+ dtors_count++;
+ LeaveCriticalSection (&dtor_table_lock);
+ *keyp = key;
+ }
+ }
+ else
+ {
+ /* Allocate a new key. */
+ glwthread_tls_key_t key = TlsAlloc ();
+ if (key == (DWORD)-1)
+ return EAGAIN;
+ *keyp = key;
+ }
+ return 0;
+}
+
+int
+glwthread_tls_key_delete (glwthread_tls_key_t key)
+{
+ /* Should the destructor be called for all threads that are currently running?
+ Probably not, because
+ - ISO C does not specify when the destructor is to be invoked at all.
+ - In POSIX, the destructor functions specified with pthread_key_create()
+ are invoked at thread exit.
+ - It would be hard to implement, because there are no primitives for
+ accessing thread-specific values from a different thread. */
+ dtor_table_ensure_initialized ();
+
+ EnterCriticalSection (&dtor_table_lock);
+ if (dtor_processing_threads == 0)
+ {
+ /* Now it's the appropriate time for shrinking dtors_used. */
+ if (dtors_used > dtors_count)
+ dtor_table_shrink_used ();
+ /* Here dtors_used == dtors_count. */
+
+ /* Find the key in dtor_table. */
+ {
+ unsigned int i_limit = dtors_used;
+ unsigned int i;
+
+ for (i = 0; i < i_limit; i++)
+ if (dtor_table[i].key == key)
+ {
+ if (i < dtors_used - 1)
+ /* Swap the entries i and dtors_used - 1. */
+ dtor_table[i] = dtor_table[dtors_used - 1];
+ dtors_count = dtors_used = dtors_used - 1;
+ break;
+ }
+ }
+ }
+ else
+ {
+ /* Be careful not to disturb the glwthread_tls_process_destructors
+ invocations that are executing in other threads. */
+ unsigned int i_limit = dtors_used;
+ unsigned int i;
+
+ for (i = 0; i < i_limit; i++)
+ if (dtor_table[i].destructor != NULL /* skip inactive entries */
+ && dtor_table[i].key == key)
+ {
+ /* Mark this entry as inactive. */
+ dtor_table[i].destructor = NULL;
+ dtors_count = dtors_count - 1;
+ break;
+ }
+ }
+ LeaveCriticalSection (&dtor_table_lock);
+ /* Now we have ensured that glwthread_tls_process_destructors will no longer
+ use this key. */
+
+ if (!TlsFree (key))
+ return EINVAL;
+ return 0;
+}
diff --git a/gnulib-tests/windows-tls.h b/gnulib-tests/windows-tls.h
new file mode 100644
index 0000000..2b39fab
--- /dev/null
+++ b/gnulib-tests/windows-tls.h
@@ -0,0 +1,42 @@
+/* Thread-local storage (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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>, 2005. */
+
+#ifndef _WINDOWS_TLS_H
+#define _WINDOWS_TLS_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+typedef DWORD glwthread_tls_key_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int glwthread_tls_key_create (glwthread_tls_key_t *keyp, void (*destructor) (void *));
+extern void *glwthread_tls_get (glwthread_tls_key_t key);
+extern int glwthread_tls_set (glwthread_tls_key_t key, void *value);
+extern int glwthread_tls_key_delete (glwthread_tls_key_t key);
+extern void glwthread_tls_process_destructors (void);
+#define GLWTHREAD_DESTRUCTOR_ITERATIONS 4
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDOWS_TLS_H */
diff --git a/gnulib-tests/zerosize-ptr.h b/gnulib-tests/zerosize-ptr.h
index d5592c5..4a5d267 100644
--- a/gnulib-tests/zerosize-ptr.h
+++ b/gnulib-tests/zerosize-ptr.h
@@ -1,5 +1,5 @@
/* Return a pointer to a zero-size object in memory.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/init.cfg b/init.cfg
index 0d5e3a3..85f6c3f 100644
--- a/init.cfg
+++ b/init.cfg
@@ -1,6 +1,6 @@
# This file is sourced by init.sh, *before* its initialization.
-# Copyright (C) 2010-2018 Free Software Foundation, Inc.
+# Copyright (C) 2010-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h
index 94fdfaf..0d4b9c2 100644
--- a/lib/_Noreturn.h
+++ b/lib/_Noreturn.h
@@ -1,8 +1,34 @@
+/* A C macro for declaring that a function does not return.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This 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 _Noreturn
-# if 201103 <= (defined __cplusplus ? __cplusplus : 0)
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
-# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
- || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
/* _Noreturn works as-is. */
# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
# define _Noreturn __attribute__ ((__noreturn__))
diff --git a/lib/acl-errno-valid.c b/lib/acl-errno-valid.c
index 96577eb..cafae0b 100644
--- a/lib/acl-errno-valid.c
+++ b/lib/acl-errno-valid.c
@@ -1,6 +1,6 @@
/* Test whether ACLs are well supported on this system.
- Copyright 2013-2018 Free Software Foundation, Inc.
+ Copyright 2013-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/acl-internal.c b/lib/acl-internal.c
index 92e7b9b..1cb77a8 100644
--- a/lib/acl-internal.c
+++ b/lib/acl-internal.c
@@ -1,6 +1,6 @@
/* Test whether a file has a nontrivial ACL. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/acl-internal.h b/lib/acl-internal.h
index 2da7c5a..0e28e1a 100644
--- a/lib/acl-internal.h
+++ b/lib/acl-internal.h
@@ -1,6 +1,6 @@
/* Internal implementation of access control lists. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/acl.h b/lib/acl.h
index d0c122c..374c147 100644
--- a/lib/acl.h
+++ b/lib/acl.h
@@ -1,6 +1,6 @@
/* acl.c - access control lists
- Copyright (C) 2002, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/acl_entries.c b/lib/acl_entries.c
index ce730d4..14fca5f 100644
--- a/lib/acl_entries.c
+++ b/lib/acl_entries.c
@@ -1,6 +1,6 @@
/* Return the number of entries in an ACL.
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/alignof.h b/lib/alignof.h
index 26d71dd..17a80ff 100644
--- a/lib/alignof.h
+++ b/lib/alignof.h
@@ -1,5 +1,5 @@
/* Determine alignment of types.
- Copyright (C) 2003-2004, 2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2004, 2006, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/alloca.c b/lib/alloca.c
index ee0f018..d0476d5 100644
--- a/lib/alloca.c
+++ b/lib/alloca.c
@@ -350,16 +350,16 @@ i00afunc (long *address)
/* There must be at least one stack segment. Therefore it is
a fatal error if "trailer" is null. */
- if (trailer == 0)
+ if (trailer == NULL)
abort ();
/* Discard segments that do not contain our argument address. */
- while (trailer != 0)
+ while (trailer != NULL)
{
block = (long *) trailer->this_address;
size = trailer->this_size;
- if (block == 0 || size == 0)
+ if (block == NULL || size == 0)
abort ();
trailer = (struct stk_trailer *) trailer->link;
if ((block <= address) && (address < (block + size)))
@@ -371,7 +371,7 @@ i00afunc (long *address)
result = address - block;
- if (trailer == 0)
+ if (trailer == NULL)
{
return result;
}
@@ -383,7 +383,7 @@ i00afunc (long *address)
result += trailer->this_size;
trailer = (struct stk_trailer *) trailer->link;
}
- while (trailer != 0);
+ while (trailer != NULL);
/* We are done. Note that if you present a bogus address (one
not in any segment), you will get a different number back, formed
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
index 5ad8af8..c7187e6 100644
--- a/lib/alloca.in.h
+++ b/lib/alloca.in.h
@@ -1,6 +1,6 @@
/* Memory allocation on the stack.
- Copyright (C) 1995, 1999, 2001-2004, 2006-2018 Free Software Foundation,
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2020 Free Software Foundation,
Inc.
This program is free software; you can redistribute it and/or modify it
@@ -36,6 +36,12 @@
#ifndef alloca
# ifdef __GNUC__
+ /* Some version of mingw have an <alloca.h> that causes trouble when
+ included after 'alloca' gets defined as a macro. As a workaround, include
+ this <alloca.h> first and define 'alloca' as a macro afterwards. */
+# if (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@
+# include_next <alloca.h>
+# endif
# define alloca __builtin_alloca
# elif defined _AIX
# define alloca __alloca
diff --git a/lib/arg-nonnull.h b/lib/arg-nonnull.h
index 5f03408..ac26ca8 100644
--- a/lib/arg-nonnull.h
+++ b/lib/arg-nonnull.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that specific arguments must not be NULL.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program 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/lib/basename-lgpl.c b/lib/basename-lgpl.c
index 33f9994..565469e 100644
--- a/lib/basename-lgpl.c
+++ b/lib/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-2018 Free Software
+ Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/binary-io.c b/lib/binary-io.c
index f9cc4dd..e84e223 100644
--- a/lib/binary-io.c
+++ b/lib/binary-io.c
@@ -1,5 +1,5 @@
/* Binary mode I/O.
- Copyright 2017-2018 Free Software Foundation, Inc.
+ Copyright 2017-2020 Free Software Foundation, Inc.
This 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,18 +20,20 @@
#include "binary-io.h"
#if defined __DJGPP__ || defined __EMX__
-# include <errno.h>
# include <unistd.h>
int
-__gl_setmode_check (int fd)
+set_binary_mode (int fd, int mode)
{
if (isatty (fd))
- {
- errno = EINVAL;
- return -1;
- }
+ /* If FD refers to a console (not a pipe, not a regular file),
+ O_TEXT is the only reasonable mode, both on input and on output.
+ Silently ignore the request. If we were to return -1 here,
+ all programs that use xset_binary_mode would fail when run
+ with console input or console output. */
+ return O_TEXT;
else
- return 0;
+ return __gl_setmode (fd, mode);
}
+
#endif
diff --git a/lib/binary-io.h b/lib/binary-io.h
index 1f21fc0..477b4bf 100644
--- a/lib/binary-io.h
+++ b/lib/binary-io.h
@@ -1,5 +1,5 @@
/* Binary mode I/O.
- Copyright (C) 2001, 2003, 2005, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2005, 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -53,25 +53,21 @@ __gl_setmode (int fd _GL_UNUSED, int mode _GL_UNUSED)
}
#endif
-#if defined __DJGPP__ || defined __EMX__
-extern int __gl_setmode_check (int);
-#else
-BINARY_IO_INLINE int
-__gl_setmode_check (int fd _GL_UNUSED) { return 0; }
-#endif
-
/* Set FD's mode to MODE, which should be either O_TEXT or O_BINARY.
Return the old mode if successful, -1 (setting errno) on failure.
Ordinarily this function would be called 'setmode', since that is
its name on MS-Windows, but it is called 'set_binary_mode' here
to avoid colliding with a BSD function of another name. */
+#if defined __DJGPP__ || defined __EMX__
+extern int set_binary_mode (int fd, int mode);
+#else
BINARY_IO_INLINE int
set_binary_mode (int fd, int mode)
{
- int r = __gl_setmode_check (fd);
- return r != 0 ? r : __gl_setmode (fd, mode);
+ return __gl_setmode (fd, mode);
}
+#endif
/* This macro is obsolescent. */
#define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY))
diff --git a/lib/btowc.c b/lib/btowc.c
index 54124b2..6828b70 100644
--- a/lib/btowc.c
+++ b/lib/btowc.c
@@ -1,5 +1,5 @@
/* Convert unibyte character to wide character.
- Copyright (C) 2008, 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/c++defs.h b/lib/c++defs.h
index 72ff1ff..7a05763 100644
--- a/lib/c++defs.h
+++ b/lib/c++defs.h
@@ -1,5 +1,5 @@
/* C++ compatible function declaration macros.
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program 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/lib/c-ctype.h b/lib/c-ctype.h
index d55d4f6..fbd11b3 100644
--- a/lib/c-ctype.h
+++ b/lib/c-ctype.h
@@ -5,7 +5,7 @@
<ctype.h> functions' behaviour depends on the current locale set via
setlocale.
- Copyright (C) 2000-2003, 2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003, 2006, 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/c-strcase.h b/lib/c-strcase.h
index 41f439e..3b711f5 100644
--- a/lib/c-strcase.h
+++ b/lib/c-strcase.h
@@ -1,5 +1,5 @@
/* Case-insensitive string comparison functions in C locale.
- Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2018 Free Software
+ Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2020 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
diff --git a/lib/c-strcasecmp.c b/lib/c-strcasecmp.c
index 2b1ac99..951220f 100644
--- a/lib/c-strcasecmp.c
+++ b/lib/c-strcasecmp.c
@@ -1,5 +1,5 @@
/* c-strcasecmp.c -- case insensitive string comparator in C locale
- Copyright (C) 1998-1999, 2005-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-1999, 2005-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/c-strcaseeq.h b/lib/c-strcaseeq.h
index 9bde9de..304c72e 100644
--- a/lib/c-strcaseeq.h
+++ b/lib/c-strcaseeq.h
@@ -1,5 +1,5 @@
/* Optimized case-insensitive string comparison in C locale.
- Copyright (C) 2001-2002, 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2002, 2007, 2009-2020 Free Software Foundation, Inc.
This program 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/lib/c-strncasecmp.c b/lib/c-strncasecmp.c
index 8151c1a..9ad4919 100644
--- a/lib/c-strncasecmp.c
+++ b/lib/c-strncasecmp.c
@@ -1,5 +1,5 @@
/* c-strncasecmp.c -- case insensitive string comparator in C locale
- Copyright (C) 1998-1999, 2005-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-1999, 2005-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/canonicalize-lgpl.c b/lib/canonicalize-lgpl.c
index 7831b3f..7d3c710 100644
--- a/lib/canonicalize-lgpl.c
+++ b/lib/canonicalize-lgpl.c
@@ -1,5 +1,5 @@
/* Return the canonical absolute name of a given file.
- Copyright (C) 1996-2018 Free Software Foundation, Inc.
+ Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/cdefs.h b/lib/cdefs.h
index 70fb638..d8e4a00 100644
--- a/lib/cdefs.h
+++ b/lib/cdefs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2020 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
@@ -340,7 +340,7 @@
semantics.
clang++ identifies itself as gcc-4.2, but has support for GNU inlining
- semantics, that can be checked fot by using the __GNUC_STDC_INLINE_ and
+ 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__ \
diff --git a/lib/close-stream.c b/lib/close-stream.c
index 3d5a52e..04bc800 100644
--- a/lib/close-stream.c
+++ b/lib/close-stream.c
@@ -1,6 +1,6 @@
/* Close a stream, with nicer error checking than fclose's.
- Copyright (C) 1998-2002, 2004, 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-2002, 2004, 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/closeout.c b/lib/closeout.c
index 0672732..8b92ce9 100644
--- a/lib/closeout.c
+++ b/lib/closeout.c
@@ -1,6 +1,6 @@
/* Close standard output and standard error, exiting with a diagnostic on error.
- Copyright (C) 1998-2002, 2004, 2006, 2008-2018 Free Software Foundation,
+ Copyright (C) 1998-2002, 2004, 2006, 2008-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/closeout.h b/lib/closeout.h
index 6629d49..8294c62 100644
--- a/lib/closeout.h
+++ b/lib/closeout.h
@@ -1,6 +1,6 @@
/* Close standard output and standard error.
- Copyright (C) 1998, 2000, 2003-2004, 2006, 2008-2018 Free Software
+ Copyright (C) 1998, 2000, 2003-2004, 2006, 2008-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/copy-acl.c b/lib/copy-acl.c
index f5699ef..0eb4caf 100644
--- a/lib/copy-acl.c
+++ b/lib/copy-acl.c
@@ -1,6 +1,6 @@
/* Copy access control list from one file to file. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/ctype.in.h b/lib/ctype.in.h
index cfcb118..555677a 100644
--- a/lib/ctype.in.h
+++ b/lib/ctype.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C99 <ctype.h>, for platforms on which it is incomplete.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,7 +19,7 @@
/*
* ISO C 99 <ctype.h> for platforms on which it is incomplete.
- * <http://www.opengroup.org/onlinepubs/9699919799/basedefs/ctype.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/ctype.h.html>
*/
#ifndef _@GUARD_PREFIX@_CTYPE_H
diff --git a/lib/dfa.c b/lib/dfa.c
index c9be5e8..96ae560 100644
--- a/lib/dfa.c
+++ b/lib/dfa.c
@@ -1,5 +1,5 @@
/* dfa.c - deterministic extended regexp routines for GNU
- Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2018 Free Software
+ Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2020 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -24,6 +24,8 @@
#include "dfa.h"
+#include "flexmember.h"
+
#include <assert.h>
#include <ctype.h>
#include <stdint.h>
@@ -31,7 +33,12 @@
#include <stdlib.h>
#include <limits.h>
#include <string.h>
-#include <locale.h>
+
+/* Another name for ptrdiff_t, for sizes of objects and nonnegative
+ indexes into objects. It is signed to help catch integer overflow.
+ It has its own name because it is for nonnegative values only. */
+typedef ptrdiff_t idx_t;
+static idx_t const IDX_MAX = PTRDIFF_MAX;
static bool
streq (char const *a, char const *b)
@@ -77,28 +84,15 @@ isasciidigit (char c)
/* First integer value that is greater than any character code. */
enum { NOTCHAR = 1 << CHAR_BIT };
+/* Number of bits used in a charclass word. */
+enum { CHARCLASS_WORD_BITS = 64 };
+
/* This represents part of a character class. It must be unsigned and
at least CHARCLASS_WORD_BITS wide. Any excess bits are zero. */
-typedef unsigned long int charclass_word;
-
-/* CHARCLASS_WORD_BITS is the number of bits used in a charclass word.
- CHARCLASS_PAIR (LO, HI) is part of a charclass initializer, and
- represents 64 bits' worth of a charclass, where LO and HI are the
- low and high-order 32 bits of the 64-bit quantity. */
-#if ULONG_MAX >> 31 >> 31 < 3
-enum { CHARCLASS_WORD_BITS = 32 };
-# define CHARCLASS_PAIR(lo, hi) lo, hi
-#else
-enum { CHARCLASS_WORD_BITS = 64 };
-# define CHARCLASS_PAIR(lo, hi) (((charclass_word) (hi) << 32) + (lo))
-#endif
+typedef uint_least64_t charclass_word;
-/* An initializer for a charclass whose 32-bit words are A through H. */
-#define CHARCLASS_INIT(a, b, c, d, e, f, g, h) \
- {{ \
- CHARCLASS_PAIR (a, b), CHARCLASS_PAIR (c, d), \
- CHARCLASS_PAIR (e, f), CHARCLASS_PAIR (g, h) \
- }}
+/* An initializer for a charclass whose 64-bit words are A through D. */
+#define CHARCLASS_INIT(a, b, c, d) {{a, b, c, d}}
/* The maximum useful value of a charclass_word; all used bits are 1. */
static charclass_word const CHARCLASS_WORD_MASK
@@ -214,7 +208,7 @@ enum
codes are returned by the lexical analyzer. */
typedef ptrdiff_t token;
-static ptrdiff_t const TOKEN_MAX = PTRDIFF_MAX;
+static token const TOKEN_MAX = PTRDIFF_MAX;
/* States are indexed by state_num values. These are normally
nonnegative but -1 is used as a special value. */
@@ -325,7 +319,7 @@ enum
a constraint. */
typedef struct
{
- size_t index; /* Index into the parse array. */
+ idx_t index; /* Index into the parse array. */
unsigned int constraint; /* Constraint for matching this position. */
} position;
@@ -333,8 +327,8 @@ typedef struct
typedef struct
{
position *elems; /* Elements of this position set. */
- ptrdiff_t nelem; /* Number of elements in this set. */
- ptrdiff_t alloc; /* Number of elements allocated in ELEMS. */
+ idx_t nelem; /* Number of elements in this set. */
+ idx_t alloc; /* Number of elements allocated in ELEMS. */
} position_set;
/* A state of the dfa consists of a set of positions, some flags,
@@ -366,8 +360,8 @@ struct mb_char_classes
ptrdiff_t cset;
bool invert;
wchar_t *chars; /* Normal characters. */
- ptrdiff_t nchars;
- ptrdiff_t nchars_alloc;
+ idx_t nchars;
+ idx_t nchars_alloc;
};
struct regex_syntax
@@ -407,9 +401,9 @@ struct regex_syntax
struct lexer_state
{
char const *ptr; /* Pointer to next input character. */
- size_t left; /* Number of characters remaining. */
+ idx_t left; /* Number of characters remaining. */
token lasttok; /* Previous token returned; initially END. */
- size_t parens; /* Count of outstanding left parens. */
+ idx_t parens; /* Count of outstanding left parens. */
int minrep, maxrep; /* Repeat counts for {m,n}. */
/* Wide character representation of the current multibyte character,
@@ -417,9 +411,6 @@ struct lexer_state
MB_CUR_MAX > 1. */
wint_t wctok;
- /* Length of the multibyte representation of wctok. */
- int cur_mb_len;
-
/* The most recently analyzed multibyte bracket expression. */
struct mb_char_classes brack;
@@ -432,7 +423,7 @@ struct lexer_state
struct parser_state
{
token tok; /* Lookahead token. */
- size_t depth; /* Current depth of a hypothetical stack
+ idx_t depth; /* Current depth of a hypothetical stack
holding deferred productions. This is
used to determine the depth that will be
required of the real stack later on in
@@ -442,14 +433,11 @@ struct parser_state
/* A compiled regular expression. */
struct dfa
{
- /* Syntax configuration */
- struct regex_syntax syntax;
-
/* Fields filled by the scanner. */
charclass *charclasses; /* Array of character sets for CSET tokens. */
- ptrdiff_t cindex; /* Index for adding new charclasses. */
- ptrdiff_t calloc; /* Number of charclasses allocated. */
- size_t canychar; /* Index of anychar class, or (size_t) -1. */
+ idx_t cindex; /* Index for adding new charclasses. */
+ idx_t calloc; /* Number of charclasses allocated. */
+ ptrdiff_t canychar; /* Index of anychar class, or -1. */
/* Scanner state */
struct lexer_state lex;
@@ -459,16 +447,16 @@ struct dfa
/* Fields filled by the parser. */
token *tokens; /* Postfix parse array. */
- size_t tindex; /* Index for adding new tokens. */
- size_t talloc; /* Number of tokens currently allocated. */
- size_t depth; /* Depth required of an evaluation stack
+ idx_t tindex; /* Index for adding new tokens. */
+ idx_t talloc; /* Number of tokens currently allocated. */
+ idx_t depth; /* Depth required of an evaluation stack
used for depth-first traversal of the
parse tree. */
- size_t nleaves; /* Number of leaves on the parse tree. */
- size_t nregexps; /* Count of parallel regexps being built
+ idx_t nleaves; /* Number of leaves on the parse tree. */
+ idx_t nregexps; /* Count of parallel regexps being built
with dfaparse. */
bool fast; /* The DFA is fast. */
- token utf8_anychar_classes[5]; /* To lower ANYCHAR in UTF-8 locales. */
+ token utf8_anychar_classes[9]; /* To lower ANYCHAR in UTF-8 locales. */
mbstate_t mbs; /* Multibyte conversion state. */
/* The following are valid only if MB_CUR_MAX > 1. */
@@ -495,7 +483,7 @@ struct dfa
/* Fields filled by the state builder. */
dfa_state *states; /* States of the dfa. */
state_num sindex; /* Index for adding new states. */
- ptrdiff_t salloc; /* Number of states currently allocated. */
+ idx_t salloc; /* Number of states currently allocated. */
/* Fields filled by the parse tree->NFA conversion. */
position_set *follows; /* Array of follow sets, indexed by position
@@ -560,18 +548,16 @@ struct dfa
state_num mb_trcount; /* Number of transition tables for states with
ANYCHAR that have actually been built. */
+ /* Syntax configuration. This is near the end so that dfacopysyntax
+ can memset up to here. */
+ struct regex_syntax syntax;
+
/* Information derived from the locale. This is at the end so that
a quick memset need not clear it specially. */
/* dfaexec implementation. */
char *(*dfaexec) (struct dfa *, char const *, char *,
- bool, size_t *, bool *);
-
- /* The locale is simple, like the C locale. These locales can be
- processed more efficiently, as they are single-byte, their native
- character set is in collating-sequence order, and they do not
- have multi-character collating elements. */
- bool simple_locale;
+ bool, ptrdiff_t *, bool *);
/* Other cached information derived from the locale. */
struct localeinfo localeinfo;
@@ -612,7 +598,7 @@ static void regexp (struct dfa *dfa);
* The return value is always in the range 1..N.
* D->mbs is always valid afterwards.
* *PWC is always set to something. */
-static size_t
+static int
mbs_to_wchar (wint_t *pwc, char const *s, size_t n, struct dfa *d)
{
unsigned char uc = s[0];
@@ -791,10 +777,10 @@ emptyset (charclass const *s)
{ free (A); A = xpalloc (NULL, &AITEMS, ...); }. */
static void *
-xpalloc (void *pa, ptrdiff_t *nitems, ptrdiff_t nitems_incr_min,
- ptrdiff_t nitems_max, ptrdiff_t item_size)
+xpalloc (void *pa, idx_t *nitems, idx_t nitems_incr_min,
+ ptrdiff_t nitems_max, idx_t item_size)
{
- ptrdiff_t n0 = *nitems;
+ idx_t n0 = *nitems;
/* The approximate size to use for initial small allocation
requests. This is the largest "small" request for the GNU C
@@ -806,15 +792,15 @@ xpalloc (void *pa, ptrdiff_t *nitems, ptrdiff_t nitems_incr_min,
Adjust the growth according to three constraints: NITEMS_INCR_MIN,
NITEMS_MAX, and what the C language can represent safely. */
- ptrdiff_t n, nbytes;
+ idx_t n, nbytes;
if (INT_ADD_WRAPV (n0, n0 >> 1, &n))
- n = PTRDIFF_MAX;
+ n = IDX_MAX;
if (0 <= nitems_max && nitems_max < n)
n = nitems_max;
- ptrdiff_t adjusted_nbytes
+ idx_t adjusted_nbytes
= ((INT_MULTIPLY_WRAPV (n, item_size, &nbytes) || SIZE_MAX < nbytes)
- ? MIN (PTRDIFF_MAX, SIZE_MAX)
+ ? MIN (IDX_MAX, SIZE_MAX)
: nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0);
if (adjusted_nbytes)
{
@@ -844,8 +830,8 @@ xpalloc (void *pa, ptrdiff_t *nitems, ptrdiff_t nitems_incr_min,
ITEM_SIZE is the size of one item; it must be positive.
Avoid O(N**2) behavior on arrays growing linearly. */
static void *
-maybe_realloc (void *pa, ptrdiff_t i, ptrdiff_t *nitems,
- ptrdiff_t nitems_max, ptrdiff_t item_size)
+maybe_realloc (void *pa, idx_t i, idx_t *nitems,
+ ptrdiff_t nitems_max, idx_t item_size)
{
if (i < *nitems)
return pa;
@@ -853,10 +839,10 @@ maybe_realloc (void *pa, ptrdiff_t i, ptrdiff_t *nitems,
}
/* In DFA D, find the index of charclass S, or allocate a new one. */
-static ptrdiff_t
-charclass_index (struct dfa *d, charclass *s)
+static idx_t
+charclass_index (struct dfa *d, charclass const *s)
{
- ptrdiff_t i;
+ idx_t i;
for (i = 0; i < d->cindex; ++i)
if (equal (s, &d->charclasses[i]))
@@ -911,38 +897,6 @@ setbit_case_fold_c (int b, charclass *c)
setbit (i, c);
}
-/* Return true if the locale compatible with the C locale. */
-
-static bool
-using_simple_locale (bool multibyte)
-{
- /* The native character set is known to be compatible with
- the C locale. The following test isn't perfect, but it's good
- enough in practice, as only ASCII and EBCDIC are in common use
- and this test correctly accepts ASCII and rejects EBCDIC. */
- enum { native_c_charset =
- ('\b' == 8 && '\t' == 9 && '\n' == 10 && '\v' == 11 && '\f' == 12
- && '\r' == 13 && ' ' == 32 && '!' == 33 && '"' == 34 && '#' == 35
- && '%' == 37 && '&' == 38 && '\'' == 39 && '(' == 40 && ')' == 41
- && '*' == 42 && '+' == 43 && ',' == 44 && '-' == 45 && '.' == 46
- && '/' == 47 && '0' == 48 && '9' == 57 && ':' == 58 && ';' == 59
- && '<' == 60 && '=' == 61 && '>' == 62 && '?' == 63 && 'A' == 65
- && 'Z' == 90 && '[' == 91 && '\\' == 92 && ']' == 93 && '^' == 94
- && '_' == 95 && 'a' == 97 && 'z' == 122 && '{' == 123 && '|' == 124
- && '}' == 125 && '~' == 126)
- };
-
- if (!native_c_charset || multibyte)
- return false;
- else
- {
- /* Treat C and POSIX locales as being compatible. Also, treat
- errors as compatible, as these are invariably from stubs. */
- char const *loc = setlocale (LC_ALL, NULL);
- return !loc || streq (loc, "C") || streq (loc, "POSIX");
- }
-}
-
/* Fetch the next lexical input character from the pattern. There
must at least one byte of pattern input. Set DFA->lex.wctok to the
value of the character or to WEOF depending on whether the input is
@@ -952,9 +906,8 @@ using_simple_locale (bool multibyte)
static int
fetch_wc (struct dfa *dfa)
{
- size_t nbytes = mbs_to_wchar (&dfa->lex.wctok, dfa->lex.ptr, dfa->lex.left,
- dfa);
- dfa->lex.cur_mb_len = nbytes;
+ int nbytes = mbs_to_wchar (&dfa->lex.wctok, dfa->lex.ptr, dfa->lex.left,
+ dfa);
int c = nbytes == 1 ? to_uchar (dfa->lex.ptr[0]) : EOF;
dfa->lex.ptr += nbytes;
dfa->lex.left -= nbytes;
@@ -1003,7 +956,7 @@ static const struct dfa_ctype prednames[] = {
static const struct dfa_ctype *_GL_ATTRIBUTE_PURE
find_pred (const char *str)
{
- for (unsigned int i = 0; prednames[i].name; ++i)
+ for (int i = 0; prednames[i].name; i++)
if (streq (str, prednames[i].name))
return &prednames[i];
return NULL;
@@ -1033,7 +986,7 @@ parse_bracket_exp (struct dfa *dfa)
if (invert)
{
c = bracket_fetch_wc (dfa);
- known_bracket_exp = dfa->simple_locale;
+ known_bracket_exp = dfa->localeinfo.simple;
}
wint_t wc = dfa->lex.wctok;
int c1;
@@ -1058,7 +1011,7 @@ parse_bracket_exp (struct dfa *dfa)
{
enum { MAX_BRACKET_STRING_LEN = 32 };
char str[MAX_BRACKET_STRING_LEN + 1];
- size_t len = 0;
+ int len = 0;
for (;;)
{
c = bracket_fetch_wc (dfa);
@@ -1144,8 +1097,8 @@ parse_bracket_exp (struct dfa *dfa)
{
/* In the case [x-], the - is an ordinary hyphen,
which is left in c1, the lookahead character. */
- dfa->lex.ptr -= dfa->lex.cur_mb_len;
- dfa->lex.left += dfa->lex.cur_mb_len;
+ dfa->lex.ptr--;
+ dfa->lex.left++;
}
else
{
@@ -1163,7 +1116,7 @@ parse_bracket_exp (struct dfa *dfa)
/* Treat [x-y] as a range if x != y. */
if (wc != wc2 || wc == WEOF)
{
- if (dfa->simple_locale
+ if (dfa->localeinfo.simple
|| (isasciidigit (c) & isasciidigit (c2)))
{
for (int ci = c; ci <= c2; ci++)
@@ -1196,11 +1149,11 @@ parse_bracket_exp (struct dfa *dfa)
else
{
wchar_t folded[CASE_FOLDED_BUFSIZE + 1];
- unsigned int n = (dfa->syntax.case_fold
- ? case_folded_counterparts (wc, folded + 1) + 1
- : 1);
+ int n = (dfa->syntax.case_fold
+ ? case_folded_counterparts (wc, folded + 1) + 1
+ : 1);
folded[0] = wc;
- for (unsigned int i = 0; i < n; i++)
+ for (int i = 0; i < n; i++)
if (!setbit_wc (folded[i], &ccl))
{
dfa->lex.brack.chars
@@ -1239,7 +1192,7 @@ parse_bracket_exp (struct dfa *dfa)
struct lexptr
{
char const *ptr;
- size_t left;
+ idx_t left;
};
static void
@@ -1487,7 +1440,7 @@ lex (struct dfa *dfa)
case '.':
if (backslash)
goto normal_char;
- if (dfa->canychar == (size_t) -1)
+ if (dfa->canychar < 0)
{
charclass ccl;
fillset (&ccl);
@@ -1610,8 +1563,8 @@ addtok_mb (struct dfa *dfa, token t, char mbprop)
{
if (dfa->talloc == dfa->tindex)
{
- dfa->tokens = x2nrealloc (dfa->tokens, &dfa->talloc,
- sizeof *dfa->tokens);
+ dfa->tokens = xpalloc (dfa->tokens, &dfa->talloc, 1, -1,
+ sizeof *dfa->tokens);
if (dfa->localeinfo.multibyte)
dfa->multibyte_prop = xnrealloc (dfa->multibyte_prop, dfa->talloc,
sizeof *dfa->multibyte_prop);
@@ -1659,7 +1612,7 @@ addtok (struct dfa *dfa, token t)
/* Extract wide characters into alternations for better performance.
This does not require UTF-8. */
- for (ptrdiff_t i = 0; i < dfa->lex.brack.nchars; i++)
+ for (idx_t i = 0; i < dfa->lex.brack.nchars; i++)
{
addtok_wc (dfa, dfa->lex.brack.chars[i]);
if (need_or)
@@ -1695,21 +1648,22 @@ addtok_wc (struct dfa *dfa, wint_t wc)
unsigned char buf[MB_LEN_MAX];
mbstate_t s = { 0 };
size_t stored_bytes = wcrtomb ((char *) buf, wc, &s);
+ int buflen;
if (stored_bytes != (size_t) -1)
- dfa->lex.cur_mb_len = stored_bytes;
+ buflen = stored_bytes;
else
{
/* This is merely stop-gap. buf[0] is undefined, yet skipping
the addtok_mb call altogether can corrupt the heap. */
- dfa->lex.cur_mb_len = 1;
+ buflen = 1;
buf[0] = 0;
}
- addtok_mb (dfa, buf[0], dfa->lex.cur_mb_len == 1 ? 3 : 1);
- for (int i = 1; i < dfa->lex.cur_mb_len; i++)
+ addtok_mb (dfa, buf[0], buflen == 1 ? 3 : 1);
+ for (int i = 1; i < buflen; i++)
{
- addtok_mb (dfa, buf[i], i == dfa->lex.cur_mb_len - 1 ? 2 : 0);
+ addtok_mb (dfa, buf[i], i == buflen - 1 ? 2 : 0);
addtok (dfa, CAT);
}
}
@@ -1717,55 +1671,111 @@ addtok_wc (struct dfa *dfa, wint_t wc)
static void
add_utf8_anychar (struct dfa *dfa)
{
- static charclass const utf8_classes[5] = {
- /* 80-bf: non-leading bytes. */
- CHARCLASS_INIT (0, 0, 0, 0, 0xffffffff, 0xffffffff, 0, 0),
+ /* Since the Unicode Standard Version 4.0.0 (2003), a well-formed
+ UTF-8 byte sequence has been defined as follows:
- /* 00-7f: 1-byte sequence. */
- CHARCLASS_INIT (0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0, 0, 0, 0),
+ ([\x00-\x7f]
+ |[\xc2-\xdf][\x80-\xbf]
+ |[\xe0][\xa0-\xbf][\x80-\xbf]
+ |[\xe1-\xec\xee-\xef][\x80-\xbf][\x80-\xbf]
+ |[\xed][\x80-\x9f][\x80-\xbf]
+ |[\xf0][\x90-\xbf][\x80-\xbf][\x80-\xbf])
+ |[\xf1-\xf3][\x80-\xbf][\x80-\xbf][\x80-\xbf]
+ |[\xf4][\x80-\x8f][\x80-\xbf][\x80-\xbf])
- /* c2-df: 2-byte sequence. */
- CHARCLASS_INIT (0, 0, 0, 0, 0, 0, 0xfffffffc, 0),
+ which I'll write more concisely "A|BC|DEC|FCC|GHC|IJCC|KCCC|LMCC",
+ where A = [\x00-\x7f], B = [\xc2-\xdf], C = [\x80-\xbf],
+ D = [\xe0], E = [\xa0-\xbf], F = [\xe1-\xec\xee-\xef], G = [\xed],
+ H = [\x80-\x9f], I = [\xf0],
+ J = [\x90-\xbf], K = [\xf1-\xf3], L = [\xf4], M = [\x80-\x8f].
- /* e0-ef: 3-byte sequence. */
- CHARCLASS_INIT (0, 0, 0, 0, 0, 0, 0, 0xffff),
+ This can be refactored to "A|(B|DE|GH|(F|IJ|LM|KC)C)C". */
- /* f0-f7: 4-byte sequence. */
- CHARCLASS_INIT (0, 0, 0, 0, 0, 0, 0, 0xff0000)
- };
- const unsigned int n = sizeof (utf8_classes) / sizeof (utf8_classes[0]);
+ /* Mnemonics for classes containing two or more bytes. */
+ enum { A, B, C, E, F, H, J, K, M };
- /* Define the five character classes that are needed below. */
- if (dfa->utf8_anychar_classes[0] == 0)
- for (unsigned int i = 0; i < n; i++)
- {
- charclass c = utf8_classes[i];
- if (i == 1)
- {
- if (!(dfa->syntax.syntax_bits & RE_DOT_NEWLINE))
- clrbit ('\n', &c);
- if (dfa->syntax.syntax_bits & RE_DOT_NOT_NULL)
- clrbit ('\0', &c);
- }
- dfa->utf8_anychar_classes[i] = CSET + charclass_index (dfa, &c);
- }
+ /* Mnemonics for single-byte tokens. */
+ enum { D_token = 0xe0, G_token = 0xed, I_token = 0xf0, L_token = 0xf4 };
+
+ static charclass const utf8_classes[] = {
+ /* A. 00-7f: 1-byte sequence. */
+ CHARCLASS_INIT (0xffffffffffffffff, 0xffffffffffffffff, 0, 0),
- /* A valid UTF-8 character is
+ /* B. c2-df: 1st byte of a 2-byte sequence. */
+ CHARCLASS_INIT (0, 0, 0, 0x00000000fffffffc),
- ([0x00-0x7f]
- |[0xc2-0xdf][0x80-0xbf]
- |[0xe0-0xef[0x80-0xbf][0x80-0xbf]
- |[0xf0-f7][0x80-0xbf][0x80-0xbf][0x80-0xbf])
+ /* C. 80-bf: non-leading bytes. */
+ CHARCLASS_INIT (0, 0, 0xffffffffffffffff, 0),
- which I'll write more concisely "B|CA|DAA|EAAA". Factor the [0x00-0x7f]
- and you get "B|(C|(D|EA)A)A". And since the token buffer is in reverse
- Polish notation, you get "B C D E A CAT OR A CAT OR A CAT OR". */
- unsigned int i;
- for (i = 1; i < n; i++)
- addtok (dfa, dfa->utf8_anychar_classes[i]);
- while (--i > 1)
+ /* D. e0 (just a token). */
+
+ /* E. a0-bf: 2nd byte of a "DEC" sequence. */
+ CHARCLASS_INIT (0, 0, 0xffffffff00000000, 0),
+
+ /* F. e1-ec + ee-ef: 1st byte of an "FCC" sequence. */
+ CHARCLASS_INIT (0, 0, 0, 0x0000dffe00000000),
+
+ /* G. ed (just a token). */
+
+ /* H. 80-9f: 2nd byte of a "GHC" sequence. */
+ CHARCLASS_INIT (0, 0, 0x000000000000ffff, 0),
+
+ /* I. f0 (just a token). */
+
+ /* J. 90-bf: 2nd byte of an "IJCC" sequence. */
+ CHARCLASS_INIT (0, 0, 0xffffffffffff0000, 0),
+
+ /* K. f1-f3: 1st byte of a "KCCC" sequence. */
+ CHARCLASS_INIT (0, 0, 0, 0x000e000000000000),
+
+ /* L. f4 (just a token). */
+
+ /* M. 80-8f: 2nd byte of a "LMCC" sequence. */
+ CHARCLASS_INIT (0, 0, 0x00000000000000ff, 0),
+ };
+
+ /* Define the character classes that are needed below. */
+ if (dfa->utf8_anychar_classes[0] == 0)
+ {
+ charclass c = utf8_classes[0];
+ if (! (dfa->syntax.syntax_bits & RE_DOT_NEWLINE))
+ clrbit ('\n', &c);
+ if (dfa->syntax.syntax_bits & RE_DOT_NOT_NULL)
+ clrbit ('\0', &c);
+ dfa->utf8_anychar_classes[0] = CSET + charclass_index (dfa, &c);
+
+ for (int i = 1; i < sizeof utf8_classes / sizeof *utf8_classes; i++)
+ dfa->utf8_anychar_classes[i]
+ = CSET + charclass_index (dfa, &utf8_classes[i]);
+ }
+
+ /* Implement the "A|(B|DE|GH|(F|IJ|LM|KC)C)C" pattern mentioned above.
+ The token buffer is in reverse Polish order, so we get
+ "A B D E CAT OR G H CAT OR F I J CAT OR L M CAT OR K
+ C CAT OR C CAT OR C CAT OR". */
+ addtok (dfa, dfa->utf8_anychar_classes[A]);
+ addtok (dfa, dfa->utf8_anychar_classes[B]);
+ addtok (dfa, D_token);
+ addtok (dfa, dfa->utf8_anychar_classes[E]);
+ addtok (dfa, CAT);
+ addtok (dfa, OR);
+ addtok (dfa, G_token);
+ addtok (dfa, dfa->utf8_anychar_classes[H]);
+ addtok (dfa, CAT);
+ addtok (dfa, OR);
+ addtok (dfa, dfa->utf8_anychar_classes[F]);
+ addtok (dfa, I_token);
+ addtok (dfa, dfa->utf8_anychar_classes[J]);
+ addtok (dfa, CAT);
+ addtok (dfa, OR);
+ addtok (dfa, L_token);
+ addtok (dfa, dfa->utf8_anychar_classes[M]);
+ addtok (dfa, CAT);
+ addtok (dfa, OR);
+ addtok (dfa, dfa->utf8_anychar_classes[K]);
+ for (int i = 0; i < 3; i++)
{
- addtok (dfa, dfa->utf8_anychar_classes[0]);
+ addtok (dfa, dfa->utf8_anychar_classes[C]);
addtok (dfa, CAT);
addtok (dfa, OR);
}
@@ -1843,9 +1853,8 @@ atom (struct dfa *dfa)
if (dfa->syntax.case_fold)
{
wchar_t folded[CASE_FOLDED_BUFSIZE];
- unsigned int n = case_folded_counterparts (dfa->lex.wctok,
- folded);
- for (unsigned int i = 0; i < n; i++)
+ int n = case_folded_counterparts (dfa->lex.wctok, folded);
+ for (int i = 0; i < n; i++)
{
addtok_wc (dfa, folded[i]);
addtok (dfa, OR);
@@ -1868,8 +1877,8 @@ atom (struct dfa *dfa)
}
/* Return the number of tokens in the given subexpression. */
-static size_t _GL_ATTRIBUTE_PURE
-nsubtoks (struct dfa const *dfa, size_t tindex)
+static idx_t _GL_ATTRIBUTE_PURE
+nsubtoks (struct dfa const *dfa, idx_t tindex)
{
switch (dfa->tokens[tindex - 1])
{
@@ -1882,7 +1891,7 @@ nsubtoks (struct dfa const *dfa, size_t tindex)
case CAT:
case OR:
{
- size_t ntoks1 = nsubtoks (dfa, tindex - 1);
+ idx_t ntoks1 = nsubtoks (dfa, tindex - 1);
return 1 + ntoks1 + nsubtoks (dfa, tindex - 1 - ntoks1);
}
}
@@ -1890,14 +1899,14 @@ nsubtoks (struct dfa const *dfa, size_t tindex)
/* Copy the given subexpression to the top of the tree. */
static void
-copytoks (struct dfa *dfa, size_t tindex, size_t ntokens)
+copytoks (struct dfa *dfa, idx_t tindex, idx_t ntokens)
{
if (dfa->localeinfo.multibyte)
- for (size_t i = 0; i < ntokens; ++i)
+ for (idx_t i = 0; i < ntokens; i++)
addtok_mb (dfa, dfa->tokens[tindex + i],
dfa->multibyte_prop[tindex + i]);
else
- for (size_t i = 0; i < ntokens; ++i)
+ for (idx_t i = 0; i < ntokens; i++)
addtok_mb (dfa, dfa->tokens[tindex + i], 3);
}
@@ -1909,8 +1918,8 @@ closure (struct dfa *dfa)
|| dfa->parse.tok == PLUS || dfa->parse.tok == REPMN)
if (dfa->parse.tok == REPMN && (dfa->lex.minrep || dfa->lex.maxrep))
{
- size_t ntokens = nsubtoks (dfa, dfa->tindex);
- size_t tindex = dfa->tindex - ntokens;
+ idx_t ntokens = nsubtoks (dfa, dfa->tindex);
+ idx_t tindex = dfa->tindex - ntokens;
if (dfa->lex.maxrep < 0)
addtok (dfa, PLUS);
if (dfa->lex.minrep == 0)
@@ -1966,11 +1975,10 @@ regexp (struct dfa *dfa)
}
}
-/* Main entry point for the parser. S is a string to be parsed, len is the
- length of the string, so s can include NUL characters. D is a pointer to
- the struct dfa to parse into. */
-static void
-dfaparse (char const *s, size_t len, struct dfa *d)
+/* Parse a string S of length LEN into D. S can include NUL characters.
+ This is the main entry point for the parser. */
+void
+dfaparse (char const *s, idx_t len, struct dfa *d)
{
d->lex.ptr = s;
d->lex.left = len;
@@ -2018,7 +2026,7 @@ copy (position_set const *src, position_set *dst)
}
static void
-alloc_position_set (position_set *s, size_t size)
+alloc_position_set (position_set *s, idx_t size)
{
s->elems = xnmalloc (size, sizeof *s->elems);
s->alloc = size;
@@ -2032,11 +2040,11 @@ alloc_position_set (position_set *s, size_t size)
static void
insert (position p, position_set *s)
{
- ptrdiff_t count = s->nelem;
- ptrdiff_t lo = 0, hi = count;
+ idx_t count = s->nelem;
+ idx_t lo = 0, hi = count;
while (lo < hi)
{
- ptrdiff_t mid = (lo + hi) >> 1;
+ idx_t mid = (lo + hi) >> 1;
if (s->elems[mid].index < p.index)
lo = mid + 1;
else if (s->elems[mid].index == p.index)
@@ -2049,7 +2057,7 @@ insert (position p, position_set *s)
}
s->elems = maybe_realloc (s->elems, count, &s->alloc, -1, sizeof *s->elems);
- for (ptrdiff_t i = count; i > lo; i--)
+ for (idx_t i = count; i > lo; i--)
s->elems[i] = s->elems[i - 1];
s->elems[lo] = p;
++s->nelem;
@@ -2058,7 +2066,7 @@ insert (position p, position_set *s)
static void
append (position p, position_set *s)
{
- ptrdiff_t count = s->nelem;
+ idx_t count = s->nelem;
s->elems = maybe_realloc (s->elems, count, &s->alloc, -1, sizeof *s->elems);
s->elems[s->nelem++] = p;
}
@@ -2070,7 +2078,7 @@ static void
merge_constrained (position_set const *s1, position_set const *s2,
unsigned int c2, position_set *m)
{
- ptrdiff_t i = 0, j = 0;
+ idx_t i = 0, j = 0;
if (m->alloc - s1->nelem < s2->nelem)
{
@@ -2114,7 +2122,7 @@ merge2 (position_set *dst, position_set const *src, position_set *m)
{
if (src->nelem < 4)
{
- for (ptrdiff_t i = 0; i < src->nelem; ++i)
+ for (idx_t i = 0; i < src->nelem; i++)
insert (src->elems[i], dst);
}
else
@@ -2127,19 +2135,19 @@ merge2 (position_set *dst, position_set const *src, position_set *m)
/* Delete a position from a set. Return the nonzero constraint of the
deleted position, or zero if there was no such position. */
static unsigned int
-delete (size_t del, position_set *s)
+delete (idx_t del, position_set *s)
{
- size_t count = s->nelem;
- size_t lo = 0, hi = count;
+ idx_t count = s->nelem;
+ idx_t lo = 0, hi = count;
while (lo < hi)
{
- size_t mid = (lo + hi) >> 1;
+ idx_t mid = (lo + hi) >> 1;
if (s->elems[mid].index < del)
lo = mid + 1;
else if (s->elems[mid].index == del)
{
unsigned int c = s->elems[mid].constraint;
- size_t i;
+ idx_t i;
for (i = mid; i + 1 < count; i++)
s->elems[i] = s->elems[i + 1];
s->nelem = i;
@@ -2153,7 +2161,7 @@ delete (size_t del, position_set *s)
/* Replace a position with the followed set. */
static void
-replace (position_set *dst, size_t del, position_set *add,
+replace (position_set *dst, idx_t del, position_set *add,
unsigned int constraint, position_set *tmp)
{
unsigned int c = delete (del, dst) & constraint;
@@ -2177,7 +2185,10 @@ state_index (struct dfa *d, position_set const *s, int context)
token first_end = 0;
for (i = 0; i < s->nelem; ++i)
- hash ^= s->elems[i].index + s->elems[i].constraint;
+ {
+ size_t ind = s->elems[i].index;
+ hash ^= ind + s->elems[i].constraint;
+ }
/* Try to find a state that exactly matches the proposed one. */
for (i = 0; i < d->sindex; ++i)
@@ -2195,10 +2206,10 @@ state_index (struct dfa *d, position_set const *s, int context)
}
#ifdef DEBUG
- fprintf (stderr, "new state %zd\n nextpos:", i);
+ fprintf (stderr, "new state %td\n nextpos:", i);
for (state_num j = 0; j < s->nelem; j++)
{
- fprintf (stderr, " %zu:", s->elems[j].index);
+ fprintf (stderr, " %td:", s->elems[j].index);
prtok (d->tokens[s->elems[j].index]);
}
fprintf (stderr, "\n context:");
@@ -2260,7 +2271,7 @@ epsclosure (struct dfa const *d)
{
position_set tmp;
alloc_position_set (&tmp, d->nleaves);
- for (size_t i = 0; i < d->tindex; ++i)
+ for (idx_t i = 0; i < d->tindex; i++)
if (d->follows[i].nelem > 0 && d->tokens[i] >= NOTCHAR
&& d->tokens[i] != BACKREF && d->tokens[i] != ANYCHAR
&& d->tokens[i] != MBCSET && d->tokens[i] < CSET)
@@ -2293,7 +2304,7 @@ epsclosure (struct dfa const *d)
delete (i, &d->follows[i]);
- for (size_t j = 0; j < d->tindex; j++)
+ for (idx_t j = 0; j < d->tindex; j++)
if (i != j && d->follows[j].nelem > 0)
replace (&d->follows[j], i, &d->follows[i], constraint, &tmp);
}
@@ -2308,7 +2319,7 @@ charclass_context (struct dfa const *dfa, charclass const *c)
{
int context = 0;
- for (unsigned int j = 0; j < CHARCLASS_WORDS; ++j)
+ for (int j = 0; j < CHARCLASS_WORDS; j++)
{
if (c->w[j] & dfa->syntax.newline.w[j])
context |= CTX_NEWLINE;
@@ -2332,7 +2343,7 @@ state_separate_contexts (struct dfa *d, position_set const *s)
{
int separate_contexts = 0;
- for (size_t j = 0; j < s->nelem; j++)
+ for (idx_t j = 0; j < s->nelem; j++)
separate_contexts |= d->separates[s->elems[j].index];
return separate_contexts;
@@ -2359,17 +2370,17 @@ enum
};
static void
-merge_nfa_state (struct dfa *d, size_t tindex, char *flags,
+merge_nfa_state (struct dfa *d, idx_t tindex, char *flags,
position_set *merged)
{
position_set *follows = d->follows;
- ptrdiff_t nelem = 0;
+ idx_t nelem = 0;
d->constraints[tindex] = 0;
- for (ptrdiff_t i = 0; i < follows[tindex].nelem; i++)
+ for (idx_t i = 0; i < follows[tindex].nelem; i++)
{
- size_t sindex = follows[tindex].elems[i].index;
+ idx_t sindex = follows[tindex].elems[i].index;
/* Skip the node as pruned in future. */
unsigned int iconstraint = follows[tindex].elems[i].constraint;
@@ -2384,11 +2395,11 @@ merge_nfa_state (struct dfa *d, size_t tindex, char *flags,
if (!(flags[sindex] & (OPT_LPAREN | OPT_RPAREN)))
{
- ptrdiff_t j;
+ idx_t j;
for (j = 0; j < nelem; j++)
{
- size_t dindex = follows[tindex].elems[j].index;
+ idx_t dindex = follows[tindex].elems[j].index;
if (follows[tindex].elems[j].constraint != iconstraint)
continue;
@@ -2424,19 +2435,14 @@ merge_nfa_state (struct dfa *d, size_t tindex, char *flags,
static int
compare (const void *a, const void *b)
{
- int aindex;
- int bindex;
-
- aindex = (int) ((position *) a)->index;
- bindex = (int) ((position *) b)->index;
-
- return aindex - bindex;
+ position const *p = a, *q = b;
+ return p->index < q->index ? -1 : p->index > q->index;
}
static void
reorder_tokens (struct dfa *d)
{
- ptrdiff_t nleaves;
+ idx_t nleaves;
ptrdiff_t *map;
token *tokens;
position_set *follows;
@@ -2449,7 +2455,7 @@ reorder_tokens (struct dfa *d)
map[0] = nleaves++;
- for (ptrdiff_t i = 1; i < d->tindex; i++)
+ for (idx_t i = 1; i < d->tindex; i++)
map[i] = -1;
tokens = xnmalloc (d->nleaves, sizeof *tokens);
@@ -2461,7 +2467,7 @@ reorder_tokens (struct dfa *d)
else
multibyte_prop = NULL;
- for (ptrdiff_t i = 0; i < d->tindex; i++)
+ for (idx_t i = 0; i < d->tindex; i++)
{
if (map[i] == -1)
{
@@ -2478,7 +2484,7 @@ reorder_tokens (struct dfa *d)
if (multibyte_prop != NULL)
multibyte_prop[map[i]] = d->multibyte_prop[i];
- for (ptrdiff_t j = 0; j < d->follows[i].nelem; j++)
+ for (idx_t j = 0; j < d->follows[i].nelem; j++)
{
if (map[d->follows[i].elems[j].index] == -1)
map[d->follows[i].elems[j].index] = nleaves++;
@@ -2490,7 +2496,7 @@ reorder_tokens (struct dfa *d)
sizeof *d->follows[i].elems, compare);
}
- for (ptrdiff_t i = 0; i < nleaves; i++)
+ for (idx_t i = 0; i < nleaves; i++)
{
d->tokens[i] = tokens[i];
d->follows[i] = follows[i];
@@ -2512,16 +2518,11 @@ reorder_tokens (struct dfa *d)
static void
dfaoptimize (struct dfa *d)
{
- char *flags;
- position_set merged0;
- position_set *merged;
-
- flags = xmalloc (d->tindex * sizeof *flags);
- memset (flags, 0, d->tindex * sizeof *flags);
+ char *flags = xzalloc (d->tindex);
- for (size_t i = 0; i < d->tindex; i++)
+ for (idx_t i = 0; i < d->tindex; i++)
{
- for (ptrdiff_t j = 0; j < d->follows[i].nelem; j++)
+ for (idx_t j = 0; j < d->follows[i].nelem; j++)
{
if (d->follows[i].elems[j].index == i)
flags[d->follows[i].elems[j].index] |= OPT_REPEAT;
@@ -2536,12 +2537,13 @@ dfaoptimize (struct dfa *d)
flags[0] |= OPT_QUEUED;
- merged = &merged0;
+ position_set merged0;
+ position_set *merged = &merged0;
alloc_position_set (merged, d->nleaves);
d->constraints = xnmalloc (d->tindex, sizeof *d->constraints);
- for (ptrdiff_t i = 0; i < d->tindex; i++)
+ for (idx_t i = 0; i < d->tindex; i++)
if (flags[i] & OPT_QUEUED)
merge_nfa_state (d, i, flags, merged);
@@ -2621,8 +2623,8 @@ dfaanalyze (struct dfa *d, bool searchflag)
bool nullable;
/* Counts of firstpos and lastpos sets. */
- size_t nfirstpos;
- size_t nlastpos;
+ idx_t nfirstpos;
+ idx_t nlastpos;
} *stkalloc = xnmalloc (d->depth, sizeof *stkalloc), *stk = stkalloc;
position_set merged; /* Result of merging sets. */
@@ -2631,9 +2633,9 @@ dfaanalyze (struct dfa *d, bool searchflag)
#ifdef DEBUG
fprintf (stderr, "dfaanalyze:\n");
- for (size_t i = 0; i < d->tindex; ++i)
+ for (idx_t i = 0; i < d->tindex; i++)
{
- fprintf (stderr, " %zu:", i);
+ fprintf (stderr, " %td:", i);
prtok (d->tokens[i]);
}
putc ('\n', stderr);
@@ -2643,7 +2645,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
alloc_position_set (&merged, d->nleaves);
d->follows = xcalloc (d->tindex, sizeof *d->follows);
- for (size_t i = 0; i < d->tindex; ++i)
+ for (idx_t i = 0; i < d->tindex; i++)
{
switch (d->tokens[i])
{
@@ -2664,7 +2666,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
tmp.elems = firstpos - stk[-1].nfirstpos;
tmp.nelem = stk[-1].nfirstpos;
position *p = lastpos - stk[-1].nlastpos;
- for (size_t j = 0; j < stk[-1].nlastpos; j++)
+ for (idx_t j = 0; j < stk[-1].nlastpos; j++)
{
merge (&tmp, &d->follows[p[j].index], &merged);
copy (&merged, &d->follows[p[j].index]);
@@ -2684,7 +2686,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
tmp.nelem = stk[-1].nfirstpos;
tmp.elems = firstpos - stk[-1].nfirstpos;
position *p = lastpos - stk[-1].nlastpos - stk[-2].nlastpos;
- for (size_t j = 0; j < stk[-2].nlastpos; j++)
+ for (idx_t j = 0; j < stk[-2].nlastpos; j++)
{
merge (&tmp, &d->follows[p[j].index], &merged);
copy (&merged, &d->follows[p[j].index]);
@@ -2705,7 +2707,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
else
{
position *p = lastpos - stk[-1].nlastpos - stk[-2].nlastpos;
- for (size_t j = 0; j < stk[-1].nlastpos; j++)
+ for (idx_t j = 0; j < stk[-1].nlastpos; j++)
p[j] = p[j + stk[-2].nlastpos];
lastpos -= stk[-2].nlastpos;
stk[-2].nlastpos = stk[-1].nlastpos;
@@ -2748,21 +2750,21 @@ dfaanalyze (struct dfa *d, bool searchflag)
}
#ifdef DEBUG
/* ... balance the above nonsyntactic #ifdef goo... */
- fprintf (stderr, "node %zu:", i);
+ fprintf (stderr, "node %td:", i);
prtok (d->tokens[i]);
putc ('\n', stderr);
fprintf (stderr,
stk[-1].nullable ? " nullable: yes\n" : " nullable: no\n");
fprintf (stderr, " firstpos:");
- for (size_t j = 0; j < stk[-1].nfirstpos; j++)
+ for (idx_t j = 0; j < stk[-1].nfirstpos; j++)
{
- fprintf (stderr, " %zu:", firstpos[j - stk[-1].nfirstpos].index);
+ fprintf (stderr, " %td:", firstpos[j - stk[-1].nfirstpos].index);
prtok (d->tokens[firstpos[j - stk[-1].nfirstpos].index]);
}
fprintf (stderr, "\n lastpos:");
- for (size_t j = 0; j < stk[-1].nlastpos; j++)
+ for (idx_t j = 0; j < stk[-1].nlastpos; j++)
{
- fprintf (stderr, " %zu:", lastpos[j - stk[-1].nlastpos].index);
+ fprintf (stderr, " %td:", lastpos[j - stk[-1].nlastpos].index);
prtok (d->tokens[lastpos[j - stk[-1].nlastpos].index]);
}
putc ('\n', stderr);
@@ -2776,17 +2778,17 @@ dfaanalyze (struct dfa *d, bool searchflag)
dfaoptimize (d);
#ifdef DEBUG
- for (size_t i = 0; i < d->tindex; ++i)
+ for (idx_t i = 0; i < d->tindex; i++)
if (d->tokens[i] == BEG || d->tokens[i] < NOTCHAR
|| d->tokens[i] == BACKREF || d->tokens[i] == ANYCHAR
|| d->tokens[i] == MBCSET || d->tokens[i] >= CSET)
{
- fprintf (stderr, "follows(%zu:", i);
+ fprintf (stderr, "follows(%td:", i);
prtok (d->tokens[i]);
fprintf (stderr, "):");
- for (size_t j = 0; j < d->follows[i].nelem; j++)
+ for (idx_t j = 0; j < d->follows[i].nelem; j++)
{
- fprintf (stderr, " %zu:", d->follows[i].elems[j].index);
+ fprintf (stderr, " %td:", d->follows[i].elems[j].index);
prtok (d->tokens[d->follows[i].elems[j].index]);
}
putc ('\n', stderr);
@@ -2802,7 +2804,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
d->separates = xnmalloc (d->tindex, sizeof *d->separates);
- for (ptrdiff_t i = 0; i < d->tindex; i++)
+ for (idx_t i = 0; i < d->tindex; i++)
{
d->separates[i] = 0;
@@ -2811,7 +2813,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
if (prev_letter_dependent (d->constraints[i]))
d->separates[i] |= CTX_LETTER;
- for (ptrdiff_t j = 0; j < d->follows[i].nelem; j++)
+ for (idx_t j = 0; j < d->follows[i].nelem; j++)
{
if (prev_newline_dependent (d->follows[i].elems[j].constraint))
d->separates[i] |= CTX_NEWLINE;
@@ -2847,12 +2849,12 @@ realloc_trans_if_necessary (struct dfa *d)
if (oldalloc < d->sindex)
{
state_num **realtrans = d->trans ? d->trans - 2 : NULL;
- ptrdiff_t newalloc1 = realtrans ? d->tralloc + 2 : 0;
+ idx_t newalloc1 = realtrans ? d->tralloc + 2 : 0;
realtrans = xpalloc (realtrans, &newalloc1, d->sindex - oldalloc,
-1, sizeof *realtrans);
realtrans[0] = realtrans[1] = NULL;
d->trans = realtrans + 2;
- ptrdiff_t newalloc = d->tralloc = newalloc1 - 2;
+ idx_t newalloc = d->tralloc = newalloc1 - 2;
d->fails = xnrealloc (d->fails, newalloc, sizeof *d->fails);
d->success = xnrealloc (d->success, newalloc, sizeof *d->success);
d->newlines = xnrealloc (d->newlines, newalloc, sizeof *d->newlines);
@@ -2965,8 +2967,8 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
/* Find the union of the follows of the positions of the group.
This is a hideously inefficient loop. Fix it someday. */
- for (size_t j = 0; j < d->states[s].elems.nelem; ++j)
- for (size_t k = 0;
+ for (idx_t j = 0; j < d->states[s].elems.nelem; j++)
+ for (idx_t k = 0;
k < d->follows[d->states[s].elems.elems[j].index].nelem; ++k)
insert (d->follows[d->states[s].elems.elems[j].index].elems[k],
&follows);
@@ -2978,7 +2980,7 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
charclass label;
fillset (&label);
- for (size_t i = 0; i < follows.nelem; ++i)
+ for (idx_t i = 0; i < follows.nelem; i++)
{
charclass matches; /* Set of matching characters. */
position pos = follows.elems[i];
@@ -3025,15 +3027,15 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
{
if (!succeeds_in_context (pos.constraint,
d->states[s].context, CTX_NEWLINE))
- for (size_t j = 0; j < CHARCLASS_WORDS; ++j)
+ for (int j = 0; j < CHARCLASS_WORDS; j++)
matches.w[j] &= ~d->syntax.newline.w[j];
if (!succeeds_in_context (pos.constraint,
d->states[s].context, CTX_LETTER))
- for (size_t j = 0; j < CHARCLASS_WORDS; ++j)
+ for (int j = 0; j < CHARCLASS_WORDS; ++j)
matches.w[j] &= ~d->syntax.letters.w[j];
if (!succeeds_in_context (pos.constraint,
d->states[s].context, CTX_NONE))
- for (size_t j = 0; j < CHARCLASS_WORDS; ++j)
+ for (int j = 0; j < CHARCLASS_WORDS; ++j)
matches.w[j] &= d->syntax.letters.w[j] | d->syntax.newline.w[j];
/* If there are no characters left, there's no point in going on. */
@@ -3048,24 +3050,24 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
}
#ifdef DEBUG
- fprintf (stderr, " nextpos %zu:", pos.index);
+ fprintf (stderr, " nextpos %td:", pos.index);
prtok (d->tokens[pos.index]);
fprintf (stderr, " of");
- for (size_t j = 0; j < NOTCHAR; j++)
+ for (unsigned j = 0; j < NOTCHAR; j++)
if (tstbit (j, &matches))
- fprintf (stderr, " 0x%02zx", j);
+ fprintf (stderr, " 0x%02x", j);
fprintf (stderr, "\n");
#endif
if (matched)
{
- for (size_t k = 0; k < CHARCLASS_WORDS; ++k)
+ for (int k = 0; k < CHARCLASS_WORDS; ++k)
label.w[k] &= matches.w[k];
append (pos, &group);
}
else
{
- for (size_t k = 0; k < CHARCLASS_WORDS; ++k)
+ for (int k = 0; k < CHARCLASS_WORDS; ++k)
label.w[k] &= ~matches.w[k];
}
}
@@ -3099,7 +3101,7 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
if (!mergeit)
{
mergeit = true;
- for (size_t j = 0; mergeit && j < group.nelem; j++)
+ for (idx_t j = 0; mergeit && j < group.nelem; j++)
mergeit &= d->multibyte_prop[group.elems[j].index];
}
if (mergeit)
@@ -3150,7 +3152,7 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
}
/* Set the transitions for each character in the label. */
- for (size_t i = 0; i < NOTCHAR; i++)
+ for (int i = 0; i < NOTCHAR; i++)
if (tstbit (i, &label))
switch (d->syntax.sbit[i])
{
@@ -3167,7 +3169,7 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
#ifdef DEBUG
fprintf (stderr, "trans table %td", s);
- for (size_t i = 0; i < NOTCHAR; ++i)
+ for (int i = 0; i < NOTCHAR; ++i)
{
if (!(i & 0xf))
fprintf (stderr, "\n");
@@ -3346,11 +3348,11 @@ skip_remains_mb (struct dfa *d, unsigned char const *p,
- [[:alpha:]] etc. in multibyte locale (except [[:digit:]] works OK)
- back-reference: (.)\1
- word-delimiter in multibyte locale: \<, \>, \b, \B
- See using_simple_locale for the definition of "simple locale". */
+ See struct localeinfo.simple for the definition of "simple locale". */
static inline char *
dfaexec_main (struct dfa *d, char const *begin, char *end, bool allow_nl,
- size_t *count, bool multibyte)
+ ptrdiff_t *count, bool multibyte)
{
if (MAX_TRCOUNT <= d->sindex)
{
@@ -3408,7 +3410,7 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, bool allow_nl,
alloc_position_set (&d->mb_follows, d->nleaves);
}
- size_t nlcount = 0;
+ idx_t nlcount = 0;
for (;;)
{
state_num *t;
@@ -3533,14 +3535,14 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, bool allow_nl,
static char *
dfaexec_mb (struct dfa *d, char const *begin, char *end,
- bool allow_nl, size_t *count, bool *backref)
+ bool allow_nl, ptrdiff_t *count, bool *backref)
{
return dfaexec_main (d, begin, end, allow_nl, count, true);
}
static char *
dfaexec_sb (struct dfa *d, char const *begin, char *end,
- bool allow_nl, size_t *count, bool *backref)
+ bool allow_nl, ptrdiff_t *count, bool *backref)
{
return dfaexec_main (d, begin, end, allow_nl, count, false);
}
@@ -3549,7 +3551,7 @@ dfaexec_sb (struct dfa *d, char const *begin, char *end,
any regexp that uses a construct not supported by this code. */
static char *
dfaexec_noop (struct dfa *d, char const *begin, char *end,
- bool allow_nl, size_t *count, bool *backref)
+ bool allow_nl, ptrdiff_t *count, bool *backref)
{
*backref = true;
return (char *) begin;
@@ -3561,7 +3563,7 @@ dfaexec_noop (struct dfa *d, char const *begin, char *end,
char *
dfaexec (struct dfa *d, char const *begin, char *end,
- bool allow_nl, size_t *count, bool *backref)
+ bool allow_nl, ptrdiff_t *count, bool *backref)
{
return d->dfaexec (d, begin, end, allow_nl, count, backref);
}
@@ -3598,7 +3600,7 @@ free_mbdata (struct dfa *d)
static bool _GL_ATTRIBUTE_PURE
dfa_supported (struct dfa const *d)
{
- for (size_t i = 0; i < d->tindex; i++)
+ for (idx_t i = 0; i < d->tindex; i++)
{
switch (d->tokens[i])
{
@@ -3626,7 +3628,7 @@ maybe_disable_superset_dfa (struct dfa *d)
return;
bool have_backref = false;
- for (size_t i = 0; i < d->tindex; ++i)
+ for (idx_t i = 0; i < d->tindex; i++)
{
switch (d->tokens[i])
{
@@ -3691,8 +3693,8 @@ dfassbuild (struct dfa *d)
bool have_achar = false;
bool have_nchar = false;
- size_t j;
- for (size_t i = j = 0; i < d->tindex; i++)
+ idx_t j;
+ for (idx_t i = j = 0; i < d->tindex; i++)
{
switch (d->tokens[i])
{
@@ -3741,11 +3743,15 @@ dfassbuild (struct dfa *d)
}
}
-/* Parse and analyze a single string of the given length. */
+/* Parse a string S of length LEN into D (but skip this step if S is null).
+ Then analyze D and build a matcher for it.
+ SEARCHFLAG says whether to build a searching or an exact matcher. */
void
-dfacomp (char const *s, size_t len, struct dfa *d, bool searchflag)
+dfacomp (char const *s, idx_t len, struct dfa *d, bool searchflag)
{
- dfaparse (s, len, d);
+ if (s != NULL)
+ dfaparse (s, len, d);
+
dfassbuild (d);
if (dfa_supported (d))
@@ -3778,7 +3784,7 @@ dfafree (struct dfa *d)
free (d->constraints);
free (d->separates);
- for (size_t i = 0; i < d->sindex; ++i)
+ for (idx_t i = 0; i < d->sindex; i++)
{
free (d->states[i].elems.elems);
free (d->states[i].mbps.elems);
@@ -3787,14 +3793,14 @@ dfafree (struct dfa *d)
if (d->follows)
{
- for (size_t i = 0; i < d->tindex; ++i)
+ for (idx_t i = 0; i < d->tindex; i++)
free (d->follows[i].elems);
free (d->follows);
}
if (d->trans)
{
- for (size_t i = 0; i < d->tralloc; ++i)
+ for (idx_t i = 0; i < d->tralloc; i++)
{
free (d->trans[i]);
free (d->fails[i]);
@@ -3898,10 +3904,10 @@ dfafree (struct dfa *d)
static char *
icatalloc (char *old, char const *new)
{
- size_t newsize = strlen (new);
+ idx_t newsize = strlen (new);
if (newsize == 0)
return old;
- size_t oldsize = strlen (old);
+ idx_t oldsize = strlen (old);
char *result = xrealloc (old, oldsize + newsize + 1);
memcpy (result + oldsize, new, newsize + 1);
return result;
@@ -3915,20 +3921,20 @@ freelist (char **cpp)
}
static char **
-enlist (char **cpp, char *new, size_t len)
+enlist (char **cpp, char *new, idx_t len)
{
new = memcpy (xmalloc (len + 1), new, len);
new[len] = '\0';
/* Is there already something in the list that's new (or longer)? */
- size_t i;
- for (i = 0; cpp[i] != NULL; ++i)
+ idx_t i;
+ for (i = 0; cpp[i] != NULL; i++)
if (strstr (cpp[i], new) != NULL)
{
free (new);
return cpp;
}
/* Eliminate any obsoleted strings. */
- for (size_t j = 0; cpp[j] != NULL; )
+ for (idx_t j = 0; cpp[j] != NULL; )
if (strstr (new, cpp[j]) == NULL)
++j;
else
@@ -3955,11 +3961,11 @@ comsubs (char *left, char const *right)
for (char *lcp = left; *lcp != '\0'; lcp++)
{
- size_t len = 0;
+ idx_t len = 0;
char *rcp = strchr (right, *lcp);
while (rcp != NULL)
{
- size_t i;
+ idx_t i;
for (i = 1; lcp[i] != '\0' && lcp[i] == rcp[i]; ++i)
continue;
if (i > len)
@@ -3987,9 +3993,9 @@ inboth (char **left, char **right)
{
char **both = xzalloc (sizeof *both);
- for (size_t lnum = 0; left[lnum] != NULL; ++lnum)
+ for (idx_t lnum = 0; left[lnum] != NULL; lnum++)
{
- for (size_t rnum = 0; right[rnum] != NULL; ++rnum)
+ for (idx_t rnum = 0; right[rnum] != NULL; rnum++)
{
char **temp = comsubs (left[lnum], right[rnum]);
both = addlists (both, temp);
@@ -4014,7 +4020,7 @@ struct must
};
static must *
-allocmust (must *mp, size_t size)
+allocmust (must *mp, idx_t size)
{
must *new_mp = xmalloc (sizeof *new_mp);
new_mp->in = xzalloc (sizeof *new_mp->in);
@@ -4058,9 +4064,9 @@ dfamust (struct dfa const *d)
bool endline = false;
bool need_begline = false;
bool need_endline = false;
- bool case_fold_unibyte = d->syntax.case_fold && MB_CUR_MAX == 1;
+ bool case_fold_unibyte = d->syntax.case_fold & !d->localeinfo.multibyte;
- for (size_t ri = 1; ri + 1 < d->tindex; ri++)
+ for (idx_t ri = 1; ri + 1 < d->tindex; ri++)
{
token t = d->tokens[ri];
switch (t)
@@ -4100,7 +4106,7 @@ dfamust (struct dfa const *d)
char **new;
must *rmp = mp;
must *lmp = mp = mp->prev;
- size_t j, ln, rn, n;
+ idx_t j, ln, rn, n;
/* Guaranteed to be. Unlikely, but ... */
if (streq (lmp->is, rmp->is))
@@ -4115,7 +4121,7 @@ dfamust (struct dfa const *d)
lmp->endline = false;
}
/* Left side--easy */
- size_t i = 0;
+ idx_t i = 0;
while (lmp->left[i] != '\0' && lmp->left[i] == rmp->left[i])
++i;
lmp->left[i] = '\0';
@@ -4145,7 +4151,7 @@ dfamust (struct dfa const *d)
case END:
assert (!mp->prev);
- for (size_t i = 0; mp->in[i] != NULL; ++i)
+ for (idx_t i = 0; mp->in[i] != NULL; i++)
if (strlen (mp->in[i]) > strlen (result))
result = mp->in[i];
if (streq (result, mp->is))
@@ -4169,8 +4175,8 @@ dfamust (struct dfa const *d)
lmp->in = addlists (lmp->in, rmp->in);
if (lmp->right[0] != '\0' && rmp->left[0] != '\0')
{
- size_t lrlen = strlen (lmp->right);
- size_t rllen = strlen (rmp->left);
+ idx_t lrlen = strlen (lmp->right);
+ idx_t rllen = strlen (rmp->left);
char *tp = xmalloc (lrlen + rllen);
memcpy (tp, lmp->right, lrlen);
memcpy (tp + lrlen, rmp->left, rllen);
@@ -4235,7 +4241,7 @@ dfamust (struct dfa const *d)
}
}
- size_t rj = ri + 2;
+ idx_t rj = ri + 2;
if (d->tokens[ri + 1] == CAT)
{
for (; rj < d->tindex - 1; rj += 2)
@@ -4250,7 +4256,7 @@ dfamust (struct dfa const *d)
mp->is[0] = mp->left[0] = mp->right[0]
= case_fold_unibyte ? toupper (t) : t;
- size_t i;
+ idx_t i;
for (i = 1; ri + 2 < rj; i++)
{
ri += 2;
@@ -4268,11 +4274,11 @@ dfamust (struct dfa const *d)
struct dfamust *dm = NULL;
if (*result)
{
- dm = xmalloc (sizeof *dm);
+ dm = xmalloc (FLEXSIZEOF (struct dfamust, must, strlen (result) + 1));
dm->exact = exact;
dm->begline = begline;
dm->endline = endline;
- dm->must = xstrdup (result);
+ strcpy (dm->must, result);
}
while (mp)
@@ -4288,7 +4294,6 @@ dfamust (struct dfa const *d)
void
dfamustfree (struct dfamust *dm)
{
- free (dm->must);
free (dm);
}
@@ -4305,13 +4310,11 @@ dfasyntax (struct dfa *dfa, struct localeinfo const *linfo,
{
memset (dfa, 0, offsetof (struct dfa, dfaexec));
dfa->dfaexec = linfo->multibyte ? dfaexec_mb : dfaexec_sb;
- dfa->simple_locale = using_simple_locale (linfo->multibyte);
dfa->localeinfo = *linfo;
dfa->fast = !dfa->localeinfo.multibyte;
dfa->canychar = -1;
- dfa->lex.cur_mb_len = 1;
dfa->syntax.syntax_bits_set = true;
dfa->syntax.case_fold = (bits & RE_ICASE) != 0;
dfa->syntax.anchor = (dfaopts & DFA_ANCHOR) != 0;
@@ -4341,4 +4344,16 @@ dfasyntax (struct dfa *dfa, struct localeinfo const *linfo,
}
}
+/* Initialize TO by copying FROM's syntax settings. */
+void
+dfacopysyntax (struct dfa *to, struct dfa const *from)
+{
+ memset (to, 0, offsetof (struct dfa, syntax));
+ to->canychar = -1;
+ to->fast = from->fast;
+ to->syntax = from->syntax;
+ to->dfaexec = from->dfaexec;
+ to->localeinfo = from->localeinfo;
+}
+
/* vim:set shiftwidth=2: */
diff --git a/lib/dfa.h b/lib/dfa.h
index fea815d..c5bff89 100644
--- a/lib/dfa.h
+++ b/lib/dfa.h
@@ -1,5 +1,5 @@
/* dfa.h - declarations for GNU deterministic regexp compiler
- Copyright (C) 1988, 1998, 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1998, 2007, 2009-2020 Free Software Foundation, Inc.
This 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,15 +31,21 @@ struct dfamust
bool exact;
bool begline;
bool endline;
- char *must;
+ char must[FLEXIBLE_ARRAY_MEMBER];
};
/* The dfa structure. It is completely opaque. */
struct dfa;
+/* Needed when Gnulib is not used. */
+#ifndef _GL_ATTRIBUTE_MALLOC
+# define _GL_ATTRIBUTE_MALLOC
+#endif
+
/* Entry points. */
/* Allocate a struct dfa. The struct dfa is completely opaque.
+ It should be initialized via dfasyntax or dfacopysyntax before other use.
The returned pointer should be passed directly to free() after
calling dfafree() on it. */
extern struct dfa *dfaalloc (void) _GL_ATTRIBUTE_MALLOC;
@@ -56,8 +62,7 @@ enum
DFA_EOL_NUL = 1 << 1
};
-/* Initialize or reinitialize a DFA. This must be called before
- any of the routines below. The arguments are:
+/* Initialize or reinitialize a DFA. The arguments are:
1. The DFA to operate on.
2. Information about the current locale.
3. Syntax bits described in regex.h.
@@ -65,16 +70,24 @@ enum
extern void dfasyntax (struct dfa *, struct localeinfo const *,
reg_syntax_t, int);
-/* Build and return the struct dfamust from the given struct dfa. */
+/* Initialize or reinitialize a DFA from an already-initialized DFA. */
+extern void dfacopysyntax (struct dfa *, struct dfa const *);
+
+/* Parse the given string of given length into the given struct dfa. */
+extern void dfaparse (char const *, ptrdiff_t, struct dfa *);
+
+/* Allocate and return a struct dfamust from a struct dfa that was
+ initialized by dfaparse and not yet given to dfacomp. */
extern struct dfamust *dfamust (struct dfa const *);
/* Free the storage held by the components of a struct dfamust. */
extern void dfamustfree (struct dfamust *);
/* Compile the given string of the given length into the given struct dfa.
- Final argument is a flag specifying whether to build a searching or an
- exact matcher. */
-extern void dfacomp (char const *, size_t, struct dfa *, bool);
+ The last argument says whether to build a searching or an exact matcher.
+ A null first argument means the struct dfa has already been
+ initialized by dfaparse; the second argument is ignored. */
+extern void dfacomp (char const *, ptrdiff_t, struct dfa *, bool);
/* Search through a buffer looking for a match to the given struct dfa.
Find the first occurrence of a string matching the regexp in the
@@ -89,7 +102,7 @@ extern void dfacomp (char const *, size_t, struct dfa *, bool);
encountered a back-reference. The caller can use this to decide
whether to fall back on a backtracking matcher. */
extern char *dfaexec (struct dfa *d, char const *begin, char *end,
- bool allow_nl, size_t *count, bool *backref);
+ bool allow_nl, ptrdiff_t *count, bool *backref);
/* Return a superset for D. The superset matches everything that D
matches, along with some other strings (though the latter should be
diff --git a/lib/dirname-lgpl.c b/lib/dirname-lgpl.c
index a40f6a9..27d4374 100644
--- a/lib/dirname-lgpl.c
+++ b/lib/dirname-lgpl.c
@@ -1,6 +1,6 @@
/* dirname.c -- return all but the last element in a file name
- Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2018 Free Software
+ Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/dirname.h b/lib/dirname.h
index 8b51111..8c12d93 100644
--- a/lib/dirname.h
+++ b/lib/dirname.h
@@ -1,6 +1,6 @@
/* Take file names apart into directory and base names.
- Copyright (C) 1998, 2001, 2003-2006, 2009-2018 Free Software Foundation,
+ Copyright (C) 1998, 2001, 2003-2006, 2009-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/dosname.h b/lib/dosname.h
index fef3b6d..5782960 100644
--- a/lib/dosname.h
+++ b/lib/dosname.h
@@ -1,6 +1,6 @@
/* File names on MS-DOS/Windows systems.
- Copyright (C) 2000-2001, 2004-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2000-2001, 2004-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/errno.in.h b/lib/errno.in.h
index b95c4e9..c27e0c7 100644
--- a/lib/errno.in.h
+++ b/lib/errno.in.h
@@ -1,6 +1,6 @@
/* A POSIX-like <errno.h>.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/error.c b/lib/error.c
index adc8733..3657b51 100644
--- a/lib/error.c
+++ b/lib/error.c
@@ -1,5 +1,5 @@
/* Error handler for noninteractive utilities
- Copyright (C) 1990-1998, 2000-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1990-1998, 2000-2007, 2009-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
@@ -119,7 +119,7 @@ int strerror_r (int errnum, char *buf, size_t buflen);
# endif
# endif
-#define program_name getprogname ()
+# define program_name getprogname ()
# if GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r
# define __strerror_r strerror_r
diff --git a/lib/error.h b/lib/error.h
index 36401e1..bad47a1 100644
--- a/lib/error.h
+++ b/lib/error.h
@@ -1,5 +1,5 @@
/* Declaration for error-reporting function
- Copyright (C) 1995-1997, 2003, 2006, 2008-2018 Free Software Foundation,
+ Copyright (C) 1995-1997, 2003, 2006, 2008-2020 Free Software Foundation,
Inc.
This file is part of the GNU C Library.
diff --git a/lib/exitfail.c b/lib/exitfail.c
index 19c5cba..189fa16 100644
--- a/lib/exitfail.c
+++ b/lib/exitfail.c
@@ -1,6 +1,6 @@
/* Failure exit status
- Copyright (C) 2002-2003, 2005-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/exitfail.h b/lib/exitfail.h
index a42057b..a69a03b 100644
--- a/lib/exitfail.h
+++ b/lib/exitfail.h
@@ -1,6 +1,6 @@
/* Failure exit status
- Copyright (C) 2002, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/fcntl.in.h b/lib/fcntl.in.h
index a1e7d35..b2e1e51 100644
--- a/lib/fcntl.in.h
+++ b/lib/fcntl.in.h
@@ -1,6 +1,6 @@
/* Like <fcntl.h>, but with non-working flags defined to 0.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This 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,6 +39,12 @@
#endif
#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
+/* Native Windows platforms declare open(), creat() in <io.h>. */
+#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__)
+# include <io.h>
+#endif
+
#else
/* Normal invocation convention. */
@@ -59,6 +65,12 @@
/* The include_next requires a split double-inclusion guard. */
#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
+/* Native Windows platforms declare open(), creat() in <io.h>. */
+#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__)
+# include <io.h>
+#endif
+
#ifndef _@GUARD_PREFIX@_FCNTL_H
#define _@GUARD_PREFIX@_FCNTL_H
@@ -66,12 +78,6 @@
# include <unistd.h>
#endif
-/* Native Windows platforms declare open(), creat() in <io.h>. */
-#if (@GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
- && (defined _WIN32 && ! defined __CYGWIN__)
-# include <io.h>
-#endif
-
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
@@ -82,6 +88,26 @@
/* Declare overridden functions. */
+#if @GNULIB_CREAT@
+# if @REPLACE_CREAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef creat
+# define creat rpl_creat
+# endif
+_GL_FUNCDECL_RPL (creat, int, (const char *filename, mode_t mode)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (creat, int, (const char *filename, mode_t mode));
+# else
+_GL_CXXALIAS_SYS (creat, int, (const char *filename, mode_t mode));
+# endif
+_GL_CXXALIASWARN (creat);
+#elif defined GNULIB_POSIXCHECK
+# undef creat
+/* Assume creat is always declared. */
+_GL_WARN_ON_USE (creat, "creat is not always POSIX compliant - "
+ "use gnulib module creat for portability");
+#endif
+
#if @GNULIB_FCNTL@
# if @REPLACE_FCNTL@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/lib/filename.h b/lib/filename.h
index a7ad7e7..d4c7020 100644
--- a/lib/filename.h
+++ b/lib/filename.h
@@ -1,5 +1,5 @@
/* Basic filename support macros.
- Copyright (C) 2001-2004, 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2004, 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gnulib-tests/flexmember.h b/lib/flexmember.h
index 7e3f598..0dc77c3 100644
--- a/gnulib-tests/flexmember.h
+++ b/lib/flexmember.h
@@ -1,6 +1,6 @@
/* Sizes of structs with flexible array members.
- Copyright 2016-2018 Free Software Foundation, Inc.
+ Copyright 2016-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -33,11 +33,26 @@
# define FLEXALIGNOF(type) _Alignof (type)
#endif
-/* Upper bound on the size of a struct of type TYPE with a flexible
- array member named MEMBER that is followed by N bytes of other data.
- This is not simply sizeof (TYPE) + N, since it may require
- alignment on unusually picky C11 platforms, and
- FLEXIBLE_ARRAY_MEMBER may be 1 on pre-C11 platforms.
+/* Yield a properly aligned upper bound on the size of a struct of
+ type TYPE with a flexible array member named MEMBER that is
+ followed by N bytes of other data. The result is suitable as an
+ argument to malloc. For example:
+
+ struct s { int n; char d[FLEXIBLE_ARRAY_MEMBER]; };
+ struct s *p = malloc (FLEXSIZEOF (struct s, d, n * sizeof (char)));
+
+ FLEXSIZEOF (TYPE, MEMBER, N) is not simply (sizeof (TYPE) + N),
+ since FLEXIBLE_ARRAY_MEMBER may be 1 on pre-C11 platforms. Nor is
+ it simply (offsetof (TYPE, MEMBER) + N), as that might yield a size
+ that causes malloc to yield a pointer that is not properly aligned
+ for TYPE; for example, if sizeof (int) == alignof (int) == 4,
+ malloc (offsetof (struct s, d) + 3 * sizeof (char)) is equivalent
+ to malloc (7) and might yield a pointer that is not a multiple of 4
+ (which means the pointer is not properly aligned for struct s),
+ whereas malloc (FLEXSIZEOF (struct s, d, 3 * sizeof (char))) is
+ equivalent to malloc (8) and must yield a pointer that is a
+ multiple of 4.
+
Yield a value less than N if and only if arithmetic overflow occurs. */
#define FLEXSIZEOF(type, member, n) \
diff --git a/lib/fpending.c b/lib/fpending.c
index de370d4..802ebcb 100644
--- a/lib/fpending.c
+++ b/lib/fpending.c
@@ -1,5 +1,5 @@
/* fpending.c -- return the number of pending output bytes on a stream
- Copyright (C) 2000, 2004, 2006-2007, 2009-2018 Free Software Foundation,
+ Copyright (C) 2000, 2004, 2006-2007, 2009-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/fpending.h b/lib/fpending.h
index 2ff26bc..a8b8859 100644
--- a/lib/fpending.h
+++ b/lib/fpending.h
@@ -1,6 +1,6 @@
/* Declare __fpending.
- Copyright (C) 2000, 2003, 2005-2006, 2009-2018 Free Software Foundation,
+ Copyright (C) 2000, 2003, 2005-2006, 2009-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/fstat.c b/lib/fstat.c
index 41ee761..235014a 100644
--- a/lib/fstat.c
+++ b/lib/fstat.c
@@ -1,5 +1,5 @@
/* fstat() replacement.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -40,10 +40,14 @@ orig_fstat (int fd, struct stat *buf)
#endif
/* Specification. */
+#ifdef __osf__
/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
eliminates this include because of the preliminary #include <sys/stat.h>
above. */
-#include "sys/stat.h"
+# include "sys/stat.h"
+#else
+# include <sys/stat.h>
+#endif
#include "stat-time.h"
diff --git a/lib/fwriting.c b/lib/fwriting.c
index 4ffa12d..e0d535d 100644
--- a/lib/fwriting.c
+++ b/lib/fwriting.c
@@ -1,5 +1,5 @@
/* Retrieve information about a FILE stream.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/fwriting.h b/lib/fwriting.h
index 42f7e94..111e3dc 100644
--- a/lib/fwriting.h
+++ b/lib/fwriting.h
@@ -1,5 +1,5 @@
/* Retrieve information about a FILE stream.
- Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/get-permissions.c b/lib/get-permissions.c
index 3b98451..e1bcd9f 100644
--- a/lib/get-permissions.c
+++ b/lib/get-permissions.c
@@ -1,6 +1,6 @@
/* Get permissions of a file. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -108,7 +108,7 @@ get_permissions (const char *name, int desc, mode_t mode,
When fetching the source ACL, we simply fetch both ACL types.
When setting the destination ACL, we try either ACL types, assuming
that the kernel will translate the ACL from one form to the other.
- (See in <http://docs.sun.com/app/docs/doc/819-2241/6n4huc7ia?l=en&a=view>
+ (See in <https://docs.oracle.com/cd/E86824_01/html/E54765/acl-2.html>
the description of ENOTSUP.) */
for (;;)
{
diff --git a/lib/getdelim.c b/lib/getdelim.c
index cc1e9fe..fb39b46 100644
--- a/lib/getdelim.c
+++ b/lib/getdelim.c
@@ -1,5 +1,5 @@
/* getdelim.c --- Implementation of replacement getdelim function.
- Copyright (C) 1994, 1996-1998, 2001, 2003, 2005-2018 Free Software
+ Copyright (C) 1994, 1996-1998, 2001, 2003, 2005-2020 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or
diff --git a/lib/getfilecon.c b/lib/getfilecon.c
index 3bf254e..a35a001 100644
--- a/lib/getfilecon.c
+++ b/lib/getfilecon.c
@@ -1,5 +1,5 @@
/* wrap getfilecon, lgetfilecon, and fgetfilecon
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/getopt-cdefs.in.h b/lib/getopt-cdefs.in.h
index 12b5a87..c510ab1 100644
--- a/lib/getopt-cdefs.in.h
+++ b/lib/getopt-cdefs.in.h
@@ -1,5 +1,5 @@
/* getopt-on-non-glibc compatibility macros.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of gnulib.
Unlike most of the getopt implementation, it is NOT shared
with the GNU C Library.
diff --git a/lib/getopt-core.h b/lib/getopt-core.h
index e51b6c7..d4d942e 100644
--- a/lib/getopt-core.h
+++ b/lib/getopt-core.h
@@ -1,5 +1,5 @@
/* Declarations for getopt (basic, portable features only).
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library and is also part of gnulib.
Patches to this file should be submitted to both projects.
diff --git a/lib/getopt-ext.h b/lib/getopt-ext.h
index cb41206..05f7083 100644
--- a/lib/getopt-ext.h
+++ b/lib/getopt-ext.h
@@ -1,5 +1,5 @@
/* Declarations for getopt (GNU extensions).
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library and is also part of gnulib.
Patches to this file should be submitted to both projects.
diff --git a/lib/getopt-pfx-core.h b/lib/getopt-pfx-core.h
index c62f9e2..da0a6d0 100644
--- a/lib/getopt-pfx-core.h
+++ b/lib/getopt-pfx-core.h
@@ -1,5 +1,5 @@
/* getopt (basic, portable features) gnulib wrapper header.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of gnulib.
Unlike most of the getopt implementation, it is NOT shared
with the GNU C Library.
diff --git a/lib/getopt-pfx-ext.h b/lib/getopt-pfx-ext.h
index 753f129..647fae6 100644
--- a/lib/getopt-pfx-ext.h
+++ b/lib/getopt-pfx-ext.h
@@ -1,5 +1,5 @@
/* getopt (GNU extensions) gnulib wrapper header.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of gnulib.
Unlike most of the getopt implementation, it is NOT shared
with the GNU C Library.
diff --git a/lib/getopt.c b/lib/getopt.c
index 11e36ee..a6389d8 100644
--- a/lib/getopt.c
+++ b/lib/getopt.c
@@ -1,5 +1,5 @@
/* Getopt for GNU.
- Copyright (C) 1987-2018 Free Software Foundation, Inc.
+ Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library and is also part of gnulib.
Patches to this file should be submitted to both projects.
diff --git a/lib/getopt.in.h b/lib/getopt.in.h
index 5fb58dd..36e04bb 100644
--- a/lib/getopt.in.h
+++ b/lib/getopt.in.h
@@ -1,5 +1,5 @@
/* Declarations for getopt.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of gnulib.
Unlike most of the getopt implementation, it is NOT shared
with the GNU C Library, which supplies a different version of
diff --git a/lib/getopt1.c b/lib/getopt1.c
index 9c7fff4..0902efe 100644
--- a/lib/getopt1.c
+++ b/lib/getopt1.c
@@ -1,5 +1,5 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987-2018 Free Software Foundation, Inc.
+ Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library and is also part of gnulib.
Patches to this file should be submitted to both projects.
diff --git a/lib/getopt_int.h b/lib/getopt_int.h
index b0e9a6d..afcd8a6 100644
--- a/lib/getopt_int.h
+++ b/lib/getopt_int.h
@@ -1,5 +1,5 @@
/* Internal declarations for getopt.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library and is also part of gnulib.
Patches to this file should be submitted to both projects.
diff --git a/lib/getprogname.c b/lib/getprogname.c
index 58da144..9f69f5a 100644
--- a/lib/getprogname.c
+++ b/lib/getprogname.c
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2016-2018 Free Software Foundation, Inc.
+ Copyright (C) 2016-2020 Free Software Foundation, Inc.
This 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,10 +70,10 @@ getprogname (void)
p = "?";
return last_component (p);
# elif HAVE_DECL___ARGV /* mingw, MSVC */
- /* https://msdn.microsoft.com/en-us/library/dn727674.aspx */
+ /* https://docs.microsoft.com/en-us/cpp/c-runtime-library/argc-argv-wargv */
const char *p = __argv && __argv[0] ? __argv[0] : "?";
return last_component (p);
-# elif HAVE_VAR___PROGNAME /* OpenBSD, QNX */
+# elif HAVE_VAR___PROGNAME /* OpenBSD, Android, QNX */
/* https://man.openbsd.org/style.9 */
/* http://www.qnx.de/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.neutrino_lib_ref%2Fp%2F__progname.html */
/* Be careful to declare this only when we absolutely need it
@@ -82,7 +82,11 @@ getprogname (void)
malfunction (have zero length) with Fedora 25's glibc. */
extern char *__progname;
const char *p = __progname;
+# if defined __ANDROID__
+ return last_component (p);
+# else
return p && p[0] ? p : "?";
+# endif
# elif _AIX /* AIX */
/* Idea by Bastien ROUCARIÈS,
https://lists.gnu.org/r/bug-gnulib/2010-12/msg00095.html
@@ -229,12 +233,13 @@ getprogname (void)
{
char *name = buf.pr_fname;
size_t namesize = sizeof buf.pr_fname;
+ /* It may not be NUL-terminated. */
char *namenul = memchr (name, '\0', namesize);
size_t namelen = namenul ? namenul - name : namesize;
char *namecopy = malloc (namelen + 1);
if (namecopy)
{
- namecopy[namelen] = 0;
+ namecopy[namelen] = '\0';
return memcpy (namecopy, name, namelen);
}
}
diff --git a/lib/getprogname.h b/lib/getprogname.h
index ee6688f..676912b 100644
--- a/lib/getprogname.h
+++ b/lib/getprogname.h
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2016-2018 Free Software Foundation, Inc.
+ Copyright (C) 2016-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/gettext.h b/lib/gettext.h
index 8eef008..0bd1e13 100644
--- a/lib/gettext.h
+++ b/lib/gettext.h
@@ -1,5 +1,5 @@
/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2018 Free Software
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2020 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -184,9 +184,16 @@ npgettext_aux (const char *domain,
#include <string.h>
-#if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
- /* || (__STDC_VERSION__ == 199901L && !defined __HP_cc)
- || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ )
+/* GNULIB_NO_VLA can be defined to disable use of VLAs even if supported.
+ This relates to the -Wvla and -Wvla-larger-than warnings, enabled in
+ the default GCC many warnings set. This allows programs to disable use
+ of VLAs, which may be unintended, or may be awkward to support portably,
+ or may have security implications due to non-deterministic stack usage. */
+
+#if (!defined GNULIB_NO_VLA \
+ && (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
+ /* || (__STDC_VERSION__ == 199901L && !defined __HP_cc)
+ || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ ))
# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1
#else
# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0
diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c
index 1bd50fa..b63f8f2 100644
--- a/lib/gettimeofday.c
+++ b/lib/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-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -72,10 +72,10 @@ gettimeofday (struct timeval *restrict tv, void *restrict tz)
/* On native Windows, there are two ways to get the current time:
GetSystemTimeAsFileTime
- <https://msdn.microsoft.com/en-us/library/ms724397.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletime>
or
GetSystemTimePreciseAsFileTime
- <https://msdn.microsoft.com/en-us/library/hh706895.aspx>.
+ <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime>.
GetSystemTimeAsFileTime produces values that jump by increments of
15.627 milliseconds (!) on average.
Whereas GetSystemTimePreciseAsFileTime values usually jump by 1 or 2
@@ -92,7 +92,7 @@ gettimeofday (struct timeval *restrict tv, void *restrict tz)
GetSystemTimeAsFileTime (&current_time);
/* Convert from FILETIME to 'struct timeval'. */
- /* FILETIME: <https://msdn.microsoft.com/en-us/library/ms724284.aspx> */
+ /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
ULONGLONG since_1601 =
((ULONGLONG) current_time.dwHighDateTime << 32)
| (ULONGLONG) current_time.dwLowDateTime;
diff --git a/lib/glthread/lock.c b/lib/glthread/lock.c
index f166d7c..a84318b 100644
--- a/lib/glthread/lock.c
+++ b/lib/glthread/lock.c
@@ -1,5 +1,5 @@
/* Locking in multithreaded situations.
- Copyright (C) 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
This 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,8 +15,7 @@
along with this program; if not, see <https://www.gnu.org/licenses/>. */
/* Written by Bruno Haible <bruno@clisp.org>, 2005.
- Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
- gthr-win32.h. */
+ Based on GCC's gthr-posix.h, gthr-posix95.h. */
#include <config.h>
@@ -24,6 +23,229 @@
/* ========================================================================= */
+#if USE_ISOC_THREADS || USE_ISOC_AND_POSIX_THREADS
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+int
+glthread_lock_init (gl_lock_t *lock)
+{
+ if (mtx_init (&lock->mutex, mtx_plain) != thrd_success)
+ return ENOMEM;
+ lock->init_needed = 0;
+ return 0;
+}
+
+int
+glthread_lock_lock (gl_lock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_lock (&lock->mutex) != thrd_success)
+ return EAGAIN;
+ return 0;
+}
+
+int
+glthread_lock_unlock (gl_lock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_unlock (&lock->mutex) != thrd_success)
+ return EINVAL;
+ return 0;
+}
+
+int
+glthread_lock_destroy (gl_lock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ mtx_destroy (&lock->mutex);
+ return 0;
+}
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+int
+glthread_rwlock_init (gl_rwlock_t *lock)
+{
+ if (mtx_init (&lock->lock, mtx_plain) != thrd_success
+ || cnd_init (&lock->waiting_readers) != thrd_success
+ || cnd_init (&lock->waiting_writers) != thrd_success)
+ return ENOMEM;
+ lock->waiting_writers_count = 0;
+ lock->runcount = 0;
+ lock->init_needed = 0;
+ return 0;
+}
+
+int
+glthread_rwlock_rdlock (gl_rwlock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_lock (&lock->lock) != thrd_success)
+ return EAGAIN;
+ /* Test whether only readers are currently running, and whether the runcount
+ field will not overflow, and whether no writer is waiting. The latter
+ condition is because POSIX recommends that "write locks shall take
+ precedence over read locks", to avoid "writer starvation". */
+ while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0))
+ {
+ /* This thread has to wait for a while. Enqueue it among the
+ waiting_readers. */
+ if (cnd_wait (&lock->waiting_readers, &lock->lock) != thrd_success)
+ {
+ mtx_unlock (&lock->lock);
+ return EINVAL;
+ }
+ }
+ lock->runcount++;
+ if (mtx_unlock (&lock->lock) != thrd_success)
+ return EINVAL;
+ return 0;
+}
+
+int
+glthread_rwlock_wrlock (gl_rwlock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_lock (&lock->lock) != thrd_success)
+ return EAGAIN;
+ /* Test whether no readers or writers are currently running. */
+ while (!(lock->runcount == 0))
+ {
+ /* This thread has to wait for a while. Enqueue it among the
+ waiting_writers. */
+ lock->waiting_writers_count++;
+ if (cnd_wait (&lock->waiting_writers, &lock->lock) != thrd_success)
+ {
+ lock->waiting_writers_count--;
+ mtx_unlock (&lock->lock);
+ return EINVAL;
+ }
+ lock->waiting_writers_count--;
+ }
+ lock->runcount--; /* runcount becomes -1 */
+ if (mtx_unlock (&lock->lock) != thrd_success)
+ return EINVAL;
+ return 0;
+}
+
+int
+glthread_rwlock_unlock (gl_rwlock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_lock (&lock->lock) != thrd_success)
+ return EAGAIN;
+ if (lock->runcount < 0)
+ {
+ /* Drop a writer lock. */
+ if (!(lock->runcount == -1))
+ {
+ mtx_unlock (&lock->lock);
+ return EINVAL;
+ }
+ lock->runcount = 0;
+ }
+ else
+ {
+ /* Drop a reader lock. */
+ if (!(lock->runcount > 0))
+ {
+ mtx_unlock (&lock->lock);
+ return EINVAL;
+ }
+ lock->runcount--;
+ }
+ if (lock->runcount == 0)
+ {
+ /* POSIX recommends that "write locks shall take precedence over read
+ locks", to avoid "writer starvation". */
+ if (lock->waiting_writers_count > 0)
+ {
+ /* Wake up one of the waiting writers. */
+ if (cnd_signal (&lock->waiting_writers) != thrd_success)
+ {
+ mtx_unlock (&lock->lock);
+ return EINVAL;
+ }
+ }
+ else
+ {
+ /* Wake up all waiting readers. */
+ if (cnd_broadcast (&lock->waiting_readers) != thrd_success)
+ {
+ mtx_unlock (&lock->lock);
+ return EINVAL;
+ }
+ }
+ }
+ if (mtx_unlock (&lock->lock) != thrd_success)
+ return EINVAL;
+ return 0;
+}
+
+int
+glthread_rwlock_destroy (gl_rwlock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ mtx_destroy (&lock->lock);
+ cnd_destroy (&lock->waiting_readers);
+ cnd_destroy (&lock->waiting_writers);
+ return 0;
+}
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+int
+glthread_recursive_lock_init (gl_recursive_lock_t *lock)
+{
+ if (mtx_init (&lock->mutex, mtx_plain | mtx_recursive) != thrd_success)
+ return ENOMEM;
+ lock->init_needed = 0;
+ return 0;
+}
+
+int
+glthread_recursive_lock_lock (gl_recursive_lock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_lock (&lock->mutex) != thrd_success)
+ return EAGAIN;
+ return 0;
+}
+
+int
+glthread_recursive_lock_unlock (gl_recursive_lock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ if (mtx_unlock (&lock->mutex) != thrd_success)
+ return EINVAL;
+ return 0;
+}
+
+int
+glthread_recursive_lock_destroy (gl_recursive_lock_t *lock)
+{
+ if (lock->init_needed)
+ call_once (&lock->init_once, lock->init_func);
+ mtx_destroy (&lock->mutex);
+ return 0;
+}
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+#endif
+
+/* ========================================================================= */
+
#if USE_POSIX_THREADS
/* -------------------------- gl_lock_t datatype -------------------------- */
@@ -32,7 +254,7 @@
# if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (defined PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP && (__GNU_LIBRARY__ > 1)))
-# ifdef PTHREAD_RWLOCK_INITIALIZER
+# if defined PTHREAD_RWLOCK_INITIALIZER || defined PTHREAD_RWLOCK_INITIALIZER_NP
# if !HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER
/* glibc with bug https://sourceware.org/bugzilla/show_bug.cgi?id=13701 */
@@ -500,722 +722,8 @@ glthread_once_singlethreaded (pthread_once_t *once_control)
/* ========================================================================= */
-#if USE_PTH_THREADS
-
-/* Use the GNU Pth threads library. */
-
-/* -------------------------- gl_lock_t datatype -------------------------- */
-
-/* ------------------------- gl_rwlock_t datatype ------------------------- */
-
-# if !HAVE_PTH_RWLOCK_ACQUIRE_PREFER_WRITER
-
-int
-glthread_rwlock_init_multithreaded (gl_rwlock_t *lock)
-{
- if (!pth_mutex_init (&lock->lock))
- return errno;
- if (!pth_cond_init (&lock->waiting_readers))
- return errno;
- if (!pth_cond_init (&lock->waiting_writers))
- return errno;
- lock->waiting_writers_count = 0;
- lock->runcount = 0;
- lock->initialized = 1;
- return 0;
-}
-
-int
-glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock)
-{
- if (!lock->initialized)
- glthread_rwlock_init_multithreaded (lock);
- if (!pth_mutex_acquire (&lock->lock, 0, NULL))
- return errno;
- /* Test whether only readers are currently running, and whether the runcount
- field will not overflow, and whether no writer is waiting. The latter
- condition is because POSIX recommends that "write locks shall take
- precedence over read locks", to avoid "writer starvation". */
- while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0))
- {
- /* This thread has to wait for a while. Enqueue it among the
- waiting_readers. */
- if (!pth_cond_await (&lock->waiting_readers, &lock->lock, NULL))
- {
- int err = errno;
- pth_mutex_release (&lock->lock);
- return err;
- }
- }
- lock->runcount++;
- return (!pth_mutex_release (&lock->lock) ? errno : 0);
-}
-
-int
-glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock)
-{
- if (!lock->initialized)
- glthread_rwlock_init_multithreaded (lock);
- if (!pth_mutex_acquire (&lock->lock, 0, NULL))
- return errno;
- /* Test whether no readers or writers are currently running. */
- while (!(lock->runcount == 0))
- {
- /* This thread has to wait for a while. Enqueue it among the
- waiting_writers. */
- lock->waiting_writers_count++;
- if (!pth_cond_await (&lock->waiting_writers, &lock->lock, NULL))
- {
- int err = errno;
- lock->waiting_writers_count--;
- pth_mutex_release (&lock->lock);
- return err;
- }
- lock->waiting_writers_count--;
- }
- lock->runcount--; /* runcount becomes -1 */
- return (!pth_mutex_release (&lock->lock) ? errno : 0);
-}
-
-int
-glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock)
-{
- int err;
-
- if (!lock->initialized)
- return EINVAL;
- if (!pth_mutex_acquire (&lock->lock, 0, NULL))
- return errno;
- if (lock->runcount < 0)
- {
- /* Drop a writer lock. */
- if (!(lock->runcount == -1))
- {
- pth_mutex_release (&lock->lock);
- return EINVAL;
- }
- lock->runcount = 0;
- }
- else
- {
- /* Drop a reader lock. */
- if (!(lock->runcount > 0))
- {
- pth_mutex_release (&lock->lock);
- return EINVAL;
- }
- lock->runcount--;
- }
- if (lock->runcount == 0)
- {
- /* POSIX recommends that "write locks shall take precedence over read
- locks", to avoid "writer starvation". */
- if (lock->waiting_writers_count > 0)
- {
- /* Wake up one of the waiting writers. */
- if (!pth_cond_notify (&lock->waiting_writers, FALSE))
- {
- int err = errno;
- pth_mutex_release (&lock->lock);
- return err;
- }
- }
- else
- {
- /* Wake up all waiting readers. */
- if (!pth_cond_notify (&lock->waiting_readers, TRUE))
- {
- int err = errno;
- pth_mutex_release (&lock->lock);
- return err;
- }
- }
- }
- return (!pth_mutex_release (&lock->lock) ? errno : 0);
-}
-
-int
-glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock)
-{
- lock->initialized = 0;
- return 0;
-}
-
-# endif
-
-/* --------------------- gl_recursive_lock_t datatype --------------------- */
-
-/* -------------------------- gl_once_t datatype -------------------------- */
-
-static void
-glthread_once_call (void *arg)
-{
- void (**gl_once_temp_addr) (void) = (void (**) (void)) arg;
- void (*initfunction) (void) = *gl_once_temp_addr;
- initfunction ();
-}
-
-int
-glthread_once_multithreaded (pth_once_t *once_control, void (*initfunction) (void))
-{
- void (*temp) (void) = initfunction;
- return (!pth_once (once_control, glthread_once_call, &temp) ? errno : 0);
-}
-
-int
-glthread_once_singlethreaded (pth_once_t *once_control)
-{
- /* We know that pth_once_t is an integer type. */
- if (*once_control == PTH_ONCE_INIT)
- {
- /* First time use of once_control. Invert the marker. */
- *once_control = ~ PTH_ONCE_INIT;
- return 1;
- }
- else
- return 0;
-}
-
-#endif
-
-/* ========================================================================= */
-
-#if USE_SOLARIS_THREADS
-
-/* Use the old Solaris threads library. */
-
-/* -------------------------- gl_lock_t datatype -------------------------- */
-
-/* ------------------------- gl_rwlock_t datatype ------------------------- */
-
-/* --------------------- gl_recursive_lock_t datatype --------------------- */
-
-int
-glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock)
-{
- int err;
-
- err = mutex_init (&lock->mutex, USYNC_THREAD, NULL);
- if (err != 0)
- return err;
- lock->owner = (thread_t) 0;
- lock->depth = 0;
- return 0;
-}
-
-int
-glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock)
-{
- thread_t self = thr_self ();
- if (lock->owner != self)
- {
- int err;
-
- err = mutex_lock (&lock->mutex);
- if (err != 0)
- return err;
- lock->owner = self;
- }
- if (++(lock->depth) == 0) /* wraparound? */
- {
- lock->depth--;
- return EAGAIN;
- }
- return 0;
-}
-
-int
-glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock)
-{
- if (lock->owner != thr_self ())
- return EPERM;
- if (lock->depth == 0)
- return EINVAL;
- if (--(lock->depth) == 0)
- {
- lock->owner = (thread_t) 0;
- return mutex_unlock (&lock->mutex);
- }
- else
- return 0;
-}
-
-int
-glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock)
-{
- if (lock->owner != (thread_t) 0)
- return EBUSY;
- return mutex_destroy (&lock->mutex);
-}
-
-/* -------------------------- gl_once_t datatype -------------------------- */
-
-int
-glthread_once_multithreaded (gl_once_t *once_control, void (*initfunction) (void))
-{
- if (!once_control->inited)
- {
- int err;
-
- /* Use the mutex to guarantee that if another thread is already calling
- the initfunction, this thread waits until it's finished. */
- err = mutex_lock (&once_control->mutex);
- if (err != 0)
- return err;
- if (!once_control->inited)
- {
- once_control->inited = 1;
- initfunction ();
- }
- return mutex_unlock (&once_control->mutex);
- }
- else
- return 0;
-}
-
-int
-glthread_once_singlethreaded (gl_once_t *once_control)
-{
- /* We know that gl_once_t contains an integer type. */
- if (!once_control->inited)
- {
- /* First time use of once_control. Invert the marker. */
- once_control->inited = ~ 0;
- return 1;
- }
- else
- return 0;
-}
-
-#endif
-
-/* ========================================================================= */
-
#if USE_WINDOWS_THREADS
-/* -------------------------- gl_lock_t datatype -------------------------- */
-
-void
-glthread_lock_init_func (gl_lock_t *lock)
-{
- InitializeCriticalSection (&lock->lock);
- lock->guard.done = 1;
-}
-
-int
-glthread_lock_lock_func (gl_lock_t *lock)
-{
- if (!lock->guard.done)
- {
- if (InterlockedIncrement (&lock->guard.started) == 0)
- /* This thread is the first one to need this lock. Initialize it. */
- glthread_lock_init (lock);
- else
- /* Yield the CPU while waiting for another thread to finish
- initializing this lock. */
- while (!lock->guard.done)
- Sleep (0);
- }
- EnterCriticalSection (&lock->lock);
- return 0;
-}
-
-int
-glthread_lock_unlock_func (gl_lock_t *lock)
-{
- if (!lock->guard.done)
- return EINVAL;
- LeaveCriticalSection (&lock->lock);
- return 0;
-}
-
-int
-glthread_lock_destroy_func (gl_lock_t *lock)
-{
- if (!lock->guard.done)
- return EINVAL;
- DeleteCriticalSection (&lock->lock);
- lock->guard.done = 0;
- return 0;
-}
-
-/* ------------------------- gl_rwlock_t datatype ------------------------- */
-
-/* In this file, the waitqueues are implemented as circular arrays. */
-#define gl_waitqueue_t gl_carray_waitqueue_t
-
-static void
-gl_waitqueue_init (gl_waitqueue_t *wq)
-{
- wq->array = NULL;
- wq->count = 0;
- wq->alloc = 0;
- wq->offset = 0;
-}
-
-/* Enqueues the current thread, represented by an event, in a wait queue.
- Returns INVALID_HANDLE_VALUE if an allocation failure occurs. */
-static HANDLE
-gl_waitqueue_add (gl_waitqueue_t *wq)
-{
- HANDLE event;
- unsigned int index;
-
- if (wq->count == wq->alloc)
- {
- unsigned int new_alloc = 2 * wq->alloc + 1;
- HANDLE *new_array =
- (HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE));
- if (new_array == NULL)
- /* No more memory. */
- return INVALID_HANDLE_VALUE;
- /* Now is a good opportunity to rotate the array so that its contents
- starts at offset 0. */
- if (wq->offset > 0)
- {
- unsigned int old_count = wq->count;
- unsigned int old_alloc = wq->alloc;
- unsigned int old_offset = wq->offset;
- unsigned int i;
- if (old_offset + old_count > old_alloc)
- {
- unsigned int limit = old_offset + old_count - old_alloc;
- for (i = 0; i < limit; i++)
- new_array[old_alloc + i] = new_array[i];
- }
- for (i = 0; i < old_count; i++)
- new_array[i] = new_array[old_offset + i];
- wq->offset = 0;
- }
- wq->array = new_array;
- wq->alloc = new_alloc;
- }
- /* Whether the created event is a manual-reset one or an auto-reset one,
- does not matter, since we will wait on it only once. */
- event = CreateEvent (NULL, TRUE, FALSE, NULL);
- if (event == INVALID_HANDLE_VALUE)
- /* No way to allocate an event. */
- return INVALID_HANDLE_VALUE;
- index = wq->offset + wq->count;
- if (index >= wq->alloc)
- index -= wq->alloc;
- wq->array[index] = event;
- wq->count++;
- return event;
-}
-
-/* Notifies the first thread from a wait queue and dequeues it. */
-static void
-gl_waitqueue_notify_first (gl_waitqueue_t *wq)
-{
- SetEvent (wq->array[wq->offset + 0]);
- wq->offset++;
- wq->count--;
- if (wq->count == 0 || wq->offset == wq->alloc)
- wq->offset = 0;
-}
-
-/* Notifies all threads from a wait queue and dequeues them all. */
-static void
-gl_waitqueue_notify_all (gl_waitqueue_t *wq)
-{
- unsigned int i;
-
- for (i = 0; i < wq->count; i++)
- {
- unsigned int index = wq->offset + i;
- if (index >= wq->alloc)
- index -= wq->alloc;
- SetEvent (wq->array[index]);
- }
- wq->count = 0;
- wq->offset = 0;
-}
-
-void
-glthread_rwlock_init_func (gl_rwlock_t *lock)
-{
- InitializeCriticalSection (&lock->lock);
- gl_waitqueue_init (&lock->waiting_readers);
- gl_waitqueue_init (&lock->waiting_writers);
- lock->runcount = 0;
- lock->guard.done = 1;
-}
-
-int
-glthread_rwlock_rdlock_func (gl_rwlock_t *lock)
-{
- if (!lock->guard.done)
- {
- if (InterlockedIncrement (&lock->guard.started) == 0)
- /* This thread is the first one to need this lock. Initialize it. */
- glthread_rwlock_init (lock);
- else
- /* Yield the CPU while waiting for another thread to finish
- initializing this lock. */
- while (!lock->guard.done)
- Sleep (0);
- }
- EnterCriticalSection (&lock->lock);
- /* Test whether only readers are currently running, and whether the runcount
- field will not overflow, and whether no writer is waiting. The latter
- condition is because POSIX recommends that "write locks shall take
- precedence over read locks", to avoid "writer starvation". */
- if (!(lock->runcount + 1 > 0 && lock->waiting_writers.count == 0))
- {
- /* This thread has to wait for a while. Enqueue it among the
- waiting_readers. */
- HANDLE event = gl_waitqueue_add (&lock->waiting_readers);
- if (event != INVALID_HANDLE_VALUE)
- {
- DWORD result;
- LeaveCriticalSection (&lock->lock);
- /* Wait until another thread signals this event. */
- result = WaitForSingleObject (event, INFINITE);
- if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
- abort ();
- CloseHandle (event);
- /* The thread which signalled the event already did the bookkeeping:
- removed us from the waiting_readers, incremented lock->runcount. */
- if (!(lock->runcount > 0))
- abort ();
- return 0;
- }
- else
- {
- /* Allocation failure. Weird. */
- do
- {
- LeaveCriticalSection (&lock->lock);
- Sleep (1);
- EnterCriticalSection (&lock->lock);
- }
- while (!(lock->runcount + 1 > 0));
- }
- }
- lock->runcount++;
- LeaveCriticalSection (&lock->lock);
- return 0;
-}
-
-int
-glthread_rwlock_wrlock_func (gl_rwlock_t *lock)
-{
- if (!lock->guard.done)
- {
- if (InterlockedIncrement (&lock->guard.started) == 0)
- /* This thread is the first one to need this lock. Initialize it. */
- glthread_rwlock_init (lock);
- else
- /* Yield the CPU while waiting for another thread to finish
- initializing this lock. */
- while (!lock->guard.done)
- Sleep (0);
- }
- EnterCriticalSection (&lock->lock);
- /* Test whether no readers or writers are currently running. */
- if (!(lock->runcount == 0))
- {
- /* This thread has to wait for a while. Enqueue it among the
- waiting_writers. */
- HANDLE event = gl_waitqueue_add (&lock->waiting_writers);
- if (event != INVALID_HANDLE_VALUE)
- {
- DWORD result;
- LeaveCriticalSection (&lock->lock);
- /* Wait until another thread signals this event. */
- result = WaitForSingleObject (event, INFINITE);
- if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
- abort ();
- CloseHandle (event);
- /* The thread which signalled the event already did the bookkeeping:
- removed us from the waiting_writers, set lock->runcount = -1. */
- if (!(lock->runcount == -1))
- abort ();
- return 0;
- }
- else
- {
- /* Allocation failure. Weird. */
- do
- {
- LeaveCriticalSection (&lock->lock);
- Sleep (1);
- EnterCriticalSection (&lock->lock);
- }
- while (!(lock->runcount == 0));
- }
- }
- lock->runcount--; /* runcount becomes -1 */
- LeaveCriticalSection (&lock->lock);
- return 0;
-}
-
-int
-glthread_rwlock_unlock_func (gl_rwlock_t *lock)
-{
- if (!lock->guard.done)
- return EINVAL;
- EnterCriticalSection (&lock->lock);
- if (lock->runcount < 0)
- {
- /* Drop a writer lock. */
- if (!(lock->runcount == -1))
- abort ();
- lock->runcount = 0;
- }
- else
- {
- /* Drop a reader lock. */
- if (!(lock->runcount > 0))
- {
- LeaveCriticalSection (&lock->lock);
- return EPERM;
- }
- lock->runcount--;
- }
- if (lock->runcount == 0)
- {
- /* POSIX recommends that "write locks shall take precedence over read
- locks", to avoid "writer starvation". */
- if (lock->waiting_writers.count > 0)
- {
- /* Wake up one of the waiting writers. */
- lock->runcount--;
- gl_waitqueue_notify_first (&lock->waiting_writers);
- }
- else
- {
- /* Wake up all waiting readers. */
- lock->runcount += lock->waiting_readers.count;
- gl_waitqueue_notify_all (&lock->waiting_readers);
- }
- }
- LeaveCriticalSection (&lock->lock);
- return 0;
-}
-
-int
-glthread_rwlock_destroy_func (gl_rwlock_t *lock)
-{
- if (!lock->guard.done)
- return EINVAL;
- if (lock->runcount != 0)
- return EBUSY;
- DeleteCriticalSection (&lock->lock);
- if (lock->waiting_readers.array != NULL)
- free (lock->waiting_readers.array);
- if (lock->waiting_writers.array != NULL)
- free (lock->waiting_writers.array);
- lock->guard.done = 0;
- return 0;
-}
-
-/* --------------------- gl_recursive_lock_t datatype --------------------- */
-
-void
-glthread_recursive_lock_init_func (gl_recursive_lock_t *lock)
-{
- lock->owner = 0;
- lock->depth = 0;
- InitializeCriticalSection (&lock->lock);
- lock->guard.done = 1;
-}
-
-int
-glthread_recursive_lock_lock_func (gl_recursive_lock_t *lock)
-{
- if (!lock->guard.done)
- {
- if (InterlockedIncrement (&lock->guard.started) == 0)
- /* This thread is the first one to need this lock. Initialize it. */
- glthread_recursive_lock_init (lock);
- else
- /* Yield the CPU while waiting for another thread to finish
- initializing this lock. */
- while (!lock->guard.done)
- Sleep (0);
- }
- {
- DWORD self = GetCurrentThreadId ();
- if (lock->owner != self)
- {
- EnterCriticalSection (&lock->lock);
- lock->owner = self;
- }
- if (++(lock->depth) == 0) /* wraparound? */
- {
- lock->depth--;
- return EAGAIN;
- }
- }
- return 0;
-}
-
-int
-glthread_recursive_lock_unlock_func (gl_recursive_lock_t *lock)
-{
- if (lock->owner != GetCurrentThreadId ())
- return EPERM;
- if (lock->depth == 0)
- return EINVAL;
- if (--(lock->depth) == 0)
- {
- lock->owner = 0;
- LeaveCriticalSection (&lock->lock);
- }
- return 0;
-}
-
-int
-glthread_recursive_lock_destroy_func (gl_recursive_lock_t *lock)
-{
- if (lock->owner != 0)
- return EBUSY;
- DeleteCriticalSection (&lock->lock);
- lock->guard.done = 0;
- return 0;
-}
-
-/* -------------------------- gl_once_t datatype -------------------------- */
-
-void
-glthread_once_func (gl_once_t *once_control, void (*initfunction) (void))
-{
- if (once_control->inited <= 0)
- {
- if (InterlockedIncrement (&once_control->started) == 0)
- {
- /* This thread is the first one to come to this once_control. */
- InitializeCriticalSection (&once_control->lock);
- EnterCriticalSection (&once_control->lock);
- once_control->inited = 0;
- initfunction ();
- once_control->inited = 1;
- LeaveCriticalSection (&once_control->lock);
- }
- else
- {
- /* Undo last operation. */
- InterlockedDecrement (&once_control->started);
- /* Some other thread has already started the initialization.
- Yield the CPU while waiting for the other thread to finish
- initializing and taking the lock. */
- while (once_control->inited < 0)
- Sleep (0);
- if (once_control->inited <= 0)
- {
- /* Take the lock. This blocks until the other thread has
- finished calling the initfunction. */
- EnterCriticalSection (&once_control->lock);
- LeaveCriticalSection (&once_control->lock);
- if (!(once_control->inited > 0))
- abort ();
- }
- }
- }
-}
-
#endif
/* ========================================================================= */
diff --git a/lib/glthread/lock.h b/lib/glthread/lock.h
index 30aa730..28a9e3d 100644
--- a/lib/glthread/lock.h
+++ b/lib/glthread/lock.h
@@ -1,5 +1,5 @@
/* Locking in multithreaded situations.
- Copyright (C) 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
This 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,8 +15,7 @@
along with this program; if not, see <https://www.gnu.org/licenses/>. */
/* Written by Bruno Haible <bruno@clisp.org>, 2005.
- Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
- gthr-win32.h. */
+ Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-win32.h. */
/* This file contains locking primitives for use with a given thread library.
It does not contain primitives for creating threads or for other
@@ -81,6 +80,125 @@
#include <errno.h>
#include <stdlib.h>
+#if !defined c11_threads_in_use
+# if HAVE_THREADS_H && USE_POSIX_THREADS_WEAK
+# include <threads.h>
+# pragma weak thrd_exit
+# define c11_threads_in_use() (thrd_exit != NULL)
+# else
+# define c11_threads_in_use() 0
+# endif
+#endif
+
+/* ========================================================================= */
+
+#if USE_ISOC_THREADS || USE_ISOC_AND_POSIX_THREADS
+
+/* Use the ISO C threads library. */
+
+# include <threads.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* -------------------------- gl_lock_t datatype -------------------------- */
+
+typedef struct
+ {
+ int volatile init_needed;
+ once_flag init_once;
+ void (*init_func) (void);
+ mtx_t mutex;
+ }
+ gl_lock_t;
+# define gl_lock_define(STORAGECLASS, NAME) \
+ STORAGECLASS gl_lock_t NAME;
+# define gl_lock_define_initialized(STORAGECLASS, NAME) \
+ static void _atomic_init_##NAME (void); \
+ STORAGECLASS gl_lock_t NAME = \
+ { 1, ONCE_FLAG_INIT, _atomic_init_##NAME }; \
+ static void _atomic_init_##NAME (void) \
+ { \
+ if (glthread_lock_init (&(NAME))) \
+ abort (); \
+ }
+extern int glthread_lock_init (gl_lock_t *lock);
+extern int glthread_lock_lock (gl_lock_t *lock);
+extern int glthread_lock_unlock (gl_lock_t *lock);
+extern int glthread_lock_destroy (gl_lock_t *lock);
+
+/* ------------------------- gl_rwlock_t datatype ------------------------- */
+
+typedef struct
+ {
+ int volatile init_needed;
+ once_flag init_once;
+ void (*init_func) (void);
+ mtx_t lock; /* protects the remaining fields */
+ cnd_t waiting_readers; /* waiting readers */
+ cnd_t waiting_writers; /* waiting writers */
+ unsigned int waiting_writers_count; /* number of waiting writers */
+ int runcount; /* number of readers running, or -1 when a writer runs */
+ }
+ gl_rwlock_t;
+# define gl_rwlock_define(STORAGECLASS, NAME) \
+ STORAGECLASS gl_rwlock_t NAME;
+# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
+ static void _atomic_init_##NAME (void); \
+ STORAGECLASS gl_rwlock_t NAME = \
+ { 1, ONCE_FLAG_INIT, _atomic_init_##NAME }; \
+ static void _atomic_init_##NAME (void) \
+ { \
+ if (glthread_rwlock_init (&(NAME))) \
+ abort (); \
+ }
+extern int glthread_rwlock_init (gl_rwlock_t *lock);
+extern int glthread_rwlock_rdlock (gl_rwlock_t *lock);
+extern int glthread_rwlock_wrlock (gl_rwlock_t *lock);
+extern int glthread_rwlock_unlock (gl_rwlock_t *lock);
+extern int glthread_rwlock_destroy (gl_rwlock_t *lock);
+
+/* --------------------- gl_recursive_lock_t datatype --------------------- */
+
+typedef struct
+ {
+ int volatile init_needed;
+ once_flag init_once;
+ void (*init_func) (void);
+ mtx_t mutex;
+ }
+ gl_recursive_lock_t;
+# define gl_recursive_lock_define(STORAGECLASS, NAME) \
+ STORAGECLASS gl_recursive_lock_t NAME;
+# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
+ static void _atomic_init_##NAME (void); \
+ STORAGECLASS gl_recursive_lock_t NAME = \
+ { 1, ONCE_FLAG_INIT, _atomic_init_##NAME }; \
+ static void _atomic_init_##NAME (void) \
+ { \
+ if (glthread_recursive_lock_init (&(NAME))) \
+ abort (); \
+ }
+extern int glthread_recursive_lock_init (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_lock (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_unlock (gl_recursive_lock_t *lock);
+extern int glthread_recursive_lock_destroy (gl_recursive_lock_t *lock);
+
+/* -------------------------- gl_once_t datatype -------------------------- */
+
+typedef once_flag gl_once_t;
+# define gl_once_define(STORAGECLASS, NAME) \
+ STORAGECLASS once_flag NAME = ONCE_FLAG_INIT;
+# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
+ (call_once (ONCE_CONTROL, INITFUNCTION), 0)
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
+
/* ========================================================================= */
#if USE_POSIX_THREADS
@@ -156,7 +274,8 @@ extern int glthread_in_use (void);
pthread_rwlockattr_init
*/
# pragma weak pthread_mutexattr_gettype
-# define pthread_in_use() (pthread_mutexattr_gettype != NULL)
+# define pthread_in_use() \
+ (pthread_mutexattr_gettype != NULL || c11_threads_in_use ())
# endif
# else
@@ -189,7 +308,7 @@ typedef pthread_mutex_t gl_lock_t;
# if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (defined PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP && (__GNU_LIBRARY__ > 1)))
-# ifdef PTHREAD_RWLOCK_INITIALIZER
+# if defined PTHREAD_RWLOCK_INITIALIZER || defined PTHREAD_RWLOCK_INITIALIZER_NP
typedef pthread_rwlock_t gl_rwlock_t;
# define gl_rwlock_define(STORAGECLASS, NAME) \
@@ -197,8 +316,13 @@ typedef pthread_rwlock_t gl_rwlock_t;
# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer;
# if HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER
-# define gl_rwlock_initializer \
- PTHREAD_RWLOCK_INITIALIZER
+# if defined PTHREAD_RWLOCK_INITIALIZER
+# define gl_rwlock_initializer \
+ PTHREAD_RWLOCK_INITIALIZER
+# else
+# define gl_rwlock_initializer \
+ PTHREAD_RWLOCK_INITIALIZER_NP
+# endif
# define glthread_rwlock_init(LOCK) \
(pthread_in_use () ? pthread_rwlock_init (LOCK, NULL) : 0)
# else /* glibc with bug https://sourceware.org/bugzilla/show_bug.cgi?id=13701 */
@@ -395,287 +519,16 @@ extern int glthread_once_singlethreaded (pthread_once_t *once_control);
/* ========================================================================= */
-#if USE_PTH_THREADS
-
-/* Use the GNU Pth threads library. */
-
-# include <pth.h>
-
-# ifdef __cplusplus
-extern "C" {
-# endif
-
-# if USE_PTH_THREADS_WEAK
-
-/* Use weak references to the GNU Pth threads library. */
-
-# pragma weak pth_mutex_init
-# pragma weak pth_mutex_acquire
-# pragma weak pth_mutex_release
-# pragma weak pth_rwlock_init
-# pragma weak pth_rwlock_acquire
-# pragma weak pth_rwlock_release
-# pragma weak pth_once
-
-# pragma weak pth_cancel
-# define pth_in_use() (pth_cancel != NULL)
-
-# else
-
-# define pth_in_use() 1
-
-# endif
-
-/* -------------------------- gl_lock_t datatype -------------------------- */
-
-typedef pth_mutex_t gl_lock_t;
-# define gl_lock_define(STORAGECLASS, NAME) \
- STORAGECLASS pth_mutex_t NAME;
-# define gl_lock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS pth_mutex_t NAME = gl_lock_initializer;
-# define gl_lock_initializer \
- PTH_MUTEX_INIT
-# define glthread_lock_init(LOCK) \
- (pth_in_use () && !pth_mutex_init (LOCK) ? errno : 0)
-# define glthread_lock_lock(LOCK) \
- (pth_in_use () && !pth_mutex_acquire (LOCK, 0, NULL) ? errno : 0)
-# define glthread_lock_unlock(LOCK) \
- (pth_in_use () && !pth_mutex_release (LOCK) ? errno : 0)
-# define glthread_lock_destroy(LOCK) \
- ((void)(LOCK), 0)
-
-/* ------------------------- gl_rwlock_t datatype ------------------------- */
-
-/* Pth pth_rwlock_acquire always prefers readers. No autoconf test so far. */
-# if HAVE_PTH_RWLOCK_ACQUIRE_PREFER_WRITER
-
-typedef pth_rwlock_t gl_rwlock_t;
-# define gl_rwlock_define(STORAGECLASS, NAME) \
- STORAGECLASS pth_rwlock_t NAME;
-# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS pth_rwlock_t NAME = gl_rwlock_initializer;
-# define gl_rwlock_initializer \
- PTH_RWLOCK_INIT
-# define glthread_rwlock_init(LOCK) \
- (pth_in_use () && !pth_rwlock_init (LOCK) ? errno : 0)
-# define glthread_rwlock_rdlock(LOCK) \
- (pth_in_use () && !pth_rwlock_acquire (LOCK, PTH_RWLOCK_RD, 0, NULL) ? errno : 0)
-# define glthread_rwlock_wrlock(LOCK) \
- (pth_in_use () && !pth_rwlock_acquire (LOCK, PTH_RWLOCK_RW, 0, NULL) ? errno : 0)
-# define glthread_rwlock_unlock(LOCK) \
- (pth_in_use () && !pth_rwlock_release (LOCK) ? errno : 0)
-# define glthread_rwlock_destroy(LOCK) \
- ((void)(LOCK), 0)
-
-# else
-
-typedef struct
- {
- int initialized;
- pth_mutex_t lock; /* protects the remaining fields */
- pth_cond_t waiting_readers; /* waiting readers */
- pth_cond_t waiting_writers; /* waiting writers */
- unsigned int waiting_writers_count; /* number of waiting writers */
- int runcount; /* number of readers running, or -1 when a writer runs */
- }
- gl_rwlock_t;
-# define gl_rwlock_define(STORAGECLASS, NAME) \
- STORAGECLASS gl_rwlock_t NAME;
-# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
-# define gl_rwlock_initializer \
- { 0 }
-# define glthread_rwlock_init(LOCK) \
- (pth_in_use () ? glthread_rwlock_init_multithreaded (LOCK) : 0)
-# define glthread_rwlock_rdlock(LOCK) \
- (pth_in_use () ? glthread_rwlock_rdlock_multithreaded (LOCK) : 0)
-# define glthread_rwlock_wrlock(LOCK) \
- (pth_in_use () ? glthread_rwlock_wrlock_multithreaded (LOCK) : 0)
-# define glthread_rwlock_unlock(LOCK) \
- (pth_in_use () ? glthread_rwlock_unlock_multithreaded (LOCK) : 0)
-# define glthread_rwlock_destroy(LOCK) \
- (pth_in_use () ? glthread_rwlock_destroy_multithreaded (LOCK) : 0)
-extern int glthread_rwlock_init_multithreaded (gl_rwlock_t *lock);
-extern int glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock);
-extern int glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock);
-extern int glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock);
-extern int glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock);
-
-# endif
-
-/* --------------------- gl_recursive_lock_t datatype --------------------- */
-
-/* In Pth, mutexes are recursive by default. */
-typedef pth_mutex_t gl_recursive_lock_t;
-# define gl_recursive_lock_define(STORAGECLASS, NAME) \
- STORAGECLASS pth_mutex_t NAME;
-# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS pth_mutex_t NAME = gl_recursive_lock_initializer;
-# define gl_recursive_lock_initializer \
- PTH_MUTEX_INIT
-# define glthread_recursive_lock_init(LOCK) \
- (pth_in_use () && !pth_mutex_init (LOCK) ? errno : 0)
-# define glthread_recursive_lock_lock(LOCK) \
- (pth_in_use () && !pth_mutex_acquire (LOCK, 0, NULL) ? errno : 0)
-# define glthread_recursive_lock_unlock(LOCK) \
- (pth_in_use () && !pth_mutex_release (LOCK) ? errno : 0)
-# define glthread_recursive_lock_destroy(LOCK) \
- ((void)(LOCK), 0)
-
-/* -------------------------- gl_once_t datatype -------------------------- */
-
-typedef pth_once_t gl_once_t;
-# define gl_once_define(STORAGECLASS, NAME) \
- STORAGECLASS pth_once_t NAME = PTH_ONCE_INIT;
-# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
- (pth_in_use () \
- ? glthread_once_multithreaded (ONCE_CONTROL, INITFUNCTION) \
- : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0))
-extern int glthread_once_multithreaded (pth_once_t *once_control, void (*initfunction) (void));
-extern int glthread_once_singlethreaded (pth_once_t *once_control);
-
-# ifdef __cplusplus
-}
-# endif
-
-#endif
-
-/* ========================================================================= */
-
-#if USE_SOLARIS_THREADS
-
-/* Use the old Solaris threads library. */
-
-# include <thread.h>
-# include <synch.h>
-
-# ifdef __cplusplus
-extern "C" {
-# endif
-
-# if USE_SOLARIS_THREADS_WEAK
-
-/* Use weak references to the old Solaris threads library. */
-
-# pragma weak mutex_init
-# pragma weak mutex_lock
-# pragma weak mutex_unlock
-# pragma weak mutex_destroy
-# pragma weak rwlock_init
-# pragma weak rw_rdlock
-# pragma weak rw_wrlock
-# pragma weak rw_unlock
-# pragma weak rwlock_destroy
-# pragma weak thr_self
-
-# pragma weak thr_suspend
-# define thread_in_use() (thr_suspend != NULL)
-
-# else
-
-# define thread_in_use() 1
-
-# endif
-
-/* -------------------------- gl_lock_t datatype -------------------------- */
-
-typedef mutex_t gl_lock_t;
-# define gl_lock_define(STORAGECLASS, NAME) \
- STORAGECLASS mutex_t NAME;
-# define gl_lock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS mutex_t NAME = gl_lock_initializer;
-# define gl_lock_initializer \
- DEFAULTMUTEX
-# define glthread_lock_init(LOCK) \
- (thread_in_use () ? mutex_init (LOCK, USYNC_THREAD, NULL) : 0)
-# define glthread_lock_lock(LOCK) \
- (thread_in_use () ? mutex_lock (LOCK) : 0)
-# define glthread_lock_unlock(LOCK) \
- (thread_in_use () ? mutex_unlock (LOCK) : 0)
-# define glthread_lock_destroy(LOCK) \
- (thread_in_use () ? mutex_destroy (LOCK) : 0)
-
-/* ------------------------- gl_rwlock_t datatype ------------------------- */
-
-typedef rwlock_t gl_rwlock_t;
-# define gl_rwlock_define(STORAGECLASS, NAME) \
- STORAGECLASS rwlock_t NAME;
-# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS rwlock_t NAME = gl_rwlock_initializer;
-# define gl_rwlock_initializer \
- DEFAULTRWLOCK
-# define glthread_rwlock_init(LOCK) \
- (thread_in_use () ? rwlock_init (LOCK, USYNC_THREAD, NULL) : 0)
-# define glthread_rwlock_rdlock(LOCK) \
- (thread_in_use () ? rw_rdlock (LOCK) : 0)
-# define glthread_rwlock_wrlock(LOCK) \
- (thread_in_use () ? rw_wrlock (LOCK) : 0)
-# define glthread_rwlock_unlock(LOCK) \
- (thread_in_use () ? rw_unlock (LOCK) : 0)
-# define glthread_rwlock_destroy(LOCK) \
- (thread_in_use () ? rwlock_destroy (LOCK) : 0)
-
-/* --------------------- gl_recursive_lock_t datatype --------------------- */
-
-/* Old Solaris threads did not have recursive locks.
- We have to implement them ourselves. */
-
-typedef struct
- {
- mutex_t mutex;
- thread_t owner;
- unsigned long depth;
- }
- gl_recursive_lock_t;
-# define gl_recursive_lock_define(STORAGECLASS, NAME) \
- STORAGECLASS gl_recursive_lock_t NAME;
-# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
- STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
-# define gl_recursive_lock_initializer \
- { DEFAULTMUTEX, (thread_t) 0, 0 }
-# define glthread_recursive_lock_init(LOCK) \
- (thread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0)
-# define glthread_recursive_lock_lock(LOCK) \
- (thread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0)
-# define glthread_recursive_lock_unlock(LOCK) \
- (thread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0)
-# define glthread_recursive_lock_destroy(LOCK) \
- (thread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0)
-extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock);
-extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock);
-extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock);
-extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock);
-
-/* -------------------------- gl_once_t datatype -------------------------- */
-
-typedef struct
- {
- volatile int inited;
- mutex_t mutex;
- }
- gl_once_t;
-# define gl_once_define(STORAGECLASS, NAME) \
- STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX };
-# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
- (thread_in_use () \
- ? glthread_once_multithreaded (ONCE_CONTROL, INITFUNCTION) \
- : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0))
-extern int glthread_once_multithreaded (gl_once_t *once_control, void (*initfunction) (void));
-extern int glthread_once_singlethreaded (gl_once_t *once_control);
-
-# ifdef __cplusplus
-}
-# endif
-
-#endif
-
-/* ========================================================================= */
-
#if USE_WINDOWS_THREADS
# define WIN32_LEAN_AND_MEAN /* avoid including junk */
# include <windows.h>
+# include "windows-mutex.h"
+# include "windows-rwlock.h"
+# include "windows-recmutex.h"
+# include "windows-once.h"
+
# ifdef __cplusplus
extern "C" {
# endif
@@ -691,127 +544,69 @@ extern "C" {
/* There is no way to statically initialize a CRITICAL_SECTION. It needs
to be done lazily, once only. For this we need spinlocks. */
-typedef struct { volatile int done; volatile long started; } gl_spinlock_t;
-
/* -------------------------- gl_lock_t datatype -------------------------- */
-typedef struct
- {
- gl_spinlock_t guard; /* protects the initialization */
- CRITICAL_SECTION lock;
- }
- gl_lock_t;
+typedef glwthread_mutex_t gl_lock_t;
# define gl_lock_define(STORAGECLASS, NAME) \
STORAGECLASS gl_lock_t NAME;
# define gl_lock_define_initialized(STORAGECLASS, NAME) \
STORAGECLASS gl_lock_t NAME = gl_lock_initializer;
# define gl_lock_initializer \
- { { 0, -1 } }
+ GLWTHREAD_MUTEX_INIT
# define glthread_lock_init(LOCK) \
- (glthread_lock_init_func (LOCK), 0)
+ (glwthread_mutex_init (LOCK), 0)
# define glthread_lock_lock(LOCK) \
- glthread_lock_lock_func (LOCK)
+ glwthread_mutex_lock (LOCK)
# define glthread_lock_unlock(LOCK) \
- glthread_lock_unlock_func (LOCK)
+ glwthread_mutex_unlock (LOCK)
# define glthread_lock_destroy(LOCK) \
- glthread_lock_destroy_func (LOCK)
-extern void glthread_lock_init_func (gl_lock_t *lock);
-extern int glthread_lock_lock_func (gl_lock_t *lock);
-extern int glthread_lock_unlock_func (gl_lock_t *lock);
-extern int glthread_lock_destroy_func (gl_lock_t *lock);
+ glwthread_mutex_destroy (LOCK)
/* ------------------------- gl_rwlock_t datatype ------------------------- */
-/* It is impossible to implement read-write locks using plain locks, without
- introducing an extra thread dedicated to managing read-write locks.
- Therefore here we need to use the low-level Event type. */
-
-typedef struct
- {
- HANDLE *array; /* array of waiting threads, each represented by an event */
- unsigned int count; /* number of waiting threads */
- unsigned int alloc; /* length of allocated array */
- unsigned int offset; /* index of first waiting thread in array */
- }
- gl_carray_waitqueue_t;
-typedef struct
- {
- gl_spinlock_t guard; /* protects the initialization */
- CRITICAL_SECTION lock; /* protects the remaining fields */
- gl_carray_waitqueue_t waiting_readers; /* waiting readers */
- gl_carray_waitqueue_t waiting_writers; /* waiting writers */
- int runcount; /* number of readers running, or -1 when a writer runs */
- }
- gl_rwlock_t;
+typedef glwthread_rwlock_t gl_rwlock_t;
# define gl_rwlock_define(STORAGECLASS, NAME) \
STORAGECLASS gl_rwlock_t NAME;
# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \
STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer;
# define gl_rwlock_initializer \
- { { 0, -1 } }
+ GLWTHREAD_RWLOCK_INIT
# define glthread_rwlock_init(LOCK) \
- (glthread_rwlock_init_func (LOCK), 0)
+ (glwthread_rwlock_init (LOCK), 0)
# define glthread_rwlock_rdlock(LOCK) \
- glthread_rwlock_rdlock_func (LOCK)
+ glwthread_rwlock_rdlock (LOCK)
# define glthread_rwlock_wrlock(LOCK) \
- glthread_rwlock_wrlock_func (LOCK)
+ glwthread_rwlock_wrlock (LOCK)
# define glthread_rwlock_unlock(LOCK) \
- glthread_rwlock_unlock_func (LOCK)
+ glwthread_rwlock_unlock (LOCK)
# define glthread_rwlock_destroy(LOCK) \
- glthread_rwlock_destroy_func (LOCK)
-extern void glthread_rwlock_init_func (gl_rwlock_t *lock);
-extern int glthread_rwlock_rdlock_func (gl_rwlock_t *lock);
-extern int glthread_rwlock_wrlock_func (gl_rwlock_t *lock);
-extern int glthread_rwlock_unlock_func (gl_rwlock_t *lock);
-extern int glthread_rwlock_destroy_func (gl_rwlock_t *lock);
+ glwthread_rwlock_destroy (LOCK)
/* --------------------- gl_recursive_lock_t datatype --------------------- */
-/* The native Windows documentation says that CRITICAL_SECTION already
- implements a recursive lock. But we need not rely on it: It's easy to
- implement a recursive lock without this assumption. */
-
-typedef struct
- {
- gl_spinlock_t guard; /* protects the initialization */
- DWORD owner;
- unsigned long depth;
- CRITICAL_SECTION lock;
- }
- gl_recursive_lock_t;
+typedef glwthread_recmutex_t gl_recursive_lock_t;
# define gl_recursive_lock_define(STORAGECLASS, NAME) \
STORAGECLASS gl_recursive_lock_t NAME;
# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \
STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer;
# define gl_recursive_lock_initializer \
- { { 0, -1 }, 0, 0 }
+ GLWTHREAD_RECMUTEX_INIT
# define glthread_recursive_lock_init(LOCK) \
- (glthread_recursive_lock_init_func (LOCK), 0)
+ (glwthread_recmutex_init (LOCK), 0)
# define glthread_recursive_lock_lock(LOCK) \
- glthread_recursive_lock_lock_func (LOCK)
+ glwthread_recmutex_lock (LOCK)
# define glthread_recursive_lock_unlock(LOCK) \
- glthread_recursive_lock_unlock_func (LOCK)
+ glwthread_recmutex_unlock (LOCK)
# define glthread_recursive_lock_destroy(LOCK) \
- glthread_recursive_lock_destroy_func (LOCK)
-extern void glthread_recursive_lock_init_func (gl_recursive_lock_t *lock);
-extern int glthread_recursive_lock_lock_func (gl_recursive_lock_t *lock);
-extern int glthread_recursive_lock_unlock_func (gl_recursive_lock_t *lock);
-extern int glthread_recursive_lock_destroy_func (gl_recursive_lock_t *lock);
+ glwthread_recmutex_destroy (LOCK)
/* -------------------------- gl_once_t datatype -------------------------- */
-typedef struct
- {
- volatile int inited;
- volatile long started;
- CRITICAL_SECTION lock;
- }
- gl_once_t;
+typedef glwthread_once_t gl_once_t;
# define gl_once_define(STORAGECLASS, NAME) \
- STORAGECLASS gl_once_t NAME = { -1, -1 };
+ STORAGECLASS gl_once_t NAME = GLWTHREAD_ONCE_INIT;
# define glthread_once(ONCE_CONTROL, INITFUNCTION) \
- (glthread_once_func (ONCE_CONTROL, INITFUNCTION), 0)
-extern void glthread_once_func (gl_once_t *once_control, void (*initfunction) (void));
+ (glwthread_once (ONCE_CONTROL, INITFUNCTION), 0)
# ifdef __cplusplus
}
@@ -821,7 +616,7 @@ extern void glthread_once_func (gl_once_t *once_control, void (*initfunction) (v
/* ========================================================================= */
-#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WINDOWS_THREADS)
+#if !(USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS)
/* Provide dummy implementation if threads are not supported. */
diff --git a/lib/glthread/threadlib.c b/lib/glthread/threadlib.c
index e8b484a..28bf3c6 100644
--- a/lib/glthread/threadlib.c
+++ b/lib/glthread/threadlib.c
@@ -1,5 +1,5 @@
/* Multithreading primitives.
- Copyright (C) 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
This 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,7 @@
/* ========================================================================= */
-#if USE_POSIX_THREADS
+#if USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS
/* Use the POSIX threads library. */
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index bedc672..f8fd3ac 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -1,6 +1,6 @@
## DO NOT EDIT! GENERATED AUTOMATICALLY!
## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 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
@@ -61,6 +61,7 @@
# mkostemp \
# non-recursive-gnulib-prefix-hack \
# obstack \
+# perl \
# progname \
# readme-release \
# regex \
@@ -72,7 +73,6 @@
# stdbool \
# strerror \
# strverscmp \
-# threadlib \
# unlocked-io \
# update-copyright \
# verify \
@@ -97,7 +97,7 @@ EXTRA_lib_libsed_a_SOURCES =
# Use this preprocessor expression to decide whether #include_next works.
# Do not rely on a 'configure'-time test for this, since the expression
# might appear in an installed header, which is used by some other compiler.
-HAVE_INCLUDE_NEXT = lib/(__GNUC__ lib/|| lib/60000000 lib/<= lib/__DECC_VER)
+HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER)
## end gnulib module absolute-header
@@ -145,7 +145,7 @@ if GL_GENERATE_ALLOCA_H
lib/alloca.h: lib/alloca.in.h $(top_builddir)/config.status
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- cat $(top_srcdir)/lib/alloca.in.h; \
+ sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(top_srcdir)/lib/alloca.in.h; \
} > $@-t && \
mv -f $@-t $@
else
@@ -346,12 +346,14 @@ lib/fcntl.h: lib/fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NON
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+ -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \
-e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \
-e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \
-e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \
-e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \
-e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
-e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
+ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \
-e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \
-e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
-e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \
@@ -374,6 +376,13 @@ EXTRA_DIST += lib/filename.h
## end gnulib module filename
+## begin gnulib module flexmember
+
+
+EXTRA_DIST += lib/flexmember.h
+
+## end gnulib module flexmember
+
## begin gnulib module fpending
@@ -519,13 +528,6 @@ EXTRA_DIST += lib/hard-locale.h
## end gnulib module hard-locale
-## begin gnulib module havelib
-
-
-EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
-
-## end gnulib module havelib
-
## begin gnulib module ignore-value
@@ -540,6 +542,50 @@ EXTRA_DIST += lib/intprops.h
## end gnulib module intprops
+## begin gnulib module inttypes-incomplete
+
+BUILT_SOURCES += lib/inttypes.h
+
+# We need the following in order to create <inttypes.h> when the system
+# doesn't have one that works with the given compiler.
+lib/inttypes.h: lib/inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
+ -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
+ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+ -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+ -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+ -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+ -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
+ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
+ -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \
+ -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \
+ -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \
+ -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
+ -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \
+ -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \
+ -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \
+ -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)' \
+ < $(top_srcdir)/lib/inttypes.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += lib/inttypes.h lib/inttypes.h-t
+
+EXTRA_DIST += lib/inttypes.in.h
+
+## end gnulib module inttypes-incomplete
+
## begin gnulib module isblank
@@ -642,6 +688,7 @@ lib/locale.h: lib/locale.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
-e 's/@''GNULIB_LOCALECONV''@/$(GNULIB_LOCALECONV)/g' \
-e 's/@''GNULIB_SETLOCALE''@/$(GNULIB_SETLOCALE)/g' \
+ -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GNULIB_SETLOCALE_NULL)/g' \
-e 's/@''GNULIB_DUPLOCALE''@/$(GNULIB_DUPLOCALE)/g' \
-e 's/@''GNULIB_LOCALENAME''@/$(GNULIB_LOCALENAME)/g' \
-e 's|@''HAVE_NEWLOCALE''@|$(HAVE_NEWLOCALE)|g' \
@@ -734,9 +781,9 @@ EXTRA_lib_libsed_a_SOURCES += lib/mbrlen.c
## begin gnulib module mbrtowc
-EXTRA_DIST += lib/mbrtowc.c
+EXTRA_DIST += lib/lc-charset-dispatch.c lib/lc-charset-dispatch.h lib/mbrtowc-impl-utf8.h lib/mbrtowc-impl.h lib/mbrtowc.c lib/mbtowc-lock.c lib/mbtowc-lock.h lib/windows-initguard.h
-EXTRA_lib_libsed_a_SOURCES += lib/mbrtowc.c
+EXTRA_lib_libsed_a_SOURCES += lib/lc-charset-dispatch.c lib/mbrtowc.c lib/mbtowc-lock.c
## end gnulib module mbrtowc
@@ -971,6 +1018,16 @@ EXTRA_lib_libsed_a_SOURCES += lib/getfilecon.c
## end gnulib module selinux-h
+## begin gnulib module setlocale-null
+
+lib_libsed_a_SOURCES += lib/setlocale_null.c
+
+EXTRA_DIST += lib/setlocale-lock.c lib/setlocale_null.h lib/windows-initguard.h
+
+EXTRA_lib_libsed_a_SOURCES += lib/setlocale-lock.c
+
+## end gnulib module setlocale-null
+
## begin gnulib module snippet/_Noreturn
# Because this Makefile snippet defines a variable used by other
@@ -1182,8 +1239,6 @@ lib/stdint.h: lib/stdint.in.h $(top_builddir)/config.status
-e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
-e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
-e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
- -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
- -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
-e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
-e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
-e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
@@ -1383,6 +1438,7 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
-e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
-e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
+ -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \
-e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
-e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
-e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
@@ -1396,7 +1452,9 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
-e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
-e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
+ -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \
-e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \
+ -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \
-e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
-e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
-e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
@@ -1414,8 +1472,10 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
-e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
-e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
+ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
-e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
-e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
-e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
-e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
-e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
@@ -1424,6 +1484,7 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
-e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
-e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+ -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \
-e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
-e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
@@ -1431,11 +1492,14 @@ lib/stdlib.h: lib/stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
-e 's|@''REPLACE_QSORT_R''@|$(REPLACE_QSORT_R)|g' \
+ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \
-e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
-e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
-e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
-e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
-e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
-e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
-e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
@@ -1722,8 +1786,6 @@ EXTRA_DIST += lib/tempname.h
lib_libsed_a_SOURCES += lib/glthread/threadlib.c
-EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
-
## end gnulib module threadlib
## begin gnulib module time
@@ -1798,9 +1860,11 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
-e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+ -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \
-e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
-e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
-e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
+ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \
-e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
-e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
-e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
@@ -1819,6 +1883,7 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
-e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
-e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
+ -e 's/@''GNULIB_GETOPT_POSIX''@/$(GNULIB_GETOPT_POSIX)/g' \
-e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
-e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \
-e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
@@ -1851,6 +1916,7 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
< $(top_srcdir)/lib/unistd.in.h | \
sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
-e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
-e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
-e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
@@ -1895,7 +1961,8 @@ lib/unistd.h: lib/unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_N
-e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
-e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
| \
- sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
-e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
-e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
-e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
@@ -2104,6 +2171,7 @@ lib/wchar.h: lib/wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NON
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
-e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
-e 's|@''REPLACE_WCSFTIME''@|$(REPLACE_WCSFTIME)|g' \
+ -e 's|@''REPLACE_WCSTOK''@|$(REPLACE_WCSTOK)|g' \
-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)'; \
@@ -2184,6 +2252,42 @@ EXTRA_DIST += lib/wctype.in.h
## end gnulib module wctype-h
+## begin gnulib module windows-mutex
+
+
+EXTRA_DIST += lib/windows-initguard.h lib/windows-mutex.c lib/windows-mutex.h
+
+EXTRA_lib_libsed_a_SOURCES += lib/windows-mutex.c
+
+## end gnulib module windows-mutex
+
+## begin gnulib module windows-once
+
+
+EXTRA_DIST += lib/windows-once.c lib/windows-once.h
+
+EXTRA_lib_libsed_a_SOURCES += lib/windows-once.c
+
+## end gnulib module windows-once
+
+## begin gnulib module windows-recmutex
+
+
+EXTRA_DIST += lib/windows-initguard.h lib/windows-recmutex.c lib/windows-recmutex.h
+
+EXTRA_lib_libsed_a_SOURCES += lib/windows-recmutex.c
+
+## end gnulib module windows-recmutex
+
+## begin gnulib module windows-rwlock
+
+
+EXTRA_DIST += lib/windows-initguard.h lib/windows-rwlock.c lib/windows-rwlock.h
+
+EXTRA_lib_libsed_a_SOURCES += lib/windows-rwlock.c
+
+## end gnulib module windows-rwlock
+
## begin gnulib module xalloc
lib_libsed_a_SOURCES += lib/xmalloc.c
diff --git a/lib/hard-locale.c b/lib/hard-locale.c
index 49bc6ca..730e9be 100644
--- a/lib/hard-locale.c
+++ b/lib/hard-locale.c
@@ -1,6 +1,6 @@
/* hard-locale.c -- Determine whether a locale is hard.
- Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2018 Free Software
+ Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -21,52 +21,15 @@
#include "hard-locale.h"
#include <locale.h>
-#include <stdlib.h>
#include <string.h>
-#ifdef __GLIBC__
-# define GLIBC_VERSION __GLIBC__
-#elif defined __UCLIBC__
-# define GLIBC_VERSION 2
-#else
-# define GLIBC_VERSION 0
-#endif
-
-/* Return true if the current CATEGORY locale is hard, i.e. if you
- can't get away with assuming traditional C or POSIX behavior. */
bool
hard_locale (int category)
{
- bool hard = true;
- char const *p = setlocale (category, NULL);
-
- if (p)
- {
- if (2 <= GLIBC_VERSION)
- {
- if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
- hard = false;
- }
- else
- {
- char *locale = strdup (p);
- if (locale)
- {
- /* Temporarily set the locale to the "C" and "POSIX" locales
- to find their names, so that we can determine whether one
- or the other is the caller's locale. */
- if (((p = setlocale (category, "C"))
- && strcmp (p, locale) == 0)
- || ((p = setlocale (category, "POSIX"))
- && strcmp (p, locale) == 0))
- hard = false;
+ char locale[SETLOCALE_NULL_MAX];
- /* Restore the caller's locale. */
- setlocale (category, locale);
- free (locale);
- }
- }
- }
+ if (setlocale_null_r (category, locale, sizeof (locale)))
+ return false;
- return hard;
+ return !(strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0);
}
diff --git a/lib/hard-locale.h b/lib/hard-locale.h
index 22eecc5..1886eaa 100644
--- a/lib/hard-locale.h
+++ b/lib/hard-locale.h
@@ -1,6 +1,6 @@
/* Determine whether a locale is hard.
- Copyright (C) 1999, 2003-2004, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2003-2004, 2009-2020 Free Software Foundation, Inc.
This 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,9 @@
# include <stdbool.h>
-bool hard_locale (int);
+/* Return true if the specified CATEGORY of the current locale is hard, i.e.
+ different from the C or POSIX locale that has a fixed behavior.
+ CATEGORY must be one of the LC_* values, but not LC_ALL. */
+extern bool hard_locale (int category);
#endif /* HARD_LOCALE_H_ */
diff --git a/lib/ignore-value.h b/lib/ignore-value.h
index 95eac1c..7a92226 100644
--- a/lib/ignore-value.h
+++ b/lib/ignore-value.h
@@ -1,6 +1,6 @@
/* ignore a function return without a compiler warning. -*- coding: utf-8 -*-
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/intprops.h b/lib/intprops.h
index cdaf658..dfbcaae 100644
--- a/lib/intprops.h
+++ b/lib/intprops.h
@@ -1,6 +1,6 @@
/* intprops.h -- properties of integer types
- Copyright (C) 2001-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -111,8 +111,8 @@
Subtract 1 for the sign bit if T is signed, and then add 1 more for
a minus sign if needed.
- Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is
- signed, this macro may overestimate the true bound by one byte when
+ Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 1 when its argument is
+ unsigned, this macro may overestimate the true bound by one byte when
applied to unsigned types of size 2, 4, 16, ... bytes. */
#define INT_STRLEN_BOUND(t) \
(INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \
@@ -220,14 +220,26 @@
? (a) < (min) >> (b) \
: (max) >> (b) < (a))
-/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */
+/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow
+ (A, B, P) work when P is non-null. */
#if 5 <= __GNUC__ && !defined __ICC
-# define _GL_HAS_BUILTIN_OVERFLOW 1
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1
+#elif defined __has_builtin
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow)
#else
-# define _GL_HAS_BUILTIN_OVERFLOW 0
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0
#endif
-/* True if __builtin_add_overflow_p (A, B, C) works. */
+/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */
+#ifdef __clang__
+/* Work around Clang bug <https://bugs.llvm.org/show_bug.cgi?id=16404>. */
+# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0
+#else
+# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW
+#endif
+
+/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for
+ __builtin_mul_overflow_p and __builtin_mul_overflow_p. */
#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__)
/* The _GL*_OVERFLOW macros have the same restrictions as the
@@ -281,7 +293,9 @@
The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
might not yield numerically correct answers due to arithmetic overflow.
- The INT_<op>_WRAPV macros also store the low-order bits of the answer.
+ The INT_<op>_WRAPV macros compute the low-order bits of the sum,
+ difference, and product of two C integers, and return 1 if these
+ low-order bits are not numerically correct.
These macros work correctly on all known practical hosts, and do not rely
on undefined behavior due to signed arithmetic overflow.
@@ -309,9 +323,11 @@
arguments should not have side effects.
The WRAPV macros are not constant expressions. They support only
- +, binary -, and *. The result type must be signed.
+ +, binary -, and *. Because the WRAPV macros convert the result,
+ they report overflow in different circumstances than the OVERFLOW
+ macros do.
- These macros are tuned for their last argument being a constant.
+ These macros are tuned for their last input argument being a constant.
Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
A % B, and A << B would overflow, respectively. */
@@ -347,19 +363,38 @@
/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R.
Return 1 if the result overflows. See above for restrictions. */
-#define INT_ADD_WRAPV(a, b, r) \
- _GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW)
-#define INT_SUBTRACT_WRAPV(a, b, r) \
- _GL_INT_OP_WRAPV (a, b, r, -, __builtin_sub_overflow, INT_SUBTRACT_OVERFLOW)
-#define INT_MULTIPLY_WRAPV(a, b, r) \
- _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW)
+#if _GL_HAS_BUILTIN_ADD_OVERFLOW
+# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r)
+# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r)
+#else
+# define INT_ADD_WRAPV(a, b, r) \
+ _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW)
+# define INT_SUBTRACT_WRAPV(a, b, r) \
+ _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW)
+#endif
+#if _GL_HAS_BUILTIN_MUL_OVERFLOW
+# if (9 < __GNUC__ + (3 <= __GNUC_MINOR__) \
+ || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__))
+# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r)
+# else
+ /* Work around GCC bug 91450. */
+# define INT_MULTIPLY_WRAPV(a, b, r) \
+ ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \
+ && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \
+ ? ((void) __builtin_mul_overflow (a, b, r), 1) \
+ : __builtin_mul_overflow (a, b, r))
+# endif
+#else
+# define INT_MULTIPLY_WRAPV(a, b, r) \
+ _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW)
+#endif
/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
https://llvm.org/bugs/show_bug.cgi?id=25390
For now, assume all versions of GCC-like compilers generate bogus
- warnings for _Generic. This matters only for older compilers that
- lack __builtin_add_overflow. */
+ warnings for _Generic. This matters only for compilers that
+ lack relevant builtins. */
#if __GNUC__
# define _GL__GENERIC_BOGUS 1
#else
@@ -367,53 +402,100 @@
#endif
/* Store the low-order bits of A <op> B into *R, where OP specifies
- the operation. BUILTIN is the builtin operation, and OVERFLOW the
- overflow predicate. Return 1 if the result overflows. See above
- for restrictions. */
-#if _GL_HAS_BUILTIN_OVERFLOW
-# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r)
-#elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
-# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \
+ the operation and OVERFLOW the overflow predicate. Return 1 if the
+ result overflows. See above for restrictions. */
+#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
+# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
(_Generic \
(*(r), \
signed char: \
_GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
signed char, SCHAR_MIN, SCHAR_MAX), \
+ unsigned char: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned char, 0, UCHAR_MAX), \
short int: \
_GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
short int, SHRT_MIN, SHRT_MAX), \
+ unsigned short int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned short int, 0, USHRT_MAX), \
int: \
_GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
int, INT_MIN, INT_MAX), \
+ unsigned int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned int, 0, UINT_MAX), \
long int: \
_GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
long int, LONG_MIN, LONG_MAX), \
+ unsigned long int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ unsigned long int, 0, ULONG_MAX), \
long long int: \
_GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
- long long int, LLONG_MIN, LLONG_MAX)))
+ long long int, LLONG_MIN, LLONG_MAX), \
+ unsigned long long int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ unsigned long long int, 0, ULLONG_MAX)))
#else
-# define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \
+/* Store the low-order bits of A <op> B into *R, where OP specifies
+ the operation and OVERFLOW the overflow predicate. If *R is
+ signed, its type is ST with bounds SMIN..SMAX; otherwise its type
+ is UT with bounds U..UMAX. ST and UT are narrower than int.
+ Return 1 if the result overflows. See above for restrictions. */
+# if _GL_HAVE___TYPEOF__
+# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
+ (TYPE_SIGNED (__typeof__ (*(r))) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax))
+# else
+# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
+ (overflow (a, b, smin, smax) \
+ ? (overflow (a, b, 0, umax) \
+ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \
+ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \
+ : (overflow (a, b, 0, umax) \
+ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \
+ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0)))
+# endif
+
+# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
(sizeof *(r) == sizeof (signed char) \
- ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
- signed char, SCHAR_MIN, SCHAR_MAX) \
+ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
+ signed char, SCHAR_MIN, SCHAR_MAX, \
+ unsigned char, UCHAR_MAX) \
: sizeof *(r) == sizeof (short int) \
- ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
- short int, SHRT_MIN, SHRT_MAX) \
+ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
+ short int, SHRT_MIN, SHRT_MAX, \
+ unsigned short int, USHRT_MAX) \
: sizeof *(r) == sizeof (int) \
- ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
- int, INT_MIN, INT_MAX) \
+ ? (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ int, INT_MIN, INT_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned int, 0, UINT_MAX)) \
: _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow))
# ifdef LLONG_MAX
# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
(sizeof *(r) == sizeof (long int) \
- ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
- long int, LONG_MIN, LONG_MAX) \
- : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
- long long int, LLONG_MIN, LLONG_MAX))
+ ? (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ long int, LONG_MIN, LONG_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ unsigned long int, 0, ULONG_MAX)) \
+ : (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ long long int, LLONG_MIN, LLONG_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ unsigned long long int, 0, ULLONG_MAX)))
# else
# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
- _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
- long int, LONG_MIN, LONG_MAX)
+ (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ long int, LONG_MIN, LONG_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ unsigned long int, 0, ULONG_MAX))
# endif
#endif
@@ -422,13 +504,7 @@
overflow problems. *R's type is T, with extrema TMIN and TMAX.
T must be a signed integer type. Return 1 if the result overflows. */
#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \
- (sizeof ((a) op (b)) < sizeof (t) \
- ? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \
- : _GL_INT_OP_CALC1 (a, b, r, op, overflow, ut, t, tmin, tmax))
-#define _GL_INT_OP_CALC1(a, b, r, op, overflow, ut, t, tmin, tmax) \
- ((overflow (a, b) \
- || (EXPR_SIGNED ((a) op (b)) && ((a) op (b)) < (tmin)) \
- || (tmax) < ((a) op (b))) \
+ (overflow (a, b, tmin, tmax) \
? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \
: (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0))
@@ -452,4 +528,57 @@
#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \
((t) ((ut) (a) op (ut) (b)))
+/* Return true if the numeric values A + B, A - B, A * B fall outside
+ the range TMIN..TMAX. Arguments should be integer expressions
+ without side effects. TMIN should be signed and nonpositive.
+ TMAX should be positive, and should be signed unless TMIN is zero. */
+#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \
+ ((b) < 0 \
+ ? (((tmin) \
+ ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \
+ && (a) < (tmin) - (b)) \
+ : (a) <= -1 - (b)) \
+ || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \
+ : (a) < 0 \
+ ? (((tmin) \
+ ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \
+ && (b) < (tmin) - (a)) \
+ : (b) <= -1 - (a)) \
+ || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \
+ && (tmax) < (a) + (b))) \
+ : (tmax) < (b) || (tmax) - (b) < (a))
+#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \
+ (((a) < 0) == ((b) < 0) \
+ ? ((a) < (b) \
+ ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \
+ : (tmax) < (a) - (b)) \
+ : (a) < 0 \
+ ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \
+ || (a) - (tmin) < (b)) \
+ : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
+ && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \
+ && (tmax) <= -1 - (b)) \
+ || (tmax) + (b) < (a)))
+#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \
+ ((b) < 0 \
+ ? ((a) < 0 \
+ ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
+ ? (a) < (tmax) / (b) \
+ : ((INT_NEGATE_OVERFLOW (b) \
+ ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (b) - 1) \
+ : (tmax) / -(b)) \
+ <= -1 - (a))) \
+ : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \
+ ? (EXPR_SIGNED (a) \
+ ? 0 < (a) + (tmin) \
+ : 0 < (a) && -1 - (tmin) < (a) - 1) \
+ : (tmin) / (b) < (a)) \
+ : (b) == 0 \
+ ? 0 \
+ : ((a) < 0 \
+ ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \
+ ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \
+ : (tmin) / (a) < (b)) \
+ : (tmax) / (b) < (a)))
+
#endif /* _GL_INTPROPS_H */
diff --git a/gnulib-tests/inttypes.in.h b/lib/inttypes.in.h
index c7d7968..d6efc7e 100644
--- a/gnulib-tests/inttypes.in.h
+++ b/lib/inttypes.in.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
Written by Paul Eggert, Bruno Haible, Derek Price.
This file is part of gnulib.
@@ -17,7 +17,7 @@
/*
* ISO C 99 <inttypes.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html>
*/
#if __GNUC__ >= 3
@@ -38,6 +38,8 @@
# endif
# @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
+
+# define _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H
# endif
#endif
@@ -49,15 +51,15 @@
#ifndef __GLIBC__
# include <stdint.h>
#endif
-/* Get CHAR_BIT. */
+/* Get CHAR_BIT, INT_MAX, LONG_MAX, etc. */
#include <limits.h>
/* On mingw, __USE_MINGW_ANSI_STDIO only works if <stdio.h> is also included */
#if defined _WIN32 && ! defined __CYGWIN__
# include <stdio.h>
#endif
-#if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
-# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
+#if !(INT_MAX == 0x7fffffff && INT_MIN + INT_MAX == -1)
+# error "This file assumes that 'int' is 32-bit two's complement. Please report your platform and compiler to <bug-gnulib@gnu.org>."
#endif
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
@@ -189,7 +191,7 @@
# define _PRI64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _PRI64_PREFIX "I64"
-# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# elif LONG_MAX >> 30 == 1
# define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
# endif
# if !defined PRId64 || @PRI_MACROS_BROKEN@
@@ -206,7 +208,7 @@
# define _PRIu64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _PRIu64_PREFIX "I64"
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# elif ULONG_MAX >> 31 == 1
# define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
# endif
# if !defined PRIo64 || @PRI_MACROS_BROKEN@
@@ -682,7 +684,7 @@
# define _SCN64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _SCN64_PREFIX "I64"
-# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# elif LONG_MAX >> 30 == 1
# define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
# endif
# if !defined SCNd64 || @PRI_MACROS_BROKEN@
@@ -699,7 +701,7 @@
# define _SCNu64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _SCNu64_PREFIX "I64"
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# elif ULONG_MAX >> 31 == 1
# define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
# endif
# if !defined SCNo64 || @PRI_MACROS_BROKEN@
diff --git a/lib/isblank.c b/lib/isblank.c
index df4b4aa..4899404 100644
--- a/lib/isblank.c
+++ b/lib/isblank.c
@@ -1,6 +1,6 @@
/* Test whether a character is a blank.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/langinfo.in.h b/lib/langinfo.in.h
index 96c237a..e912cd3 100644
--- a/lib/langinfo.in.h
+++ b/lib/langinfo.in.h
@@ -1,5 +1,5 @@
/* Substitute for and wrapper around <langinfo.h>.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,7 @@
/*
* POSIX <langinfo.h> for platforms that lack it or have an incomplete one.
- * <http://www.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html>
*/
#ifndef _@GUARD_PREFIX@_LANGINFO_H
diff --git a/lib/lc-charset-dispatch.c b/lib/lc-charset-dispatch.c
new file mode 100644
index 0000000..79057d4
--- /dev/null
+++ b/lib/lc-charset-dispatch.c
@@ -0,0 +1,82 @@
+/* Dispatching based on the current locale's character encoding.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
+
+ This 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>, 2018. */
+
+#include <config.h>
+
+/* Specification. */
+#include "lc-charset-dispatch.h"
+
+#if GNULIB_defined_mbstate_t
+
+# include "localcharset.h"
+# include "streq.h"
+
+# if GNULIB_WCHAR_SINGLE
+/* When we know that the locale does not change, provide a speedup by
+ caching the value of locale_encoding_classification. */
+# define locale_encoding_classification_cached locale_encoding_classification
+# else
+/* By default, don't make assumptions, hence no caching. */
+# define locale_encoding_classification_uncached locale_encoding_classification
+# endif
+
+# if GNULIB_WCHAR_SINGLE
+static inline
+# endif
+enc_t
+locale_encoding_classification_uncached (void)
+{
+ const char *encoding = locale_charset ();
+ if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
+ return enc_utf8;
+ if (STREQ_OPT (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
+ return enc_eucjp;
+ if (STREQ_OPT (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ || STREQ_OPT (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ_OPT (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
+ return enc_94;
+ if (STREQ_OPT (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
+ return enc_euctw;
+ if (STREQ_OPT (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
+ return enc_gb18030;
+ if (STREQ_OPT (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
+ return enc_sjis;
+ return enc_other;
+}
+
+# if GNULIB_WCHAR_SINGLE
+
+static int cached_locale_enc = -1;
+
+enc_t
+locale_encoding_classification_cached (void)
+{
+ if (cached_locale_enc < 0)
+ cached_locale_enc = locale_encoding_classification_uncached ();
+ return cached_locale_enc;
+}
+
+# endif
+
+#else
+
+/* This declaration is solely to ensure that after preprocessing
+ this file is never empty. */
+typedef int dummy;
+
+#endif
diff --git a/lib/lc-charset-dispatch.h b/lib/lc-charset-dispatch.h
new file mode 100644
index 0000000..95c2316
--- /dev/null
+++ b/lib/lc-charset-dispatch.h
@@ -0,0 +1,40 @@
+/* Dispatching based on the current locale's character encoding.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
+
+ This 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>, 2018. */
+
+#include <wchar.h>
+
+#if GNULIB_defined_mbstate_t
+
+/* A classification of special values of the encoding of the current locale. */
+typedef enum
+ {
+ enc_other, /* other */
+ enc_utf8, /* UTF-8 */
+ enc_eucjp, /* EUC-JP */
+ enc_94, /* EUC-KR, GB2312, BIG5 */
+ enc_euctw, /* EUC-TW */
+ enc_gb18030, /* GB18030 */
+ enc_sjis /* SJIS */
+ }
+ enc_t;
+
+/* Returns a classification of special values of the encoding of the current
+ locale. */
+extern enc_t locale_encoding_classification (void);
+
+#endif
diff --git a/lib/libc-config.h b/lib/libc-config.h
index d7b4093..aef1f79 100644
--- a/lib/libc-config.h
+++ b/lib/libc-config.h
@@ -1,6 +1,6 @@
/* System definitions for code taken from the GNU C Library
- Copyright 2017-2018 Free Software Foundation, Inc.
+ Copyright 2017-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
diff --git a/lib/limits.in.h b/lib/limits.in.h
index 89d7195..90c273f 100644
--- a/lib/limits.in.h
+++ b/lib/limits.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <limits.h>.
- Copyright 2016-2018 Free Software Foundation, Inc.
+ Copyright 2016-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
diff --git a/lib/local.mk b/lib/local.mk
index 1ef14b4..5deae8a 100644
--- a/lib/local.mk
+++ b/lib/local.mk
@@ -1,4 +1,4 @@
-# Copyright 1997-2018 Free Software Foundation, Inc.
+# Copyright 1997-2020 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/lib/localcharset.c b/lib/localcharset.c
index 58c5718..721c8a9 100644
--- a/lib/localcharset.c
+++ b/lib/localcharset.c
@@ -1,6 +1,6 @@
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2000-2006, 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -58,6 +58,9 @@
#elif defined WINDOWS_NATIVE
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+ /* For the use of setlocale() below, the Gnulib override in setlocale.c is
+ not needed; see the platform lists in setlocale_null.m4. */
+# undef setlocale
#endif
#if defined OS2
# define INCL_DOS
@@ -150,7 +153,8 @@ static const struct table_entry alias_table[] =
{ "ISO8859-2", "ISO-8859-2" },
{ "ISO8859-4", "ISO-8859-4" },
{ "ISO8859-5", "ISO-8859-5" },
- { "ISO8859-7", "ISO-8859-7" }
+ { "ISO8859-7", "ISO-8859-7" },
+ { "US-ASCII", "ASCII" }
# define alias_table_defined
# endif
# if defined __APPLE__ && defined __MACH__ /* Mac OS X */
@@ -377,27 +381,164 @@ static const struct table_entry alias_table[] =
/* The list of encodings is taken from "List of OS/2 Codepages"
by Alex Taylor:
<http://altsan.org/os2/toolkits/uls/index.html#codepages>.
- See also "IBM Globalization - Code page identifiers":
- <https://www-01.ibm.com/software/globalization/cp/cp_cpgid.html>. */
- { "CP1089", "ISO-8859-6" },
- { "CP1208", "UTF-8" },
- { "CP1381", "GB2312" },
- { "CP1386", "GBK" },
- { "CP3372", "EUC-JP" },
- { "CP813", "ISO-8859-7" },
- { "CP819", "ISO-8859-1" },
- { "CP878", "KOI8-R" },
- { "CP912", "ISO-8859-2" },
- { "CP913", "ISO-8859-3" },
- { "CP914", "ISO-8859-4" },
- { "CP915", "ISO-8859-5" },
- { "CP916", "ISO-8859-8" },
- { "CP920", "ISO-8859-9" },
- { "CP921", "ISO-8859-13" },
- { "CP923", "ISO-8859-15" },
- { "CP954", "EUC-JP" },
- { "CP964", "EUC-TW" },
- { "CP970", "EUC-KR" }
+ See also "__convcp() of kLIBC":
+ <https://github.com/bitwiseworks/libc/blob/master/src/emx/src/lib/locale/__convcp.c>. */
+ { "CP1004", "CP1252" },
+ /*{ "CP1041", "CP943" },*/
+ /*{ "CP1088", "CP949" },*/
+ { "CP1089", "ISO-8859-6" },
+ /*{ "CP1114", "CP950" },*/
+ /*{ "CP1115", "GB2312" },*/
+ { "CP1208", "UTF-8" },
+ /*{ "CP1380", "GB2312" },*/
+ { "CP1381", "GB2312" },
+ { "CP1383", "GB2312" },
+ { "CP1386", "GBK" },
+ /*{ "CP301", "CP943" },*/
+ { "CP3372", "EUC-JP" },
+ { "CP4946", "CP850" },
+ /*{ "CP5048", "JIS_X0208-1990" },*/
+ /*{ "CP5049", "JIS_X0212-1990" },*/
+ /*{ "CP5067", "KS_C_5601-1987" },*/
+ { "CP813", "ISO-8859-7" },
+ { "CP819", "ISO-8859-1" },
+ { "CP878", "KOI8-R" },
+ /*{ "CP897", "CP943" },*/
+ { "CP912", "ISO-8859-2" },
+ { "CP913", "ISO-8859-3" },
+ { "CP914", "ISO-8859-4" },
+ { "CP915", "ISO-8859-5" },
+ { "CP916", "ISO-8859-8" },
+ { "CP920", "ISO-8859-9" },
+ { "CP921", "ISO-8859-13" },
+ { "CP923", "ISO-8859-15" },
+ /*{ "CP941", "CP943" },*/
+ /*{ "CP947", "CP950" },*/
+ /*{ "CP951", "CP949" },*/
+ /*{ "CP952", "JIS_X0208-1990" },*/
+ /*{ "CP953", "JIS_X0212-1990" },*/
+ { "CP954", "EUC-JP" },
+ { "CP964", "EUC-TW" },
+ { "CP970", "EUC-KR" },
+ /*{ "CP971", "KS_C_5601-1987" },*/
+ { "IBM-1004", "CP1252" },
+ /*{ "IBM-1006", "?" },*/
+ /*{ "IBM-1008", "?" },*/
+ /*{ "IBM-1041", "CP943" },*/
+ /*{ "IBM-1051", "?" },*/
+ /*{ "IBM-1088", "CP949" },*/
+ { "IBM-1089", "ISO-8859-6" },
+ /*{ "IBM-1098", "?" },*/
+ /*{ "IBM-1114", "CP950" },*/
+ /*{ "IBM-1115", "GB2312" },*/
+ /*{ "IBM-1116", "?" },*/
+ /*{ "IBM-1117", "?" },*/
+ /*{ "IBM-1118", "?" },*/
+ /*{ "IBM-1119", "?" },*/
+ { "IBM-1124", "CP1124" },
+ { "IBM-1125", "CP1125" },
+ { "IBM-1131", "CP1131" },
+ { "IBM-1208", "UTF-8" },
+ { "IBM-1250", "CP1250" },
+ { "IBM-1251", "CP1251" },
+ { "IBM-1252", "CP1252" },
+ { "IBM-1253", "CP1253" },
+ { "IBM-1254", "CP1254" },
+ { "IBM-1255", "CP1255" },
+ { "IBM-1256", "CP1256" },
+ { "IBM-1257", "CP1257" },
+ /*{ "IBM-1275", "?" },*/
+ /*{ "IBM-1276", "?" },*/
+ /*{ "IBM-1277", "?" },*/
+ /*{ "IBM-1280", "?" },*/
+ /*{ "IBM-1281", "?" },*/
+ /*{ "IBM-1282", "?" },*/
+ /*{ "IBM-1283", "?" },*/
+ /*{ "IBM-1380", "GB2312" },*/
+ { "IBM-1381", "GB2312" },
+ { "IBM-1383", "GB2312" },
+ { "IBM-1386", "GBK" },
+ /*{ "IBM-301", "CP943" },*/
+ { "IBM-3372", "EUC-JP" },
+ { "IBM-367", "ASCII" },
+ { "IBM-437", "CP437" },
+ { "IBM-4946", "CP850" },
+ /*{ "IBM-5048", "JIS_X0208-1990" },*/
+ /*{ "IBM-5049", "JIS_X0212-1990" },*/
+ /*{ "IBM-5067", "KS_C_5601-1987" },*/
+ { "IBM-813", "ISO-8859-7" },
+ { "IBM-819", "ISO-8859-1" },
+ { "IBM-850", "CP850" },
+ /*{ "IBM-851", "?" },*/
+ { "IBM-852", "CP852" },
+ { "IBM-855", "CP855" },
+ { "IBM-856", "CP856" },
+ { "IBM-857", "CP857" },
+ /*{ "IBM-859", "?" },*/
+ { "IBM-860", "CP860" },
+ { "IBM-861", "CP861" },
+ { "IBM-862", "CP862" },
+ { "IBM-863", "CP863" },
+ { "IBM-864", "CP864" },
+ { "IBM-865", "CP865" },
+ { "IBM-866", "CP866" },
+ /*{ "IBM-868", "?" },*/
+ { "IBM-869", "CP869" },
+ { "IBM-874", "CP874" },
+ { "IBM-878", "KOI8-R" },
+ /*{ "IBM-895", "?" },*/
+ /*{ "IBM-897", "CP943" },*/
+ /*{ "IBM-907", "?" },*/
+ /*{ "IBM-909", "?" },*/
+ { "IBM-912", "ISO-8859-2" },
+ { "IBM-913", "ISO-8859-3" },
+ { "IBM-914", "ISO-8859-4" },
+ { "IBM-915", "ISO-8859-5" },
+ { "IBM-916", "ISO-8859-8" },
+ { "IBM-920", "ISO-8859-9" },
+ { "IBM-921", "ISO-8859-13" },
+ { "IBM-922", "CP922" },
+ { "IBM-923", "ISO-8859-15" },
+ { "IBM-932", "CP932" },
+ /*{ "IBM-941", "CP943" },*/
+ /*{ "IBM-942", "?" },*/
+ { "IBM-943", "CP943" },
+ /*{ "IBM-947", "CP950" },*/
+ { "IBM-949", "CP949" },
+ { "IBM-950", "CP950" },
+ /*{ "IBM-951", "CP949" },*/
+ /*{ "IBM-952", "JIS_X0208-1990" },*/
+ /*{ "IBM-953", "JIS_X0212-1990" },*/
+ { "IBM-954", "EUC-JP" },
+ /*{ "IBM-955", "?" },*/
+ { "IBM-964", "EUC-TW" },
+ { "IBM-970", "EUC-KR" },
+ /*{ "IBM-971", "KS_C_5601-1987" },*/
+ { "IBM-eucCN", "GB2312" },
+ { "IBM-eucJP", "EUC-JP" },
+ { "IBM-eucKR", "EUC-KR" },
+ { "IBM-eucTW", "EUC-TW" },
+ { "IBM33722", "EUC-JP" },
+ { "ISO8859-1", "ISO-8859-1" },
+ { "ISO8859-2", "ISO-8859-2" },
+ { "ISO8859-3", "ISO-8859-3" },
+ { "ISO8859-4", "ISO-8859-4" },
+ { "ISO8859-5", "ISO-8859-5" },
+ { "ISO8859-6", "ISO-8859-6" },
+ { "ISO8859-7", "ISO-8859-7" },
+ { "ISO8859-8", "ISO-8859-8" },
+ { "ISO8859-9", "ISO-8859-9" },
+ /*{ "JISX0201-1976", "JISX0201-1976" },*/
+ /*{ "JISX0208-1978", "?" },*/
+ /*{ "JISX0208-1983", "JIS_X0208-1983" },*/
+ /*{ "JISX0208-1990", "JIS_X0208-1990" },*/
+ /*{ "JISX0212-1990", "JIS_X0212-1990" },*/
+ /*{ "KSC5601-1987", "KS_C_5601-1987" },*/
+ { "SJIS-1", "CP943" },
+ { "SJIS-2", "CP943" },
+ { "eucJP", "EUC-JP" },
+ { "eucKR", "EUC-KR" },
+ { "eucTW-1993", "EUC-TW" }
# define alias_table_defined
# endif
# if defined VMS /* OpenVMS */
@@ -675,8 +816,11 @@ static const struct table_entry locale_table[] =
/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in localcharset.h.
- The result must not be freed; it is statically allocated.
+ into one of the canonical names listed below.
+ The result must not be freed; it is statically allocated. The result
+ becomes invalid when setlocale() is used to change the global locale, or
+ when the value of one of the environment variables LC_ALL, LC_CTYPE, LANG
+ is changed; threads in multithreaded programs should not do this.
If the canonical name cannot be determined, the result is a non-canonical
name. */
@@ -688,6 +832,13 @@ locale_charset (void)
{
const char *codeset;
+ /* This function must be multithread-safe. To achieve this without using
+ thread-local storage, we use a simple strcpy or memcpy to fill this static
+ buffer. Filling it through, for example, strcpy + strcat would not be
+ guaranteed to leave the buffer's contents intact if another thread is
+ currently accessing it. If necessary, the contents is first assembled in
+ a stack-allocated buffer. */
+
#if HAVE_LANGINFO_CODESET || defined WINDOWS_NATIVE || defined OS2
# if HAVE_LANGINFO_CODESET
@@ -702,7 +853,7 @@ locale_charset (void)
if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
{
const char *locale;
- static char buf[2 + 10 + 1];
+ static char resultbuf[2 + 10 + 1];
locale = getenv ("LC_ALL");
if (locale == NULL || locale[0] == '\0')
@@ -726,11 +877,12 @@ locale_charset (void)
modifier = strchr (dot, '@');
if (modifier == NULL)
return dot;
- if (modifier - dot < sizeof (buf))
+ if (modifier - dot < sizeof (resultbuf))
{
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
+ /* This way of filling resultbuf is multithread-safe. */
+ memcpy (resultbuf, dot, modifier - dot);
+ resultbuf [modifier - dot] = '\0';
+ return resultbuf;
}
}
}
@@ -746,8 +898,13 @@ locale_charset (void)
converting to GetConsoleOutputCP(). This leads to correct results,
except when SetConsoleOutputCP has been called and a raster font is
in use. */
- sprintf (buf, "CP%u", GetACP ());
- codeset = buf;
+ {
+ char buf[2 + 10 + 1];
+
+ sprintf (buf, "CP%u", GetACP ());
+ strcpy (resultbuf, buf);
+ codeset = resultbuf;
+ }
}
# endif
@@ -757,42 +914,44 @@ locale_charset (void)
# elif defined WINDOWS_NATIVE
- static char buf[2 + 10 + 1];
+ char buf[2 + 10 + 1];
+ static char resultbuf[2 + 10 + 1];
/* The Windows API has a function returning the locale's codepage as
a number, but the value doesn't change according to what the
'setlocale' call specified. So we use it as a last resort, in
case the string returned by 'setlocale' doesn't specify the
codepage. */
- char *current_locale = setlocale (LC_ALL, NULL);
- char *pdot;
+ char *current_locale = setlocale (LC_CTYPE, NULL);
+ char *pdot = strrchr (current_locale, '.');
- /* If they set different locales for different categories,
- 'setlocale' will return a semi-colon separated list of locale
- values. To make sure we use the correct one, we choose LC_CTYPE. */
- if (strchr (current_locale, ';'))
- current_locale = setlocale (LC_CTYPE, NULL);
-
- pdot = strrchr (current_locale, '.');
if (pdot && 2 + strlen (pdot + 1) + 1 <= sizeof (buf))
sprintf (buf, "CP%s", pdot + 1);
else
{
/* The Windows API has a function returning the locale's codepage as a
- number: GetACP().
- When the output goes to a console window, it needs to be provided in
- GetOEMCP() encoding if the console is using a raster font, or in
- GetConsoleOutputCP() encoding if it is using a TrueType font.
- But in GUI programs and for output sent to files and pipes, GetACP()
- encoding is the best bet. */
+ number: GetACP().
+ When the output goes to a console window, it needs to be provided in
+ GetOEMCP() encoding if the console is using a raster font, or in
+ GetConsoleOutputCP() encoding if it is using a TrueType font.
+ But in GUI programs and for output sent to files and pipes, GetACP()
+ encoding is the best bet. */
sprintf (buf, "CP%u", GetACP ());
}
- codeset = buf;
+ /* For a locale name such as "French_France.65001", in Windows 10,
+ setlocale now returns "French_France.utf8" instead. */
+ if (strcmp (buf + 2, "65001") == 0 || strcmp (buf + 2, "utf8") == 0)
+ codeset = "UTF-8";
+ else
+ {
+ strcpy (resultbuf, buf);
+ codeset = resultbuf;
+ }
# elif defined OS2
const char *locale;
- static char buf[2 + 10 + 1];
+ static char resultbuf[2 + 10 + 1];
ULONG cp[3];
ULONG cplen;
@@ -821,11 +980,12 @@ locale_charset (void)
modifier = strchr (dot, '@');
if (modifier == NULL)
return dot;
- if (modifier - dot < sizeof (buf))
+ if (modifier - dot < sizeof (resultbuf))
{
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
+ /* This way of filling resultbuf is multithread-safe. */
+ memcpy (resultbuf, dot, modifier - dot);
+ resultbuf [modifier - dot] = '\0';
+ return resultbuf;
}
}
@@ -841,8 +1001,11 @@ locale_charset (void)
codeset = "";
else
{
+ char buf[2 + 10 + 1];
+
sprintf (buf, "CP%u", cp[0]);
- codeset = buf;
+ strcpy (resultbuf, buf);
+ codeset = resultbuf;
}
}
diff --git a/lib/localcharset.h b/lib/localcharset.h
index e4ba296..aa623be 100644
--- a/lib/localcharset.h
+++ b/lib/localcharset.h
@@ -1,5 +1,5 @@
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2003, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003, 2009-2020 Free Software Foundation, Inc.
This file is part of the GNU CHARSET Library.
This program is free software; you can redistribute it and/or modify
@@ -26,7 +26,10 @@ extern "C" {
/* Determine the current locale's character encoding, and canonicalize it
into one of the canonical names listed below.
- The result must not be freed; it is statically allocated.
+ The result must not be freed; it is statically allocated. The result
+ becomes invalid when setlocale() is used to change the global locale, or
+ when the value of one of the environment variables LC_ALL, LC_CTYPE, LANG
+ is changed; threads in multithreaded programs should not do this.
If the canonical name cannot be determined, the result is a non-canonical
name. */
extern const char * locale_charset (void);
@@ -45,15 +48,15 @@ extern const char * locale_charset (void);
(darwin = Mac OS X, windows = native Windows)
ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin minix cygwin
- ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
- ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+ ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos
+ ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos
ISO-8859-3 Y glibc solaris cygwin
ISO-8859-4 Y hpux osf solaris freebsd netbsd openbsd darwin
- ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+ ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos
ISO-8859-6 Y glibc aix hpux solaris cygwin
- ISO-8859-7 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
- ISO-8859-8 Y glibc aix hpux osf solaris cygwin
- ISO-8859-9 Y glibc aix hpux irix osf solaris freebsd darwin cygwin
+ ISO-8859-7 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin zos
+ ISO-8859-8 Y glibc aix hpux osf solaris cygwin zos
+ ISO-8859-9 Y glibc aix hpux irix osf solaris freebsd darwin cygwin zos
ISO-8859-13 glibc hpux solaris freebsd netbsd openbsd darwin cygwin
ISO-8859-14 glibc cygwin
ISO-8859-15 glibc aix irix osf solaris freebsd netbsd openbsd darwin cygwin
@@ -76,7 +79,7 @@ extern const char * locale_charset (void);
CP874 windows dos
CP922 aix
CP932 aix cygwin windows dos
- CP943 aix
+ CP943 aix zos
CP949 osf darwin windows dos
CP950 windows dos
CP1046 aix
@@ -92,17 +95,17 @@ extern const char * locale_charset (void);
CP1255 glibc windows
CP1256 windows
CP1257 windows
- GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin cygwin
+ GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin cygwin zos
EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
- EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
+ EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin zos
EUC-TW glibc aix hpux irix osf solaris netbsd
- BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin cygwin
+ BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin cygwin zos
BIG5-HKSCS glibc hpux solaris netbsd darwin
GBK glibc aix osf solaris freebsd darwin cygwin windows dos
GB18030 glibc hpux solaris freebsd netbsd darwin
SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin
JOHAB glibc solaris windows
- TIS-620 glibc aix hpux osf solaris cygwin
+ TIS-620 glibc aix hpux osf solaris cygwin zos
VISCII Y glibc
TCVN5712-1 glibc
ARMSCII-8 glibc freebsd netbsd darwin
@@ -116,7 +119,7 @@ extern const char * locale_charset (void);
HP-KANA8 hpux
DEC-KANJI osf
DEC-HANYU osf
- UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin
+ UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin zos
Note: Names which are not marked as being a MIME name should not be used in
Internet protocols for information interchange (mail, news, etc.).
diff --git a/lib/locale.in.h b/lib/locale.in.h
index 123df7a..4e9b3f3 100644
--- a/lib/locale.in.h
+++ b/lib/locale.in.h
@@ -1,5 +1,5 @@
/* A POSIX <locale.h>.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,6 +64,18 @@
# define LC_MESSAGES 1729
#endif
+/* On native Windows with MSVC, 'struct lconv' lacks the members int_p_* and
+ int_n_*. Instead of overriding 'struct lconv', merely define these member
+ names as macros. This avoids trouble in C++ mode. */
+#if defined _MSC_VER
+# define int_p_cs_precedes p_cs_precedes
+# define int_p_sign_posn p_sign_posn
+# define int_p_sep_by_space p_sep_by_space
+# define int_n_cs_precedes n_cs_precedes
+# define int_n_sign_posn n_sign_posn
+# define int_n_sep_by_space n_sep_by_space
+#endif
+
/* Bionic libc's 'struct lconv' is just a dummy. */
#if @REPLACE_STRUCT_LCONV@
# define lconv rpl_lconv
@@ -72,7 +84,7 @@ struct lconv
/* All 'char *' are actually 'const char *'. */
/* Members that depend on the LC_NUMERIC category of the locale. See
- <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_04> */
/* Symbol used as decimal point. */
char *decimal_point;
@@ -84,7 +96,7 @@ struct lconv
char *grouping;
/* Members that depend on the LC_MONETARY category of the locale. See
- <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_03> */
/* Symbol used as decimal point. */
char *mon_decimal_point;
@@ -156,7 +168,9 @@ _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
# else
_GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (localeconv);
+# endif
#elif @REPLACE_STRUCT_LCONV@
# undef localeconv
# define localeconv localeconv_used_without_requesting_gnulib_module_localeconv
@@ -181,7 +195,9 @@ _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
# else
_GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (setlocale);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef setlocale
# if HAVE_RAW_DECL_SETLOCALE
@@ -190,6 +206,11 @@ _GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - "
# endif
#endif
+#if @GNULIB_SETLOCALE_NULL@
+/* Included here for convenience. */
+# include "setlocale_null.h"
+#endif
+
#if /*@GNULIB_NEWLOCALE@ ||*/ (@GNULIB_LOCALENAME@ && @HAVE_NEWLOCALE@)
# if @REPLACE_NEWLOCALE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -211,6 +232,11 @@ _GL_CXXALIAS_SYS (newlocale, locale_t,
# if @HAVE_NEWLOCALE@
_GL_CXXALIASWARN (newlocale);
# endif
+# if @HAVE_NEWLOCALE@ || @REPLACE_NEWLOCALE@
+# ifndef HAVE_WORKING_NEWLOCALE
+# define HAVE_WORKING_NEWLOCALE 1
+# endif
+# endif
#elif defined GNULIB_POSIXCHECK
# undef newlocale
# if HAVE_RAW_DECL_NEWLOCALE
@@ -235,6 +261,11 @@ _GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale));
# if @HAVE_DUPLOCALE@
_GL_CXXALIASWARN (duplocale);
# endif
+# if @HAVE_DUPLOCALE@ || @REPLACE_DUPLOCALE@
+# ifndef HAVE_WORKING_DUPLOCALE
+# define HAVE_WORKING_DUPLOCALE 1
+# endif
+# endif
#elif defined GNULIB_POSIXCHECK
# undef duplocale
# if HAVE_RAW_DECL_DUPLOCALE
@@ -254,7 +285,9 @@ _GL_FUNCDECL_RPL (freelocale, void, (locale_t locale) _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (freelocale, void, (locale_t locale));
# else
# if @HAVE_FREELOCALE@
-_GL_CXXALIAS_SYS (freelocale, void, (locale_t locale));
+/* Need to cast, because on FreeBSD and Mac OS X 10.13, the return type is
+ int. */
+_GL_CXXALIAS_SYS_CAST (freelocale, void, (locale_t locale));
# endif
# endif
# if @HAVE_FREELOCALE@
diff --git a/lib/localeconv.c b/lib/localeconv.c
index 87cface..8aa9bbe 100644
--- a/lib/localeconv.c
+++ b/lib/localeconv.c
@@ -1,5 +1,5 @@
/* Query locale dependent information for formatting numbers.
- Copyright (C) 2012-2018 Free Software Foundation, Inc.
+ Copyright (C) 2012-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/localeinfo.c b/lib/localeinfo.c
index 4fdeeb4..a6dfaf8 100644
--- a/lib/localeinfo.c
+++ b/lib/localeinfo.c
@@ -1,6 +1,6 @@
/* locale information
- Copyright 2016-2018 Free Software Foundation, Inc.
+ Copyright 2016-2020 Free Software Foundation, Inc.
This 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,17 +44,55 @@ is_using_utf8 (void)
return mbrtowc (&wc, "\xc4\x80", 2, &mbs) == 2 && wc == 0x100;
}
+/* Return true if the locale is compatible enough with the C locale so
+ that the locale is single-byte, bytes are in collating-sequence
+ order, and there are no multi-character collating elements. */
+
+static bool
+using_simple_locale (bool multibyte)
+{
+ /* The native character set is known to be compatible with
+ the C locale. The following test isn't perfect, but it's good
+ enough in practice, as only ASCII and EBCDIC are in common use
+ and this test correctly accepts ASCII and rejects EBCDIC. */
+ enum { native_c_charset =
+ ('\b' == 8 && '\t' == 9 && '\n' == 10 && '\v' == 11 && '\f' == 12
+ && '\r' == 13 && ' ' == 32 && '!' == 33 && '"' == 34 && '#' == 35
+ && '%' == 37 && '&' == 38 && '\'' == 39 && '(' == 40 && ')' == 41
+ && '*' == 42 && '+' == 43 && ',' == 44 && '-' == 45 && '.' == 46
+ && '/' == 47 && '0' == 48 && '9' == 57 && ':' == 58 && ';' == 59
+ && '<' == 60 && '=' == 61 && '>' == 62 && '?' == 63 && 'A' == 65
+ && 'Z' == 90 && '[' == 91 && '\\' == 92 && ']' == 93 && '^' == 94
+ && '_' == 95 && 'a' == 97 && 'z' == 122 && '{' == 123 && '|' == 124
+ && '}' == 125 && '~' == 126)
+ };
+
+ if (!native_c_charset || multibyte)
+ return false;
+
+ /* As a heuristic, use strcoll to compare native character order.
+ If this agrees with byte order the locale should be simple.
+ This heuristic should work for all known practical locales,
+ although it would be invalid for artificially-constructed locales
+ where the native order is the collating-sequence order but there
+ are multi-character collating elements. */
+ for (int i = 0; i < UCHAR_MAX; i++)
+ if (0 <= strcoll (((char []) {i, 0}), ((char []) {i + 1, 0})))
+ return false;
+
+ return true;
+}
+
/* Initialize *LOCALEINFO from the current locale. */
void
init_localeinfo (struct localeinfo *localeinfo)
{
- int i;
-
localeinfo->multibyte = MB_CUR_MAX > 1;
+ localeinfo->simple = using_simple_locale (localeinfo->multibyte);
localeinfo->using_utf8 = is_using_utf8 ();
- for (i = CHAR_MIN; i <= CHAR_MAX; i++)
+ for (int i = CHAR_MIN; i <= CHAR_MAX; i++)
{
char c = i;
unsigned char uc = i;
diff --git a/lib/localeinfo.h b/lib/localeinfo.h
index fcd5311..16f5129 100644
--- a/lib/localeinfo.h
+++ b/lib/localeinfo.h
@@ -1,6 +1,6 @@
/* locale information
- Copyright 2016-2018 Free Software Foundation, Inc.
+ Copyright 2016-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,6 +28,12 @@ struct localeinfo
/* MB_CUR_MAX > 1. */
bool multibyte;
+ /* The locale is simple, like the C locale. These locales can be
+ processed more efficiently, as they are single-byte, their native
+ character set is in collating-sequence order, and they do not
+ have multi-character collating elements. */
+ bool simple;
+
/* The locale uses UTF-8. */
bool using_utf8;
diff --git a/lib/localtime-buffer.c b/lib/localtime-buffer.c
index 910c8bc..141849c 100644
--- a/lib/localtime-buffer.c
+++ b/lib/localtime-buffer.c
@@ -1,6 +1,6 @@
/* Provide access to the last buffer returned by localtime() or gmtime().
- Copyright (C) 2001-2003, 2005-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/localtime-buffer.h b/lib/localtime-buffer.h
index f381ff0..3801742 100644
--- a/lib/localtime-buffer.h
+++ b/lib/localtime-buffer.h
@@ -1,6 +1,6 @@
/* Provide access to the last buffer returned by localtime() or gmtime().
- Copyright (C) 2001-2003, 2005-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/lstat.c b/lib/lstat.c
index 5873bbd..f74392b 100644
--- a/lib/lstat.c
+++ b/lib/lstat.c
@@ -1,6 +1,6 @@
/* Work around a bug of lstat on some systems
- Copyright (C) 1997-2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 1997-2006, 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -42,10 +42,14 @@ orig_lstat (const char *filename, struct stat *buf)
}
/* Specification. */
+# ifdef __osf__
/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
eliminates this include because of the preliminary #include <sys/stat.h>
above. */
-# include "sys/stat.h"
+# include "sys/stat.h"
+# else
+# include <sys/stat.h>
+# endif
# include "stat-time.h"
diff --git a/lib/malloc.c b/lib/malloc.c
index 471c3ab..7232f1e 100644
--- a/lib/malloc.c
+++ b/lib/malloc.c
@@ -1,6 +1,6 @@
/* malloc() function that is glibc compatible.
- Copyright (C) 1997-1998, 2006-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1997-1998, 2006-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/malloca.c b/lib/malloca.c
index c54e1e0..975b166 100644
--- a/lib/malloca.c
+++ b/lib/malloca.c
@@ -1,5 +1,5 @@
/* Safe automatic memory allocation.
- Copyright (C) 2003, 2006-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006-2007, 2009-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2003, 2018.
This program is free software; you can redistribute it and/or modify
diff --git a/lib/malloca.h b/lib/malloca.h
index 1e47813..cfcd4de 100644
--- a/lib/malloca.h
+++ b/lib/malloca.h
@@ -1,5 +1,5 @@
/* Safe automatic memory allocation.
- Copyright (C) 2003-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2007, 2009-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2003.
This program is free software; you can redistribute it and/or modify
@@ -112,14 +112,10 @@ enum
among all elementary types. */
sa_alignment_long = sa_alignof (long),
sa_alignment_double = sa_alignof (double),
-#if HAVE_LONG_LONG_INT
sa_alignment_longlong = sa_alignof (long long),
-#endif
sa_alignment_longdouble = sa_alignof (long double),
sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1)
-#if HAVE_LONG_LONG_INT
| (sa_alignment_longlong - 1)
-#endif
| (sa_alignment_longdouble - 1)
) + 1
};
diff --git a/lib/mbrlen.c b/lib/mbrlen.c
index 2812a2e..cacc9c8 100644
--- a/lib/mbrlen.c
+++ b/lib/mbrlen.c
@@ -1,5 +1,5 @@
/* Recognize multibyte character.
- Copyright (C) 1999-2000, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2000, 2008-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/mbrtowc-impl-utf8.h b/lib/mbrtowc-impl-utf8.h
new file mode 100644
index 0000000..a826b1b
--- /dev/null
+++ b/lib/mbrtowc-impl-utf8.h
@@ -0,0 +1,138 @@
+/* Convert multibyte character to wide character.
+ Copyright (C) 1999-2002, 2005-2020 Free Software Foundation, Inc.
+
+ This 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. */
+
+/* This file contains the part of the body of the mbrtowc and mbrtoc32 functions
+ that handles the special case of the UTF-8 encoding. */
+
+ /* Cf. unistr/u8-mbtouc.c. */
+ unsigned char c = (unsigned char) p[0];
+
+ if (c < 0x80)
+ {
+ if (pwc != NULL)
+ *pwc = c;
+ res = (c == 0 ? 0 : 1);
+ goto success;
+ }
+ if (c >= 0xc2)
+ {
+ if (c < 0xe0)
+ {
+ if (m == 1)
+ goto incomplete;
+ else /* m >= 2 */
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if ((c2 ^ 0x80) < 0x40)
+ {
+ if (pwc != NULL)
+ *pwc = ((unsigned int) (c & 0x1f) << 6)
+ | (unsigned int) (c2 ^ 0x80);
+ res = 2;
+ goto success;
+ }
+ }
+ }
+ else if (c < 0xf0)
+ {
+ if (m == 1)
+ goto incomplete;
+ else
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if ((c2 ^ 0x80) < 0x40
+ && (c >= 0xe1 || c2 >= 0xa0)
+ && (c != 0xed || c2 < 0xa0))
+ {
+ if (m == 2)
+ goto incomplete;
+ else /* m >= 3 */
+ {
+ unsigned char c3 = (unsigned char) p[2];
+
+ if ((c3 ^ 0x80) < 0x40)
+ {
+ unsigned int wc =
+ (((unsigned int) (c & 0x0f) << 12)
+ | ((unsigned int) (c2 ^ 0x80) << 6)
+ | (unsigned int) (c3 ^ 0x80));
+
+ if (FITS_IN_CHAR_TYPE (wc))
+ {
+ if (pwc != NULL)
+ *pwc = wc;
+ res = 3;
+ goto success;
+ }
+ }
+ }
+ }
+ }
+ }
+ else if (c <= 0xf4)
+ {
+ if (m == 1)
+ goto incomplete;
+ else
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if ((c2 ^ 0x80) < 0x40
+ && (c >= 0xf1 || c2 >= 0x90)
+ && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
+ {
+ if (m == 2)
+ goto incomplete;
+ else
+ {
+ unsigned char c3 = (unsigned char) p[2];
+
+ if ((c3 ^ 0x80) < 0x40)
+ {
+ if (m == 3)
+ goto incomplete;
+ else /* m >= 4 */
+ {
+ unsigned char c4 = (unsigned char) p[3];
+
+ if ((c4 ^ 0x80) < 0x40)
+ {
+ unsigned int wc =
+ (((unsigned int) (c & 0x07) << 18)
+ | ((unsigned int) (c2 ^ 0x80) << 12)
+ | ((unsigned int) (c3 ^ 0x80) << 6)
+ | (unsigned int) (c4 ^ 0x80));
+
+ if (FITS_IN_CHAR_TYPE (wc))
+ {
+ if (pwc != NULL)
+ *pwc = wc;
+ res = 4;
+ goto success;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ goto invalid;
diff --git a/lib/mbrtowc-impl.h b/lib/mbrtowc-impl.h
new file mode 100644
index 0000000..c970439
--- /dev/null
+++ b/lib/mbrtowc-impl.h
@@ -0,0 +1,262 @@
+/* Convert multibyte character to wide character.
+ Copyright (C) 1999-2002, 2005-2020 Free Software Foundation, Inc.
+
+ This 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. */
+
+/* This file contains the body of the mbrtowc and mbrtoc32 functions,
+ when GNULIB_defined_mbstate_t is defined. */
+
+ char *pstate = (char *)ps;
+
+ if (s == NULL)
+ {
+ pwc = NULL;
+ s = "";
+ n = 1;
+ }
+
+ if (n == 0)
+ return (size_t)(-2);
+
+ /* Here n > 0. */
+
+ if (pstate == NULL)
+ pstate = internal_state;
+
+ {
+ size_t nstate = pstate[0];
+ char buf[4];
+ const char *p;
+ size_t m;
+ enc_t enc;
+ int res;
+
+ switch (nstate)
+ {
+ case 0:
+ p = s;
+ m = n;
+ break;
+ case 3:
+ buf[2] = pstate[3];
+ FALLTHROUGH;
+ case 2:
+ buf[1] = pstate[2];
+ FALLTHROUGH;
+ case 1:
+ buf[0] = pstate[1];
+ p = buf;
+ m = nstate;
+ buf[m++] = s[0];
+ if (n >= 2 && m < 4)
+ {
+ buf[m++] = s[1];
+ if (n >= 3 && m < 4)
+ buf[m++] = s[2];
+ }
+ break;
+ default:
+ errno = EINVAL;
+ return (size_t)(-1);
+ }
+
+ /* Here m > 0. */
+
+ enc = locale_encoding_classification ();
+
+ if (enc == enc_utf8) /* UTF-8 */
+ {
+ /* Achieve
+ - multi-thread safety and
+ - the ability to produce wide character values > WCHAR_MAX
+ by not calling mbtowc() at all. */
+#include "mbrtowc-impl-utf8.h"
+ }
+ else
+ {
+ /* The hidden internal state of mbtowc would make this function not
+ multi-thread safe. Achieve multi-thread safety through a lock. */
+ wchar_t wc;
+ res = mbtowc_with_lock (&wc, p, m);
+
+ if (res >= 0)
+ {
+ if ((wc == 0) != (res == 0))
+ abort ();
+ if (pwc != NULL)
+ *pwc = wc;
+ goto success;
+ }
+
+ /* mbtowc does not distinguish between invalid and incomplete multibyte
+ sequences. But mbrtowc needs to make this distinction.
+ There are two possible approaches:
+ - Use iconv() and its return value.
+ - Use built-in knowledge about the possible encodings.
+ Given the low quality of implementation of iconv() on the systems
+ that lack mbrtowc(), we use the second approach.
+ The possible encodings are:
+ - 8-bit encodings,
+ - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
+ - UTF-8 (already handled above).
+ Use specialized code for each. */
+ if (m >= 4 || m >= MB_CUR_MAX)
+ goto invalid;
+ /* Here MB_CUR_MAX > 1 and 0 < m < 4. */
+ switch (enc)
+ {
+ /* As a reference for this code, you can use the GNU libiconv
+ implementation. Look for uses of the RET_TOOFEW macro. */
+
+ case enc_eucjp: /* EUC-JP */
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
+ goto incomplete;
+ }
+ if (m == 2)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c == 0x8f)
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if (c2 >= 0xa1 && c2 < 0xff)
+ goto incomplete;
+ }
+ }
+ goto invalid;
+ }
+
+ case enc_94: /* EUC-KR, GB2312, BIG5 */
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c >= 0xa1 && c < 0xff)
+ goto incomplete;
+ }
+ goto invalid;
+ }
+
+ case enc_euctw: /* EUC-TW */
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
+ goto incomplete;
+ }
+ else /* m == 2 || m == 3 */
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c == 0x8e)
+ goto incomplete;
+ }
+ goto invalid;
+ }
+
+ case enc_gb18030: /* GB18030 */
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
+ goto incomplete;
+ }
+ else /* m == 2 || m == 3 */
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if (c >= 0x90 && c <= 0xe3)
+ {
+ unsigned char c2 = (unsigned char) p[1];
+
+ if (c2 >= 0x30 && c2 <= 0x39)
+ {
+ if (m == 2)
+ goto incomplete;
+ else /* m == 3 */
+ {
+ unsigned char c3 = (unsigned char) p[2];
+
+ if (c3 >= 0x81 && c3 <= 0xfe)
+ goto incomplete;
+ }
+ }
+ }
+ }
+ goto invalid;
+ }
+
+ case enc_sjis: /* SJIS */
+ {
+ if (m == 1)
+ {
+ unsigned char c = (unsigned char) p[0];
+
+ if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
+ || (c >= 0xf0 && c <= 0xf9))
+ goto incomplete;
+ }
+ goto invalid;
+ }
+
+ default:
+ /* An unknown multibyte encoding. */
+ goto incomplete;
+ }
+ }
+
+ success:
+ /* res >= 0 is the corrected return value of
+ mbtowc_with_lock (&wc, p, m). */
+ if (nstate >= (res > 0 ? res : 1))
+ abort ();
+ res -= nstate;
+ pstate[0] = 0;
+ return res;
+
+ incomplete:
+ {
+ size_t k = nstate;
+ /* Here 0 <= k < m < 4. */
+ pstate[++k] = s[0];
+ if (k < m)
+ {
+ pstate[++k] = s[1];
+ if (k < m)
+ pstate[++k] = s[2];
+ }
+ if (k != m)
+ abort ();
+ }
+ pstate[0] = m;
+ return (size_t)(-2);
+
+ invalid:
+ errno = EILSEQ;
+ /* The conversion state is undefined, says POSIX. */
+ return (size_t)(-1);
+ }
diff --git a/lib/mbrtowc.c b/lib/mbrtowc.c
index 2f6df28..6cb5267 100644
--- a/lib/mbrtowc.c
+++ b/lib/mbrtowc.c
@@ -1,5 +1,5 @@
/* Convert multibyte character to wide character.
- Copyright (C) 1999-2002, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2002, 2005-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
@@ -20,20 +20,39 @@
/* Specification. */
#include <wchar.h>
-#if C_LOCALE_MAYBE_EILSEQ
-# include "hard-locale.h"
-# include <locale.h>
-#endif
-
#if GNULIB_defined_mbstate_t
-/* Implement mbrtowc() on top of mbtowc(). */
+/* Implement mbrtowc() on top of mbtowc() for the non-UTF-8 locales
+ and directly for the UTF-8 locales. */
# include <errno.h>
+# include <stdint.h>
# include <stdlib.h>
-# include "localcharset.h"
-# include "streq.h"
+# if defined _WIN32 && !defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
+
+# elif HAVE_PTHREAD_API
+
+# include <pthread.h>
+# if HAVE_THREADS_H && HAVE_WEAK_SYMBOLS
+# include <threads.h>
+# pragma weak thrd_exit
+# define c11_threads_in_use() (thrd_exit != NULL)
+# else
+# define c11_threads_in_use() 0
+# endif
+
+# elif HAVE_THREADS_H
+
+# include <threads.h>
+
+# endif
+
# include "verify.h"
+# include "lc-charset-dispatch.h"
+# include "mbtowc-lock.h"
# ifndef FALLTHROUGH
# if __GNUC__ < 7
@@ -43,342 +62,24 @@
# endif
# endif
-/* Returns a classification of special values of the encoding of the current
- locale. */
-typedef enum {
- enc_other, /* other */
- enc_utf8, /* UTF-8 */
- enc_eucjp, /* EUC-JP */
- enc_94, /* EUC-KR, GB2312, BIG5 */
- enc_euctw, /* EUC-TW */
- enc_gb18030, /* GB18030 */
- enc_sjis /* SJIS */
-} enc_t;
-static inline enc_t
-locale_enc (void)
-{
- const char *encoding = locale_charset ();
- if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
- return enc_utf8;
- if (STREQ_OPT (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
- return enc_eucjp;
- if (STREQ_OPT (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
- || STREQ_OPT (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
- || STREQ_OPT (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
- return enc_94;
- if (STREQ_OPT (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
- return enc_euctw;
- if (STREQ_OPT (encoding, "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
- return enc_gb18030;
- if (STREQ_OPT (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
- return enc_sjis;
- return enc_other;
-}
-
-#if GNULIB_WCHAR_SINGLE
-/* When we know that the locale does not change, provide a speedup by
- caching the value of locale_enc. */
-static int cached_locale_enc = -1;
-static inline enc_t
-locale_enc_cached (void)
-{
- if (cached_locale_enc < 0)
- cached_locale_enc = locale_enc ();
- return cached_locale_enc;
-}
-#else
-/* By default, don't make assumptions, hence no caching. */
-# define locale_enc_cached locale_enc
-#endif
-
verify (sizeof (mbstate_t) >= 4);
-
static char internal_state[4];
size_t
mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
{
- char *pstate = (char *)ps;
-
- if (s == NULL)
- {
- pwc = NULL;
- s = "";
- n = 1;
- }
-
- if (n == 0)
- return (size_t)(-2);
-
- /* Here n > 0. */
-
- if (pstate == NULL)
- pstate = internal_state;
-
- {
- size_t nstate = pstate[0];
- char buf[4];
- const char *p;
- size_t m;
-
- switch (nstate)
- {
- case 0:
- p = s;
- m = n;
- break;
- case 3:
- buf[2] = pstate[3];
- FALLTHROUGH;
- case 2:
- buf[1] = pstate[2];
- FALLTHROUGH;
- case 1:
- buf[0] = pstate[1];
- p = buf;
- m = nstate;
- buf[m++] = s[0];
- if (n >= 2 && m < 4)
- {
- buf[m++] = s[1];
- if (n >= 3 && m < 4)
- buf[m++] = s[2];
- }
- break;
- default:
- errno = EINVAL;
- return (size_t)(-1);
- }
-
- /* Here m > 0. */
-
-# if __GLIBC__ || defined __UCLIBC__
- /* Work around bug <https://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
- mbtowc (NULL, NULL, 0);
-# endif
- {
- int res = mbtowc (pwc, p, m);
-
- if (res >= 0)
- {
- if (pwc != NULL && ((*pwc == 0) != (res == 0)))
- abort ();
- if (nstate >= (res > 0 ? res : 1))
- abort ();
- res -= nstate;
- pstate[0] = 0;
- return res;
- }
-
- /* mbtowc does not distinguish between invalid and incomplete multibyte
- sequences. But mbrtowc needs to make this distinction.
- There are two possible approaches:
- - Use iconv() and its return value.
- - Use built-in knowledge about the possible encodings.
- Given the low quality of implementation of iconv() on the systems that
- lack mbrtowc(), we use the second approach.
- The possible encodings are:
- - 8-bit encodings,
- - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
- - UTF-8.
- Use specialized code for each. */
- if (m >= 4 || m >= MB_CUR_MAX)
- goto invalid;
- /* Here MB_CUR_MAX > 1 and 0 < m < 4. */
- switch (locale_enc_cached ())
- {
- case enc_utf8: /* UTF-8 */
- {
- /* Cf. unistr/u8-mblen.c. */
- unsigned char c = (unsigned char) p[0];
-
- if (c >= 0xc2)
- {
- if (c < 0xe0)
- {
- if (m == 1)
- goto incomplete;
- }
- else if (c < 0xf0)
- {
- if (m == 1)
- goto incomplete;
- if (m == 2)
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if ((c2 ^ 0x80) < 0x40
- && (c >= 0xe1 || c2 >= 0xa0)
- && (c != 0xed || c2 < 0xa0))
- goto incomplete;
- }
- }
- else if (c <= 0xf4)
- {
- if (m == 1)
- goto incomplete;
- else /* m == 2 || m == 3 */
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if ((c2 ^ 0x80) < 0x40
- && (c >= 0xf1 || c2 >= 0x90)
- && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
- {
- if (m == 2)
- goto incomplete;
- else /* m == 3 */
- {
- unsigned char c3 = (unsigned char) p[2];
-
- if ((c3 ^ 0x80) < 0x40)
- goto incomplete;
- }
- }
- }
- }
- }
- goto invalid;
- }
-
- /* As a reference for this code, you can use the GNU libiconv
- implementation. Look for uses of the RET_TOOFEW macro. */
-
- case enc_eucjp: /* EUC-JP */
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
- goto incomplete;
- }
- if (m == 2)
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c == 0x8f)
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if (c2 >= 0xa1 && c2 < 0xff)
- goto incomplete;
- }
- }
- goto invalid;
- }
-
- case enc_94: /* EUC-KR, GB2312, BIG5 */
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c >= 0xa1 && c < 0xff)
- goto incomplete;
- }
- goto invalid;
- }
-
- case enc_euctw: /* EUC-TW */
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
- goto incomplete;
- }
- else /* m == 2 || m == 3 */
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c == 0x8e)
- goto incomplete;
- }
- goto invalid;
- }
-
- case enc_gb18030: /* GB18030 */
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
- goto incomplete;
- }
- else /* m == 2 || m == 3 */
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c >= 0x90 && c <= 0xe3)
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if (c2 >= 0x30 && c2 <= 0x39)
- {
- if (m == 2)
- goto incomplete;
- else /* m == 3 */
- {
- unsigned char c3 = (unsigned char) p[2];
-
- if (c3 >= 0x81 && c3 <= 0xfe)
- goto incomplete;
- }
- }
- }
- }
- goto invalid;
- }
-
- case enc_sjis: /* SJIS */
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
- || (c >= 0xf0 && c <= 0xf9))
- goto incomplete;
- }
- goto invalid;
- }
-
- default:
- /* An unknown multibyte encoding. */
- goto incomplete;
- }
-
- incomplete:
- {
- size_t k = nstate;
- /* Here 0 <= k < m < 4. */
- pstate[++k] = s[0];
- if (k < m)
- {
- pstate[++k] = s[1];
- if (k < m)
- pstate[++k] = s[2];
- }
- if (k != m)
- abort ();
- }
- pstate[0] = m;
- return (size_t)(-2);
-
- invalid:
- errno = EILSEQ;
- /* The conversion state is undefined, says POSIX. */
- return (size_t)(-1);
- }
- }
+# define FITS_IN_CHAR_TYPE(wc) ((wc) <= WCHAR_MAX)
+# include "mbrtowc-impl.h"
}
#else
/* Override the system's mbrtowc() function. */
+# if MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ
+# include "hard-locale.h"
+# include <locale.h>
+# endif
+
# undef mbrtowc
size_t
@@ -436,14 +137,20 @@ rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
}
# endif
+# if MBRTOWC_STORES_INCOMPLETE_BUG
+ ret = mbrtowc (&wc, s, n, ps);
+ if (ret < (size_t) -2 && pwc != NULL)
+ *pwc = wc;
+# else
ret = mbrtowc (pwc, s, n, ps);
+# endif
# if MBRTOWC_NUL_RETVAL_BUG
if (ret < (size_t) -2 && !*pwc)
return 0;
# endif
-# if C_LOCALE_MAYBE_EILSEQ
+# if MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ
if ((size_t) -2 <= ret && n != 0 && ! hard_locale (LC_CTYPE))
{
unsigned char uc = *s;
diff --git a/lib/mbsinit.c b/lib/mbsinit.c
index e23a5ad..981a894 100644
--- a/lib/mbsinit.c
+++ b/lib/mbsinit.c
@@ -1,5 +1,5 @@
/* Test for initial conversion state.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
@@ -56,13 +56,10 @@ mbsinit (const mbstate_t *ps)
{
# if defined _WIN32 && !defined __CYGWIN__
/* Native Windows. */
-# ifdef __MINGW32__
- /* On mingw, 'mbstate_t' is defined as 'int'. */
- return ps == NULL || *ps == 0;
-# else
- /* MSVC defines 'mbstate_t' as an 8-byte struct; the first 4-bytes matter. */
+ /* MSVC defines 'mbstate_t' as an 8-byte struct; the first 4 bytes matter.
+ On mingw, 'mbstate_t' is sometimes defined as 'int', sometimes defined as
+ an 8-byte struct, of which the first 4 bytes matter. */
return ps == NULL || *(const unsigned int *)ps == 0;
-# endif
# else
/* Minix, HP-UX 11.00, Solaris 2.6, Interix, ... */
/* Maybe this definition works, maybe not... */
diff --git a/lib/mbtowc-impl.h b/lib/mbtowc-impl.h
index 633832f..22e414a 100644
--- a/lib/mbtowc-impl.h
+++ b/lib/mbtowc-impl.h
@@ -1,5 +1,5 @@
/* Convert multibyte character to wide character.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/mbtowc-lock.c b/lib/mbtowc-lock.c
new file mode 100644
index 0000000..85ad3c4
--- /dev/null
+++ b/lib/mbtowc-lock.c
@@ -0,0 +1,150 @@
+/* Return the internal lock used by mbrtowc and mbrtoc32.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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-2020. */
+
+#include <config.h>
+
+/* When it is known that the gl_get_mbtowc_lock function is defined
+ by a dependency library, it should not be defined here. */
+#if OMIT_MBTOWC_LOCK
+
+/* This declaration is solely to ensure that after preprocessing
+ this file is never empty. */
+typedef int dummy;
+
+#else
+
+/* This file defines the internal lock used by mbrtowc and mbrtoc32.
+ It is a separate compilation unit, so that only one copy of it is
+ present when linking statically. */
+
+/* Prohibit renaming this symbol. */
+# undef gl_get_mbtowc_lock
+
+/* Macro for exporting a symbol (function, not variable) defined in this file,
+ when compiled into a shared library. */
+# ifndef DLL_EXPORTED
+# if HAVE_VISIBILITY
+ /* Override the effect of the compiler option '-fvisibility=hidden'. */
+# define DLL_EXPORTED __attribute__((__visibility__("default")))
+# elif defined _WIN32 || defined __CYGWIN__
+# define DLL_EXPORTED __declspec(dllexport)
+# else
+# define DLL_EXPORTED
+# endif
+# endif
+
+# if defined _WIN32 && !defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
+
+# include "windows-initguard.h"
+
+/* The return type is a 'CRITICAL_SECTION *', not a 'glwthread_mutex_t *',
+ because the latter is not guaranteed to be a stable ABI in the future. */
+
+/* Make sure the function gets exported from DLLs. */
+DLL_EXPORTED CRITICAL_SECTION *gl_get_mbtowc_lock (void);
+
+static glwthread_initguard_t guard = GLWTHREAD_INITGUARD_INIT;
+static CRITICAL_SECTION lock;
+
+/* Returns the internal lock used by mbrtowc and mbrtoc32. */
+CRITICAL_SECTION *
+gl_get_mbtowc_lock (void)
+{
+ if (!guard.done)
+ {
+ if (InterlockedIncrement (&guard.started) == 0)
+ {
+ /* This thread is the first one to need the lock. Initialize it. */
+ InitializeCriticalSection (&lock);
+ guard.done = 1;
+ }
+ else
+ {
+ /* Don't let guard.started grow and wrap around. */
+ InterlockedDecrement (&guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this mutex. */
+ while (!guard.done)
+ Sleep (0);
+ }
+ }
+ return &lock;
+}
+
+# elif HAVE_PTHREAD_API
+
+# include <pthread.h>
+
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+/* Make sure the function gets exported from shared libraries. */
+DLL_EXPORTED pthread_mutex_t *gl_get_mbtowc_lock (void);
+
+/* Returns the internal lock used by mbrtowc and mbrtoc32. */
+pthread_mutex_t *
+gl_get_mbtowc_lock (void)
+{
+ return &mutex;
+}
+
+# elif HAVE_THREADS_H
+
+# include <threads.h>
+# include <stdlib.h>
+
+static int volatile init_needed = 1;
+static once_flag init_once = ONCE_FLAG_INIT;
+static mtx_t mutex;
+
+static void
+atomic_init (void)
+{
+ if (mtx_init (&mutex, mtx_plain) != thrd_success)
+ abort ();
+ init_needed = 0;
+}
+
+/* Make sure the function gets exported from shared libraries. */
+DLL_EXPORTED mtx_t *gl_get_mbtowc_lock (void);
+
+/* Returns the internal lock used by mbrtowc and mbrtoc32. */
+mtx_t *
+gl_get_mbtowc_lock (void)
+{
+ if (init_needed)
+ call_once (&init_once, atomic_init);
+ return &mutex;
+}
+
+# endif
+
+# if (defined _WIN32 || defined __CYGWIN__) && !defined _MSC_VER
+/* Make sure the '__declspec(dllimport)' in mbrtowc.c and mbrtoc32.c does not
+ cause a link failure when no DLLs are involved. */
+# if defined _WIN64 || defined _LP64
+# define IMP(x) __imp_##x
+# else
+# define IMP(x) _imp__##x
+# endif
+void * IMP(gl_get_mbtowc_lock) = &gl_get_mbtowc_lock;
+# endif
+
+#endif
diff --git a/lib/mbtowc-lock.h b/lib/mbtowc-lock.h
new file mode 100644
index 0000000..e101978
--- /dev/null
+++ b/lib/mbtowc-lock.h
@@ -0,0 +1,115 @@
+/* Use the internal lock used by mbrtowc and mbrtoc32.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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-2020. */
+
+/* Use a lock, so that no two threads can invoke mbtowc at the same time. */
+
+static inline int
+mbtowc_unlocked (wchar_t *pwc, const char *p, size_t m)
+{
+ /* Put the hidden internal state of mbtowc into its initial state.
+ This is needed at least with glibc, uClibc, and MSVC CRT.
+ See <https://sourceware.org/bugzilla/show_bug.cgi?id=9674>. */
+ mbtowc (NULL, NULL, 0);
+
+ return mbtowc (pwc, p, m);
+}
+
+/* Prohibit renaming this symbol. */
+#undef gl_get_mbtowc_lock
+
+#if defined _WIN32 && !defined __CYGWIN__
+
+extern __declspec(dllimport) CRITICAL_SECTION *gl_get_mbtowc_lock (void);
+
+static int
+mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m)
+{
+ CRITICAL_SECTION *lock = gl_get_mbtowc_lock ();
+ int ret;
+
+ EnterCriticalSection (lock);
+ ret = mbtowc_unlocked (pwc, p, m);
+ LeaveCriticalSection (lock);
+
+ return ret;
+}
+
+#elif HAVE_PTHREAD_API /* AIX, IRIX, Cygwin */
+
+extern
+# if defined _WIN32 || defined __CYGWIN__
+ __declspec(dllimport)
+# endif
+ pthread_mutex_t *gl_get_mbtowc_lock (void);
+
+# if HAVE_WEAK_SYMBOLS /* IRIX */
+
+ /* Avoid the need to link with '-lpthread'. */
+# pragma weak pthread_mutex_lock
+# pragma weak pthread_mutex_unlock
+
+ /* Determine whether libpthread is in use. */
+# pragma weak pthread_mutexattr_gettype
+ /* See the comments in lock.h. */
+# define pthread_in_use() \
+ (pthread_mutexattr_gettype != NULL || c11_threads_in_use ())
+
+# else
+# define pthread_in_use() 1
+# endif
+
+static int
+mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m)
+{
+ if (pthread_in_use())
+ {
+ pthread_mutex_t *lock = gl_get_mbtowc_lock ();
+ int ret;
+
+ if (pthread_mutex_lock (lock))
+ abort ();
+ ret = mbtowc_unlocked (pwc, p, m);
+ if (pthread_mutex_unlock (lock))
+ abort ();
+
+ return ret;
+ }
+ else
+ return mbtowc_unlocked (pwc, p, m);
+}
+
+#elif HAVE_THREADS_H
+
+extern mtx_t *gl_get_mbtowc_lock (void);
+
+static int
+mbtowc_with_lock (wchar_t *pwc, const char *p, size_t m)
+{
+ mtx_t *lock = gl_get_mbtowc_lock ();
+ int ret;
+
+ if (mtx_lock (lock) != thrd_success)
+ abort ();
+ ret = mbtowc_unlocked (pwc, p, m);
+ if (mtx_unlock (lock) != thrd_success)
+ abort ();
+
+ return ret;
+}
+
+#endif
diff --git a/lib/mbtowc.c b/lib/mbtowc.c
index a212b22..5fc2d28 100644
--- a/lib/mbtowc.c
+++ b/lib/mbtowc.c
@@ -1,5 +1,5 @@
/* Convert multibyte character to wide character.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/memchr.c b/lib/memchr.c
index 0b47546..bff63da 100644
--- a/lib/memchr.c
+++ b/lib/memchr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2018
+/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2020
Free Software Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
diff --git a/lib/memchr.valgrind b/lib/memchr.valgrind
index 60f247e..f6dd209 100644
--- a/lib/memchr.valgrind
+++ b/lib/memchr.valgrind
@@ -1,4 +1,20 @@
# Suppress a valgrind message about use of uninitialized memory in memchr().
+
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+#
+# This 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/>.
+
# POSIX states that when the character is found, memchr must not read extra
# bytes in an overestimated length (for example, where memchr is used to
# implement strnlen). However, we use a safe word read to provide a speedup.
diff --git a/lib/memrchr.c b/lib/memrchr.c
index 2efc7cb..7ff32e1 100644
--- a/lib/memrchr.c
+++ b/lib/memrchr.c
@@ -1,6 +1,6 @@
/* memrchr -- find the last occurrence of a byte in a memory block
- Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2018 Free Software
+ Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2020 Free Software
Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
diff --git a/lib/minmax.h b/lib/minmax.h
index 33a5305..b947776 100644
--- a/lib/minmax.h
+++ b/lib/minmax.h
@@ -1,5 +1,5 @@
/* MIN, MAX macros.
- Copyright (C) 1995, 1998, 2001, 2003, 2005, 2009-2018 Free Software
+ Copyright (C) 1995, 1998, 2001, 2003, 2005, 2009-2020 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
diff --git a/lib/mkdir.c b/lib/mkdir.c
index 37d5a0f..c0d4b61 100644
--- a/lib/mkdir.c
+++ b/lib/mkdir.c
@@ -1,7 +1,7 @@
/* On some systems, mkdir ("foo/", 0700) fails because of the trailing
slash. On those systems, this wrapper removes the trailing slash.
- Copyright (C) 2001, 2003, 2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2006, 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/mkostemp.c b/lib/mkostemp.c
index df9ecf8..46b58e1 100644
--- a/lib/mkostemp.c
+++ b/lib/mkostemp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-1999, 2001, 2005-2007, 2009-2018 Free Software
+/* Copyright (C) 1998-1999, 2001, 2005-2007, 2009-2020 Free Software
Foundation, Inc.
This file is derived from the one in the GNU C Library.
diff --git a/lib/msvc-inval.c b/lib/msvc-inval.c
index 0f19a09..8636688 100644
--- a/lib/msvc-inval.c
+++ b/lib/msvc-inval.c
@@ -1,5 +1,5 @@
/* Invalid parameter handler for MSVC runtime libraries.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/msvc-inval.h b/lib/msvc-inval.h
index 8e7ff30..93ee785 100644
--- a/lib/msvc-inval.h
+++ b/lib/msvc-inval.h
@@ -1,5 +1,5 @@
/* Invalid parameter handler for MSVC runtime libraries.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -95,7 +95,7 @@ extern void gl_msvc_inval_ensure_handler (void);
/* Gnulib can define its own status codes, as described in the page
"Raising Software Exceptions" on microsoft.com
- <https://msdn.microsoft.com/en-us/library/het71c37.aspx>.
+ <https://docs.microsoft.com/en-us/cpp/cpp/raising-software-exceptions>.
Our status codes are composed of
- 0xE0000000, mandatory for all user-defined status codes,
- 0x474E550, a API identifier ("GNU"),
@@ -106,7 +106,7 @@ extern void gl_msvc_inval_ensure_handler (void);
# if defined _MSC_VER
/* A compiler that supports __try/__except, as described in the page
"try-except statement" on microsoft.com
- <https://msdn.microsoft.com/en-us/library/s58ftw19.aspx>.
+ <https://docs.microsoft.com/en-us/cpp/cpp/try-except-statement>.
With __try/__except, we can use the multithread-safe exception handling. */
# ifdef __cplusplus
diff --git a/lib/msvc-nothrow.c b/lib/msvc-nothrow.c
index 785733e..bf93b88 100644
--- a/lib/msvc-nothrow.c
+++ b/lib/msvc-nothrow.c
@@ -1,6 +1,6 @@
/* Wrappers that don't throw invalid parameter notifications
with MSVC runtime libraries.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/msvc-nothrow.h b/lib/msvc-nothrow.h
index a9671c3..fca5415 100644
--- a/lib/msvc-nothrow.h
+++ b/lib/msvc-nothrow.h
@@ -1,6 +1,6 @@
/* Wrappers that don't throw invalid parameter notifications
with MSVC runtime libraries.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/nl_langinfo.c b/lib/nl_langinfo.c
index ea26730..23299cb 100644
--- a/lib/nl_langinfo.c
+++ b/lib/nl_langinfo.c
@@ -1,6 +1,6 @@
/* nl_langinfo() replacement: query locale dependent information.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,16 +28,33 @@
# include <stdio.h>
#endif
+/* nl_langinfo() must be multithread-safe. To achieve this without using
+ thread-local storage:
+ 1. We use a specific static buffer for each possible argument.
+ So that different threads can call nl_langinfo with different arguments,
+ without interfering.
+ 2. We use a simple strcpy or memcpy to fill this static buffer. Filling it
+ through, for example, strcpy + strcat would not be guaranteed to leave
+ the buffer's contents intact if another thread is currently accessing
+ it. If necessary, the contents is first assembled in a stack-allocated
+ buffer. */
+
#if !REPLACE_NL_LANGINFO || GNULIB_defined_CODESET
/* Return the codeset of the current locale, if this is easily deducible.
Otherwise, return "". */
static char *
ctype_codeset (void)
{
- static char buf[2 + 10 + 1];
- char const *locale = setlocale (LC_CTYPE, NULL);
- char *codeset = buf;
+ static char result[2 + 10 + 1];
+ char buf[2 + 10 + 1];
+ char locale[SETLOCALE_NULL_MAX];
+ char *codeset;
size_t codesetlen;
+
+ if (setlocale_null_r (LC_CTYPE, locale, sizeof (locale)))
+ locale[0] = '\0';
+
+ codeset = buf;
codeset[0] = '\0';
if (locale && locale[0])
@@ -76,9 +93,20 @@ ctype_codeset (void)
memmove (buf + 2, codeset, codesetlen + 1);
else
sprintf (buf + 2, "%u", GetACP ());
- codeset = memcpy (buf, "CP", 2);
-# endif
- return codeset;
+ /* For a locale name such as "French_France.65001", in Windows 10,
+ setlocale now returns "French_France.utf8" instead. */
+ if (strcmp (buf + 2, "65001") == 0 || strcmp (buf + 2, "utf8") == 0)
+ return (char *) "UTF-8";
+ else
+ {
+ memcpy (buf, "CP", 2);
+ strcpy (result, buf);
+ return result;
+ }
+# else
+ strcpy (result, codeset);
+ return result;
+#endif
}
#endif
@@ -169,7 +197,7 @@ rpl_nl_langinfo (nl_item item)
char *
nl_langinfo (nl_item item)
{
- static char nlbuf[100];
+ char buf[100];
struct tm tmm = { 0 };
switch (item)
@@ -209,14 +237,22 @@ nl_langinfo (nl_item item)
case T_FMT_AMPM:
return (char *) "%I:%M:%S %p";
case AM_STR:
- if (!strftime (nlbuf, sizeof nlbuf, "%p", &tmm))
- return (char *) "AM";
- return nlbuf;
+ {
+ static char result[80];
+ if (!strftime (buf, sizeof result, "%p", &tmm))
+ return (char *) "AM";
+ strcpy (result, buf);
+ return result;
+ }
case PM_STR:
- tmm.tm_hour = 12;
- if (!strftime (nlbuf, sizeof nlbuf, "%p", &tmm))
- return (char *) "PM";
- return nlbuf;
+ {
+ static char result[80];
+ tmm.tm_hour = 12;
+ if (!strftime (buf, sizeof result, "%p", &tmm))
+ return (char *) "PM";
+ strcpy (result, buf);
+ return result;
+ }
case DAY_1:
case DAY_2:
case DAY_3:
@@ -225,14 +261,16 @@ nl_langinfo (nl_item item)
case DAY_6:
case DAY_7:
{
+ static char result[7][50];
static char const days[][sizeof "Wednesday"] = {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday"
};
tmm.tm_wday = item - DAY_1;
- if (!strftime (nlbuf, sizeof nlbuf, "%A", &tmm))
+ if (!strftime (buf, sizeof result[0], "%A", &tmm))
return (char *) days[item - DAY_1];
- return nlbuf;
+ strcpy (result[item - DAY_1], buf);
+ return result[item - DAY_1];
}
case ABDAY_1:
case ABDAY_2:
@@ -242,13 +280,15 @@ nl_langinfo (nl_item item)
case ABDAY_6:
case ABDAY_7:
{
+ static char result[7][30];
static char const abdays[][sizeof "Sun"] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
tmm.tm_wday = item - ABDAY_1;
- if (!strftime (nlbuf, sizeof nlbuf, "%a", &tmm))
+ if (!strftime (buf, sizeof result[0], "%a", &tmm))
return (char *) abdays[item - ABDAY_1];
- return nlbuf;
+ strcpy (result[item - ABDAY_1], buf);
+ return result[item - ABDAY_1];
}
{
static char const months[][sizeof "September"] = {
@@ -267,10 +307,14 @@ nl_langinfo (nl_item item)
case MON_10:
case MON_11:
case MON_12:
- tmm.tm_mon = item - MON_1;
- if (!strftime (nlbuf, sizeof nlbuf, "%B", &tmm))
- return (char *) months[item - MON_1];
- return nlbuf;
+ {
+ static char result[12][50];
+ tmm.tm_mon = item - MON_1;
+ if (!strftime (buf, sizeof result[0], "%B", &tmm))
+ return (char *) months[item - MON_1];
+ strcpy (result[item - MON_1], buf);
+ return result[item - MON_1];
+ }
case ALTMON_1:
case ALTMON_2:
case ALTMON_3:
@@ -283,15 +327,19 @@ nl_langinfo (nl_item item)
case ALTMON_10:
case ALTMON_11:
case ALTMON_12:
- tmm.tm_mon = item - ALTMON_1;
- /* The platforms without nl_langinfo() don't support strftime with %OB.
- We don't even need to try. */
- #if 0
- if (!strftime (nlbuf, sizeof nlbuf, "%OB", &tmm))
- #endif
- if (!strftime (nlbuf, sizeof nlbuf, "%B", &tmm))
- return (char *) months[item - ALTMON_1];
- return nlbuf;
+ {
+ static char result[12][50];
+ tmm.tm_mon = item - ALTMON_1;
+ /* The platforms without nl_langinfo() don't support strftime with
+ %OB. We don't even need to try. */
+ #if 0
+ if (!strftime (buf, sizeof result[0], "%OB", &tmm))
+ #endif
+ if (!strftime (buf, sizeof result[0], "%B", &tmm))
+ return (char *) months[item - ALTMON_1];
+ strcpy (result[item - ALTMON_1], buf);
+ return result[item - ALTMON_1];
+ }
}
case ABMON_1:
case ABMON_2:
@@ -306,14 +354,16 @@ nl_langinfo (nl_item item)
case ABMON_11:
case ABMON_12:
{
+ static char result[12][30];
static char const abmonths[][sizeof "Jan"] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Sep", "Oct", "Nov", "Dec"
};
tmm.tm_mon = item - ABMON_1;
- if (!strftime (nlbuf, sizeof nlbuf, "%b", &tmm))
+ if (!strftime (buf, sizeof result[0], "%b", &tmm))
return (char *) abmonths[item - ABMON_1];
- return nlbuf;
+ strcpy (result[item - ABMON_1], buf);
+ return result[item - ABMON_1];
}
case ERA:
return (char *) "";
diff --git a/lib/obstack.c b/lib/obstack.c
index 02be6cf..a6757b8 100644
--- a/lib/obstack.c
+++ b/lib/obstack.c
@@ -1,5 +1,5 @@
/* obstack.c - subroutines used implicitly by object stack macros
- Copyright (C) 1988-2018 Free Software Foundation, Inc.
+ Copyright (C) 1988-2020 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/lib/obstack.h b/lib/obstack.h
index cff4205..f1c1d00 100644
--- a/lib/obstack.h
+++ b/lib/obstack.h
@@ -1,5 +1,5 @@
/* obstack.h - object stack macros
- Copyright (C) 1988-2018 Free Software Foundation, Inc.
+ Copyright (C) 1988-2020 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/lib/pathmax.h b/lib/pathmax.h
index 7052e6a..15a236f 100644
--- a/lib/pathmax.h
+++ b/lib/pathmax.h
@@ -1,5 +1,5 @@
/* Define PATH_MAX somehow. Requires sys/types.h.
- Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2018 Free Software
+ Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2020 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -20,7 +20,7 @@
/* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename,
including the terminating NUL byte.
- <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html>
+ <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html>
PATH_MAX is not defined on systems which have no limit on filename length,
such as GNU/Hurd.
@@ -68,7 +68,7 @@
# if defined _WIN32 && ! defined __CYGWIN__
/* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
section "Maximum Path Length Limitation",
- <https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath>
+ <https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation>
explains that the maximum size of a filename, including the terminating
NUL byte, is 260 = 3 + 256 + 1.
This is the same value as
diff --git a/lib/progname.c b/lib/progname.c
index 382f503..d59d969 100644
--- a/lib/progname.c
+++ b/lib/progname.c
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2001-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2001.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/progname.h b/lib/progname.h
index adc6b01..bc276cc 100644
--- a/lib/progname.h
+++ b/lib/progname.h
@@ -1,5 +1,5 @@
/* Program name management.
- Copyright (C) 2001-2004, 2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2004, 2006, 2009-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2001.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/qcopy-acl.c b/lib/qcopy-acl.c
index ee482ef..5408b0f 100644
--- a/lib/qcopy-acl.c
+++ b/lib/qcopy-acl.c
@@ -1,6 +1,6 @@
/* Copy access control list from one file to another. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/qset-acl.c b/lib/qset-acl.c
index e2d4cc5..db895a3 100644
--- a/lib/qset-acl.c
+++ b/lib/qset-acl.c
@@ -1,6 +1,6 @@
/* qset-acl.c - set access control list equivalent to a mode
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/quote.h b/lib/quote.h
index eedc283..391ff1a 100644
--- a/lib/quote.h
+++ b/lib/quote.h
@@ -1,6 +1,6 @@
/* quote.h - prototypes for quote.c
- Copyright (C) 1998-2001, 2003, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-2001, 2003, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/quotearg.c b/lib/quotearg.c
index fe68dca..c78fc16 100644
--- a/lib/quotearg.c
+++ b/lib/quotearg.c
@@ -1,6 +1,6 @@
/* quotearg.c - quote arguments for output
- Copyright (C) 1998-2002, 2004-2018 Free Software Foundation, Inc.
+ Copyright (C) 1998-2002, 2004-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/quotearg.h b/lib/quotearg.h
index 0584c56..d30fdd1 100644
--- a/lib/quotearg.h
+++ b/lib/quotearg.h
@@ -1,6 +1,6 @@
/* quotearg.h - quote arguments for output
- Copyright (C) 1998-2002, 2004, 2006, 2008-2018 Free Software Foundation,
+ Copyright (C) 1998-2002, 2004, 2006, 2008-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/readlink.c b/lib/readlink.c
index 924e00d..4d392ef 100644
--- a/lib/readlink.c
+++ b/lib/readlink.c
@@ -1,5 +1,5 @@
/* Stub for readlink().
- Copyright (C) 2003-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/regcomp.c b/lib/regcomp.c
index 0b05a63..84044be 100644
--- a/lib/regcomp.c
+++ b/lib/regcomp.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -233,9 +233,7 @@ re_compile_pattern (const char *pattern, size_t length,
return NULL;
return gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
}
-#ifdef _LIBC
weak_alias (__re_compile_pattern, re_compile_pattern)
-#endif
/* Set by 're_set_syntax' to the current regexp syntax to recognize. Can
also be assigned to arbitrarily: each pattern buffer stores its own
@@ -260,9 +258,7 @@ re_set_syntax (reg_syntax_t syntax)
re_syntax_options = syntax;
return ret;
}
-#ifdef _LIBC
weak_alias (__re_set_syntax, re_set_syntax)
-#endif
int
re_compile_fastmap (struct re_pattern_buffer *bufp)
@@ -281,9 +277,7 @@ re_compile_fastmap (struct re_pattern_buffer *bufp)
bufp->fastmap_accurate = 1;
return 0;
}
-#ifdef _LIBC
weak_alias (__re_compile_fastmap, re_compile_fastmap)
-#endif
static inline void
__attribute__ ((always_inline))
@@ -464,7 +458,7 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
the return codes and their meanings.) */
int
-regcomp (regex_t *_Restrict_ preg, const char *_Restrict_ pattern, int cflags)
+regcomp (regex_t *__restrict preg, const char *__restrict pattern, int cflags)
{
reg_errcode_t ret;
reg_syntax_t syntax = ((cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED
@@ -515,16 +509,14 @@ regcomp (regex_t *_Restrict_ preg, const char *_Restrict_ pattern, int cflags)
return (int) ret;
}
-#ifdef _LIBC
libc_hidden_def (__regcomp)
weak_alias (__regcomp, regcomp)
-#endif
/* Returns a message corresponding to an error code, ERRCODE, returned
from either regcomp or regexec. We don't use PREG here. */
size_t
-regerror (int errcode, const regex_t *_Restrict_ preg, char *_Restrict_ errbuf,
+regerror (int errcode, const regex_t *__restrict preg, char *__restrict errbuf,
size_t errbuf_size)
{
const char *msg;
@@ -555,9 +547,7 @@ regerror (int errcode, const regex_t *_Restrict_ preg, char *_Restrict_ errbuf,
return msg_size;
}
-#ifdef _LIBC
weak_alias (__regerror, regerror)
-#endif
#ifdef RE_ENABLE_I18N
@@ -657,10 +647,8 @@ regfree (regex_t *preg)
re_free (preg->translate);
preg->translate = NULL;
}
-#ifdef _LIBC
libc_hidden_def (__regfree)
weak_alias (__regfree, regfree)
-#endif
/* Entry points compatible with 4.2 BSD regex library. We don't define
them unless specifically requested. */
@@ -1448,7 +1436,7 @@ link_nfa_nodes (void *extra, bin_tree_t *node)
break;
case END_OF_RE:
- assert (node->next == NULL);
+ DEBUG_ASSERT (node->next == NULL);
break;
case OP_DUP_ASTERISK:
@@ -1464,8 +1452,8 @@ link_nfa_nodes (void *extra, bin_tree_t *node)
right = node->right->first->node_idx;
else
right = node->next->node_idx;
- assert (left > -1);
- assert (right > -1);
+ DEBUG_ASSERT (left > -1);
+ DEBUG_ASSERT (right > -1);
err = re_node_set_init_2 (dfa->edests + idx, left, right);
}
break;
@@ -1483,7 +1471,7 @@ link_nfa_nodes (void *extra, bin_tree_t *node)
break;
default:
- assert (!IS_EPSILON_NODE (node->token.type));
+ DEBUG_ASSERT (!IS_EPSILON_NODE (node->token.type));
dfa->nexts[idx] = node->next->node_idx;
break;
}
@@ -1665,9 +1653,7 @@ calc_eclosure (re_dfa_t *dfa)
{
Idx node_idx;
bool incomplete;
-#ifdef DEBUG
- assert (dfa->nodes_len > 0);
-#endif
+ DEBUG_ASSERT (dfa->nodes_len > 0);
incomplete = false;
/* For each nodes, calculate epsilon closure. */
for (node_idx = 0; ; ++node_idx)
@@ -1682,9 +1668,7 @@ calc_eclosure (re_dfa_t *dfa)
node_idx = 0;
}
-#ifdef DEBUG
- assert (dfa->eclosures[node_idx].nelem != -1);
-#endif
+ DEBUG_ASSERT (dfa->eclosures[node_idx].nelem != -1);
/* If we have already calculated, skip it. */
if (dfa->eclosures[node_idx].nelem != 0)
@@ -1812,8 +1796,8 @@ peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
token->word_char = 0;
#ifdef RE_ENABLE_I18N
token->mb_partial = 0;
- if (input->mb_cur_max > 1 &&
- !re_string_first_byte (input, re_string_cur_idx (input)))
+ if (input->mb_cur_max > 1
+ && !re_string_first_byte (input, re_string_cur_idx (input)))
{
token->type = CHARACTER;
token->mb_partial = 1;
@@ -2000,8 +1984,8 @@ peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
token->type = OP_PERIOD;
break;
case '^':
- if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE)) &&
- re_string_cur_idx (input) != 0)
+ if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE))
+ && re_string_cur_idx (input) != 0)
{
char prev = re_string_peek_byte (input, -1);
if (!(syntax & RE_NEWLINE_ALT) || prev != '\n')
@@ -2011,8 +1995,8 @@ peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
token->opr.ctx_type = LINE_FIRST;
break;
case '$':
- if (!(syntax & RE_CONTEXT_INDEP_ANCHORS) &&
- re_string_cur_idx (input) + 1 != re_string_length (input))
+ if (!(syntax & RE_CONTEXT_INDEP_ANCHORS)
+ && re_string_cur_idx (input) + 1 != re_string_length (input))
{
re_token_t next;
re_string_skip_bytes (input, 1);
@@ -2046,8 +2030,8 @@ peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
token->opr.c = c;
#ifdef RE_ENABLE_I18N
- if (input->mb_cur_max > 1 &&
- !re_string_first_byte (input, re_string_cur_idx (input)))
+ if (input->mb_cur_max > 1
+ && !re_string_first_byte (input, re_string_cur_idx (input)))
{
token->type = CHARACTER;
return 1;
@@ -2345,8 +2329,8 @@ parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
}
FALLTHROUGH;
case OP_CLOSE_SUBEXP:
- if ((token->type == OP_CLOSE_SUBEXP) &&
- !(syntax & RE_UNMATCHED_RIGHT_PAREN_ORD))
+ if ((token->type == OP_CLOSE_SUBEXP)
+ && !(syntax & RE_UNMATCHED_RIGHT_PAREN_ORD))
{
*err = REG_ERPAREN;
return NULL;
@@ -2454,9 +2438,7 @@ parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
default:
/* Must not happen? */
-#ifdef DEBUG
- assert (0);
-#endif
+ DEBUG_ASSERT (false);
return NULL;
}
fetch_token (token, regexp, syntax);
@@ -3318,7 +3300,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
goto parse_bracket_exp_free_return;
break;
default:
- assert (0);
+ DEBUG_ASSERT (false);
break;
}
}
@@ -3674,7 +3656,6 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
Idx alloc = 0;
#endif /* not RE_ENABLE_I18N */
reg_errcode_t ret;
- re_token_t br_token;
bin_tree_t *tree;
sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
@@ -3725,11 +3706,7 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
#endif
/* Build a tree for simple bracket. */
-#if defined GCC_LINT || defined lint
- memset (&br_token, 0, sizeof br_token);
-#endif
- br_token.type = SIMPLE_BRACKET;
- br_token.opr.sbcset = sbcset;
+ re_token_t br_token = { .type = SIMPLE_BRACKET, .opr.sbcset = sbcset };
tree = create_token_tree (dfa, NULL, NULL, &br_token);
if (__glibc_unlikely (tree == NULL))
goto build_word_op_espace;
@@ -3820,11 +3797,7 @@ static bin_tree_t *
create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
re_token_type_t type)
{
- re_token_t t;
-#if defined GCC_LINT || defined lint
- memset (&t, 0, sizeof t);
-#endif
- t.type = type;
+ re_token_t t = { .type = type };
return create_token_tree (dfa, left, right, &t);
}
diff --git a/lib/regex.c b/lib/regex.c
index 2a86e10..6bdd77f 100644
--- a/lib/regex.c
+++ b/lib/regex.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -20,10 +20,10 @@
#ifndef _LIBC
# include <libc-config.h>
-# if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
+# if __GNUC_PREREQ (4, 6)
# pragma GCC diagnostic ignored "-Wsuggest-attribute=pure"
# endif
-# if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
+# if __GNUC_PREREQ (4, 3)
# pragma GCC diagnostic ignored "-Wold-style-definition"
# pragma GCC diagnostic ignored "-Wtype-limits"
# endif
diff --git a/lib/regex.h b/lib/regex.h
index f2ac950..76ff4e3 100644
--- a/lib/regex.h
+++ b/lib/regex.h
@@ -1,6 +1,6 @@
/* Definitions for data structures and routines for the regular
expression library.
- Copyright (C) 1985, 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1989-2020 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/lib/regex_internal.c b/lib/regex_internal.c
index f13def3..2e21729 100644
--- a/lib/regex_internal.c
+++ b/lib/regex_internal.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -212,7 +212,7 @@ build_wcs_buffer (re_string_t *pstr)
{
#ifdef _LIBC
unsigned char buf[MB_LEN_MAX];
- assert (MB_LEN_MAX >= pstr->mb_cur_max);
+ DEBUG_ASSERT (MB_LEN_MAX >= pstr->mb_cur_max);
#else
unsigned char buf[64];
#endif
@@ -285,7 +285,7 @@ build_wcs_upper_buffer (re_string_t *pstr)
size_t mbclen;
#ifdef _LIBC
char buf[MB_LEN_MAX];
- assert (MB_LEN_MAX >= pstr->mb_cur_max);
+ DEBUG_ASSERT (pstr->mb_cur_max <= MB_LEN_MAX);
#else
char buf[64];
#endif
@@ -685,9 +685,7 @@ re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
pstr->valid_len - offset);
pstr->valid_len -= offset;
pstr->valid_raw_len -= offset;
-#if defined DEBUG && DEBUG
- assert (pstr->valid_len > 0);
-#endif
+ DEBUG_ASSERT (pstr->valid_len > 0);
}
}
else
@@ -941,10 +939,7 @@ re_string_context_at (const re_string_t *input, Idx idx, int eflags)
Idx wc_idx = idx;
while(input->wcs[wc_idx] == WEOF)
{
-#if defined DEBUG && DEBUG
- /* It must not happen. */
- assert (wc_idx >= 0);
-#endif
+ DEBUG_ASSERT (wc_idx >= 0);
--wc_idx;
if (wc_idx < 0)
return input->tip_context;
@@ -1311,7 +1306,6 @@ re_node_set_insert (re_node_set *set, Idx elem)
first element separately to skip a check in the inner loop. */
if (elem < set->elems[0])
{
- idx = 0;
for (idx = set->nelem; idx > 0; idx--)
set->elems[idx] = set->elems[idx - 1];
}
@@ -1716,15 +1710,19 @@ create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
{
if (newstate->entrance_nodes == &newstate->nodes)
{
- newstate->entrance_nodes = re_malloc (re_node_set, 1);
- if (__glibc_unlikely (newstate->entrance_nodes == NULL))
+ re_node_set *entrance_nodes = re_malloc (re_node_set, 1);
+ if (__glibc_unlikely (entrance_nodes == NULL))
{
free_state (newstate);
return NULL;
}
+ newstate->entrance_nodes = entrance_nodes;
if (re_node_set_init_copy (newstate->entrance_nodes, nodes)
!= REG_NOERROR)
- return NULL;
+ {
+ free_state (newstate);
+ return NULL;
+ }
nctx_nodes = 0;
newstate->has_constraint = 1;
}
diff --git a/lib/regex_internal.h b/lib/regex_internal.h
index b0e49cd..5c9cbf3 100644
--- a/lib/regex_internal.h
+++ b/lib/regex_internal.h
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -20,7 +20,6 @@
#ifndef _REGEX_INTERNAL_H
#define _REGEX_INTERNAL_H 1
-#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
@@ -34,6 +33,14 @@
#include <stdint.h>
#include <intprops.h>
+#include <verify.h>
+
+#if defined DEBUG && DEBUG != 0
+# include <assert.h>
+# define DEBUG_ASSERT(x) assert (x)
+#else
+# define DEBUG_ASSERT(x) assume (x)
+#endif
#ifdef _LIBC
# include <libc-lock.h>
@@ -44,22 +51,7 @@
# define lock_unlock(lock) __libc_lock_unlock (lock)
#elif defined GNULIB_LOCK && !defined USE_UNLOCKED_IO
# include "glthread/lock.h"
- /* Use gl_lock_define if empty macro arguments are known to work.
- Otherwise, fall back on less-portable substitutes. */
-# if ((defined __GNUC__ && !defined __STRICT_ANSI__) \
- || (defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__))
-# define lock_define(name) gl_lock_define (, name)
-# elif USE_POSIX_THREADS
-# define lock_define(name) pthread_mutex_t name;
-# elif USE_PTH_THREADS
-# define lock_define(name) pth_mutex_t name;
-# elif USE_SOLARIS_THREADS
-# define lock_define(name) mutex_t name;
-# elif USE_WINDOWS_THREADS
-# define lock_define(name) gl_lock_t name;
-# else
-# define lock_define(name)
-# endif
+# define lock_define(name) gl_lock_define (, name)
# define lock_init(lock) glthread_lock_init (&(lock))
# define lock_fini(lock) glthread_lock_destroy (&(lock))
# define lock_lock(lock) glthread_lock_lock (&(lock))
@@ -144,13 +136,8 @@
# define __mbrtowc mbrtowc
# define __wcrtomb wcrtomb
# define __regfree regfree
-# define attribute_hidden
#endif /* not _LIBC */
-#if __GNUC__ < 3 + (__GNUC_MINOR__ < 1)
-# define __attribute__(arg)
-#endif
-
#ifndef SSIZE_MAX
# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
#endif
@@ -623,11 +610,7 @@ typedef struct
{
/* The string object corresponding to the input string. */
re_string_t input;
-#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
const re_dfa_t *const dfa;
-#else
- const re_dfa_t *dfa;
-#endif
/* EFLAGS of the argument of regexec. */
int eflags;
/* Where the matching ends. */
@@ -868,23 +851,6 @@ re_string_elem_size_at (const re_string_t *pstr, Idx idx)
}
#endif /* RE_ENABLE_I18N */
-#ifndef __GNUC_PREREQ
-# if defined __GNUC__ && defined __GNUC_MINOR__
-# define __GNUC_PREREQ(maj, min) \
- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-# else
-# define __GNUC_PREREQ(maj, min) 0
-# endif
-#endif
-
-#if __GNUC_PREREQ (3,4)
-# undef __attribute_warn_unused_result__
-# define __attribute_warn_unused_result__ \
- __attribute__ ((__warn_unused_result__))
-#else
-# define __attribute_warn_unused_result__ /* empty */
-#endif
-
#ifndef FALLTHROUGH
# if __GNUC__ < 7
# define FALLTHROUGH ((void) 0)
diff --git a/lib/regexec.c b/lib/regexec.c
index c7d099c..395e37d 100644
--- a/lib/regexec.c
+++ b/lib/regexec.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -189,7 +189,7 @@ static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len);
We return 0 if we find a match and REG_NOMATCH if not. */
int
-regexec (const regex_t *_Restrict_ preg, const char *_Restrict_ string,
+regexec (const regex_t *__restrict preg, const char *__restrict string,
size_t nmatch, regmatch_t pmatch[], int eflags)
{
reg_errcode_t err;
@@ -232,8 +232,8 @@ __typeof__ (__regexec) __compat_regexec;
int
attribute_compat_text_section
-__compat_regexec (const regex_t *_Restrict_ preg,
- const char *_Restrict_ string, size_t nmatch,
+__compat_regexec (const regex_t *__restrict preg,
+ const char *__restrict string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
return regexec (preg, string, nmatch, pmatch,
@@ -443,7 +443,7 @@ re_search_stub (struct re_pattern_buffer *bufp, const char *string, Idx length,
{
if (ret_len)
{
- assert (pmatch[0].rm_so == start);
+ DEBUG_ASSERT (pmatch[0].rm_so == start);
rval = pmatch[0].rm_eo - start;
}
else
@@ -502,9 +502,9 @@ re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, Idx nregs,
}
else
{
- assert (regs_allocated == REGS_FIXED);
+ DEBUG_ASSERT (regs_allocated == REGS_FIXED);
/* This function may not be called with REGS_FIXED and nregs too big. */
- assert (regs->num_regs >= nregs);
+ DEBUG_ASSERT (nregs <= regs->num_regs);
rval = REGS_FIXED;
}
@@ -597,21 +597,12 @@ re_search_internal (const regex_t *preg, const char *string, Idx length,
Idx extra_nmatch;
bool sb;
int ch;
-#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
re_match_context_t mctx = { .dfa = dfa };
-#else
- re_match_context_t mctx;
-#endif
char *fastmap = ((preg->fastmap != NULL && preg->fastmap_accurate
&& start != last_start && !preg->can_be_null)
? preg->fastmap : NULL);
RE_TRANSLATE_TYPE t = preg->translate;
-#if !(defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
- memset (&mctx, '\0', sizeof (re_match_context_t));
- mctx.dfa = dfa;
-#endif
-
extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
nmatch -= extra_nmatch;
@@ -622,10 +613,8 @@ re_search_internal (const regex_t *preg, const char *string, Idx length,
|| dfa->init_state_begbuf == NULL))
return REG_NOMATCH;
-#ifdef DEBUG
/* We assume front-end functions already check them. */
- assert (0 <= last_start && last_start <= length);
-#endif
+ DEBUG_ASSERT (0 <= last_start && last_start <= length);
/* If initial states with non-begbuf contexts have no elements,
the regex must be anchored. If preg->newline_anchor is set,
@@ -677,8 +666,6 @@ re_search_internal (const regex_t *preg, const char *string, Idx length,
goto free_return;
}
}
- else
- mctx.state_log = NULL;
match_first = start;
mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
@@ -838,10 +825,8 @@ re_search_internal (const regex_t *preg, const char *string, Idx length,
match_ctx_clean (&mctx);
}
-#ifdef DEBUG
- assert (match_last != -1);
- assert (err == REG_NOERROR);
-#endif
+ DEBUG_ASSERT (match_last != -1);
+ DEBUG_ASSERT (err == REG_NOERROR);
/* Set pmatch[] if we need. */
if (nmatch > 0)
@@ -886,7 +871,7 @@ re_search_internal (const regex_t *preg, const char *string, Idx length,
: mctx.input.offsets[pmatch[reg_idx].rm_eo]);
}
#else
- assert (mctx.input.offsets_needed == 0);
+ DEBUG_ASSERT (mctx.input.offsets_needed == 0);
#endif
pmatch[reg_idx].rm_so += match_first;
pmatch[reg_idx].rm_eo += match_first;
@@ -926,9 +911,7 @@ prune_impossible_nodes (re_match_context_t *mctx)
re_dfastate_t **sifted_states;
re_dfastate_t **lim_states = NULL;
re_sift_context_t sctx;
-#ifdef DEBUG
- assert (mctx->state_log != NULL);
-#endif
+ DEBUG_ASSERT (mctx->state_log != NULL);
match_last = mctx->match_last;
halt_node = mctx->last_node;
@@ -1074,7 +1057,7 @@ check_matching (re_match_context_t *mctx, bool fl_longest_match,
/* An initial state must not be NULL (invalid). */
if (__glibc_unlikely (cur_state == NULL))
{
- assert (err == REG_ESPACE);
+ DEBUG_ASSERT (err == REG_ESPACE);
return -2;
}
@@ -1129,7 +1112,7 @@ check_matching (re_match_context_t *mctx, bool fl_longest_match,
err = extend_buffers (mctx, next_char_idx + 1);
if (__glibc_unlikely (err != REG_NOERROR))
{
- assert (err == REG_ESPACE);
+ DEBUG_ASSERT (err == REG_ESPACE);
return -2;
}
}
@@ -1212,9 +1195,7 @@ check_halt_state_context (const re_match_context_t *mctx,
{
Idx i;
unsigned int context;
-#ifdef DEBUG
- assert (state->halt);
-#endif
+ DEBUG_ASSERT (state->halt);
context = re_string_context_at (&mctx->input, idx, mctx->eflags);
for (i = 0; i < state->nodes.nelem; ++i)
if (check_halt_node_context (mctx->dfa, state->nodes.elems[i], context))
@@ -1285,16 +1266,21 @@ proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
if (type == OP_BACK_REF)
{
Idx subexp_idx = dfa->nodes[node].opr.idx + 1;
- naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
+ if (subexp_idx < nregs)
+ naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
if (fs != NULL)
{
- if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
+ if (subexp_idx >= nregs
+ || regs[subexp_idx].rm_so == -1
+ || regs[subexp_idx].rm_eo == -1)
return -1;
else if (naccepted)
{
char *buf = (char *) re_string_get_buffer (&mctx->input);
- if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
- naccepted) != 0)
+ if (mctx->input.valid_len - *pidx < naccepted
+ || (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
+ naccepted)
+ != 0))
return -1;
}
}
@@ -1360,7 +1346,7 @@ pop_fail_stack (struct re_fail_stack_t *fs, Idx *pidx, Idx nregs,
regmatch_t *regs, re_node_set *eps_via_nodes)
{
Idx num = --fs->num;
- assert (num >= 0);
+ DEBUG_ASSERT (num >= 0);
*pidx = fs->stack[num].idx;
memcpy (regs, fs->stack[num].regs, sizeof (regmatch_t) * nregs);
re_node_set_free (eps_via_nodes);
@@ -1387,10 +1373,8 @@ set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
regmatch_t *prev_idx_match;
bool prev_idx_match_malloced = false;
-#ifdef DEBUG
- assert (nmatch > 1);
- assert (mctx->state_log != NULL);
-#endif
+ DEBUG_ASSERT (nmatch > 1);
+ DEBUG_ASSERT (mctx->state_log != NULL);
if (fl_backtrack)
{
fs = &fs_body;
@@ -1576,9 +1560,7 @@ sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
Idx str_idx = sctx->last_str_idx;
re_node_set cur_dest;
-#ifdef DEBUG
- assert (mctx->state_log != NULL && mctx->state_log[str_idx] != NULL);
-#endif
+ DEBUG_ASSERT (mctx->state_log != NULL && mctx->state_log[str_idx] != NULL);
/* Build sifted state_log[str_idx]. It has the nodes which can epsilon
transit to the last_node and the last_node itself. */
@@ -1646,11 +1628,8 @@ build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
Idx prev_node = cur_src->elems[i];
int naccepted = 0;
bool ok;
+ DEBUG_ASSERT (!IS_EPSILON_NODE (dfa->nodes[prev_node].type));
-#ifdef DEBUG
- re_token_type_t type = dfa->nodes[prev_node].type;
- assert (!IS_EPSILON_NODE (type));
-#endif
#ifdef RE_ENABLE_I18N
/* If the node may accept "multi byte". */
if (dfa->nodes[prev_node].accept_mb)
@@ -2202,12 +2181,12 @@ sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
int naccepted;
/* Check the node can accept "multi byte". */
naccepted = check_node_accept_bytes (dfa, node_idx, &mctx->input, str_idx);
- if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
- !STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + naccepted],
- dfa->nexts[node_idx]))
+ if (naccepted > 0 && str_idx + naccepted <= max_str_idx
+ && !STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + naccepted],
+ dfa->nexts[node_idx]))
/* The node can't accept the "multi byte", or the
destination was already thrown away, then the node
- could't accept the current input "multi byte". */
+ couldn't accept the current input "multi byte". */
naccepted = 0;
/* Otherwise, it is sure that the node could accept
'naccepted' bytes input. */
@@ -2503,9 +2482,7 @@ transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
err = clean_state_log_if_needed (mctx, dest_idx);
if (__glibc_unlikely (err != REG_NOERROR))
return err;
-#ifdef DEBUG
- assert (dfa->nexts[cur_node_idx] != -1);
-#endif
+ DEBUG_ASSERT (dfa->nexts[cur_node_idx] != -1);
new_nodes = dfa->eclosures + dfa->nexts[cur_node_idx];
dest_state = mctx->state_log[dest_idx];
@@ -2569,9 +2546,7 @@ transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
/* And add the epsilon closures (which is 'new_dest_nodes') of
the backreference to appropriate state_log. */
-#ifdef DEBUG
- assert (dfa->nexts[node_idx] != -1);
-#endif
+ DEBUG_ASSERT (dfa->nexts[node_idx] != -1);
for (; bkc_idx < mctx->nbkref_ents; ++bkc_idx)
{
Idx subexp_len;
@@ -3030,10 +3005,8 @@ check_arrival_add_next_nodes (re_match_context_t *mctx, Idx str_idx,
{
int naccepted = 0;
Idx cur_node = cur_nodes->elems[cur_idx];
-#ifdef DEBUG
- re_token_type_t type = dfa->nodes[cur_node].type;
- assert (!IS_EPSILON_NODE (type));
-#endif
+ DEBUG_ASSERT (!IS_EPSILON_NODE (dfa->nodes[cur_node].type));
+
#ifdef RE_ENABLE_I18N
/* If the node may accept "multi byte". */
if (dfa->nodes[cur_node].accept_mb)
@@ -3101,9 +3074,7 @@ check_arrival_expand_ecl (const re_dfa_t *dfa, re_node_set *cur_nodes,
reg_errcode_t err;
Idx idx, outside_node;
re_node_set new_nodes;
-#ifdef DEBUG
- assert (cur_nodes->nelem);
-#endif
+ DEBUG_ASSERT (cur_nodes->nelem);
err = re_node_set_alloc (&new_nodes, cur_nodes->nelem);
if (__glibc_unlikely (err != REG_NOERROR))
return err;
@@ -3693,6 +3664,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
bitset_empty (accepts);
}
}
+ assume (ndests <= SBC_MAX);
return ndests;
error_return:
for (j = 0; j < ndests; ++j)
@@ -3780,10 +3752,10 @@ check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
/* FIXME: I don't think this if is needed, as both '\n'
and '\0' are char_len == 1. */
/* '.' accepts any one character except the following two cases. */
- if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
- re_string_byte_at (input, str_idx) == '\n') ||
- ((dfa->syntax & RE_DOT_NOT_NULL) &&
- re_string_byte_at (input, str_idx) == '\0'))
+ if ((!(dfa->syntax & RE_DOT_NEWLINE)
+ && re_string_byte_at (input, str_idx) == '\n')
+ || ((dfa->syntax & RE_DOT_NOT_NULL)
+ && re_string_byte_at (input, str_idx) == '\0'))
return 0;
return char_len;
}
@@ -4270,10 +4242,8 @@ static reg_errcode_t
__attribute_warn_unused_result__
match_ctx_add_subtop (re_match_context_t *mctx, Idx node, Idx str_idx)
{
-#ifdef DEBUG
- assert (mctx->sub_tops != NULL);
- assert (mctx->asub_tops > 0);
-#endif
+ DEBUG_ASSERT (mctx->sub_tops != NULL);
+ DEBUG_ASSERT (mctx->asub_tops > 0);
if (__glibc_unlikely (mctx->nsub_tops == mctx->asub_tops))
{
Idx new_asub_tops = mctx->asub_tops * 2;
diff --git a/lib/rename.c b/lib/rename.c
index 0b457aa..09881e8 100644
--- a/lib/rename.c
+++ b/lib/rename.c
@@ -1,6 +1,6 @@
/* Work around rename bugs in some systems.
- Copyright (C) 2001-2003, 2005-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/rmdir.c b/lib/rmdir.c
index 7dc7aec..2f517cc 100644
--- a/lib/rmdir.c
+++ b/lib/rmdir.c
@@ -1,6 +1,6 @@
/* Work around rmdir bugs.
- Copyright (C) 1988, 1990, 1999, 2003-2006, 2009-2018 Free Software
+ Copyright (C) 1988, 1990, 1999, 2003-2006, 2009-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/same-inode.h b/lib/same-inode.h
index 6837795..09c339a 100644
--- a/lib/same-inode.h
+++ b/lib/same-inode.h
@@ -1,6 +1,6 @@
/* Determine whether two stat buffers are known to refer to the same file.
- Copyright (C) 2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/se-selinux.in.h b/lib/se-selinux.in.h
index f7610b3..05a766c 100644
--- a/lib/se-selinux.in.h
+++ b/lib/se-selinux.in.h
@@ -1,5 +1,5 @@
/* Replacement <selinux/selinux.h> for platforms that lack it.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/set-acl.c b/lib/set-acl.c
index 830beb1..b68268f 100644
--- a/lib/set-acl.c
+++ b/lib/set-acl.c
@@ -1,6 +1,6 @@
/* set-acl.c - set access control list equivalent to a mode
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/set-permissions.c b/lib/set-permissions.c
index a415e13..b22ccfd 100644
--- a/lib/set-permissions.c
+++ b/lib/set-permissions.c
@@ -1,6 +1,6 @@
/* Set permissions of a file. -*- coding: utf-8 -*-
- Copyright (C) 2002-2003, 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2002-2003, 2005-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/setlocale-lock.c b/lib/setlocale-lock.c
new file mode 100644
index 0000000..7dde32d
--- /dev/null
+++ b/lib/setlocale-lock.c
@@ -0,0 +1,150 @@
+/* Return the internal lock used by setlocale_null_r.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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>
+
+/* When it is known that the gl_get_setlocale_null_lock function is defined
+ by a dependency library, it should not be defined here. */
+#if OMIT_SETLOCALE_LOCK
+
+/* This declaration is solely to ensure that after preprocessing
+ this file is never empty. */
+typedef int dummy;
+
+#else
+
+/* This file defines the internal lock used by setlocale_null_r.
+ It is a separate compilation unit, so that only one copy of it is
+ present when linking statically. */
+
+/* Prohibit renaming this symbol. */
+# undef gl_get_setlocale_null_lock
+
+/* Macro for exporting a symbol (function, not variable) defined in this file,
+ when compiled into a shared library. */
+# ifndef DLL_EXPORTED
+# if HAVE_VISIBILITY
+ /* Override the effect of the compiler option '-fvisibility=hidden'. */
+# define DLL_EXPORTED __attribute__((__visibility__("default")))
+# elif defined _WIN32 || defined __CYGWIN__
+# define DLL_EXPORTED __declspec(dllexport)
+# else
+# define DLL_EXPORTED
+# endif
+# endif
+
+# if defined _WIN32 && !defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
+
+# include "windows-initguard.h"
+
+/* The return type is a 'CRITICAL_SECTION *', not a 'glwthread_mutex_t *',
+ because the latter is not guaranteed to be a stable ABI in the future. */
+
+/* Make sure the function gets exported from DLLs. */
+DLL_EXPORTED CRITICAL_SECTION *gl_get_setlocale_null_lock (void);
+
+static glwthread_initguard_t guard = GLWTHREAD_INITGUARD_INIT;
+static CRITICAL_SECTION lock;
+
+/* Returns the internal lock used by setlocale_null_r. */
+CRITICAL_SECTION *
+gl_get_setlocale_null_lock (void)
+{
+ if (!guard.done)
+ {
+ if (InterlockedIncrement (&guard.started) == 0)
+ {
+ /* This thread is the first one to need the lock. Initialize it. */
+ InitializeCriticalSection (&lock);
+ guard.done = 1;
+ }
+ else
+ {
+ /* Don't let guard.started grow and wrap around. */
+ InterlockedDecrement (&guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this mutex. */
+ while (!guard.done)
+ Sleep (0);
+ }
+ }
+ return &lock;
+}
+
+# elif HAVE_PTHREAD_API
+
+# include <pthread.h>
+
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+
+/* Make sure the function gets exported from shared libraries. */
+DLL_EXPORTED pthread_mutex_t *gl_get_setlocale_null_lock (void);
+
+/* Returns the internal lock used by setlocale_null_r. */
+pthread_mutex_t *
+gl_get_setlocale_null_lock (void)
+{
+ return &mutex;
+}
+
+# elif HAVE_THREADS_H
+
+# include <threads.h>
+# include <stdlib.h>
+
+static int volatile init_needed = 1;
+static once_flag init_once = ONCE_FLAG_INIT;
+static mtx_t mutex;
+
+static void
+atomic_init (void)
+{
+ if (mtx_init (&mutex, mtx_plain) != thrd_success)
+ abort ();
+ init_needed = 0;
+}
+
+/* Make sure the function gets exported from shared libraries. */
+DLL_EXPORTED mtx_t *gl_get_setlocale_null_lock (void);
+
+/* Returns the internal lock used by setlocale_null_r. */
+mtx_t *
+gl_get_setlocale_null_lock (void)
+{
+ if (init_needed)
+ call_once (&init_once, atomic_init);
+ return &mutex;
+}
+
+# endif
+
+# if (defined _WIN32 || defined __CYGWIN__) && !defined _MSC_VER
+/* Make sure the '__declspec(dllimport)' in setlocale_null.c does not cause
+ a link failure when no DLLs are involved. */
+# if defined _WIN64 || defined _LP64
+# define IMP(x) __imp_##x
+# else
+# define IMP(x) _imp__##x
+# endif
+void * IMP(gl_get_setlocale_null_lock) = &gl_get_setlocale_null_lock;
+# endif
+
+#endif
diff --git a/lib/setlocale_null.c b/lib/setlocale_null.c
new file mode 100644
index 0000000..abe55b5
--- /dev/null
+++ b/lib/setlocale_null.c
@@ -0,0 +1,411 @@
+/* Query the name of the current global locale.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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 <errno.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#if defined _WIN32 && !defined __CYGWIN__
+# include <wchar.h>
+#endif
+
+#if !(SETLOCALE_NULL_ALL_MTSAFE && SETLOCALE_NULL_ONE_MTSAFE)
+# if defined _WIN32 && !defined __CYGWIN__
+
+# define WIN32_LEAN_AND_MEAN /* avoid including junk */
+# include <windows.h>
+
+# elif HAVE_PTHREAD_API
+
+# include <pthread.h>
+# if HAVE_THREADS_H && HAVE_WEAK_SYMBOLS
+# include <threads.h>
+# pragma weak thrd_exit
+# define c11_threads_in_use() (thrd_exit != NULL)
+# else
+# define c11_threads_in_use() 0
+# endif
+
+# elif HAVE_THREADS_H
+
+# include <threads.h>
+
+# endif
+#endif
+
+/* Use the system's setlocale() function, not the gnulib override, here. */
+#undef setlocale
+
+static const char *
+setlocale_null_androidfix (int category)
+{
+ const char *result = setlocale (category, NULL);
+
+#ifdef __ANDROID__
+ if (result == NULL)
+ switch (category)
+ {
+ case LC_CTYPE:
+ case LC_NUMERIC:
+ case LC_TIME:
+ case LC_COLLATE:
+ case LC_MONETARY:
+ case LC_MESSAGES:
+ case LC_ALL:
+ case LC_PAPER:
+ case LC_NAME:
+ case LC_ADDRESS:
+ case LC_TELEPHONE:
+ case LC_MEASUREMENT:
+ result = "C";
+ break;
+ default:
+ break;
+ }
+#endif
+
+ return result;
+}
+
+static int
+setlocale_null_unlocked (int category, char *buf, size_t bufsize)
+{
+#if defined _WIN32 && !defined __CYGWIN__ && defined _MSC_VER
+ /* On native Windows, nowadays, the setlocale() implementation is based
+ on _wsetlocale() and uses malloc() for the result. We are better off
+ using _wsetlocale() directly. */
+ const wchar_t *result = _wsetlocale (category, NULL);
+
+ if (result == NULL)
+ {
+ /* CATEGORY is invalid. */
+ if (bufsize > 0)
+ /* Return an empty string in BUF.
+ This is a convenience for callers that don't want to write explicit
+ code for handling EINVAL. */
+ buf[0] = '\0';
+ return EINVAL;
+ }
+ else
+ {
+ size_t length = wcslen (result);
+ if (length < bufsize)
+ {
+ size_t i;
+
+ /* Convert wchar_t[] -> char[], assuming plain ASCII. */
+ for (i = 0; i <= length; i++)
+ buf[i] = result[i];
+
+ return 0;
+ }
+ else
+ {
+ if (bufsize > 0)
+ {
+ /* Return a truncated result in BUF.
+ This is a convenience for callers that don't want to write
+ explicit code for handling ERANGE. */
+ size_t i;
+
+ /* Convert wchar_t[] -> char[], assuming plain ASCII. */
+ for (i = 0; i < bufsize; i++)
+ buf[i] = result[i];
+ buf[bufsize - 1] = '\0';
+ }
+ return ERANGE;
+ }
+ }
+#else
+ const char *result = setlocale_null_androidfix (category);
+
+ if (result == NULL)
+ {
+ /* CATEGORY is invalid. */
+ if (bufsize > 0)
+ /* Return an empty string in BUF.
+ This is a convenience for callers that don't want to write explicit
+ code for handling EINVAL. */
+ buf[0] = '\0';
+ return EINVAL;
+ }
+ else
+ {
+ size_t length = strlen (result);
+ if (length < bufsize)
+ {
+ memcpy (buf, result, length + 1);
+ return 0;
+ }
+ else
+ {
+ if (bufsize > 0)
+ {
+ /* Return a truncated result in BUF.
+ This is a convenience for callers that don't want to write
+ explicit code for handling ERANGE. */
+ memcpy (buf, result, bufsize - 1);
+ buf[bufsize - 1] = '\0';
+ }
+ return ERANGE;
+ }
+ }
+#endif
+}
+
+#if !(SETLOCALE_NULL_ALL_MTSAFE && SETLOCALE_NULL_ONE_MTSAFE) /* musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin */
+
+/* Use a lock, so that no two threads can invoke setlocale_null_unlocked
+ at the same time. */
+
+/* Prohibit renaming this symbol. */
+# undef gl_get_setlocale_null_lock
+
+# if defined _WIN32 && !defined __CYGWIN__
+
+extern __declspec(dllimport) CRITICAL_SECTION *gl_get_setlocale_null_lock (void);
+
+static int
+setlocale_null_with_lock (int category, char *buf, size_t bufsize)
+{
+ CRITICAL_SECTION *lock = gl_get_setlocale_null_lock ();
+ int ret;
+
+ EnterCriticalSection (lock);
+ ret = setlocale_null_unlocked (category, buf, bufsize);
+ LeaveCriticalSection (lock);
+
+ return ret;
+}
+
+# elif HAVE_PTHREAD_API /* musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin */
+
+extern
+# if defined _WIN32 || defined __CYGWIN__
+ __declspec(dllimport)
+# endif
+ pthread_mutex_t *gl_get_setlocale_null_lock (void);
+
+# if HAVE_WEAK_SYMBOLS /* musl libc, FreeBSD, NetBSD, OpenBSD, Haiku */
+
+ /* Avoid the need to link with '-lpthread'. */
+# pragma weak pthread_mutex_lock
+# pragma weak pthread_mutex_unlock
+
+ /* Determine whether libpthread is in use. */
+# pragma weak pthread_mutexattr_gettype
+ /* See the comments in lock.h. */
+# define pthread_in_use() \
+ (pthread_mutexattr_gettype != NULL || c11_threads_in_use ())
+
+# else
+# define pthread_in_use() 1
+# endif
+
+static int
+setlocale_null_with_lock (int category, char *buf, size_t bufsize)
+{
+ if (pthread_in_use())
+ {
+ pthread_mutex_t *lock = gl_get_setlocale_null_lock ();
+ int ret;
+
+ if (pthread_mutex_lock (lock))
+ abort ();
+ ret = setlocale_null_unlocked (category, buf, bufsize);
+ if (pthread_mutex_unlock (lock))
+ abort ();
+
+ return ret;
+ }
+ else
+ return setlocale_null_unlocked (category, buf, bufsize);
+}
+
+# elif HAVE_THREADS_H
+
+extern mtx_t *gl_get_setlocale_null_lock (void);
+
+static int
+setlocale_null_with_lock (int category, char *buf, size_t bufsize)
+{
+ mtx_t *lock = gl_get_setlocale_null_lock ();
+ int ret;
+
+ if (mtx_lock (lock) != thrd_success)
+ abort ();
+ ret = setlocale_null_unlocked (category, buf, bufsize);
+ if (mtx_unlock (lock) != thrd_success)
+ abort ();
+
+ return ret;
+}
+
+# endif
+
+#endif
+
+int
+setlocale_null_r (int category, char *buf, size_t bufsize)
+{
+#if SETLOCALE_NULL_ALL_MTSAFE
+# if SETLOCALE_NULL_ONE_MTSAFE
+
+ return setlocale_null_unlocked (category, buf, bufsize);
+
+# else
+
+ if (category == LC_ALL)
+ return setlocale_null_unlocked (category, buf, bufsize);
+ else
+ return setlocale_null_with_lock (category, buf, bufsize);
+
+# endif
+#else
+# if SETLOCALE_NULL_ONE_MTSAFE
+
+ if (category == LC_ALL)
+ return setlocale_null_with_lock (category, buf, bufsize);
+ else
+ return setlocale_null_unlocked (category, buf, bufsize);
+
+# else
+
+ return setlocale_null_with_lock (category, buf, bufsize);
+
+# endif
+#endif
+}
+
+const char *
+setlocale_null (int category)
+{
+#if SETLOCALE_NULL_ALL_MTSAFE && SETLOCALE_NULL_ONE_MTSAFE
+ return setlocale_null_androidfix (category);
+#else
+
+ /* This call must be multithread-safe. To achieve this without using
+ thread-local storage:
+ 1. We use a specific static buffer for each possible CATEGORY
+ argument. So that different threads can call setlocale_mtsafe
+ with different CATEGORY arguments, without interfering.
+ 2. We use a simple strcpy or memcpy to fill this static buffer.
+ Filling it through, for example, strcpy + strcat would not be
+ guaranteed to leave the buffer's contents intact if another thread
+ is currently accessing it. If necessary, the contents is first
+ assembled in a stack-allocated buffer. */
+ if (category == LC_ALL)
+ {
+# if SETLOCALE_NULL_ALL_MTSAFE
+ return setlocale_null_androidfix (LC_ALL);
+# else
+ char buf[SETLOCALE_NULL_ALL_MAX];
+ static char resultbuf[SETLOCALE_NULL_ALL_MAX];
+
+ if (setlocale_null_r (LC_ALL, buf, sizeof (buf)))
+ return "C";
+ strcpy (resultbuf, buf);
+ return resultbuf;
+# endif
+ }
+ else
+ {
+# if SETLOCALE_NULL_ONE_MTSAFE
+ return setlocale_null_androidfix (category);
+# else
+ enum
+ {
+ LC_CTYPE_INDEX,
+ LC_NUMERIC_INDEX,
+ LC_TIME_INDEX,
+ LC_COLLATE_INDEX,
+ LC_MONETARY_INDEX,
+ LC_MESSAGES_INDEX,
+# ifdef LC_PAPER
+ LC_PAPER_INDEX,
+# endif
+# ifdef LC_NAME
+ LC_NAME_INDEX,
+# endif
+# ifdef LC_ADDRESS
+ LC_ADDRESS_INDEX,
+# endif
+# ifdef LC_TELEPHONE
+ LC_TELEPHONE_INDEX,
+# endif
+# ifdef LC_MEASUREMENT
+ LC_MEASUREMENT_INDEX,
+# endif
+# ifdef LC_IDENTIFICATION
+ LC_IDENTIFICATION_INDEX,
+# endif
+ LC_INDICES_COUNT
+ }
+ i;
+ char buf[SETLOCALE_NULL_MAX];
+ static char resultbuf[LC_INDICES_COUNT][SETLOCALE_NULL_MAX];
+ int err;
+
+ err = setlocale_null_r (category, buf, sizeof (buf));
+ if (err == EINVAL)
+ return NULL;
+ if (err)
+ return "C";
+
+ switch (category)
+ {
+ case LC_CTYPE: i = LC_CTYPE_INDEX; break;
+ case LC_NUMERIC: i = LC_NUMERIC_INDEX; break;
+ case LC_TIME: i = LC_TIME_INDEX; break;
+ case LC_COLLATE: i = LC_COLLATE_INDEX; break;
+ case LC_MONETARY: i = LC_MONETARY_INDEX; break;
+ case LC_MESSAGES: i = LC_MESSAGES_INDEX; break;
+# ifdef LC_PAPER
+ case LC_PAPER: i = LC_PAPER_INDEX; break;
+# endif
+# ifdef LC_NAME
+ case LC_NAME: i = LC_NAME_INDEX; break;
+# endif
+# ifdef LC_ADDRESS
+ case LC_ADDRESS: i = LC_ADDRESS_INDEX; break;
+# endif
+# ifdef LC_TELEPHONE
+ case LC_TELEPHONE: i = LC_TELEPHONE_INDEX; break;
+# endif
+# ifdef LC_MEASUREMENT
+ case LC_MEASUREMENT: i = LC_MEASUREMENT_INDEX; break;
+# endif
+# ifdef LC_IDENTIFICATION
+ case LC_IDENTIFICATION: i = LC_IDENTIFICATION_INDEX; break;
+# endif
+ default:
+ /* If you get here, a #ifdef LC_xxx is missing. */
+ abort ();
+ }
+
+ strcpy (resultbuf[i], buf);
+ return resultbuf[i];
+# endif
+ }
+#endif
+}
diff --git a/lib/setlocale_null.h b/lib/setlocale_null.h
new file mode 100644
index 0000000..6844be5
--- /dev/null
+++ b/lib/setlocale_null.h
@@ -0,0 +1,82 @@
+/* Query the name of the current global locale.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This 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. */
+
+#ifndef _SETLOCALE_NULL_H
+#define _SETLOCALE_NULL_H
+
+#include <stddef.h>
+
+#include "arg-nonnull.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Recommended size of a buffer for a locale name for a single category.
+ On glibc systems, you can have locale names that are relative file names;
+ assume a maximum length 256.
+ In native Windows, in 2018 the longest locale name was of length 58
+ ("FYRO Macedonian_Former Yugoslav Republic of Macedonia.1251"). */
+#define SETLOCALE_NULL_MAX (256+1)
+
+/* Recommended size of a buffer for a locale name with all categories.
+ On glibc systems, you can have locale names that are relative file names;
+ assume maximum length 256 for each. There are 12 categories; so, the
+ maximum total length is 148+12*256.
+ In native Windows, there are 5 categories, and the maximum total length is
+ 55+5*58. */
+#define SETLOCALE_NULL_ALL_MAX (148+12*256+1)
+
+/* setlocale_null_r (CATEGORY, BUF, BUFSIZE) is like setlocale (CATEGORY, NULL),
+ except that
+ - it is guaranteed to be multithread-safe,
+ - it returns the resulting locale category name or locale name in the
+ user-supplied buffer BUF, which must be BUFSIZE bytes long.
+ The recommended minimum buffer size is
+ - SETLOCALE_NULL_MAX for CATEGORY != LC_ALL, and
+ - SETLOCALE_NULL_ALL_MAX for CATEGORY == LC_ALL.
+ The return value is an error code: 0 if the call is successful, EINVAL if
+ CATEGORY is invalid, or ERANGE if BUFSIZE is smaller than the length needed
+ size (including the trailing NUL byte). In the latter case, a truncated
+ result is returned in BUF, but still NUL-terminated if BUFSIZE > 0.
+ For this call to be multithread-safe, *all* calls to
+ setlocale (CATEGORY, NULL) in all other threads must have been converted
+ to use setlocale_null_r or setlocale_null as well, and the other threads
+ must not make other setlocale invocations (since changing the global locale
+ has side effects on all threads). */
+extern int setlocale_null_r (int category, char *buf, size_t bufsize)
+ _GL_ARG_NONNULL ((2));
+
+/* setlocale_null (CATEGORY) is like setlocale (CATEGORY, NULL), except that
+ it is guaranteed to be multithread-safe.
+ The return value is NULL if CATEGORY is invalid.
+ For this call to be multithread-safe, *all* calls to
+ setlocale (CATEGORY, NULL) in all other threads must have been converted
+ to use setlocale_null_r or setlocale_null as well, and the other threads
+ must not make other setlocale invocations (since changing the global locale
+ has side effects on all threads). */
+extern const char *setlocale_null (int category);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SETLOCALE_NULL_H */
diff --git a/lib/stat-time.h b/lib/stat-time.h
index 69ebe85..884ffd8 100644
--- a/lib/stat-time.h
+++ b/lib/stat-time.h
@@ -1,6 +1,6 @@
/* stat-related time functions.
- Copyright (C) 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -171,7 +171,7 @@ get_stat_birthtime (struct stat const *st _GL_UNUSED)
#elif defined _WIN32 && ! defined __CYGWIN__
/* Native Windows platforms (but not Cygwin) put the "file creation
time" in st_ctime (!). See
- <https://msdn.microsoft.com/en-us/library/14h5k7ff(VS.80).aspx>. */
+ <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions>. */
# if _GL_WINDOWS_STAT_TIMESPEC
t = st->st_ctim;
# else
diff --git a/lib/stat-w32.c b/lib/stat-w32.c
index c7a53f9..296ccf1 100644
--- a/lib/stat-w32.c
+++ b/lib/stat-w32.c
@@ -1,5 +1,5 @@
/* Core of implementation of fstat and stat for native Windows.
- Copyright (C) 2017-2018 Free Software Foundation, Inc.
+ Copyright (C) 2017-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -80,7 +80,7 @@ struct timespec
_gl_convert_FILETIME_to_timespec (const FILETIME *ft)
{
struct timespec result;
- /* FILETIME: <https://msdn.microsoft.com/en-us/library/ms724284.aspx> */
+ /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
unsigned long long since_1601 =
((unsigned long long) ft->dwHighDateTime << 32)
| (unsigned long long) ft->dwLowDateTime;
@@ -104,7 +104,7 @@ _gl_convert_FILETIME_to_timespec (const FILETIME *ft)
time_t
_gl_convert_FILETIME_to_POSIX (const FILETIME *ft)
{
- /* FILETIME: <https://msdn.microsoft.com/en-us/library/ms724284.aspx> */
+ /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
unsigned long long since_1601 =
((unsigned long long) ft->dwHighDateTime << 32)
| (unsigned long long) ft->dwLowDateTime;
@@ -128,7 +128,7 @@ int
_gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
{
/* GetFileType
- <https://msdn.microsoft.com/en-us/library/aa364960.aspx> */
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfiletype> */
DWORD type = GetFileType (h);
if (type == FILE_TYPE_DISK)
{
@@ -137,16 +137,16 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
/* st_mode can be determined through
GetFileAttributesEx
- <https://msdn.microsoft.com/en-us/library/aa364946.aspx>
- <https://msdn.microsoft.com/en-us/library/aa365739.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesexa>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_win32_file_attribute_data>
or through
GetFileInformationByHandle
- <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
- <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
or through
GetFileInformationByHandleEx with argument FileBasicInfo
- <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
- <https://msdn.microsoft.com/en-us/library/aa364217.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_basic_info>
The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */
BY_HANDLE_FILE_INFORMATION info;
if (! GetFileInformationByHandle (h, &info))
@@ -162,12 +162,12 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
#if _GL_WINDOWS_STAT_INODES
/* st_ino can be determined through
GetFileInformationByHandle
- <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
- <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
as 64 bits, or through
GetFileInformationByHandleEx with argument FileIdInfo
- <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
- <https://msdn.microsoft.com/en-us/library/hh802691.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_id_info>
as 128 bits.
The latter requires -D_WIN32_WINNT=_WIN32_WINNT_WIN8 or higher. */
/* Experiments show that GetFileInformationByHandleEx does not provide
@@ -238,11 +238,11 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
If the file name is already known, use it. Otherwise, for
non-empty files, it can be determined through
GetFinalPathNameByHandle
- <https://msdn.microsoft.com/en-us/library/aa364962.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfinalpathnamebyhandlea>
or through
GetFileInformationByHandleEx with argument FileNameInfo
- <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
- <https://msdn.microsoft.com/en-us/library/aa364388.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_name_info>
Both require -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */
if (info.nFileSizeHigh > 0 || info.nFileSizeLow > 0)
{
@@ -277,12 +277,12 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
/* st_nlink can be determined through
GetFileInformationByHandle
- <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
- <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
or through
GetFileInformationByHandleEx with argument FileStandardInfo
- <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
- <https://msdn.microsoft.com/en-us/library/aa364401.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_standard_info>
The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */
buf->st_nlink = (info.nNumberOfLinks > SHRT_MAX ? SHRT_MAX : info.nNumberOfLinks);
@@ -295,19 +295,19 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
/* st_size can be determined through
GetFileSizeEx
- <https://msdn.microsoft.com/en-us/library/aa364957.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfilesizeex>
or through
GetFileAttributesEx
- <https://msdn.microsoft.com/en-us/library/aa364946.aspx>
- <https://msdn.microsoft.com/en-us/library/aa365739.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesexa>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_win32_file_attribute_data>
or through
GetFileInformationByHandle
- <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
- <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
or through
GetFileInformationByHandleEx with argument FileStandardInfo
- <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
- <https://msdn.microsoft.com/en-us/library/aa364401.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_standard_info>
The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */
if (sizeof (buf->st_size) <= 4)
/* Range check already done above. */
@@ -317,19 +317,19 @@ _gl_fstat_by_handle (HANDLE h, const char *path, struct stat *buf)
/* st_atime, st_mtime, st_ctime can be determined through
GetFileTime
- <https://msdn.microsoft.com/en-us/library/ms724320.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfiletime>
or through
GetFileAttributesEx
- <https://msdn.microsoft.com/en-us/library/aa364946.aspx>
- <https://msdn.microsoft.com/en-us/library/aa365739.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileattributesexa>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_win32_file_attribute_data>
or through
GetFileInformationByHandle
- <https://msdn.microsoft.com/en-us/library/aa364952.aspx>
- <https://msdn.microsoft.com/en-us/library/aa363788.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getfileinformationbyhandle>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/ns-fileapi-_by_handle_file_information>
or through
GetFileInformationByHandleEx with argument FileBasicInfo
- <https://msdn.microsoft.com/en-us/library/aa364953.aspx>
- <https://msdn.microsoft.com/en-us/library/aa364217.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getfileinformationbyhandleex>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_basic_info>
The latter requires -D_WIN32_WINNT=_WIN32_WINNT_VISTA or higher. */
#if _GL_WINDOWS_STAT_TIMESPEC
buf->st_atim = _gl_convert_FILETIME_to_timespec (&info.ftLastAccessTime);
diff --git a/lib/stat-w32.h b/lib/stat-w32.h
index 9a3ecc1..491a754 100644
--- a/lib/stat-w32.h
+++ b/lib/stat-w32.h
@@ -1,5 +1,5 @@
/* Core of implementation of fstat and stat for native Windows.
- Copyright (C) 2017-2018 Free Software Foundation, Inc.
+ Copyright (C) 2017-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/stat.c b/lib/stat.c
index 18c0caa..e074e6a 100644
--- a/lib/stat.c
+++ b/lib/stat.c
@@ -1,5 +1,5 @@
/* Work around platform bugs in stat.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -42,10 +42,14 @@ orig_stat (const char *filename, struct stat *buf)
#endif
/* Specification. */
+#ifdef __osf__
/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
eliminates this include because of the preliminary #include <sys/stat.h>
above. */
-#include "sys/stat.h"
+# include "sys/stat.h"
+#else
+# include <sys/stat.h>
+#endif
#include "stat-time.h"
@@ -107,9 +111,9 @@ rpl_stat (char const *name, struct stat *buf)
<https://lists.gnu.org/r/bug-gnulib/2017-04/msg00134.html> */
/* XXX Should we convert to wchar_t* and prepend '\\?\', in order to work
around length limitations
- <https://msdn.microsoft.com/en-us/library/aa365247.aspx> ? */
+ <https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file> ? */
- /* POSIX <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13>
+ /* POSIX <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13>
specifies: "More than two leading <slash> characters shall be treated as
a single <slash> character." */
if (ISSLASH (name[0]) && ISSLASH (name[1]) && ISSLASH (name[2]))
@@ -190,8 +194,8 @@ rpl_stat (char const *name, struct stat *buf)
/* Open a handle to the file.
CreateFile
- <https://msdn.microsoft.com/en-us/library/aa363858.aspx>
- <https://msdn.microsoft.com/en-us/library/aa363874.aspx> */
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-createfilea>
+ <https://docs.microsoft.com/en-us/windows/desktop/FileIO/creating-and-opening-files> */
HANDLE h =
CreateFile (rname,
FILE_READ_ATTRIBUTES,
@@ -232,13 +236,13 @@ rpl_stat (char const *name, struct stat *buf)
/* Get the details about the directory entry. This can be done through
FindFirstFile
- <https://msdn.microsoft.com/en-us/library/aa364418.aspx>
- <https://msdn.microsoft.com/en-us/library/aa365740.aspx>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-findfirstfilea>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-_win32_find_dataa>
or through
FindFirstFileEx with argument FindExInfoBasic
- <https://msdn.microsoft.com/en-us/library/aa364419.aspx>
- <https://msdn.microsoft.com/en-us/library/aa364415.aspx>
- <https://msdn.microsoft.com/en-us/library/aa365740.aspx> */
+ <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-findfirstfileexa>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ne-minwinbase-findex_info_levels>
+ <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-_win32_find_dataa> */
WIN32_FIND_DATA info;
HANDLE h = FindFirstFile (rname, &info);
if (h == INVALID_HANDLE_VALUE)
@@ -371,7 +375,7 @@ rpl_stat (char const *name, struct stat *buf)
case ERROR_ACCESS_DENIED: /* rname is such as 'C:\System Volume Information\foo'. */
case ERROR_SHARING_VIOLATION: /* rname is such as 'C:\pagefile.sys' (second approach only). */
- /* XXX map to EACCESS or EPERM? */
+ /* XXX map to EACCES or EPERM? */
errno = EACCES;
break;
@@ -394,7 +398,7 @@ rpl_stat (char const *name, struct stat *buf)
errno = ENAMETOOLONG;
break;
- case ERROR_DELETE_PENDING: /* XXX map to EACCESS or EPERM? */
+ case ERROR_DELETE_PENDING: /* XXX map to EACCES or EPERM? */
errno = EPERM;
break;
diff --git a/lib/stdalign.in.h b/lib/stdalign.in.h
index bbfa9ac..cd786be 100644
--- a/lib/stdalign.in.h
+++ b/lib/stdalign.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C11 <stdalign.h>.
- Copyright 2011-2018 Free Software Foundation, Inc.
+ Copyright 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -102,7 +102,7 @@
# define _Alignas(a) alignas (a)
# elif ((defined __APPLE__ && defined __MACH__ \
? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \
- : __GNUC__) \
+ : __GNUC__ && !defined __ibmxl__) \
|| (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \
|| __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__)
# define _Alignas(a) __attribute__ ((__aligned__ (a)))
diff --git a/lib/stdarg.in.h b/lib/stdarg.in.h
index 46af0c2..8cdc685 100644
--- a/lib/stdarg.in.h
+++ b/lib/stdarg.in.h
@@ -1,5 +1,5 @@
/* Substitute for and wrapper around <stdarg.h>.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h
index ebf1a2f..baacf98 100644
--- a/lib/stdbool.in.h
+++ b/lib/stdbool.in.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2003, 2006-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2003, 2006-2020 Free Software Foundation, Inc.
Written by Bruno Haible <haible@clisp.cons.org>, 2001.
This program is free software; you can redistribute it and/or modify
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
index 8329a9b..2e50a1f 100644
--- a/lib/stddef.in.h
+++ b/lib/stddef.in.h
@@ -1,6 +1,6 @@
/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
This 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,7 +19,7 @@
/*
* POSIX 2008 <stddef.h> for platforms that have issues.
- * <http://www.opengroup.org/susv3xbd/stddef.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html>
*/
#if __GNUC__ >= 3
@@ -83,20 +83,26 @@
/* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is
a hack in case the configure-time test was done with g++ even though
- we are currently compiling with gcc. */
-#if ! (@HAVE_MAX_ALIGN_T@ || defined _GCC_MAX_ALIGN_T)
-# if !GNULIB_defined_max_align_t
+ we are currently compiling with gcc.
+ On MSVC, max_align_t is defined only in C++ mode, after <cstddef> was
+ included. Its definition is good since it has an alignment of 8 (on x86
+ and x86_64). */
+#if defined _MSC_VER && defined __cplusplus
+# include <cstddef>
+#else
+# if ! (@HAVE_MAX_ALIGN_T@ || defined _GCC_MAX_ALIGN_T)
+# if !GNULIB_defined_max_align_t
/* On the x86, the maximum storage alignment of double, long, etc. is 4,
but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8,
and the C11 standard allows this. Work around this problem by
using __alignof__ (which returns 8 for double) rather than _Alignof
(which returns 4), and align each union member accordingly. */
-# ifdef __GNUC__
-# define _GL_STDDEF_ALIGNAS(type) \
- __attribute__ ((__aligned__ (__alignof__ (type))))
-# else
-# define _GL_STDDEF_ALIGNAS(type) /* */
-# endif
+# ifdef __GNUC__
+# define _GL_STDDEF_ALIGNAS(type) \
+ __attribute__ ((__aligned__ (__alignof__ (type))))
+# else
+# define _GL_STDDEF_ALIGNAS(type) /* */
+# endif
typedef union
{
char *__p _GL_STDDEF_ALIGNAS (char *);
@@ -104,8 +110,9 @@ typedef union
long double __ld _GL_STDDEF_ALIGNAS (long double);
long int __i _GL_STDDEF_ALIGNAS (long int);
} rpl_max_align_t;
-# define max_align_t rpl_max_align_t
-# define GNULIB_defined_max_align_t 1
+# define max_align_t rpl_max_align_t
+# define GNULIB_defined_max_align_t 1
+# endif
# endif
#endif
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
index 94e7c81..994c0c7 100644
--- a/lib/stdint.in.h
+++ b/lib/stdint.in.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2002, 2004-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2002, 2004-2020 Free Software Foundation, Inc.
Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
This file is part of gnulib.
@@ -17,7 +17,7 @@
/*
* ISO C 99 <stdint.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html>
*/
#ifndef _@GUARD_PREFIX@_STDINT_H
@@ -188,7 +188,7 @@ typedef long int gl_int64_t;
typedef __int64 gl_int64_t;
# define int64_t gl_int64_t
# define GL_INT64_T
-# elif @HAVE_LONG_LONG_INT@
+# else
# undef int64_t
typedef long long int gl_int64_t;
# define int64_t gl_int64_t
@@ -209,7 +209,7 @@ typedef unsigned long int gl_uint64_t;
typedef unsigned __int64 gl_uint64_t;
# define uint64_t gl_uint64_t
# define GL_UINT64_T
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# else
# undef uint64_t
typedef unsigned long long int gl_uint64_t;
# define uint64_t gl_uint64_t
@@ -299,16 +299,26 @@ typedef gl_uint_fast32_t gl_uint_fast16_t;
/* 7.18.1.4. Integer types capable of holding object pointers */
-/* kLIBC's stdint.h defines _INTPTR_T_DECLARED and needs its own
+/* kLIBC's <stdint.h> defines _INTPTR_T_DECLARED and needs its own
definitions of intptr_t and uintptr_t (which use int and unsigned)
- to avoid clashes with declarations of system functions like sbrk. */
-# ifndef _INTPTR_T_DECLARED
-# undef intptr_t
-# undef uintptr_t
+ to avoid clashes with declarations of system functions like sbrk.
+ Similarly, mingw 5.22 <crtdefs.h> defines _INTPTR_T_DEFINED and
+ _UINTPTR_T_DEFINED and needs its own definitions of intptr_t and
+ uintptr_t to avoid conflicting declarations of system functions like
+ _findclose in <io.h>. */
+# if !((defined __KLIBC__ && defined _INTPTR_T_DECLARED) \
+ || (defined __MINGW32__ && defined _INTPTR_T_DEFINED && defined _UINTPTR_T_DEFINED))
+# undef intptr_t
+# undef uintptr_t
+# ifdef _WIN64
+typedef long long int gl_intptr_t;
+typedef unsigned long long int gl_uintptr_t;
+# else
typedef long int gl_intptr_t;
typedef unsigned long int gl_uintptr_t;
-# define intptr_t gl_intptr_t
-# define uintptr_t gl_uintptr_t
+# endif
+# define intptr_t gl_intptr_t
+# define uintptr_t gl_uintptr_t
# endif
/* 7.18.1.5. Greatest-width integer types */
@@ -323,7 +333,7 @@ typedef unsigned long int gl_uintptr_t;
# ifndef INTMAX_MAX
# undef INTMAX_C
# undef intmax_t
-# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# if LONG_MAX >> 30 == 1
typedef long long int gl_intmax_t;
# define intmax_t gl_intmax_t
# elif defined GL_INT64_T
@@ -337,7 +347,7 @@ typedef long int gl_intmax_t;
# ifndef UINTMAX_MAX
# undef UINTMAX_C
# undef uintmax_t
-# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# if ULONG_MAX >> 31 == 1
typedef unsigned long long int gl_uintmax_t;
# define uintmax_t gl_uintmax_t
# elif defined GL_UINT64_T
@@ -485,9 +495,15 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
# undef INTPTR_MIN
# undef INTPTR_MAX
# undef UINTPTR_MAX
-# define INTPTR_MIN LONG_MIN
-# define INTPTR_MAX LONG_MAX
-# define UINTPTR_MAX ULONG_MAX
+# ifdef _WIN64
+# define INTPTR_MIN LLONG_MIN
+# define INTPTR_MAX LLONG_MAX
+# define UINTPTR_MAX ULLONG_MAX
+# else
+# define INTPTR_MIN LONG_MIN
+# define INTPTR_MAX LONG_MAX
+# define UINTPTR_MAX ULONG_MAX
+# endif
/* 7.18.2.5. Limits of greatest-width integer types */
@@ -586,17 +602,21 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
_STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
/* wint_t limits */
-# undef WINT_MIN
-# undef WINT_MAX
-# if @HAVE_SIGNED_WINT_T@
-# define WINT_MIN \
- _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
-# else
-# define WINT_MIN \
- _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+/* If gnulib's <wchar.h> or <wctype.h> overrides wint_t, @WINT_T_SUFFIX@ is not
+ accurate, therefore use the definitions from above. */
+# if !@GNULIB_OVERRIDES_WINT_T@
+# undef WINT_MIN
+# undef WINT_MAX
+# if @HAVE_SIGNED_WINT_T@
+# define WINT_MIN \
+ _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# else
+# define WINT_MIN \
+ _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# endif
+# define WINT_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
# endif
-# define WINT_MAX \
- _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
/* 7.18.4. Macros for integer constants */
@@ -627,21 +647,21 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
# define INT64_C(x) x##L
# elif defined _MSC_VER
# define INT64_C(x) x##i64
-# elif @HAVE_LONG_LONG_INT@
+# else
# define INT64_C(x) x##LL
# endif
# if ULONG_MAX >> 31 >> 31 >> 1 == 1
# define UINT64_C(x) x##UL
# elif defined _MSC_VER
# define UINT64_C(x) x##ui64
-# elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# else
# define UINT64_C(x) x##ULL
# endif
/* 7.18.4.2. Macros for greatest-width integer constants */
# ifndef INTMAX_C
-# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# if LONG_MAX >> 30 == 1
# define INTMAX_C(x) x##LL
# elif defined GL_INT64_T
# define INTMAX_C(x) INT64_C(x)
@@ -651,7 +671,7 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
# endif
# ifndef UINTMAX_C
-# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# if ULONG_MAX >> 31 == 1
# define UINTMAX_C(x) x##ULL
# elif defined GL_UINT64_T
# define UINTMAX_C(x) UINT64_C(x)
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
index 393ef0c..067b95e 100644
--- a/lib/stdio-impl.h
+++ b/lib/stdio-impl.h
@@ -1,5 +1,5 @@
/* Implementation details of FILE streams.
- Copyright (C) 2007-2008, 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2008, 2010-2020 Free Software Foundation, Inc.
This 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,11 +18,16 @@
the same implementation of stdio extension API, except that some fields
have different naming conventions, or their access requires some casts. */
-/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this
- problem by defining it ourselves. FIXME: Do not rely on glibc
+/* Glibc 2.28 made _IO_UNBUFFERED and _IO_IN_BACKUP private. For now, work
+ around this problem by defining them ourselves. FIXME: Do not rely on glibc
internals. */
-#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-# define _IO_IN_BACKUP 0x100
+#if defined _IO_EOF_SEEN
+# if !defined _IO_UNBUFFERED
+# define _IO_UNBUFFERED 0x2
+# endif
+# if !defined _IO_IN_BACKUP
+# define _IO_IN_BACKUP 0x100
+# endif
#endif
/* BSD stdio derived implementations. */
@@ -61,6 +66,11 @@
# define _r pub._r
# define _w pub._w
# elif defined __ANDROID__ /* Android */
+# ifdef __LP64__
+# define _gl_flags_file_t int
+# else
+# define _gl_flags_file_t short
+# endif
/* Up to this commit from 2015-10-12
<https://android.googlesource.com/platform/bionic.git/+/f0141dfab10a4b332769d52fa76631a64741297a>
the innards of FILE were public, and fp_ub could be defined like for OpenBSD,
@@ -70,8 +80,8 @@
# define fp_ ((struct { unsigned char *_p; \
int _r; \
int _w; \
- int _flags; \
- int _file; \
+ _gl_flags_file_t _flags; \
+ _gl_flags_file_t _file; \
struct { unsigned char *_base; size_t _size; } _bf; \
int _lbfsize; \
void *_cookie; \
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
index ff7c9c8..ebcbfaf 100644
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <stdio.h>.
- Copyright (C) 2004, 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2007-2020 Free Software Foundation, Inc.
This 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,6 +118,13 @@
# include <unistd.h>
#endif
+/* Android 4.3 declares renameat in <sys/stat.h>, not in <stdio.h>. */
+/* But in any case avoid namespace pollution on glibc systems. */
+#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
+ && ! defined __GLIBC__
+# include <sys/stat.h>
+#endif
+
/* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>. We must include
it before we #define perror rpl_perror. */
/* But in any case avoid namespace pollution on glibc systems. */
@@ -196,7 +203,9 @@ _GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
# else
_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fclose);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef fclose
/* Assume fclose is always declared. */
@@ -240,7 +249,9 @@ _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
# else
_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fflush);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef fflush
/* Assume fflush is always declared. */
@@ -259,7 +270,9 @@ _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
# else
_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fgetc);
+# endif
#endif
#if @GNULIB_FGETS@
@@ -274,7 +287,9 @@ _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
# else
_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fgets);
+# endif
#endif
#if @GNULIB_FOPEN@
@@ -289,7 +304,9 @@ _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
# else
_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fopen);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef fopen
/* Assume fopen is always declared. */
@@ -317,7 +334,9 @@ _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
# else
_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fprintf);
+# endif
#endif
#if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
# if !GNULIB_overrides_fprintf
@@ -368,7 +387,9 @@ _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
# else
_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fputc);
+# endif
#endif
#if @GNULIB_FPUTS@
@@ -383,7 +404,9 @@ _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
# else
_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fputs);
+# endif
#endif
#if @GNULIB_FREAD@
@@ -398,7 +421,9 @@ _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
# else
_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fread);
+# endif
#endif
#if @GNULIB_FREOPEN@
@@ -416,7 +441,9 @@ _GL_CXXALIAS_RPL (freopen, FILE *,
_GL_CXXALIAS_SYS (freopen, FILE *,
(const char *filename, const char *mode, FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (freopen);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef freopen
/* Assume freopen is always declared. */
@@ -438,7 +465,9 @@ _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
# else
_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fscanf);
+# endif
#endif
@@ -489,7 +518,9 @@ _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
# else
_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fseek);
+# endif
#endif
#if @GNULIB_FSEEKO@
@@ -552,7 +583,9 @@ _GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
# else
_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (ftell);
+# endif
#endif
#if @GNULIB_FTELLO@
@@ -632,7 +665,9 @@ extern size_t __REDIRECT (rpl_fwrite_unlocked,
# define fwrite_unlocked rpl_fwrite_unlocked
# endif
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fwrite);
+# endif
#endif
#if @GNULIB_GETC@
@@ -646,7 +681,9 @@ _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
# else
_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getc);
+# endif
#endif
#if @GNULIB_GETCHAR@
@@ -660,7 +697,9 @@ _GL_CXXALIAS_RPL (getchar, int, (void));
# else
_GL_CXXALIAS_SYS (getchar, int, (void));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getchar);
+# endif
#endif
#if @GNULIB_GETDELIM@
@@ -825,7 +864,9 @@ _GL_CXXALIAS_RPL (perror, void, (const char *string));
# else
_GL_CXXALIAS_SYS (perror, void, (const char *string));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (perror);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef perror
/* Assume perror is always declared. */
@@ -896,7 +937,9 @@ _GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
# else
_GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (printf);
+# endif
#endif
#if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK
# if !GNULIB_overrides_printf
@@ -919,7 +962,9 @@ _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
# else
_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (putc);
+# endif
#endif
#if @GNULIB_PUTCHAR@
@@ -933,7 +978,9 @@ _GL_CXXALIAS_RPL (putchar, int, (int c));
# else
_GL_CXXALIAS_SYS (putchar, int, (int c));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (putchar);
+# endif
#endif
#if @GNULIB_PUTS@
@@ -947,7 +994,9 @@ _GL_CXXALIAS_RPL (puts, int, (const char *string));
# else
_GL_CXXALIAS_SYS (puts, int, (const char *string));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (puts);
+# endif
#endif
#if @GNULIB_REMOVE@
@@ -961,7 +1010,9 @@ _GL_CXXALIAS_RPL (remove, int, (const char *name));
# else
_GL_CXXALIAS_SYS (remove, int, (const char *name));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (remove);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef remove
/* Assume remove is always declared. */
@@ -984,7 +1035,9 @@ _GL_CXXALIAS_RPL (rename, int,
_GL_CXXALIAS_SYS (rename, int,
(const char *old_filename, const char *new_filename));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (rename);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef rename
/* Assume rename is always declared. */
@@ -1049,7 +1102,9 @@ _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
# else
_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (scanf);
+# endif
#endif
#if @GNULIB_SNPRINTF@
@@ -1103,7 +1158,9 @@ _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
# else
_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (sprintf);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef sprintf
/* Assume sprintf is always declared. */
@@ -1122,7 +1179,9 @@ _GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
# else
_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (tmpfile);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef tmpfile
# if HAVE_RAW_DECL_TMPFILE
@@ -1200,7 +1259,9 @@ _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
_GL_CXXALIAS_SYS_CAST (vdprintf, int,
(int fd, const char *format, va_list args));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (vdprintf);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef vdprintf
# if HAVE_RAW_DECL_VDPRINTF
@@ -1233,7 +1294,9 @@ _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
_GL_CXXALIAS_SYS_CAST (vfprintf, int,
(FILE *fp, const char *format, va_list args));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (vfprintf);
+# endif
#endif
#if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
# if !GNULIB_overrides_vfprintf
@@ -1287,7 +1350,9 @@ _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
and GCC's fixincludes did not change this to __gnuc_va_list. */
_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (vprintf);
+# endif
#endif
#if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
# if !GNULIB_overrides_vprintf
@@ -1363,7 +1428,9 @@ _GL_CXXALIAS_RPL (vsprintf, int,
_GL_CXXALIAS_SYS_CAST (vsprintf, int,
(char *str, const char *format, va_list args));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (vsprintf);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef vsprintf
/* Assume vsprintf is always declared. */
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
index 441c018..49bbf6f 100644
--- a/lib/stdlib.in.h
+++ b/lib/stdlib.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <stdlib.h>.
- Copyright (C) 1995, 2001-2004, 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 1995, 2001-2004, 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -176,7 +176,9 @@ _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
# else
_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (calloc);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef calloc
/* Assume calloc is always declared. */
@@ -199,6 +201,10 @@ _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
# endif
_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
# endif
+# ifndef GNULIB_defined_canonicalize_file_name
+# define GNULIB_defined_canonicalize_file_name \
+ (!@HAVE_CANONICALIZE_FILE_NAME@ || @REPLACE_CANONICALIZE_FILE_NAME@)
+# endif
_GL_CXXALIASWARN (canonicalize_file_name);
#elif defined GNULIB_POSIXCHECK
# undef canonicalize_file_name
@@ -238,8 +244,8 @@ _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
element (or NULL if it doesn't contain an "=" sign),
- It returns the index of the "token" in the given array of tokens.
Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
- For more details see the POSIX:2001 specification.
- http://www.opengroup.org/susv3xsh/getsubopt.html */
+ For more details see the POSIX specification.
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */
# if !@HAVE_GETSUBOPT@
_GL_FUNCDECL_SYS (getsubopt, int,
(char **optionp, char *const *tokens, char **valuep)
@@ -288,7 +294,9 @@ _GL_CXXALIAS_RPL (malloc, void *, (size_t size));
# else
_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (malloc);
+# endif
#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
# undef malloc
/* Assume malloc is always declared. */
@@ -306,9 +314,20 @@ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
# else
+# if !@HAVE_MBTOWC@
+_GL_FUNCDECL_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# endif
_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mbtowc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbtowc
+# if HAVE_RAW_DECL_MBTOWC
+_GL_WARN_ON_USE (mbtowc, "mbtowc is not portable - "
+ "use gnulib module mbtowc for portability");
+# endif
#endif
#if @GNULIB_MKDTEMP@
@@ -501,6 +520,9 @@ _GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
# endif
_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
# endif
+# ifndef GNULIB_defined_ptsname_r
+# define GNULIB_defined_ptsname_r (!@HAVE_PTSNAME_R@ || @REPLACE_PTSNAME_R@)
+# endif
_GL_CXXALIASWARN (ptsname_r);
#elif defined GNULIB_POSIXCHECK
# undef ptsname_r
@@ -573,10 +595,21 @@ _GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - "
#if @GNULIB_RANDOM@
-# if !@HAVE_RANDOM@
+# if @REPLACE_RANDOM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef random
+# define random rpl_random
+# endif
+_GL_FUNCDECL_RPL (random, long, (void));
+_GL_CXXALIAS_RPL (random, long, (void));
+# else
+# if !@HAVE_RANDOM@
_GL_FUNCDECL_SYS (random, long, (void));
+# endif
+/* Need to cast, because on Haiku, the return type is
+ int. */
+_GL_CXXALIAS_SYS_CAST (random, long, (void));
# endif
-_GL_CXXALIAS_SYS (random, long, (void));
_GL_CXXALIASWARN (random);
#elif defined GNULIB_POSIXCHECK
# undef random
@@ -587,10 +620,21 @@ _GL_WARN_ON_USE (random, "random is unportable - "
#endif
#if @GNULIB_RANDOM@
-# if !@HAVE_RANDOM@
+# if @REPLACE_RANDOM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef srandom
+# define srandom rpl_srandom
+# endif
+_GL_FUNCDECL_RPL (srandom, void, (unsigned int seed));
+_GL_CXXALIAS_RPL (srandom, void, (unsigned int seed));
+# else
+# if !@HAVE_RANDOM@
_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed));
+# endif
+/* Need to cast, because on FreeBSD, the first parameter is
+ unsigned long seed. */
+_GL_CXXALIAS_SYS_CAST (srandom, void, (unsigned int seed));
# endif
-_GL_CXXALIAS_SYS (srandom, void, (unsigned int seed));
_GL_CXXALIASWARN (srandom);
#elif defined GNULIB_POSIXCHECK
# undef srandom
@@ -601,31 +645,56 @@ _GL_WARN_ON_USE (srandom, "srandom is unportable - "
#endif
#if @GNULIB_RANDOM@
-# if !@HAVE_RANDOM@ || !@HAVE_DECL_INITSTATE@
+# if @REPLACE_INITSTATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef initstate
+# define initstate rpl_initstate
+# endif
+_GL_FUNCDECL_RPL (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size));
+# else
+# if !@HAVE_INITSTATE@ || !@HAVE_DECL_INITSTATE@
_GL_FUNCDECL_SYS (initstate, char *,
(unsigned int seed, char *buf, size_t buf_size)
_GL_ARG_NONNULL ((2)));
+# endif
+/* Need to cast, because on FreeBSD, the first parameter is
+ unsigned long seed. */
+_GL_CXXALIAS_SYS_CAST (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size));
# endif
-_GL_CXXALIAS_SYS (initstate, char *,
- (unsigned int seed, char *buf, size_t buf_size));
_GL_CXXALIASWARN (initstate);
#elif defined GNULIB_POSIXCHECK
# undef initstate
-# if HAVE_RAW_DECL_INITSTATE_R
+# if HAVE_RAW_DECL_INITSTATE
_GL_WARN_ON_USE (initstate, "initstate is unportable - "
"use gnulib module random for portability");
# endif
#endif
#if @GNULIB_RANDOM@
-# if !@HAVE_RANDOM@ || !@HAVE_DECL_SETSTATE@
+# if @REPLACE_SETSTATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef setstate
+# define setstate rpl_setstate
+# endif
+_GL_FUNCDECL_RPL (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (setstate, char *, (char *arg_state));
+# else
+# if !@HAVE_SETSTATE@ || !@HAVE_DECL_SETSTATE@
_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Mac OS X 10.13, HP-UX, Solaris the first parameter
+ is const char *arg_state. */
+_GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state));
# endif
-_GL_CXXALIAS_SYS (setstate, char *, (char *arg_state));
_GL_CXXALIASWARN (setstate);
#elif defined GNULIB_POSIXCHECK
# undef setstate
-# if HAVE_RAW_DECL_SETSTATE_R
+# if HAVE_RAW_DECL_SETSTATE
_GL_WARN_ON_USE (setstate, "setstate is unportable - "
"use gnulib module random for portability");
# endif
@@ -706,9 +775,11 @@ _GL_FUNCDECL_SYS (initstate_r, int,
struct random_data *rand_state)
_GL_ARG_NONNULL ((2, 4)));
# endif
-_GL_CXXALIAS_SYS (initstate_r, int,
- (unsigned int seed, char *buf, size_t buf_size,
- struct random_data *rand_state));
+/* Need to cast, because on Haiku, the third parameter is
+ unsigned long buf_size. */
+_GL_CXXALIAS_SYS_CAST (initstate_r, int,
+ (unsigned int seed, char *buf, size_t buf_size,
+ struct random_data *rand_state));
# endif
_GL_CXXALIASWARN (initstate_r);
#elif defined GNULIB_POSIXCHECK
@@ -736,8 +807,10 @@ _GL_FUNCDECL_SYS (setstate_r, int,
(char *arg_state, struct random_data *rand_state)
_GL_ARG_NONNULL ((1, 2)));
# endif
-_GL_CXXALIAS_SYS (setstate_r, int,
- (char *arg_state, struct random_data *rand_state));
+/* Need to cast, because on Haiku, the first parameter is
+ void *arg_state. */
+_GL_CXXALIAS_SYS_CAST (setstate_r, int,
+ (char *arg_state, struct random_data *rand_state));
# endif
_GL_CXXALIASWARN (setstate_r);
#elif defined GNULIB_POSIXCHECK
@@ -761,7 +834,9 @@ _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
# else
_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (realloc);
+# endif
#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
# undef realloc
/* Assume realloc is always declared. */
@@ -881,6 +956,7 @@ _GL_WARN_ON_USE (setenv, "setenv is unportable - "
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define strtod rpl_strtod
# endif
+# define GNULIB_defined_strtod_function 1
_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp)
_GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp));
@@ -891,7 +967,9 @@ _GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp)
# endif
_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (strtod);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef strtod
# if HAVE_RAW_DECL_STRTOD
@@ -900,6 +978,32 @@ _GL_WARN_ON_USE (strtod, "strtod is unportable - "
# endif
#endif
+#if @GNULIB_STRTOLD@
+ /* Parse a 'long double' from STRING, updating ENDP if appropriate. */
+# if @REPLACE_STRTOLD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strtold rpl_strtold
+# endif
+# define GNULIB_defined_strtold_function 1
+_GL_FUNCDECL_RPL (strtold, long double, (const char *str, char **endp)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strtold, long double, (const char *str, char **endp));
+# else
+# if !@HAVE_STRTOLD@
+_GL_FUNCDECL_SYS (strtold, long double, (const char *str, char **endp)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtold, long double, (const char *str, char **endp));
+# endif
+_GL_CXXALIASWARN (strtold);
+#elif defined GNULIB_POSIXCHECK
+# undef strtold
+# if HAVE_RAW_DECL_STRTOLD
+_GL_WARN_ON_USE (strtold, "strtold is unportable - "
+ "use gnulib module strtold for portability");
+# endif
+#endif
+
#if @GNULIB_STRTOLL@
/* Parse a signed integer whose textual representation starts at STRING.
The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
@@ -1004,7 +1108,9 @@ _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
# else
_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wctomb);
+# endif
#endif
diff --git a/lib/streq.h b/lib/streq.h
index bde1b95..d06c272 100644
--- a/lib/streq.h
+++ b/lib/streq.h
@@ -1,5 +1,5 @@
/* Optimized string comparison.
- Copyright (C) 2001-2002, 2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2002, 2007, 2009-2020 Free Software Foundation, Inc.
This program 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/lib/strerror-override.c b/lib/strerror-override.c
index d3ad21e..61b7689 100644
--- a/lib/strerror-override.c
+++ b/lib/strerror-override.c
@@ -1,6 +1,6 @@
/* strerror-override.c --- POSIX compatible system error routine
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/strerror-override.h b/lib/strerror-override.h
index a96fd08..062f51c 100644
--- a/lib/strerror-override.h
+++ b/lib/strerror-override.h
@@ -1,6 +1,6 @@
/* strerror-override.h --- POSIX compatible system error routine
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/strerror.c b/lib/strerror.c
index 36397bb..1a53a8b 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -1,6 +1,6 @@
/* strerror.c --- POSIX compatible system error routine
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/string.in.h b/lib/string.in.h
index 29f4ba6..2c04e5f 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -1,6 +1,6 @@
/* A GNU-like <string.h>.
- Copyright (C) 1995-1996, 2001-2018 Free Software Foundation, Inc.
+ Copyright (C) 1995-1996, 2001-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -149,7 +149,7 @@ _GL_CXXALIAS_SYS_CAST2 (memchr,
_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
_GL_CXXALIASWARN1 (memchr, void const *,
(void const *__s, int __c, size_t __n));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (memchr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -417,7 +417,9 @@ _GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
# else
_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (strncat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef strncat
# if HAVE_RAW_DECL_STRNCAT
@@ -512,7 +514,7 @@ _GL_CXXALIAS_SYS_CAST2 (strpbrk,
_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
_GL_CXXALIASWARN1 (strpbrk, char const *,
(char const *__s, char const *__accept));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (strpbrk);
# endif
# if defined GNULIB_POSIXCHECK
@@ -614,7 +616,7 @@ _GL_CXXALIAS_SYS_CAST2 (strstr,
_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
_GL_CXXALIASWARN1 (strstr, const char *,
(const char *haystack, const char *needle));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (strstr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -693,7 +695,7 @@ _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character "
This is a variant of strtok() that is multithread-safe.
For the POSIX documentation for this function, see:
- http://www.opengroup.org/susv3xsh/strtok.html
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html
Caveat: It modifies the original string.
Caveat: These functions cannot be used on constant strings.
@@ -980,7 +982,9 @@ _GL_CXXALIAS_RPL (strerror, char *, (int));
# else
_GL_CXXALIAS_SYS (strerror, char *, (int));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (strerror);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef strerror
/* Assume strerror is always declared. */
diff --git a/lib/stripslash.c b/lib/stripslash.c
index 60c6781..6818b30 100644
--- a/lib/stripslash.c
+++ b/lib/stripslash.c
@@ -1,6 +1,6 @@
/* stripslash.c -- remove redundant trailing slashes from a file name
- Copyright (C) 1990, 2001, 2003-2006, 2009-2018 Free Software Foundation,
+ Copyright (C) 1990, 2001, 2003-2006, 2009-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/strverscmp.c b/lib/strverscmp.c
index 4eac791..9e0a5bb 100644
--- a/lib/strverscmp.c
+++ b/lib/strverscmp.c
@@ -1,5 +1,5 @@
/* Compare strings while treating digits characters numerically.
- Copyright (C) 1997-2018 Free Software Foundation, Inc.
+ Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
@@ -17,10 +17,12 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#if !_LIBC
-# include <config.h>
+#ifndef _LIBC
+# include <libc-config.h>
+# define __strverscmp strverscmp
#endif
+#include <stdint.h>
#include <string.h>
#include <ctype.h>
@@ -35,9 +37,6 @@
#define CMP 2
#define LEN 3
-#ifndef weak_alias
-# define __strverscmp strverscmp
-#endif
/* Compare S1 and S2 as strings holding indices/version numbers,
returning less than, equal to or greater than zero if S1 is less than,
@@ -49,13 +48,10 @@ __strverscmp (const char *s1, const char *s2)
{
const unsigned char *p1 = (const unsigned char *) s1;
const unsigned char *p2 = (const unsigned char *) s2;
- unsigned char c1, c2;
- int state;
- int diff;
/* Symbol(s) 0 [1-9] others
Transition (10) 0 (01) d (00) x */
- static const unsigned char next_state[] =
+ static const uint_least8_t next_state[] =
{
/* state x d 0 */
/* S_N */ S_N, S_I, S_Z,
@@ -64,7 +60,7 @@ __strverscmp (const char *s1, const char *s2)
/* S_Z */ S_N, S_F, S_Z
};
- static const signed char result_type[] =
+ static const int_least8_t result_type[] =
{
/* state x/x x/d x/0 d/x d/d d/0 0/x 0/d 0/0 */
@@ -77,15 +73,16 @@ __strverscmp (const char *s1, const char *s2)
if (p1 == p2)
return 0;
- c1 = *p1++;
- c2 = *p2++;
+ unsigned char c1 = *p1++;
+ unsigned char c2 = *p2++;
/* Hint: '0' is a digit too. */
- state = S_N + ((c1 == '0') + (isdigit (c1) != 0));
+ int state = S_N + ((c1 == '0') + (isdigit (c1) != 0));
+ int diff;
while ((diff = c1 - c2) == 0)
{
if (c1 == '\0')
- return diff;
+ return diff;
state = next_state[state];
c1 = *p1++;
@@ -96,22 +93,20 @@ __strverscmp (const char *s1, const char *s2)
state = result_type[state * 3 + (((c2 == '0') + (isdigit (c2) != 0)))];
switch (state)
- {
+ {
case CMP:
return diff;
case LEN:
while (isdigit (*p1++))
- if (!isdigit (*p2++))
- return 1;
+ if (!isdigit (*p2++))
+ return 1;
return isdigit (*p2) ? -1 : diff;
default:
return state;
- }
+ }
}
-#ifdef weak_alias
libc_hidden_def (__strverscmp)
weak_alias (__strverscmp, strverscmp)
-#endif
diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h
index 6ae6ac5..c1e3243 100644
--- a/lib/sys_stat.in.h
+++ b/lib/sys_stat.in.h
@@ -1,5 +1,5 @@
/* Provide a more complete sys/stat.h header file.
- Copyright (C) 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -54,9 +54,16 @@
/* 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>. */
+#ifdef __KLIBC__
+# include <unistd.h>
+#endif
+
/* Before doing "#define mkdir rpl_mkdir" below, we need to include all
headers that may declare mkdir(). Native Windows platforms declare mkdir
- in <io.h> and/or <direct.h>, not in <unistd.h>. */
+ in <io.h> and/or <direct.h>, not in <sys/stat.h>. */
#if defined _WIN32 && ! defined __CYGWIN__
# include <io.h> /* mingw32, mingw64 */
# include <direct.h> /* mingw64, MSVC 9 */
diff --git a/lib/sys_time.in.h b/lib/sys_time.in.h
index b4a0e49..d30b267 100644
--- a/lib/sys_time.in.h
+++ b/lib/sys_time.in.h
@@ -1,6 +1,6 @@
/* Provide a more complete sys/time.h.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,8 +112,12 @@ _GL_CXXALIASWARN (gettimeofday);
# if defined __cplusplus && defined GNULIB_NAMESPACE
namespace GNULIB_NAMESPACE {
typedef ::timeval
-#undef timeval
+# undef timeval
timeval;
+# if @REPLACE_STRUCT_TIMEVAL@
+# define timeval rpl_timeval
+ typedef ::timeval timeval;
+# endif
}
# endif
#elif defined GNULIB_POSIXCHECK
diff --git a/lib/sys_types.in.h b/lib/sys_types.in.h
index 7f8c1c4..e7e1a22 100644
--- a/lib/sys_types.in.h
+++ b/lib/sys_types.in.h
@@ -1,6 +1,6 @@
/* Provide a more complete sys/types.h.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/tempname.c b/lib/tempname.c
index da81263..0aad061 100644
--- a/lib/tempname.c
+++ b/lib/tempname.c
@@ -1,6 +1,6 @@
/* tempname.c - generate the name of a temporary file.
- Copyright (C) 1991-2003, 2005-2007, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1991-2003, 2005-2007, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/tempname.h b/lib/tempname.h
index 4020c73..abb9265 100644
--- a/lib/tempname.h
+++ b/lib/tempname.h
@@ -1,6 +1,6 @@
/* Create a temporary file or directory.
- Copyright (C) 2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/time.in.h b/lib/time.in.h
index 3128f44..3f942b7 100644
--- a/lib/time.in.h
+++ b/lib/time.in.h
@@ -1,6 +1,6 @@
/* A more-standard <time.h>.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,6 +37,12 @@
# define _@GUARD_PREFIX@_TIME_H
+/* mingw's <time.h> provides the functions asctime_r, ctime_r, gmtime_r,
+ localtime_r only if <unistd.h> or <pthread.h> has been included before. */
+# if defined __MINGW32__
+# include <unistd.h>
+# endif
+
# @INCLUDE_NEXT@ @NEXT_TIME_H@
/* NetBSD 5.0 mis-defines NULL. */
@@ -84,8 +90,8 @@ struct timespec
# endif
# if !GNULIB_defined_struct_time_t_must_be_integral
-/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires
- time_t to be an integer type, even though C99 permits floating
+/* https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
+ requires time_t to be an integer type, even though C99 permits floating
point. We don't know of any implementation that uses floating
point, and it is much easier to write code that doesn't have to
worry about that corner case, so we force the issue. */
@@ -97,7 +103,7 @@ struct __time_t_must_be_integral {
/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
return -1 and store the remaining time into RMTP. See
- <http://www.opengroup.org/susv3xsh/nanosleep.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html>. */
# if @GNULIB_NANOSLEEP@
# if @REPLACE_NANOSLEEP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -149,12 +155,14 @@ _GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp));
# else
_GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mktime);
+# endif
# endif
/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
- <http://www.opengroup.org/susv3xsh/localtime_r.html> and
- <http://www.opengroup.org/susv3xsh/gmtime_r.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime_r.html> and
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/gmtime_r.html>. */
# if @GNULIB_TIME_R@
# if @REPLACE_LOCALTIME_R@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -203,8 +211,8 @@ _GL_CXXALIASWARN (gmtime_r);
# endif
/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
- <http://www.opengroup.org/susv3xsh/localtime.html> and
- <http://www.opengroup.org/susv3xsh/gmtime.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime.html> and
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/gmtime.html>. */
# if @GNULIB_LOCALTIME@ || @REPLACE_LOCALTIME@
# if @REPLACE_LOCALTIME@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -217,7 +225,9 @@ _GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer));
# else
_GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (localtime);
+# endif
# endif
# if 0 || @REPLACE_GMTIME@
@@ -237,7 +247,7 @@ _GL_CXXALIASWARN (gmtime);
/* Parse BUF as a timestamp, assuming FORMAT specifies its layout, and store
the resulting broken-down time into TM. See
- <http://www.opengroup.org/susv3xsh/strptime.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/strptime.html>. */
# if @GNULIB_STRPTIME@
# if ! @HAVE_STRPTIME@
_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf,
@@ -252,7 +262,7 @@ _GL_CXXALIASWARN (strptime);
# endif
/* Convert *TP to a date and time string. See
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ctime.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/ctime.html>. */
# if @GNULIB_CTIME@
# if @REPLACE_CTIME@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -264,11 +274,13 @@ _GL_CXXALIAS_RPL (ctime, char *, (time_t const *__tp));
# else
_GL_CXXALIAS_SYS (ctime, char *, (time_t const *__tp));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (ctime);
+# endif
# endif
/* Convert *TP to a date and time string. See
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html>. */
# if @GNULIB_STRFTIME@
# if @REPLACE_STRFTIME@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -283,7 +295,9 @@ _GL_CXXALIAS_RPL (strftime, size_t, (char *__buf, size_t __bufsize,
_GL_CXXALIAS_SYS (strftime, size_t, (char *__buf, size_t __bufsize,
const char *__fmt, const struct tm *__tp));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (strftime);
+# endif
# endif
# if defined _GNU_SOURCE && @GNULIB_TIME_RZ@ && ! @HAVE_TIMEZONE_T@
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
index 66f254d..d6176ad 100644
--- a/lib/unistd.in.h
+++ b/lib/unistd.in.h
@@ -1,5 +1,5 @@
/* Substitute for and wrapper around <unistd.h>.
- Copyright (C) 2003-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2020 Free Software Foundation, Inc.
This 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 @@
#endif
@PRAGMA_COLUMNS@
-#ifdef _GL_INCLUDING_UNISTD_H
+#if @HAVE_UNISTD_H@ && defined _GL_INCLUDING_UNISTD_H
/* Special invocation convention:
- On Mac OS X 10.3.9 we have a sequence of nested includes
<unistd.h> -> <signal.h> -> <pthread.h> -> <unistd.h>
@@ -52,7 +52,10 @@
#define _@GUARD_PREFIX@_UNISTD_H
/* NetBSD 5.0 mis-defines NULL. Also get size_t. */
-#include <stddef.h>
+/* But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+# include <stddef.h>
+#endif
/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */
/* MSVC declares 'unlink' in <stdio.h>, not in <unistd.h>. We must include
@@ -68,9 +71,11 @@
# include <stdio.h>
#endif
-/* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */
+/* Cygwin 1.7.1 and Android 4.3 declare unlinkat in <fcntl.h>, not in
+ <unistd.h>. */
/* But avoid namespace pollution on glibc systems. */
-#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \
+#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) \
+ && (defined __CYGWIN__ || defined __ANDROID__) \
&& ! defined __GLIBC__
# include <fcntl.h>
#endif
@@ -113,17 +118,18 @@
# include <netdb.h>
#endif
-/* MSVC defines off_t in <sys/types.h>.
- May also define off_t to a 64-bit type on native Windows. */
-#if !@HAVE_UNISTD_H@ || @WINDOWS_64_BIT_OFF_T@
-/* Get off_t. */
-# include <sys/types.h>
+/* Android 4.3 declares fchownat in <sys/stat.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (@GNULIB_FCHOWNAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
+ && !defined __GLIBC__
+# include <sys/stat.h>
#endif
-#if (@GNULIB_READ@ || @GNULIB_WRITE@ \
- || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \
- || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK)
-/* Get ssize_t. */
+/* MSVC defines off_t in <sys/types.h>.
+ May also define off_t to a 64-bit type on native Windows. */
+/* But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+/* Get off_t, ssize_t. */
# include <sys/types.h>
#endif
@@ -135,7 +141,7 @@
/* Get getopt(), optarg, optind, opterr, optopt. */
-#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT
+#if @GNULIB_GETOPT_POSIX@ && @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT
# include <getopt-cdefs.h>
# include <getopt-pfx-core.h>
#endif
@@ -247,10 +253,28 @@ _GL_INLINE_HEADER_BEGIN
/* Declare overridden functions. */
-#if defined GNULIB_POSIXCHECK
+#if @GNULIB_ACCESS@
+# if @REPLACE_ACCESS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef access
+# define access rpl_access
+# endif
+_GL_FUNCDECL_RPL (access, int, (const char *file, int mode)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (access, int, (const char *file, int mode));
+# else
+_GL_CXXALIAS_SYS (access, int, (const char *file, int mode));
+# endif
+_GL_CXXALIASWARN (access);
+#elif defined GNULIB_POSIXCHECK
+# undef access
+# if HAVE_RAW_DECL_ACCESS
/* The access() function is a security risk. */
-_GL_WARN_ON_USE (access, "the access function is a security risk - "
+_GL_WARN_ON_USE (access, "access does not always support X_OK - "
+ "use gnulib module access for portability; "
+ "also, this function is a security risk - "
"use the gnulib module faccessat instead");
+# endif
#endif
@@ -271,7 +295,7 @@ _GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
to GID (if GID is not -1). Follow symbolic links.
Return 0 if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html. */
# if @REPLACE_CHOWN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef chown
@@ -322,6 +346,24 @@ _GL_WARN_ON_USE (close, "close does not portably work on sockets - "
#endif
+#if @GNULIB_COPY_FILE_RANGE@
+# if !@HAVE_COPY_FILE_RANGE@
+_GL_FUNCDECL_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
+ int ofd, off_t *opos,
+ size_t len, unsigned flags));
+_GL_CXXALIAS_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
+ int ofd, off_t *opos,
+ size_t len, unsigned flags));
+# endif
+_GL_CXXALIASWARN (copy_file_range);
+#elif defined GNULIB_POSIXCHECK
+/* Assume copy_file_range is always declared. */
+_GL_WARN_ON_USE (copy_file_range,
+ "copy_file_range is unportable - "
+ "use gnulib module copy_file_range for portability");
+#endif
+
+
#if @GNULIB_DUP@
# if @REPLACE_DUP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -347,7 +389,7 @@ _GL_WARN_ON_USE (dup, "dup is unportable - "
NEWFD = OLDFD, otherwise close NEWFD first if it is open.
Return newfd if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>. */
# if @REPLACE_DUP2@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define dup2 rpl_dup2
@@ -502,7 +544,7 @@ _GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
the given file descriptor is open.
Return 0 if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>. */
# if ! @HAVE_FCHDIR@
_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
@@ -563,7 +605,7 @@ _GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
/* Synchronize changes to a file.
Return 0 if successful, otherwise -1 and errno set.
See POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@
_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
# endif
@@ -582,7 +624,7 @@ _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
/* Synchronize changes, including metadata, to a file.
Return 0 if successful, otherwise -1 and errno set.
See POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>. */
# if !@HAVE_FSYNC@
_GL_FUNCDECL_SYS (fsync, int, (int fd));
# endif
@@ -601,7 +643,7 @@ _GL_WARN_ON_USE (fsync, "fsync is unportable - "
/* Change the size of the file to which FD is opened to become equal to LENGTH.
Return 0 if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>. */
# if @REPLACE_FTRUNCATE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef ftruncate
@@ -631,7 +673,7 @@ _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
Return BUF if successful, or NULL if the directory couldn't be determined
or SIZE was too small.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
Additionally, the gnulib module 'getcwd' guarantees the following GNU
extension: If BUF is NULL, an array is allocated with 'malloc'; the array
is SIZE bytes long, unless SIZE == 0, in which case it is as big as
@@ -707,7 +749,9 @@ _GL_CXXALIAS_RPL (getdtablesize, int, (void));
# if !@HAVE_GETDTABLESIZE@
_GL_FUNCDECL_SYS (getdtablesize, int, (void));
# endif
-_GL_CXXALIAS_SYS (getdtablesize, int, (void));
+/* Need to cast, because on AIX, the parameter list is
+ (...). */
+_GL_CXXALIAS_SYS_CAST (getdtablesize, int, (void));
# endif
_GL_CXXALIASWARN (getdtablesize);
#elif defined GNULIB_POSIXCHECK
@@ -791,7 +835,7 @@ _GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
/* Returns the user's login name, or NULL if it cannot be found. Upon error,
returns NULL with errno set.
- See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+ See <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
Most programs don't need to use this function, because the information is
available through environment variables:
@@ -820,7 +864,7 @@ _GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
the case that the login name cannot be found but no specific error is
provided (this case is hopefully rare but is left open by the POSIX spec).
- See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+ See <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
Most programs don't need to use this function, because the information is
available through environment variables:
@@ -861,6 +905,11 @@ _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
_GL_FUNCDECL_RPL (getpagesize, int, (void));
_GL_CXXALIAS_RPL (getpagesize, int, (void));
# else
+/* On HP-UX, getpagesize exists, but it is not declared in <unistd.h> even if
+ the compiler options -D_HPUX_SOURCE -D_XOPEN_SOURCE=600 are used. */
+# if defined __hpux
+_GL_FUNCDECL_SYS (getpagesize, int, (void));
+# endif
# if !@HAVE_GETPAGESIZE@
# if !defined getpagesize
/* This is for POSIX systems. */
@@ -1055,7 +1104,7 @@ _GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - "
to GID (if GID is not -1). Do not follow symbolic links.
Return 0 if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>. */
# if @REPLACE_LCHOWN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef lchown
@@ -1085,7 +1134,7 @@ _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
/* Create a new hard link for an existing file.
Return 0 if successful, otherwise -1 and errno set.
See POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>. */
# if @REPLACE_LINK@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define link rpl_link
@@ -1151,7 +1200,7 @@ _GL_WARN_ON_USE (linkat, "linkat is unportable - "
/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
Return the new offset if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
# if @REPLACE_LSEEK@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define lseek rpl_lseek
@@ -1223,7 +1272,7 @@ _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
Return the number of bytes placed into BUF if successful, otherwise
set errno and return -1. 0 indicates EOF.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>. */
# if @REPLACE_PREAD@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef pread
@@ -1258,7 +1307,7 @@ _GL_WARN_ON_USE (pread, "pread is unportable - "
Return the number of bytes written if successful, otherwise
set errno and return -1. 0 indicates nothing written. See the
POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>. */
# if @REPLACE_PWRITE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef pwrite
@@ -1291,7 +1340,7 @@ _GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
#if @GNULIB_READ@
/* Read up to COUNT bytes from file descriptor FD into the buffer starting
at BUF. See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>. */
# if @REPLACE_READ@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef read
@@ -1315,7 +1364,7 @@ _GL_CXXALIASWARN (read);
bytes of it into BUF. Return the number of bytes placed into BUF if
successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>. */
# if @REPLACE_READLINK@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define readlink rpl_readlink
@@ -1425,7 +1474,7 @@ _GL_WARN_ON_USE (sethostname, "sethostname is unportable - "
/* Pause the execution of the current thread for N seconds.
Returns the number of seconds left to sleep.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>. */
# if @REPLACE_SLEEP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef sleep
@@ -1509,7 +1558,7 @@ _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
/* Change the size of the file designated by FILENAME to become equal to LENGTH.
Return 0 if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html>. */
# if @REPLACE_TRUNCATE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef truncate
@@ -1616,7 +1665,7 @@ _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
/* Pause the execution of the current thread for N microseconds.
Returns 0 on completion, or -1 on range error.
See the POSIX:2001 specification
- <http://www.opengroup.org/susv3xsh/usleep.html>. */
+ <https://pubs.opengroup.org/onlinepubs/009695399/functions/usleep.html>. */
# if @REPLACE_USLEEP@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef usleep
@@ -1628,7 +1677,9 @@ _GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
# if !@HAVE_USLEEP@
_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
# endif
-_GL_CXXALIAS_SYS (usleep, int, (useconds_t n));
+/* Need to cast, because on Haiku, the first parameter is
+ unsigned int n. */
+_GL_CXXALIAS_SYS_CAST (usleep, int, (useconds_t n));
# endif
_GL_CXXALIASWARN (usleep);
#elif defined GNULIB_POSIXCHECK
@@ -1643,7 +1694,7 @@ _GL_WARN_ON_USE (usleep, "usleep is unportable - "
#if @GNULIB_WRITE@
/* Write up to COUNT bytes starting at BUF to file descriptor FD.
See the POSIX:2008 specification
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>. */
# if @REPLACE_WRITE@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef write
diff --git a/lib/unlocked-io.h b/lib/unlocked-io.h
index e3f0fcf..e7f7199 100644
--- a/lib/unlocked-io.h
+++ b/lib/unlocked-io.h
@@ -1,6 +1,6 @@
/* Prefer faster, non-thread-safe stdio functions if available.
- Copyright (C) 2001-2004, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2001-2004, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/unused-parameter.h b/lib/unused-parameter.h
index 40a0ff8..f5cf21e 100644
--- a/lib/unused-parameter.h
+++ b/lib/unused-parameter.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that specific function parameters are not used.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This program 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/lib/verify.h b/lib/verify.h
index 3b57dde..d9ab89a 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -1,6 +1,6 @@
/* Compile-time assert-like macros.
- Copyright (C) 2005-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2006, 2009-2020 Free Software Foundation, Inc.
This 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,31 +21,37 @@
#define _GL_VERIFY_H
-/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11.
- This is supported by GCC 4.6.0 and later, in C mode, and its use
- here generates easier-to-read diagnostics when verify (R) fails.
+/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert (R, DIAGNOSTIC)
+ works as per C11. This is supported by GCC 4.6.0 and later, in C
+ mode.
- Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11.
- This will likely be supported by future GCC versions, in C++ mode.
+ Define _GL_HAVE__STATIC_ASSERT1 to 1 if _Static_assert (R) works as
+ per C2X, and define _GL_HAVE_STATIC_ASSERT1 if static_assert (R)
+ works as per C++17. This is supported by GCC 9.1 and later.
- Use this only with GCC. If we were willing to slow 'configure'
- down we could also use it with other compilers, but since this
- affects only the quality of diagnostics, why bother? */
-#if (4 < __GNUC__ + (6 <= __GNUC_MINOR__) \
- && (201112L <= __STDC_VERSION__ || !defined __STRICT_ANSI__) \
- && !defined __cplusplus)
-# define _GL_HAVE__STATIC_ASSERT 1
-#endif
-/* The condition (99 < __GNUC__) is temporary, until we know about the
- first G++ release that supports static_assert. */
-#if (99 < __GNUC__) && defined __cplusplus
-# define _GL_HAVE_STATIC_ASSERT 1
+ Support compilers claiming conformance to the relevant standard,
+ and also support GCC when not pedantic. If we were willing to slow
+ 'configure' down we could also use it with other compilers, but
+ since this affects only the quality of diagnostics, why bother? */
+#ifndef __cplusplus
+# if (201112L <= __STDC_VERSION__ \
+ || (!defined __STRICT_ANSI__ && 4 < __GNUC__ + (6 <= __GNUC_MINOR__)))
+# define _GL_HAVE__STATIC_ASSERT 1
+# endif
+# if (202000L <= __STDC_VERSION__ \
+ || (!defined __STRICT_ANSI__ && 9 <= __GNUC__))
+# define _GL_HAVE__STATIC_ASSERT1 1
+# endif
+#else
+# if 201703L <= __cplusplus || 9 <= __GNUC__
+# define _GL_HAVE_STATIC_ASSERT1 1
+# endif
#endif
/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
system headers, defines a conflicting _Static_assert that is no
better than ours; override it. */
-#ifndef _GL_HAVE_STATIC_ASSERT
+#ifndef _GL_HAVE__STATIC_ASSERT
# include <stddef.h>
# undef _Static_assert
#endif
@@ -143,9 +149,9 @@
which do not support _Static_assert, also do not warn about the
last declaration mentioned above.
- * GCC warns if -Wnested-externs is enabled and verify() is used
+ * GCC warns if -Wnested-externs is enabled and 'verify' is used
within a function body; but inside a function, you can always
- arrange to use verify_expr() instead.
+ arrange to use verify_expr instead.
* In C++, any struct definition inside sizeof is invalid.
Use a template type to work around the problem. */
@@ -197,48 +203,61 @@ template <int w>
#endif
/* Verify requirement R at compile-time, as a declaration without a
- trailing ';'. If R is false, fail at compile-time, preferably
- with a diagnostic that includes the string-literal DIAGNOSTIC.
+ trailing ';'. If R is false, fail at compile-time.
+
+ This macro requires three or more arguments but uses at most the first
+ two, so that the _Static_assert macro optionally defined below supports
+ both the C11 two-argument syntax and the C2X one-argument syntax.
Unfortunately, unlike C11, this implementation must appear as an
ordinary declaration, and cannot appear inside struct { ... }. */
-#ifdef _GL_HAVE__STATIC_ASSERT
-# define _GL_VERIFY _Static_assert
+#if defined _GL_HAVE__STATIC_ASSERT
+# define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC)
#else
-# define _GL_VERIFY(R, DIAGNOSTIC) \
+# define _GL_VERIFY(R, DIAGNOSTIC, ...) \
extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
[_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
#endif
/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
#ifdef _GL_STATIC_ASSERT_H
-# if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert
-# define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC)
+# if !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert
+# define _Static_assert(...) \
+ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -)
# endif
-# if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert
+# if !defined _GL_HAVE_STATIC_ASSERT1 && !defined static_assert
# define static_assert _Static_assert /* C11 requires this #define. */
# endif
#endif
/* @assert.h omit start@ */
+#if 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)
+#else
+# 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
+#endif
+
/* Each of these macros verifies that its argument R is nonzero. To
be portable, R should be an integer constant expression. Unlike
assert (R), there is no run-time overhead.
There are two macros, since no single macro can be used in all
- contexts in C. verify_true (R) is for scalar contexts, including
+ contexts in C. verify_expr (R, E) is for scalar contexts, including
integer constant expression contexts. verify (R) is for declaration
contexts, e.g., the top level. */
-/* Verify requirement R at compile-time, as an integer constant expression.
- Return 1. This is equivalent to verify_expr (R, 1).
-
- verify_true is obsolescent; please use verify_expr instead. */
-
-#define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
-
/* Verify requirement R at compile-time. Return the value of the
expression E. */
@@ -246,31 +265,28 @@ template <int w>
(_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E))
/* Verify requirement R at compile-time, as a declaration without a
- trailing ';'. */
+ trailing ';'. verify (R) acts like static_assert (R) except that
+ it is portable to C11/C++14 and earlier, it can issue better
+ diagnostics, and its name is shorter and may be more convenient. */
-#ifdef __GNUC__
-# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+#ifdef __PGI
+/* PGI barfs if R is long. */
+# define verify(R) _GL_VERIFY (R, "verify (...)", -)
#else
-/* PGI barfs if R is long. Play it safe. */
-# define verify(R) _GL_VERIFY (R, "verify (...)")
-#endif
-
-#ifndef __has_builtin
-# define __has_builtin(x) 0
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")", -)
#endif
-/* Assume that R always holds. This lets the compiler optimize
- accordingly. R should not have side-effects; it may or may not be
- evaluated. Behavior is undefined if R is false. */
+/* Assume that R always holds. Behavior is undefined if R is false,
+ fails to evaluate, or has side effects. Although assuming R can
+ help a compiler generate better code or diagnostics, performance
+ can suffer if R uses hard-to-optimize features such as function
+ calls not inlined by the compiler. */
-#if (__has_builtin (__builtin_unreachable) \
- || 4 < __GNUC__ + (5 <= __GNUC_MINOR__))
+#if _GL_HAS_BUILTIN_UNREACHABLE
# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
#elif 1200 <= _MSC_VER
# define assume(R) __assume (R)
-#elif ((defined GCC_LINT || defined lint) \
- && (__has_builtin (__builtin_trap) \
- || 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))))
+#elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP
/* Doing it this way helps various packages when configured with
--enable-gcc-warnings, which compiles with -Dlint. It's nicer
when 'assume' silences warnings even with older GCCs. */
diff --git a/lib/version-etc-fsf.c b/lib/version-etc-fsf.c
index 098a634..20fa0d0 100644
--- a/lib/version-etc-fsf.c
+++ b/lib/version-etc-fsf.c
@@ -1,5 +1,5 @@
/* Variable with FSF copyright information, for version-etc.
- Copyright (C) 1999-2006, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2006, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/version-etc.c b/lib/version-etc.c
index dfec8ad..506f017 100644
--- a/lib/version-etc.c
+++ b/lib/version-etc.c
@@ -1,5 +1,5 @@
/* Print --version and bug-reporting information in a consistent format.
- Copyright (C) 1999-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This 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,7 +37,7 @@
# define PACKAGE PACKAGE_TARNAME
#endif
-enum { COPYRIGHT_YEAR = 2018 };
+enum { COPYRIGHT_YEAR = 2020 };
/* The three functions below display the --version information the
standard way.
@@ -82,14 +82,17 @@ version_etc_arn (FILE *stream,
locale. Otherwise, do not translate "(C)"; leave it as-is. */
fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR);
- fputs (_("\
-\n\
-License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.\n\
+ fputs ("\n", stream);
+
+ /* TRANSLATORS: The %s placeholder is the web address of the GPL license. */
+ fprintf (stream, _("\
+License GPLv3+: GNU GPL version 3 or later <%s>.\n\
This is free software: you are free to change and redistribute it.\n\
There is NO WARRANTY, to the extent permitted by law.\n\
-\n\
"),
- stream);
+ "https://gnu.org/licenses/gpl.html");
+
+ fputs ("\n", stream);
switch (n_authors)
{
@@ -238,11 +241,12 @@ version_etc (FILE *stream,
void
emit_bug_reporting_address (void)
{
+ fputs ("\n", stdout);
/* TRANSLATORS: The placeholder indicates the bug-reporting address
for this package. Please add _another line_ saying
"Report translation bugs to <...>\n" with the address for translation
bugs (typically your translation team's web or email address). */
- printf (_("\nReport bugs to: %s\n"), PACKAGE_BUGREPORT);
+ printf (_("Report bugs to: %s\n"), PACKAGE_BUGREPORT);
#ifdef PACKAGE_PACKAGER_BUG_REPORTS
printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER,
PACKAGE_PACKAGER_BUG_REPORTS);
@@ -250,9 +254,9 @@ emit_bug_reporting_address (void)
#ifdef PACKAGE_URL
printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
#else
- printf (_("%s home page: <https://www.gnu.org/software/%s/>\n"),
- PACKAGE_NAME, PACKAGE);
+ printf (_("%s home page: <%s>\n"),
+ PACKAGE_NAME, "https://www.gnu.org/software/" PACKAGE "/");
#endif
- fputs (_("General help using GNU software: <https://www.gnu.org/gethelp/>\n"),
- stdout);
+ printf (_("General help using GNU software: <%s>\n"),
+ "https://www.gnu.org/gethelp/");
}
diff --git a/lib/version-etc.h b/lib/version-etc.h
index 3b06bf9..73cad56 100644
--- a/lib/version-etc.h
+++ b/lib/version-etc.h
@@ -1,5 +1,5 @@
/* Print --version and bug-reporting information in a consistent format.
- Copyright (C) 1999, 2003, 2005, 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2003, 2005, 2009-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/warn-on-use.h b/lib/warn-on-use.h
index 72d67cc..1be2cbb 100644
--- a/lib/warn-on-use.h
+++ b/lib/warn-on-use.h
@@ -1,5 +1,5 @@
/* A C macro for emitting warnings if a function is used.
- Copyright (C) 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This program 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/lib/wchar.in.h b/lib/wchar.in.h
index 51a5dda..63a02a4 100644
--- a/lib/wchar.in.h
+++ b/lib/wchar.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
- Copyright (C) 2007-2018 Free Software Foundation, Inc.
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
This 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,7 +19,7 @@
/*
* ISO C 99 <wchar.h> for platforms that have issues.
- * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html>
*
* For now, this just ensures proper prerequisite inclusion order and
* the declaration of wcwidth().
@@ -33,7 +33,8 @@
#if (((defined __need_mbstate_t || defined __need_wint_t) \
&& !defined __MINGW32__) \
|| (defined __hpux \
- && ((defined _INTTYPES_INCLUDED && !defined strtoimax) \
+ && ((defined _INTTYPES_INCLUDED \
+ && !defined _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H) \
|| defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) \
|| (defined __MINGW32__ && defined __STRING_H_SOURCED__) \
|| defined _GL_ALREADY_INCLUDING_WCHAR_H)
@@ -137,12 +138,16 @@ typedef unsigned int rpl_wint_t;
/* Override mbstate_t if it is too small.
On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
- implementing mbrtowc for encodings like UTF-8. */
-#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+ implementing mbrtowc for encodings like UTF-8.
+ On AIX and MSVC, mbrtowc needs to be overridden, but mbstate_t exists and is
+ large enough and overriding it would cause problems in C++ mode. */
+#if !(((defined _WIN32 && !defined __CYGWIN__) || @HAVE_MBSINIT@) && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
# if !GNULIB_defined_mbstate_t
+# if !(defined _AIX || defined _MSC_VER)
typedef int rpl_mbstate_t;
-# undef mbstate_t
-# define mbstate_t rpl_mbstate_t
+# undef mbstate_t
+# define mbstate_t rpl_mbstate_t
+# endif
# define GNULIB_defined_mbstate_t 1
# endif
#endif
@@ -161,9 +166,12 @@ _GL_CXXALIAS_RPL (btowc, wint_t, (int c));
# if !@HAVE_BTOWC@
_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
# endif
-_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
+/* Need to cast, because on mingw, the return type is 'unsigned short'. */
+_GL_CXXALIAS_SYS_CAST (btowc, wint_t, (int c));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (btowc);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef btowc
# if HAVE_RAW_DECL_BTOWC
@@ -189,7 +197,9 @@ _GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wctob);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wctob
# if HAVE_RAW_DECL_WCTOB
@@ -214,7 +224,9 @@ _GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
# endif
_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mbsinit);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mbsinit
# if HAVE_RAW_DECL_MBSINIT
@@ -243,7 +255,9 @@ _GL_FUNCDECL_SYS (mbrtowc, size_t,
_GL_CXXALIAS_SYS (mbrtowc, size_t,
(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mbrtowc);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mbrtowc
# if HAVE_RAW_DECL_MBRTOWC
@@ -268,7 +282,9 @@ _GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
# endif
_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mbrlen);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mbrlen
# if HAVE_RAW_DECL_MBRLEN
@@ -301,7 +317,9 @@ _GL_CXXALIAS_SYS (mbsrtowcs, size_t,
(wchar_t *dest, const char **srcp, size_t len,
mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mbsrtowcs);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mbsrtowcs
# if HAVE_RAW_DECL_MBSRTOWCS
@@ -361,7 +379,9 @@ _GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
# endif
_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcrtomb);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcrtomb
# if HAVE_RAW_DECL_WCRTOMB
@@ -394,7 +414,9 @@ _GL_CXXALIAS_SYS (wcsrtombs, size_t,
(char *dest, const wchar_t **srcp, size_t len,
mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsrtombs);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsrtombs
# if HAVE_RAW_DECL_WCSRTOMBS
@@ -419,7 +441,7 @@ _GL_CXXALIAS_RPL (wcsnrtombs, size_t,
(char *dest, const wchar_t **srcp, size_t srclen, size_t len,
mbstate_t *ps));
# else
-# if !@HAVE_WCSNRTOMBS@
+# if !@HAVE_WCSNRTOMBS@ || (defined __cplusplus && defined __sun)
_GL_FUNCDECL_SYS (wcsnrtombs, size_t,
(char *dest, const wchar_t **srcp, size_t srclen, size_t len,
mbstate_t *ps)
@@ -429,7 +451,9 @@ _GL_CXXALIAS_SYS (wcsnrtombs, size_t,
(char *dest, const wchar_t **srcp, size_t srclen, size_t len,
mbstate_t *ps));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsnrtombs);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsnrtombs
# if HAVE_RAW_DECL_WCSNRTOMBS
@@ -455,7 +479,9 @@ _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcwidth);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcwidth
# if HAVE_RAW_DECL_WCWIDTH
@@ -484,7 +510,7 @@ _GL_CXXALIAS_SYS_CAST2 (wmemchr,
_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
(const wchar_t *s, wchar_t c, size_t n));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (wmemchr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -505,7 +531,9 @@ _GL_FUNCDECL_SYS (wmemcmp, int,
# endif
_GL_CXXALIAS_SYS (wmemcmp, int,
(const wchar_t *s1, const wchar_t *s2, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wmemcmp);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wmemcmp
# if HAVE_RAW_DECL_WMEMCMP
@@ -523,7 +551,9 @@ _GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
# endif
_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
(wchar_t *dest, const wchar_t *src, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wmemcpy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wmemcpy
# if HAVE_RAW_DECL_WMEMCPY
@@ -542,7 +572,9 @@ _GL_FUNCDECL_SYS (wmemmove, wchar_t *,
# endif
_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
(wchar_t *dest, const wchar_t *src, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wmemmove);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wmemmove
# if HAVE_RAW_DECL_WMEMMOVE
@@ -558,7 +590,9 @@ _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
# endif
_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wmemset);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wmemset
# if HAVE_RAW_DECL_WMEMSET
@@ -574,7 +608,9 @@ _GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcslen);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcslen
# if HAVE_RAW_DECL_WCSLEN
@@ -607,7 +643,9 @@ _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
# endif
_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcscpy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcscpy
# if HAVE_RAW_DECL_WCSCPY
@@ -641,7 +679,9 @@ _GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
# endif
_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
(wchar_t *dest, const wchar_t *src, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsncpy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsncpy
# if HAVE_RAW_DECL_WCSNCPY
@@ -676,7 +716,9 @@ _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
# endif
_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcscat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcscat
# if HAVE_RAW_DECL_WCSCAT
@@ -694,7 +736,9 @@ _GL_FUNCDECL_SYS (wcsncat, wchar_t *,
# endif
_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
(wchar_t *dest, const wchar_t *src, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsncat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsncat
# if HAVE_RAW_DECL_WCSNCAT
@@ -711,7 +755,9 @@ _GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
_GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcscmp);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcscmp
# if HAVE_RAW_DECL_WCSCMP
@@ -730,7 +776,9 @@ _GL_FUNCDECL_SYS (wcsncmp, int,
# endif
_GL_CXXALIAS_SYS (wcsncmp, int,
(const wchar_t *s1, const wchar_t *s2, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsncmp);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsncmp
# if HAVE_RAW_DECL_WCSNCMP
@@ -783,7 +831,9 @@ _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
# endif
_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcscoll);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcscoll
# if HAVE_RAW_DECL_WCSCOLL
@@ -801,7 +851,9 @@ _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
# endif
_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsxfrm);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsxfrm
# if HAVE_RAW_DECL_WCSXFRM
@@ -845,7 +897,7 @@ _GL_CXXALIAS_SYS_CAST2 (wcschr,
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (wcschr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -875,7 +927,7 @@ _GL_CXXALIAS_SYS_CAST2 (wcsrchr,
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsrchr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -895,7 +947,9 @@ _GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
_GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcscspn);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcscspn
# if HAVE_RAW_DECL_WCSCSPN
@@ -913,7 +967,9 @@ _GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
_GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsspn);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsspn
# if HAVE_RAW_DECL_WCSSPN
@@ -944,7 +1000,7 @@ _GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
(wchar_t *wcs, const wchar_t *accept));
_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
(const wchar_t *wcs, const wchar_t *accept));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (wcspbrk);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -977,7 +1033,7 @@ _GL_CXXALIASWARN1 (wcsstr, wchar_t *,
(wchar_t *haystack, const wchar_t *needle));
_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
(const wchar_t *haystack, const wchar_t *needle));
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsstr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -991,13 +1047,26 @@ _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
/* Divide WCS into tokens separated by characters in DELIM. */
#if @GNULIB_WCSTOK@
-# if !@HAVE_WCSTOK@
+# if @REPLACE_WCSTOK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef wcstok
+# define wcstok rpl_wcstok
+# endif
+_GL_FUNCDECL_RPL (wcstok, wchar_t *,
+ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+_GL_CXXALIAS_RPL (wcstok, wchar_t *,
+ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+# else
+# if !@HAVE_WCSTOK@
_GL_FUNCDECL_SYS (wcstok, wchar_t *,
(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
-# endif
+# endif
_GL_CXXALIAS_SYS (wcstok, wchar_t *,
(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcstok);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcstok
# if HAVE_RAW_DECL_WCSTOK
@@ -1025,7 +1094,9 @@ _GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
# endif
_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcswidth);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcswidth
# if HAVE_RAW_DECL_WCSWIDTH
@@ -1036,7 +1107,7 @@ _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
/* Convert *TP to a date and time wide string. See
- <http://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>. */
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>. */
#if @GNULIB_WCSFTIME@
# if @REPLACE_WCSFTIME@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -1057,7 +1128,9 @@ _GL_FUNCDECL_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
_GL_CXXALIAS_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
const wchar_t *__fmt, const struct tm *__tp));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wcsftime);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wcsftime
# if HAVE_RAW_DECL_WCSFTIME
diff --git a/lib/wcrtomb.c b/lib/wcrtomb.c
index 8f01972..06105f1 100644
--- a/lib/wcrtomb.c
+++ b/lib/wcrtomb.c
@@ -1,5 +1,5 @@
/* Convert wide character to multibyte character.
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
@@ -26,20 +26,46 @@
size_t
wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
+#undef wcrtomb
{
- /* This implementation of wcrtomb on top of wctomb() supports only
- stateless encodings. ps must be in the initial state. */
+ /* This implementation of wcrtomb supports only stateless encodings.
+ ps must be in the initial state. */
if (ps != NULL && !mbsinit (ps))
{
errno = EINVAL;
return (size_t)(-1);
}
+#if !HAVE_WCRTOMB /* IRIX 6.5 */ \
+ || WCRTOMB_RETVAL_BUG /* Solaris 11.3, MSVC */ \
+ || WCRTOMB_C_LOCALE_BUG /* Android */
if (s == NULL)
/* We know the NUL wide character corresponds to the NUL character. */
return 1;
else
+#endif
{
+#if HAVE_WCRTOMB
+# if WCRTOMB_C_LOCALE_BUG /* Android */
+ /* Implement consistently with mbrtowc(): through a 1:1 correspondence,
+ as in ISO-8859-1. */
+ if (wc >= 0 && wc <= 0xff)
+ {
+ *s = (unsigned char) wc;
+ return 1;
+ }
+ else
+ {
+ errno = EILSEQ;
+ return (size_t)(-1);
+ }
+# else
+ return wcrtomb (s, wc, ps);
+# endif
+#else /* IRIX 6.5 */
+ /* Fallback for platforms that don't have wcrtomb().
+ Implement on top of wctomb().
+ This code is not multithread-safe. */
int ret = wctomb (s, wc);
if (ret >= 0)
@@ -49,5 +75,6 @@ wcrtomb (char *s, wchar_t wc, mbstate_t *ps)
errno = EILSEQ;
return (size_t)(-1);
}
+#endif
}
}
diff --git a/lib/wctob.c b/lib/wctob.c
index 070f97a..7d08863 100644
--- a/lib/wctob.c
+++ b/lib/wctob.c
@@ -1,5 +1,5 @@
/* Convert wide character to unibyte character.
- Copyright (C) 2008, 2010-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/wctomb-impl.h b/lib/wctomb-impl.h
index 58c3c0c..cca56bb 100644
--- a/lib/wctomb-impl.h
+++ b/lib/wctomb-impl.h
@@ -1,5 +1,5 @@
/* Convert wide character to multibyte character.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/wctomb.c b/lib/wctomb.c
index 47addc4..55ec077 100644
--- a/lib/wctomb.c
+++ b/lib/wctomb.c
@@ -1,5 +1,5 @@
/* Convert wide character to multibyte character.
- Copyright (C) 2011-2018 Free Software Foundation, Inc.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2011.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/wctype.in.h b/lib/wctype.in.h
index 3c6e5f2..df72be4 100644
--- a/lib/wctype.in.h
+++ b/lib/wctype.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
- Copyright (C) 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
This 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,7 +19,7 @@
/*
* ISO C 99 <wctype.h> for platforms that lack it.
- * <http://www.opengroup.org/susv3xbd/wctype.h.html>
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wctype.h.html>
*
* iswctype, towctrans, towlower, towupper, wctrans, wctype,
* wctrans_t, and wctype_t are not yet implemented.
@@ -133,33 +133,113 @@ typedef unsigned int rpl_wint_t;
/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
Linux libc5 has <wctype.h> and the functions but they are broken.
+ mingw and MSVC have <wctype.h> and the functions but they take a wchar_t
+ as argument, not an rpl_wint_t.
Assume all 11 functions (all isw* except iswblank) are implemented the
same way, or not at all. */
# if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
-/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
- undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
- refer to system functions like _iswctype that are not in the
- standard C library. Rather than try to get ancient buggy
- implementations like this to work, just disable them. */
-# undef iswalnum
-# undef iswalpha
-# undef iswblank
-# undef iswcntrl
-# undef iswdigit
-# undef iswgraph
-# undef iswlower
-# undef iswprint
-# undef iswpunct
-# undef iswspace
-# undef iswupper
-# undef iswxdigit
-# undef towlower
-# undef towupper
+# if @GNULIB_OVERRIDES_WINT_T@ /* implies @REPLACE_ISWCNTRL@ */
+
+_GL_WCTYPE_INLINE int
+rpl_iswalnum (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswalnum ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswalpha (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswalpha ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswblank (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswblank ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswcntrl (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswcntrl ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswdigit (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswdigit ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswgraph (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswgraph ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswlower (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswlower ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswprint (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswprint ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswpunct (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswpunct ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswspace (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswspace ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswupper (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswupper ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE int
+rpl_iswxdigit (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? iswxdigit ((wchar_t) wc) : 0);
+}
+
+_GL_WCTYPE_INLINE wint_t
+rpl_towlower (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? (wchar_t) towlower ((wchar_t) wc) : wc);
+}
+
+_GL_WCTYPE_INLINE wint_t
+rpl_towupper (wint_t wc)
+{
+ return ((wchar_t) wc == wc ? (wchar_t) towupper ((wchar_t) wc) : wc);
+}
-/* Linux libc5 has <wctype.h> and the functions but they are broken. */
-# if @REPLACE_ISWCNTRL@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef iswalnum
+# undef iswalpha
+# undef iswblank
+# undef iswcntrl
+# undef iswdigit
+# undef iswgraph
+# undef iswlower
+# undef iswprint
+# undef iswpunct
+# undef iswspace
+# undef iswupper
+# undef iswxdigit
+# undef towlower
+# undef towupper
# define iswalnum rpl_iswalnum
# define iswalpha rpl_iswalpha
# define iswblank rpl_iswblank
@@ -172,21 +252,62 @@ typedef unsigned int rpl_wint_t;
# define iswspace rpl_iswspace
# define iswupper rpl_iswupper
# define iswxdigit rpl_iswxdigit
-# endif
-# endif
-# if @REPLACE_TOWLOWER@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define towlower rpl_towlower
# define towupper rpl_towupper
# endif
-# endif
+
+# else
+
+/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
+ undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
+ refer to system functions like _iswctype that are not in the
+ standard C library. Rather than try to get ancient buggy
+ implementations like this to work, just disable them. */
+# undef iswalnum
+# undef iswalpha
+# undef iswblank
+# undef iswcntrl
+# undef iswdigit
+# undef iswgraph
+# undef iswlower
+# undef iswprint
+# undef iswpunct
+# undef iswspace
+# undef iswupper
+# undef iswxdigit
+# undef towlower
+# undef towupper
+
+/* Linux libc5 has <wctype.h> and the functions but they are broken. */
+# if @REPLACE_ISWCNTRL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define iswalnum rpl_iswalnum
+# define iswalpha rpl_iswalpha
+# define iswblank rpl_iswblank
+# define iswcntrl rpl_iswcntrl
+# define iswdigit rpl_iswdigit
+# define iswgraph rpl_iswgraph
+# define iswlower rpl_iswlower
+# define iswprint rpl_iswprint
+# define iswpunct rpl_iswpunct
+# define iswspace rpl_iswspace
+# define iswupper rpl_iswupper
+# define iswxdigit rpl_iswxdigit
+# endif
+# endif
+# if @REPLACE_TOWLOWER@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define towlower rpl_towlower
+# define towupper rpl_towupper
+# endif
+# endif
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswalnum
-# else
+# else
iswalnum
-# endif
+# endif
(wint_t wc)
{
return ((wc >= '0' && wc <= '9')
@@ -194,88 +315,88 @@ iswalnum
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswalpha
-# else
+# else
iswalpha
-# endif
+# endif
(wint_t wc)
{
return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswblank
-# else
+# else
iswblank
-# endif
+# endif
(wint_t wc)
{
return wc == ' ' || wc == '\t';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswcntrl
-# else
+# else
iswcntrl
-# endif
+# endif
(wint_t wc)
{
return (wc & ~0x1f) == 0 || wc == 0x7f;
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswdigit
-# else
+# else
iswdigit
-# endif
+# endif
(wint_t wc)
{
return wc >= '0' && wc <= '9';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswgraph
-# else
+# else
iswgraph
-# endif
+# endif
(wint_t wc)
{
return wc >= '!' && wc <= '~';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswlower
-# else
+# else
iswlower
-# endif
+# endif
(wint_t wc)
{
return wc >= 'a' && wc <= 'z';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswprint
-# else
+# else
iswprint
-# endif
+# endif
(wint_t wc)
{
return wc >= ' ' && wc <= '~';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswpunct
-# else
+# else
iswpunct
-# endif
+# endif
(wint_t wc)
{
return (wc >= '!' && wc <= '~'
@@ -284,11 +405,11 @@ iswpunct
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswspace
-# else
+# else
iswspace
-# endif
+# endif
(wint_t wc)
{
return (wc == ' ' || wc == '\t'
@@ -296,22 +417,22 @@ iswspace
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswupper
-# else
+# else
iswupper
-# endif
+# endif
(wint_t wc)
{
return wc >= 'A' && wc <= 'Z';
}
_GL_WCTYPE_INLINE int
-# if @REPLACE_ISWCNTRL@
+# if @REPLACE_ISWCNTRL@
rpl_iswxdigit
-# else
+# else
iswxdigit
-# endif
+# endif
(wint_t wc)
{
return ((wc >= '0' && wc <= '9')
@@ -319,27 +440,29 @@ iswxdigit
}
_GL_WCTYPE_INLINE wint_t
-# if @REPLACE_TOWLOWER@
+# if @REPLACE_TOWLOWER@
rpl_towlower
-# else
+# else
towlower
-# endif
+# endif
(wint_t wc)
{
return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
}
_GL_WCTYPE_INLINE wint_t
-# if @REPLACE_TOWLOWER@
+# if @REPLACE_TOWLOWER@
rpl_towupper
-# else
+# else
towupper
-# endif
+# endif
(wint_t wc)
{
return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
}
+# endif
+
# elif @GNULIB_ISWBLANK@ && (! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@)
/* Only the iswblank function is missing. */
@@ -354,7 +477,7 @@ _GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
# endif
-# if defined __MINGW32__
+# if defined __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@
/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
The functions towlower and towupper are implemented in the MSVCRT library
@@ -387,7 +510,7 @@ rpl_towupper (wint_t wc)
# define towupper rpl_towupper
# endif
-# endif /* __MINGW32__ */
+# endif /* __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@ */
# define GNULIB_defined_wctype_functions 1
#endif
@@ -417,6 +540,7 @@ _GL_CXXALIAS_SYS (iswspace, int, (wint_t wc));
_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc));
_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
#endif
+#if __GLIBC__ >= 2
_GL_CXXALIASWARN (iswalnum);
_GL_CXXALIASWARN (iswalpha);
_GL_CXXALIASWARN (iswcntrl);
@@ -428,6 +552,7 @@ _GL_CXXALIASWARN (iswpunct);
_GL_CXXALIASWARN (iswspace);
_GL_CXXALIASWARN (iswupper);
_GL_CXXALIASWARN (iswxdigit);
+#endif
#if @GNULIB_ISWBLANK@
# if @REPLACE_ISWCNTRL@ || @REPLACE_ISWBLANK@
@@ -435,7 +560,9 @@ _GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
# else
_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (iswblank);
+# endif
#endif
#if !@HAVE_WCTYPE_T@
@@ -451,7 +578,9 @@ typedef void * wctype_t;
_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name));
# endif
_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wctype);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wctype
# if HAVE_RAW_DECL_WCTYPE
@@ -464,11 +593,22 @@ _GL_WARN_ON_USE (wctype, "wctype is unportable - "
The argument WC must be either a wchar_t value or WEOF.
The argument DESC must have been returned by the wctype() function. */
#if @GNULIB_ISWCTYPE@
-# if !@HAVE_WCTYPE_T@
+# if @GNULIB_OVERRIDES_WINT_T@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef iswctype
+# define iswctype rpl_iswctype
+# endif
+_GL_FUNCDECL_RPL (iswctype, int, (wint_t wc, wctype_t desc));
+_GL_CXXALIAS_RPL (iswctype, int, (wint_t wc, wctype_t desc));
+# else
+# if !@HAVE_WCTYPE_T@
_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
-# endif
+# endif
_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (iswctype);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef iswctype
# if HAVE_RAW_DECL_ISWCTYPE
@@ -484,8 +624,10 @@ _GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc));
_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
#endif
+#if __GLIBC__ >= 2
_GL_CXXALIASWARN (towlower);
_GL_CXXALIASWARN (towupper);
+#endif
#if !@HAVE_WCTRANS_T@
# if !GNULIB_defined_wctrans_t
@@ -500,7 +642,9 @@ typedef void * wctrans_t;
_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name));
# endif
_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (wctrans);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef wctrans
# if HAVE_RAW_DECL_WCTRANS
@@ -517,7 +661,9 @@ _GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
# endif
_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (towctrans);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef towctrans
# if HAVE_RAW_DECL_TOWCTRANS
diff --git a/lib/windows-initguard.h b/lib/windows-initguard.h
new file mode 100644
index 0000000..c4be45a
--- /dev/null
+++ b/lib/windows-initguard.h
@@ -0,0 +1,35 @@
+/* Init guards, somewhat like spinlocks (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#ifndef _WINDOWS_INITGUARD_H
+#define _WINDOWS_INITGUARD_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+typedef struct
+ {
+ volatile int done;
+ volatile LONG started;
+ }
+ glwthread_initguard_t;
+
+#define GLWTHREAD_INITGUARD_INIT { 0, -1 }
+
+#endif /* _WINDOWS_INITGUARD_H */
diff --git a/lib/windows-mutex.c b/lib/windows-mutex.c
new file mode 100644
index 0000000..7eb38a2
--- /dev/null
+++ b/lib/windows-mutex.c
@@ -0,0 +1,95 @@
+/* Plain mutexes (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#include <config.h>
+
+/* Specification. */
+#include "windows-mutex.h"
+
+#include <errno.h>
+
+void
+glwthread_mutex_init (glwthread_mutex_t *mutex)
+{
+ InitializeCriticalSection (&mutex->lock);
+ mutex->guard.done = 1;
+}
+
+int
+glwthread_mutex_lock (glwthread_mutex_t *mutex)
+{
+ if (!mutex->guard.done)
+ {
+ if (InterlockedIncrement (&mutex->guard.started) == 0)
+ /* This thread is the first one to need this mutex. Initialize it. */
+ glwthread_mutex_init (mutex);
+ else
+ {
+ /* Don't let mutex->guard.started grow and wrap around. */
+ InterlockedDecrement (&mutex->guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this mutex. */
+ while (!mutex->guard.done)
+ Sleep (0);
+ }
+ }
+ EnterCriticalSection (&mutex->lock);
+ return 0;
+}
+
+int
+glwthread_mutex_trylock (glwthread_mutex_t *mutex)
+{
+ if (!mutex->guard.done)
+ {
+ if (InterlockedIncrement (&mutex->guard.started) == 0)
+ /* This thread is the first one to need this mutex. Initialize it. */
+ glwthread_mutex_init (mutex);
+ else
+ {
+ /* Don't let mutex->guard.started grow and wrap around. */
+ InterlockedDecrement (&mutex->guard.started);
+ /* Let another thread finish initializing this mutex, and let it also
+ lock this mutex. */
+ return EBUSY;
+ }
+ }
+ if (!TryEnterCriticalSection (&mutex->lock))
+ return EBUSY;
+ return 0;
+}
+
+int
+glwthread_mutex_unlock (glwthread_mutex_t *mutex)
+{
+ if (!mutex->guard.done)
+ return EINVAL;
+ LeaveCriticalSection (&mutex->lock);
+ return 0;
+}
+
+int
+glwthread_mutex_destroy (glwthread_mutex_t *mutex)
+{
+ if (!mutex->guard.done)
+ return EINVAL;
+ DeleteCriticalSection (&mutex->lock);
+ mutex->guard.done = 0;
+ return 0;
+}
diff --git a/lib/windows-mutex.h b/lib/windows-mutex.h
new file mode 100644
index 0000000..748b988
--- /dev/null
+++ b/lib/windows-mutex.h
@@ -0,0 +1,51 @@
+/* Plain mutexes (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#ifndef _WINDOWS_MUTEX_H
+#define _WINDOWS_MUTEX_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+#include "windows-initguard.h"
+
+typedef struct
+ {
+ glwthread_initguard_t guard; /* protects the initialization */
+ CRITICAL_SECTION lock;
+ }
+ glwthread_mutex_t;
+
+#define GLWTHREAD_MUTEX_INIT { GLWTHREAD_INITGUARD_INIT }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void glwthread_mutex_init (glwthread_mutex_t *mutex);
+extern int glwthread_mutex_lock (glwthread_mutex_t *mutex);
+extern int glwthread_mutex_trylock (glwthread_mutex_t *mutex);
+extern int glwthread_mutex_unlock (glwthread_mutex_t *mutex);
+extern int glwthread_mutex_destroy (glwthread_mutex_t *mutex);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDOWS_MUTEX_H */
diff --git a/lib/windows-once.c b/lib/windows-once.c
new file mode 100644
index 0000000..c431bd6
--- /dev/null
+++ b/lib/windows-once.c
@@ -0,0 +1,62 @@
+/* Once-only control (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#include <config.h>
+
+/* Specification. */
+#include "windows-once.h"
+
+#include <stdlib.h>
+
+void
+glwthread_once (glwthread_once_t *once_control, void (*initfunction) (void))
+{
+ if (once_control->inited <= 0)
+ {
+ if (InterlockedIncrement (&once_control->started) == 0)
+ {
+ /* This thread is the first one to come to this once_control. */
+ InitializeCriticalSection (&once_control->lock);
+ EnterCriticalSection (&once_control->lock);
+ once_control->inited = 0;
+ initfunction ();
+ once_control->inited = 1;
+ LeaveCriticalSection (&once_control->lock);
+ }
+ else
+ {
+ /* Don't let once_control->started grow and wrap around. */
+ InterlockedDecrement (&once_control->started);
+ /* Some other thread has already started the initialization.
+ Yield the CPU while waiting for the other thread to finish
+ initializing and taking the lock. */
+ while (once_control->inited < 0)
+ Sleep (0);
+ if (once_control->inited <= 0)
+ {
+ /* Take the lock. This blocks until the other thread has
+ finished calling the initfunction. */
+ EnterCriticalSection (&once_control->lock);
+ LeaveCriticalSection (&once_control->lock);
+ if (!(once_control->inited > 0))
+ abort ();
+ }
+ }
+ }
+}
diff --git a/lib/windows-once.h b/lib/windows-once.h
new file mode 100644
index 0000000..d31717e
--- /dev/null
+++ b/lib/windows-once.h
@@ -0,0 +1,47 @@
+/* Once-only control (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#ifndef _WINDOWS_ONCE_H
+#define _WINDOWS_ONCE_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+typedef struct
+ {
+ volatile int inited;
+ volatile LONG started;
+ CRITICAL_SECTION lock;
+ }
+ glwthread_once_t;
+
+#define GLWTHREAD_ONCE_INIT { -1, -1 }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void glwthread_once (glwthread_once_t *once_control,
+ void (*initfunction) (void));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDOWS_ONCE_H */
diff --git a/lib/windows-recmutex.c b/lib/windows-recmutex.c
new file mode 100644
index 0000000..db3c40c
--- /dev/null
+++ b/lib/windows-recmutex.c
@@ -0,0 +1,127 @@
+/* Plain recursive mutexes (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#include <config.h>
+
+/* Specification. */
+#include "windows-recmutex.h"
+
+#include <errno.h>
+
+void
+glwthread_recmutex_init (glwthread_recmutex_t *mutex)
+{
+ mutex->owner = 0;
+ mutex->depth = 0;
+ InitializeCriticalSection (&mutex->lock);
+ mutex->guard.done = 1;
+}
+
+int
+glwthread_recmutex_lock (glwthread_recmutex_t *mutex)
+{
+ if (!mutex->guard.done)
+ {
+ if (InterlockedIncrement (&mutex->guard.started) == 0)
+ /* This thread is the first one to need this mutex. Initialize it. */
+ glwthread_recmutex_init (mutex);
+ else
+ {
+ /* Don't let mutex->guard.started grow and wrap around. */
+ InterlockedDecrement (&mutex->guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this mutex. */
+ while (!mutex->guard.done)
+ Sleep (0);
+ }
+ }
+ {
+ DWORD self = GetCurrentThreadId ();
+ if (mutex->owner != self)
+ {
+ EnterCriticalSection (&mutex->lock);
+ mutex->owner = self;
+ }
+ if (++(mutex->depth) == 0) /* wraparound? */
+ {
+ mutex->depth--;
+ return EAGAIN;
+ }
+ }
+ return 0;
+}
+
+int
+glwthread_recmutex_trylock (glwthread_recmutex_t *mutex)
+{
+ if (!mutex->guard.done)
+ {
+ if (InterlockedIncrement (&mutex->guard.started) == 0)
+ /* This thread is the first one to need this mutex. Initialize it. */
+ glwthread_recmutex_init (mutex);
+ else
+ {
+ /* Don't let mutex->guard.started grow and wrap around. */
+ InterlockedDecrement (&mutex->guard.started);
+ /* Let another thread finish initializing this mutex, and let it also
+ lock this mutex. */
+ return EBUSY;
+ }
+ }
+ {
+ DWORD self = GetCurrentThreadId ();
+ if (mutex->owner != self)
+ {
+ if (!TryEnterCriticalSection (&mutex->lock))
+ return EBUSY;
+ mutex->owner = self;
+ }
+ if (++(mutex->depth) == 0) /* wraparound? */
+ {
+ mutex->depth--;
+ return EAGAIN;
+ }
+ }
+ return 0;
+}
+
+int
+glwthread_recmutex_unlock (glwthread_recmutex_t *mutex)
+{
+ if (mutex->owner != GetCurrentThreadId ())
+ return EPERM;
+ if (mutex->depth == 0)
+ return EINVAL;
+ if (--(mutex->depth) == 0)
+ {
+ mutex->owner = 0;
+ LeaveCriticalSection (&mutex->lock);
+ }
+ return 0;
+}
+
+int
+glwthread_recmutex_destroy (glwthread_recmutex_t *mutex)
+{
+ if (mutex->owner != 0)
+ return EBUSY;
+ DeleteCriticalSection (&mutex->lock);
+ mutex->guard.done = 0;
+ return 0;
+}
diff --git a/lib/windows-recmutex.h b/lib/windows-recmutex.h
new file mode 100644
index 0000000..3b315e5
--- /dev/null
+++ b/lib/windows-recmutex.h
@@ -0,0 +1,57 @@
+/* Plain recursive mutexes (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#ifndef _WINDOWS_RECMUTEX_H
+#define _WINDOWS_RECMUTEX_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+#include "windows-initguard.h"
+
+/* The native Windows documentation says that CRITICAL_SECTION already
+ implements a recursive lock. But we need not rely on it: It's easy to
+ implement a recursive lock without this assumption. */
+
+typedef struct
+ {
+ glwthread_initguard_t guard; /* protects the initialization */
+ DWORD owner;
+ unsigned long depth;
+ CRITICAL_SECTION lock;
+ }
+ glwthread_recmutex_t;
+
+#define GLWTHREAD_RECMUTEX_INIT { GLWTHREAD_INITGUARD_INIT, 0, 0 }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void glwthread_recmutex_init (glwthread_recmutex_t *mutex);
+extern int glwthread_recmutex_lock (glwthread_recmutex_t *mutex);
+extern int glwthread_recmutex_trylock (glwthread_recmutex_t *mutex);
+extern int glwthread_recmutex_unlock (glwthread_recmutex_t *mutex);
+extern int glwthread_recmutex_destroy (glwthread_recmutex_t *mutex);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDOWS_RECMUTEX_H */
diff --git a/lib/windows-rwlock.c b/lib/windows-rwlock.c
new file mode 100644
index 0000000..aafc5dd
--- /dev/null
+++ b/lib/windows-rwlock.c
@@ -0,0 +1,373 @@
+/* Read-write locks (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#include <config.h>
+
+/* Specification. */
+#include "windows-rwlock.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+/* In this file, the waitqueues are implemented as circular arrays. */
+#define glwthread_waitqueue_t glwthread_carray_waitqueue_t
+
+static void
+glwthread_waitqueue_init (glwthread_waitqueue_t *wq)
+{
+ wq->array = NULL;
+ wq->count = 0;
+ wq->alloc = 0;
+ wq->offset = 0;
+}
+
+/* Enqueues the current thread, represented by an event, in a wait queue.
+ Returns INVALID_HANDLE_VALUE if an allocation failure occurs. */
+static HANDLE
+glwthread_waitqueue_add (glwthread_waitqueue_t *wq)
+{
+ HANDLE event;
+ unsigned int index;
+
+ if (wq->count == wq->alloc)
+ {
+ unsigned int new_alloc = 2 * wq->alloc + 1;
+ HANDLE *new_array =
+ (HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE));
+ if (new_array == NULL)
+ /* No more memory. */
+ return INVALID_HANDLE_VALUE;
+ /* Now is a good opportunity to rotate the array so that its contents
+ starts at offset 0. */
+ if (wq->offset > 0)
+ {
+ unsigned int old_count = wq->count;
+ unsigned int old_alloc = wq->alloc;
+ unsigned int old_offset = wq->offset;
+ unsigned int i;
+ if (old_offset + old_count > old_alloc)
+ {
+ unsigned int limit = old_offset + old_count - old_alloc;
+ for (i = 0; i < limit; i++)
+ new_array[old_alloc + i] = new_array[i];
+ }
+ for (i = 0; i < old_count; i++)
+ new_array[i] = new_array[old_offset + i];
+ wq->offset = 0;
+ }
+ wq->array = new_array;
+ wq->alloc = new_alloc;
+ }
+ /* Whether the created event is a manual-reset one or an auto-reset one,
+ does not matter, since we will wait on it only once. */
+ event = CreateEvent (NULL, TRUE, FALSE, NULL);
+ if (event == INVALID_HANDLE_VALUE)
+ /* No way to allocate an event. */
+ return INVALID_HANDLE_VALUE;
+ index = wq->offset + wq->count;
+ if (index >= wq->alloc)
+ index -= wq->alloc;
+ wq->array[index] = event;
+ wq->count++;
+ return event;
+}
+
+/* Notifies the first thread from a wait queue and dequeues it. */
+static void
+glwthread_waitqueue_notify_first (glwthread_waitqueue_t *wq)
+{
+ SetEvent (wq->array[wq->offset + 0]);
+ wq->offset++;
+ wq->count--;
+ if (wq->count == 0 || wq->offset == wq->alloc)
+ wq->offset = 0;
+}
+
+/* Notifies all threads from a wait queue and dequeues them all. */
+static void
+glwthread_waitqueue_notify_all (glwthread_waitqueue_t *wq)
+{
+ unsigned int i;
+
+ for (i = 0; i < wq->count; i++)
+ {
+ unsigned int index = wq->offset + i;
+ if (index >= wq->alloc)
+ index -= wq->alloc;
+ SetEvent (wq->array[index]);
+ }
+ wq->count = 0;
+ wq->offset = 0;
+}
+
+void
+glwthread_rwlock_init (glwthread_rwlock_t *lock)
+{
+ InitializeCriticalSection (&lock->lock);
+ glwthread_waitqueue_init (&lock->waiting_readers);
+ glwthread_waitqueue_init (&lock->waiting_writers);
+ lock->runcount = 0;
+ lock->guard.done = 1;
+}
+
+int
+glwthread_rwlock_rdlock (glwthread_rwlock_t *lock)
+{
+ if (!lock->guard.done)
+ {
+ if (InterlockedIncrement (&lock->guard.started) == 0)
+ /* This thread is the first one to need this lock. Initialize it. */
+ glwthread_rwlock_init (lock);
+ else
+ {
+ /* Don't let lock->guard.started grow and wrap around. */
+ InterlockedDecrement (&lock->guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this lock. */
+ while (!lock->guard.done)
+ Sleep (0);
+ }
+ }
+ EnterCriticalSection (&lock->lock);
+ /* Test whether only readers are currently running, and whether the runcount
+ field will not overflow, and whether no writer is waiting. The latter
+ condition is because POSIX recommends that "write locks shall take
+ precedence over read locks", to avoid "writer starvation". */
+ if (!(lock->runcount + 1 > 0 && lock->waiting_writers.count == 0))
+ {
+ /* This thread has to wait for a while. Enqueue it among the
+ waiting_readers. */
+ HANDLE event = glwthread_waitqueue_add (&lock->waiting_readers);
+ if (event != INVALID_HANDLE_VALUE)
+ {
+ DWORD result;
+ LeaveCriticalSection (&lock->lock);
+ /* Wait until another thread signals this event. */
+ result = WaitForSingleObject (event, INFINITE);
+ if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
+ abort ();
+ CloseHandle (event);
+ /* The thread which signalled the event already did the bookkeeping:
+ removed us from the waiting_readers, incremented lock->runcount. */
+ if (!(lock->runcount > 0))
+ abort ();
+ return 0;
+ }
+ else
+ {
+ /* Allocation failure. Weird. */
+ do
+ {
+ LeaveCriticalSection (&lock->lock);
+ Sleep (1);
+ EnterCriticalSection (&lock->lock);
+ }
+ while (!(lock->runcount + 1 > 0));
+ }
+ }
+ lock->runcount++;
+ LeaveCriticalSection (&lock->lock);
+ return 0;
+}
+
+int
+glwthread_rwlock_wrlock (glwthread_rwlock_t *lock)
+{
+ if (!lock->guard.done)
+ {
+ if (InterlockedIncrement (&lock->guard.started) == 0)
+ /* This thread is the first one to need this lock. Initialize it. */
+ glwthread_rwlock_init (lock);
+ else
+ {
+ /* Don't let lock->guard.started grow and wrap around. */
+ InterlockedDecrement (&lock->guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this lock. */
+ while (!lock->guard.done)
+ Sleep (0);
+ }
+ }
+ EnterCriticalSection (&lock->lock);
+ /* Test whether no readers or writers are currently running. */
+ if (!(lock->runcount == 0))
+ {
+ /* This thread has to wait for a while. Enqueue it among the
+ waiting_writers. */
+ HANDLE event = glwthread_waitqueue_add (&lock->waiting_writers);
+ if (event != INVALID_HANDLE_VALUE)
+ {
+ DWORD result;
+ LeaveCriticalSection (&lock->lock);
+ /* Wait until another thread signals this event. */
+ result = WaitForSingleObject (event, INFINITE);
+ if (result == WAIT_FAILED || result == WAIT_TIMEOUT)
+ abort ();
+ CloseHandle (event);
+ /* The thread which signalled the event already did the bookkeeping:
+ removed us from the waiting_writers, set lock->runcount = -1. */
+ if (!(lock->runcount == -1))
+ abort ();
+ return 0;
+ }
+ else
+ {
+ /* Allocation failure. Weird. */
+ do
+ {
+ LeaveCriticalSection (&lock->lock);
+ Sleep (1);
+ EnterCriticalSection (&lock->lock);
+ }
+ while (!(lock->runcount == 0));
+ }
+ }
+ lock->runcount--; /* runcount becomes -1 */
+ LeaveCriticalSection (&lock->lock);
+ return 0;
+}
+
+int
+glwthread_rwlock_tryrdlock (glwthread_rwlock_t *lock)
+{
+ if (!lock->guard.done)
+ {
+ if (InterlockedIncrement (&lock->guard.started) == 0)
+ /* This thread is the first one to need this lock. Initialize it. */
+ glwthread_rwlock_init (lock);
+ else
+ {
+ /* Don't let lock->guard.started grow and wrap around. */
+ InterlockedDecrement (&lock->guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this lock. */
+ while (!lock->guard.done)
+ Sleep (0);
+ }
+ }
+ /* It's OK to wait for this critical section, because it is never taken for a
+ long time. */
+ EnterCriticalSection (&lock->lock);
+ /* Test whether only readers are currently running, and whether the runcount
+ field will not overflow, and whether no writer is waiting. The latter
+ condition is because POSIX recommends that "write locks shall take
+ precedence over read locks", to avoid "writer starvation". */
+ if (!(lock->runcount + 1 > 0 && lock->waiting_writers.count == 0))
+ {
+ /* This thread would have to wait for a while. Return instead. */
+ LeaveCriticalSection (&lock->lock);
+ return EBUSY;
+ }
+ lock->runcount++;
+ LeaveCriticalSection (&lock->lock);
+ return 0;
+}
+
+int
+glwthread_rwlock_trywrlock (glwthread_rwlock_t *lock)
+{
+ if (!lock->guard.done)
+ {
+ if (InterlockedIncrement (&lock->guard.started) == 0)
+ /* This thread is the first one to need this lock. Initialize it. */
+ glwthread_rwlock_init (lock);
+ else
+ {
+ /* Don't let lock->guard.started grow and wrap around. */
+ InterlockedDecrement (&lock->guard.started);
+ /* Yield the CPU while waiting for another thread to finish
+ initializing this lock. */
+ while (!lock->guard.done)
+ Sleep (0);
+ }
+ }
+ /* It's OK to wait for this critical section, because it is never taken for a
+ long time. */
+ EnterCriticalSection (&lock->lock);
+ /* Test whether no readers or writers are currently running. */
+ if (!(lock->runcount == 0))
+ {
+ /* This thread would have to wait for a while. Return instead. */
+ LeaveCriticalSection (&lock->lock);
+ return EBUSY;
+ }
+ lock->runcount--; /* runcount becomes -1 */
+ LeaveCriticalSection (&lock->lock);
+ return 0;
+}
+
+int
+glwthread_rwlock_unlock (glwthread_rwlock_t *lock)
+{
+ if (!lock->guard.done)
+ return EINVAL;
+ EnterCriticalSection (&lock->lock);
+ if (lock->runcount < 0)
+ {
+ /* Drop a writer lock. */
+ if (!(lock->runcount == -1))
+ abort ();
+ lock->runcount = 0;
+ }
+ else
+ {
+ /* Drop a reader lock. */
+ if (!(lock->runcount > 0))
+ {
+ LeaveCriticalSection (&lock->lock);
+ return EPERM;
+ }
+ lock->runcount--;
+ }
+ if (lock->runcount == 0)
+ {
+ /* POSIX recommends that "write locks shall take precedence over read
+ locks", to avoid "writer starvation". */
+ if (lock->waiting_writers.count > 0)
+ {
+ /* Wake up one of the waiting writers. */
+ lock->runcount--;
+ glwthread_waitqueue_notify_first (&lock->waiting_writers);
+ }
+ else
+ {
+ /* Wake up all waiting readers. */
+ lock->runcount += lock->waiting_readers.count;
+ glwthread_waitqueue_notify_all (&lock->waiting_readers);
+ }
+ }
+ LeaveCriticalSection (&lock->lock);
+ return 0;
+}
+
+int
+glwthread_rwlock_destroy (glwthread_rwlock_t *lock)
+{
+ if (!lock->guard.done)
+ return EINVAL;
+ if (lock->runcount != 0)
+ return EBUSY;
+ DeleteCriticalSection (&lock->lock);
+ if (lock->waiting_readers.array != NULL)
+ free (lock->waiting_readers.array);
+ if (lock->waiting_writers.array != NULL)
+ free (lock->waiting_writers.array);
+ lock->guard.done = 0;
+ return 0;
+}
diff --git a/lib/windows-rwlock.h b/lib/windows-rwlock.h
new file mode 100644
index 0000000..ae5b82f
--- /dev/null
+++ b/lib/windows-rwlock.h
@@ -0,0 +1,68 @@
+/* Read-write locks (native Windows implementation).
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
+
+ This 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, 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>, 2005.
+ Based on GCC's gthr-win32.h. */
+
+#ifndef _WINDOWS_RWLOCK_H
+#define _WINDOWS_RWLOCK_H
+
+#define WIN32_LEAN_AND_MEAN /* avoid including junk */
+#include <windows.h>
+
+#include "windows-initguard.h"
+
+/* It is impossible to implement read-write locks using plain locks, without
+ introducing an extra thread dedicated to managing read-write locks.
+ Therefore here we need to use the low-level Event type. */
+
+typedef struct
+ {
+ HANDLE *array; /* array of waiting threads, each represented by an event */
+ unsigned int count; /* number of waiting threads */
+ unsigned int alloc; /* length of allocated array */
+ unsigned int offset; /* index of first waiting thread in array */
+ }
+ glwthread_carray_waitqueue_t;
+typedef struct
+ {
+ glwthread_initguard_t guard; /* protects the initialization */
+ CRITICAL_SECTION lock; /* protects the remaining fields */
+ glwthread_carray_waitqueue_t waiting_readers; /* waiting readers */
+ glwthread_carray_waitqueue_t waiting_writers; /* waiting writers */
+ int runcount; /* number of readers running, or -1 when a writer runs */
+ }
+ glwthread_rwlock_t;
+
+#define GLWTHREAD_RWLOCK_INIT { GLWTHREAD_INITGUARD_INIT }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void glwthread_rwlock_init (glwthread_rwlock_t *lock);
+extern int glwthread_rwlock_rdlock (glwthread_rwlock_t *lock);
+extern int glwthread_rwlock_wrlock (glwthread_rwlock_t *lock);
+extern int glwthread_rwlock_tryrdlock (glwthread_rwlock_t *lock);
+extern int glwthread_rwlock_trywrlock (glwthread_rwlock_t *lock);
+extern int glwthread_rwlock_unlock (glwthread_rwlock_t *lock);
+extern int glwthread_rwlock_destroy (glwthread_rwlock_t *lock);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDOWS_RWLOCK_H */
diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c
index bfe6109..68559de 100644
--- a/lib/xalloc-die.c
+++ b/lib/xalloc-die.c
@@ -1,6 +1,6 @@
/* Report a memory allocation failure and exit.
- Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2018 Free Software
+ Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2020 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h
index 3426e10..13ee230 100644
--- a/lib/xalloc-oversized.h
+++ b/lib/xalloc-oversized.h
@@ -1,6 +1,6 @@
/* xalloc-oversized.h -- memory allocation size checking
- Copyright (C) 1990-2000, 2003-2004, 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 1990-2000, 2003-2004, 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/xalloc.h b/lib/xalloc.h
index c419a2d..9563b0b 100644
--- a/lib/xalloc.h
+++ b/lib/xalloc.h
@@ -1,6 +1,6 @@
/* xalloc.h -- malloc with out-of-memory checking
- Copyright (C) 1990-2000, 2003-2004, 2006-2018 Free Software Foundation, Inc.
+ Copyright (C) 1990-2000, 2003-2004, 2006-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
index 9a30d67..4868736 100644
--- a/lib/xmalloc.c
+++ b/lib/xmalloc.c
@@ -1,6 +1,6 @@
/* xmalloc.c -- malloc with out of memory checking
- Copyright (C) 1990-2000, 2002-2006, 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 1990-2000, 2002-2006, 2008-2020 Free Software Foundation, Inc.
This 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,14 +76,14 @@ x2realloc (void *p, size_t *pn)
return x2nrealloc (p, pn, 1);
}
-/* Allocate S bytes of zeroed memory dynamically, with error checking.
+/* Allocate N bytes of zeroed memory dynamically, with error checking.
There's no need for xnzalloc (N, S), since it would be equivalent
to xcalloc (N, S). */
void *
-xzalloc (size_t s)
+xzalloc (size_t n)
{
- return memset (xmalloc (s), 0, s);
+ return xcalloc (n, 1);
}
/* Allocate zeroed memory for N elements of S bytes, with error
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
index bd24796..58bc4ef 100644
--- a/m4/00gnulib.m4
+++ b/m4/00gnulib.m4
@@ -1,13 +1,14 @@
-# 00gnulib.m4 serial 3
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# 00gnulib.m4 serial 5
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This file must be named something that sorts before all other
-dnl gnulib-provided .m4 files. It is needed until such time as we can
-dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and
-dnl m4_divert semantics.
+dnl gnulib-provided .m4 files. The first part is needed until such time
+dnl as we can assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and
+dnl m4_divert semantics. The second part is needed until the clang fix
+dnl has been included in Autoconf.
# Until autoconf 2.63, handling of the diversion stack required m4_init
# to be called first; but this does not happen with aclocal. Wrapping
@@ -39,6 +40,67 @@ m4_version_prereq([2.63.263], [],
[m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+# The following definitions arrange to use a compiler option
+# -Werror=implicit-function-declaration in AC_CHECK_DECL, when the
+# compiler is clang. Without it, clang implicitly declares "known"
+# library functions in C mode, but not in C++ mode, which would cause
+# Gnulib to omit a declaration and thus later produce an error in C++
+# mode. As of clang 9.0, these "known" functions are identified through
+# LIBBUILTIN invocations in the LLVM source file
+# llvm/tools/clang/include/clang/Basic/Builtins.def.
+AC_DEFUN([gl_COMPILER_CLANG],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([whether the compiler is clang],
+ [gl_cv_compiler_clang],
+ [AC_EGREP_CPP([barfbarf],[
+#ifdef __clang__
+barfbarf
+#endif
+ ],
+ [gl_cv_compiler_clang=yes],
+ [gl_cv_compiler_clang=no])
+ ])
+])
+AC_DEFUN_ONCE([gl_COMPILER_PREPARE_CHECK_DECL],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_COMPILER_CLANG])
+ AC_CACHE_CHECK([for compiler option needed when checking for declarations],
+ [gl_cv_compiler_check_decl_option],
+ [if test $gl_cv_compiler_clang = yes; then
+ dnl Test whether the compiler supports the option
+ dnl '-Werror=implicit-function-declaration'.
+ save_ac_compile="$ac_compile"
+ ac_compile="$ac_compile -Werror=implicit-function-declaration"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
+ [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'],
+ [gl_cv_compiler_check_decl_option=none])
+ ac_compile="$save_ac_compile"
+ else
+ gl_cv_compiler_check_decl_option=none
+ fi
+ ])
+ if test "x$gl_cv_compiler_check_decl_option" != xnone; then
+ ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option"
+ else
+ ac_compile_for_check_decl="$ac_compile"
+ fi
+])
+dnl Redefine _AC_CHECK_DECL_BODY so that it references ac_compile_for_check_decl
+dnl instead of ac_compile.
+m4_define([_AC_CHECK_DECL_BODY],
+[ ac_save_ac_compile="$ac_compile"
+ ac_compile="$ac_compile_for_check_decl"]
+m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_save_ac_compile"
+])
+ ])
+dnl Redefine AC_CHECK_DECL so that it starts with an invocation of
+dnl gl_COMPILER_PREPARE_CHECK_DECL.
+m4_define([AC_CHECK_DECL],
+ [gl_COMPILER_PREPARE_CHECK_DECL dnl
+]m4_defn([AC_CHECK_DECL]))
+
# gl_00GNULIB
# -----------
# Witness macro that this file has been included. Needed to force
diff --git a/m4/__inline.m4 b/m4/__inline.m4
index 3d0c479..520c8c4 100644
--- a/m4/__inline.m4
+++ b/m4/__inline.m4
@@ -1,5 +1,5 @@
# Test for __inline keyword
-dnl Copyright 2017-2018 Free Software Foundation, Inc.
+dnl Copyright 2017-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/absolute-header.m4 b/m4/absolute-header.m4
index 4e67e5f..39726ba 100644
--- a/m4/absolute-header.m4
+++ b/m4/absolute-header.m4
@@ -1,5 +1,5 @@
# absolute-header.m4 serial 16
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/acl.m4 b/m4/acl.m4
index b64aa84..e459451 100644
--- a/m4/acl.m4
+++ b/m4/acl.m4
@@ -1,7 +1,7 @@
# acl.m4 - check for access control list (ACL) primitives
# serial 23
-# Copyright (C) 2002, 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/alloca.m4 b/m4/alloca.m4
index b9d94e8..5922524 100644
--- a/m4/alloca.m4
+++ b/m4/alloca.m4
@@ -1,5 +1,5 @@
-# alloca.m4 serial 14
-dnl Copyright (C) 2002-2004, 2006-2007, 2009-2018 Free Software Foundation,
+# alloca.m4 serial 15
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -37,6 +37,13 @@ AC_DEFUN([gl_FUNC_ALLOCA],
fi
AC_SUBST([ALLOCA_H])
AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"])
+
+ if test $ac_cv_working_alloca_h = yes; then
+ HAVE_ALLOCA_H=1
+ else
+ HAVE_ALLOCA_H=0
+ fi
+ AC_SUBST([HAVE_ALLOCA_H])
])
# Prerequisites of lib/alloca.c.
diff --git a/m4/arpa_inet_h.m4 b/m4/arpa_inet_h.m4
index e73dc69..b394494 100644
--- a/m4/arpa_inet_h.m4
+++ b/m4/arpa_inet_h.m4
@@ -1,5 +1,5 @@
-# arpa_inet_h.m4 serial 13
-dnl Copyright (C) 2006, 2008-2018 Free Software Foundation, Inc.
+# arpa_inet_h.m4 serial 14
+dnl Copyright (C) 2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -24,6 +24,8 @@ AC_DEFUN([gl_HEADER_ARPA_INET],
AC_REQUIRE([gl_FEATURES_H])
+ gl_PREREQ_SYS_H_WS2TCPIP
+
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[
diff --git a/m4/assert.m4 b/m4/assert.m4
index 0cad039..d823b9f 100644
--- a/m4/assert.m4
+++ b/m4/assert.m4
@@ -1,6 +1,6 @@
#serial 7
-# Copyright (C) 1998-1999, 2001, 2004, 2008-2018 Free Software Foundation, Inc.
+# Copyright (C) 1998-1999, 2001, 2004, 2008-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/btowc.m4 b/m4/btowc.m4
index 8acdffc..c28ccb2 100644
--- a/m4/btowc.m4
+++ b/m4/btowc.m4
@@ -1,5 +1,5 @@
# btowc.m4 serial 11
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/builtin-expect.m4 b/m4/builtin-expect.m4
index a1eaf96..a6e8895 100644
--- a/m4/builtin-expect.m4
+++ b/m4/builtin-expect.m4
@@ -1,6 +1,6 @@
dnl Check for __builtin_expect.
-dnl Copyright 2016-2018 Free Software Foundation, Inc.
+dnl Copyright 2016-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/canonicalize.m4 b/m4/canonicalize.m4
index 0c23894..bdc5c8f 100644
--- a/m4/canonicalize.m4
+++ b/m4/canonicalize.m4
@@ -1,6 +1,6 @@
-# canonicalize.m4 serial 29
+# canonicalize.m4 serial 31
-dnl Copyright (C) 2003-2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2003-2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -113,10 +113,12 @@ AC_DEFUN([gl_FUNC_REALPATH_WORKS],
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_realpath_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_realpath_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_realpath_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_realpath_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.a conftest.d
diff --git a/m4/close-stream.m4 b/m4/close-stream.m4
deleted file mode 100644
index c9bf62e..0000000
--- a/m4/close-stream.m4
+++ /dev/null
@@ -1,11 +0,0 @@
-#serial 4
-dnl Copyright (C) 2006-2007, 2009-2018 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Prerequisites of lib/close-stream.c.
-AC_DEFUN([gl_CLOSE_STREAM],
-[
- :
-])
diff --git a/m4/close.m4 b/m4/close.m4
index f11b17e..378ec4c 100644
--- a/m4/close.m4
+++ b/m4/close.m4
@@ -1,5 +1,5 @@
# close.m4 serial 9
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/closedir.m4 b/m4/closedir.m4
index 338b5a7..66f6d4e 100644
--- a/m4/closedir.m4
+++ b/m4/closedir.m4
@@ -1,5 +1,5 @@
# closedir.m4 serial 6
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/closeout.m4 b/m4/closeout.m4
deleted file mode 100644
index 6442406..0000000
--- a/m4/closeout.m4
+++ /dev/null
@@ -1,12 +0,0 @@
-# closeout.m4 serial 6
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2018 Free Software Foundation,
-dnl Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Prerequisites of lib/closeout.c.
-AC_DEFUN([gl_CLOSEOUT],
-[
- :
-])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
index bc98201..9b019cf 100644
--- a/m4/codeset.m4
+++ b/m4/codeset.m4
@@ -1,6 +1,6 @@
# codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2020 Free Software
+dnl Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/ctype.m4 b/m4/ctype.m4
index 85a7e3e..0b123d5 100644
--- a/m4/ctype.m4
+++ b/m4/ctype.m4
@@ -1,5 +1,5 @@
# ctype_h.m4 serial 6
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/dirent_h.m4 b/m4/dirent_h.m4
index b054a92..8bef6a0 100644
--- a/m4/dirent_h.m4
+++ b/m4/dirent_h.m4
@@ -1,5 +1,5 @@
# dirent_h.m4 serial 16
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/dirfd.m4 b/m4/dirfd.m4
index 48589b9..d92445e 100644
--- a/m4/dirfd.m4
+++ b/m4/dirfd.m4
@@ -2,7 +2,7 @@
dnl Find out how to get the file descriptor associated with an open DIR*.
-# Copyright (C) 2001-2006, 2008-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2006, 2008-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/dirname.m4 b/m4/dirname.m4
index 820b047..9995ff3 100644
--- a/m4/dirname.m4
+++ b/m4/dirname.m4
@@ -1,5 +1,5 @@
#serial 10 -*- autoconf -*-
-dnl Copyright (C) 2002-2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4
index e99d4a3..c463ac4 100644
--- a/m4/double-slash-root.m4
+++ b/m4/double-slash-root.m4
@@ -1,5 +1,5 @@
# double-slash-root.m4 serial 4 -*- Autoconf -*-
-dnl Copyright (C) 2006, 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/dup2.m4 b/m4/dup2.m4
index c785d37..21b1ecc 100644
--- a/m4/dup2.m4
+++ b/m4/dup2.m4
@@ -1,5 +1,5 @@
#serial 25
-dnl Copyright (C) 2002, 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2005, 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/eealloc.m4 b/m4/eealloc.m4
index a5a4e26..236f373 100644
--- a/m4/eealloc.m4
+++ b/m4/eealloc.m4
@@ -1,5 +1,5 @@
# eealloc.m4 serial 3
-dnl Copyright (C) 2003, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/environ.m4 b/m4/environ.m4
index acee536..bab85f1 100644
--- a/m4/environ.m4
+++ b/m4/environ.m4
@@ -1,5 +1,5 @@
# environ.m4 serial 7
-dnl Copyright (C) 2001-2004, 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/errno_h.m4 b/m4/errno_h.m4
index e1ae295..dd4994f 100644
--- a/m4/errno_h.m4
+++ b/m4/errno_h.m4
@@ -1,5 +1,5 @@
# errno_h.m4 serial 13
-dnl Copyright (C) 2004, 2006, 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2004, 2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/error.m4 b/m4/error.m4
index 280fdce..60c229d 100644
--- a/m4/error.m4
+++ b/m4/error.m4
@@ -1,6 +1,6 @@
#serial 14
-# Copyright (C) 1996-1998, 2001-2004, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998, 2001-2004, 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/extensions.m4 b/m4/extensions.m4
index 71a854f..d7c95ef 100644
--- a/m4/extensions.m4
+++ b/m4/extensions.m4
@@ -1,7 +1,7 @@
# serial 18 -*- Autoconf -*-
# Enable extensions on systems that normally disable them.
-# Copyright (C) 2003, 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
index 3661cbd..75c5008 100644
--- a/m4/extern-inline.m4
+++ b/m4/extern-inline.m4
@@ -1,6 +1,6 @@
dnl 'extern inline' a la ISO C99.
-dnl Copyright 2012-2018 Free Software Foundation, Inc.
+dnl Copyright 2012-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -32,7 +32,7 @@ AC_DEFUN([gl_EXTERN_INLINE],
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
DragonFly; see
- http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
+ http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
FreeBSD; see:
https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
index cffb9de..747b865 100644
--- a/m4/fcntl-o.m4
+++ b/m4/fcntl-o.m4
@@ -1,5 +1,5 @@
# fcntl-o.m4 serial 6
-dnl Copyright (C) 2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fcntl.m4 b/m4/fcntl.m4
index 46b2445..562ae23 100644
--- a/m4/fcntl.m4
+++ b/m4/fcntl.m4
@@ -1,5 +1,5 @@
# fcntl.m4 serial 9
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fcntl_h.m4 b/m4/fcntl_h.m4
index 9fd3ab1..6b25393 100644
--- a/m4/fcntl_h.m4
+++ b/m4/fcntl_h.m4
@@ -1,6 +1,6 @@
-# serial 15
+# serial 16
# Configure fcntl.h.
-dnl Copyright (C) 2006-2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -37,6 +37,7 @@ AC_DEFUN([gl_FCNTL_MODULE_INDICATOR],
AC_DEFUN([gl_FCNTL_H_DEFAULTS],
[
+ GNULIB_CREAT=0; AC_SUBST([GNULIB_CREAT])
GNULIB_FCNTL=0; AC_SUBST([GNULIB_FCNTL])
GNULIB_NONBLOCKING=0; AC_SUBST([GNULIB_NONBLOCKING])
GNULIB_OPEN=0; AC_SUBST([GNULIB_OPEN])
@@ -44,6 +45,7 @@ AC_DEFUN([gl_FCNTL_H_DEFAULTS],
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL])
HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT])
+ REPLACE_CREAT=0; AC_SUBST([REPLACE_CREAT])
REPLACE_FCNTL=0; AC_SUBST([REPLACE_FCNTL])
REPLACE_OPEN=0; AC_SUBST([REPLACE_OPEN])
REPLACE_OPENAT=0; AC_SUBST([REPLACE_OPENAT])
diff --git a/m4/fdopen.m4 b/m4/fdopen.m4
index bff80ab..b1909db 100644
--- a/m4/fdopen.m4
+++ b/m4/fdopen.m4
@@ -1,5 +1,5 @@
# fdopen.m4 serial 4
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fflush.m4 b/m4/fflush.m4
index 9098b10..620d1a7 100644
--- a/m4/fflush.m4
+++ b/m4/fflush.m4
@@ -1,6 +1,6 @@
# fflush.m4 serial 17
-# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# Copyright (C) 2007-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -57,7 +57,7 @@ AC_DEFUN([gl_FUNC_FFLUSH_STDIN],
if (lseek (fd, 0, SEEK_CUR) != 5)
{ fclose (f); return 5; }
/* Verify behaviour of fflush after ungetc. See
- <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
+ <https://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
/* Verify behaviour of fflush after a backup ungetc. This fails on
mingw. */
c = fgetc (f);
diff --git a/m4/flexmember.m4 b/m4/flexmember.m4
index db93cf3..90f3ddd 100644
--- a/m4/flexmember.m4
+++ b/m4/flexmember.m4
@@ -1,7 +1,7 @@
# serial 5
# Check for flexible array member support.
-# Copyright (C) 2006, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -34,12 +34,10 @@ AC_DEFUN([AC_C_FLEXIBLE_ARRAY_MEMBER],
AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [],
[Define to nothing if C supports flexible array members, and to
1 if it does not. That way, with a declaration like 'struct s
- { int n; double d@<:@FLEXIBLE_ARRAY_MEMBER@:>@; };', the struct hack
+ { int n; short d@<:@FLEXIBLE_ARRAY_MEMBER@:>@; };', the struct hack
can be used with pre-C99 compilers.
- When computing the size of such an object, don't use 'sizeof (struct s)'
- as it overestimates the size. Use 'offsetof (struct s, d)' instead.
- Don't use 'offsetof (struct s, d@<:@0@:>@)', as this doesn't work with
- MSVC and with C++ compilers.])
+ Use 'FLEXSIZEOF (struct s, d, N * sizeof (short))' to calculate
+ the size in bytes of such a struct containing an N-element array.])
else
AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [1])
fi
diff --git a/m4/fpending.m4 b/m4/fpending.m4
index c897073..ea9725e 100644
--- a/m4/fpending.m4
+++ b/m4/fpending.m4
@@ -1,6 +1,6 @@
# serial 22
-# Copyright (C) 2000-2001, 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2000-2001, 2004-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/fpurge.m4 b/m4/fpurge.m4
index 99d1fc4..890c3e7 100644
--- a/m4/fpurge.m4
+++ b/m4/fpurge.m4
@@ -1,5 +1,5 @@
-# fpurge.m4 serial 8
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+# fpurge.m4 serial 10
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -7,12 +7,13 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_FPURGE],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CHECK_FUNCS_ONCE([fpurge])
AC_CHECK_FUNCS_ONCE([__fpurge])
AC_CHECK_DECLS([fpurge], , , [[#include <stdio.h>]])
if test "x$ac_cv_func_fpurge" = xyes; then
HAVE_FPURGE=1
- # Detect BSD bug. Only cygwin 1.7 is known to be immune.
+ # Detect BSD bug. Only cygwin 1.7 and musl are known to be immune.
AC_CACHE_CHECK([whether fpurge works], [gl_cv_func_fpurge_works],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
@@ -48,11 +49,20 @@ AC_DEFUN([gl_FUNC_FPURGE],
return 13;
return 0;
])],
- [gl_cv_func_fpurge_works=yes], [gl_cv_func_fpurge_works=no],
- [gl_cv_func_fpurge_works='guessing no'])])
- if test "x$gl_cv_func_fpurge_works" != xyes; then
- REPLACE_FPURGE=1
- fi
+ [gl_cv_func_fpurge_works=yes],
+ [gl_cv_func_fpurge_works=no],
+ [case "$host_os" in
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_fpurge_works="guessing yes" ;;
+ # Otherwise obey --enable-cross-guesses.
+ *) gl_cv_func_fpurge_works="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_fpurge_works" in
+ *yes) ;;
+ *) REPLACE_FPURGE=1 ;;
+ esac
else
HAVE_FPURGE=0
fi
diff --git a/m4/freading.m4 b/m4/freading.m4
index 59a3528..440c241 100644
--- a/m4/freading.m4
+++ b/m4/freading.m4
@@ -1,5 +1,5 @@
# freading.m4 serial 1
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fseek.m4 b/m4/fseek.m4
index 4a9ac7e..e36508c 100644
--- a/m4/fseek.m4
+++ b/m4/fseek.m4
@@ -1,5 +1,5 @@
# fseek.m4 serial 4
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fseeko.m4 b/m4/fseeko.m4
index 86c246e..1a10515 100644
--- a/m4/fseeko.m4
+++ b/m4/fseeko.m4
@@ -1,5 +1,5 @@
# fseeko.m4 serial 19
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fstat.m4 b/m4/fstat.m4
index f7fc383..53c0896 100644
--- a/m4/fstat.m4
+++ b/m4/fstat.m4
@@ -1,5 +1,5 @@
# fstat.m4 serial 6
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/ftell.m4 b/m4/ftell.m4
index 0ae8a92..22055d4 100644
--- a/m4/ftell.m4
+++ b/m4/ftell.m4
@@ -1,5 +1,5 @@
# ftell.m4 serial 3
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/ftello.m4 b/m4/ftello.m4
index b8fc70d..4c629c0 100644
--- a/m4/ftello.m4
+++ b/m4/ftello.m4
@@ -1,5 +1,5 @@
# ftello.m4 serial 13
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/ftruncate.m4 b/m4/ftruncate.m4
index ffeb4e6..041f542 100644
--- a/m4/ftruncate.m4
+++ b/m4/ftruncate.m4
@@ -2,7 +2,7 @@
# See if we need to emulate a missing ftruncate function using chsize.
-# Copyright (C) 2000-2001, 2003-2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2000-2001, 2003-2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -20,7 +20,7 @@ AC_DEFUN([gl_FUNC_FTRUNCATE],
dnl The MSVCRT _chsize() function only accepts a 32-bit file size,
dnl and the mingw64 ftruncate64() function is unreliable (it may
dnl delete the file, see
- dnl <http://mingw-w64.sourcearchive.com/documentation/2.0-1/ftruncate64_8c_source.html>).
+ dnl <https://web.archive.org/web/20160425005423/http://mingw-w64.sourcearchive.com/documentation/2.0-1/ftruncate64_8c_source.html>).
dnl Use gnulib's ftruncate() implementation instead.
REPLACE_FTRUNCATE=1
;;
diff --git a/m4/fwriting.m4 b/m4/fwriting.m4
index 2da1653..4d7cd3e 100644
--- a/m4/fwriting.m4
+++ b/m4/fwriting.m4
@@ -1,5 +1,5 @@
# fwriting.m4 serial 2
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/getcwd.m4 b/m4/getcwd.m4
index 019934d..ba68c5f 100644
--- a/m4/getcwd.m4
+++ b/m4/getcwd.m4
@@ -1,12 +1,12 @@
# getcwd.m4 - check for working getcwd that is compatible with glibc
-# Copyright (C) 2001, 2003-2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003-2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# Written by Paul Eggert.
-# serial 16
+# serial 18
AC_DEFUN([gl_FUNC_GETCWD_NULL],
[
@@ -50,10 +50,12 @@ AC_DEFUN([gl_FUNC_GETCWD_NULL],
[[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_getcwd_null="guessing yes";;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_getcwd_null="guessing yes";;
# Guess yes on Cygwin.
cygwin*) gl_cv_func_getcwd_null="guessing yes";;
- # If we don't know, assume the worst.
- *) gl_cv_func_getcwd_null="guessing no";;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_getcwd_null="$gl_cross_guess_normal";;
esac
]])])
])
@@ -125,7 +127,7 @@ AC_DEFUN([gl_FUNC_GETCWD],
dnl Define HAVE_MINIMALLY_WORKING_GETCWD and HAVE_PARTLY_WORKING_GETCWD
dnl if appropriate.
case "$gl_cv_func_getcwd_path_max" in
- "no"|"no, it has the AIX bug") ;;
+ *"no" | *"no, it has the AIX bug") ;;
*)
AC_DEFINE([HAVE_MINIMALLY_WORKING_GETCWD], [1],
[Define to 1 if getcwd minimally works, that is, its result can be
@@ -133,12 +135,12 @@ AC_DEFUN([gl_FUNC_GETCWD],
;;
esac
case "$gl_cv_func_getcwd_path_max" in
- "no, but it is partly working")
+ *"no, but it is partly working")
AC_DEFINE([HAVE_PARTLY_WORKING_GETCWD], [1],
[Define to 1 if getcwd works, except it sometimes fails when it
shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT.])
;;
- "yes, but with shorter paths")
+ *"yes, but with shorter paths")
AC_DEFINE([HAVE_GETCWD_SHORTER], [1],
[Define to 1 if getcwd works, but with shorter paths
than is generally tested with the replacement.])
diff --git a/m4/getdelim.m4 b/m4/getdelim.m4
index e50af81..9f4c7f6 100644
--- a/m4/getdelim.m4
+++ b/m4/getdelim.m4
@@ -1,6 +1,6 @@
-# getdelim.m4 serial 12
+# getdelim.m4 serial 14
-dnl Copyright (C) 2005-2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2005-2007, 2009-2020 Free Software Foundation, Inc.
dnl
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,6 +11,7 @@ AC_PREREQ([2.59])
AC_DEFUN([gl_FUNC_GETDELIM],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
dnl Persuade glibc <stdio.h> to declare getdelim().
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
@@ -21,9 +22,10 @@ AC_DEFUN([gl_FUNC_GETDELIM],
if test $ac_cv_func_getdelim = yes; then
HAVE_GETDELIM=1
dnl Found it in some library. Verify that it works.
- AC_CACHE_CHECK([for working getdelim function], [gl_cv_func_working_getdelim],
- [echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ AC_CACHE_CHECK([for working getdelim function],
+ [gl_cv_func_working_getdelim],
+ [echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
@@ -53,25 +55,31 @@ AC_DEFUN([gl_FUNC_GETDELIM],
fclose (in);
return 0;
}
- ]])], [gl_cv_func_working_getdelim=yes] dnl The library version works.
- , [gl_cv_func_working_getdelim=no] dnl The library version does NOT work.
- , dnl We're cross compiling. Assume it works on glibc2 systems.
- [AC_EGREP_CPP([Lucky GNU user],
- [
+ ]])],
+ [gl_cv_func_working_getdelim=yes],
+ [gl_cv_func_working_getdelim=no],
+ [dnl We're cross compiling.
+ dnl Guess it works on glibc2 systems and musl systems.
+ AC_EGREP_CPP([Lucky GNU user],
+ [
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ >= 2) && !defined __UCLIBC__
Lucky GNU user
#endif
#endif
- ],
- [gl_cv_func_working_getdelim="guessing yes"],
- [gl_cv_func_working_getdelim="guessing no"])]
- )])
+ ],
+ [gl_cv_func_working_getdelim="guessing yes"],
+ [case "$host_os" in
+ *-musl*) gl_cv_func_working_getdelim="guessing yes" ;;
+ *) gl_cv_func_working_getdelim="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+ ])
case "$gl_cv_func_working_getdelim" in
- *no)
- REPLACE_GETDELIM=1
- ;;
+ *yes) ;;
+ *) REPLACE_GETDELIM=1 ;;
esac
else
HAVE_GETDELIM=0
diff --git a/m4/getdtablesize.m4 b/m4/getdtablesize.m4
index 4cc1a8f..ab2e3fe 100644
--- a/m4/getdtablesize.m4
+++ b/m4/getdtablesize.m4
@@ -1,5 +1,5 @@
# getdtablesize.m4 serial 7
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/getopt.m4 b/m4/getopt.m4
index 0496250..595483d 100644
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,5 +1,5 @@
-# getopt.m4 serial 46
-dnl Copyright (C) 2002-2006, 2008-2018 Free Software Foundation, Inc.
+# getopt.m4 serial 47
+dnl Copyright (C) 2002-2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -302,8 +302,10 @@ dnl is ambiguous with environment values that contain newlines.
]])],
[gl_cv_func_getopt_gnu=yes],
[gl_cv_func_getopt_gnu=no],
- [dnl Cross compiling. Assume the worst, even on glibc platforms.
- gl_cv_func_getopt_gnu="guessing no"
+ [dnl Cross compiling.
+ dnl Assume the worst, even on glibc platforms.
+ dnl But obey --enable-cross-guesses.
+ gl_cv_func_getopt_gnu="$gl_cross_guess_normal"
])
case $gl_had_POSIXLY_CORRECT in
exported) ;;
diff --git a/m4/getpagesize.m4 b/m4/getpagesize.m4
index eb17d60..8f0f046 100644
--- a/m4/getpagesize.m4
+++ b/m4/getpagesize.m4
@@ -1,5 +1,5 @@
# getpagesize.m4 serial 10
-dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2018 Free Software Foundation,
+dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/getprogname.m4 b/m4/getprogname.m4
index 3a9ba8b..6baefc9 100644
--- a/m4/getprogname.m4
+++ b/m4/getprogname.m4
@@ -1,6 +1,6 @@
# getprogname.m4 - check for getprogname or replacements for it
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/gettimeofday.m4 b/m4/gettimeofday.m4
index 198695e..c72b3ea 100644
--- a/m4/gettimeofday.m4
+++ b/m4/gettimeofday.m4
@@ -1,6 +1,6 @@
-# serial 25
+# serial 27
-# Copyright (C) 2001-2003, 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003, 2005, 2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -105,10 +105,12 @@ AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER],
case "$host_os" in
# Guess all is fine on glibc systems.
*-gnu* | gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
+ # Guess all is fine on musl systems.
+ *-musl*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_gettimeofday_clobber="$gl_cross_guess_inverted" ;;
esac
])])
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
index 126aa1a..ece484b 100644
--- a/m4/glibc21.m4
+++ b/m4/glibc21.m4
@@ -1,5 +1,5 @@
# glibc21.m4 serial 5
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2018 Free Software Foundation,
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
index 2b253da..6c4cad6 100644
--- a/m4/gnulib-common.m4
+++ b/m4/gnulib-common.m4
@@ -1,5 +1,5 @@
-# gnulib-common.m4 serial 41
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# gnulib-common.m4 serial 46
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -17,10 +17,20 @@ AC_DEFUN([gl_COMMON_BODY], [
AH_VERBATIM([_Noreturn],
[/* The _Noreturn keyword of C11. */
#ifndef _Noreturn
-# if 201103 <= (defined __cplusplus ? __cplusplus : 0)
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
-# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
- || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
/* _Noreturn works as-is. */
# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
# define _Noreturn __attribute__ ((__noreturn__))
@@ -85,6 +95,60 @@ AC_DEFUN([gl_COMMON_BODY], [
# define _GL_ATTRIBUTE_MALLOC /* empty */
#endif
])
+ AH_VERBATIM([async_safe],
+[/* The _GL_ASYNC_SAFE marker should be attached to functions that are
+ signal handlers (for signals other than SIGABRT, SIGPIPE) or can be
+ invoked from such signal handlers. Such functions have some restrictions:
+ * All functions that it calls should be marked _GL_ASYNC_SAFE as well,
+ or should be listed as async-signal-safe in POSIX
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04>
+ section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in
+ particular, are NOT async-signal-safe.
+ * All memory locations (variables and struct fields) that these functions
+ access must be marked 'volatile'. This holds for both read and write
+ accesses. Otherwise the compiler might optimize away stores to and
+ reads from such locations that occur in the program, depending on its
+ data flow analysis. For example, when the program contains a loop
+ that is intended to inspect a variable set from within a signal handler
+ while (!signal_occurred)
+ ;
+ the compiler is allowed to transform this into an endless loop if the
+ variable 'signal_occurred' is not declared 'volatile'.
+ Additionally, recall that:
+ * A signal handler should not modify errno (except if it is a handler
+ for a fatal signal and ends by raising the same signal again, thus
+ provoking the termination of the process). If it invokes a function
+ that may clobber errno, it needs to save and restore the value of
+ errno. */
+#define _GL_ASYNC_SAFE
+])
+ dnl Hint which direction to take regarding cross-compilation guesses:
+ dnl When a user installs a program on a platform they are not intimately
+ dnl familiar with, --enable-cross-guesses=conservative is the appropriate
+ dnl choice. It implements the "If we don't know, assume the worst" principle.
+ dnl However, when an operating system developer (on a platform which is not
+ dnl yet known to gnulib) builds packages for their platform, they want to
+ dnl expose, not hide, possible platform bugs; in this case,
+ dnl --enable-cross-guesses=risky is the appropriate choice.
+ dnl Sets the variables
+ dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad),
+ dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad).
+ AC_ARG_ENABLE([cross-guesses],
+ [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}],
+ [specify policy for cross-compilation guesses])],
+ [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then
+ AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses])
+ enableval=conservative
+ fi
+ gl_cross_guesses="$enableval"],
+ [gl_cross_guesses=conservative])
+ if test $gl_cross_guesses = risky; then
+ gl_cross_guess_normal="guessing yes"
+ gl_cross_guess_inverted="guessing no"
+ else
+ gl_cross_guess_normal="guessing no"
+ gl_cross_guess_inverted="guessing yes"
+ fi
dnl Preparation for running test programs:
dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
dnl to /dev/tty, so they can be redirected to log files. Such diagnostics
@@ -351,12 +415,13 @@ AC_DEFUN([AC_C_RESTRICT],
nothing if this is not supported. Do not define if restrict is
supported directly. */
#undef restrict
-/* Work around a bug in Sun C++: it does not support _Restrict or
- __restrict__, even though the corresponding Sun C compiler ends up with
- "#define restrict _Restrict" or "#define restrict __restrict__" in the
- previous line. Perhaps some future version of Sun C++ will work with
- restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
-#if defined __SUNPRO_CC && !defined __RESTRICT
+/* Work around a bug in older versions of Sun C++, which did not
+ #define __restrict__ or support _Restrict or __restrict__
+ even though the corresponding Sun C compiler ended up with
+ "#define restrict _Restrict" or "#define restrict __restrict__"
+ in the previous line. This workaround can be removed once
+ we assume Oracle Developer Studio 12.5 (2016) or later. */
+#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__
# define _Restrict
# define __restrict__
#endif])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 0d8b64f..dff0d58 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -1,5 +1,5 @@
# DO NOT EDIT! GENERATED AUTOMATICALLY!
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 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
@@ -114,7 +114,7 @@ AC_DEFUN([gl_EARLY],
# Code from module fdopen:
# Code from module fdopen-tests:
# Code from module fflush:
- AC_REQUIRE([AC_FUNC_FSEEKO])
+ AC_REQUIRE([gl_SET_LARGEFILE_SOURCE])
# Code from module fflush-tests:
# Code from module fgetc-tests:
# Code from module file-has-acl:
@@ -132,14 +132,14 @@ AC_DEFUN([gl_EARLY],
# Code from module fseek:
# Code from module fseek-tests:
# Code from module fseeko:
- AC_REQUIRE([AC_FUNC_FSEEKO])
+ AC_REQUIRE([gl_SET_LARGEFILE_SOURCE])
# Code from module fseeko-tests:
# Code from module fstat:
# Code from module fstat-tests:
# Code from module ftell:
# Code from module ftell-tests:
# Code from module ftello:
- AC_REQUIRE([AC_FUNC_FSEEKO])
+ AC_REQUIRE([gl_SET_LARGEFILE_SOURCE])
# Code from module ftello-tests:
# Code from module ftruncate:
# Code from module ftruncate-tests:
@@ -170,7 +170,7 @@ AC_DEFUN([gl_EARLY],
# Code from module gnumakefile:
# Code from module gnupload:
# Code from module hard-locale:
- # Code from module havelib:
+ # Code from module hard-locale-tests:
# Code from module ignore-value:
# Code from module ignore-value-tests:
# Code from module include_next:
@@ -246,11 +246,19 @@ AC_DEFUN([gl_EARLY],
# Code from module opendir:
# Code from module pathmax:
# Code from module pathmax-tests:
+ # Code from module perl:
# Code from module perror:
# Code from module perror-tests:
# Code from module pipe-posix:
# Code from module pipe-posix-tests:
# Code from module progname:
+ # Code from module pthread-h:
+ gl_ANYTHREADLIB_EARLY
+ # Code from module pthread-h-tests:
+ # Code from module pthread-thread:
+ # Code from module pthread-thread-tests:
+ # Code from module pthread_sigmask:
+ # Code from module pthread_sigmask-tests:
# Code from module putenv:
# Code from module qcopy-acl:
# Code from module qset-acl:
@@ -274,12 +282,16 @@ AC_DEFUN([gl_EARLY],
# Code from module rmdir:
# Code from module rmdir-tests:
# Code from module same-inode:
+ # Code from module sched:
+ # Code from module sched-tests:
# Code from module select:
# Code from module select-tests:
# Code from module selinux-h:
# Code from module setenv:
# Code from module setenv-tests:
# Code from module setlocale:
+ # Code from module setlocale-null:
+ # Code from module setlocale-null-tests:
# Code from module setlocale-tests:
# Code from module setsockopt:
# Code from module setsockopt-tests:
@@ -312,10 +324,9 @@ AC_DEFUN([gl_EARLY],
# Code from module stdalign-tests:
# Code from module stdarg:
dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
- dnl for the builtin va_copy to work. With Autoconf 2.60 or later,
- dnl gl_PROG_CC_C99 arranges for this. With older Autoconf gl_PROG_CC_C99
- dnl shouldn't hurt, though installers are on their own to set c99 mode.
+ dnl for the builtin va_copy to work. gl_PROG_CC_C99 arranges for this.
gl_PROG_CC_C99
+ # Code from module stdarg-tests:
# Code from module stdbool:
# Code from module stdbool-tests:
# Code from module stddef:
@@ -356,6 +367,8 @@ AC_DEFUN([gl_EARLY],
# Code from module tempname:
# Code from module test-framework-sh:
# Code from module test-framework-sh-tests:
+ # Code from module thread:
+ # Code from module thread-tests:
# Code from module threadlib:
gl_THREADLIB_EARLY
# Code from module time:
@@ -384,6 +397,12 @@ AC_DEFUN([gl_EARLY],
# Code from module wctomb:
# Code from module wctype-h:
# Code from module wctype-h-tests:
+ # Code from module windows-mutex:
+ # Code from module windows-once:
+ # Code from module windows-recmutex:
+ # Code from module windows-rwlock:
+ # Code from module windows-thread:
+ # Code from module windows-tls:
# Code from module xalloc:
# Code from module xalloc-die:
# Code from module xalloc-die-tests:
@@ -424,9 +443,7 @@ AC_DEFUN([gl_INIT],
gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name])
gl_STDLIB_MODULE_INDICATOR([realpath])
gl_UNISTD_MODULE_INDICATOR([chdir])
- gl_CLOSE_STREAM
gl_MODULE_INDICATOR([close-stream])
- gl_CLOSEOUT
gl_CTYPE_H
gl_DIRNAME_LGPL
gl_DOUBLE_SLASH_ROOT
@@ -441,6 +458,7 @@ AC_DEFUN([gl_INIT],
AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
AC_REQUIRE([gl_EXTERN_INLINE])
gl_FCNTL_H
+ AC_C_FLEXIBLE_ARRAY_MEMBER
gl_FUNC_FPENDING
if test $gl_cv_func___fpending = no; then
AC_LIBOBJ([fpending])
@@ -478,6 +496,7 @@ AC_DEFUN([gl_INIT],
GNULIB_GL_UNISTD_H_GETOPT=1
fi
AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
+ gl_UNISTD_MODULE_INDICATOR([getopt-posix])
gl_FUNC_GETPROGNAME
AC_SUBST([LIBINTL])
AC_SUBST([LTLIBINTL])
@@ -497,6 +516,10 @@ AC_DEFUN([gl_INIT],
m4_defn([m4_PACKAGE_VERSION])), [1], [],
[AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
[GNUmakefile=$GNUmakefile])])
+ AC_REQUIRE([gl_FUNC_SETLOCALE_NULL])
+ LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL"
+ AC_SUBST([LIB_HARD_LOCALE])
+ gl_INTTYPES_INCOMPLETE
gl_FUNC_ISBLANK
if test $HAVE_ISBLANK = 0; then
AC_LIBOBJ([isblank])
@@ -530,6 +553,7 @@ AC_DEFUN([gl_INIT],
AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER],
[AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
AC_REQUIRE([AC_PROG_SED])
+ AC_REQUIRE([AC_PROG_GREP])
gl_FUNC_MALLOC_POSIX
if test $REPLACE_MALLOC = 1; then
AC_LIBOBJ([malloc])
@@ -545,6 +569,11 @@ AC_DEFUN([gl_INIT],
gl_FUNC_MBRTOWC
if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
AC_LIBOBJ([mbrtowc])
+ if test $REPLACE_MBSTATE_T = 1; then
+ AC_LIBOBJ([lc-charset-dispatch])
+ AC_LIBOBJ([mbtowc-lock])
+ gl_PREREQ_MBTOWC_LOCK
+ fi
gl_PREREQ_MBRTOWC
fi
gl_WCHAR_MODULE_INDICATOR([mbrtowc])
@@ -555,7 +584,7 @@ AC_DEFUN([gl_INIT],
fi
gl_WCHAR_MODULE_INDICATOR([mbsinit])
gl_FUNC_MBTOWC
- if test $REPLACE_MBTOWC = 1; then
+ if test $HAVE_MBTOWC = 0 || test $REPLACE_MBTOWC = 1; then
AC_LIBOBJ([mbtowc])
gl_PREREQ_MBTOWC
fi
@@ -610,6 +639,7 @@ AC_DEFUN([gl_INIT],
AC_FUNC_OBSTACK
dnl Note: AC_FUNC_OBSTACK does AC_LIBSOURCES([obstack.h, obstack.c]).
gl_PATHMAX
+ gl_PERL
AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
gl_QUOTE
@@ -640,6 +670,12 @@ AC_DEFUN([gl_INIT],
if test "$with_selinux" != no && test "$ac_cv_header_selinux_selinux_h" = yes; then
AC_LIBOBJ([getfilecon])
fi
+ gl_FUNC_SETLOCALE_NULL
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+ AC_LIBOBJ([setlocale-lock])
+ gl_PREREQ_SETLOCALE_LOCK
+ fi
+ gl_LOCALE_MODULE_INDICATOR([setlocale_null])
gt_TYPE_SSIZE_T
gl_FUNC_STAT
if test $REPLACE_STAT = 1; then
@@ -687,7 +723,7 @@ AC_DEFUN([gl_INIT],
gl_SYS_TYPES_H
AC_PROG_MKDIR_P
gl_FUNC_GEN_TEMPNAME
- gl_THREADLIB
+ AC_REQUIRE([gl_THREADLIB])
gl_HEADER_TIME_H
gl_UNISTD_H
gl_FUNC_GLIBC_UNLOCKED_IO
@@ -712,6 +748,30 @@ AC_DEFUN([gl_INIT],
fi
gl_STDLIB_MODULE_INDICATOR([wctomb])
gl_WCTYPE_H
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw*)
+ AC_LIBOBJ([windows-mutex])
+ ;;
+ esac
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw*)
+ AC_LIBOBJ([windows-once])
+ ;;
+ esac
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw*)
+ AC_LIBOBJ([windows-recmutex])
+ ;;
+ esac
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw*)
+ AC_LIBOBJ([windows-rwlock])
+ ;;
+ esac
gl_XALLOC
# End of code from modules
m4_ifval(gl_LIBSOURCES_LIST, [
@@ -827,7 +887,6 @@ changequote([, ])dnl
gl_STDIO_MODULE_INDICATOR([fflush])
gl_FILE_HAS_ACL
AC_CHECK_DECLS_ONCE([alarm])
- AC_C_FLEXIBLE_ARRAY_MEMBER
gl_FUNC_FPURGE
if test $HAVE_FPURGE = 0 || test $REPLACE_FPURGE = 1; then
AC_LIBOBJ([fpurge])
@@ -882,15 +941,20 @@ changequote([, ])dnl
AC_LIBOBJ([getpagesize])
fi
gl_UNISTD_MODULE_INDICATOR([getpagesize])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ *-musl*) AC_DEFINE([MUSL_LIBC], [1], [Define to 1 on musl libc.]) ;;
+ esac
+ dnl Distinguish OpenBSD >= 6.2 from OpenBSD < 6.2.
+ AC_CHECK_FUNCS_ONCE([duplocale])
gl_FUNC_INET_PTON
- if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1; then
+ if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_PTON = 1; then
AC_LIBOBJ([inet_pton])
gl_PREREQ_INET_PTON
fi
gl_ARPA_INET_MODULE_INDICATOR([inet_pton])
AC_C_BIGENDIAN
gl_INTTYPES_H
- gl_INTTYPES_INCOMPLETE
gl_FUNC_IOCTL
if test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1; then
AC_LIBOBJ([ioctl])
@@ -959,6 +1023,18 @@ changequote([, ])dnl
AC_LIBOBJ([pipe])
fi
gl_UNISTD_MODULE_INDICATOR([pipe])
+ gl_PTHREAD_H
+ gl_PTHREAD_THREAD
+ if test $HAVE_PTHREAD_CREATE = 0 || test $REPLACE_PTHREAD_CREATE = 1; then
+ AC_LIBOBJ([pthread-thread])
+ fi
+ gl_PTHREAD_MODULE_INDICATOR([pthread-thread])
+ gl_FUNC_PTHREAD_SIGMASK
+ if test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1; then
+ AC_LIBOBJ([pthread_sigmask])
+ gl_PREREQ_PTHREAD_SIGMASK
+ fi
+ gl_SIGNAL_MODULE_INDICATOR([pthread_sigmask])
gl_FUNC_PUTENV
if test $REPLACE_PUTENV = 1; then
AC_LIBOBJ([putenv])
@@ -987,6 +1063,7 @@ changequote([, ])dnl
AC_LIBOBJ([realloc])
fi
gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+ gl_SCHED_H
gl_FUNC_SELECT
if test $REPLACE_SELECT = 1; then
AC_LIBOBJ([select])
@@ -1079,6 +1156,7 @@ changequote([, ])dnl
AC_CHECK_FUNCS_ONCE([shutdown])
gl_HEADER_SYS_UIO
AC_PROG_MKDIR_P
+ gl_THREAD
gl_FUNC_UNSETENV
if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
AC_LIBOBJ([unsetenv])
@@ -1093,6 +1171,18 @@ changequote([, ])dnl
gt_LOCALE_FR_UTF8
gt_LOCALE_JA
gt_LOCALE_ZH_CN
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw*)
+ AC_LIBOBJ([windows-thread])
+ ;;
+ esac
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw*)
+ AC_LIBOBJ([windows-tls])
+ ;;
+ esac
m4_popdef([gl_MODULE_INDICATOR_CONDITION])
m4_ifval(gltests_LIBSOURCES_LIST, [
m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
@@ -1190,7 +1280,6 @@ AC_DEFUN([gltests_LIBSOURCES], [
# gnulib-tool and may be removed by future gnulib-tool invocations.
AC_DEFUN([gl_FILE_LIST], [
build-aux/announce-gen
- build-aux/config.rpath
build-aux/do-release-commit-and-tag
build-aux/gendocs.sh
build-aux/git-version-gen
@@ -1245,6 +1334,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/exitfail.h
lib/fcntl.in.h
lib/filename.h
+ lib/flexmember.h
lib/fpending.c
lib/fpending.h
lib/fstat.c
@@ -1273,8 +1363,11 @@ AC_DEFUN([gl_FILE_LIST], [
lib/hard-locale.h
lib/ignore-value.h
lib/intprops.h
+ lib/inttypes.in.h
lib/isblank.c
lib/langinfo.in.h
+ lib/lc-charset-dispatch.c
+ lib/lc-charset-dispatch.h
lib/libc-config.h
lib/limits.in.h
lib/localcharset.c
@@ -1290,9 +1383,13 @@ AC_DEFUN([gl_FILE_LIST], [
lib/malloca.c
lib/malloca.h
lib/mbrlen.c
+ lib/mbrtowc-impl-utf8.h
+ lib/mbrtowc-impl.h
lib/mbrtowc.c
lib/mbsinit.c
lib/mbtowc-impl.h
+ lib/mbtowc-lock.c
+ lib/mbtowc-lock.h
lib/mbtowc.c
lib/memchr.c
lib/memchr.valgrind
@@ -1331,6 +1428,9 @@ AC_DEFUN([gl_FILE_LIST], [
lib/se-selinux.in.h
lib/set-acl.c
lib/set-permissions.c
+ lib/setlocale-lock.c
+ lib/setlocale_null.c
+ lib/setlocale_null.h
lib/stat-macros.h
lib/stat-time.c
lib/stat-time.h
@@ -1374,6 +1474,15 @@ AC_DEFUN([gl_FILE_LIST], [
lib/wctomb.c
lib/wctype-h.c
lib/wctype.in.h
+ lib/windows-initguard.h
+ lib/windows-mutex.c
+ lib/windows-mutex.h
+ lib/windows-once.c
+ lib/windows-once.h
+ lib/windows-recmutex.c
+ lib/windows-recmutex.h
+ lib/windows-rwlock.c
+ lib/windows-rwlock.h
lib/xalloc-die.c
lib/xalloc-oversized.h
lib/xalloc.h
@@ -1388,10 +1497,8 @@ AC_DEFUN([gl_FILE_LIST], [
m4/btowc.m4
m4/builtin-expect.m4
m4/canonicalize.m4
- m4/close-stream.m4
m4/close.m4
m4/closedir.m4
- m4/closeout.m4
m4/codeset.m4
m4/ctype.m4
m4/dirent_h.m4
@@ -1430,7 +1537,6 @@ AC_DEFUN([gl_FILE_LIST], [
m4/gettimeofday.m4
m4/glibc21.m4
m4/gnulib-common.m4
- m4/host-cpu-c-abi.m4
m4/include_next.m4
m4/inet_pton.m4
m4/intl-thread-locale.m4
@@ -1442,9 +1548,6 @@ AC_DEFUN([gl_FILE_LIST], [
m4/langinfo_h.m4
m4/largefile.m4
m4/lcmessage.m4
- m4/lib-ld.m4
- m4/lib-link.m4
- m4/lib-prefix.m4
m4/limits-h.m4
m4/link.m4
m4/localcharset.m4
@@ -1457,7 +1560,6 @@ AC_DEFUN([gl_FILE_LIST], [
m4/localename.m4
m4/localtime-buffer.m4
m4/lock.m4
- m4/longlong.m4
m4/lseek.m4
m4/lstat.m4
m4/malloc.m4
@@ -1487,12 +1589,17 @@ AC_DEFUN([gl_FILE_LIST], [
m4/obstack.m4
m4/off_t.m4
m4/open-cloexec.m4
+ m4/open-slash.m4
m4/open.m4
m4/opendir.m4
m4/pathmax.m4
+ m4/perl.m4
m4/perror.m4
m4/pipe.m4
+ m4/pthread-thread.m4
+ m4/pthread_h.m4
m4/pthread_rwlock_rdlock.m4
+ m4/pthread_sigmask.m4
m4/putenv.m4
m4/quote.m4
m4/quotearg.m4
@@ -1504,11 +1611,13 @@ AC_DEFUN([gl_FILE_LIST], [
m4/regex.m4
m4/rename.m4
m4/rmdir.m4
+ m4/sched_h.m4
m4/select.m4
m4/selinux-context-h.m4
m4/selinux-selinux-h.m4
m4/setenv.m4
m4/setlocale.m4
+ m4/setlocale_null.m4
m4/sigaction.m4
m4/signal_h.m4
m4/signalblocking.m4
@@ -1542,12 +1651,14 @@ AC_DEFUN([gl_FILE_LIST], [
m4/sys_types_h.m4
m4/sys_uio_h.m4
m4/tempname.m4
+ m4/thread.m4
m4/threadlib.m4
m4/time_h.m4
m4/ungetc.m4
m4/unistd_h.m4
m4/unlocked-io.m4
m4/version-etc.m4
+ m4/visibility.m4
m4/warn-on-use.m4
m4/warnings.m4
m4/wchar_h.m4
@@ -1562,6 +1673,7 @@ AC_DEFUN([gl_FILE_LIST], [
tests/dfa-match-aux.c
tests/dfa-match.sh
tests/init.sh
+ tests/locale.c
tests/macros.h
tests/nap.h
tests/null-ptr.h
@@ -1646,6 +1758,7 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-getopt_long.h
tests/test-getprogname.c
tests/test-gettimeofday.c
+ tests/test-hard-locale.c
tests/test-ignore-value.c
tests/test-inet_pton.c
tests/test-init.sh
@@ -1672,6 +1785,8 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-mbrtowc-w32-3.sh
tests/test-mbrtowc-w32-4.sh
tests/test-mbrtowc-w32-5.sh
+ tests/test-mbrtowc-w32-6.sh
+ tests/test-mbrtowc-w32-7.sh
tests/test-mbrtowc-w32.c
tests/test-mbrtowc.c
tests/test-mbrtowc1.sh
@@ -1687,6 +1802,7 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-mkdir.h
tests/test-nanosleep.c
tests/test-netinet_in.c
+ tests/test-nl_langinfo-mt.c
tests/test-nl_langinfo.c
tests/test-nl_langinfo.sh
tests/test-open.c
@@ -1696,6 +1812,10 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-perror.sh
tests/test-perror2.c
tests/test-pipe.c
+ tests/test-pthread-thread.c
+ tests/test-pthread.c
+ tests/test-pthread_sigmask1.c
+ tests/test-pthread_sigmask2.c
tests/test-quotearg-simple.c
tests/test-quotearg.h
tests/test-raise.c
@@ -1708,6 +1828,7 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-rmdir.c
tests/test-rmdir.h
tests/test-sameacls.c
+ tests/test-sched.c
tests/test-select-fd.c
tests/test-select-in.sh
tests/test-select-out.sh
@@ -1723,6 +1844,9 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-setlocale1.sh
tests/test-setlocale2.c
tests/test-setlocale2.sh
+ tests/test-setlocale_null-mt-all.c
+ tests/test-setlocale_null-mt-one.c
+ tests/test-setlocale_null.c
tests/test-setsockopt.c
tests/test-sigaction.c
tests/test-signal-h.c
@@ -1752,6 +1876,8 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-sys_types.c
tests/test-sys_uio.c
tests/test-sys_wait.h
+ tests/test-thread_create.c
+ tests/test-thread_self.c
tests/test-time.c
tests/test-unistd.c
tests/test-unsetenv.c
@@ -1769,6 +1895,8 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-wcrtomb-w32-3.sh
tests/test-wcrtomb-w32-4.sh
tests/test-wcrtomb-w32-5.sh
+ tests/test-wcrtomb-w32-6.sh
+ tests/test-wcrtomb-w32-7.sh
tests/test-wcrtomb-w32.c
tests/test-wcrtomb.c
tests/test-wcrtomb.sh
@@ -1797,7 +1925,6 @@ AC_DEFUN([gl_FILE_LIST], [
tests=lib/fdopen.c
tests=lib/fflush.c
tests=lib/file-has-acl.c
- tests=lib/flexmember.h
tests=lib/fpurge.c
tests=lib/freading.c
tests=lib/freading.h
@@ -1809,8 +1936,9 @@ AC_DEFUN([gl_FILE_LIST], [
tests=lib/getcwd-lgpl.c
tests=lib/getdtablesize.c
tests=lib/getpagesize.c
+ tests=lib/glthread/thread.c
+ tests=lib/glthread/thread.h
tests=lib/inet_pton.c
- tests=lib/inttypes.in.h
tests=lib/ioctl.c
tests=lib/link.c
tests=lib/listen.c
@@ -1825,12 +1953,16 @@ AC_DEFUN([gl_FILE_LIST], [
tests=lib/opendir.c
tests=lib/perror.c
tests=lib/pipe.c
+ tests=lib/pthread-thread.c
+ tests=lib/pthread.in.h
+ tests=lib/pthread_sigmask.c
tests=lib/putenv.c
tests=lib/raise.c
tests=lib/read-file.c
tests=lib/read-file.h
tests=lib/readdir.c
tests=lib/realloc.c
+ tests=lib/sched.in.h
tests=lib/select.c
tests=lib/setenv.c
tests=lib/setlocale.c
@@ -1857,6 +1989,10 @@ AC_DEFUN([gl_FILE_LIST], [
tests=lib/unused-parameter.h
tests=lib/w32sock.h
tests=lib/warn-on-use.h
+ tests=lib/windows-thread.c
+ tests=lib/windows-thread.h
+ tests=lib/windows-tls.c
+ tests=lib/windows-tls.h
top/GNUmakefile
top/README-release
top/maint.mk
diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4
deleted file mode 100644
index cd88070..0000000
--- a/m4/host-cpu-c-abi.m4
+++ /dev/null
@@ -1,644 +0,0 @@
-# host-cpu-c-abi.m4 serial 11
-dnl Copyright (C) 2002-2018 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible and Sam Steingold.
-
-dnl Sets the HOST_CPU variable to the canonical name of the CPU.
-dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
-dnl C language ABI (application binary interface).
-dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
-dnl config.h.
-dnl
-dnl This canonical name can be used to select a particular assembly language
-dnl source file that will interoperate with C code on the given host.
-dnl
-dnl For example:
-dnl * 'i386' and 'sparc' are different canonical names, because code for i386
-dnl will not run on SPARC CPUs and vice versa. They have different
-dnl instruction sets.
-dnl * 'sparc' and 'sparc64' are different canonical names, because code for
-dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
-dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
-dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
-dnl mode, but not both.
-dnl * 'mips' and 'mipsn32' are different canonical names, because they use
-dnl different argument passing and return conventions for C functions, and
-dnl although the instruction set of 'mips' is a large subset of the
-dnl instruction set of 'mipsn32'.
-dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
-dnl different sizes for the C types like 'int' and 'void *', and although
-dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
-dnl * The same canonical name is used for different endiannesses. You can
-dnl determine the endianness through preprocessor symbols:
-dnl - 'arm': test __ARMEL__.
-dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
-dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
-dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
-dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
-dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
-dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
-dnl assembly language source files use such instructions, you will
-dnl need to make the distinction.
-dnl - Speed of execution of the common instruction set is reasonable across
-dnl the entire family of CPUs. If you have assembly language source files
-dnl that are optimized for particular CPU types (like GNU gmp has), you
-dnl will need to make the distinction.
-dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
-AC_DEFUN([gl_HOST_CPU_C_ABI],
-[
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([gl_C_ASM])
- AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
- [case "$host_cpu" in
-
-changequote(,)dnl
- i[4567]86 )
-changequote([,])dnl
- gl_cv_host_cpu_c_abi=i386
- ;;
-
- x86_64 )
- # On x86_64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
- # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
- # with native Windows (mingw, MSVC).
- # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if (defined __x86_64__ || defined __amd64__ \
- || defined _M_X64 || defined _M_AMD64)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __ILP32__ || defined _ILP32
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=x86_64-x32],
- [gl_cv_host_cpu_c_abi=x86_64])],
- [gl_cv_host_cpu_c_abi=i386])
- ;;
-
-changequote(,)dnl
- alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
-changequote([,])dnl
- gl_cv_host_cpu_c_abi=alpha
- ;;
-
- arm* | aarch64 )
- # Assume arm with EABI.
- # On arm64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
- # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef __aarch64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __ILP32__ || defined _ILP32
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=arm64-ilp32],
- [gl_cv_host_cpu_c_abi=arm64])],
- [# Don't distinguish little-endian and big-endian arm, since they
- # don't require different machine code for simple operations and
- # since the user can distinguish them through the preprocessor
- # defines __ARMEL__ vs. __ARMEB__.
- # But distinguish arm which passes floating-point arguments and
- # return values in integer registers (r0, r1, ...) - this is
- # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
- # passes them in float registers (s0, s1, ...) and double registers
- # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
- # sets the preprocessor defines __ARM_PCS (for the first case) and
- # __ARM_PCS_VFP (for the second case), but older GCC does not.
- echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
- # Look for a reference to the register d0 in the .s file.
- AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
- if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
- gl_cv_host_cpu_c_abi=armhf
- else
- gl_cv_host_cpu_c_abi=arm
- fi
- rm -f conftest*
- ])
- ;;
-
- hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
- # On hppa, the C compiler may be generating 32-bit code or 64-bit
- # code. In the latter case, it defines _LP64 and __LP64__.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=hppa64],
- [gl_cv_host_cpu_c_abi=hppa])
- ;;
-
- ia64* )
- # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
- # 32-bit code. In the latter case, it defines _ILP32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef _ILP32
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=ia64-ilp32],
- [gl_cv_host_cpu_c_abi=ia64])
- ;;
-
- mips* )
- # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
- # at 32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=mips64],
- [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
- # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
- # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
- # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if (_MIPS_SIM == _ABIN32)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=mipsn32],
- [gl_cv_host_cpu_c_abi=mips])])
- ;;
-
- powerpc* )
- # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
- # No need to distinguish them here; the caller may distinguish
- # them based on the OS.
- # On powerpc64 systems, the C compiler may still be generating
- # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
- # be generating 64-bit code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __powerpc64__ || defined _ARCH_PPC64
- int ok;
- #else
- error fail
- #endif
- ]])],
- [# On powerpc64, there are two ABIs on Linux: The AIX compatible
- # one and the ELFv2 one. The latter defines _CALL_ELF=2.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined _CALL_ELF && _CALL_ELF == 2
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
- [gl_cv_host_cpu_c_abi=powerpc64])
- ],
- [gl_cv_host_cpu_c_abi=powerpc])
- ;;
-
- rs6000 )
- gl_cv_host_cpu_c_abi=powerpc
- ;;
-
- riscv32 | riscv64 )
- # There are 2 architectures (with variants): rv32* and rv64*.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if __riscv_xlen == 64
- int ok;
- #else
- error fail
- #endif
- ]])],
- [cpu=riscv64],
- [cpu=riscv32])
- # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
- # Size of 'long' and 'void *':
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [main_abi=lp64],
- [main_abi=ilp32])
- # Float ABIs:
- # __riscv_float_abi_double:
- # 'float' and 'double' are passed in floating-point registers.
- # __riscv_float_abi_single:
- # 'float' are passed in floating-point registers.
- # __riscv_float_abi_soft:
- # No values are passed in floating-point registers.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __riscv_float_abi_double
- int ok;
- #else
- error fail
- #endif
- ]])],
- [float_abi=d],
- [AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __riscv_float_abi_single
- int ok;
- #else
- error fail
- #endif
- ]])],
- [float_abi=f],
- [float_abi=''])
- ])
- gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
- ;;
-
- s390* )
- # On s390x, the C compiler may be generating 64-bit (= s390x) code
- # or 31-bit (= s390) code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __LP64__ || defined __s390x__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=s390x],
- [gl_cv_host_cpu_c_abi=s390])
- ;;
-
- sparc | sparc64 )
- # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
- # C compiler still generates 32-bit code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi=sparc64],
- [gl_cv_host_cpu_c_abi=sparc])
- ;;
-
- *)
- gl_cv_host_cpu_c_abi="$host_cpu"
- ;;
- esac
- ])
-
- dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
- HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
- HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
- AC_SUBST([HOST_CPU])
- AC_SUBST([HOST_CPU_C_ABI])
-
- # This was
- # AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
- # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
- # earlier, but KAI C++ 3.2d doesn't like this.
- sed -e 's/-/_/g' >> confdefs.h <<EOF
-#ifndef __${HOST_CPU}__
-#define __${HOST_CPU}__ 1
-#endif
-#ifndef __${HOST_CPU_C_ABI}__
-#define __${HOST_CPU_C_ABI}__ 1
-#endif
-EOF
- AH_TOP([/* CPU and C ABI indicator */
-#ifndef __i386__
-#undef __i386__
-#endif
-#ifndef __x86_64_x32__
-#undef __x86_64_x32__
-#endif
-#ifndef __x86_64__
-#undef __x86_64__
-#endif
-#ifndef __alpha__
-#undef __alpha__
-#endif
-#ifndef __arm__
-#undef __arm__
-#endif
-#ifndef __armhf__
-#undef __armhf__
-#endif
-#ifndef __arm64_ilp32__
-#undef __arm64_ilp32__
-#endif
-#ifndef __arm64__
-#undef __arm64__
-#endif
-#ifndef __hppa__
-#undef __hppa__
-#endif
-#ifndef __hppa64__
-#undef __hppa64__
-#endif
-#ifndef __ia64_ilp32__
-#undef __ia64_ilp32__
-#endif
-#ifndef __ia64__
-#undef __ia64__
-#endif
-#ifndef __m68k__
-#undef __m68k__
-#endif
-#ifndef __mips__
-#undef __mips__
-#endif
-#ifndef __mipsn32__
-#undef __mipsn32__
-#endif
-#ifndef __mips64__
-#undef __mips64__
-#endif
-#ifndef __powerpc__
-#undef __powerpc__
-#endif
-#ifndef __powerpc64__
-#undef __powerpc64__
-#endif
-#ifndef __powerpc64_elfv2__
-#undef __powerpc64_elfv2__
-#endif
-#ifndef __riscv32__
-#undef __riscv32__
-#endif
-#ifndef __riscv64__
-#undef __riscv64__
-#endif
-#ifndef __riscv32_ilp32__
-#undef __riscv32_ilp32__
-#endif
-#ifndef __riscv32_ilp32f__
-#undef __riscv32_ilp32f__
-#endif
-#ifndef __riscv32_ilp32d__
-#undef __riscv32_ilp32d__
-#endif
-#ifndef __riscv64_ilp32__
-#undef __riscv64_ilp32__
-#endif
-#ifndef __riscv64_ilp32f__
-#undef __riscv64_ilp32f__
-#endif
-#ifndef __riscv64_ilp32d__
-#undef __riscv64_ilp32d__
-#endif
-#ifndef __riscv64_lp64__
-#undef __riscv64_lp64__
-#endif
-#ifndef __riscv64_lp64f__
-#undef __riscv64_lp64f__
-#endif
-#ifndef __riscv64_lp64d__
-#undef __riscv64_lp64d__
-#endif
-#ifndef __s390__
-#undef __s390__
-#endif
-#ifndef __s390x__
-#undef __s390x__
-#endif
-#ifndef __sh__
-#undef __sh__
-#endif
-#ifndef __sparc__
-#undef __sparc__
-#endif
-#ifndef __sparc64__
-#undef __sparc64__
-#endif
-])
-
-])
-
-
-dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
-dnl (application binary interface) is a 32-bit one, or to 'no' otherwise.
-dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
-AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
-[
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
- [if test -n "$gl_cv_host_cpu_c_abi"; then
- case "$gl_cv_host_cpu_c_abi" in
- i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
- gl_cv_host_cpu_c_abi_32bit=yes ;;
- *)
- gl_cv_host_cpu_c_abi_32bit=no ;;
- esac
- else
- case "$host_cpu" in
-
-changequote(,)dnl
- i[4567]86 )
-changequote([,])dnl
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- x86_64 )
- # On x86_64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
- # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
- # with native Windows (mingw, MSVC).
- # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if (defined __x86_64__ || defined __amd64__ \
- || defined _M_X64 || defined _M_AMD64) \
- && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- arm* | aarch64 )
- # Assume arm with EABI.
- # On arm64 systems, the C compiler may be generating code in one of
- # these ABIs:
- # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
- # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
- # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
- # On hppa, the C compiler may be generating 32-bit code or 64-bit
- # code. In the latter case, it defines _LP64 and __LP64__.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- ia64* )
- # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
- # 32-bit code. In the latter case, it defines _ILP32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef _ILP32
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=yes],
- [gl_cv_host_cpu_c_abi_32bit=no])
- ;;
-
- mips* )
- # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
- # at 32.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- powerpc* )
- # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
- # No need to distinguish them here; the caller may distinguish
- # them based on the OS.
- # On powerpc64 systems, the C compiler may still be generating
- # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
- # be generating 64-bit code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __powerpc64__ || defined _ARCH_PPC64
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- rs6000 )
- gl_cv_host_cpu_c_abi_32bit=yes
- ;;
-
- riscv32 | riscv64 )
- # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
- # Size of 'long' and 'void *':
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __LP64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- s390* )
- # On s390x, the C compiler may be generating 64-bit (= s390x) code
- # or 31-bit (= s390) code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __LP64__ || defined __s390x__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- sparc | sparc64 )
- # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
- # C compiler still generates 32-bit code.
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_host_cpu_c_abi_32bit=no],
- [gl_cv_host_cpu_c_abi_32bit=yes])
- ;;
-
- *)
- gl_cv_host_cpu_c_abi_32bit=no
- ;;
- esac
- fi
- ])
-
- HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
-])
diff --git a/m4/include_next.m4 b/m4/include_next.m4
index a363cb0..9009e29 100644
--- a/m4/include_next.m4
+++ b/m4/include_next.m4
@@ -1,5 +1,5 @@
# include_next.m4 serial 24
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/inet_pton.m4 b/m4/inet_pton.m4
index 1aaa2e6..4191a39 100644
--- a/m4/inet_pton.m4
+++ b/m4/inet_pton.m4
@@ -1,5 +1,5 @@
-# inet_pton.m4 serial 18
-dnl Copyright (C) 2006, 2008-2018 Free Software Foundation, Inc.
+# inet_pton.m4 serial 19
+dnl Copyright (C) 2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -24,15 +24,16 @@ AC_DEFUN([gl_FUNC_INET_PTON],
INET_PTON_LIB=
gl_PREREQ_SYS_H_WINSOCK2
if test $HAVE_WINSOCK2_H = 1; then
+ dnl It needs to be overridden, because the stdcall calling convention
+ dnl is not compliant with POSIX. Set REPLACE_INET_PTON in order to avoid
+ dnl a name conflict at the linker level, even though the header file
+ dnl <ws2tcpip.h> declares inet_pton only if _WIN32_WINNT >= 0x0600.
+ REPLACE_INET_PTON=1
AC_CHECK_DECLS([inet_pton],,, [[#include <ws2tcpip.h>]])
if test $ac_cv_have_decl_inet_pton = yes; then
- dnl It needs to be overridden, because the stdcall calling convention
- dnl is not compliant with POSIX.
- REPLACE_INET_PTON=1
INET_PTON_LIB="-lws2_32"
else
HAVE_DECL_INET_PTON=0
- HAVE_INET_PTON=0
fi
else
gl_save_LIBS=$LIBS
diff --git a/m4/intl-thread-locale.m4 b/m4/intl-thread-locale.m4
index 661a23f..b4bc839 100644
--- a/m4/intl-thread-locale.m4
+++ b/m4/intl-thread-locale.m4
@@ -1,5 +1,5 @@
-# intl-thread-locale.m4 serial 4
-dnl Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# intl-thread-locale.m4 serial 7
+dnl Copyright (C) 2015-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -17,7 +17,7 @@ dnl Check how to retrieve the name of a per-thread locale (POSIX locale_t).
dnl Sets gt_nameless_locales.
AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME],
[
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([AC_CANONICAL_HOST])
dnl Persuade Solaris <locale.h> to define 'locale_t'.
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
@@ -119,18 +119,20 @@ int main ()
;;
esac
- dnl This code is for future use, in case we some day have to port to a
- dnl platform where the locale_t type does not provide access to the name of
- dnl each locale category. This code has the drawback that it requires the
- dnl gnulib overrides of 'newlocale', 'duplocale', 'freelocale', which is a
- dnl problem for GNU libunistring. Therefore try hard to avoid enabling this
- dnl code!
+ dnl This code is for platforms where the locale_t type does not provide access
+ dnl to the name of each locale category. This code has the drawback that it
+ dnl requires the gnulib overrides of 'newlocale', 'duplocale', 'freelocale',
+ dnl which is a problem for GNU libunistring. Therefore try hard to avoid
+ dnl enabling this code!
gt_nameless_locales=no
- if false; then
- gt_nameless_locales=yes
- AC_DEFINE([HAVE_NAMELESS_LOCALES], [1],
- [Define if the locale_t type does not contain the name of each locale category.])
- fi
+ case "$host_os" in
+ dnl It's needed on AIX 7.2.
+ aix*)
+ gt_nameless_locales=yes
+ AC_DEFINE([HAVE_NAMELESS_LOCALES], [1],
+ [Define if the locale_t type does not contain the name of each locale category.])
+ ;;
+ esac
])
dnl Tests whether uselocale() exists and is usable.
@@ -139,13 +141,15 @@ AC_DEFUN([gt_FUNC_USELOCALE],
[
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
- dnl Persuade Solaris <locale.h> to define 'locale_t'.
+ dnl Persuade glibc and Solaris <locale.h> to define 'locale_t'.
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
AC_CHECK_FUNCS_ONCE([uselocale])
dnl On AIX 7.2, the uselocale() function is not documented and leads to
dnl crashes in subsequent setlocale() invocations.
+ dnl In 2019, some versions of z/OS lack the locale_t type and have a broken
+ dnl uselocale function.
if test $ac_cv_func_uselocale = yes; then
AC_CHECK_HEADERS_ONCE([xlocale.h])
AC_CACHE_CHECK([whether uselocale works],
@@ -156,6 +160,7 @@ AC_DEFUN([gt_FUNC_USELOCALE],
#if HAVE_XLOCALE_H
# include <xlocale.h>
#endif
+locale_t loc1;
int main ()
{
uselocale (NULL);
@@ -164,10 +169,10 @@ int main ()
}]])],
[gt_cv_func_uselocale_works=yes],
[gt_cv_func_uselocale_works=no],
- [# Guess no on AIX, yes otherwise.
+ [# Guess no on AIX and z/OS, yes otherwise.
case "$host_os" in
- aix*) gt_cv_func_uselocale_works="guessing no" ;;
- *) gt_cv_func_uselocale_works="guessing yes" ;;
+ aix* | openedition*) gt_cv_func_uselocale_works="guessing no" ;;
+ *) gt_cv_func_uselocale_works="guessing yes" ;;
esac
])
])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
index 17c1bd4..1c28ce2 100644
--- a/m4/intlmacosx.m4
+++ b/m4/intlmacosx.m4
@@ -1,5 +1,5 @@
-# intlmacosx.m4 serial 6 (gettext-0.19.9)
-dnl Copyright (C) 2004-2014, 2016 Free Software Foundation, Inc.
+# intlmacosx.m4 serial 7 (gettext-0.20.2)
+dnl Copyright (C) 2004-2014, 2016, 2019-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -33,21 +33,15 @@ AC_DEFUN([gt_INTL_MACOSX],
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
[Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
fi
- dnl Check for API introduced in Mac OS X 10.5.
- AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
- [gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <CoreFoundation/CFLocale.h>]],
- [[CFLocaleCopyCurrent();]])],
- [gt_cv_func_CFLocaleCopyCurrent=yes],
- [gt_cv_func_CFLocaleCopyCurrent=no])
- LIBS="$gt_save_LIBS"])
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
- [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
- fi
+ dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent,
+ dnl because in macOS 10.13.4 it has the following behaviour:
+ dnl When two or more languages are specified in the
+ dnl "System Preferences > Language & Region > Preferred Languages" panel,
+ dnl it returns en_CC where CC is the territory (even when English is not among
+ dnl the preferred languages!). What we want instead is what
+ dnl CFLocaleCopyCurrent returned in earlier macOS releases and what
+ dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the
+ dnl first among the preferred languages and CC is the territory.
AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
@@ -64,7 +58,6 @@ AC_DEFUN([gt_INTL_MACOSX],
fi
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
- || test $gt_cv_func_CFLocaleCopyCurrent = yes \
|| test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
fi
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
index c844262..ac40a05 100644
--- a/m4/inttypes-pri.m4
+++ b/m4/inttypes-pri.m4
@@ -1,5 +1,5 @@
# inttypes-pri.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1997-2002, 2006, 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 1997-2002, 2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
index d756f01..d0487d6 100644
--- a/m4/inttypes.m4
+++ b/m4/inttypes.m4
@@ -1,5 +1,5 @@
-# inttypes.m4 serial 27
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# inttypes.m4 serial 28
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -113,10 +113,8 @@ AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],
#if $2
#define CONDITION ($3)
- #elif HAVE_LONG_LONG_INT
- #define CONDITION ($4)
#else
- #define CONDITION 0
+ #define CONDITION ($4)
#endif
int test[CONDITION ? 1 : -1];]])],
[gl_cv_test_$1=yes],
diff --git a/m4/ioctl.m4 b/m4/ioctl.m4
index 835338a..263aaae 100644
--- a/m4/ioctl.m4
+++ b/m4/ioctl.m4
@@ -1,5 +1,5 @@
# ioctl.m4 serial 5
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/isblank.m4 b/m4/isblank.m4
index f98dfbf..5e1b783 100644
--- a/m4/isblank.m4
+++ b/m4/isblank.m4
@@ -1,5 +1,5 @@
# isblank.m4 serial 3
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/langinfo_h.m4 b/m4/langinfo_h.m4
index de077c3..ef92f84 100644
--- a/m4/langinfo_h.m4
+++ b/m4/langinfo_h.m4
@@ -1,5 +1,5 @@
# langinfo_h.m4 serial 8
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/largefile.m4 b/m4/largefile.m4
index bec7cd1..e381339 100644
--- a/m4/largefile.m4
+++ b/m4/largefile.m4
@@ -1,10 +1,27 @@
# Enable large files on systems where this is not the default.
+# Enable support for files on Linux file systems with 64-bit inode numbers.
-# Copyright 1992-1996, 1998-2018 Free Software Foundation, Inc.
+# Copyright 1992-1996, 1998-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO:
+# It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this
+# setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko
+# and ftello in C++ mode as well.
+AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_FUNC_FSEEKO
+ case "$host_os" in
+ hpux*)
+ AC_DEFINE([_LARGEFILE_SOURCE], [1],
+ [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
+ ;;
+ esac
+])
+
# The following implementation works around a problem in autoconf <= 2.69;
# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
# or configures them incorrectly in some cases.
@@ -56,7 +73,10 @@ rm -rf conftest*[]dnl
# By default, many hosts won't let programs access large files;
# one must use special compiler options to get large-file access to work.
# For more details about this brain damage please see:
-# http://www.unix-systems.org/version2/whatsnew/lfs20mar.html
+# http://www.unix.org/version2/whatsnew/lfs20mar.html
+# Additionally, on Linux file systems with 64-bit inodes a file that happens
+# to have a 64-bit inode number cannot be accessed by 32-bit applications on
+# Linux x86/x86_64. This can occur with file systems such as XFS and NFS.
AC_DEFUN([AC_SYS_LARGEFILE],
[AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
index 1c24d6d..9d4de1a 100644
--- a/m4/lcmessage.m4
+++ b/m4/lcmessage.m4
@@ -1,6 +1,6 @@
# lcmessage.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016 Free Software
-dnl Foundation, Inc.
+dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016, 2019-2020 Free
+dnl Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
index 1244ff8..ddc569f 100644
--- a/m4/lib-ld.m4
+++ b/m4/lib-ld.m4
@@ -1,5 +1,5 @@
-# lib-ld.m4 serial 9
-dnl Copyright (C) 1996-2003, 2009-2018 Free Software Foundation, Inc.
+# lib-ld.m4 serial 6
+dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -47,122 +47,73 @@ if test "${PATH_SEPARATOR+set}" != set; then
}
fi
-if test -n "$LD"; then
- AC_MSG_CHECKING([for ld])
-elif test "$GCC" = yes; then
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
+ while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
elif test "$with_gnu_ld" = yes; then
AC_MSG_CHECKING([for GNU ld])
else
AC_MSG_CHECKING([for non-GNU ld])
fi
-if test -n "$LD"; then
- # Let the user override the test with a path.
- :
-else
- AC_CACHE_VAL([acl_cv_path_LD],
- [
- acl_cv_path_LD= # Final result of this test
- ac_prog=ld # Program to search in $PATH
- if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $acl_output in
- # Accept absolute paths.
- [[\\/]]* | ?:[[\\/]]*)
- re_direlt='/[[^/]][[^/]]*/\.\./'
- # Canonicalize the pathname of ld
- acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
- while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
- acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
- done
- # Got the pathname. No search in PATH is needed.
- acl_cv_path_LD="$acl_output"
- ac_prog=
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
- fi
- if test -n "$ac_prog"; then
- # Search for $ac_prog in $PATH.
- acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$acl_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
- esac
- fi
- done
- IFS="$acl_save_ifs"
- fi
- case $host in
- *-*-aix*)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __powerpc64__ || defined _ARCH_PPC64
- int ok;
- #else
- error fail
- #endif
- ]])],
- [# The compiler produces 64-bit code. Add option '-b64' so that the
- # linker groks 64-bit object files.
- case "$acl_cv_path_LD " in
- *" -b64 "*) ;;
- *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
- esac
- ], [])
+AC_CACHE_VAL([acl_cv_path_LD],
+[if test -z "$LD"; then
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
;;
- sparc64-*-netbsd*)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#if defined __sparcv9 || defined __arch64__
- int ok;
- #else
- error fail
- #endif
- ]])],
- [],
- [# The compiler produces 32-bit code. Add option '-m elf32_sparc'
- # so that the linker groks 32-bit object files.
- case "$acl_cv_path_LD " in
- *" -m elf32_sparc "*) ;;
- *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
- esac
- ])
+ *)
+ test "$with_gnu_ld" != yes && break
;;
- esac
- ])
- LD="$acl_cv_path_LD"
-fi
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
if test -n "$LD"; then
AC_MSG_RESULT([$LD])
else
AC_MSG_RESULT([no])
- AC_MSG_ERROR([no acceptable ld found in \$PATH])
fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_LIB_PROG_LD_GNU
])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
index dee3300..3522d99 100644
--- a/m4/lib-link.m4
+++ b/m4/lib-link.m4
@@ -1,12 +1,12 @@
-# lib-link.m4 serial 28
-dnl Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# lib-link.m4 serial 26 (gettext-0.18.2)
+dnl Copyright (C) 2001-2014 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
-AC_PREREQ([2.61])
+AC_PREREQ([2.54])
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies.
@@ -124,8 +124,8 @@ dnl acl_hardcode_direct,
dnl acl_hardcode_minus_L.
AC_DEFUN([AC_LIB_RPATH],
[
- dnl Complain if config.rpath is missing.
- AC_REQUIRE_AUX_FILE([config.rpath])
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
@@ -187,15 +187,17 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+ dnl Autoconf >= 2.61 supports dots in --with options.
+ pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
dnl By default, look in $includedir and $libdir.
use_additional=yes
AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
])
- AC_ARG_WITH(PACK[-prefix],
-[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
- --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
+ AC_ARG_WITH(P_A_C_K[-prefix],
+[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
+ --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
[
if test "X$withval" = "Xno"; then
use_additional=no
@@ -209,7 +211,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && test ! -d "$withval/$acl_libdirstem"; then
+ && ! test -d "$withval/$acl_libdirstem"; then
additional_libdir="$withval/$acl_libdirstem2"
fi
fi
@@ -668,6 +670,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
done
fi
+ popdef([P_A_C_K])
popdef([PACKLIBS])
popdef([PACKUP])
popdef([PACK])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
index 2e90b11..31f49e4 100644
--- a/m4/lib-prefix.m4
+++ b/m4/lib-prefix.m4
@@ -1,11 +1,18 @@
-# lib-prefix.m4 serial 14
-dnl Copyright (C) 2001-2005, 2008-2018 Free Software Foundation, Inc.
+# lib-prefix.m4 serial 7 (gettext-0.18)
+dnl Copyright (C) 2001-2005, 2008-2014 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
dnl to access previously installed libraries. The basic assumption is that
dnl a user will want packages to use other packages he previously installed
@@ -25,9 +32,9 @@ AC_DEFUN([AC_LIB_PREFIX],
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
])
- AC_ARG_WITH([lib-prefix],
-[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir]],
+ AC_LIB_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
[
if test "X$withval" = "Xno"; then
use_additional=no
@@ -167,83 +174,51 @@ AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
-
+ acl_libdirstem=lib
+ acl_libdirstem2=
case "$host_os" in
solaris*)
+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+ dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+ dnl symlink is missing, so we set acl_libdirstem2 too.
AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
- [AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE(
- [[#ifdef _LP64
- int ok;
- #else
- error fail
- #endif
- ]])],
- [gl_cv_solaris_64bit=yes],
- [gl_cv_solaris_64bit=no])
- ]);;
- esac
-
- dnl Allow the user to override the result by setting acl_cv_libdirstems.
- AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
- [acl_cv_libdirstems],
- [acl_libdirstem=lib
- acl_libdirstem2=
- case "$host_os" in
- solaris*)
- dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
- dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
- dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
- dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
- dnl symlink is missing, so we set acl_libdirstem2 too.
- if test $gl_cv_solaris_64bit = yes; then
- acl_libdirstem=lib/64
- case "$host_cpu" in
- sparc*) acl_libdirstem2=lib/sparcv9 ;;
- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
- esac
- fi
- ;;
- *)
- dnl If $CC generates code for a 32-bit ABI, the libraries are
- dnl surely under $prefix/lib, not $prefix/lib64.
- if test "$HOST_CPU_C_ABI_32BIT" != yes; then
- dnl The result is a property of the system. However, non-system
- dnl compilers sometimes have odd library search paths. Therefore
- dnl prefer asking /usr/bin/gcc, if available, rather than $CC.
- searchpath=`(if test -f /usr/bin/gcc \
- && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
- LC_ALL=C /usr/bin/gcc -print-search-dirs; \
- else \
- LC_ALL=C $CC -print-search-dirs; \
- fi) 2>/dev/null \
- | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
+ [AC_EGREP_CPP([sixtyfour bits], [
+#ifdef _LP64
+sixtyfour bits
+#endif
+ ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
+ ])
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- */../ | */.. )
- # Better ignore directories of this form. They are misleading.
- ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
- fi
- ;;
- esac
- test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
- acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
- ])
- # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
- acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
- acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
])
diff --git a/m4/limits-h.m4 b/m4/limits-h.m4
index 3a2cd91..0b4f092 100644
--- a/m4/limits-h.m4
+++ b/m4/limits-h.m4
@@ -1,6 +1,6 @@
dnl Check whether limits.h has needed features.
-dnl Copyright 2016-2018 Free Software Foundation, Inc.
+dnl Copyright 2016-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/link.m4 b/m4/link.m4
index d06b4f2..0d1de80 100644
--- a/m4/link.m4
+++ b/m4/link.m4
@@ -1,5 +1,5 @@
-# link.m4 serial 10
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# link.m4 serial 11
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -43,8 +43,8 @@ AC_DEFUN([gl_FUNC_LINK],
linux-* | linux) gl_cv_func_link_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_link_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_link_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_link_works="$gl_cross_guess_normal" ;;
esac
])
rm -f conftest.a conftest.b conftest.lnk])
diff --git a/m4/localcharset.m4 b/m4/localcharset.m4
index d38a2c9..9d21c4f 100644
--- a/m4/localcharset.m4
+++ b/m4/localcharset.m4
@@ -1,5 +1,5 @@
# localcharset.m4 serial 8
-dnl Copyright (C) 2002, 2004, 2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2004, 2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4
index a37a0d2..5abe052 100644
--- a/m4/locale-fr.m4
+++ b/m4/locale-fr.m4
@@ -1,5 +1,5 @@
# locale-fr.m4 serial 19
-dnl Copyright (C) 2003, 2005-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/locale-ja.m4 b/m4/locale-ja.m4
index 9f16231..0982ab1 100644
--- a/m4/locale-ja.m4
+++ b/m4/locale-ja.m4
@@ -1,5 +1,5 @@
# locale-ja.m4 serial 14
-dnl Copyright (C) 2003, 2005-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/locale-tr.m4 b/m4/locale-tr.m4
index 2f2cf47..75a45b8 100644
--- a/m4/locale-tr.m4
+++ b/m4/locale-tr.m4
@@ -1,5 +1,5 @@
-# locale-tr.m4 serial 11
-dnl Copyright (C) 2003, 2005-2018 Free Software Foundation, Inc.
+# locale-tr.m4 serial 12
+dnl Copyright (C) 2003, 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -21,6 +21,7 @@ changequote(,)dnl
#endif
#include <stdlib.h>
#include <string.h>
+#include <wctype.h>
struct tm t;
char buf[16];
int main () {
diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4
index cfb447f..cde5140 100644
--- a/m4/locale-zh.m4
+++ b/m4/locale-zh.m4
@@ -1,5 +1,5 @@
# locale-zh.m4 serial 14
-dnl Copyright (C) 2003, 2005-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/locale_h.m4 b/m4/locale_h.m4
index e619dcd..32494cf 100644
--- a/m4/locale_h.m4
+++ b/m4/locale_h.m4
@@ -1,5 +1,5 @@
-# locale_h.m4 serial 21
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+# locale_h.m4 serial 24
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -17,6 +17,8 @@ AC_DEFUN([gl_LOCALE_H],
dnl If <stddef.h> is replaced, then <locale.h> must also be replaced.
AC_REQUIRE([gl_STDDEF_H])
+ AC_REQUIRE([gl_LOCALE_T])
+
dnl Solaris 11.0 defines the int_p_*, int_n_* members of 'struct lconv'
dnl only if _LCONV_C99 is defined.
AC_REQUIRE([AC_CANONICAL_HOST])
@@ -37,34 +39,6 @@ AC_DEFUN([gl_LOCALE_H],
[gl_cv_header_locale_h_posix2001=yes],
[gl_cv_header_locale_h_posix2001=no])])
- dnl Check for <xlocale.h>.
- AC_CHECK_HEADERS_ONCE([xlocale.h])
- if test $ac_cv_header_xlocale_h = yes; then
- HAVE_XLOCALE_H=1
- dnl Check whether use of locale_t requires inclusion of <xlocale.h>,
- dnl e.g. on Mac OS X 10.5. If <locale.h> does not define locale_t by
- dnl itself, we assume that <xlocale.h> will do so.
- AC_CACHE_CHECK([whether locale.h defines locale_t],
- [gl_cv_header_locale_has_locale_t],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <locale.h>
- locale_t x;]],
- [[]])],
- [gl_cv_header_locale_has_locale_t=yes],
- [gl_cv_header_locale_has_locale_t=no])
- ])
- if test $gl_cv_header_locale_has_locale_t = yes; then
- gl_cv_header_locale_h_needs_xlocale_h=no
- else
- gl_cv_header_locale_h_needs_xlocale_h=yes
- fi
- else
- HAVE_XLOCALE_H=0
- gl_cv_header_locale_h_needs_xlocale_h=no
- fi
- AC_SUBST([HAVE_XLOCALE_H])
-
dnl Check whether 'struct lconv' is complete.
dnl Bionic libc's 'struct lconv' is just a dummy.
dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x,
@@ -82,7 +56,20 @@ AC_DEFUN([gl_LOCALE_H],
[gl_cv_sys_struct_lconv_ok=no])
])
if test $gl_cv_sys_struct_lconv_ok = no; then
- REPLACE_STRUCT_LCONV=1
+ dnl On native Windows with MSVC, merely define these member names as macros.
+ dnl This avoids trouble in C++ mode.
+ case "$host_os" in
+ mingw*)
+ AC_EGREP_CPP([Special], [
+#ifdef _MSC_VER
+ Special
+#endif
+ ],
+ [],
+ [REPLACE_STRUCT_LCONV=1])
+ ;;
+ *) REPLACE_STRUCT_LCONV=1 ;;
+ esac
fi
dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK.
@@ -99,6 +86,49 @@ AC_DEFUN([gl_LOCALE_H],
[setlocale newlocale duplocale freelocale])
])
+dnl Checks to determine whether the system has the locale_t type,
+dnl and how to obtain it.
+AC_DEFUN([gl_LOCALE_T],
+[
+ dnl Persuade glibc and Solaris <locale.h> to define locale_t.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ dnl Check whether use of locale_t requires inclusion of <xlocale.h>,
+ dnl e.g. on Mac OS X 10.5. If <locale.h> does not define locale_t by
+ dnl itself, we assume that <xlocale.h> will do so.
+ AC_CACHE_CHECK([whether locale.h defines locale_t],
+ [gl_cv_header_locale_has_locale_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <locale.h>
+ locale_t x;]],
+ [[]])],
+ [gl_cv_header_locale_has_locale_t=yes],
+ [gl_cv_header_locale_has_locale_t=no])
+ ])
+
+ dnl Check for <xlocale.h>.
+ AC_CHECK_HEADERS_ONCE([xlocale.h])
+ if test $ac_cv_header_xlocale_h = yes; then
+ HAVE_XLOCALE_H=1
+ if test $gl_cv_header_locale_has_locale_t = yes; then
+ gl_cv_header_locale_h_needs_xlocale_h=no
+ else
+ gl_cv_header_locale_h_needs_xlocale_h=yes
+ fi
+ HAVE_LOCALE_T=1
+ else
+ HAVE_XLOCALE_H=0
+ gl_cv_header_locale_h_needs_xlocale_h=no
+ if test $gl_cv_header_locale_has_locale_t = yes; then
+ HAVE_LOCALE_T=1
+ else
+ HAVE_LOCALE_T=0
+ fi
+ fi
+ AC_SUBST([HAVE_XLOCALE_H])
+])
+
AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
[
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
@@ -110,10 +140,11 @@ AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
AC_DEFUN([gl_LOCALE_H_DEFAULTS],
[
- GNULIB_LOCALECONV=0; AC_SUBST([GNULIB_LOCALECONV])
- GNULIB_SETLOCALE=0; AC_SUBST([GNULIB_SETLOCALE])
- GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE])
- GNULIB_LOCALENAME=0; AC_SUBST([GNULIB_LOCALENAME])
+ GNULIB_LOCALECONV=0; AC_SUBST([GNULIB_LOCALECONV])
+ GNULIB_SETLOCALE=0; AC_SUBST([GNULIB_SETLOCALE])
+ GNULIB_SETLOCALE_NULL=0; AC_SUBST([GNULIB_SETLOCALE_NULL])
+ GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE])
+ GNULIB_LOCALENAME=0; AC_SUBST([GNULIB_LOCALENAME])
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_NEWLOCALE=1; AC_SUBST([HAVE_NEWLOCALE])
HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE])
diff --git a/m4/localeconv.m4 b/m4/localeconv.m4
index 517f398..a926224 100644
--- a/m4/localeconv.m4
+++ b/m4/localeconv.m4
@@ -1,5 +1,5 @@
# localeconv.m4 serial 1
-dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/localename.m4 b/m4/localename.m4
index f093fa5..fa7fe12 100644
--- a/m4/localename.m4
+++ b/m4/localename.m4
@@ -1,5 +1,5 @@
-# localename.m4 serial 5
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+# localename.m4 serial 7
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -7,19 +7,30 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_LOCALENAME],
[
AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
+ AC_REQUIRE([gl_LOCALE_T])
AC_REQUIRE([gt_LC_MESSAGES])
AC_REQUIRE([gt_INTL_THREAD_LOCALE_NAME])
AC_REQUIRE([gt_INTL_MACOSX])
AC_CHECK_HEADERS_ONCE([langinfo.h])
- AC_CHECK_FUNCS([setlocale])
- AC_CHECK_FUNCS_ONCE([newlocale duplocale freelocale])
- if test $ac_cv_func_newlocale != yes; then
+ if test $HAVE_LOCALE_T = 1; then
+ AC_CHECK_FUNCS_ONCE([newlocale duplocale freelocale])
+ gl_func_newlocale="$ac_cv_func_newlocale"
+ gl_func_duplocale="$ac_cv_func_duplocale"
+ gl_func_freelocale="$ac_cv_func_freelocale"
+ else
+ dnl In 2019, some versions of z/OS lack the locale_t type and have broken
+ dnl newlocale, duplocale, freelocale functions.
+ gl_func_newlocale=no
+ gl_func_duplocale=no
+ gl_func_freelocale=no
+ fi
+ if test $gl_func_newlocale != yes; then
HAVE_NEWLOCALE=0
fi
- if test $ac_cv_func_duplocale != yes; then
+ if test $gl_func_duplocale != yes; then
HAVE_DUPLOCALE=0
fi
- if test $ac_cv_func_freelocale != yes; then
+ if test $gl_func_freelocale != yes; then
HAVE_FREELOCALE=0
fi
if test $gt_nameless_locales = yes; then
diff --git a/m4/localtime-buffer.m4 b/m4/localtime-buffer.m4
index 4b3ec57..09df3c9 100644
--- a/m4/localtime-buffer.m4
+++ b/m4/localtime-buffer.m4
@@ -1,5 +1,5 @@
# localtime-buffer.m4 serial 1
-dnl Copyright (C) 2017-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2017-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/lock.m4 b/m4/lock.m4
index dac4c38..1c39591 100644
--- a/m4/lock.m4
+++ b/m4/lock.m4
@@ -1,5 +1,5 @@
# lock.m4 serial 14
-dnl Copyright (C) 2005-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/longlong.m4 b/m4/longlong.m4
deleted file mode 100644
index 582af53..0000000
--- a/m4/longlong.m4
+++ /dev/null
@@ -1,113 +0,0 @@
-# longlong.m4 serial 18
-dnl Copyright (C) 1999-2007, 2009-2018 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Paul Eggert.
-
-AC_PREREQ([2.62])
-
-# Define HAVE_LONG_LONG_INT if 'long long int' works.
-# This can be faster than what's in Autoconf 2.62 through 2.68.
-
-# Note: If the type 'long long int' exists but is only 32 bits large
-# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
-# defined. In this case you can treat 'long long int' like 'long int'.
-
-AC_DEFUN([AC_TYPE_LONG_LONG_INT],
-[
- AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
- AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
- [ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
- dnl If cross compiling, assume the bug is not important, since
- dnl nobody cross compiles for this platform as far as we know.
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[@%:@include <limits.h>
- @%:@ifndef LLONG_MAX
- @%:@ define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- @%:@ define LLONG_MAX (HALF - 1 + HALF)
- @%:@endif]],
- [[long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;]])],
- [],
- [ac_cv_type_long_long_int=no],
- [:])
- fi
- fi])
- if test $ac_cv_type_long_long_int = yes; then
- AC_DEFINE([HAVE_LONG_LONG_INT], [1],
- [Define to 1 if the system has the type 'long long int'.])
- fi
-])
-
-# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
-# This can be faster than what's in Autoconf 2.62 through 2.68.
-
-# Note: If the type 'unsigned long long int' exists but is only 32 bits
-# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
-# will not be defined. In this case you can treat 'unsigned long long int'
-# like 'unsigned long int'.
-
-AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
-[
- AC_CACHE_CHECK([for unsigned long long int],
- [ac_cv_type_unsigned_long_long_int],
- [ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- AC_LINK_IFELSE(
- [_AC_TYPE_LONG_LONG_SNIPPET],
- [],
- [ac_cv_type_unsigned_long_long_int=no])
- fi])
- if test $ac_cv_type_unsigned_long_long_int = yes; then
- AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
- [Define to 1 if the system has the type 'unsigned long long int'.])
- fi
-])
-
-# Expands to a C program that can be used to test for simultaneous support
-# of 'long long' and 'unsigned long long'. We don't want to say that
-# 'long long' is available if 'unsigned long long' is not, or vice versa,
-# because too many programs rely on the symmetry between signed and unsigned
-# integer types (excluding 'bool').
-AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
-[
- AC_LANG_PROGRAM(
- [[/* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;]],
- [[/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));]])
-])
diff --git a/m4/lseek.m4 b/m4/lseek.m4
index 423b9fb..609c19a 100644
--- a/m4/lseek.m4
+++ b/m4/lseek.m4
@@ -1,5 +1,5 @@
# lseek.m4 serial 10
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/lstat.m4 b/m4/lstat.m4
index 3694e4c..3c2b214 100644
--- a/m4/lstat.m4
+++ b/m4/lstat.m4
@@ -1,6 +1,6 @@
-# serial 32
+# serial 33
-# Copyright (C) 1997-2001, 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2001, 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -63,8 +63,8 @@ AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
# Guess no on native Windows.
gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
*)
- # If we don't know, assume the worst.
- gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ gl_cv_func_lstat_dereferences_slashed_symlink="$gl_cross_guess_normal" ;;
esac
])
rm -f conftest.sym conftest.file
diff --git a/m4/malloc.m4 b/m4/malloc.m4
index 4c182b4..c1f8ea3 100644
--- a/m4/malloc.m4
+++ b/m4/malloc.m4
@@ -1,11 +1,9 @@
-# malloc.m4 serial 17
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+# malloc.m4 serial 20
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-m4_version_prereq([2.70], [] ,[
-
# This is adapted with modifications from upstream Autoconf here:
# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=04be2b7a29d65d9a08e64e8e56e594c91749598c
AC_DEFUN([_AC_FUNC_MALLOC_IF],
@@ -32,19 +30,24 @@ AC_DEFUN([_AC_FUNC_MALLOC_IF],
[ac_cv_func_malloc_0_nonnull=no],
[case "$host_os" in
# Guess yes on platforms where we know the result.
- *-gnu* | gnu* | freebsd* | netbsd* | openbsd* \
+ *-gnu* | gnu* | *-musl* | freebsd* | netbsd* | openbsd* \
| hpux* | solaris* | cygwin* | mingw*)
- ac_cv_func_malloc_0_nonnull=yes ;;
- # If we don't know, assume the worst.
- *) ac_cv_func_malloc_0_nonnull=no ;;
+ ac_cv_func_malloc_0_nonnull="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;;
esac
])
])
- AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2])
+ case "$ac_cv_func_malloc_0_nonnull" in
+ *yes)
+ $1
+ ;;
+ *)
+ $2
+ ;;
+ esac
])# _AC_FUNC_MALLOC_IF
-])
-
# gl_FUNC_MALLOC_GNU
# ------------------
# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
diff --git a/m4/malloca.m4 b/m4/malloca.m4
index 2251e61..930199d 100644
--- a/m4/malloca.m4
+++ b/m4/malloca.m4
@@ -1,5 +1,5 @@
-# malloca.m4 serial 1
-dnl Copyright (C) 2003-2004, 2006-2007, 2009-2018 Free Software Foundation,
+# malloca.m4 serial 2
+dnl Copyright (C) 2003-2004, 2006-2007, 2009-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,5 +11,4 @@ AC_DEFUN([gl_MALLOCA],
dnl @ALLOCA@ and @LTALLOCA@.
dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies.
AC_REQUIRE([gl_EEMALLOC])
- AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
])
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
index d831ed2..783620d 100644
--- a/m4/manywarnings.m4
+++ b/m4/manywarnings.m4
@@ -1,5 +1,5 @@
-# manywarnings.m4 serial 17
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# manywarnings.m4 serial 18
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -112,16 +112,19 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
gl_manywarn_set=
for gl_manywarn_item in -fno-common \
-W \
+ -Wabsolute-value \
-Waddress \
+ -Waddress-of-packed-member \
-Waggressive-loop-optimizations \
-Wall \
- -Wattribute-alias \
+ -Wattribute-warning \
-Wattributes \
-Wbad-function-cast \
-Wbool-compare \
-Wbool-operation \
-Wbuiltin-declaration-mismatch \
-Wbuiltin-macro-redefined \
+ -Wcannot-profile \
-Wcast-align \
-Wcast-align=strict \
-Wcast-function-type \
@@ -186,6 +189,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
-Wmissing-field-initializers \
-Wmissing-include-dirs \
-Wmissing-parameter-type \
+ -Wmissing-profile \
-Wmissing-prototypes \
-Wmultichar \
-Wmultistatement-macros \
@@ -292,6 +296,7 @@ m4_defun([gl_MANYWARN_ALL_GCC(C)],
AC_MSG_RESULT([$gl_alloc_max])
gl_manywarn_set="$gl_manywarn_set -Walloc-size-larger-than=$gl_alloc_max"
gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
+ gl_manywarn_set="$gl_manywarn_set -Wattribute-alias=2"
gl_manywarn_set="$gl_manywarn_set -Wformat-overflow=2"
gl_manywarn_set="$gl_manywarn_set -Wformat-truncation=2"
gl_manywarn_set="$gl_manywarn_set -Wimplicit-fallthrough=5"
diff --git a/m4/mbrlen.m4 b/m4/mbrlen.m4
index 2a5df28..215f9ff 100644
--- a/m4/mbrlen.m4
+++ b/m4/mbrlen.m4
@@ -1,5 +1,5 @@
# mbrlen.m4 serial 10 -*- coding: utf-8 -*-
-dnl Copyright (C) 2008, 2010-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008, 2010-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4
index c706d04..755f8c9 100644
--- a/m4/mbrtowc.m4
+++ b/m4/mbrtowc.m4
@@ -1,5 +1,5 @@
-# mbrtowc.m4 serial 31 -*- coding: utf-8 -*-
-dnl Copyright (C) 2001-2002, 2004-2005, 2008-2018 Free Software Foundation,
+# mbrtowc.m4 serial 37 -*- coding: utf-8 -*-
+dnl Copyright (C) 2001-2002, 2004-2005, 2008-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -8,6 +8,8 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_MBRTOWC],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+ AC_REQUIRE([gl_PTHREADLIB])
+ AC_CHECK_HEADERS_ONCE([threads.h])
AC_REQUIRE([AC_TYPE_MBSTATE_T])
gl_MBSTATE_T_BROKEN
@@ -39,6 +41,7 @@ AC_DEFUN([gl_FUNC_MBRTOWC],
gl_MBRTOWC_NULL_ARG2
gl_MBRTOWC_RETVAL
gl_MBRTOWC_NUL_RETVAL
+ gl_MBRTOWC_STORES_INCOMPLETE
gl_MBRTOWC_EMPTY_INPUT
gl_MBRTOWC_C_LOCALE
case "$gl_cv_func_mbrtowc_null_arg1" in
@@ -69,6 +72,13 @@ AC_DEFUN([gl_FUNC_MBRTOWC],
REPLACE_MBRTOWC=1
;;
esac
+ case "$gl_cv_func_mbrtowc_stores_incomplete" in
+ *no) ;;
+ *) AC_DEFINE([MBRTOWC_STORES_INCOMPLETE_BUG], [1],
+ [Define if the mbrtowc function stores a wide character when reporting incomplete input.])
+ REPLACE_MBRTOWC=1
+ ;;
+ esac
case "$gl_cv_func_mbrtowc_empty_input" in
*yes) ;;
*) AC_DEFINE([MBRTOWC_EMPTY_INPUT_BUG], [1],
@@ -77,15 +87,32 @@ AC_DEFUN([gl_FUNC_MBRTOWC],
REPLACE_MBRTOWC=1
;;
esac
- case $gl_cv_C_locale_sans_EILSEQ in
+ case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in
*yes) ;;
- *) AC_DEFINE([C_LOCALE_MAYBE_EILSEQ], [1],
- [Define to 1 if the C locale may have encoding errors.])
+ *) AC_DEFINE([MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ], [1],
+ [Define if the mbrtowc function may signal encoding errors in the C locale.])
REPLACE_MBRTOWC=1
;;
esac
fi
fi
+ if test $REPLACE_MBSTATE_T = 1; then
+ case "$host_os" in
+ mingw*) LIB_MBRTOWC= ;;
+ *)
+ gl_WEAK_SYMBOLS
+ case "$gl_cv_have_weak" in
+ *yes) LIB_MBRTOWC= ;;
+ *) LIB_MBRTOWC="$LIBPTHREAD" ;;
+ esac
+ ;;
+ esac
+ else
+ LIB_MBRTOWC=
+ fi
+ dnl LIB_MBRTOWC is expected to be '-pthread' or '-lpthread' on AIX
+ dnl with gcc or xlc, and empty otherwise.
+ AC_SUBST([LIB_MBRTOWC])
])
dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that
@@ -97,11 +124,19 @@ dnl avoid inconsistencies.
AC_DEFUN([gl_MBSTATE_T_BROKEN],
[
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_TYPE_MBSTATE_T])
AC_CHECK_FUNCS_ONCE([mbsinit])
AC_CHECK_FUNCS_ONCE([mbrtowc])
- if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
+ dnl On native Windows, we know exactly how mbsinit() behaves and don't need
+ dnl to override it, even if - like on MSVC - mbsinit() is only defined as
+ dnl an inline function, not as a global function.
+ if case "$host_os" in
+ mingw*) true ;;
+ *) test $ac_cv_func_mbsinit = yes ;;
+ esac \
+ && test $ac_cv_func_mbrtowc = yes; then
gl_MBRTOWC_INCOMPLETE_STATE
gl_MBRTOWC_SANITYCHECK
REPLACE_MBSTATE_T=0
@@ -126,6 +161,7 @@ AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gt_LOCALE_JA])
+ AC_REQUIRE([gt_LOCALE_FR_UTF8])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
[gl_cv_func_mbrtowc_incomplete_state],
@@ -171,6 +207,39 @@ int main ()
[gl_cv_func_mbrtowc_incomplete_state=yes],
[gl_cv_func_mbrtowc_incomplete_state=no],
[:])
+ else
+ if test $LOCALE_FR_UTF8 != none; then
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ const char input[] = "B\303\274\303\237er"; /* "Büßer" */
+ mbstate_t state;
+ wchar_t wc;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
+ if (mbsinit (&state))
+ return 2;
+ }
+ return 0;
+}]])],
+ [gl_cv_func_mbrtowc_incomplete_state=yes],
+ [gl_cv_func_mbrtowc_incomplete_state=no],
+ [:])
+ fi
fi
])
])
@@ -550,6 +619,126 @@ int main ()
])
])
+dnl Test whether mbrtowc stores a wide character when reporting incomplete
+dnl input.
+
+AC_DEFUN([gl_MBRTOWC_STORES_INCOMPLETE],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtowc stores incomplete characters],
+ [gl_cv_func_mbrtowc_stores_incomplete],
+ [
+ dnl Initial guess, used when cross-compiling or when no suitable locale
+ dnl is present.
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;;
+ *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;;
+ esac
+changequote([,])dnl
+ case "$host_os" in
+ mingw*)
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ int result = 0;
+ if (setlocale (LC_ALL, "French_France.65001") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 1;
+ }
+ if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\226", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 2;
+ }
+ if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\245", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 4;
+ }
+ if (setlocale (LC_ALL, "Chinese_China.936") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\261", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ result |= 8;
+ }
+ return result;
+}]])],
+ [gl_cv_func_mbrtowc_stores_incomplete=no],
+ [gl_cv_func_mbrtowc_stores_incomplete=yes],
+ [:])
+ ;;
+ *)
+ AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ if test $LOCALE_FR_UTF8 != none; then
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <locale.h>
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int main ()
+{
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ mbstate_t state;
+
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2)
+ && wc != (wchar_t) 0xBADFACE)
+ return 1;
+ }
+ return 0;
+}]])],
+ [gl_cv_func_mbrtowc_stores_incomplete=no],
+ [gl_cv_func_mbrtowc_stores_incomplete=yes],
+ [:])
+ fi
+ ;;
+ esac
+ ])
+])
+
dnl Test whether mbrtowc returns the correct value on empty input.
AC_DEFUN([gl_MBRTOWC_EMPTY_INPUT],
@@ -595,11 +784,11 @@ AC_DEFUN([gl_MBRTOWC_C_LOCALE],
[
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether the C locale is free of encoding errors],
- [gl_cv_C_locale_sans_EILSEQ],
+ [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ],
[
dnl Initial guess, used when cross-compiling or when no suitable locale
dnl is present.
- gl_cv_C_locale_sans_EILSEQ="guessing no"
+ gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal"
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
@@ -622,22 +811,28 @@ AC_DEFUN([gl_MBRTOWC_C_LOCALE],
}
return 0;
]])],
- [gl_cv_C_locale_sans_EILSEQ=yes],
- [gl_cv_C_locale_sans_EILSEQ=no],
+ [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes],
+ [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no],
[case "$host_os" in
# Guess yes on native Windows.
- mingw*) gl_cv_C_locale_sans_EILSEQ="guessing yes" ;;
+ mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;;
esac
])
])
])
-# Prerequisites of lib/mbrtowc.c.
+# Prerequisites of lib/mbrtowc.c and lib/lc-charset-dispatch.c.
AC_DEFUN([gl_PREREQ_MBRTOWC], [
AC_REQUIRE([AC_C_INLINE])
:
])
+# Prerequisites of lib/mbtowc-lock.c.
+AC_DEFUN([gl_PREREQ_MBTOWC_LOCK],
+[
+ gl_VISIBILITY
+])
+
dnl From Paul Eggert
diff --git a/m4/mbsinit.m4 b/m4/mbsinit.m4
index 5cba3df..8c26b6b 100644
--- a/m4/mbsinit.m4
+++ b/m4/mbsinit.m4
@@ -1,5 +1,5 @@
# mbsinit.m4 serial 8
-dnl Copyright (C) 2008, 2010-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008, 2010-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4
index 004aa0d..057ce12 100644
--- a/m4/mbstate_t.m4
+++ b/m4/mbstate_t.m4
@@ -1,5 +1,5 @@
# mbstate_t.m4 serial 13
-dnl Copyright (C) 2000-2002, 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/mbtowc.m4 b/m4/mbtowc.m4
index ecac6a2..befcffa 100644
--- a/m4/mbtowc.m4
+++ b/m4/mbtowc.m4
@@ -1,5 +1,5 @@
-# mbtowc.m4 serial 2
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# mbtowc.m4 serial 3
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -8,8 +8,13 @@ AC_DEFUN([gl_FUNC_MBTOWC],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
- if false; then
- REPLACE_MBTOWC=1
+ AC_CHECK_FUNCS([mbtowc])
+ if test $ac_cv_func_mbtowc = no; then
+ HAVE_MBTOWC=0
+ else
+ if false; then
+ REPLACE_MBTOWC=1
+ fi
fi
])
diff --git a/m4/memchr.m4 b/m4/memchr.m4
index 83c65c1..91eec88 100644
--- a/m4/memchr.m4
+++ b/m4/memchr.m4
@@ -1,5 +1,5 @@
-# memchr.m4 serial 13
-dnl Copyright (C) 2002-2004, 2009-2018 Free Software Foundation, Inc.
+# memchr.m4 serial 15
+dnl Copyright (C) 2002-2004, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -29,6 +29,8 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
# memchr should not dereference overestimated length after a match
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
# https://sourceware.org/bugzilla/show_bug.cgi?id=10162
+ # memchr should cast the second argument to 'unsigned char'.
+ # This bug exists in Android 4.3.
# Assume that memchr works on platforms that lack mprotect.
AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[
@@ -74,15 +76,26 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
if (memchr (fence - 1, 0, 3) != fence - 1)
result |= 4;
}
+ /* Test against bug on Android 4.3. */
+ {
+ char input[3];
+ input[0] = 'a';
+ input[1] = 'b';
+ input[2] = 'c';
+ if (memchr (input, 0x789abc00 | 'b', 3) != input + 1)
+ result |= 8;
+ }
return result;
]])],
[gl_cv_func_memchr_works=yes],
[gl_cv_func_memchr_works=no],
[case "$host_os" in
- # Guess yes on native Windows.
- mingw*) gl_cv_func_memchr_works="guessing yes" ;;
- # Be pessimistic for now.
- *) gl_cv_func_memchr_works="guessing no" ;;
+ # Guess no on Android.
+ linux*-android*) gl_cv_func_memchr_works="guessing no" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_memchr_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/memrchr.m4 b/m4/memrchr.m4
index a036b39..95990ed 100644
--- a/m4/memrchr.m4
+++ b/m4/memrchr.m4
@@ -1,5 +1,5 @@
# memrchr.m4 serial 10
-dnl Copyright (C) 2002-2003, 2005-2007, 2009-2018 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/minmax.m4 b/m4/minmax.m4
index 5e88508..e5b28b0 100644
--- a/m4/minmax.m4
+++ b/m4/minmax.m4
@@ -1,5 +1,5 @@
# minmax.m4 serial 4
-dnl Copyright (C) 2005, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/mkdir.m4 b/m4/mkdir.m4
index 1452999..99212d9 100644
--- a/m4/mkdir.m4
+++ b/m4/mkdir.m4
@@ -1,6 +1,6 @@
-# serial 14
+# serial 16
-# Copyright (C) 2001, 2003-2004, 2006, 2008-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003-2004, 2006, 2008-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -36,8 +36,8 @@ AC_DEFUN([gl_FUNC_MKDIR],
[gl_cv_func_mkdir_trailing_slash_works="guessing yes"],
[gl_cv_func_mkdir_trailing_slash_works="guessing no"])
;;
- # If we don't know, assume the worst.
- *) gl_cv_func_mkdir_trailing_slash_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_mkdir_trailing_slash_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.dir
@@ -62,10 +62,12 @@ AC_DEFUN([gl_FUNC_MKDIR],
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_mkdir_trailing_dot_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_mkdir_trailing_dot_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_mkdir_trailing_dot_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.dir
diff --git a/m4/mkostemp.m4 b/m4/mkostemp.m4
index 245598e..3e5b555 100644
--- a/m4/mkostemp.m4
+++ b/m4/mkostemp.m4
@@ -1,5 +1,5 @@
# mkostemp.m4 serial 2
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/mmap-anon.m4 b/m4/mmap-anon.m4
index 55fea82..d5c69df 100644
--- a/m4/mmap-anon.m4
+++ b/m4/mmap-anon.m4
@@ -1,5 +1,5 @@
# mmap-anon.m4 serial 10
-dnl Copyright (C) 2005, 2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/mode_t.m4 b/m4/mode_t.m4
index 83e276c..f190951 100644
--- a/m4/mode_t.m4
+++ b/m4/mode_t.m4
@@ -1,5 +1,5 @@
# mode_t.m4 serial 2
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/msvc-inval.m4 b/m4/msvc-inval.m4
index 55baeec..dcf398d 100644
--- a/m4/msvc-inval.m4
+++ b/m4/msvc-inval.m4
@@ -1,5 +1,5 @@
# msvc-inval.m4 serial 1
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/msvc-nothrow.m4 b/m4/msvc-nothrow.m4
index 74ae427..13198d8 100644
--- a/m4/msvc-nothrow.m4
+++ b/m4/msvc-nothrow.m4
@@ -1,5 +1,5 @@
# msvc-nothrow.m4 serial 1
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/multiarch.m4 b/m4/multiarch.m4
index 38a11cc..3c2034c 100644
--- a/m4/multiarch.m4
+++ b/m4/multiarch.m4
@@ -1,5 +1,5 @@
# multiarch.m4 serial 7
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/nanosleep.m4 b/m4/nanosleep.m4
index 7c945cc..1fb13ed 100644
--- a/m4/nanosleep.m4
+++ b/m4/nanosleep.m4
@@ -1,11 +1,11 @@
-# serial 38
+# serial 39
dnl From Jim Meyering.
dnl Check for the nanosleep function.
dnl If not found, use the supplied replacement.
dnl
-# Copyright (C) 1999-2001, 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2001, 2003-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -119,8 +119,8 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
gl_cv_func_nanosleep='guessing no (mishandles large arguments)' ;;
mingw*) # Guess no on native Windows.
gl_cv_func_nanosleep='guessing no' ;;
- *) # If we don't know, assume the worst.
- gl_cv_func_nanosleep='guessing no' ;;
+ *) # If we don't know, obey --enable-cross-guesses.
+ gl_cv_func_nanosleep="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/netinet_in_h.m4 b/m4/netinet_in_h.m4
index 473e142..df9f383 100644
--- a/m4/netinet_in_h.m4
+++ b/m4/netinet_in_h.m4
@@ -1,5 +1,5 @@
# netinet_in_h.m4 serial 5
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/nl_langinfo.m4 b/m4/nl_langinfo.m4
index 82d4750..6cafe9d 100644
--- a/m4/nl_langinfo.m4
+++ b/m4/nl_langinfo.m4
@@ -1,5 +1,5 @@
-# nl_langinfo.m4 serial 6
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# nl_langinfo.m4 serial 7
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -10,6 +10,7 @@ AC_DEFUN([gl_FUNC_NL_LANGINFO],
AC_REQUIRE([gl_LANGINFO_H])
AC_CHECK_FUNCS_ONCE([nl_langinfo])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_FUNC_SETLOCALE_NULL])
if test $ac_cv_func_nl_langinfo = yes; then
# On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken.
AC_CACHE_CHECK([whether YESEXPR works],
@@ -50,4 +51,11 @@ AC_DEFUN([gl_FUNC_NL_LANGINFO],
else
HAVE_NL_LANGINFO=0
fi
+ if test $HAVE_NL_LANGINFO = 0 || test $HAVE_LANGINFO_CODESET = 0; then
+ LIB_NL_LANGINFO="$LIB_SETLOCALE_NULL"
+ else
+ LIB_NL_LANGINFO=
+ fi
+ dnl LIB_NL_LANGINFO is expected to be empty everywhere.
+ AC_SUBST([LIB_NL_LANGINFO])
])
diff --git a/m4/nocrash.m4 b/m4/nocrash.m4
index 4914007..637a0ea 100644
--- a/m4/nocrash.m4
+++ b/m4/nocrash.m4
@@ -1,5 +1,5 @@
# nocrash.m4 serial 5
-dnl Copyright (C) 2005, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -53,7 +53,7 @@ nocrash_init (void)
/* Allocate a port on which the thread shall listen for exceptions. */
if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
== KERN_SUCCESS) {
- /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
+ /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
if (mach_port_insert_right (self, our_exception_port, our_exception_port,
MACH_MSG_TYPE_MAKE_SEND)
== KERN_SUCCESS) {
@@ -72,7 +72,7 @@ nocrash_init (void)
for a particular thread. This has the effect that when our exception
port gets the message, the thread specific exception port has already
been asked, and we don't need to bother about it.
- See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
+ See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
task_set_exception_ports (self, mask, our_exception_port,
EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
}
diff --git a/m4/non-recursive-gnulib-prefix-hack.m4 b/m4/non-recursive-gnulib-prefix-hack.m4
index d2cb9e7..4c46a34 100644
--- a/m4/non-recursive-gnulib-prefix-hack.m4
+++ b/m4/non-recursive-gnulib-prefix-hack.m4
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/obstack.m4 b/m4/obstack.m4
index 80e5b3c..52da95f 100644
--- a/m4/obstack.m4
+++ b/m4/obstack.m4
@@ -1,6 +1,6 @@
# See if we need to provide obstacks.
-dnl Copyright 1996-2018 Free Software Foundation, Inc.
+dnl Copyright 1996-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/off_t.m4 b/m4/off_t.m4
index f4d5787..6e19af8 100644
--- a/m4/off_t.m4
+++ b/m4/off_t.m4
@@ -1,5 +1,5 @@
# off_t.m4 serial 1
-dnl Copyright (C) 2012-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/open-cloexec.m4 b/m4/open-cloexec.m4
index a272784..11652d5 100644
--- a/m4/open-cloexec.m4
+++ b/m4/open-cloexec.m4
@@ -1,6 +1,6 @@
# Test whether O_CLOEXEC is defined.
-dnl Copyright 2017-2018 Free Software Foundation, Inc.
+dnl Copyright 2017-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/open-slash.m4 b/m4/open-slash.m4
new file mode 100644
index 0000000..1e57c96
--- /dev/null
+++ b/m4/open-slash.m4
@@ -0,0 +1,59 @@
+# open-slash.m4 serial 1
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Tests whether open() and creat() recognize a trailing slash.
+dnl Sets gl_cv_func_open_slash.
+AC_DEFUN([gl_OPEN_TRAILING_SLASH_BUG],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ dnl open("foo/") should not create a file when the file name has a
+ dnl trailing slash. FreeBSD only has the problem on symlinks.
+ AC_CHECK_FUNCS_ONCE([lstat])
+ AC_CACHE_CHECK([whether open recognizes a trailing slash],
+ [gl_cv_func_open_slash],
+ [# Assume that if we have lstat, we can also check symlinks.
+ if test $ac_cv_func_lstat = yes; then
+ touch conftest.tmp
+ ln -s conftest.tmp conftest.lnk
+ fi
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <fcntl.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+int main ()
+{
+ int result = 0;
+#if HAVE_LSTAT
+ if (open ("conftest.lnk/", O_RDONLY) != -1)
+ result |= 1;
+#endif
+ if (open ("conftest.sl/", O_CREAT, 0600) >= 0)
+ result |= 2;
+ return result;
+}]])],
+ [gl_cv_func_open_slash=yes],
+ [gl_cv_func_open_slash=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
+ gl_cv_func_open_slash="guessing no" ;;
+ *)
+ gl_cv_func_open_slash="guessing yes" ;;
+ esac
+changequote([,])dnl
+ ])
+ rm -f conftest.sl conftest.tmp conftest.lnk
+ ])
+ case "$gl_cv_func_open_slash" in
+ *no)
+ AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1],
+ [Define to 1 if open() fails to recognize a trailing slash.])
+ ;;
+ esac
+])
diff --git a/m4/open.m4 b/m4/open.m4
index 8b3d402..552eedf 100644
--- a/m4/open.m4
+++ b/m4/open.m4
@@ -1,5 +1,5 @@
# open.m4 serial 15
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -19,48 +19,9 @@ AC_DEFUN([gl_FUNC_OPEN],
if test "$gl_cv_macro_O_CLOEXEC" != yes; then
REPLACE_OPEN=1
fi
- AC_CACHE_CHECK([whether open recognizes a trailing slash],
- [gl_cv_func_open_slash],
- [# Assume that if we have lstat, we can also check symlinks.
- if test $ac_cv_func_lstat = yes; then
- touch conftest.tmp
- ln -s conftest.tmp conftest.lnk
- fi
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
-#include <fcntl.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-int main ()
-{
- int result = 0;
-#if HAVE_LSTAT
- if (open ("conftest.lnk/", O_RDONLY) != -1)
- result |= 1;
-#endif
- if (open ("conftest.sl/", O_CREAT, 0600) >= 0)
- result |= 2;
- return result;
-}]])],
- [gl_cv_func_open_slash=yes],
- [gl_cv_func_open_slash=no],
- [
-changequote(,)dnl
- case "$host_os" in
- freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*)
- gl_cv_func_open_slash="guessing no" ;;
- *)
- gl_cv_func_open_slash="guessing yes" ;;
- esac
-changequote([,])dnl
- ])
- rm -f conftest.sl conftest.tmp conftest.lnk
- ])
+ gl_OPEN_TRAILING_SLASH_BUG
case "$gl_cv_func_open_slash" in
*no)
- AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1],
- [Define to 1 if open() fails to recognize a trailing slash.])
REPLACE_OPEN=1
;;
esac
diff --git a/m4/opendir.m4 b/m4/opendir.m4
index 5609536..fd3c1ec 100644
--- a/m4/opendir.m4
+++ b/m4/opendir.m4
@@ -1,5 +1,5 @@
# opendir.m4 serial 5
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/pathmax.m4 b/m4/pathmax.m4
index 292a256..bb4fdeb 100644
--- a/m4/pathmax.m4
+++ b/m4/pathmax.m4
@@ -1,5 +1,5 @@
# pathmax.m4 serial 11
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2018 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/perl.m4 b/m4/perl.m4
new file mode 100644
index 0000000..0003fcc
--- /dev/null
+++ b/m4/perl.m4
@@ -0,0 +1,46 @@
+# serial 10
+
+dnl From Jim Meyering.
+dnl Find a new-enough version of Perl.
+
+# Copyright (C) 1998-2001, 2003-2004, 2007, 2009-2020 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_PERL],
+[
+ dnl FIXME: don't hard-code 5.005
+ AC_MSG_CHECKING([for perl5.005 or newer])
+ if test "${PERL+set}" = set; then
+ # 'PERL' is set in the user's environment.
+ candidate_perl_names="$PERL"
+ perl_specified=yes
+ else
+ candidate_perl_names='perl perl5'
+ perl_specified=no
+ fi
+
+ found=no
+ AC_SUBST([PERL])
+ PERL="$am_missing_run perl"
+ for perl in $candidate_perl_names; do
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ if ( $perl -e 'require 5.005; use File::Compare; use warnings;' ) > /dev/null 2>&1; then
+ PERL=$perl
+ found=yes
+ break
+ fi
+ done
+
+ AC_MSG_RESULT([$found])
+ test $found = no && AC_MSG_WARN([
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
+ a usable version of the Perl File::Compare module. As a result,
+ you may be unable to run a few tests or to regenerate certain
+ files if you modify the sources from which they are derived.
+] )
+])
diff --git a/m4/perror.m4 b/m4/perror.m4
index 60568a7..6a36408 100644
--- a/m4/perror.m4
+++ b/m4/perror.m4
@@ -1,5 +1,5 @@
-# perror.m4 serial 7
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# perror.m4 serial 9
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -48,10 +48,12 @@ AC_DEFUN([gl_FUNC_PERROR],
rm -rf conftest.txt1 conftest.txt2],
[gl_cv_func_perror_works=no],
[case "$host_os" in
- # Guess yes on native Windows.
- mingw*) gl_cv_func_perror_works="guessing yes" ;;
- # Otherwise guess no.
- *) gl_cv_func_perror_works="guessing no" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_perror_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_perror_works="guessing yes" ;;
+ # Otherwise obey --enable-cross-guesses.
+ *) gl_cv_func_perror_works="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/pipe.m4 b/m4/pipe.m4
index 1d3e274..6b1fa2f 100644
--- a/m4/pipe.m4
+++ b/m4/pipe.m4
@@ -1,5 +1,5 @@
# pipe.m4 serial 2
-dnl Copyright (C) 2010-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/pthread-thread.m4 b/m4/pthread-thread.m4
new file mode 100644
index 0000000..5a95995
--- /dev/null
+++ b/m4/pthread-thread.m4
@@ -0,0 +1,69 @@
+# pthread-thread.m4 serial 2
+dnl Copyright (C) 2019-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_PTHREAD_THREAD],
+[
+ AC_REQUIRE([gl_PTHREAD_H])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ if { case "$host_os" in mingw*) true;; *) false;; esac; } \
+ && test $gl_threads_api = windows; then
+ dnl Choose function names that don't conflict with the mingw-w64 winpthreads
+ dnl library.
+ REPLACE_PTHREAD_CREATE=1
+ REPLACE_PTHREAD_ATTR_INIT=1
+ REPLACE_PTHREAD_ATTR_GETDETACHSTATE=1
+ REPLACE_PTHREAD_ATTR_SETDETACHSTATE=1
+ REPLACE_PTHREAD_ATTR_DESTROY=1
+ REPLACE_PTHREAD_SELF=1
+ REPLACE_PTHREAD_EQUAL=1
+ REPLACE_PTHREAD_DETACH=1
+ REPLACE_PTHREAD_JOIN=1
+ REPLACE_PTHREAD_EXIT=1
+ else
+ if test $HAVE_PTHREAD_H = 0; then
+ HAVE_PTHREAD_CREATE=0
+ HAVE_PTHREAD_ATTR_INIT=0
+ HAVE_PTHREAD_ATTR_GETDETACHSTATE=0
+ HAVE_PTHREAD_ATTR_SETDETACHSTATE=0
+ HAVE_PTHREAD_ATTR_DESTROY=0
+ HAVE_PTHREAD_SELF=0
+ HAVE_PTHREAD_EQUAL=0
+ HAVE_PTHREAD_DETACH=0
+ HAVE_PTHREAD_JOIN=0
+ HAVE_PTHREAD_EXIT=0
+ else
+ dnl On HP-UX 11.11, pthread_create() and pthread_attr_init() are only
+ dnl defined as inline functions.
+ AC_CACHE_CHECK([whether pthread_create exists as a global function],
+ [gl_cv_func_pthread_create],
+ [saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [[extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+ int pthread_create (void);
+ int main ()
+ {
+ return pthread_create ();
+ }
+ ]])],
+ [gl_cv_func_pthread_create=yes],
+ [gl_cv_func_pthread_create=no])
+ LIBS="$saved_LIBS"
+ ])
+ if test $gl_cv_func_pthread_create = no; then
+ REPLACE_PTHREAD_CREATE=1
+ REPLACE_PTHREAD_ATTR_INIT=1
+ AC_DEFINE([PTHREAD_CREATE_IS_INLINE], [1],
+ [Define if pthread_create is an inline function.])
+ fi
+ fi
+ fi
+])
diff --git a/m4/pthread_h.m4 b/m4/pthread_h.m4
new file mode 100644
index 0000000..5b5e7ba
--- /dev/null
+++ b/m4/pthread_h.m4
@@ -0,0 +1,268 @@
+# pthread_h.m4 serial 5
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_PTHREAD_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_PTHREAD_H_DEFAULTS])
+
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_PTHREADLIB])
+
+ gl_CHECK_NEXT_HEADERS([pthread.h])
+ if test $ac_cv_header_pthread_h = yes; then
+ HAVE_PTHREAD_H=1
+ dnl On mingw, if --enable-threads=windows or gl_AVOID_WINPTHREAD is used,
+ dnl ignore the <pthread.h> from the mingw-w64 winpthreads library.
+ m4_ifdef([gl_][THREADLIB], [
+ AC_REQUIRE([gl_][THREADLIB])
+ if { case "$host_os" in mingw*) true;; *) false;; esac; } \
+ && test $gl_threads_api = windows; then
+ HAVE_PTHREAD_H=0
+ fi
+ ])
+ else
+ HAVE_PTHREAD_H=0
+ fi
+ AC_SUBST([HAVE_PTHREAD_H])
+
+ AC_CHECK_TYPES([pthread_t, pthread_spinlock_t], [], [],
+ [AC_INCLUDES_DEFAULT[
+ #if HAVE_PTHREAD_H
+ #include <pthread.h>
+ #endif]])
+ if test $ac_cv_type_pthread_t != yes; then
+ HAVE_PTHREAD_T=0
+ fi
+ if test $ac_cv_type_pthread_spinlock_t != yes; then
+ HAVE_PTHREAD_SPINLOCK_T=0
+ fi
+
+ dnl Constants may be defined as C preprocessor macros or as enum items.
+
+ AC_CACHE_CHECK([for PTHREAD_CREATE_DETACHED],
+ [gl_cv_const_PTHREAD_CREATE_DETACHED],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ int x = PTHREAD_CREATE_DETACHED;
+ ]],
+ [[]])],
+ [gl_cv_const_PTHREAD_CREATE_DETACHED=yes],
+ [gl_cv_const_PTHREAD_CREATE_DETACHED=no])
+ ])
+ if test $gl_cv_const_PTHREAD_CREATE_DETACHED != yes; then
+ HAVE_PTHREAD_CREATE_DETACHED=0
+ fi
+
+ AC_CACHE_CHECK([for PTHREAD_MUTEX_RECURSIVE],
+ [gl_cv_const_PTHREAD_MUTEX_RECURSIVE],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ int x = PTHREAD_MUTEX_RECURSIVE;
+ ]],
+ [[]])],
+ [gl_cv_const_PTHREAD_MUTEX_RECURSIVE=yes],
+ [gl_cv_const_PTHREAD_MUTEX_RECURSIVE=no])
+ ])
+ if test $gl_cv_const_PTHREAD_MUTEX_RECURSIVE != yes; then
+ HAVE_PTHREAD_MUTEX_RECURSIVE=0
+ fi
+
+ AC_CACHE_CHECK([for PTHREAD_MUTEX_ROBUST],
+ [gl_cv_const_PTHREAD_MUTEX_ROBUST],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ int x = PTHREAD_MUTEX_ROBUST;
+ ]],
+ [[]])],
+ [gl_cv_const_PTHREAD_MUTEX_ROBUST=yes],
+ [gl_cv_const_PTHREAD_MUTEX_ROBUST=no])
+ ])
+ if test $gl_cv_const_PTHREAD_MUTEX_ROBUST != yes; then
+ HAVE_PTHREAD_MUTEX_ROBUST=0
+ fi
+
+ AC_CACHE_CHECK([for PTHREAD_PROCESS_SHARED],
+ [gl_cv_const_PTHREAD_PROCESS_SHARED],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ int x = PTHREAD_PROCESS_SHARED;
+ ]],
+ [[]])],
+ [gl_cv_const_PTHREAD_PROCESS_SHARED=yes],
+ [gl_cv_const_PTHREAD_PROCESS_SHARED=no])
+ ])
+ if test $gl_cv_const_PTHREAD_PROCESS_SHARED != yes; then
+ HAVE_PTHREAD_PROCESS_SHARED=0
+ fi
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, if it is not common
+ dnl enough to be declared everywhere.
+ gl_WARN_ON_USE_PREPARE([[#include <pthread.h>
+ ]], [
+ pthread_create pthread_attr_init pthread_attr_getdetachstate
+ pthread_attr_setdetachstate pthread_attr_destroy pthread_self pthread_equal
+ pthread_detach pthread_join pthread_exit
+ pthread_once
+ pthread_mutex_init pthread_mutexattr_init pthread_mutexattr_gettype
+ pthread_mutexattr_settype pthread_mutexattr_getrobust
+ pthread_mutexattr_setrobust pthread_mutexattr_destroy pthread_mutex_lock
+ pthread_mutex_trylock pthread_mutex_timedlock pthread_mutex_unlock
+ pthread_mutex_destroy
+ pthread_rwlock_init pthread_rwlockattr_init pthread_rwlockattr_destroy
+ pthread_rwlock_rdlock pthread_rwlock_wrlock pthread_rwlock_tryrdlock
+ pthread_rwlock_trywrlock pthread_rwlock_timedrdlock
+ pthread_rwlock_timedwrlock pthread_rwlock_unlock pthread_rwlock_destroy
+ pthread_cond_init pthread_condattr_init pthread_condattr_destroy
+ pthread_cond_wait pthread_cond_timedwait pthread_cond_signal
+ pthread_cond_broadcast pthread_cond_destroy
+ pthread_key_create pthread_setspecific pthread_getspecific
+ pthread_key_delete
+ pthread_spin_init pthread_spin_lock pthread_spin_trylock pthread_spin_unlock
+ pthread_spin_destroy])
+
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ dnl For backward compatibility with gnulib versions <= 2019-07.
+ LIB_PTHREAD="$LIBPMULTITHREAD"
+ AC_SUBST([LIB_PTHREAD])
+])
+
+AC_DEFUN([gl_PTHREAD_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_PTHREAD_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_PTHREAD_H_DEFAULTS],
+[
+ GNULIB_PTHREAD_THREAD=0; AC_SUBST([GNULIB_PTHREAD_THREAD])
+ GNULIB_PTHREAD_ONCE=0; AC_SUBST([GNULIB_PTHREAD_ONCE])
+ GNULIB_PTHREAD_MUTEX=0; AC_SUBST([GNULIB_PTHREAD_MUTEX])
+ GNULIB_PTHREAD_RWLOCK=0; AC_SUBST([GNULIB_PTHREAD_RWLOCK])
+ GNULIB_PTHREAD_COND=0; AC_SUBST([GNULIB_PTHREAD_COND])
+ GNULIB_PTHREAD_TSS=0; AC_SUBST([GNULIB_PTHREAD_TSS])
+ GNULIB_PTHREAD_SPIN=0; AC_SUBST([GNULIB_PTHREAD_SPIN])
+ GNULIB_PTHREAD_MUTEX_TIMEDLOCK=0; AC_SUBST([GNULIB_PTHREAD_MUTEX_TIMEDLOCK])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_PTHREAD_T=1; AC_SUBST([HAVE_PTHREAD_T])
+ HAVE_PTHREAD_SPINLOCK_T=1; AC_SUBST([HAVE_PTHREAD_SPINLOCK_T])
+ HAVE_PTHREAD_CREATE_DETACHED=1; AC_SUBST([HAVE_PTHREAD_CREATE_DETACHED])
+ HAVE_PTHREAD_MUTEX_RECURSIVE=1; AC_SUBST([HAVE_PTHREAD_MUTEX_RECURSIVE])
+ HAVE_PTHREAD_MUTEX_ROBUST=1; AC_SUBST([HAVE_PTHREAD_MUTEX_ROBUST])
+ HAVE_PTHREAD_PROCESS_SHARED=1; AC_SUBST([HAVE_PTHREAD_PROCESS_SHARED])
+ HAVE_PTHREAD_CREATE=1; AC_SUBST([HAVE_PTHREAD_CREATE])
+ HAVE_PTHREAD_ATTR_INIT=1; AC_SUBST([HAVE_PTHREAD_ATTR_INIT])
+ HAVE_PTHREAD_ATTR_GETDETACHSTATE=1; AC_SUBST([HAVE_PTHREAD_ATTR_GETDETACHSTATE])
+ HAVE_PTHREAD_ATTR_SETDETACHSTATE=1; AC_SUBST([HAVE_PTHREAD_ATTR_SETDETACHSTATE])
+ HAVE_PTHREAD_ATTR_DESTROY=1; AC_SUBST([HAVE_PTHREAD_ATTR_DESTROY])
+ HAVE_PTHREAD_SELF=1; AC_SUBST([HAVE_PTHREAD_SELF])
+ HAVE_PTHREAD_EQUAL=1; AC_SUBST([HAVE_PTHREAD_EQUAL])
+ HAVE_PTHREAD_DETACH=1; AC_SUBST([HAVE_PTHREAD_DETACH])
+ HAVE_PTHREAD_JOIN=1; AC_SUBST([HAVE_PTHREAD_JOIN])
+ HAVE_PTHREAD_EXIT=1; AC_SUBST([HAVE_PTHREAD_EXIT])
+ HAVE_PTHREAD_ONCE=1; AC_SUBST([HAVE_PTHREAD_ONCE])
+ HAVE_PTHREAD_MUTEX_INIT=1; AC_SUBST([HAVE_PTHREAD_MUTEX_INIT])
+ HAVE_PTHREAD_MUTEXATTR_INIT=1; AC_SUBST([HAVE_PTHREAD_MUTEXATTR_INIT])
+ HAVE_PTHREAD_MUTEXATTR_GETTYPE=1; AC_SUBST([HAVE_PTHREAD_MUTEXATTR_GETTYPE])
+ HAVE_PTHREAD_MUTEXATTR_SETTYPE=1; AC_SUBST([HAVE_PTHREAD_MUTEXATTR_SETTYPE])
+ HAVE_PTHREAD_MUTEXATTR_GETROBUST=1; AC_SUBST([HAVE_PTHREAD_MUTEXATTR_GETROBUST])
+ HAVE_PTHREAD_MUTEXATTR_SETROBUST=1; AC_SUBST([HAVE_PTHREAD_MUTEXATTR_SETROBUST])
+ HAVE_PTHREAD_MUTEXATTR_DESTROY=1; AC_SUBST([HAVE_PTHREAD_MUTEXATTR_DESTROY])
+ HAVE_PTHREAD_MUTEX_LOCK=1; AC_SUBST([HAVE_PTHREAD_MUTEX_LOCK])
+ HAVE_PTHREAD_MUTEX_TRYLOCK=1; AC_SUBST([HAVE_PTHREAD_MUTEX_TRYLOCK])
+ HAVE_PTHREAD_MUTEX_TIMEDLOCK=1; AC_SUBST([HAVE_PTHREAD_MUTEX_TIMEDLOCK])
+ HAVE_PTHREAD_MUTEX_UNLOCK=1; AC_SUBST([HAVE_PTHREAD_MUTEX_UNLOCK])
+ HAVE_PTHREAD_MUTEX_DESTROY=1; AC_SUBST([HAVE_PTHREAD_MUTEX_DESTROY])
+ HAVE_PTHREAD_RWLOCK_INIT=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_INIT])
+ HAVE_PTHREAD_RWLOCKATTR_INIT=1; AC_SUBST([HAVE_PTHREAD_RWLOCKATTR_INIT])
+ HAVE_PTHREAD_RWLOCKATTR_DESTROY=1; AC_SUBST([HAVE_PTHREAD_RWLOCKATTR_DESTROY])
+ HAVE_PTHREAD_RWLOCK_RDLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_RDLOCK])
+ HAVE_PTHREAD_RWLOCK_WRLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_WRLOCK])
+ HAVE_PTHREAD_RWLOCK_TRYRDLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_TRYRDLOCK])
+ HAVE_PTHREAD_RWLOCK_TRYWRLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_TRYWRLOCK])
+ HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK])
+ HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK])
+ HAVE_PTHREAD_RWLOCK_UNLOCK=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_UNLOCK])
+ HAVE_PTHREAD_RWLOCK_DESTROY=1; AC_SUBST([HAVE_PTHREAD_RWLOCK_DESTROY])
+ HAVE_PTHREAD_COND_INIT=1; AC_SUBST([HAVE_PTHREAD_COND_INIT])
+ HAVE_PTHREAD_CONDATTR_INIT=1; AC_SUBST([HAVE_PTHREAD_CONDATTR_INIT])
+ HAVE_PTHREAD_CONDATTR_DESTROY=1; AC_SUBST([HAVE_PTHREAD_CONDATTR_DESTROY])
+ HAVE_PTHREAD_COND_WAIT=1; AC_SUBST([HAVE_PTHREAD_COND_WAIT])
+ HAVE_PTHREAD_COND_TIMEDWAIT=1; AC_SUBST([HAVE_PTHREAD_COND_TIMEDWAIT])
+ HAVE_PTHREAD_COND_SIGNAL=1; AC_SUBST([HAVE_PTHREAD_COND_SIGNAL])
+ HAVE_PTHREAD_COND_BROADCAST=1; AC_SUBST([HAVE_PTHREAD_COND_BROADCAST])
+ HAVE_PTHREAD_COND_DESTROY=1; AC_SUBST([HAVE_PTHREAD_COND_DESTROY])
+ HAVE_PTHREAD_KEY_CREATE=1; AC_SUBST([HAVE_PTHREAD_KEY_CREATE])
+ HAVE_PTHREAD_SETSPECIFIC=1; AC_SUBST([HAVE_PTHREAD_SETSPECIFIC])
+ HAVE_PTHREAD_GETSPECIFIC=1; AC_SUBST([HAVE_PTHREAD_GETSPECIFIC])
+ HAVE_PTHREAD_KEY_DELETE=1; AC_SUBST([HAVE_PTHREAD_KEY_DELETE])
+ HAVE_PTHREAD_SPIN_INIT=1; AC_SUBST([HAVE_PTHREAD_SPIN_INIT])
+ HAVE_PTHREAD_SPIN_LOCK=1; AC_SUBST([HAVE_PTHREAD_SPIN_LOCK])
+ HAVE_PTHREAD_SPIN_TRYLOCK=1; AC_SUBST([HAVE_PTHREAD_SPIN_TRYLOCK])
+ HAVE_PTHREAD_SPIN_UNLOCK=1; AC_SUBST([HAVE_PTHREAD_SPIN_UNLOCK])
+ HAVE_PTHREAD_SPIN_DESTROY=1; AC_SUBST([HAVE_PTHREAD_SPIN_DESTROY])
+ REPLACE_PTHREAD_CREATE=0; AC_SUBST([REPLACE_PTHREAD_CREATE])
+ REPLACE_PTHREAD_ATTR_INIT=0; AC_SUBST([REPLACE_PTHREAD_ATTR_INIT])
+ REPLACE_PTHREAD_ATTR_GETDETACHSTATE=0; AC_SUBST([REPLACE_PTHREAD_ATTR_GETDETACHSTATE])
+ REPLACE_PTHREAD_ATTR_SETDETACHSTATE=0; AC_SUBST([REPLACE_PTHREAD_ATTR_SETDETACHSTATE])
+ REPLACE_PTHREAD_ATTR_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_ATTR_DESTROY])
+ REPLACE_PTHREAD_SELF=0; AC_SUBST([REPLACE_PTHREAD_SELF])
+ REPLACE_PTHREAD_EQUAL=0; AC_SUBST([REPLACE_PTHREAD_EQUAL])
+ REPLACE_PTHREAD_DETACH=0; AC_SUBST([REPLACE_PTHREAD_DETACH])
+ REPLACE_PTHREAD_JOIN=0; AC_SUBST([REPLACE_PTHREAD_JOIN])
+ REPLACE_PTHREAD_EXIT=0; AC_SUBST([REPLACE_PTHREAD_EXIT])
+ REPLACE_PTHREAD_ONCE=0; AC_SUBST([REPLACE_PTHREAD_ONCE])
+ REPLACE_PTHREAD_MUTEX_INIT=0; AC_SUBST([REPLACE_PTHREAD_MUTEX_INIT])
+ REPLACE_PTHREAD_MUTEXATTR_INIT=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_INIT])
+ REPLACE_PTHREAD_MUTEXATTR_GETTYPE=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_GETTYPE])
+ REPLACE_PTHREAD_MUTEXATTR_SETTYPE=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_SETTYPE])
+ REPLACE_PTHREAD_MUTEXATTR_GETROBUST=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_GETROBUST])
+ REPLACE_PTHREAD_MUTEXATTR_SETROBUST=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_SETROBUST])
+ REPLACE_PTHREAD_MUTEXATTR_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_DESTROY])
+ REPLACE_PTHREAD_MUTEX_LOCK=0; AC_SUBST([REPLACE_PTHREAD_MUTEX_LOCK])
+ REPLACE_PTHREAD_MUTEX_TRYLOCK=0; AC_SUBST([REPLACE_PTHREAD_MUTEX_TRYLOCK])
+ REPLACE_PTHREAD_MUTEX_TIMEDLOCK=0; AC_SUBST([REPLACE_PTHREAD_MUTEX_TIMEDLOCK])
+ REPLACE_PTHREAD_MUTEX_UNLOCK=0; AC_SUBST([REPLACE_PTHREAD_MUTEX_UNLOCK])
+ REPLACE_PTHREAD_MUTEX_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_MUTEX_DESTROY])
+ REPLACE_PTHREAD_RWLOCK_INIT=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_INIT])
+ REPLACE_PTHREAD_RWLOCKATTR_INIT=0; AC_SUBST([REPLACE_PTHREAD_RWLOCKATTR_INIT])
+ REPLACE_PTHREAD_RWLOCKATTR_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_RWLOCKATTR_DESTROY])
+ REPLACE_PTHREAD_RWLOCK_RDLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_RDLOCK])
+ REPLACE_PTHREAD_RWLOCK_WRLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_WRLOCK])
+ REPLACE_PTHREAD_RWLOCK_TRYRDLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_TRYRDLOCK])
+ REPLACE_PTHREAD_RWLOCK_TRYWRLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_TRYWRLOCK])
+ REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK])
+ REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK])
+ REPLACE_PTHREAD_RWLOCK_UNLOCK=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_UNLOCK])
+ REPLACE_PTHREAD_RWLOCK_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_RWLOCK_DESTROY])
+ REPLACE_PTHREAD_COND_INIT=0; AC_SUBST([REPLACE_PTHREAD_COND_INIT])
+ REPLACE_PTHREAD_CONDATTR_INIT=0; AC_SUBST([REPLACE_PTHREAD_CONDATTR_INIT])
+ REPLACE_PTHREAD_CONDATTR_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_CONDATTR_DESTROY])
+ REPLACE_PTHREAD_COND_WAIT=0; AC_SUBST([REPLACE_PTHREAD_COND_WAIT])
+ REPLACE_PTHREAD_COND_TIMEDWAIT=0; AC_SUBST([REPLACE_PTHREAD_COND_TIMEDWAIT])
+ REPLACE_PTHREAD_COND_SIGNAL=0; AC_SUBST([REPLACE_PTHREAD_COND_SIGNAL])
+ REPLACE_PTHREAD_COND_BROADCAST=0; AC_SUBST([REPLACE_PTHREAD_COND_BROADCAST])
+ REPLACE_PTHREAD_COND_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_COND_DESTROY])
+ REPLACE_PTHREAD_KEY_CREATE=0; AC_SUBST([REPLACE_PTHREAD_KEY_CREATE])
+ REPLACE_PTHREAD_SETSPECIFIC=0; AC_SUBST([REPLACE_PTHREAD_SETSPECIFIC])
+ REPLACE_PTHREAD_GETSPECIFIC=0; AC_SUBST([REPLACE_PTHREAD_GETSPECIFIC])
+ REPLACE_PTHREAD_KEY_DELETE=0; AC_SUBST([REPLACE_PTHREAD_KEY_DELETE])
+ REPLACE_PTHREAD_SPIN_INIT=0; AC_SUBST([REPLACE_PTHREAD_SPIN_INIT])
+ REPLACE_PTHREAD_SPIN_LOCK=0; AC_SUBST([REPLACE_PTHREAD_SPIN_LOCK])
+ REPLACE_PTHREAD_SPIN_TRYLOCK=0; AC_SUBST([REPLACE_PTHREAD_SPIN_TRYLOCK])
+ REPLACE_PTHREAD_SPIN_UNLOCK=0; AC_SUBST([REPLACE_PTHREAD_SPIN_UNLOCK])
+ REPLACE_PTHREAD_SPIN_DESTROY=0; AC_SUBST([REPLACE_PTHREAD_SPIN_DESTROY])
+])
diff --git a/m4/pthread_rwlock_rdlock.m4 b/m4/pthread_rwlock_rdlock.m4
index 6812b4f..049af50 100644
--- a/m4/pthread_rwlock_rdlock.m4
+++ b/m4/pthread_rwlock_rdlock.m4
@@ -1,5 +1,5 @@
-# pthread_rwlock_rdlock.m4 serial 2
-dnl Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# pthread_rwlock_rdlock.m4 serial 4
+dnl Copyright (C) 2017-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -26,14 +26,16 @@ dnl
dnl POSIX:2017 makes this requirement only for implementations that support TPS
dnl (Thread Priority Scheduling) and only for the scheduling policies SCHED_FIFO
dnl and SCHED_RR, see
-dnl http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html
+dnl https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html
dnl but this test verifies the guarantee regardless of TPS and regardless of
dnl scheduling policy.
-dnl Glibc currently does not provide this guarantee, see
+dnl Glibc does not provide this guarantee (and never will on Linux), see
dnl https://sourceware.org/bugzilla/show_bug.cgi?id=13701
+dnl https://bugzilla.redhat.com/show_bug.cgi?id=1410052
AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER],
[
AC_REQUIRE([gl_THREADLIB_EARLY])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether pthread_rwlock_rdlock prefers a writer to a reader],
[gl_cv_pthread_rwlock_rdlock_prefer_writer],
[save_LIBS="$LIBS"
@@ -153,7 +155,25 @@ main ()
]])],
[gl_cv_pthread_rwlock_rdlock_prefer_writer=yes],
[gl_cv_pthread_rwlock_rdlock_prefer_writer=no],
- [gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"])
+ [case "$host_os" in
+ # Guess no on glibc systems.
+ *-gnu* | gnu*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;;
+ # Guess no on musl systems.
+ *-musl*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;;
+ # Guess no on bionic systems.
+ *-android*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;;
+ # Guess yes on native Windows with the mingw-w64 winpthreads library.
+ # Guess no on native Windows with the gnulib windows-rwlock module.
+ mingw*) if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+ gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"
+ else
+ gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no"
+ fi
+ ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_pthread_rwlock_rdlock_prefer_writer="$gl_cross_guess_normal" ;;
+ esac
+ ])
LIBS="$save_LIBS"
])
case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in
diff --git a/m4/pthread_sigmask.m4 b/m4/pthread_sigmask.m4
new file mode 100644
index 0000000..d67511f
--- /dev/null
+++ b/m4/pthread_sigmask.m4
@@ -0,0 +1,273 @@
+# pthread_sigmask.m4 serial 18
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
+[
+ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
+ AC_CHECK_FUNCS_ONCE([pthread_sigmask])
+
+ dnl On MinGW pthread_sigmask is just a macro which always returns 0.
+ dnl It does not exist as a real function, which is required by POSIX.
+ AC_CACHE_CHECK([whether pthread_sigmask is a macro],
+ [gl_cv_func_pthread_sigmask_macro],
+ [AC_EGREP_CPP([headers_define_pthread_sigmask], [
+#include <pthread.h>
+#include <signal.h>
+#ifdef pthread_sigmask
+ headers_define_pthread_sigmask
+#endif],
+ [gl_cv_func_pthread_sigmask_macro=yes],
+ [gl_cv_func_pthread_sigmask_macro=no])
+ ])
+
+ LIB_PTHREAD_SIGMASK=
+
+ if test $gl_cv_func_pthread_sigmask_macro = yes; then
+ dnl pthread_sigmask is a dummy macro.
+ HAVE_PTHREAD_SIGMASK=0
+ dnl Make sure to '#undef pthread_sigmask' before defining it.
+ REPLACE_PTHREAD_SIGMASK=1
+ else
+ dnl Test whether the gnulib module 'threadlib' is in use.
+ dnl Some packages like Emacs use --avoid=threadlib.
+ dnl Write the symbol in such a way that it does not cause 'aclocal' to pick
+ dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/.
+ m4_ifdef([gl_][THREADLIB], [
+ AC_REQUIRE([gl_][THREADLIB])
+
+ if test "$gl_threads_api" = posix; then
+ if test $ac_cv_func_pthread_sigmask = yes; then
+ dnl pthread_sigmask is available without -lpthread.
+ :
+ else
+ if test -n "$LIBMULTITHREAD"; then
+ AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD],
+ [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD],
+ [gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ #include <signal.h>
+ ]],
+ [[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]])
+ ],
+ [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes],
+ [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no])
+ LIBS="$gl_save_LIBS"
+ ])
+ if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
+ dnl pthread_sigmask is available with -pthread or -lpthread.
+ LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
+ else
+ dnl pthread_sigmask is not available at all.
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ else
+ dnl pthread_sigmask is not available at all.
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ fi
+ else
+ dnl pthread_sigmask may exist but does not interoperate with the chosen
+ dnl multithreading facility.
+ if test $ac_cv_func_pthread_sigmask = yes; then
+ REPLACE_PTHREAD_SIGMASK=1
+ else
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ fi
+ ], [
+ dnl The module 'threadlib' is not in use, due to --avoid=threadlib being
+ dnl specified.
+ dnl The package either has prepared CPPFLAGS and LIBS for use of
+ dnl POSIX:2008 threads, or wants to build single-threaded programs.
+ if test $ac_cv_func_pthread_sigmask = yes; then
+ dnl pthread_sigmask exists and does not require extra libraries.
+ dnl Assume that it is declared.
+ :
+ else
+ dnl pthread_sigmask either does not exist or needs extra libraries.
+ HAVE_PTHREAD_SIGMASK=0
+ dnl Define the symbol rpl_pthread_sigmask, not pthread_sigmask,
+ dnl so as to not accidentally override the system's pthread_sigmask
+ dnl symbol from libpthread. This is necessary on IRIX 6.5.
+ REPLACE_PTHREAD_SIGMASK=1
+ fi
+ ])
+ fi
+
+ AC_SUBST([LIB_PTHREAD_SIGMASK])
+ dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when
+ dnl "$gl_threads_api" = posix, $LTLIBMULTITHREAD and $LIBMULTITHREAD are the
+ dnl same.
+
+ dnl Now test for some bugs in the system function.
+ if test $HAVE_PTHREAD_SIGMASK = 1; then
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl On FreeBSD 6.4, HP-UX 11.31, Solaris 9, in programs that are not linked
+ dnl with -lpthread, the pthread_sigmask() function always returns 0 and has
+ dnl no effect.
+ if test -z "$LIB_PTHREAD_SIGMASK"; then
+ case " $LIBS " in
+ *' -pthread '*) ;;
+ *' -lpthread '*) ;;
+ *)
+ AC_CACHE_CHECK([whether pthread_sigmask works without -lpthread],
+ [gl_cv_func_pthread_sigmask_in_libc_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+ #include <pthread.h>
+ #include <signal.h>
+ #include <stddef.h>
+ int main ()
+ {
+ sigset_t set;
+ sigemptyset (&set);
+ return pthread_sigmask (1729, &set, NULL) != 0;
+ }]])],
+ [gl_cv_func_pthread_sigmask_in_libc_works=no],
+ [gl_cv_func_pthread_sigmask_in_libc_works=yes],
+ [
+ changequote(,)dnl
+ case "$host_os" in
+ freebsd* | hpux* | solaris | solaris2.[2-9]*)
+ gl_cv_func_pthread_sigmask_in_libc_works="guessing no";;
+ *)
+ gl_cv_func_pthread_sigmask_in_libc_works="guessing yes";;
+ esac
+ changequote([,])dnl
+ ])
+ ])
+ case "$gl_cv_func_pthread_sigmask_in_libc_works" in
+ *no)
+ REPLACE_PTHREAD_SIGMASK=1
+ AC_DEFINE([PTHREAD_SIGMASK_INEFFECTIVE], [1],
+ [Define to 1 if pthread_sigmask may return 0 and have no effect.])
+ ;;
+ esac;;
+ esac
+ fi
+
+ dnl On Cygwin 1.7.5, the pthread_sigmask() has a wrong return value
+ dnl convention: Upon failure, it returns -1 and sets errno.
+ AC_CACHE_CHECK([whether pthread_sigmask returns error numbers],
+ [gl_cv_func_pthread_sigmask_return_works],
+ [
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB_PTHREAD_SIGMASK"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <pthread.h>
+#include <signal.h>
+#include <stddef.h>
+int main ()
+{
+ sigset_t set;
+ sigemptyset (&set);
+ if (pthread_sigmask (1729, &set, NULL) == -1)
+ return 1;
+ return 0;
+}]])],
+ [gl_cv_func_pthread_sigmask_return_works=yes],
+ [gl_cv_func_pthread_sigmask_return_works=no],
+ [case "$host_os" in
+ cygwin*)
+ gl_cv_func_pthread_sigmask_return_works="guessing no";;
+ *)
+ gl_cv_func_pthread_sigmask_return_works="guessing yes";;
+ esac
+ ])
+ LIBS="$gl_save_LIBS"
+ ])
+ case "$gl_cv_func_pthread_sigmask_return_works" in
+ *no)
+ REPLACE_PTHREAD_SIGMASK=1
+ AC_DEFINE([PTHREAD_SIGMASK_FAILS_WITH_ERRNO], [1],
+ [Define to 1 if pthread_sigmask(), when it fails, returns -1 and sets errno.])
+ ;;
+ esac
+
+ dnl On IRIX 6.5, in a single-threaded program, pending signals are not
+ dnl immediately delivered when they are unblocked through pthread_sigmask,
+ dnl only a little while later.
+ AC_CACHE_CHECK([whether pthread_sigmask unblocks signals correctly],
+ [gl_cv_func_pthread_sigmask_unblock_works],
+ [
+ case "$host_os" in
+ irix*)
+ gl_cv_func_pthread_sigmask_unblock_works="guessing no";;
+ *)
+ gl_cv_func_pthread_sigmask_unblock_works="guessing yes";;
+ esac
+ m4_ifdef([gl_][THREADLIB],
+ [dnl Link against $LIBMULTITHREAD, not only $LIB_PTHREAD_SIGMASK.
+ dnl Otherwise we get a false positive on those platforms where
+ dnl $gl_cv_func_pthread_sigmask_in_libc_works is "no".
+ gl_save_LIBS=$LIBS
+ LIBS="$LIBS $LIBMULTITHREAD"])
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <pthread.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+static volatile int sigint_occurred;
+static void
+sigint_handler (int sig)
+{
+ sigint_occurred++;
+}
+int main ()
+{
+ sigset_t set;
+ int pid = getpid ();
+ char command[80];
+ signal (SIGINT, sigint_handler);
+ sigemptyset (&set);
+ sigaddset (&set, SIGINT);
+ if (!(pthread_sigmask (SIG_BLOCK, &set, NULL) == 0))
+ return 1;
+ sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, pid);
+ if (!(system (command) == 0))
+ return 2;
+ sleep (2);
+ if (!(sigint_occurred == 0))
+ return 3;
+ if (!(pthread_sigmask (SIG_UNBLOCK, &set, NULL) == 0))
+ return 4;
+ if (!(sigint_occurred == 1)) /* This fails on IRIX. */
+ return 5;
+ return 0;
+}]])],
+ [:],
+ [gl_cv_func_pthread_sigmask_unblock_works=no],
+ [:])
+ m4_ifdef([gl_][THREADLIB], [LIBS=$gl_save_LIBS])
+ ])
+ case "$gl_cv_func_pthread_sigmask_unblock_works" in
+ *no)
+ REPLACE_PTHREAD_SIGMASK=1
+ AC_DEFINE([PTHREAD_SIGMASK_UNBLOCK_BUG], [1],
+ [Define to 1 if pthread_sigmask() unblocks signals incorrectly.])
+ ;;
+ esac
+ fi
+])
+
+# Prerequisite of lib/pthread_sigmask.c.
+AC_DEFUN([gl_PREREQ_PTHREAD_SIGMASK],
+[
+ if test $HAVE_PTHREAD_SIGMASK = 1; then
+ AC_DEFINE([HAVE_PTHREAD_SIGMASK], [1],
+ [Define to 1 if the pthread_sigmask function can be used (despite bugs).])
+ fi
+])
diff --git a/m4/putenv.m4 b/m4/putenv.m4
index f2a76b2..e38f8c5 100644
--- a/m4/putenv.m4
+++ b/m4/putenv.m4
@@ -1,5 +1,5 @@
-# putenv.m4 serial 22
-dnl Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# putenv.m4 serial 24
+dnl Copyright (C) 2002-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -36,10 +36,12 @@ AC_DEFUN([gl_FUNC_PUTENV],
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_svid_putenv="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_svid_putenv="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_svid_putenv="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_svid_putenv="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_svid_putenv="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/quote.m4 b/m4/quote.m4
index 4d2198b..9efab95 100644
--- a/m4/quote.m4
+++ b/m4/quote.m4
@@ -1,5 +1,5 @@
# quote.m4 serial 6
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2018 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2020 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/quotearg.m4 b/m4/quotearg.m4
index c639e6f..b6eb16b 100644
--- a/m4/quotearg.m4
+++ b/m4/quotearg.m4
@@ -1,5 +1,5 @@
# quotearg.m4 serial 9
-dnl Copyright (C) 2002, 2004-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2004-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/raise.m4 b/m4/raise.m4
index 761e4b9..5b61b65 100644
--- a/m4/raise.m4
+++ b/m4/raise.m4
@@ -1,5 +1,5 @@
# raise.m4 serial 4
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/read-file.m4 b/m4/read-file.m4
index ee653dc..4638c7e 100644
--- a/m4/read-file.m4
+++ b/m4/read-file.m4
@@ -1,5 +1,5 @@
# read-file.m4 serial 3
-dnl Copyright (C) 2002-2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/readdir.m4 b/m4/readdir.m4
index f45a45f..ca4e741 100644
--- a/m4/readdir.m4
+++ b/m4/readdir.m4
@@ -1,5 +1,5 @@
# readdir.m4 serial 1
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/readlink.m4 b/m4/readlink.m4
index 4d0ab48..9aa9e46 100644
--- a/m4/readlink.m4
+++ b/m4/readlink.m4
@@ -1,5 +1,5 @@
-# readlink.m4 serial 14
-dnl Copyright (C) 2003, 2007, 2009-2018 Free Software Foundation, Inc.
+# readlink.m4 serial 15
+dnl Copyright (C) 2003, 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -38,8 +38,8 @@ AC_DEFUN([gl_FUNC_READLINK],
linux-* | linux) gl_cv_func_readlink_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_readlink_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_readlink_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_readlink_works="$gl_cross_guess_normal" ;;
esac
])
rm -f conftest.link conftest.lnk2])
diff --git a/m4/realloc.m4 b/m4/realloc.m4
index 23c0d5d..85b8f87 100644
--- a/m4/realloc.m4
+++ b/m4/realloc.m4
@@ -1,11 +1,9 @@
-# realloc.m4 serial 15
-dnl Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+# realloc.m4 serial 18
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-m4_version_prereq([2.70], [] ,[
-
# This is adapted with modifications from upstream Autoconf here:
# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=04be2b7a29d65d9a08e64e8e56e594c91749598c
AC_DEFUN([_AC_FUNC_REALLOC_IF],
@@ -32,19 +30,24 @@ AC_DEFUN([_AC_FUNC_REALLOC_IF],
[ac_cv_func_realloc_0_nonnull=no],
[case "$host_os" in
# Guess yes on platforms where we know the result.
- *-gnu* | gnu* | freebsd* | netbsd* | openbsd* \
+ *-gnu* | gnu* | *-musl* | freebsd* | netbsd* | openbsd* \
| hpux* | solaris* | cygwin* | mingw*)
- ac_cv_func_realloc_0_nonnull=yes ;;
- # If we don't know, assume the worst.
- *) ac_cv_func_realloc_0_nonnull=no ;;
+ ac_cv_func_realloc_0_nonnull="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;;
esac
])
])
- AS_IF([test $ac_cv_func_realloc_0_nonnull = yes], [$1], [$2])
+ case "$ac_cv_func_realloc_0_nonnull" in
+ *yes)
+ $1
+ ;;
+ *)
+ $2
+ ;;
+ esac
])# AC_FUNC_REALLOC
-])
-
# gl_FUNC_REALLOC_GNU
# -------------------
# Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace
diff --git a/m4/regex.m4 b/m4/regex.m4
index 3a39b1a..65f5185 100644
--- a/m4/regex.m4
+++ b/m4/regex.m4
@@ -1,6 +1,6 @@
-# serial 68
+# serial 69
-# Copyright (C) 1996-2001, 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2001, 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -243,8 +243,8 @@ AC_DEFUN([gl_REGEX],
[case "$host_os" in
# Guess no on native Windows.
mingw*) gl_cv_func_re_compile_pattern_working="guessing no" ;;
- # Otherwise, assume it is not working.
- *) gl_cv_func_re_compile_pattern_working="guessing no" ;;
+ # Otherwise obey --enable-cross-guesses.
+ *) gl_cv_func_re_compile_pattern_working="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/rename.m4 b/m4/rename.m4
index fcf230e..a1bd705 100644
--- a/m4/rename.m4
+++ b/m4/rename.m4
@@ -1,6 +1,6 @@
-# serial 31
+# serial 32
-# Copyright (C) 2001, 2003, 2005-2006, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005-2006, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -61,8 +61,8 @@ AC_DEFUN([gl_FUNC_RENAME],
*-gnu*) gl_cv_func_rename_slash_dst_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_rename_slash_dst_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_slash_dst_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_slash_dst_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.f conftest.f1 conftest.f2 conftest.d1 conftest.d2 conftest.lnk
@@ -117,8 +117,8 @@ AC_DEFUN([gl_FUNC_RENAME],
*-gnu*) gl_cv_func_rename_slash_src_works="guessing yes" ;;
# Guess yes on native Windows.
mingw*) gl_cv_func_rename_slash_src_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_slash_src_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_slash_src_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.d3 conftest.lnk
@@ -140,53 +140,58 @@ AC_DEFUN([gl_FUNC_RENAME],
AC_CACHE_CHECK([whether rename manages hard links correctly],
[gl_cv_func_rename_link_works],
[if test $ac_cv_func_link = yes; then
- rm -rf conftest.f conftest.f1 conftest.f2
- if touch conftest.f conftest.f2 && ln conftest.f conftest.f1 &&
- set x `ls -i conftest.f conftest.f1` && test "$2" = "$4"; then
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM([[
-# include <errno.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <unistd.h>
- ]],
- [[int result = 0;
- if (rename ("conftest.f", "conftest.f1"))
- result |= 1;
- if (unlink ("conftest.f1"))
- result |= 2;
+ if test $cross_compiling != yes; then
+ rm -rf conftest.f conftest.f1 conftest.f2
+ if touch conftest.f conftest.f2 && ln conftest.f conftest.f1 &&
+ set x `ls -i conftest.f conftest.f1` && test "$2" = "$4"; then
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([[
+# include <errno.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+ ]],
+ [[int result = 0;
+ if (rename ("conftest.f", "conftest.f1"))
+ result |= 1;
+ if (unlink ("conftest.f1"))
+ result |= 2;
- /* Allow either the POSIX-required behavior, where the
- previous rename kept conftest.f, or the (better) NetBSD
- behavior, where it removed conftest.f. */
- if (rename ("conftest.f", "conftest.f") != 0
- && errno != ENOENT)
- result |= 4;
+ /* Allow either the POSIX-required behavior, where the
+ previous rename kept conftest.f, or the (better) NetBSD
+ behavior, where it removed conftest.f. */
+ if (rename ("conftest.f", "conftest.f") != 0
+ && errno != ENOENT)
+ result |= 4;
- if (rename ("conftest.f1", "conftest.f1") == 0)
- result |= 8;
- if (rename ("conftest.f2", "conftest.f2") != 0)
- result |= 16;
- return result;
- ]])],
- [gl_cv_func_rename_link_works=yes],
- [gl_cv_func_rename_link_works=no],
- dnl When crosscompiling, assume rename is broken.
- [case "$host_os" in
- # Guess yes on Linux systems.
- linux-* | linux) gl_cv_func_rename_link_works="guessing yes" ;;
- # Guess yes on glibc systems.
- *-gnu*) gl_cv_func_rename_link_works="guessing yes" ;;
- # Guess yes on native Windows.
- mingw*) gl_cv_func_rename_link_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_link_works="guessing no" ;;
- esac
- ])
+ if (rename ("conftest.f1", "conftest.f1") == 0)
+ result |= 8;
+ if (rename ("conftest.f2", "conftest.f2") != 0)
+ result |= 16;
+ return result;
+ ]])],
+ [gl_cv_func_rename_link_works=yes],
+ [gl_cv_func_rename_link_works=no],
+ [dnl We don't get here.
+ :
+ ])
+ else
+ gl_cv_func_rename_link_works="guessing no"
+ fi
+ rm -rf conftest.f conftest.f1 conftest.f2
else
- gl_cv_func_rename_link_works="guessing no"
+ dnl When crosscompiling, assume rename is broken.
+ case "$host_os" in
+ # Guess yes on Linux systems.
+ linux-* | linux) gl_cv_func_rename_link_works="guessing yes" ;;
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_rename_link_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_rename_link_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_link_works="$gl_cross_guess_normal" ;;
+ esac
fi
- rm -rf conftest.f conftest.f1 conftest.f2
else
gl_cv_func_rename_link_works=yes
fi
@@ -232,8 +237,8 @@ AC_DEFUN([gl_FUNC_RENAME],
*-gnu*) gl_cv_func_rename_dest_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_rename_dest_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rename_dest_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rename_dest_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.f conftest.d1 conftest.d2
diff --git a/m4/rmdir.m4 b/m4/rmdir.m4
index a24d845..ad1b192 100644
--- a/m4/rmdir.m4
+++ b/m4/rmdir.m4
@@ -1,5 +1,5 @@
-# rmdir.m4 serial 16
-dnl Copyright (C) 2002, 2005, 2009-2018 Free Software Foundation, Inc.
+# rmdir.m4 serial 17
+dnl Copyright (C) 2002, 2005, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -39,8 +39,8 @@ AC_DEFUN([gl_FUNC_RMDIR],
*-gnu* | gnu*) gl_cv_func_rmdir_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_rmdir_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_rmdir_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_rmdir_works="$gl_cross_guess_normal" ;;
esac
])
rm -rf conftest.dir conftest.file])
diff --git a/m4/sched_h.m4 b/m4/sched_h.m4
new file mode 100644
index 0000000..af0c43d
--- /dev/null
+++ b/m4/sched_h.m4
@@ -0,0 +1,91 @@
+# sched_h.m4 serial 12
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Bruno Haible.
+
+AC_DEFUN([gl_SCHED_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_SCHED_H_DEFAULTS])
+
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ AC_CHECK_HEADERS_ONCE([sys/cdefs.h])
+ AC_CHECK_HEADERS([sched.h], [], [],
+ [[#if HAVE_SYS_CDEFS_H
+ #include <sys/cdefs.h>
+ #endif
+ ]])
+ gl_NEXT_HEADERS([sched.h])
+
+ if test "$ac_cv_header_sched_h" = yes; then
+ HAVE_SCHED_H=1
+ else
+ HAVE_SCHED_H=0
+ fi
+ AC_SUBST([HAVE_SCHED_H])
+
+ if test "$HAVE_SCHED_H" = 1; then
+ AC_CHECK_TYPE([struct sched_param],
+ [HAVE_STRUCT_SCHED_PARAM=1], [HAVE_STRUCT_SCHED_PARAM=0],
+ [[#if HAVE_SYS_CDEFS_H
+ #include <sys/cdefs.h>
+ #endif
+ #include <sched.h>
+ ]])
+ else
+ HAVE_STRUCT_SCHED_PARAM=0
+ case "$host_os" in
+ os2*)
+ dnl On OS/2 kLIBC, struct sched_param is in spawn.h.
+ AC_CHECK_TYPE([struct sched_param],
+ [HAVE_STRUCT_SCHED_PARAM=1], [],
+ [#include <spawn.h>])
+ ;;
+ vms)
+ dnl On OpenVMS 7.2 or newer, struct sched_param is in pthread.h.
+ AC_CHECK_TYPE([struct sched_param],
+ [HAVE_STRUCT_SCHED_PARAM=1], [],
+ [#include <pthread.h>])
+ ;;
+ esac
+ fi
+ AC_SUBST([HAVE_STRUCT_SCHED_PARAM])
+
+ if test "$ac_cv_header_sys_cdefs_h" = yes; then
+ HAVE_SYS_CDEFS_H=1
+ else
+ HAVE_SYS_CDEFS_H=0
+ fi
+ AC_SUBST([HAVE_SYS_CDEFS_H])
+
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, if it is not common
+ dnl enough to be declared everywhere.
+ gl_WARN_ON_USE_PREPARE([[#include <sched.h>
+ ]], [sched_yield])
+])
+
+AC_DEFUN([gl_SCHED_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_SCHED_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_SCHED_H_DEFAULTS],
+[
+ GNULIB_SCHED_YIELD=0; AC_SUBST([GNULIB_SCHED_YIELD])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_SCHED_YIELD=1; AC_SUBST([HAVE_SCHED_YIELD])
+ REPLACE_SCHED_YIELD=0; AC_SUBST([REPLACE_SCHED_YIELD])
+])
diff --git a/m4/select.m4 b/m4/select.m4
index 098af8e..d950460 100644
--- a/m4/select.m4
+++ b/m4/select.m4
@@ -1,5 +1,5 @@
-# select.m4 serial 10
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# select.m4 serial 11
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -78,8 +78,8 @@ changequote([,])dnl
linux-* | linux) gl_cv_func_select_detects_ebadf="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_select_detects_ebadf="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_select_detects_ebadf="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_select_detects_ebadf="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/selinux-context-h.m4 b/m4/selinux-context-h.m4
index 4218dba..b271dfe 100644
--- a/m4/selinux-context-h.m4
+++ b/m4/selinux-context-h.m4
@@ -1,5 +1,5 @@
# serial 3 -*- Autoconf -*-
-# Copyright (C) 2006-2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/selinux-selinux-h.m4 b/m4/selinux-selinux-h.m4
index 2065b04..b6a7a91 100644
--- a/m4/selinux-selinux-h.m4
+++ b/m4/selinux-selinux-h.m4
@@ -1,5 +1,5 @@
# serial 5 -*- Autoconf -*-
-# Copyright (C) 2006-2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/setenv.m4 b/m4/setenv.m4
index 5d257f7..ef03673 100644
--- a/m4/setenv.m4
+++ b/m4/setenv.m4
@@ -1,5 +1,5 @@
-# setenv.m4 serial 27
-dnl Copyright (C) 2001-2004, 2006-2018 Free Software Foundation, Inc.
+# setenv.m4 serial 29
+dnl Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -37,8 +37,10 @@ AC_DEFUN([gl_FUNC_SETENV],
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_setenv_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_setenv_works="guessing no" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_setenv_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_setenv_works="$gl_cross_guess_normal" ;;
esac
])])
case "$gl_cv_func_setenv_works" in
@@ -129,8 +131,8 @@ int unsetenv (const char *name);
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_unsetenv_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_unsetenv_works="$gl_cross_guess_normal" ;;
esac
])])
case "$gl_cv_func_unsetenv_works" in
diff --git a/m4/setlocale.m4 b/m4/setlocale.m4
index e0fb74a..a56bf4e 100644
--- a/m4/setlocale.m4
+++ b/m4/setlocale.m4
@@ -1,5 +1,5 @@
-# setlocale.m4 serial 5
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# setlocale.m4 serial 7
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -7,19 +7,72 @@ dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_SETLOCALE],
[
AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_SETLOCALE_NULL])
AC_REQUIRE([AC_CANONICAL_HOST])
+
+ dnl Test whether we need to improve on the general working of setlocale.
+ NEED_SETLOCALE_IMPROVED=0
case "$host_os" in
dnl On native Windows systems, setlocale(category,NULL) does not look at
dnl the environment variables LC_ALL, category, and LANG.
- mingw*) REPLACE_SETLOCALE=1 ;;
+ mingw*) NEED_SETLOCALE_IMPROVED=1 ;;
dnl On Cygwin 1.5.x, setlocale always succeeds but setlocale(LC_CTYPE,NULL)
dnl is then still "C".
cygwin*)
case `uname -r` in
- 1.5.*) REPLACE_SETLOCALE=1 ;;
+ 1.5.*) NEED_SETLOCALE_IMPROVED=1 ;;
+ esac
+ ;;
+ dnl On Android 4.3, setlocale(category,"C") always fails.
+ *)
+ AC_CACHE_CHECK([whether setlocale supports the C locale],
+ [gl_cv_func_setlocale_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <locale.h>
+int main ()
+{
+ return setlocale (LC_ALL, "C") == NULL;
+}]])],
+ [gl_cv_func_setlocale_works=yes],
+ [gl_cv_func_setlocale_works=no],
+ [case "$host_os" in
+ # Guess no on Android.
+ linux*-android*) gl_cv_func_setlocale_works="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_setlocale_works="guessing yes";;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_setlocale_works" in
+ *yes) ;;
+ *) NEED_SETLOCALE_IMPROVED=1 ;;
esac
;;
esac
+ AC_DEFINE_UNQUOTED([NEED_SETLOCALE_IMPROVED], [$NEED_SETLOCALE_IMPROVED],
+ [Define to 1 to enable general improvements of setlocale.])
+
+ dnl Test whether we need a multithread-safe setlocale(category,NULL).
+ NEED_SETLOCALE_MTSAFE=0
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+ NEED_SETLOCALE_MTSAFE=1
+ fi
+ AC_DEFINE_UNQUOTED([NEED_SETLOCALE_MTSAFE], [$NEED_SETLOCALE_MTSAFE],
+ [Define to 1 to enable a multithread-safety fix of setlocale.])
+
+ if test $NEED_SETLOCALE_IMPROVED = 1 || test $NEED_SETLOCALE_MTSAFE = 1; then
+ REPLACE_SETLOCALE=1
+ fi
+
+ if test $NEED_SETLOCALE_MTSAFE = 1; then
+ LIB_SETLOCALE="$LIB_SETLOCALE_NULL"
+ else
+ LIB_SETLOCALE=
+ fi
+ dnl LIB_SETLOCALE is expected to be '-pthread' or '-lpthread' on AIX with gcc
+ dnl or xlc, and empty otherwise.
+ AC_SUBST([LIB_SETLOCALE])
])
# Prerequisites of lib/setlocale.c.
diff --git a/m4/setlocale_null.m4 b/m4/setlocale_null.m4
new file mode 100644
index 0000000..c1ee1f7
--- /dev/null
+++ b/m4/setlocale_null.m4
@@ -0,0 +1,98 @@
+# setlocale_null.m4 serial 2
+dnl Copyright (C) 2019-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SETLOCALE_NULL],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_PTHREADLIB])
+ AC_CHECK_HEADERS_ONCE([threads.h])
+
+ AC_CACHE_CHECK([whether setlocale (LC_ALL, NULL) is multithread-safe],
+ [gl_cv_func_setlocale_null_all_mtsafe],
+ [case "$host_os" in
+ # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin.
+ *-musl* | darwin* | freebsd* | netbsd* | openbsd* | aix* | haiku* | cygwin*)
+ gl_cv_func_setlocale_null_all_mtsafe=no ;;
+ # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows.
+ *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*)
+ gl_cv_func_setlocale_null_all_mtsafe=yes ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *)
+ gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ dnl On platforms without multithreading, there is no issue.
+ case "$host_os" in
+ mingw*) ;;
+ *)
+ if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then
+ gl_cv_func_setlocale_null_all_mtsafe="trivially yes"
+ fi
+ ;;
+ esac
+ case "$gl_cv_func_setlocale_null_all_mtsafe" in
+ *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;;
+ *) SETLOCALE_NULL_ALL_MTSAFE=0 ;;
+ esac
+ AC_DEFINE_UNQUOTED([SETLOCALE_NULL_ALL_MTSAFE], [$SETLOCALE_NULL_ALL_MTSAFE],
+ [Define to 1 if setlocale (LC_ALL, NULL) is multithread-safe.])
+
+ dnl This is about a single category (not LC_ALL).
+ AC_CACHE_CHECK([whether setlocale (category, NULL) is multithread-safe],
+ [gl_cv_func_setlocale_null_one_mtsafe],
+ [case "$host_os" in
+ # Guess no on OpenBSD, AIX.
+ openbsd* | aix*)
+ gl_cv_func_setlocale_null_one_mtsafe=no ;;
+ # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows.
+ *-gnu* | gnu* | *-musl* | darwin* | freebsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*)
+ gl_cv_func_setlocale_null_one_mtsafe=yes ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *)
+ gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ dnl On platforms without multithreading, there is no issue.
+ case "$host_os" in
+ mingw*) ;;
+ *)
+ if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then
+ gl_cv_func_setlocale_null_one_mtsafe="trivially yes"
+ fi
+ ;;
+ esac
+ case "$gl_cv_func_setlocale_null_one_mtsafe" in
+ *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;;
+ *) SETLOCALE_NULL_ONE_MTSAFE=0 ;;
+ esac
+ AC_DEFINE_UNQUOTED([SETLOCALE_NULL_ONE_MTSAFE], [$SETLOCALE_NULL_ONE_MTSAFE],
+ [Define to 1 if setlocale (category, NULL) is multithread-safe.])
+
+ dnl Determine link dependencies of lib/setlocale_null.c and lib/setlocale-lock.c.
+ if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then
+ case "$host_os" in
+ mingw*) LIB_SETLOCALE_NULL= ;;
+ *)
+ gl_WEAK_SYMBOLS
+ case "$gl_cv_have_weak" in
+ *yes) LIB_SETLOCALE_NULL= ;;
+ *) LIB_SETLOCALE_NULL="$LIBPTHREAD" ;;
+ esac
+ ;;
+ esac
+ else
+ LIB_SETLOCALE_NULL=
+ fi
+ dnl LIB_SETLOCALE_NULL is expected to be '-pthread' or '-lpthread' on AIX
+ dnl with gcc or xlc, and empty otherwise.
+ AC_SUBST([LIB_SETLOCALE_NULL])
+])
+
+# Prerequisites of lib/setlocale-lock.c.
+AC_DEFUN([gl_PREREQ_SETLOCALE_LOCK],
+[
+ gl_VISIBILITY
+])
diff --git a/m4/sigaction.m4 b/m4/sigaction.m4
index f6918fa..9a2d201 100644
--- a/m4/sigaction.m4
+++ b/m4/sigaction.m4
@@ -1,5 +1,5 @@
# sigaction.m4 serial 7
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/signal_h.m4 b/m4/signal_h.m4
index 394b91d..0868438 100644
--- a/m4/signal_h.m4
+++ b/m4/signal_h.m4
@@ -1,5 +1,5 @@
# signal_h.m4 serial 18
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/signalblocking.m4 b/m4/signalblocking.m4
index 4350b21..74de534 100644
--- a/m4/signalblocking.m4
+++ b/m4/signalblocking.m4
@@ -1,5 +1,5 @@
# signalblocking.m4 serial 14
-dnl Copyright (C) 2001-2002, 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2002, 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sleep.m4 b/m4/sleep.m4
index 7ddaffa..d19170e 100644
--- a/m4/sleep.m4
+++ b/m4/sleep.m4
@@ -1,5 +1,5 @@
-# sleep.m4 serial 9
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# sleep.m4 serial 11
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -48,10 +48,12 @@ handle_alarm (int sig)
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_sleep_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_sleep_works="guessing yes" ;;
# Guess no on native Windows.
mingw*) gl_cv_func_sleep_works="guessing no" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_sleep_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_sleep_works="$gl_cross_guess_normal" ;;
esac
])])
case "$gl_cv_func_sleep_works" in
diff --git a/m4/socketlib.m4 b/m4/socketlib.m4
index a725d3c..2372a27 100644
--- a/m4/socketlib.m4
+++ b/m4/socketlib.m4
@@ -1,5 +1,5 @@
# socketlib.m4 serial 2
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sockets.m4 b/m4/sockets.m4
index d941dad..7e53ef2 100644
--- a/m4/sockets.m4
+++ b/m4/sockets.m4
@@ -1,5 +1,5 @@
# sockets.m4 serial 7
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/socklen.m4 b/m4/socklen.m4
index fa79b07..251960b 100644
--- a/m4/socklen.m4
+++ b/m4/socklen.m4
@@ -1,5 +1,5 @@
# socklen.m4 serial 11
-dnl Copyright (C) 2005-2007, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2005-2007, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sockpfaf.m4 b/m4/sockpfaf.m4
index cc47b8b..495a355 100644
--- a/m4/sockpfaf.m4
+++ b/m4/sockpfaf.m4
@@ -1,5 +1,5 @@
# sockpfaf.m4 serial 9
-dnl Copyright (C) 2004, 2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2004, 2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
index 0977f20..6c0a588 100644
--- a/m4/ssize_t.m4
+++ b/m4/ssize_t.m4
@@ -1,5 +1,5 @@
# ssize_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2001-2003, 2006, 2010-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2003, 2006, 2010-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/stat-time.m4 b/m4/stat-time.m4
index d0d17ed..0ac3f72 100644
--- a/m4/stat-time.m4
+++ b/m4/stat-time.m4
@@ -1,6 +1,6 @@
# Checks for stat-related time functions.
-# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2018 Free Software
+# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2020 Free Software
# Foundation, Inc.
# This file is free software; the Free Software Foundation
diff --git a/m4/stat.m4 b/m4/stat.m4
index e8ec3b2..46e9abc 100644
--- a/m4/stat.m4
+++ b/m4/stat.m4
@@ -1,6 +1,6 @@
-# serial 15
+# serial 16
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -47,8 +47,8 @@ AC_DEFUN([gl_FUNC_STAT],
linux-* | linux) gl_cv_func_stat_file_slash="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_stat_file_slash="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_stat_file_slash="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_stat_file_slash="$gl_cross_guess_normal" ;;
esac
])
rm -f conftest.tmp conftest.lnk])
diff --git a/m4/std-gnu11.m4 b/m4/std-gnu11.m4
index bae4ed1..c1ec624 100644
--- a/m4/std-gnu11.m4
+++ b/m4/std-gnu11.m4
@@ -7,7 +7,7 @@
# or later is installed everywhere a Gnulib program might be developed.
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/m4/stdalign.m4 b/m4/stdalign.m4
index c74fe9b..dcf778e 100644
--- a/m4/stdalign.m4
+++ b/m4/stdalign.m4
@@ -1,6 +1,6 @@
# Check for stdalign.h that conforms to C11.
-dnl Copyright 2011-2018 Free Software Foundation, Inc.
+dnl Copyright 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/stdarg.m4 b/m4/stdarg.m4
index f89d38b..69747f3 100644
--- a/m4/stdarg.m4
+++ b/m4/stdarg.m4
@@ -1,5 +1,5 @@
# stdarg.m4 serial 7
-dnl Copyright (C) 2006, 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
index f8c0577..6bb087e 100644
--- a/m4/stdbool.m4
+++ b/m4/stdbool.m4
@@ -1,22 +1,36 @@
# Check for stdbool.h that conforms to C99.
-dnl Copyright (C) 2002-2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-#serial 7
+#serial 8
# Prepare for substituting <stdbool.h> if it is not supported.
AC_DEFUN([AM_STDBOOL_H],
[
AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
+ AC_REQUIRE([AC_CANONICAL_HOST])
- # Define two additional variables used in the Makefile substitution.
-
+ dnl On some platforms, <stdbool.h> does not exist or does not conform to C99.
+ dnl On Solaris 10 with CC=cc CXX=CC, <stdbool.h> exists but is not usable
+ dnl in C++ mode (and no <cstdbool> exists). In this case, we use our
+ dnl replacement, also in C mode (for binary compatibility between C and C++).
if test "$ac_cv_header_stdbool_h" = yes; then
- STDBOOL_H=''
+ case "$host_os" in
+ solaris*)
+ if test -z "$GCC"; then
+ STDBOOL_H='stdbool.h'
+ else
+ STDBOOL_H=''
+ fi
+ ;;
+ *)
+ STDBOOL_H=''
+ ;;
+ esac
else
STDBOOL_H='stdbool.h'
fi
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
index 07b040a..6bcfadb 100644
--- a/m4/stddef_h.m4
+++ b/m4/stddef_h.m4
@@ -1,6 +1,6 @@
dnl A placeholder for <stddef.h>, for platforms that have issues.
# stddef_h.m4 serial 6
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/stdint.m4 b/m4/stdint.m4
index 81d065f..29ad826 100644
--- a/m4/stdint.m4
+++ b/m4/stdint.m4
@@ -1,5 +1,5 @@
-# stdint.m4 serial 53
-dnl Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# stdint.m4 serial 54
+dnl Copyright (C) 2001-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -17,21 +17,12 @@ AC_DEFUN_ONCE([gl_STDINT_H],
AC_REQUIRE([gl_LIMITS_H])
AC_REQUIRE([gt_TYPE_WINT_T])
- dnl Check for long long int and unsigned long long int.
- AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
- if test $ac_cv_type_long_long_int = yes; then
- HAVE_LONG_LONG_INT=1
- else
- HAVE_LONG_LONG_INT=0
- fi
- AC_SUBST([HAVE_LONG_LONG_INT])
- AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
- if test $ac_cv_type_unsigned_long_long_int = yes; then
- HAVE_UNSIGNED_LONG_LONG_INT=1
- else
- HAVE_UNSIGNED_LONG_LONG_INT=0
- fi
- AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+ dnl For backward compatibility. Some packages may still be testing these
+ dnl macros.
+ AC_DEFINE([HAVE_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type 'long long int'.])
+ AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type 'unsigned long long int'.])
dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
AC_CHECK_HEADERS_ONCE([wchar.h])
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
index 0debe69..c603b51 100644
--- a/m4/stdio_h.m4
+++ b/m4/stdio_h.m4
@@ -1,5 +1,5 @@
# stdio_h.m4 serial 49
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
index 49dc5d5..61a3e31 100644
--- a/m4/stdlib_h.m4
+++ b/m4/stdlib_h.m4
@@ -1,5 +1,5 @@
-# stdlib_h.m4 serial 45
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# stdlib_h.m4 serial 48
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -23,10 +23,10 @@ AC_DEFUN([gl_STDLIB_H],
# include <random.h>
#endif
]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
- initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps
+ initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps
posix_openpt ptsname ptsname_r qsort_r random random_r reallocarray
realpath rpmatch secure_getenv setenv setstate setstate_r srandom
- srandom_r strtod strtoll strtoull unlockpt unsetenv])
+ srandom_r strtod strtold strtoll strtoull unlockpt unsetenv])
])
AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
@@ -68,6 +68,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV])
GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD])
+ GNULIB_STRTOLD=0; AC_SUBST([GNULIB_STRTOLD])
GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL])
GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL])
GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX])
@@ -81,7 +82,9 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG])
HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT])
+ HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE])
HAVE_DECL_INITSTATE=1; AC_SUBST([HAVE_DECL_INITSTATE])
+ HAVE_MBTOWC=1; AC_SUBST([HAVE_MBTOWC])
HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP])
HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP])
HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS])
@@ -100,8 +103,10 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV])
HAVE_SETENV=1; AC_SUBST([HAVE_SETENV])
HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV])
+ HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE])
HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE])
HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD])
+ HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD])
HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL])
HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL])
HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
@@ -110,6 +115,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV])
REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC])
REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
+ REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE])
REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC])
REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC])
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
@@ -117,11 +123,14 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R])
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
REPLACE_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R])
+ REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM])
REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R])
REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC])
REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV])
+ REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE])
REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
+ REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD])
REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB])
])
diff --git a/m4/strdup.m4 b/m4/strdup.m4
index dddaa01..2d1fcc4 100644
--- a/m4/strdup.m4
+++ b/m4/strdup.m4
@@ -1,6 +1,6 @@
# strdup.m4 serial 13
-dnl Copyright (C) 2002-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
diff --git a/m4/strerror.m4 b/m4/strerror.m4
index b886b8d..fd84ce8 100644
--- a/m4/strerror.m4
+++ b/m4/strerror.m4
@@ -1,5 +1,5 @@
-# strerror.m4 serial 19
-dnl Copyright (C) 2002, 2007-2018 Free Software Foundation, Inc.
+# strerror.m4 serial 21
+dnl Copyright (C) 2002, 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -26,8 +26,10 @@ AC_DEFUN([gl_FUNC_STRERROR],
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_working_strerror="guessing no" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_working_strerror="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;;
esac
])
])
@@ -80,10 +82,12 @@ AC_DEFUN([gl_FUNC_STRERROR_0],
[case "$host_os" in
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;;
# Guess yes on native Windows.
mingw*) gl_cv_func_strerror_0_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_strerror_0_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/strerror_r.m4 b/m4/strerror_r.m4
index a3e3a4c..d431f23 100644
--- a/m4/strerror_r.m4
+++ b/m4/strerror_r.m4
@@ -1,5 +1,5 @@
-# strerror_r.m4 serial 19
-dnl Copyright (C) 2002, 2007-2018 Free Software Foundation, Inc.
+# strerror_r.m4 serial 20
+dnl Copyright (C) 2002, 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -163,7 +163,7 @@ changequote([,])dnl
[gl_cv_func_strerror_r_works=no],
[dnl Guess no on all platforms that have __xpg_strerror_r,
dnl at least until fixed glibc and cygwin are more common.
- gl_cv_func_strerror_r_works="guessing no"
+ gl_cv_func_strerror_r_works="$gl_cross_guess_normal"
])
])
fi
diff --git a/m4/string_h.m4 b/m4/string_h.m4
index 97c80dc..4c1f685 100644
--- a/m4/string_h.m4
+++ b/m4/string_h.m4
@@ -1,6 +1,6 @@
# Configure a GNU-like replacement for <string.h>.
-# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# Copyright (C) 2007-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/strverscmp.m4 b/m4/strverscmp.m4
index 5d32985..6803845 100644
--- a/m4/strverscmp.m4
+++ b/m4/strverscmp.m4
@@ -1,5 +1,5 @@
# strverscmp.m4 serial 8
-dnl Copyright (C) 2002, 2005-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/symlink.m4 b/m4/symlink.m4
index afaa941..9cfdf93 100644
--- a/m4/symlink.m4
+++ b/m4/symlink.m4
@@ -1,7 +1,7 @@
-# serial 8
+# serial 9
# See if we need to provide symlink replacement.
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -40,8 +40,8 @@ AC_DEFUN([gl_FUNC_SYMLINK],
linux-* | linux) gl_cv_func_symlink_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_symlink_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_symlink_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_symlink_works="$gl_cross_guess_normal" ;;
esac
])
rm -f conftest.f conftest.link conftest.lnk2])
diff --git a/m4/sys_ioctl_h.m4 b/m4/sys_ioctl_h.m4
index 1ef67c0..303820e 100644
--- a/m4/sys_ioctl_h.m4
+++ b/m4/sys_ioctl_h.m4
@@ -1,5 +1,5 @@
# sys_ioctl_h.m4 serial 10
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sys_select_h.m4 b/m4/sys_select_h.m4
index 8e9eff4..fa19bb6 100644
--- a/m4/sys_select_h.m4
+++ b/m4/sys_select_h.m4
@@ -1,5 +1,5 @@
# sys_select_h.m4 serial 20
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4
index f210378..1471aea 100644
--- a/m4/sys_socket_h.m4
+++ b/m4/sys_socket_h.m4
@@ -1,5 +1,5 @@
-# sys_socket_h.m4 serial 23
-dnl Copyright (C) 2005-2018 Free Software Foundation, Inc.
+# sys_socket_h.m4 serial 24
+dnl Copyright (C) 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -104,17 +104,11 @@ AC_DEFUN([gl_PREREQ_SYS_H_SOCKET],
gl_CHECK_NEXT_HEADERS([sys/socket.h])
if test $ac_cv_header_sys_socket_h = yes; then
HAVE_SYS_SOCKET_H=1
- HAVE_WS2TCPIP_H=0
else
HAVE_SYS_SOCKET_H=0
- if test $ac_cv_header_ws2tcpip_h = yes; then
- HAVE_WS2TCPIP_H=1
- else
- HAVE_WS2TCPIP_H=0
- fi
fi
AC_SUBST([HAVE_SYS_SOCKET_H])
- AC_SUBST([HAVE_WS2TCPIP_H])
+ gl_PREREQ_SYS_H_WS2TCPIP
])
# Common prerequisites of the <sys/socket.h> replacement and of the
@@ -142,6 +136,24 @@ AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2],
AC_SUBST([HAVE_WINSOCK2_H])
])
+# Common prerequisites of the <sys/socket.h> replacement and of the
+# <arpa/inet.h> replacement.
+# Sets and substitutes HAVE_WS2TCPIP_H.
+AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP],
+[
+ AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_WS2TCPIP_H=0
+ else
+ if test $ac_cv_header_ws2tcpip_h = yes; then
+ HAVE_WS2TCPIP_H=1
+ else
+ HAVE_WS2TCPIP_H=0
+ fi
+ fi
+ AC_SUBST([HAVE_WS2TCPIP_H])
+])
+
AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
[
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
diff --git a/m4/sys_stat_h.m4 b/m4/sys_stat_h.m4
index 52f06aa..d63df9e 100644
--- a/m4/sys_stat_h.m4
+++ b/m4/sys_stat_h.m4
@@ -1,5 +1,5 @@
# sys_stat_h.m4 serial 31 -*- Autoconf -*-
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sys_time_h.m4 b/m4/sys_time_h.m4
index d7e9268..8fc8599 100644
--- a/m4/sys_time_h.m4
+++ b/m4/sys_time_h.m4
@@ -1,7 +1,7 @@
# Configure a replacement for <sys/time.h>.
# serial 9
-# Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/sys_types_h.m4 b/m4/sys_types_h.m4
index 2debfb0..be918dc 100644
--- a/m4/sys_types_h.m4
+++ b/m4/sys_types_h.m4
@@ -1,5 +1,5 @@
# sys_types_h.m4 serial 9
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/sys_uio_h.m4 b/m4/sys_uio_h.m4
index 2cd01e1..a255dea 100644
--- a/m4/sys_uio_h.m4
+++ b/m4/sys_uio_h.m4
@@ -1,5 +1,5 @@
# sys_uio_h.m4 serial 1
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/tempname.m4 b/m4/tempname.m4
index ed813f1..da439f0 100644
--- a/m4/tempname.m4
+++ b/m4/tempname.m4
@@ -1,6 +1,6 @@
#serial 5
-# Copyright (C) 2006-2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2007, 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/thread.m4 b/m4/thread.m4
new file mode 100644
index 0000000..d1e62b8
--- /dev/null
+++ b/m4/thread.m4
@@ -0,0 +1,17 @@
+# thread.m4 serial 3
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_THREAD],
+[
+ AC_REQUIRE([gl_THREADLIB])
+
+ if test $gl_threads_api = posix; then
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_CHECK_FUNCS([pthread_atfork])
+ LIBS="$gl_save_LIBS"
+ fi
+])
diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
index ed6ebd5..e64ad62 100644
--- a/m4/threadlib.m4
+++ b/m4/threadlib.m4
@@ -1,5 +1,5 @@
-# threadlib.m4 serial 15
-dnl Copyright (C) 2005-2018 Free Software Foundation, Inc.
+# threadlib.m4 serial 26
+dnl Copyright (C) 2005-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -8,6 +8,319 @@ dnl From Bruno Haible.
AC_PREREQ([2.60])
+dnl The general structure of the multithreading modules in gnulib is that we
+dnl have three set of modules:
+dnl
+dnl * POSIX API:
+dnl pthread, which combines
+dnl pthread-h
+dnl pthread-thread
+dnl pthread-once
+dnl pthread-mutex
+dnl pthread-rwlock
+dnl pthread-cond
+dnl pthread-tss
+dnl pthread-spin
+dnl sched_yield
+dnl
+dnl * ISO C API:
+dnl threads, which combines
+dnl threads-h
+dnl thrd
+dnl mtx
+dnl cnd
+dnl tss
+dnl
+dnl * Gnulib API, with an implementation that can be chosen at configure
+dnl time through the option --enable-threads=...
+dnl thread
+dnl lock
+dnl cond
+dnl tls
+dnl yield
+dnl
+dnl They are independent, except for the fact that
+dnl - the implementation of the ISO C API may use the POSIX (or some other
+dnl platform dependent) API,
+dnl - the implementation of the Gnulib API may use the POSIX or ISO C or
+dnl some other platform dependent API, depending on the --enable-threads
+dnl option.
+dnl
+dnl This file contains macros for all of these APIs!
+
+dnl ============================================================================
+dnl Macros for all thread APIs
+
+AC_DEFUN([gl_ANYTHREADLIB_EARLY],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ if test -z "$gl_anythreadlib_early_done"; then
+ case "$host_os" in
+ osf*)
+ # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+ # groks <pthread.h>. cc also understands the flag -pthread, but
+ # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+ # 2. putting a flag into CPPFLAGS that has an effect on the linker
+ # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
+ # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ ;;
+ esac
+ # Some systems optimize for single-threaded programs by default, and
+ # need special flags to disable these optimizations. For example, the
+ # definition of 'errno' in <errno.h>.
+ case "$host_os" in
+ aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+ solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+ esac
+ gl_anythreadlib_early_done=done
+ fi
+])
+
+dnl Checks whether the compiler and linker support weak declarations of symbols.
+
+AC_DEFUN([gl_WEAK_SYMBOLS],
+[
+ AC_CACHE_CHECK([whether imported symbols can be declared weak],
+ [gl_cv_have_weak],
+ [gl_cv_have_weak=no
+ dnl First, test whether the compiler accepts it syntactically.
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[extern void xyzzy ();
+#pragma weak xyzzy]],
+ [[xyzzy();]])],
+ [gl_cv_have_weak=maybe])
+ if test $gl_cv_have_weak = maybe; then
+ dnl Second, test whether it actually works. On Cygwin 1.7.2, with
+ dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}]])],
+ [gl_cv_have_weak=yes],
+ [gl_cv_have_weak=no],
+ [dnl When cross-compiling, assume that only ELF platforms support
+ dnl weak symbols.
+ AC_EGREP_CPP([Extensible Linking Format],
+ [#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+ ],
+ [gl_cv_have_weak="guessing yes"],
+ [gl_cv_have_weak="guessing no"])
+ ])
+ fi
+ dnl But when linking statically, weak symbols don't work.
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+ ])
+ case "$gl_cv_have_weak" in
+ *yes)
+ AC_DEFINE([HAVE_WEAK_SYMBOLS], [1],
+ [Define to 1 if the compiler and linker support weak declarations of symbols.])
+ ;;
+ esac
+])
+
+dnl ============================================================================
+dnl Macros for the POSIX API
+
+dnl gl_PTHREADLIB
+dnl -------------
+dnl Tests for the libraries needs for using the POSIX threads API.
+dnl Sets the variable LIBPTHREAD to the linker options for use in a Makefile.
+dnl Sets the variable LIBPMULTITHREAD, for programs that really need
+dnl multithread functionality. The difference between LIBPTHREAD and
+dnl LIBPMULTITHREAD is that on platforms supporting weak symbols, typically
+dnl LIBPTHREAD is empty whereas LIBPMULTITHREAD is not.
+dnl Sets the variable LIB_SCHED_YIELD to the linker options needed to use the
+dnl sched_yield() function.
+dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
+dnl multithread-safe programs.
+dnl Defines the C macro HAVE_PTHREAD_API if (at least parts of) the POSIX
+dnl threads API is available.
+
+dnl The guts of gl_PTHREADLIB. Needs to be expanded only once.
+
+AC_DEFUN([gl_PTHREADLIB_BODY],
+[
+ AC_REQUIRE([gl_ANYTHREADLIB_EARLY])
+ if test -z "$gl_pthreadlib_body_done"; then
+ gl_pthread_api=no
+ LIBPTHREAD=
+ LIBPMULTITHREAD=
+ # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+ # it groks <pthread.h>. It's added above, in gl_ANYTHREADLIB_EARLY.
+ AC_CHECK_HEADER([pthread.h],
+ [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
+ if test "$gl_have_pthread_h" = yes; then
+ # Other possible tests:
+ # -lpthreads (FSU threads, PCthreads)
+ # -lgthreads
+ # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+ # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+ # the second one only in libpthread, and lock.c needs it.
+ #
+ # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
+ # needs -pthread for some reason. See:
+ # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
+ save_LIBS=$LIBS
+ for gl_pthread in '' '-pthread'; do
+ LIBS="$LIBS $gl_pthread"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ pthread_mutex_t m;
+ pthread_mutexattr_t ma;
+ ]],
+ [[pthread_mutex_lock (&m);
+ pthread_mutexattr_init (&ma);]])],
+ [gl_pthread_api=yes
+ LIBPTHREAD=$gl_pthread
+ LIBPMULTITHREAD=$gl_pthread])
+ LIBS=$save_LIBS
+ test $gl_pthread_api = yes && break
+ done
+
+ # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+ # since it is defined as a macro on OSF/1.)
+ if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then
+ # The program links fine without libpthread. But it may actually
+ # need to link with libpthread in order to create multiple threads.
+ AC_CHECK_LIB([pthread], [pthread_kill],
+ [LIBPMULTITHREAD=-lpthread
+ # On Solaris and HP-UX, most pthread functions exist also in libc.
+ # Therefore pthread_in_use() needs to actually try to create a
+ # thread: pthread_create from libc will fail, whereas
+ # pthread_create will actually create a thread.
+ # On Solaris 10 or newer, this test is no longer needed, because
+ # libc contains the fully functional pthread functions.
+ case "$host_os" in
+ solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*)
+ AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
+ [Define if the pthread_in_use() detection is hard.])
+ esac
+ ])
+ elif test $gl_pthread_api != yes; then
+ # Some library is needed. Try libpthread and libc_r.
+ AC_CHECK_LIB([pthread], [pthread_kill],
+ [gl_pthread_api=yes
+ LIBPTHREAD=-lpthread
+ LIBPMULTITHREAD=-lpthread])
+ if test $gl_pthread_api != yes; then
+ # For FreeBSD 4.
+ AC_CHECK_LIB([c_r], [pthread_kill],
+ [gl_pthread_api=yes
+ LIBPTHREAD=-lc_r
+ LIBPMULTITHREAD=-lc_r])
+ fi
+ fi
+ fi
+ AC_MSG_CHECKING([whether POSIX threads API is available])
+ AC_MSG_RESULT([$gl_pthread_api])
+ AC_SUBST([LIBPTHREAD])
+ AC_SUBST([LIBPMULTITHREAD])
+ if test $gl_pthread_api = yes; then
+ AC_DEFINE([HAVE_PTHREAD_API], [1],
+ [Define if you have the <pthread.h> header and the POSIX threads API.])
+ fi
+
+ dnl On some systems, sched_yield is in librt, rather than in libpthread.
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sched.h>]],
+ [[sched_yield ();]])],
+ [LIB_SCHED_YIELD=
+ ],
+ [dnl Solaris 7...10 has sched_yield in librt, not in libpthread or libc.
+ AC_CHECK_LIB([rt], [sched_yield], [LIB_SCHED_YIELD=-lrt],
+ [dnl Solaris 2.5.1, 2.6 has sched_yield in libposix4, not librt.
+ AC_CHECK_LIB([posix4], [sched_yield], [LIB_SCHED_YIELD=-lposix4])])
+ ])
+ AC_SUBST([LIB_SCHED_YIELD])
+
+ gl_pthreadlib_body_done=done
+ fi
+])
+
+AC_DEFUN([gl_PTHREADLIB],
+[
+ AC_REQUIRE([gl_ANYTHREADLIB_EARLY])
+ gl_PTHREADLIB_BODY
+])
+
+dnl ============================================================================
+dnl Macros for the ISO C API
+
+dnl gl_STDTHREADLIB
+dnl ---------------
+dnl Tests for the libraries needs for using the ISO C threads API.
+dnl Sets the variable LIBSTDTHREAD to the linker options for use in a Makefile.
+dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
+dnl multithread-safe programs.
+dnl Defines the C macro HAVE_THREADS_H if (at least parts of) the ISO C threads
+dnl API is available.
+
+dnl The guts of gl_STDTHREADLIB. Needs to be expanded only once.
+
+AC_DEFUN([gl_STDTHREADLIB_BODY],
+[
+ AC_REQUIRE([gl_ANYTHREADLIB_EARLY])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ if test -z "$gl_stdthreadlib_body_done"; then
+ AC_CHECK_HEADERS_ONCE([threads.h])
+
+ case "$host_os" in
+ mingw*)
+ LIBSTDTHREAD=
+ ;;
+ *)
+ gl_PTHREADLIB_BODY
+ if test $ac_cv_header_threads_h = yes; then
+ dnl glibc >= 2.29 has thrd_create in libpthread.
+ dnl FreeBSD >= 10 has thrd_create in libstdthreads; this library depends
+ dnl on libpthread (for the symbol 'pthread_mutexattr_gettype').
+ dnl AIX >= 7.1 and Solaris >= 11.4 have thrd_create in libc.
+ AC_CHECK_FUNCS([thrd_create])
+ if test $ac_cv_func_thrd_create = yes; then
+ LIBSTDTHREAD=
+ else
+ AC_CHECK_LIB([stdthreads], [thrd_create], [
+ LIBSTDTHREAD='-lstdthreads -lpthread'
+ ], [
+ dnl Guess that thrd_create is in libpthread.
+ LIBSTDTHREAD="$LIBPMULTITHREAD"
+ ])
+ fi
+ else
+ dnl Libraries needed by thrd.c, mtx.c, cnd.c, tss.c.
+ LIBSTDTHREAD="$LIBPMULTITHREAD $LIB_SCHED_YIELD"
+ fi
+ ;;
+ esac
+ AC_SUBST([LIBSTDTHREAD])
+
+ AC_MSG_CHECKING([whether ISO C threads API is available])
+ AC_MSG_RESULT([$ac_cv_header_threads_h])
+ gl_stdthreadlib_body_done=done
+ fi
+])
+
+AC_DEFUN([gl_STDTHREADLIB],
+[
+ AC_REQUIRE([gl_ANYTHREADLIB_EARLY])
+ gl_STDTHREADLIB_BODY
+])
+
+dnl ============================================================================
+dnl Macros for the Gnulib API
+
dnl gl_THREADLIB
dnl ------------
dnl Tests for a multithreading library to be used.
@@ -16,8 +329,13 @@ dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
dnl default is 'no', otherwise it is system dependent. In both cases, the user
dnl can change the choice through the options --enable-threads=choice or
dnl --disable-threads.
-dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
-dnl USE_PTH_THREADS, USE_WINDOWS_THREADS
+dnl Defines at most one of the macros USE_ISOC_THREADS, USE_POSIX_THREADS,
+dnl USE_ISOC_AND_POSIX_THREADS, USE_WINDOWS_THREADS.
+dnl The choice --enable-threads=isoc+posix is available only on platforms that
+dnl have both the ISO C and the POSIX threads APIs. It has the effect of using
+dnl the ISO C API for most things and the POSIX API only for creating and
+dnl controlling threads (because there is no equivalent to pthread_atfork in
+dnl the ISO C API).
dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
dnl libtool).
@@ -27,6 +345,9 @@ dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not.
dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
dnl multithread-safe programs.
+dnl Since support for GNU pth was removed, $LTLIBTHREAD and $LIBTHREAD have the
+dnl same value, and similarly $LTLIBMULTITHREAD and $LIBMULTITHREAD have the
+dnl same value. Only system libraries are needed.
AC_DEFUN([gl_THREADLIB_EARLY],
[
@@ -50,8 +371,9 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY],
m4_ifdef([gl_THREADLIB_DEFAULT_NO],
[m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
[m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
+ m4_divert_text([DEFAULTS], [gl_use_winpthreads_default=])
AC_ARG_ENABLE([threads],
-AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
+AC_HELP_STRING([--enable-threads={isoc|posix|isoc+posix|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
[gl_use_threads=$enableval],
[if test -n "$gl_use_threads_default"; then
@@ -62,41 +384,35 @@ changequote(,)dnl
dnl Disable multithreading by default on OSF/1, because it interferes
dnl with fork()/exec(): When msgexec is linked with -lpthread, its
dnl child process gets an endless segmentation fault inside execvp().
+ osf*) gl_use_threads=no ;;
dnl Disable multithreading by default on Cygwin 1.5.x, because it has
dnl bugs that lead to endless loops or crashes. See
dnl <https://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
- osf*) gl_use_threads=no ;;
cygwin*)
case `uname -r` in
1.[0-5].*) gl_use_threads=no ;;
*) gl_use_threads=yes ;;
esac
;;
+ dnl Obey gl_AVOID_WINPTHREAD on mingw.
+ mingw*)
+ case "$gl_use_winpthreads_default" in
+ yes) gl_use_threads=posix ;;
+ no) gl_use_threads=windows ;;
+ *) gl_use_threads=yes ;;
+ esac
+ ;;
*) gl_use_threads=yes ;;
esac
changequote([,])dnl
fi
])
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # For using <pthread.h>:
- case "$host_os" in
- osf*)
- # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
- # groks <pthread.h>. cc also understands the flag -pthread, but
- # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
- # 2. putting a flag into CPPFLAGS that has an effect on the linker
- # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
- # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
- CPPFLAGS="$CPPFLAGS -D_REENTRANT"
- ;;
- esac
- # Some systems optimize for single-threaded programs by default, and
- # need special flags to disable these optimizations. For example, the
- # definition of 'errno' in <errno.h>.
- case "$host_os" in
- aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
- solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
- esac
+ if test "$gl_use_threads" = yes \
+ || test "$gl_use_threads" = isoc \
+ || test "$gl_use_threads" = posix \
+ || test "$gl_use_threads" = isoc+posix; then
+ # For using <threads.h> or <pthread.h>:
+ gl_ANYTHREADLIB_EARLY
fi
])
@@ -112,144 +428,31 @@ AC_DEFUN([gl_THREADLIB_BODY],
LTLIBMULTITHREAD=
if test "$gl_use_threads" != no; then
dnl Check whether the compiler and linker support weak declarations.
- AC_CACHE_CHECK([whether imported symbols can be declared weak],
- [gl_cv_have_weak],
- [gl_cv_have_weak=no
- dnl First, test whether the compiler accepts it syntactically.
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[extern void xyzzy ();
-#pragma weak xyzzy]],
- [[xyzzy();]])],
- [gl_cv_have_weak=maybe])
- if test $gl_cv_have_weak = maybe; then
- dnl Second, test whether it actually works. On Cygwin 1.7.2, with
- dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
-#include <stdio.h>
-#pragma weak fputs
-int main ()
-{
- return (fputs == NULL);
-}]])],
- [gl_cv_have_weak=yes],
- [gl_cv_have_weak=no],
- [dnl When cross-compiling, assume that only ELF platforms support
- dnl weak symbols.
- AC_EGREP_CPP([Extensible Linking Format],
- [#ifdef __ELF__
- Extensible Linking Format
- #endif
- ],
- [gl_cv_have_weak="guessing yes"],
- [gl_cv_have_weak="guessing no"])
- ])
- fi
- dnl But when linking statically, weak symbols don't work.
- case " $LDFLAGS " in
- *" -static "*) gl_cv_have_weak=no ;;
- esac
- ])
- dnl Check whether the linker supports the --as-needed/--no-as-needed options.
- dnl Assume GCC, so that we can use the -Wl option.
- AC_CACHE_CHECK([whether the linker supports --as-needed],
- [gl_cv_linker_have_as_needed],
- [if test -n "$GCC"; then
- gl_saved_ldflags="$LDFLAGS"
- LDFLAGS="$gl_saved_ldflags -Wl,--as-needed -Wl,--no-as-needed"
- AC_LINK_IFELSE([AC_LANG_PROGRAM()],
- [gl_cv_linker_have_as_needed=yes],
- [gl_cv_linker_have_as_needed=no])
- LDFLAGS="$gl_saved_ldflags"
- else
- gl_cv_linker_have_as_needed=no
- fi
- ])
- dnl Check whether the linker supports the --push-state/--pop-state options.
- dnl Assume GCC, so that we can use the -Wl option.
- AC_CACHE_CHECK([whether the linker supports --push-state],
- [gl_cv_linker_have_push_state],
- [if test -n "$GCC"; then
- gl_saved_ldflags="$LDFLAGS"
- LDFLAGS="$gl_saved_ldflags -Wl,--push-state -Wl,--pop-state"
- AC_LINK_IFELSE([AC_LANG_PROGRAM()],
- [gl_cv_linker_have_push_state=yes],
- [gl_cv_linker_have_push_state=no])
- LDFLAGS="$gl_saved_ldflags"
- else
- gl_cv_linker_have_push_state=no
- fi
- ])
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
- # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
- AC_CHECK_HEADER([pthread.h],
- [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
- if test "$gl_have_pthread_h" = yes; then
- # Other possible tests:
- # -lpthreads (FSU threads, PCthreads)
- # -lgthreads
- gl_have_pthread=
- # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
- # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
- # the second one only in libpthread, and lock.c needs it.
- #
- # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
- # needs -pthread for some reason. See:
- # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
- save_LIBS=$LIBS
- for gl_pthread in '' '-pthread'; do
- LIBS="$LIBS $gl_pthread"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <pthread.h>
- pthread_mutex_t m;
- pthread_mutexattr_t ma;
- ]],
- [[pthread_mutex_lock (&m);
- pthread_mutexattr_init (&ma);]])],
- [gl_have_pthread=yes
- LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread
- LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread])
- LIBS=$save_LIBS
- test -n "$gl_have_pthread" && break
- done
-
- # Test for libpthread by looking for pthread_kill. (Not pthread_self,
- # since it is defined as a macro on OSF/1.)
- if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then
- # The program links fine without libpthread. But it may actually
- # need to link with libpthread in order to create multiple threads.
- AC_CHECK_LIB([pthread], [pthread_kill],
- [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
- # On Solaris and HP-UX, most pthread functions exist also in libc.
- # Therefore pthread_in_use() needs to actually try to create a
- # thread: pthread_create from libc will fail, whereas
- # pthread_create will actually create a thread.
- # On Solaris 10 or newer, this test is no longer needed, because
- # libc contains the fully functional pthread functions.
- case "$host_os" in
- solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*)
- AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
- [Define if the pthread_in_use() detection is hard.])
- esac
- ])
- elif test -z "$gl_have_pthread"; then
- # Some library is needed. Try libpthread and libc_r.
- AC_CHECK_LIB([pthread], [pthread_kill],
- [gl_have_pthread=yes
- LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
- if test -z "$gl_have_pthread"; then
- # For FreeBSD 4.
- AC_CHECK_LIB([c_r], [pthread_kill],
- [gl_have_pthread=yes
- LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
- LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
- fi
- fi
- if test -n "$gl_have_pthread"; then
+ gl_WEAK_SYMBOLS
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+ dnl If we use weak symbols to implement pthread_in_use / pth_in_use /
+ dnl thread_in_use, we also need to test whether the ISO C 11 thrd_create
+ dnl facility is in use.
+ AC_CHECK_HEADERS_ONCE([threads.h])
+ :
+ fi
+ if test "$gl_use_threads" = isoc || test "$gl_use_threads" = isoc+posix; then
+ AC_CHECK_HEADERS_ONCE([threads.h])
+ gl_have_isoc_threads="$ac_cv_header_threads_h"
+ fi
+ if test "$gl_use_threads" = yes \
+ || test "$gl_use_threads" = posix \
+ || test "$gl_use_threads" = isoc+posix; then
+ gl_PTHREADLIB_BODY
+ LIBTHREAD=$LIBPTHREAD LTLIBTHREAD=$LIBPTHREAD
+ LIBMULTITHREAD=$LIBPMULTITHREAD LTLIBMULTITHREAD=$LIBPMULTITHREAD
+ if test $gl_pthread_api = yes; then
+ if test "$gl_use_threads" = isoc+posix && test "$gl_have_isoc_threads" = yes; then
+ gl_threads_api='isoc+posix'
+ AC_DEFINE([USE_ISOC_AND_POSIX_THREADS], [1],
+ [Define if the combination of the ISO C and POSIX multithreading APIs can be used.])
+ LIBTHREAD= LTLIBTHREAD=
+ else
gl_threads_api=posix
AC_DEFINE([USE_POSIX_THREADS], [1],
[Define if the POSIX multithreading library can be used.])
@@ -257,125 +460,23 @@ int main ()
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
[Define if references to the POSIX multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- dnl On platforms where GCC enables --as-needed by default, attempt
- dnl to make sure that LIBMULTITHREAD really links with -lpthread.
- dnl Otherwise linking with LIBMULTITHREAD has no effect; then
- dnl the weak symbols are not defined and thus evaluate to NULL.
- case "$LIBMULTITHREAD" in
- "") ;;
- -pthread)
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="$LIBMULTITHREAD -Wl,--push-state -Wl,--no-as-needed -lpthread -Wl,--pop-state"
- else
- LIBMULTITHREAD="$LIBMULTITHREAD -Wl,--no-as-needed -lpthread"
- fi
- fi
- ;;
- *)
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state"
- else
- LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD"
- fi
- fi
- ;;
- esac
- # TODO: May need to modify LTLIBMULTITHREAD similarly.
- fi
- fi
- fi
- fi
- fi
- if test -z "$gl_have_pthread"; then
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
- gl_have_solaristhread=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS -lthread"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <thread.h>
-#include <synch.h>
- ]],
- [[thr_self();]])],
- [gl_have_solaristhread=yes])
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_solaristhread"; then
- gl_threads_api=solaris
- LIBTHREAD=-lthread
- LTLIBTHREAD=-lthread
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
- AC_DEFINE([USE_SOLARIS_THREADS], [1],
- [Define if the old Solaris multithreading library can be used.])
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
- AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
- [Define if references to the old Solaris multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- dnl On platforms where GCC enables --as-needed by default, attempt
- dnl to make sure that LIBMULTITHREAD really links with -lthread.
- dnl Otherwise linking with LIBMULTITHREAD has no effect; then
- dnl the weak symbols are not defined and thus evaluate to NULL.
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state"
- else
- LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD"
- fi
+ LIBTHREAD= LTLIBTHREAD=
fi
- # TODO: May need to modify LTLIBMULTITHREAD similarly.
fi
fi
fi
fi
- if test "$gl_use_threads" = pth; then
- gl_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_LINKFLAGS([pth])
- gl_have_pth=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBPTH"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
- [gl_have_pth=yes])
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_pth"; then
- gl_threads_api=pth
- LIBTHREAD="$LIBPTH"
- LTLIBTHREAD="$LTLIBPTH"
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
- AC_DEFINE([USE_PTH_THREADS], [1],
- [Define if the GNU Pth multithreading library can be used.])
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
- AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
- [Define if references to the GNU Pth multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- dnl On platforms where GCC enables --as-needed by default, attempt
- dnl to make sure that LIBMULTITHREAD really links with -lpth.
- dnl Otherwise linking with LIBMULTITHREAD has no effect; then
- dnl the weak symbols are not defined and thus evaluate to NULL.
- if test $gl_cv_linker_have_as_needed = yes; then
- if test $gl_cv_linker_have_push_state = yes; then
- LIBMULTITHREAD="-Wl,--push-state -Wl,--no-as-needed $LIBMULTITHREAD -Wl,--pop-state"
- else
- LIBMULTITHREAD="-Wl,--no-as-needed $LIBMULTITHREAD"
- fi
- fi
- # TODO: May need to modify LTLIBMULTITHREAD similarly.
- fi
- fi
- else
- CPPFLAGS="$gl_save_CPPFLAGS"
+ if test $gl_threads_api = none; then
+ if test "$gl_use_threads" = isoc && test "$gl_have_isoc_threads" = yes; then
+ gl_STDTHREADLIB_BODY
+ LIBTHREAD=$LIBSTDTHREAD LTLIBTHREAD=$LIBSTDTHREAD
+ LIBMULTITHREAD=$LIBSTDTHREAD LTLIBMULTITHREAD=$LIBSTDTHREAD
+ gl_threads_api=isoc
+ AC_DEFINE([USE_ISOC_THREADS], [1],
+ [Define if the ISO C multithreading library can be used.])
fi
fi
- if test -z "$gl_have_pthread"; then
+ if test $gl_threads_api = none; then
case "$gl_use_threads" in
yes | windows | win32) # The 'win32' is for backward compatibility.
if { case "$host_os" in
@@ -417,6 +518,21 @@ AC_DEFUN([gl_DISABLE_THREADS], [
])
+dnl gl_AVOID_WINPTHREAD
+dnl -------------------
+dnl Sets the gl_THREADLIB default so that on mingw, a dependency to the
+dnl libwinpthread DLL (mingw-w64 winpthreads library) is avoided.
+dnl The user can still override it at installation time, by using the
+dnl configure option '--enable-threads'.
+
+AC_DEFUN([gl_AVOID_WINPTHREAD], [
+ m4_divert_text([INIT_PREPARE], [gl_use_winpthreads_default=no])
+])
+
+
+dnl ============================================================================
+
+
dnl Survey of platforms:
dnl
dnl Platform Available Compiler Supports test-lock
@@ -446,7 +562,6 @@ dnl
dnl Mac OS X 10.[123] posix -lpthread Y OK
dnl
dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
-dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
dnl
dnl HP-UX 11 posix -lpthread N (cc) OK
dnl Y (gcc)
@@ -460,8 +575,6 @@ dnl -lpthread (gcc) Y
dnl
dnl Cygwin posix -lpthread Y OK
dnl
-dnl Any of the above pth -lpth 0.0
-dnl
dnl Mingw windows N OK
dnl
dnl BeOS 5 --
diff --git a/m4/time_h.m4 b/m4/time_h.m4
index ad6f2f5..aae0ae2 100644
--- a/m4/time_h.m4
+++ b/m4/time_h.m4
@@ -1,6 +1,6 @@
# Configure a more-standard replacement for <time.h>.
-# Copyright (C) 2000-2001, 2003-2007, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2000-2001, 2003-2007, 2009-2020 Free Software Foundation, Inc.
# serial 11
diff --git a/m4/ungetc.m4 b/m4/ungetc.m4
index 2e66c55..66492af 100644
--- a/m4/ungetc.m4
+++ b/m4/ungetc.m4
@@ -1,5 +1,5 @@
-# ungetc.m4 serial 6
-dnl Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# ungetc.m4 serial 8
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -41,12 +41,16 @@ AC_DEFUN_ONCE([gl_FUNC_UNGETC_WORKS],
remove ("conftest.tmp");])],
[gl_cv_func_ungetc_works=yes], [gl_cv_func_ungetc_works=no],
[case "$host_os" in
- # Guess yes on glibc and bionic systems.
- *-gnu* | gnu* | *-android*) gl_cv_func_ungetc_works="guessing yes" ;;
- # Guess yes on native Windows.
- mingw*) gl_cv_func_ungetc_works="guessing yes" ;;
- # If we don't know, assume the worst.
- *) gl_cv_func_ungetc_works="guessing no" ;;
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # Guess yes on bionic systems.
+ *-android*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_ungetc_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_ungetc_works="$gl_cross_guess_normal" ;;
esac
])
])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
index 3ba64da..ea2bb01 100644
--- a/m4/unistd_h.m4
+++ b/m4/unistd_h.m4
@@ -1,5 +1,5 @@
-# unistd_h.m4 serial 74
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# unistd_h.m4 serial 77
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -41,9 +41,9 @@ AC_DEFUN([gl_UNISTD_H],
# include <io.h>
# endif
#endif
- ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat
- fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups
- gethostname getlogin getlogin_r getpagesize getpass
+ ]], [access chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir
+ fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize
+ getgroups gethostname getlogin getlogin_r getpagesize getpass
getusershell setusershell endusershell
group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite
readlink readlinkat rmdir sethostname sleep symlink symlinkat
@@ -61,9 +61,11 @@ AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
AC_DEFUN([gl_UNISTD_H_DEFAULTS],
[
+ GNULIB_ACCESS=0; AC_SUBST([GNULIB_ACCESS])
GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR])
GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
+ GNULIB_COPY_FILE_RANGE=0; AC_SUBST([GNULIB_COPY_FILE_RANGE])
GNULIB_DUP=0; AC_SUBST([GNULIB_DUP])
GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
@@ -82,6 +84,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN])
GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+ GNULIB_GETOPT_POSIX=0; AC_SUBST([GNULIB_GETOPT_POSIX])
GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
GNULIB_GETPASS=0; AC_SUBST([GNULIB_GETPASS])
GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
@@ -113,6 +116,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN])
+ HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
HAVE_DUP3=1; AC_SUBST([HAVE_DUP3])
HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS])
@@ -157,6 +161,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R])
HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
+ REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS])
REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE])
REPLACE_DUP=0; AC_SUBST([REPLACE_DUP])
diff --git a/m4/unlocked-io.m4 b/m4/unlocked-io.m4
index 7e46367..38658e6 100644
--- a/m4/unlocked-io.m4
+++ b/m4/unlocked-io.m4
@@ -1,6 +1,6 @@
# unlocked-io.m4 serial 15
-# Copyright (C) 1998-2006, 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 1998-2006, 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/version-etc.m4 b/m4/version-etc.m4
index 815378a..a2455e8 100644
--- a/m4/version-etc.m4
+++ b/m4/version-etc.m4
@@ -1,5 +1,5 @@
# version-etc.m4 serial 1
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/visibility.m4 b/m4/visibility.m4
new file mode 100644
index 0000000..9f493ba
--- /dev/null
+++ b/m4/visibility.m4
@@ -0,0 +1,77 @@
+# visibility.m4 serial 6
+dnl Copyright (C) 2005, 2008, 2010-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl Mac OS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ CFLAG_VISIBILITY=
+ HAVE_VISIBILITY=0
+ if test -n "$GCC"; then
+ dnl First, check whether -Werror can be added to the command line, or
+ dnl whether it leads to an error because of some other option that the
+ dnl user has put into $CC $CFLAGS $CPPFLAGS.
+ AC_CACHE_CHECK([whether the -Werror option is usable],
+ [gl_cv_cc_vis_werror],
+ [gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[]], [[]])],
+ [gl_cv_cc_vis_werror=yes],
+ [gl_cv_cc_vis_werror=no])
+ CFLAGS="$gl_save_CFLAGS"
+ ])
+ dnl Now check whether visibility declarations are supported.
+ AC_CACHE_CHECK([for simple visibility declarations],
+ [gl_cv_cc_visibility],
+ [gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ dnl We use the option -Werror and a function dummyfunc, because on some
+ dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+ dnl "visibility attribute not supported in this configuration; ignored"
+ dnl at the first function definition in every compilation unit, and we
+ dnl don't want to use the option in this case.
+ if test $gl_cv_cc_vis_werror = yes; then
+ CFLAGS="$CFLAGS -Werror"
+ fi
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+ extern __attribute__((__visibility__("default"))) int exportedvar;
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void) {}
+ ]],
+ [[]])],
+ [gl_cv_cc_visibility=yes],
+ [gl_cv_cc_visibility=no])
+ CFLAGS="$gl_save_CFLAGS"
+ ])
+ if test $gl_cv_cc_visibility = yes; then
+ CFLAG_VISIBILITY="-fvisibility=hidden"
+ HAVE_VISIBILITY=1
+ fi
+ fi
+ AC_SUBST([CFLAG_VISIBILITY])
+ AC_SUBST([HAVE_VISIBILITY])
+ AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+ [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4
index 8e270cf..5c8ee45 100644
--- a/m4/warn-on-use.m4
+++ b/m4/warn-on-use.m4
@@ -1,5 +1,5 @@
# warn-on-use.m4 serial 6
-dnl Copyright (C) 2010-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/warnings.m4 b/m4/warnings.m4
index 07edda1..d272365 100644
--- a/m4/warnings.m4
+++ b/m4/warnings.m4
@@ -1,5 +1,5 @@
# warnings.m4 serial 14
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4
index a062ca9..d1b7228 100644
--- a/m4/wchar_h.m4
+++ b/m4/wchar_h.m4
@@ -1,13 +1,13 @@
dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
-dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Written by Eric Blake.
-# wchar_h.m4 serial 43
+# wchar_h.m4 serial 44
AC_DEFUN([gl_WCHAR_H],
[
@@ -237,4 +237,5 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH])
REPLACE_WCSFTIME=0; AC_SUBST([REPLACE_WCSFTIME])
+ REPLACE_WCSTOK=0; AC_SUBST([REPLACE_WCSTOK])
])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
index 83bc3d5..e48d464 100644
--- a/m4/wchar_t.m4
+++ b/m4/wchar_t.m4
@@ -1,5 +1,5 @@
# wchar_t.m4 serial 4 (gettext-0.18.2)
-dnl Copyright (C) 2002-2003, 2008-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/wcrtomb.m4 b/m4/wcrtomb.m4
index e71c57a..c45fd98 100644
--- a/m4/wcrtomb.m4
+++ b/m4/wcrtomb.m4
@@ -1,5 +1,5 @@
-# wcrtomb.m4 serial 13
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# wcrtomb.m4 serial 16
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -31,9 +31,13 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
REPLACE_WCRTOMB=1
fi
else
- if test $REPLACE_MBSTATE_T = 1; then
- REPLACE_WCRTOMB=1
- else
+ dnl We don't actually need to override wcrtomb when redefining the semantics
+ dnl of the mbstate_t type. Tested on 32-bit AIX.
+ dnl if test $REPLACE_MBSTATE_T = 1; then
+ dnl REPLACE_WCRTOMB=1
+ dnl fi
+ if test $REPLACE_WCRTOMB = 0; then
+ dnl On Android 4.3, wcrtomb produces wrong characters in the C locale.
dnl On AIX 4.3, OSF/1 5.1 and Solaris <= 11.3, wcrtomb (NULL, 0, NULL)
dnl sometimes returns 0 instead of 1.
AC_REQUIRE([AC_PROG_CC])
@@ -42,6 +46,47 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
AC_REQUIRE([gt_LOCALE_JA])
AC_REQUIRE([gt_LOCALE_ZH_CN])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether wcrtomb works in the C locale],
+ [gl_cv_func_wcrtomb_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <string.h>
+#include <stdlib.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <wchar.h>
+int main ()
+{
+ mbstate_t state;
+ char out[64];
+ int count;
+ memset (&state, 0, sizeof (state));
+ out[0] = 'x';
+ count = wcrtomb (out, L'a', &state);
+ return !(count == 1 && out[0] == 'a');
+}]])],
+ [gl_cv_func_wcrtomb_works=yes],
+ [gl_cv_func_wcrtomb_works=no],
+ [case "$host_os" in
+ # Guess no on Android.
+ linux*-android*) gl_cv_func_wcrtomb_works="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_wcrtomb_works="guessing yes";;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_wcrtomb_works" in
+ *yes) ;;
+ *) AC_DEFINE([WCRTOMB_C_LOCALE_BUG], [1],
+ [Define if the wcrtomb function does not work in the C locale.])
+ REPLACE_WCRTOMB=1 ;;
+ esac
+ fi
+ if test $REPLACE_WCRTOMB = 0; then
AC_CACHE_CHECK([whether wcrtomb return value is correct],
[gl_cv_func_wcrtomb_retval],
[
@@ -49,12 +94,10 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
dnl is present.
changequote(,)dnl
case "$host_os" in
- # Guess no on AIX 4, OSF/1 and Solaris.
- aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;;
- # Guess yes on native Windows.
- mingw*) gl_cv_func_wcrtomb_retval="guessing yes" ;;
- # Guess yes otherwise.
- *) gl_cv_func_wcrtomb_retval="guessing yes" ;;
+ # Guess no on AIX 4, OSF/1, Solaris, native Windows.
+ aix4* | osf* | solaris* | mingw*) gl_cv_func_wcrtomb_retval="guessing no" ;;
+ # Guess yes otherwise.
+ *) gl_cv_func_wcrtomb_retval="guessing yes" ;;
esac
changequote([,])dnl
if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
@@ -70,6 +113,7 @@ changequote([,])dnl
#include <stdio.h>
#include <time.h>
#include <wchar.h>
+#include <stdlib.h>
int main ()
{
int result = 0;
@@ -82,6 +126,12 @@ int main ()
{
if (wcrtomb (NULL, 0, NULL) != 1)
result |= 2;
+ {
+ wchar_t wc = (wchar_t) 0xBADFACE;
+ if (mbtowc (&wc, "\303\274", 2) == 2)
+ if (wcrtomb (NULL, wc, NULL) != 1)
+ result |= 2;
+ }
}
if (setlocale (LC_ALL, "$LOCALE_JA") != NULL)
{
@@ -102,7 +152,9 @@ int main ()
])
case "$gl_cv_func_wcrtomb_retval" in
*yes) ;;
- *) REPLACE_WCRTOMB=1 ;;
+ *) AC_DEFINE([WCRTOMB_RETVAL_BUG], [1],
+ [Define if the wcrtomb function has an incorrect return value.])
+ REPLACE_WCRTOMB=1 ;;
esac
fi
fi
diff --git a/m4/wctob.m4 b/m4/wctob.m4
index c7eeb5f..8013326 100644
--- a/m4/wctob.m4
+++ b/m4/wctob.m4
@@ -1,5 +1,5 @@
-# wctob.m4 serial 11
-dnl Copyright (C) 2008-2018 Free Software Foundation, Inc.
+# wctob.m4 serial 12
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -74,6 +74,7 @@ int main ()
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
+#include <stdlib.h>
#include <string.h>
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
diff --git a/m4/wctomb.m4 b/m4/wctomb.m4
index 962ed84..8e8c6a2 100644
--- a/m4/wctomb.m4
+++ b/m4/wctomb.m4
@@ -1,5 +1,5 @@
# wctomb.m4 serial 2
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/wctype_h.m4 b/m4/wctype_h.m4
index 15d1ef3..dc854e6 100644
--- a/m4/wctype_h.m4
+++ b/m4/wctype_h.m4
@@ -1,8 +1,8 @@
-# wctype_h.m4 serial 21
+# wctype_h.m4 serial 22
dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
-dnl Copyright (C) 2006-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -69,10 +69,14 @@ AC_DEFUN([gl_WCTYPE_H],
fi
AC_SUBST([HAVE_WCTYPE_H])
- case "$gl_cv_func_iswcntrl_works" in
- *yes) REPLACE_ISWCNTRL=0 ;;
- *) REPLACE_ISWCNTRL=1 ;;
- esac
+ if test $GNULIB_OVERRIDES_WINT_T = 1; then
+ REPLACE_ISWCNTRL=1
+ else
+ case "$gl_cv_func_iswcntrl_works" in
+ *yes) REPLACE_ISWCNTRL=0 ;;
+ *) REPLACE_ISWCNTRL=1 ;;
+ esac
+ fi
AC_SUBST([REPLACE_ISWCNTRL])
if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
index 95f6854..877fd86 100644
--- a/m4/wint_t.m4
+++ b/m4/wint_t.m4
@@ -1,5 +1,5 @@
# wint_t.m4 serial 7
-dnl Copyright (C) 2003, 2007-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2007-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/xalloc.m4 b/m4/xalloc.m4
index 7bd360b..a556870 100644
--- a/m4/xalloc.m4
+++ b/m4/xalloc.m4
@@ -1,5 +1,5 @@
# xalloc.m4 serial 18
-dnl Copyright (C) 2002-2006, 2009-2018 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/maint.mk b/maint.mk
index 4889eba..10a84c2 100644
--- a/maint.mk
+++ b/maint.mk
@@ -2,7 +2,7 @@
# This Makefile fragment tries to be general-purpose enough to be
# used by many projects via the gnulib maintainer-makefile module.
-## Copyright (C) 2001-2018 Free Software Foundation, Inc.
+## Copyright (C) 2001-2020 Free Software Foundation, Inc.
##
## This 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,13 @@
# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
ME := maint.mk
+# These variables ought to be defined through the configure.ac section
+# of the module description. But some packages import this file directly,
+# ignoring the module description.
+AWK ?= awk
+GREP ?= grep
+SED ?= sed
+
# Helper variables.
_empty =
_sp = $(_empty) $(_empty)
@@ -46,7 +53,7 @@ member-check = \
# Do not save the original name or timestamp in the .tar.gz file.
# Use --rsyncable if available.
gzip_rsyncable := \
- $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null \
+ $(shell gzip --help 2>/dev/null|$(GREP) rsyncable >/dev/null \
&& printf %s --rsyncable)
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
@@ -83,9 +90,9 @@ _sc_excl = \
$(or $(exclude_file_name_regexp--$@),^$$)
VC_LIST_EXCEPT = \
$(VC_LIST) | $(SED) 's|^$(_dot_escaped_srcdir)/||' \
- | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \
- else grep -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \
- | grep -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \
+ | if test -f $(srcdir)/.x-$@; then $(GREP) -vEf $(srcdir)/.x-$@; \
+ else $(GREP) -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \
+ | $(GREP) -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \
$(_prepend_srcdir_prefix)
ifeq ($(origin prev_version_file), undefined)
@@ -184,7 +191,7 @@ $(sc_z_rules_): %.z: %
@end=$$(date +%s.%N); \
start=$$(cat .sc-start-$*); \
rm -f .sc-start-$*; \
- awk -v s=$$start -v e=$$end \
+ $(AWK) -v s=$$start -v e=$$end \
'END {printf "%.2f $(patsubst sc_%,%,$*)\n", e - s}' < /dev/null
# The patsubst here is to replace each sc_% rule with its sc_%.z wrapper
@@ -292,42 +299,56 @@ define _sc_search_regexp
\
: Filter by file name; \
if test -n "$$in_files"; then \
- files=$$(find $(srcdir) | grep -E "$$in_files" \
- | grep -Ev '$(_sc_excl)'); \
+ files=$$(find $(srcdir) | $(GREP) -E "$$in_files" \
+ | $(GREP) -Ev '$(_sc_excl)'); \
else \
files=$$($(VC_LIST_EXCEPT)); \
if test -n "$$in_vc_files"; then \
- files=$$(echo "$$files" | grep -E "$$in_vc_files"); \
+ files=$$(echo "$$files" | $(GREP) -E "$$in_vc_files"); \
fi; \
fi; \
\
: Filter by content; \
- test -n "$$files" && test -n "$$containing" \
- && { files=$$(grep -l "$$containing" $$files); } || :; \
- test -n "$$files" && test -n "$$non_containing" \
- && { files=$$(grep -vl "$$non_containing" $$files); } || :; \
+ test -n "$$files" \
+ && test -n "$$containing" \
+ && { files=$$(echo "$$files" | xargs $(GREP) -l "$$containing"); } \
+ || :; \
+ test -n "$$files" \
+ && test -n "$$non_containing" \
+ && { files=$$(echo "$$files" | xargs $(GREP) -vl "$$non_containing"); } \
+ || :; \
\
: Check for the construct; \
if test -n "$$files"; then \
if test -n "$$prohibit"; then \
- grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \
- | grep -vE "$${exclude:-^$$}" \
- && { msg="$$halt" $(_sc_say_and_exit) } || :; \
+ echo "$$files" \
+ | xargs $(GREP) $$with_grep_options $(_ignore_case) -nE \
+ "$$prohibit" /dev/null \
+ | $(GREP) -vE "$${exclude:-^$$}" \
+ && { msg="$$halt" $(_sc_say_and_exit) } \
+ || :; \
else \
- grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \
- | grep . \
- && { msg="$$halt" $(_sc_say_and_exit) } || :; \
+ echo "$$files" \
+ | xargs \
+ $(GREP) $$with_grep_options $(_ignore_case) -LE "$$require" \
+ | $(GREP) . \
+ && { msg="$$halt" $(_sc_say_and_exit) } \
+ || :; \
fi \
else :; \
fi || :;
endef
sc_avoid_if_before_free:
- @$(srcdir)/$(_build-aux)/useless-if-before-free \
- $(useless_free_options) \
- $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) && \
- { echo '$(ME): found useless "if" before "free" above' 1>&2; \
- exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | $(GREP) -v useless-if-before-free \
+ | xargs \
+ $(srcdir)/$(_build-aux)/useless-if-before-free \
+ $(useless_free_options) \
+ && { printf '$(ME): found useless "if"' \
+ ' before "free" above\n' 1>&2; \
+ exit 1; } \
+ || :
sc_cast_of_argument_to_free:
@prohibit='\<free *\( *\(' halt="don't cast free argument" \
@@ -388,6 +409,43 @@ sc_prohibit_magic_number_exit:
halt='use EXIT_* values rather than magic number' \
$(_sc_search_regexp)
+# Check that we don't use $< in non-implicit Makefile rules.
+#
+# To find the Makefiles, trace AC_CONFIG_FILES. Using VC_LIST would
+# miss the Makefiles that are not under VC control (e.g., symlinks
+# installed for gettext). "Parsing" (recursive) uses of SUBDIRS seems
+# too delicate.
+#
+# Use GNU Make's --print-data-base to normalize the rules into some
+# easy to parse format: they are separated by two \n. Look for the
+# "section" about non-pattern rules (marked with "# Files") inside
+# which there are still the POSIX Make like implicit rules (".c.o").
+sc_prohibit_gnu_make_extensions_awk_ = \
+ BEGIN { \
+ RS = "\n\n"; \
+ in_rules = 0; \
+ } \
+ /^\# Files/ { \
+ in_rules = 1; \
+ } \
+ /\$$</ && in_rules && $$0 !~ /^(.*\n)*\.\w+(\.\w+)?:/ { \
+ print "Error: " file ": $$< in a non implicit rule\n" $$0; \
+ status = 1; \
+ } \
+ END { \
+ exit status; \
+ }
+sc_prohibit_gnu_make_extensions:
+ @if $(AWK) --version | grep GNU >/dev/null 2>&1; then \
+ (cd $(srcdir) && autoconf --trace AC_CONFIG_FILES:'$$1') | \
+ tr ' ' '\n' | \
+ $(SED) -ne '/Makefile/{s/\.in$$//;p;}' | \
+ while read m; do \
+ $(MAKE) -qp -f $$m .DUMMY-TARGET 2>/dev/null | \
+ $(AWK) -v file=$$m -e '$($@_awk_)' || exit 1; \
+ done; \
+ fi
+
# Using EXIT_SUCCESS as the first argument to error is misleading,
# since when that parameter is 0, error does not exit. Use '0' instead.
sc_error_exit_success:
@@ -399,25 +457,31 @@ sc_error_exit_success:
# "FATAL:" should be fully upper-cased in error messages
# "WARNING:" should be fully upper-cased, or fully lower-cased
sc_error_message_warn_fatal:
- @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
- | grep -E '"Warning|"Fatal|"fatal' && \
- { echo '$(ME): use FATAL, WARNING or warning' 1>&2; \
- exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | xargs $(GREP) -nEA2 '[^rp]error *\(' /dev/null \
+ | $(GREP) -E '"Warning|"Fatal|"fatal' \
+ && { echo '$(ME): use FATAL, WARNING or warning' 1>&2; \
+ exit 1; } \
+ || :
# Error messages should not start with a capital letter
sc_error_message_uppercase:
- @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
- | grep -E '"[A-Z]' \
- | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' && \
- { echo '$(ME): found capitalized error message' 1>&2; \
- exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | xargs $(GREP) -nEA2 '[^rp]error *\(' /dev/null \
+ | $(GREP) -E '"[A-Z]' \
+ | $(GREP) -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' \
+ && { echo '$(ME): found capitalized error message' 1>&2; \
+ exit 1; } \
+ || :
# Error messages should not end with a period
sc_error_message_period:
- @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
- | grep -E '[^."]\."' && \
- { echo '$(ME): found error message ending in period' 1>&2; \
- exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | xargs $(GREP) -nEA2 '[^rp]error *\(' /dev/null \
+ | $(GREP) -E '[^."]\."' \
+ && { echo '$(ME): found error message ending in period' 1>&2; \
+ exit 1; } \
+ || :
sc_file_system:
@prohibit=file''system \
@@ -459,8 +523,8 @@ perl_config_h_first_ = \
# You must include <config.h> before including any other header file.
# This can possibly be via a package-specific header, if given by cfg.mk.
sc_require_config_h_first:
- @if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
- files=$$($(VC_LIST_EXCEPT) | grep '\.c$$') && \
+ @if $(VC_LIST_EXCEPT) | $(GREP) '\.c$$' > /dev/null; then \
+ files=$$($(VC_LIST_EXCEPT) | $(GREP) '\.c$$') && \
perl -n $(perl_config_h_first_) $$files || \
{ echo '$(ME): the above files include some other header' \
'before <config.h>' 1>&2; exit 1; } || :; \
@@ -478,10 +542,10 @@ sc_prohibit_HAVE_MBRTOWC:
define _sc_header_without_use
dummy=; : so we do not need a semicolon before each use; \
h_esc=`echo '[<"]'"$$h"'[">]'|$(SED) 's/\./\\\\./g'`; \
- if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
- files=$$(grep -l '^# *include '"$$h_esc" \
- $$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \
- grep -LE "$$re" $$files | grep . && \
+ if $(VC_LIST_EXCEPT) | $(GREP) '\.c$$' > /dev/null; then \
+ files=$$($(GREP) -l '^# *include '"$$h_esc" \
+ $$($(VC_LIST_EXCEPT) | $(GREP) '\.c$$')) && \
+ $(GREP) -LE "$$re" $$files | $(GREP) . && \
{ echo "$(ME): the above files include $$h but don't use it" \
1>&2; exit 1; } || :; \
else :; \
@@ -511,7 +575,7 @@ sc_prohibit_quote_without_use:
# Don't include this header unless you use one of its functions.
sc_prohibit_long_options_without_use:
- @h='long-options.h' re='\<parse_long_options *\(' \
+ @h='long-options.h' re='\<parse_(long_options|gnu_standard_options_only) *\(' \
$(_sc_header_without_use)
# Don't include this header unless you use one of its functions.
@@ -585,7 +649,7 @@ sc_prohibit_safe_read_without_use:
sc_prohibit_argmatch_without_use:
@h='argmatch.h' \
- re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<(invalid_arg|argmatch(_exit_fn|_(in)?valid)?) *\()' \
+ re='(\<(ARGMATCH_DEFINE_GROUP|ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<(invalid_arg|argmatch(_exit_fn|_(in)?valid)?) *\()' \
$(_sc_header_without_use)
sc_prohibit_canonicalize_without_use:
@@ -735,9 +799,9 @@ Exit_base := $(notdir $(Exit_witness_file))
sc_require_test_exit_idiom:
@if test -f $(srcdir)/$(Exit_witness_file); then \
die=0; \
- for i in $$(grep -l -F 'srcdir/$(Exit_base)' \
+ for i in $$($(GREP) -l -F 'srcdir/$(Exit_base)' \
$$($(VC_LIST) tests)); do \
- tail -n1 $$i | grep '^Exit .' > /dev/null \
+ tail -n1 $$i | $(GREP) '^Exit .' > /dev/null \
&& : || { die=1; echo $$i; } \
done; \
test $$die = 1 && \
@@ -842,18 +906,23 @@ endef
# Don't define macros that we already get from gnulib header files.
sc_prohibit_always-defined_macros:
@if test -d $(gnulib_dir); then \
- case $$(echo all: | grep -l -f - Makefile) in Makefile);; *) \
+ case $$(echo all: | $(GREP) -l -f - Makefile) in Makefile);; *) \
echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \
esac; \
- $(def_sym_regex) | grep -E -f - $$($(VC_LIST_EXCEPT)) \
- && { echo '$(ME): define the above via some gnulib .h file' \
- 1>&2; exit 1; } || :; \
+ regex=$$($(def_sym_regex)); export regex; \
+ $(VC_LIST_EXCEPT) \
+ | xargs sh -c 'echo $$regex | $(GREP) -E -f - "$$@"' \
+ dummy /dev/null \
+ && { printf '$(ME): define the above' \
+ ' via some gnulib .h file\n' 1>&2; \
+ exit 1; } \
+ || :; \
fi
# ==================================================================
# Prohibit checked in backup files.
sc_prohibit_backup_files:
- @$(VC_LIST) | grep '~$$' && \
+ @$(VC_LIST) | $(GREP) '~$$' && \
{ echo '$(ME): found version controlled backup file' 1>&2; \
exit 1; } || :
@@ -927,9 +996,11 @@ require_exactly_one_NL_at_EOF_ = \
} \
END { exit defined $$fail }
sc_prohibit_empty_lines_at_EOF:
- @perl -le '$(require_exactly_one_NL_at_EOF_)' $$($(VC_LIST_EXCEPT)) \
- || { echo '$(ME): empty line(s) or no newline at EOF' \
- 1>&2; exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | xargs perl -le '$(require_exactly_one_NL_at_EOF_)' \
+ || { echo '$(ME): empty line(s) or no newline at EOF' 1>&2; \
+ exit 1; } \
+ || :
# Make sure we don't use st_blocks. Use ST_NBLOCKS instead.
# This is a bit of a kludge, since it prevents use of the string
@@ -972,9 +1043,12 @@ prohibit_doubled_word_ = \
ignore_doubled_word_match_RE_ ?= ^$$
sc_prohibit_doubled_word:
- @perl -n -0777 $(prohibit_doubled_word_) $$($(VC_LIST_EXCEPT)) \
- | grep -vE '$(ignore_doubled_word_match_RE_)' \
- | grep . && { echo '$(ME): doubled words' 1>&2; exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | xargs perl -n -0777 $(prohibit_doubled_word_) \
+ | $(GREP) -vE '$(ignore_doubled_word_match_RE_)' \
+ | $(GREP) . \
+ && { echo '$(ME): doubled words' 1>&2; exit 1; } \
+ || :
# A regular expression matching undesirable combinations of words like
# "can not"; this matches them even when the two words appear on different
@@ -998,10 +1072,12 @@ prohibit_undesirable_word_seq_ = \
ignore_undesirable_word_sequence_RE_ ?= ^$$
sc_prohibit_undesirable_word_seq:
- @perl -n -0777 $(prohibit_undesirable_word_seq_) \
- $$($(VC_LIST_EXCEPT)) \
- | grep -vE '$(ignore_undesirable_word_sequence_RE_)' | grep . \
- && { echo '$(ME): undesirable word sequence' >&2; exit 1; } || :
+ @$(VC_LIST_EXCEPT) \
+ | xargs perl -n -0777 $(prohibit_undesirable_word_seq_) \
+ | $(GREP) -vE '$(ignore_undesirable_word_sequence_RE_)' \
+ | $(GREP) . \
+ && { echo '$(ME): undesirable word sequence' >&2; exit 1; } \
+ || :
# Except for shell files and for loops, double semicolon is probably a mistake
sc_prohibit_double_semicolon:
@@ -1033,7 +1109,8 @@ sc_prohibit_test_double_equal:
# definition of LDADD from the appropriate Makefile.am and exits 0
# when it contains "ICONV".
sc_proper_name_utf8_requires_ICONV:
- @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
+ @progs=$$($(VC_LIST_EXCEPT) \
+ | xargs $(GREP) -l 'proper_name_utf8 ''("'); \
if test "x$$progs" != x; then \
fail=0; \
for p in $$progs; do \
@@ -1042,7 +1119,7 @@ sc_proper_name_utf8_requires_ICONV:
-ne 'exit !(/^LDADD =(.+?[^\\]\n)/ms && $$1 =~ /ICONV/)' \
$$dir/Makefile.am && continue; \
base=$$(basename "$$p" .c); \
- grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
+ $(GREP) "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
|| { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
done; \
test $$fail = 1 && \
@@ -1103,12 +1180,12 @@ sc_makefile_at_at_check:
-e ' && !/(\w+)\s+=.*\@\1\@$$/' \
-e ''$(_makefile_at_at_check_exceptions) \
-e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}' \
- $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
+ $$($(VC_LIST_EXCEPT) | $(GREP) -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
&& { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
news-check: NEWS
$(AM_V_GEN)if $(SED) -n $(news-check-lines-spec)p $< \
- | grep -E $(news-check-regexp) >/dev/null; then \
+ | $(GREP) -E $(news-check-regexp) >/dev/null; then \
:; \
else \
echo 'NEWS: $$(news-check-regexp) failed to match' 1>&2; \
@@ -1153,12 +1230,13 @@ generated_files ?= $(srcdir)/lib/*.[ch]
_gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$)
sc_po_check:
@if test -f $(po_file); then \
- grep -E -v '^(#|$$)' $(po_file) \
- | grep -v '^src/false\.c$$' | sort > $@-1; \
- files=$$(perl $(perl_translatable_files_list_) \
- $$($(VC_LIST_EXCEPT)) $(generated_files)); \
- grep -E -l '$(_gl_translatable_string_re)' $$files \
- | $(SED) 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \
+ $(GREP) -E -v '^(#|$$)' $(po_file) \
+ | $(GREP) -v '^src/false\.c$$' | sort > $@-1; \
+ { $(VC_LIST_EXCEPT); echo $(generated_files); } \
+ | xargs perl $(perl_translatable_files_list_) \
+ | xargs $(GREP) -E -l '$(_gl_translatable_string_re)' \
+ | $(SED) 's|^$(_dot_escaped_srcdir)/||' \
+ | sort -u > $@-2; \
diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \
|| { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \
rm -f $@-1 $@-2; \
@@ -1222,18 +1300,21 @@ _hv_regex_weak ?= ^ *\. .*/init\.sh"
_hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh"
sc_cross_check_PATH_usage_in_tests:
@if test -f $(_hv_file); then \
- grep -l 'VERSION mismatch' $(_hv_file) >/dev/null \
+ $(GREP) -l 'VERSION mismatch' $(_hv_file) >/dev/null \
|| { echo "$@: skipped: no such file: $(_hv_file)" 1>&2; \
exit 0; }; \
- grep -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null \
+ $(GREP) -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null \
|| { echo "$@: $(_hv_file) lacks conforming use of init.sh" 1>&2; \
exit 1; }; \
- good=$$(grep -E '$(_hv_regex_strong)' $(_hv_file)); \
- grep -LFx "$$good" \
- $$(grep -lE '$(_hv_regex_weak)' $$($(VC_LIST_EXCEPT))) \
- | grep . && \
- { echo "$(ME): the above files use path_prepend_ inconsistently" \
- 1>&2; exit 1; } || :; \
+ good=$$($(GREP) -E '$(_hv_regex_strong)' $(_hv_file)); \
+ $(VC_LIST_EXCEPT) \
+ | xargs $(GREP) -lE '$(_hv_regex_weak)' \
+ | xargs $(GREP) -LFx "$$good" \
+ | $(GREP) . \
+ && { printf "$(ME): the above files use" \
+ " path_prepend_ inconsistently\n" 1>&2; \
+ exit 1; } \
+ || :; \
fi
# BRE regex of file contents to identify a test script.
@@ -1305,7 +1386,7 @@ gpg_key_ID ?= \
$$(cd $(srcdir) \
&& git cat-file tag v$(VERSION) \
| $(gpgv) --status-fd 1 --keyring /dev/null - - 2>/dev/null \
- | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
+ | $(AWK) '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
translation_project_ ?= coordinator@translationproject.org
@@ -1426,7 +1507,7 @@ check: $(gl_public_submodule_commit)
ALL_RECURSIVE_TARGETS += alpha beta stable
alpha beta stable: $(local-check) writable-files $(submodule-checks)
$(AM_V_GEN)test $@ = stable \
- && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
+ && { echo $(VERSION) | $(GREP) -E '^[0-9]+(\.[0-9]+)+$$' \
|| { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
|| :
$(AM_V_at)$(MAKE) vc-diff-check
@@ -1524,7 +1605,7 @@ refresh-gnulib-patches:
-e 'END{defined $$d and print $$d}' bootstrap.conf); \
test -n "$$t" && gl=$$t; \
fi; \
- for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do \
+ for diff in $$(cd $$gl; git ls-files | $(GREP) '\.diff$$'); do \
b=$$(printf %s "$$diff"|$(SED) 's/\.diff$$//'); \
VERSION_CONTROL=none \
patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1; \
@@ -1567,7 +1648,7 @@ update-copyright-env ?=
# in the file .x-update-copyright.
.PHONY: update-copyright
update-copyright:
- $(AM_V_GEN)grep -l -w Copyright \
+ $(AM_V_GEN)$(GREP) -l -w Copyright \
$$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
| $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@
@@ -1581,9 +1662,9 @@ _gl_TS_dir ?= src
ALL_RECURSIVE_TARGETS += sc_tight_scope
sc_tight_scope: tight-scope.mk
@fail=0; \
- if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \
+ if ! $(GREP) '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \
> /dev/null \
- && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
+ && ! $(GREP) -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
> /dev/null 2>&1; then \
echo '$(ME): skipping $@'; \
else \
@@ -1655,12 +1736,12 @@ _gl_tight_scope: $(bin_PROGRAMS)
hdr=`for f in $(_gl_TS_headers); do \
test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \
( printf '%s\n' '__.*' $(_gl_TS_unmarked_extern_functions); \
- grep -h -A1 '^extern .*[^;]$$' $$src \
- | grep -vE '^(extern |--|#)' | $(SED) 's/ .*//; /^$$/d'; \
+ $(GREP) -h -A1 '^extern .*[^;]$$' $$src \
+ | $(GREP) -vE '^(extern |--|#)' | $(SED) 's/ .*//; /^$$/d'; \
perl -lne \
'$(_gl_TS_function_match) and print $$1' $$hdr; \
) | sort -u | $(SED) "$$sed_wrap" > $$t; \
- nm -g $(_gl_TS_obj_files)|$(SED) -n 's/.* T //p'|grep -Ev -f $$t \
+ nm -g $(_gl_TS_obj_files)|$(SED) -n 's/.* T //p'|$(GREP) -Ev -f $$t \
&& { echo the above functions should have static scope >&2; \
exit 1; } || : ; \
( printf '%s\n' '__.*' main $(_gl_TS_unmarked_extern_vars); \
@@ -1668,7 +1749,7 @@ _gl_tight_scope: $(bin_PROGRAMS)
$$hdr $(_gl_TS_other_headers) \
) | sort -u | $(SED) "$$sed_wrap" > $$t; \
nm -g $(_gl_TS_obj_files) | $(SED) -n 's/.* [BCDGRS] //p' \
- | sort -u | grep -Ev -f $$t \
+ | sort -u | $(GREP) -Ev -f $$t \
&& { echo the above variables should have static scope >&2; \
exit 1; } || :
# TS-end
diff --git a/po/af.gmo b/po/af.gmo
index fb4b5d1..69fa511 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 821be88..9e02f93 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.0.9\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2004-01-11 21:06+0000\n"
"Last-Translator: Ysbeer <ysbeer@af.org.za>\n"
"Language-Team: Afrikaans <i18n@af.org.za>\n"
@@ -27,42 +27,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Ongeldige karakterklasnaam"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Ongeldige inhoud binne \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Regex te groot"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -208,7 +208,7 @@ msgstr "Regex te groot"
msgid "Unmatched ) or \\)"
msgstr "Ongepaarde ) of \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Geen vorige regex nie"
@@ -234,30 +234,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -265,7 +264,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -275,7 +274,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -285,7 +284,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +294,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -327,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -339,30 +338,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
#: sed/compile.c:146
@@ -579,27 +572,27 @@ msgstr "Ongeldige regterhandsverwysing \\%d vir `s' instruksie"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -616,34 +609,50 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
" suppress automatic printing of pattern space\n"
msgstr ""
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
" add the script to the commands to be executed\n"
msgstr ""
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -651,21 +660,21 @@ msgid ""
"executed\n"
msgstr ""
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -673,21 +682,21 @@ msgid ""
"specially)\n"
msgstr ""
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
" disable all GNU extensions.\n"
msgstr ""
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -697,7 +706,7 @@ msgstr ""
" -R, --regexp-perl\n"
" gebruik Perl 5 se regexsintaks in die skrip.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -705,14 +714,14 @@ msgid ""
" continuous long stream.\n"
msgstr ""
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -721,24 +730,24 @@ msgid ""
" the output buffers more often\n"
msgstr ""
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr ""
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -749,11 +758,11 @@ msgid ""
"\n"
msgstr ""
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/ast.gmo b/po/ast.gmo
index dc2c614..8523d5a 100644
--- a/po/ast.gmo
+++ b/po/ast.gmo
Binary files differ
diff --git a/po/ast.po b/po/ast.po
index 225d9bd..3e2cadc 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.0\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2009-11-19 21:36+0100\n"
"Last-Translator: Marquinos <maacub@gmail.com>\n"
"Language-Team: Asturian <ubuntu-l10n-ast@lists.ubuntu.com>\n"
@@ -27,42 +27,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Caráuter de nome de clase inválidu"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Contení­u inválidu de \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Espresión regular enforma grande"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -208,7 +208,7 @@ msgstr "Espresión regular enforma grande"
msgid "Unmatched ) or \\)"
msgstr ") O \\) ensin pareya"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Nun hai una espresión regular previa"
@@ -234,30 +234,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -265,7 +264,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -275,7 +274,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -285,7 +284,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +294,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -327,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -339,30 +338,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
#: sed/compile.c:146
@@ -562,27 +555,27 @@ msgstr "referencia \\%d inválida nel llau drechu de la orde `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -599,6 +592,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -608,7 +617,7 @@ msgstr ""
"entrada]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -617,7 +626,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" desanicia l'amuesa automática del espaciu de patrones\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -626,7 +635,7 @@ msgstr ""
" --posix\n"
" desactiva toles estensiones de GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -635,7 +644,7 @@ msgstr ""
" -e guión, --expression=guión\n"
" agrega el guión a la llista d'órdenes pa executar\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -646,7 +655,7 @@ msgstr ""
" amiesta'l contení­u del ficheru guión a la llista d'órdenes\n"
" pa executar\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -655,7 +664,7 @@ msgstr ""
" --follow-symlinks\n"
" sigue los enllaces simbólicos al procesar nel llugar\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -665,7 +674,7 @@ msgstr ""
" edita ficheros nel llugar (cria un respaldu si se da\n"
" una estensión)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -676,7 +685,7 @@ msgstr ""
" abre ficheros en mou binariu (los RC+FLs nun se procesen\n"
" especialmente)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -686,7 +695,7 @@ msgstr ""
" especifica'l llargor de corte de llinia que te pete pa\n"
" la orde `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -695,7 +704,7 @@ msgstr ""
" --posix\n"
" desactiva toles estensiones de GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -705,7 +714,7 @@ msgstr ""
" -r, --regexp-extended\n"
" usa espresiones regulares extendíes nel guión.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -716,14 +725,14 @@ msgstr ""
" considera los ficheros como separtaos en vez d'un solu\n"
" fluxu, llargu y continuu.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -736,24 +745,24 @@ msgstr ""
" y vacia los almacenamientos temporales de salida con más\n"
" frecuencia\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help amuesa esta aida y termina\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version amuesa la información de la versión y termina\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -771,11 +780,11 @@ msgstr ""
"la entrada estándard.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/bg.gmo b/po/bg.gmo
index a79a969..ed66226 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 4679643..f49b21d 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,13 +1,14 @@
# Bulgarian translation of sed.
-# Copyright (C) 2009, 2016, 2018 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2016, 2018, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
-# Alexander Shopov <ash@kambanaria.org>, 2016, 2018.
+# Alexander Shopov <ash@kambanaria.org>, 2016, 2018, 2020.
+#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-14 15:34+0100\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 15:40+0100\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
"Language: bg\n"
@@ -26,39 +27,39 @@ msgstr "грешка при запиÑ"
msgid "preserving permissions for %s"
msgstr "запазване на правата за „%s“"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "„[“ без еш"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "неправилен ÐºÐ»Ð°Ñ Ð·Ð½Ð°Ñ†Ð¸"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "ÐºÐ»Ð°Ñ Ð·Ð½Ð°Ñ†Ð¸ Ñе указва чрез „[[:ИМЕ:]]“, а не „[:ИМЕ:]“"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "незавършена екранираща поÑледователноÑÑ‚ чрез „\\“"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "неправилно Ñъдържание в „\\{\\}“"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "прекалено голÑм регулÑрен израз"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "„(“ без еш"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "не е зададен ÑинтакÑиÑ"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "„)“ без еш"
@@ -202,7 +203,7 @@ msgstr "РегулÑрниÑÑ‚ израз е прекалено голÑм"
msgid "Unmatched ) or \\)"
msgstr "„)“ или „\\)“ без еш"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "ÐÑма предхождащ регулÑрен израз"
@@ -228,39 +229,37 @@ msgstr "Пакетирано от %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
"Лиценз — Общ публичен лиценз на GNU (GNU GPL), както е публикуван от "
"ФондациÑта\n"
"за Ñвободен Ñофтуер — верÑÐ¸Ñ 3 на лиценза или (по ваше решение) по-къÑна "
"верÑиÑ.\n"
-"<https://gnu.org/licenses/gpl.html>\n"
+"<%s>\n"
"Тази програма е Ñвободен Ñофтуер. Можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате и/или "
"променÑте.\n"
"Ð¢Ñ Ñе разпроÑтранÑва БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ доколкото е позволено от закона.\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Създадено от %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Създадено от %s и %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Създадено от %s, %s и %s.\n"
@@ -268,7 +267,7 @@ msgstr "Създадено от %s, %s и %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -280,7 +279,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -292,7 +291,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -304,7 +303,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -330,7 +329,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -344,7 +343,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -359,34 +358,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Докладвайте грешки в програмата на адреÑ: %s\n"
"Докладвайте грешки в превода на адреÑ: <dict@ludost.net>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Докладвайте грешки в „%s“ на адреÑ: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Уеб Ñтраница на „%s“: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Уеб Ñтраница на „%s“: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Обща помощ за програмите на GNU: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Обща помощ за програмите на GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -587,27 +579,27 @@ msgstr "неправилен указател „\\%d“ в дÑÑната ÑÑ‚Ñ
msgid "regex input buffer length larger than INT_MAX"
msgstr "дължината на Ð²Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð±ÑƒÑ„ÐµÑ€ за регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð· е повече от INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -627,6 +619,23 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Докладвайте грешки в програмата на адреÑ: %s\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Този вариант на програмата „sed“ е компилиран Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux е включен на тази ÑиÑтема."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux е изключен на тази ÑиÑтема."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+"Този вариант на програмата „sed“ е компилиран без поддръжка на SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -635,7 +644,7 @@ msgstr ""
"Употреба: %s [ОПЦИЯ]… {СКРИПТ_ÐКО_ÐЕ_E_ЗÐДÐДЕÐ_ИÐÐЧЕ} [ВХОДЕÐ_ФÐЙЛ]…\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -645,7 +654,7 @@ msgstr ""
" без автоматичното отпечатване на буфера за напаÑване на "
"шаблони\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -654,7 +663,7 @@ msgstr ""
" --debug\n"
" подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изпълнението\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -663,7 +672,7 @@ msgstr ""
" -e СКРИПТ, --expression=СКРИПТ\n"
" добавÑне на СКРИПТа към командите за изпълнение\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -675,7 +684,7 @@ msgstr ""
"командите\n"
" за изпълнение\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -684,7 +693,7 @@ msgstr ""
" --follow-symlinks\n"
" Ñледване на Ñимволните връзки при обработката на мÑÑто\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -695,7 +704,7 @@ msgstr ""
"копие\n"
" Ñ Ñ‚Ð¾Ð²Ð° РÐЗШИРЕÐИЕ, ако е зададено)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -707,7 +716,7 @@ msgstr ""
"Ñпециално\n"
" значение)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -717,7 +726,7 @@ msgstr ""
" желана дължина на реда, Ñлед коÑто командата „l“ го "
"пренаÑÑ\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -726,7 +735,7 @@ msgstr ""
" --posix\n"
" изключване на вÑички Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° GNU\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -737,7 +746,7 @@ msgstr ""
" използване на разширени регулÑрни изрази в Ñкриптовете\n"
" (за ÑъвмеÑтимоÑÑ‚ Ñ POSIX ползвайте „-E“)\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -748,7 +757,7 @@ msgstr ""
" обработка на файловете поотделно, а не като един обединен "
"поток\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -757,7 +766,7 @@ msgstr ""
" --sandbox\n"
" безопаÑен режим (без командите „e“/„r“/„w“).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -769,7 +778,7 @@ msgstr ""
" зареждане на минимално количеÑтво входни данни и чеÑто\n"
" изчиÑтване на буферите\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -778,17 +787,17 @@ msgstr ""
" -z, --null-data\n"
" отделÑне на редовете ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help извеждане на тази помощ и изход\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version извеждане на верÑиÑта на GNU sed и изход\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -804,11 +813,11 @@ msgstr ""
"оÑтанали аргументи Ñе третират като имена на входни файлове. Ðко не Ñа\n"
"зададени такива, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "неуÑпешно задаване на двоичен режим за ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ (STDIN)"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "неуÑпешно задаване на двоичен режим за ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ (STDOUT)"
diff --git a/po/ca.gmo b/po/ca.gmo
index 32a87c6..7e606dc 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index bf45555..b1c2507 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2010-11-04 23:28+0100\n"
"Last-Translator: Jordi Mallach <jordi@gnu.org>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@@ -27,42 +27,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Nom de classe de caràcter no vàlid"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "El contingut de \\{\\} no és vàlid"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "L'expressió regular és massa gran"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -208,7 +208,7 @@ msgstr "L'expressió regular és massa gran"
msgid "Unmatched ) or \\)"
msgstr ") o \\) no emparellat"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "No hi ha una expressió regular prèvia"
@@ -234,30 +234,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -265,7 +264,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -275,7 +274,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -285,7 +284,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +294,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -327,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -339,31 +338,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"Pàgina inicial del GNU sed: <http://www.gnu.org/software/sed/>.\n"
"Ajuda general sobre l'ús de programari GNU: <http://www.gnu.org/gethelp/>.\n"
@@ -567,27 +559,27 @@ msgstr "referència \\%d no vàlida en el costat dret de l'ordre «s»"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -606,6 +598,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -615,7 +623,7 @@ msgstr ""
" [fitxer-entrada]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -624,7 +632,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" suprimeix la impressió automàtica de l'espai de patrons\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -633,7 +641,7 @@ msgstr ""
" --posix\n"
" inhabilita totes les extensions GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -642,7 +650,7 @@ msgstr ""
" -e script, --expression=script\n"
" afegeix el script a les ordres a executar\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -653,7 +661,7 @@ msgstr ""
" afegeix els continguts de fitxer-script a les ordres a "
"executar\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -663,7 +671,7 @@ msgstr ""
" segueix enllaços simbòlics quan s'editen els mateixos "
"fitxers\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -673,7 +681,7 @@ msgstr ""
" edita els mateixos fitxers (fa còpia de seguretat si es\n"
" proveeix una extensió)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -684,7 +692,7 @@ msgstr ""
" obre els fitxers en mode binari (no es processen els CR+LF\n"
" de manera especial)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -694,7 +702,7 @@ msgstr ""
" especifica la longitud desitjada per a l'ajust de final de\n"
" línia per a l'ordre «l»\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -703,7 +711,7 @@ msgstr ""
" --posix\n"
" inhabilita totes les extensions GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -713,7 +721,7 @@ msgstr ""
" -r, --regexp-extended\n"
" usa expressions regulars exteses en el script.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -724,14 +732,14 @@ msgstr ""
" considera els fitxers com independents, en compte d'un\n"
" llarg flux continu.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -744,24 +752,24 @@ msgstr ""
"d'entrada\n"
" i buida els búfers d'eixida més sovint\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help mostra aquest missatge d'ajuda i surt\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version mostra la informació de la versió i surt\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -780,11 +788,11 @@ msgstr ""
"es llegeix l'entrada estàndard.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/cs.gmo b/po/cs.gmo
index 47804c8..99380cc 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index ab2e7e9..d518608 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -2,14 +2,14 @@
# Copyright (C) 1998 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Jaroslav Fojtik <fojtik@cmp.felk.cvut.cz>, 1998.
-# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2010, 2016, 2017, 2018.
+# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2010, 2016, 2017, 2018, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-13 21:23+01:00\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 18:28+01:00\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"Language: cs\n"
@@ -28,39 +28,39 @@ msgstr "chyba zápisu"
msgid "preserving permissions for %s"
msgstr "zachovávají se práva pro %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "nepárová ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "chybná třída znaků"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "skladba pro třídu znaků je [[:space:]], nikoliv [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "neukonÄená posloupnost \\"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "chybný obsah \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regulární výraz je příliš velký"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "nepárová ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "nezadána žádná skladba"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "nepárová )"
@@ -204,7 +204,7 @@ msgstr "Regulární výraz je příliš velký"
msgid "Unmatched ) or \\)"
msgstr "Neodpovídající ) nebo \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Žádný předcházející regulární výraz"
@@ -230,35 +230,32 @@ msgstr "Zabalil(a) %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"License GPLv3 GNU GPL verze 3 nebo novější <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3 GNU GPL verze 3 nebo novější <%s>.\n"
"Toto je svobodné programové vybavení: máte právo jej měnit a šířit.\n"
"Není zde ŽÃDNà ZÃRUKA, jak jen zákon dovoluje.\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Napsal(a) %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Napsali %s a %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Napsali %s, %s a %s.\n"
@@ -266,7 +263,7 @@ msgstr "Napsali %s, %s a %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -278,7 +275,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -290,7 +287,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -302,7 +299,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -314,7 +311,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -328,7 +325,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -342,7 +339,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -357,36 +354,28 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Chyby v programu hlaste anglicky na: %s\n"
"Chyba v pÅ™ekladu hlaste Äesky na: <translation-team-cs@lists.sourceforge."
"net>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Hlaste chyby %s na: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Domovská stránka %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Domovská stránka %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Obecný návod jak používat software GNU: <https://www.gnu.org/gethelp/>.\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Obecný návod jak používat software GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -585,27 +574,27 @@ msgstr "chybný odkaz \\%d na pravé straně příkazu „s“"
msgid "regex input buffer length larger than INT_MAX"
msgstr "délka vstupního pole pro regulární výraz je větší než INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -624,6 +613,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Chybové zprávy zasílejte e-mailem na: <%s>\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Tento program sed byl sestaven s podporu SELinuxu."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "Na tomto systému je SELinux zapnut."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "Na tomto systému je SELinux vypnut."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Tento program byl sestaven bez podpory SELinuxu."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -632,7 +637,7 @@ msgstr ""
"Použití: %s [PŘEPÃNAÄŒ]… {SKRIPT_JEN_KDYŽ_JE_JEDINÃ} [VSTUPNÃ_SOUBOR]…\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -641,7 +646,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" potlaÄí automatické vypisování prostoru vzorů\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -650,7 +655,7 @@ msgstr ""
" --debug\n"
" popíše běh programu\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -659,7 +664,7 @@ msgstr ""
" -e script, --expression=SKRIPT\n"
" přidá skript mezi příkazy k provedení\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -669,7 +674,7 @@ msgstr ""
" -f script-file, --file=SKRIPTOVÃ_SOUBOR\n"
" přidá obsah SKRIPTOVÉHO_SOUBORU mezi příkazy k provedení\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -679,7 +684,7 @@ msgstr ""
" následuje symbolické odkazy, když zapisuje do vstupního\n"
" souboru\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -689,7 +694,7 @@ msgstr ""
" upravuje přímo vstupní soubory (vytváří zálohy, pokud je\n"
" poskytnuta PŘÃPONA)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -700,7 +705,7 @@ msgstr ""
" otevře soubory v binárním režimu (znaky CR+LF nejsou\n"
" zpracovávány zvláštně)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -709,7 +714,7 @@ msgstr ""
" -l N, --line-length=N\n"
" urÄuje délku zarovnání řádku u příkazu „l“\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -718,7 +723,7 @@ msgstr ""
" --posix\n"
" vypne všechna GNU rozšíření\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -729,7 +734,7 @@ msgstr ""
" použije rozšířené regulární výrazy\n"
" (kvůli přenositelnosti použijte posixový -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -740,7 +745,7 @@ msgstr ""
" považuje soubory za samostatné a ne za jeden dlouhý\n"
" souvislý proud.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -749,7 +754,7 @@ msgstr ""
" --sandbox\n"
" pracuje v režimu pískoviště (vypne příkazy e, r, w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -761,7 +766,7 @@ msgstr ""
" Äte co nejménÄ› dat ze vstupních souborů a výstupní\n"
" buffery vyprazdňuje ÄastÄ›ji\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -770,17 +775,17 @@ msgstr ""
" -z, --null-data\n"
" oddělí řádky znaky NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help zobrazí tuto nápovÄ›du a skonÄí\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version vypíše informace o verzi a skonÄí\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -798,11 +803,11 @@ msgstr ""
"zadány žádné vstupní soubory, bude Äten standardní vstup.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "nastavit binární režim standardnímu vstupu se nepodařilo"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "nastavit binární režim standardnímu výstupu se nepodařilo"
@@ -854,6 +859,9 @@ msgstr "o %s nelze získat údaje: %s"
msgid "cannot rename %s: %s"
msgstr "%s nelze přejmenovat: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Domovská stránka %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/da.gmo b/po/da.gmo
index 93aa303..1c30501 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 7892d8c..e6a4467 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed-4.2.2.177\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2017-02-06 14:29+0100\n"
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -28,39 +28,39 @@ msgstr "skrivefejl"
msgid "preserving permissions for %s"
msgstr "beholder tilladelser for %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "uparret ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "ugyldig tegnklasse"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "tegnklassesyntaks er [[:space:]], ikke [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "ufærdig \\-undvigesekvens"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "ugyldigt indhold af \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regulært udtryk for stort"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "uparret ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "ingen syntaks angivet"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "uparret )"
@@ -204,7 +204,7 @@ msgstr "Regulært udtryk for stort"
msgid "Unmatched ) or \\)"
msgstr "Uparret ) eller \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Intet forudgående regulært udtryk"
@@ -230,15 +230,13 @@ msgstr "Pakket af %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"Licens GPLv3+: GNU GPL version 3 eller nyere <http://gnu.org/licenses/gpl."
@@ -248,19 +246,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Skrevet af %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Skrevet af %s og %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Skrevet af %s, %s og %s.\n"
@@ -268,7 +266,7 @@ msgstr "Skrevet af %s, %s og %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -280,7 +278,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -292,7 +290,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -304,7 +302,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +314,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -330,7 +328,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -344,7 +342,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -359,35 +357,28 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"Rapportér fejl til: %s\n"
"\n"
"Rapportér oversættelsesfejl til Dansk-gruppen <dansk@dansk-gruppen.dk>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Rapportér fejl i %s til: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Hjemmeside for %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, fuzzy, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Hjemmeside for %s: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr "Generel hjælp til GNU-programmer: <http://www.gnu.org/gethelp/>\n"
#: sed/compile.c:146
@@ -587,27 +578,27 @@ msgstr "ugyldig reference \\%d på 's'-kommandos højreside"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -626,6 +617,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Send fejlrapporter til: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -634,7 +641,7 @@ msgstr ""
"Brug: %s [FLAG]... {script-kun-hvis-intet-andet-script} [inddatafil]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -643,7 +650,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" undertryk automatisk udskrift af mønsterrum\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -652,7 +659,7 @@ msgstr ""
" --posix\n"
" slå alle GNU-udvidelser fra.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -661,7 +668,7 @@ msgstr ""
" -e script, --expression=script\n"
" tilføj scriptet til kommandoerne, der skal køres\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -672,7 +679,7 @@ msgstr ""
" føj indholdet af scriptfil til kommandoerne, der skal "
"køres\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -681,7 +688,7 @@ msgstr ""
" --follow-symlinks\n"
" følg symlænker når der redigeres i filer\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -690,7 +697,7 @@ msgstr ""
" -i[SUFFIKS], --in-place[=SUFFIKS]\n"
" redigér filer (laver sikkerhedskopi hvis SUFFIKS er givet)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -700,7 +707,7 @@ msgstr ""
" -b, --binary\n"
" åbn filer i binær tilstand (CR+LF specialbehandles ikke)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -709,7 +716,7 @@ msgstr ""
" -l N, --line-length=N\n"
" angiv ønsket længde for linjeombrydning til 'l'-kommandoen\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -719,7 +726,7 @@ msgstr ""
" slå alle GNU-udvidelser fra.\n"
# findes der en bedre oversættelse af portable? Portabilitet?
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -730,7 +737,7 @@ msgstr ""
" brug udvidede regulære udtryk i scriptet\n"
" (brug -E fra POSIX for platformsuafhængighed)\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -742,7 +749,7 @@ msgstr ""
"kontinuert\n"
" strøm.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, fuzzy, c-format
msgid ""
" --sandbox\n"
@@ -751,7 +758,7 @@ msgstr ""
" --sandbox\n"
" kør i sandkassetilstand.\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -763,7 +770,7 @@ msgstr ""
" indlæs minimale mængder af data fra inddatafilerne, og tøm\n"
" uddatabufferne oftere\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -772,17 +779,17 @@ msgstr ""
" -z, --null-data\n"
" adskil linjer med NUL-tegn\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help vis denne hjælp og afslut\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version udskriv versionsinformation og afslut\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -800,11 +807,11 @@ msgstr ""
"fortolkes. Alle resterende argumenter er navne på inddatafiler; hvis ingen\n"
"inddatafiler er angivet, læses standard-inddata.\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
@@ -855,6 +862,10 @@ msgstr "kan ikke køre stat på %s: %s"
msgid "cannot rename %s: %s"
msgstr "kan ikke omdøbe %s: %s"
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Hjemmeside for %s: <http://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/de.gmo b/po/de.gmo
index f12b44d..c9d6a4c 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 36e9524..b92e3d3 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,17 +1,17 @@
# sed german translation
# This file is distributed under the same license as the sed package.
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
-# Walter Koch <koch@u32.de>, 2001, 2002, 2003, 2004, 2005, 2009.
-# Mario Blättermann <mario.blaettermann@gmail.com>, 2014.
-# Walter Koch <koch@u32.de>, 2016.
#
+#
+# Walter Koch <koch@u32.de>, 2001-2005, 2009, 2016.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2014, 2019, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.2.2.177\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2016-12-10 23:42+0100\n"
-"Last-Translator: Walter Koch <koch@u32.de>\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-11 10:24+0100\n"
+"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@@ -19,6 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 19.08.3\n"
#: lib/closeout.c:122
msgid "write error"
@@ -27,82 +28,82 @@ msgstr "Schreibfehler"
#: lib/copy-acl.c:54
#, c-format
msgid "preserving permissions for %s"
-msgstr "behalte Rechte für %s bei"
+msgstr "Rechte für %s werden beibehalten"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "nicht geschlossenes ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "Ungültige Zeichenklasse"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "Die Syntax für Zeichenklasse lautet [[:space:]], nicht [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
-msgstr "nicht bendete \\-Escapesequenz"
+msgstr "nicht beendete \\-Escape-Sequenz"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "Ungültiger Inhalt in \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "Regulärer Ausdruck ist zu groß"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
-msgstr "nicht geschlossenes ("
+msgstr "nicht geschlossene ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "keine Syntax angegeben"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
-msgstr "nicht geschlossens )"
+msgstr "nicht geschlossene )"
#: lib/error.c:195
msgid "Unknown system error"
msgstr "Unbekannter Systemfehler"
#: lib/getopt.c:278
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
-msgstr "%s: Option '%s' ist mehrdeutig\n"
+msgstr "%s: Option »%s%s« ist mehrdeutig\n"
#: lib/getopt.c:284
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
-msgstr "%s: Option '%s' ist mehrdeutig; Möglichkeiten:"
+msgstr "%s: Option »%s%s« ist mehrdeutig; Möglichkeiten:"
#: lib/getopt.c:319
-#, fuzzy, c-format
+#, c-format
msgid "%s: unrecognized option '%s%s'\n"
-msgstr "%s: nicht erkannte Option '%c%s'\n"
+msgstr "%s: nicht erkannte Option »%s%s«\n"
#: lib/getopt.c:345
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
-msgstr "%s: Option '%c%s' darf kein Argument haben\n"
+msgstr "%s: Option »%s%s« darf kein Argument haben\n"
#: lib/getopt.c:360
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' requires an argument\n"
-msgstr "%s: Option '--%s' benötigt ein Argument\n"
+msgstr "%s: Option »%s%s« benötigt ein Argument\n"
#: lib/getopt.c:621
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: Ungültige Option -- '%c'\n"
+msgstr "%s: Ungültige Option -- »%c«\n"
#: lib/getopt.c:636 lib/getopt.c:682
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: Option benötigt ein Argument -- '%c'\n"
+msgstr "%s: Option benötigt ein Argument -- »%c«\n"
#: lib/obstack.c:338 lib/obstack.c:340 lib/xalloc-die.c:34
msgid "memory exhausted"
@@ -131,11 +132,11 @@ msgstr "Speicher erschöpft"
#. and use glyphs suitable for your language.
#: lib/quotearg.c:362
msgid "`"
-msgstr "&bdquo;"
+msgstr "»"
#: lib/quotearg.c:363
msgid "'"
-msgstr "&ldquo;"
+msgstr "«"
#: lib/regcomp.c:135
msgid "Success"
@@ -205,24 +206,24 @@ msgstr "Regulärer Ausdruck ist zu groß"
msgid "Unmatched ) or \\)"
msgstr "Nicht paarweises ) bzw. \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Kein vorheriger regulärer Ausdruck"
#: lib/set-acl.c:46
#, c-format
msgid "setting permissions for %s"
-msgstr ""
+msgstr "Zugriffsrechte für %s werden gesetzt"
#: lib/version-etc.c:73
#, c-format
msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "Gepackt von %s (%s)\n"
#: lib/version-etc.c:76
#, c-format
msgid "Packaged by %s\n"
-msgstr ""
+msgstr "Gepackt von %s\n"
#. TRANSLATORS: Translate "(C)" to the copyright symbol
#. (C-in-a-circle), if this symbol is available in the user's
@@ -231,38 +232,33 @@ msgstr ""
msgid "(C)"
msgstr "(C)"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Lizenz GPLv3+: GNU GPL Version 3 oder später <http://gnu.org/licenses/gpl."
-"html>.\n"
+"Lizenz GPLv3+: GNU GPL Version 3 oder neuer <%s>.\n"
"Dies ist freie Software: Sie dürfen sie verändern und verbreiten.\n"
"Es gibt KEINE GARANTIE, soweit diese nicht durch Gesetz vorgeschrieben\n"
"wird.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Geschrieben von %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Geschrieben von %s und %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Geschrieben von %s, %s und %s.\n"
@@ -270,7 +266,7 @@ msgstr "Geschrieben von %s, %s und %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -282,7 +278,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -294,27 +290,31 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, and %s.\n"
msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s und %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, and %s.\n"
msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s und %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -322,13 +322,13 @@ msgid ""
"and %s.\n"
msgstr ""
"Geschrieben von %s, %s, %s,\n"
-"%s, %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
"und %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -342,47 +342,40 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"%s, %s, and others.\n"
msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s und weiteren.\n"
#. TRANSLATORS: The placeholder indicates the bug-reporting address
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
-msgstr ""
-"\n"
-"Fehlerberichte an %s.\n"
-"Ãœbersetzungsfehler an <http://translationproject.org/team/de.html>.\n"
+msgid "Report bugs to: %s\n"
+msgstr "Fehlerberichte an %s.\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
-msgstr ""
+msgstr "Melden Sie %s-Fehler an %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
-msgstr ""
+msgstr "Webseite von %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Allgemeine Hilfe zu GNU-Software: <http://www.gnu.org/gethelp/>.\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Allgemeine Hilfe zu GNU-Software: <%s>.\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -462,7 +455,7 @@ msgstr "Mehrere numerische Optionen am »s«-Befehl"
#: sed/compile.c:176
msgid "number option to `s' command may not be zero"
-msgstr "Numerische Option am »s«-Befehl kann nicht Null sein"
+msgstr "Numerische Option zum »s«-Befehl kann nicht Null sein"
#: sed/compile.c:178
msgid "strings for `y' command are different lengths"
@@ -491,15 +484,15 @@ msgstr "Unvollständiger Befehl"
#: sed/compile.c:189
msgid "\":\" lacks a label"
-msgstr ""
+msgstr "»:« fehlt eine Bezeichnung"
#: sed/compile.c:191
msgid "recursive escaping after \\c not allowed"
-msgstr ""
+msgstr "Rekursive Maskierung nach \\c ist nicht erlaubt"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w-Befehle sind im Sandbox-Modus deaktiviert"
#: sed/compile.c:215
#, c-format
@@ -519,7 +512,7 @@ msgstr "Zielmarke für den Sprung zu »%s« kann nicht gefunden werden"
#: sed/execute.c:253 sed/execute.c:270
#, c-format
msgid "case conversion produced an invalid character"
-msgstr ""
+msgstr "Umwandlung der Schreibweise erzeugte ein unzulässiges Zeichen"
#: sed/execute.c:561
#, c-format
@@ -581,40 +574,40 @@ msgstr "Ungültiger Verweis \\%d im rechten Teil (»RHS«) des »s«-Befehls"
#: sed/regexp.c:196
msgid "regex input buffer length larger than INT_MAX"
-msgstr ""
+msgstr "Regex-Eingabepufferlänge ist größer als INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
-#, fuzzy, c-format
+#, c-format
msgid ""
"GNU sed home page: <https://www.gnu.org/software/sed/>.\n"
"General help using GNU software: <https://www.gnu.org/gethelp/>.\n"
msgstr ""
-"GNU-sed-Homepage: <http://www.gnu.org/software/sed/>.\n"
-"Allgemeine Hilfe zu GNU-Software: <http://www.gnu.org/gethelp/>.\n"
+"GNU-sed-Homepage: <https://www.gnu.org/software/sed/>.\n"
+"Allgemeine Hilfe zu GNU-Software: <https://www.gnu.org/gethelp/>.\n"
#: sed/sed.c:130
#, c-format
@@ -622,15 +615,31 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Fehlerberichte bitte per E-Mail (auf englisch) an: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Diese Version von Sed wurde mit Unterstützung für SELinux erstellt."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux ist auf diesem System aktiviert."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux ist auf diesem System deaktiviert."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Diese Version von Sed wurde ohne Unterstützung für SELinux erstellt."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
-"Aufruf: %s [OPTION] ¿ {Skript-falls-kein-anderes-Skript} [Eingabedatei] ¿\n"
+"Aufruf: %s [OPTION] … {Skript-falls-kein-anderes-Skript} [Eingabedatei] …\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -639,16 +648,16 @@ msgstr ""
" -n, --quiet, --silent\n"
" verhindert die automatische Ausgabe des Arbeitspuffers.\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" schaltet alle GNU-Funktions-Erweiterungen ab.\n"
+" --debug\n"
+" kommentiert die Programmausführung\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -657,7 +666,7 @@ msgstr ""
" -e skript, --expression=Skript\n"
" hängt »Skript« an die auszuführenden Befehle an.\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -668,7 +677,7 @@ msgstr ""
" hängt den Inhalt von »Skriptdatei« an die\n"
" auszuführenden Befehle an.\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -677,7 +686,7 @@ msgstr ""
" --follow-symlinks\n"
" folgt symbolischen Verknüpfungen bei Verwendung von -i.\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -687,7 +696,7 @@ msgstr ""
" ändert die Eingabedatei (Sicherungsdatei wird erzeugt,\n"
" falls Suffix angegeben wurde)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -695,20 +704,20 @@ msgid ""
"specially)\n"
msgstr ""
" -b, --binary\n"
-" öffnet Dateien binär (CR+LFs werden nicht besonders "
-"behandelt).\n"
+" öffnet Dateien binär (CR+LFs werden nicht besonders\n"
+" behandelt).\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
" -l N, --line-length=N\n"
-" gibt die gewünschte Zeilenumbruchlänge für den »l«-Befehl "
-"an.\n"
+" gibt die gewünschte Zeilenumbruchlänge für den\n"
+" »l«-Befehl an.\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -717,7 +726,7 @@ msgstr ""
" --posix\n"
" schaltet alle GNU-Funktions-Erweiterungen ab.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -728,7 +737,7 @@ msgstr ""
" verwendet erweiterte reg. Ausdrücke für das Skript.\n"
" (für Portabilität verwende man POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -736,17 +745,20 @@ msgid ""
" continuous long stream.\n"
msgstr ""
" -s, --separate\n"
-" nimmt an, die Dateien sind seperat und nicht eine\n"
+" nimmt an, die Dateien sind separat und nicht eine\n"
" einzige lange zusammenhängende Quelle.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
+" --sandbox\n"
+" arbeitet im Sandbox-Modus (e/r/w-Befehle\n"
+" sind deaktiviert).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -758,24 +770,26 @@ msgstr ""
" lädt nur kleinste Datenmengen aus den Eingabedateien\n"
" und schreibt die Ausgabepuffer häufiger zurück.\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
+" -z, --null-data\n"
+" trennt Zeilen durch NUL-Zeichen\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help zeigt diese Hilfe an und beendet das Programm.\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version zeigt die Versionsinfo an und beendet das Programm.\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -793,13 +807,13 @@ msgstr ""
"gelesen.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "Binärmodus für Standardeingabe konnte nicht gesetzt werden"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "Binärmodus für Standardausgabe konnte nicht gesetzt werden"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -809,7 +823,7 @@ msgstr "%s kann nicht entfernt werden: %s"
#: sed/utils.c:146
#, c-format
msgid "couldn't open file %s: %s"
-msgstr "Datei %s kann nicht geöffnet werden: %s"
+msgstr "Datei %s konnte nicht geöffnet werden: %s"
#: sed/utils.c:165
#, c-format
@@ -819,7 +833,7 @@ msgstr "Einklinken in %s nicht möglich: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "Binärmodus für »%s« konnte nicht gesetzt werden"
#: sed/utils.c:207
#, c-format
@@ -847,91 +861,3 @@ msgstr "Statusermittlung von %s schlug fehl: %s"
#, c-format
msgid "cannot rename %s: %s"
msgstr "%s kann nicht umbenannt werden: %s"
-
-#~ msgid ""
-#~ " -R, --regexp-perl\n"
-#~ " use Perl 5's regular expressions syntax in the script.\n"
-#~ msgstr ""
-#~ " -R, --regexp-perl\n"
-#~ " verwendet die Perl-5-Syntax für reg. Ausdrücke im "
-#~ "Skript.\n"
-
-#~ msgid "%s: option '--%s' doesn't allow an argument\n"
-#~ msgstr "%s: Option '--%s' darf kein Argument haben\n"
-
-#~ msgid "%s: unrecognized option '--%s'\n"
-#~ msgstr "%s: nicht erkannte Option '--%s'\n"
-
-#~ msgid "%s: option '-W %s' is ambiguous\n"
-#~ msgstr "%s: Option '-W %s' ist mehrdeutig\n"
-
-#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
-#~ msgstr "%s: Option '-W %s' darf kein Argument haben\n"
-
-#~ msgid "%s: option '-W %s' requires an argument\n"
-#~ msgstr "%s: Option '-W %s' benötigt ein Argument\n"
-
-#~ msgid "cannot specify modifiers on empty regexp"
-#~ msgstr ""
-#~ "Für leere reguläre Ausdrücke können keine »modifier« angegeben werden"
-
-#~ msgid ""
-#~ "E-mail bug reports to: <%s>.\n"
-#~ "Be sure to include the word ``%s'' somewhere in the ``Subject:'' field.\n"
-#~ msgstr ""
-#~ "Fehlerberichte bitte per E-Mail (auf englisch) an: <%s>.\n"
-#~ "Verwenden Sie dabei den Begriff »%s« irgendwo in der Betreffzeile.\n"
-#~ "Ãœbersetzungsfehler in den deutschen Texten melden Sie bitte an\n"
-#~ "<translation-team-de@lists.sourceforge.net>.\n"
-
-#~ msgid "super-sed version %s\n"
-#~ msgstr "Super-sed version %s\n"
-
-#~ msgid ""
-#~ "based on GNU sed version %s\n"
-#~ "\n"
-#~ msgstr ""
-#~ "basiert auf GNU-sed-Version %s\n"
-#~ "\n"
-
-#~ msgid "GNU sed version %s\n"
-#~ msgstr "GNU-sed-Version %s\n"
-
-#~ msgid ""
-#~ "Copyright (C) %d Free Software Foundation, Inc.\n"
-#~ "This is free software; see the source for copying conditions. There is "
-#~ "NO\n"
-#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
-#~ "PURPOSE,\n"
-#~ "to the extent permitted by law.\n"
-#~ msgstr ""
-#~ "Copyright (C) %d Free Software Foundation, Inc.\n"
-#~ "(Der folgende Text ist eine nicht überprüfte Übersetzung, die zur\n"
-#~ " Information dient; in rechtlichen Fragen ist immer das englische\n"
-#~ " Original ausschlaggebend)\n"
-#~ "\n"
-#~ "Dieses Programm ist freie Software; In den Quelldateien können Sie die\n"
-#~ "Bedingungen für die Weitergabe nachlesen.\n"
-#~ "Es gibt KEINE GARANTIE; nicht einmal die implizite Garantie der\n"
-#~ "MARKTREIFE oder der EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK.\n"
-
-#~ msgid "Called savchar() with unexpected pushback (%x)"
-#~ msgstr "Aufruf von savchar() mit unerwartetem \"pushback\" (%x)"
-
-#~ msgid "INTERNAL ERROR: bad address type"
-#~ msgstr "INTERNER FEHLER: Falsche Adressenart"
-
-#~ msgid "INTERNAL ERROR: Bad cmd %c"
-#~ msgstr "INTERNER FEHLER: Falscher Befehl %c"
-
-#~ msgid "Unexpected End-of-file"
-#~ msgstr "Unerwartetes Dateiende"
-
-#~ msgid "bad regexp: %s\n"
-#~ msgstr "Falscher regulärer Ausdruck: %s\n"
-
-#~ msgid "input read error: %s"
-#~ msgstr "Eingabe-Lesefehler: %s"
-
-#~ msgid "couldn't write an item to %s: %s"
-#~ msgstr "Kann ein Feld nicht auf %s schreiben: %s"
diff --git a/po/el.gmo b/po/el.gmo
index 78a544d..ae3adeb 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 435ac9d..7c16050 100644
--- a/po/el.po
+++ b/po/el.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2012-03-17 16:30+0100\n"
"Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -28,42 +28,42 @@ msgstr "εσωτεÏικό σφάλμα"
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Μη έγκυÏο όνομα κλάσης χαÏακτήÏων"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Μη έγκυÏο πεÏιεχόμενο εντός \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· κανονική έκφÏαση"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -210,7 +210,7 @@ msgstr "Î Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· κανονική έκφÏαση"
msgid "Unmatched ) or \\)"
msgstr "ΑταίÏιαστο ) ή \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Δεν βÏέθηκε Ï€ÏοηγοÏμενη κανονική έκφÏαση"
@@ -236,30 +236,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -267,7 +266,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -277,7 +276,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -287,7 +286,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -297,7 +296,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +306,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +317,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -329,7 +328,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -341,31 +340,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"ΚεντÏική ιστοσελίδα GNU sed: <http://www.gnu.org/software/sed/>.\n"
"Γενική βοήθεια χÏήσης GNU λογισμικοÏ: <http://www.gnu.org/gethelp/>.\n"
@@ -570,27 +562,27 @@ msgstr "μη έγκυÏη αναφοÏά \\%d στο δεξί τμήμα της
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -609,6 +601,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -618,7 +626,7 @@ msgstr ""
"εισόδου]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -627,7 +635,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" δεν γίνεται αυτόματη εκτÏπωση του χώÏου υποδείγματος\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -636,7 +644,7 @@ msgstr ""
" --posix\n"
" απενεÏγοποίηση όλων των επεκτάσεων GNU στο Ï€Ïωτότυπο sed.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -645,7 +653,7 @@ msgstr ""
" -e σενάÏιο --expression=σενάÏιο\n"
" Ï€Ïοσθήκη του σεναÏίου στις εντολές Ï€Ïος εκτέλεση\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -655,7 +663,7 @@ msgstr ""
" -f αÏχείο-σεναÏίου --file=αÏχείο-σεναÏίου\n"
" Ï€Ïοσθήκη του αÏχείου-σεναÏίου στις εντολές Ï€Ïος εκτέλεση\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -664,7 +672,7 @@ msgstr ""
" --follow-symlinks\n"
" ακολοÏθηση συμβολικών συνδέσμων στην επιτόπια επεξεÏγασία\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -674,7 +682,7 @@ msgstr ""
" επιτόπια επεξεÏγασία (δημιουÏγίας αντιγÏάφου αν παÏέχεται "
"ΕΠΙΘΗΜΑ)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -685,7 +693,7 @@ msgstr ""
" άνοιγμα αÏχείων ως δυαδικά (οι χαÏακτήÏες CR και LF δεν "
"έχουν ειδική σημασία)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -695,7 +703,7 @@ msgstr ""
" καθοÏισμός ÎµÏ€Î¹Î¸Ï…Î¼Î·Ï„Î¿Ï Î¼Î®ÎºÎ¿Ï…Ï‚ γÏαμμής για αναδίπλωση γÏαμμών "
"στην εντολή `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -704,7 +712,7 @@ msgstr ""
" --posix\n"
" απενεÏγοποίηση όλων των επεκτάσεων GNU στο Ï€Ïωτότυπο sed.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -714,7 +722,7 @@ msgstr ""
" -r, --regexp-extended\n"
" χÏήση επεκτεταμένων κανονικών εκφÏάσεων στο σενάÏιο.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -725,14 +733,14 @@ msgstr ""
" τα αÏχεία εισόδου να λογίζονται ξεχωÏιστά, αντί ως ένας\n"
" συνεχής μακÏÏÏ‚ χείμαÏÏος.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -745,25 +753,25 @@ msgstr ""
"εισόδου\n"
" και άδειασμα των ενταμιευτών εξόδου συχνότεÏα\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help εμφάνιση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… κειμένου βοηθείας και έξοδος\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
" --version εμφάνιση πληÏοφοÏιών έκδοσης Ï€ÏογÏάμματος και έξοδος\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -780,11 +788,11 @@ msgstr ""
"καθοÏιστεί αÏχεία εισόδου, τότε γίνεται ανάγνωση της κανονικής εισόδου.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/eo.gmo b/po/eo.gmo
index 96c8251..168cd17 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index e5f22e6..a090c2e 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,15 +1,15 @@
# Esperantaj mesaÄoj por GNU sed.
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2013, 2016, 2017, 2018 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2013, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Edmund GRIMLEY EVANS <edmundo@rano.org> 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008.
-# Felipe Castro <fefcas@gmail.com> 2013, 2016, 2017, 2018.
+# Felipe Castro <fefcas@gmail.com> 2013, 2016, 2017, 2018, 2019, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU sed 4.4.104\n"
+"Project-Id-Version: GNU sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-06-06 22:02-0300\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-07 11:04-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\n"
@@ -18,8 +18,6 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
-"X-Poedit-Basepath: /home/ipe/tradukado_eo/plenumitaj\n"
#: lib/closeout.c:122
msgid "write error"
@@ -30,39 +28,39 @@ msgstr "skrib-eraro"
msgid "preserving permissions for %s"
msgstr "ni tenas la permesojn por %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "ne spegulita ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "nevalida signoklaso"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "sintakso de signoklaso estas [[:spaco:]], ne [:spaco:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
-msgstr "nefinigita kodÅanÄa \\"
+msgstr "nefinigita \\ (eskapo)"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "nevalida enhavo de \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regula esprimo tro granda"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "ne spegulita ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "neniu sintakso estis indikata"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "ne spegulita )"
@@ -206,7 +204,7 @@ msgstr "Regula esprimo tro granda"
msgid "Unmatched ) or \\)"
msgstr "Neparigita ) aÅ­ \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Mankas antaÅ­a regula esprimo"
@@ -232,37 +230,33 @@ msgstr "Pakigita de %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Permeso GPLv3+: GNU GPL versio 3 aÅ­ posta <https://gnu.org/licenses/gpl."
-"html>.\n"
+"Permeso GPLv3+: GNU GPL versio 3 aÅ­ posta <%s>.\n"
"Tio ĉi estas libera programaro: vi estas libera por ÅanÄi kaj redisdoni "
"Äin.\n"
"Ekzistas NENIU GARANTIO, laÅ­ plej amplekse permesate de la leÄoj.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Verkita de %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Verkita de %s kaj %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Verkita de %s, %s, kaj %s.\n"
@@ -270,7 +264,7 @@ msgstr "Verkita de %s, %s, kaj %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -282,7 +276,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -294,7 +288,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -306,7 +300,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +312,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -332,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -346,7 +340,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -361,35 +355,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Raportu program-misojn al: %s\n"
"Raportu traduk-misojn al: <translation-team-eo@lists.sourceforge.net>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Raportu program-misojn de %s al: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s hejm-paÄo: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s hejm-paÄo: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Äœenerala helpo por uzi programaron GNU: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Äœenerala helpo por uzi programaron GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -506,7 +492,7 @@ msgstr "rikura kodÅanÄo post \\c ne estas permesata"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "komandoj e/r/w estas malebligitaj en reÄimo de provejo"
#: sed/compile.c:215
#, c-format
@@ -588,29 +574,29 @@ msgstr "nevalida referenco \\%d ĉe dekstra flanko de komando 's'"
msgid "regex input buffer length larger than INT_MAX"
msgstr "eniga bufro-grando de 'regex' pli granda ol INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "AssAssaf Gordonaf Gordon"
#: sed/sed.c:124
#, c-format
@@ -627,16 +613,31 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Raportu program-erarojn al <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Tiu ĉi programo sed estis kompilita kun subteno al SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux estas ebligata en tiu ĉi sistemo."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux estas malebligata en tiu ĉi sistemo."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Tiu ĉi programo sed estis kompilita sen subteno al SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
-"Uzado: %s [OPCIO]... {programo-nur-se-neniu-alia-programo} [enig-"
-"dosiero]...\n"
+"Uzado: %s [OPCIO]... {skripto-nur-se-neniu-alia-skripto} [enig-dosiero]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -645,36 +646,36 @@ msgstr ""
" -n, --quiet, --silent\n"
" subpremi aÅ­tomatan presadon de Åablono-spaco\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" malÅalti ĉiujn GNU-ajn aldonaĵojn.\n"
+" --debug\n"
+" protokoli la funkciadon de la programo\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
" add the script to the commands to be executed\n"
msgstr ""
-" -e programo, --expression=programo\n"
-" aldoni la programon al la plenumotaj komandoj\n"
+" -e skripto, --expression=skripto\n"
+" aldoni la skripton al la plenumotaj komandoj\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
" add the contents of script-file to the commands to be "
"executed\n"
msgstr ""
-" -f programdosiero, --file=programdosiero\n"
-" aldoni la enhavon de programdosiero al la plenumotaj "
+" -f skriptodosiero, --file=skriptodosiero\n"
+" aldoni la enhavon de skriptodosiero al la plenumotaj "
"komandoj\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -683,7 +684,7 @@ msgstr ""
" --follow-symlinks\n"
" sekvi simbolajn ligojn, traktante dosierojn surloke\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -692,7 +693,7 @@ msgstr ""
" -i[SUFIKSO], --in-place[=SUFIKSO]\n"
" redakti dosierojn surloke (savkopii se estas SUFIKSO)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -703,7 +704,7 @@ msgstr ""
" malfermi dosierojn en binara reÄimo (linifinoj ne traktiÄas "
"speciale)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -712,7 +713,7 @@ msgstr ""
" -l N, --line-length=N\n"
" specifi la deziratan linilongon por la komando 'l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -721,18 +722,18 @@ msgstr ""
" --posix\n"
" malÅalti ĉiujn GNU-ajn aldonaĵojn.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
" use extended regular expressions in the script\n"
" (for portability use POSIX -E).\n"
msgstr ""
-" -E, -r, --regexp-extended\n"
-" uzi etenditajn regulajn esprimojn en la skripto.\n"
+" -E, -r, --regexp-extended\n"
+" uzi etenditajn regulajn esprimojn en la skripto\n"
" (por porteblo uzu POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -743,7 +744,7 @@ msgstr ""
" konsideri dosierojn kiel apartajn anstataÅ­ ol unuopa,\n"
" kontinua longa fluo.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -753,7 +754,7 @@ msgstr ""
" operacii laŭ reÄimo de provejo (malebligi komandojn e/r/"
"w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -766,7 +767,7 @@ msgstr ""
"kaj\n"
" malplenigi la eligobufrojn pli ofte\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -775,17 +776,17 @@ msgstr ""
" -z, --null-data\n"
" apartigi liniojn per signoj NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help montri ĉi tiun helpon kaj eliri\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version montri version kaj eliri\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -797,18 +798,18 @@ msgid ""
msgstr ""
"\n"
"Se neniu opcio -e, --expression, -f aÅ­ --file estas donita, tiam la unua\n"
-"ne-opcia argumento estas prenata kiel la sed-programeto interpretota. Ĉiuj\n"
+"ne-opcia argumento estas prenata kiel la sed-skripto interpretota. Ĉiuj\n"
"restantaj argumentoj estas nomoj de enig-dosieroj; se neniu enigdosiero\n"
"estas specifita, tiam la normala enigo estas legata.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "malsukcesis difini ciferecan reÄimon por STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "malsukcesis difini ciferecan reÄimon por STDOUT"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -828,7 +829,7 @@ msgstr "ne povis alligiÄi al %s: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "malsukcesis difini ciferecan reÄimon por '%s'"
#: sed/utils.c:207
#, c-format
@@ -857,13 +858,15 @@ msgstr "ne povas stat-i %s: %s"
msgid "cannot rename %s: %s"
msgstr "ne povas renomi %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s hejm-paÄo: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
#~ msgstr ""
#~ " -R, --regexp-perl\n"
-#~ " uzi sintakso de Perl 5 por regulaj esprimoj en "
-#~ "programo.\n"
+#~ " uzi sintakso de Perl 5 por regulaj esprimoj en skripto.\n"
#~ msgid "%s: option '--%s' doesn't allow an argument\n"
#~ msgstr "%s: modifilo '--%s' ne permesas argumenton\n"
diff --git a/po/es.gmo b/po/es.gmo
index 547edf5..b365715 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 12ccd3c..a52c238 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,15 +1,15 @@
# Mensajes en español para GNU sed.
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2018, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011.
-# Antonio Ceballos Roa <aceballos@gmail.com>, 2018
+# Antonio Ceballos Roa <aceballos@gmail.com>, 2018, 2020
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-18 01:30+0100\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 11:45+0100\n"
"Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
@@ -28,39 +28,39 @@ msgstr "error de escritura"
msgid "preserving permissions for %s"
msgstr "se preservan los permisos de %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "[ descompensado"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "clase de carácter no válida"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "la sintaxis de esta clase de carácter es [[:space:]], no [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "escape \\ sin acabar"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "contenido inválido de \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "expresión regular demasiado grande"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "( descompensado"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "sintaxis no especificada"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ") descompensado"
@@ -204,7 +204,7 @@ msgstr "Expresión regular demasiado grande"
msgid "Unmatched ) or \\)"
msgstr ") ó \\) sin pareja"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "No hay una expresión regular previa"
@@ -230,36 +230,32 @@ msgstr "Empaquetado por %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Licencia GPLv3+: GNU GPL versión 3 o posterior <https://gnu.org/licenses/gpl."
-"html>.\n"
+"Licencia GPLv3+: GNU GPL versión 3 o posterior <%s>.\n"
"Esto es software libre: Puede modificarse y redistribuirse libremente.\n"
"No hay NINGUNA GARANTÃA, dentro de los marcos legales.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Escrito por %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Escrito por %s y %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Escrito por %s, %s y %s.\n"
@@ -267,7 +263,7 @@ msgstr "Escrito por %s, %s y %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -279,7 +275,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -291,7 +287,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -303,7 +299,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -315,7 +311,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -329,7 +325,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -343,7 +339,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -358,33 +354,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Informar de errores a: %s\n"
+"Informar de errores de traducción a: <es@tp.org.es>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Informar de errores de %s a: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s página de inicio: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s página de inicio: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Ayuda general para usar software GNU: <http://www.gnu.org/gethelp/>.\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ayuda general para usar software GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -588,27 +578,27 @@ msgstr ""
"la longitud del «buffer» de entrada de la expresión regular es mayor que "
"INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -627,6 +617,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "E-mail para informar de errores: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Este programa sed está construido con soporte para SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux está activado en este sistema."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux está desactivado en este sistema."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Este programa sed está construido sin soporte para SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -635,7 +641,7 @@ msgstr ""
"Uso: %s [OPCIÓN]... {guión-sólo-si-no-hay-otro-guión} [fichero-entrada]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -644,7 +650,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" suprime la muestra automática del espacio de patrones\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -653,7 +659,7 @@ msgstr ""
" --debug\n"
" ejecución del programa con notas\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -662,7 +668,7 @@ msgstr ""
" -e guión, --expression=guión\n"
" agrega el guión a la lista de órdenes para ejecutar\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -674,7 +680,7 @@ msgstr ""
"órdenes\n"
" para ejecutar\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -683,7 +689,7 @@ msgstr ""
" --follow-symlinks\n"
" sigue los enlaces simbólicos al procesar en el lugar\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -693,7 +699,7 @@ msgstr ""
" edita ficheros en el lugar (crea un respaldo si se da\n"
" un SUFIJO)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -704,7 +710,7 @@ msgstr ""
" abre ficheros en modo binario (los RC+FLs no se procesan\n"
" especialmente)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -714,7 +720,7 @@ msgstr ""
" especifica la longitud de corte de línea deseado para\n"
" la orden `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -723,7 +729,7 @@ msgstr ""
" --posix\n"
" desactiva todas las extensiones de GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -734,7 +740,7 @@ msgstr ""
" utiliza expresiones regulares extendidas en el guión\n"
" (para que sea portable utilice POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -745,7 +751,7 @@ msgstr ""
" considera los ficheros como separados en lugar de un solo\n"
" flujo, largo y continuo.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -754,7 +760,7 @@ msgstr ""
" --sandbox\n"
" opera en modo «sandbox» (desactiva las órdenes e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -768,7 +774,7 @@ msgstr ""
" y vacía los almacenamientos temporales de salida con más\n"
" frecuencia\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -777,17 +783,17 @@ msgstr ""
" -z, --null-data\n"
" separa con caracteres NUL las líneas\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help muestra esta ayuda y termina\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version muestra la información de la versión y termina\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -805,11 +811,11 @@ msgstr ""
"la entrada estándard.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "falló al establecer el modo binario en STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "falló al establecer el modo binario en STDOUT"
@@ -862,6 +868,9 @@ msgstr "no se puede obtener la información de stat de %s: %s"
msgid "cannot rename %s: %s"
msgstr "no se puede renombrar %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s página de inicio: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/et.gmo b/po/et.gmo
index d763cf3..1cdb713 100644
--- a/po/et.gmo
+++ b/po/et.gmo
Binary files differ
diff --git a/po/et.po b/po/et.po
index 1bd8800..2538b1b 100644
--- a/po/et.po
+++ b/po/et.po
@@ -1,14 +1,14 @@
# This file is distributed under the same license as the sed package.
# Estonian translations for GNU sed.
# Copyright (C) 2001 Free Software Foundation, Inc.
-# Toomas Soome <tsoome@me.com>, 2016.
+# Toomas Soome <tsoome@me.com>, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.2.2.177\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2016-12-06 16:32+0200\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 11:13+0200\n"
"Last-Translator: Toomas Soome <tsoome@me.com>\n"
"Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
"Language: et\n"
@@ -29,39 +29,39 @@ msgstr "viga kirjutamisel"
msgid "preserving permissions for %s"
msgstr "säilitan %s õigused"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "balanseerimata ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "vigane sümbolite klass"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "sümbolite klassi süntaks on [[:space:]], mitte [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "lõpetamata \\ paojada"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "vigane \\{\\} sisu"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regulaaravaldis on liiga suur"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "balanseerimata ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "süntaksi pole antud"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "balanseerimata )"
@@ -70,29 +70,29 @@ msgid "Unknown system error"
msgstr "Tundmatu süsteemi viga"
#: lib/getopt.c:278
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
-msgstr "%s: võti '%s' on mitmetähenduslik\n"
+msgstr "%s: võti '%s%s' on mitmetähenduslik\n"
#: lib/getopt.c:284
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
-msgstr "%s: võti '%s' on mitmetähenduslik; variandid:"
+msgstr "%s: võti '%s%s' on mitmetähenduslik; variandid:"
#: lib/getopt.c:319
-#, fuzzy, c-format
+#, c-format
msgid "%s: unrecognized option '%s%s'\n"
-msgstr "%s: tundmatu võti '%c%s'\n"
+msgstr "%s: tundmatu võti '%s%s'\n"
#: lib/getopt.c:345
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
-msgstr "%s: võti '%c%s' ei luba argumenti\n"
+msgstr "%s: võti '%s%s' ei luba argumenti\n"
#: lib/getopt.c:360
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' requires an argument\n"
-msgstr "%s: võti '--%s' nõuab argumenti\n"
+msgstr "%s: võti '%s%s' nõuab argumenti\n"
#: lib/getopt.c:621
#, c-format
@@ -205,7 +205,7 @@ msgstr "Regulaaravaldis on liiga suur"
msgid "Unmatched ) or \\)"
msgstr "Puudub ) või \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Eelmist regulaaravaldist pole"
@@ -231,37 +231,33 @@ msgstr "Paketeerinud %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Litsents GPLv3+: GNU GPL versioon 3 või uuem <http://gnu.org/licenses/gpl."
-"html>.\n"
+"Litsents GPLv3+: GNU GPL versioon 3 või uuem <%s>.\n"
"See on vaba tarkvara: teil on lubatud seda muuta ja levitada.\n"
"Garantii puudub ulatuseni, mida lubab rakendatav seadus.\n"
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Kirjutanud %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Kirjutanud %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Kirjutanud %s, %s ja %s.\n"
@@ -269,7 +265,7 @@ msgstr "Kirjutanud %s, %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -281,7 +277,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -293,7 +289,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +301,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +313,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -331,7 +327,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -345,7 +341,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -360,34 +356,25 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
-msgstr ""
-"\n"
-"Raporteerige vigadest: %s\n"
+msgid "Report bugs to: %s\n"
+msgstr "Raporteerige vigadest: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "%s vigadest teatage: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s koduleht: <%s>\n"
-#: lib/version-etc.c:253
-#, fuzzy, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s koduleht: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Ãœldine abi GNU tarkvara kasutamiseks: <http://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ãœldine abi GNU tarkvara kasutamiseks: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -504,7 +491,7 @@ msgstr "rekursiivne paojada peale \\c ei ole lubatud"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w käsud on liivakasti režiimis blokeeritud"
#: sed/compile.c:215
#, c-format
@@ -584,40 +571,40 @@ msgstr "vigane viide \\%d käsu `s' paremas pooles"
#: sed/regexp.c:196
msgid "regex input buffer length larger than INT_MAX"
-msgstr ""
+msgstr "regulaaravaldise sisend puhvri pikkus on suurem kui INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
-#, fuzzy, c-format
+#, c-format
msgid ""
"GNU sed home page: <https://www.gnu.org/software/sed/>.\n"
"General help using GNU software: <https://www.gnu.org/gethelp/>.\n"
msgstr ""
-"GNU sed kodulehekülg: <http://www.gnu.org/software/sed/>.\n"
-"Ãœldine abi GNU tarkvara kasutamiseks: <http://www.gnu.org/gethelp/>.\n"
+"GNU sed kodulehekülg: <https://www.gnu.org/software/sed/>.\n"
+"Ãœldine abi GNU tarkvara kasutamiseks: <https://www.gnu.org/gethelp/>.\n"
#: sed/sed.c:130
#, c-format
@@ -625,6 +612,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Mailige veateated aadressil: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "See sed programm on ehitatud SELinux toega."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux on selles süsteemis lubatud."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux on selles süsteemis blokeeritud."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "See sed programm ehitati SELinux toeta."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -634,7 +637,7 @@ msgstr ""
"fail]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -643,16 +646,16 @@ msgstr ""
" -n, --quiet, --silent\n"
" keela mustriruumi automaatne väljastamine\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" blokeeri kõik GNU laiendused.\n"
+" --debug\n"
+" kirjelda programmi täitmist\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -661,7 +664,7 @@ msgstr ""
" -e skript, --expression=skript\n"
" lisa täidetavate käskluste skript\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -671,7 +674,7 @@ msgstr ""
" -f skripti-fail, --file=skripti-fail\n"
" lisa skripti-faili sisu täidetavate käskluste hulka\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -680,7 +683,7 @@ msgstr ""
" --follow-symlinks\n"
" järgi nimeviiteid\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -689,7 +692,7 @@ msgstr ""
" -i[SUFIKS], --in-place[=SUFIKS]\n"
" toimeta faile (kui kasutati sufiksit, loob ka varukoopia)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -699,7 +702,7 @@ msgstr ""
" -b, --binary\n"
" ava failid binaarmoodis (CR+LF ei käsitleta eriliselt)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -708,7 +711,7 @@ msgstr ""
" -l N, --line-length=N\n"
" määra `l' käsule soovitatav rea pikkus\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -717,7 +720,7 @@ msgstr ""
" --posix\n"
" blokeeri kõik GNU laiendused.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -728,7 +731,7 @@ msgstr ""
" kasuta skriptis laiendatud regulaaravaldiste süntaksit\n"
" (ühilduvuse jaoks kasutage POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -738,16 +741,16 @@ msgstr ""
" -s, --separate\n"
" käsitle faile ükshaaval, mitte ühe jätkuva voona.\n"
-#: sed/sed.c:172
-#, fuzzy, c-format
+#: sed/sed.c:188
+#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
" --sandbox\n"
-" opereeri liivakasti moodis.\n"
+" opereeri liivakasti moodis (blokeeri e/r/w käsud).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -759,7 +762,7 @@ msgstr ""
" loe sisendfailist minimaalne kogus andmeid ja tühjenda\n"
" väljundpuhvreid sagedamini\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -768,17 +771,17 @@ msgstr ""
" -z, --null-data\n"
" eralda read sümboliga NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help väljast see abiinfo ja lõpeta töö\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version väljasta versiooniinfo ja lõpeta töö\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -795,13 +798,13 @@ msgstr ""
"sisendfailide nimed; kui sisendfaile ei antud, loetakse standardsisendit.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "binaarmoodi seadmine failil STDIN ebaõnnestus"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "binaarmoodi seadmine failil STDOUT ebaõnnestus"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -821,7 +824,7 @@ msgstr "%s külge haakimine ebaõnnestus: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "binaarmoodi seadmine failil '%s' ebaõnnestus"
#: sed/utils.c:207
#, c-format
@@ -849,25 +852,3 @@ msgstr "stat %s ei saa teha: %s"
#, c-format
msgid "cannot rename %s: %s"
msgstr "%s ei saa ümber nimetada: %s"
-
-#~ msgid ""
-#~ " -R, --regexp-perl\n"
-#~ " use Perl 5's regular expressions syntax in the script.\n"
-#~ msgstr ""
-#~ " -R, --regexp-perl\n"
-#~ " kasuta skriptis Perl 5 regulaaravaldiste süntaksit.\n"
-
-#~ msgid "%s: option '--%s' doesn't allow an argument\n"
-#~ msgstr "%s: võti '--%s' ei luba argumenti\n"
-
-#~ msgid "%s: unrecognized option '--%s'\n"
-#~ msgstr "%s: tundmatu võti '--%s'\n"
-
-#~ msgid "%s: option '-W %s' is ambiguous\n"
-#~ msgstr "%s: võti '-W %s' on mitmetähenduslik\n"
-
-#~ msgid "%s: option '-W %s' doesn't allow an argument\n"
-#~ msgstr "%s: võti '-W %s' ei luba argumenti\n"
-
-#~ msgid "%s: option '-W %s' requires an argument\n"
-#~ msgstr "%s: võti '-W %s' nõuab argumenti\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index e440052..c12b5d8 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index d6089e1..b7af387 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.1.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2004-07-07 22:11+0200\n"
"Last-Translator: Mikel Olasagasti <hey_neken@mundurat.net>\n"
"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
@@ -29,39 +29,39 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr ""
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr ""
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr ""
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -206,7 +206,7 @@ msgstr ""
msgid "Unmatched ) or \\)"
msgstr ""
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr ""
@@ -232,30 +232,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -263,7 +262,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -273,7 +272,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -283,7 +282,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -293,7 +292,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -303,7 +302,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -314,7 +313,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -325,7 +324,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -337,30 +336,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
#: sed/compile.c:146
@@ -559,27 +552,27 @@ msgstr ""
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -596,34 +589,50 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
" suppress automatic printing of pattern space\n"
msgstr ""
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
" add the script to the commands to be executed\n"
msgstr ""
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -631,21 +640,21 @@ msgid ""
"executed\n"
msgstr ""
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -653,21 +662,21 @@ msgid ""
"specially)\n"
msgstr ""
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
" disable all GNU extensions.\n"
msgstr ""
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -675,7 +684,7 @@ msgid ""
" (for portability use POSIX -E).\n"
msgstr ""
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -683,14 +692,14 @@ msgid ""
" continuous long stream.\n"
msgstr ""
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -699,24 +708,24 @@ msgid ""
" the output buffers more often\n"
msgstr ""
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr ""
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -727,11 +736,11 @@ msgid ""
"\n"
msgstr ""
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/fi.gmo b/po/fi.gmo
index d5b826b..7cc7ae9 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index e44602d..0fa7ed9 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,17 +1,17 @@
# Finnish messages for GNU sed.
-# Copyright © 2002, 2007, 2008, 2016 Free Software Foundation, Inc.
+# Copyright © 2002, 2007, 2008, 2016, 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Sami J. Laine <sami.laine@iki.fi>, 2002.
-# Jorma Karvonen <karvjorm@users.sf.net>, 2007, 2008.
-# Jorma Karvonen <karvonen.jorma@gmail.com>, 2010, 2016.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2007, 2008, 2010, 2016.
+# Lauri Nurmi <lanurmi@iki.fi>, 2019, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.2.2.177\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2016-12-15 19:17+0200\n"
-"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-09 01:19+0200\n"
+"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: KBabel 1.11.2\n"
+"X-Generator: Poedit 2.2.4\n"
#: lib/closeout.c:122
msgid "write error"
@@ -28,85 +28,82 @@ msgstr "kirjoitusvirhe"
#: lib/copy-acl.c:54
#, c-format
msgid "preserving permissions for %s"
-msgstr "taltioidaan kohteen %s käyttöoikeudet"
+msgstr "säilytettäessä tiedoston %s oikeuksia"
-# the older messages are with quotation marks (msgid "unmatched `{'"),
-# the newer ones are without quotation marks (msgid "unbalanced [")
-# in Finnish translations quotation marks (â€) are used in both cases
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
-msgstr "pariton â€[â€"
+msgstr "pariton ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
-msgstr "Virheellinen merkkiluokka"
+msgstr "virheellinen merkkiluokka"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "merkkiluokan syntaksi on [[:space:]], ei [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
-msgstr "päättämätön \\-koodinvaihto"
+msgstr "keskeneräinen \\-ohjaussarja"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
-msgstr "Kohteen \\{\\} virheellinen sisältö"
+msgstr "1Kohteen \\{\\} virheellinen sisältö"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "säännöllinen lauseke on liian suuri"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
-msgstr "pariton â€(â€"
+msgstr "pariton ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "syntaksia ei ole määritelty"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
-msgstr "pariton â€)â€"
+msgstr "pariton )"
#: lib/error.c:195
msgid "Unknown system error"
msgstr "Tuntematon järjestelmävirhe"
#: lib/getopt.c:278
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
-msgstr "%s: valitsin ’%s’ ei ole yksiselitteinen\n"
+msgstr "%s: valitsin â€%s%s†on moniselitteinen\n"
#: lib/getopt.c:284
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
-msgstr "%s: valitsin ’%s’ ei ole yksiselitteinen; mahdollisuudet:"
+msgstr "%s: valitsin â€%s%s†on moniselitteinen; vaihtoehdot:"
#: lib/getopt.c:319
-#, fuzzy, c-format
+#, c-format
msgid "%s: unrecognized option '%s%s'\n"
-msgstr "%s: tunnistamaton valitsin ’%c%s’\n"
+msgstr "%s: tunnistamaton valitsin â€%s%sâ€\n"
#: lib/getopt.c:345
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
-msgstr "%s: valitsin ’%c%s’ ei salli argumenttia\n"
+msgstr "%s: valitsin â€%s%s†ei salli argumenttia\n"
#: lib/getopt.c:360
-#, fuzzy, c-format
+#, c-format
msgid "%s: option '%s%s' requires an argument\n"
-msgstr "%s: valitsin ’--%s’ vaatii argumentin\n"
+msgstr "%s: valitsin â€%s%s†vaatii argumentin\n"
#: lib/getopt.c:621
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: virheellinen valitsin -- ’%c’\n"
+msgstr "%s: virheellinen valitsin -- â€%câ€\n"
#: lib/getopt.c:636 lib/getopt.c:682
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: valitsin vaatii argumentin -- ’%c’\n"
+msgstr "%s: valitsin vaatii argumentin -- â€%câ€\n"
#: lib/obstack.c:338 lib/obstack.c:340 lib/xalloc-die.c:34
msgid "memory exhausted"
@@ -163,7 +160,7 @@ msgstr "Virheellinen merkkiluokan nimi"
#: lib/regcomp.c:150
msgid "Trailing backslash"
-msgstr "Seuraava kenoviiva"
+msgstr "Kenoviiva lopussa"
#: lib/regcomp.c:153
msgid "Invalid back reference"
@@ -171,23 +168,23 @@ msgstr "Virheellinen takaisinviittaus"
#: lib/regcomp.c:156
msgid "Unmatched [, [^, [:, [., or [="
-msgstr "Pariton â€[â€, â€[^â€, â€[:â€, â€[.â€, tai â€[=â€"
+msgstr "Pariton [, [^, [:, [. tai [="
#: lib/regcomp.c:159
msgid "Unmatched ( or \\("
-msgstr "Pariton â€(†tai â€\\(â€"
+msgstr "Pariton ( tai \\("
#: lib/regcomp.c:162
msgid "Unmatched \\{"
-msgstr "Pariton â€\\{â€"
+msgstr "Pariton \\{"
#: lib/regcomp.c:165
msgid "Invalid content of \\{\\}"
-msgstr "Kohteen \\{\\} virheellinen sisältö"
+msgstr "Virheellinen \\{\\}:n sisältö"
#: lib/regcomp.c:168
msgid "Invalid range end"
-msgstr "Virheellinen lukualueen loppu"
+msgstr "Virheellinen välin loppu"
#: lib/regcomp.c:171
msgid "Memory exhausted"
@@ -207,26 +204,26 @@ msgstr "Säännöllinen lauseke on liian suuri"
#: lib/regcomp.c:183
msgid "Unmatched ) or \\)"
-msgstr "Pariton â€)†tai â€\\)â€"
+msgstr "Pariton ) tai \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
-msgstr "Ei aikaisempaa säännöllistä lausetta"
+msgstr "Ei edellistä säännöllistä lauseketta"
#: lib/set-acl.c:46
#, c-format
msgid "setting permissions for %s"
-msgstr "kohteen %s käyttöoikeuksien asetukset"
+msgstr "asetetaan oikeudet tiedostolle %s"
#: lib/version-etc.c:73
#, c-format
msgid "Packaged by %s (%s)\n"
-msgstr "Pakkaaja: %s (%s)\n"
+msgstr "Paketoinut %s (%s)\n"
#: lib/version-etc.c:76
#, c-format
msgid "Packaged by %s\n"
-msgstr "Pakkaaja: %s\n"
+msgstr "Paketoinut %s\n"
#. TRANSLATORS: Translate "(C)" to the copyright symbol
#. (C-in-a-circle), if this symbol is available in the user's
@@ -235,170 +232,150 @@ msgstr "Pakkaaja: %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"License GPLv3+: GNU GPL versio 3 tai myöhäisempi <http://gnu.org/licenses/"
-"gpl.html>.\n"
-"Tämä on vapaa ohjelmisto: voit vapaasti muuttaa sitä ja jakaa sitä "
-"edelleen.\n"
-"Ohjelmistolle EI OLE TAKUUTA, siinä laajuudessa kuin laki sen sallii.\n"
-"\n"
+"Lisenssi GPLv3+: GNU GPL versio 3 tai myöhempi <%s>.\n"
+"\"Tämä on vapaa ohjelmisto; sitä saa vapaasti muuttaa ja levittää\n"
+"\"edelleen. Siinä määrin kuin laki sallii, TAKUUTA EI OLE.\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
-msgstr "Tekijä: %s.\n"
+msgstr "Kirjoittanut %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
-msgstr "Tekijät: %s ja %s.\n"
+msgstr "Kirjoittaneet %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
-msgstr "Tekijät: %s, %s, ja %s.\n"
+msgstr "Kirjoittaneet %s, %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"and %s.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
-"ja %s.\n"
+"Kirjoittaneet %s, %s,\n"
+"%s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, and %s.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
-"%s, ja %s.\n"
+"Kirjoittaneet %s, %s,\n"
+"%s, %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, and %s.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
-"%s, %s, ja %s.\n"
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, and %s.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
-"%s, %s, %s, ja %s.\n"
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s,\n"
+"%s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"and %s.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
+"Kirjoittaneet %s, %s,\n"
"%s, %s, %s, %s,\n"
-"ja %s.\n"
+"%s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"%s, and %s.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
+"Kirjoittaneet %s, %s,\n"
"%s, %s, %s, %s,\n"
-"%s, ja %s.\n"
+"%s, %s ja %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"%s, %s, and others.\n"
msgstr ""
-"Tekijät: %s, %s, %s,\n"
+"Kirjoittaneet %s, %s,\n"
"%s, %s, %s, %s,\n"
-"%s, %s, ja muut.\n"
+"%s, %s, %s ja muut.\n"
#. TRANSLATORS: The placeholder indicates the bug-reporting address
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
-msgstr ""
-"\n"
-"Ilmoita ohjelmointivirheistä osoitteeseen: %s\n"
-"Ilmoita käännösvirheistä osoitteeseen: <translation-team-fi@lists."
-"sourceforge.net>\n"
+msgid "Report bugs to: %s\n"
+msgstr "Ilmoita ohjelmistovioista (englanniksi) osoitteeseen: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
-msgstr ""
-"Ilmoita %s ohjelmointivirhettä osoitteeseen: %s\n"
-"Ilmoita käännösvirheistä osoitteeseen: <translation-team-fi@lists."
-"sourceforge.net>\n"
+msgstr "Ilmoita %s-vioista (englanniksi) osoitteeseen %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
-msgstr "%s kotisivu: <%s>\n"
+msgstr "%s-kotisivu: <%s>\n"
-#: lib/version-etc.c:253
-#, fuzzy, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s kotisivu: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Yleinen opaste GNU-ohjelmiston käytöstä: <http://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "Yleisohjeita GNU-ohjelmistojen käyttöön: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -426,7 +403,7 @@ msgstr "ylimääräisiä merkkejä komennon jälkeen"
#: sed/compile.c:155
msgid "expected \\ after `a', `c' or `i'"
-msgstr "\\ odotettiin merkkien â€aâ€, â€c†tai â€i†jälkeen"
+msgstr "odotettiin â€aâ€:n, â€câ€:n tai â€iâ€:n jälkeen tulevan â€)â€"
#: sed/compile.c:157
msgid "`}' doesn't want any addresses"
@@ -450,31 +427,31 @@ msgstr "komento käyttää vain yhtä osoitetta"
#: sed/compile.c:165
msgid "unterminated address regex"
-msgstr "päättymätön osoite vakiolauseessa"
+msgstr "keskeneräinen osoitteen säännöllinen lauseke"
#: sed/compile.c:166
msgid "unterminated `s' command"
-msgstr "päättymätön â€sâ€-komento"
+msgstr "keskeneräinen â€sâ€-komento"
#: sed/compile.c:167
msgid "unterminated `y' command"
-msgstr "päättymätön â€yâ€-komento"
+msgstr "keskeneräinen â€yâ€-komento"
#: sed/compile.c:168
msgid "unknown option to `s'"
-msgstr "tuntematon valitsin kohteelle â€sâ€"
+msgstr "tuntematon valitsin â€sâ€:lle"
#: sed/compile.c:170
msgid "multiple `p' options to `s' command"
-msgstr "useita â€pâ€-valitsimia â€sâ€-komennolle"
+msgstr "useita â€pâ€-valitsimia â€sâ€:lle"
#: sed/compile.c:172
msgid "multiple `g' options to `s' command"
-msgstr "useita â€gâ€-valitsimia â€sâ€-komennolle"
+msgstr "useita â€gâ€-valitsimia â€sâ€:lle"
#: sed/compile.c:174
msgid "multiple number options to `s' command"
-msgstr "useita valitsimia â€sâ€-komennolle"
+msgstr "useita numeerisia valitsimia â€sâ€-komennolle"
#: sed/compile.c:176
msgid "number option to `s' command may not be zero"
@@ -482,11 +459,11 @@ msgstr "numeerinen valitsin â€sâ€-komennolle ei saa olla nolla"
#: sed/compile.c:178
msgid "strings for `y' command are different lengths"
-msgstr "merkkijonot â€yâ€-komennolle ovat pituudeltaan vaihtelevia"
+msgstr "merkkijonot â€yâ€-komennolle ovat eripituiset"
#: sed/compile.c:180
msgid "delimiter character is not a single-byte character"
-msgstr "erotinmerkki ei ole yksitavuinen merkki"
+msgstr "erotin ei ole yksitavuinen merkki"
#: sed/compile.c:182
msgid "expected newer version of sed"
@@ -494,7 +471,7 @@ msgstr "odotettiin uudempaa sed-versiota"
#: sed/compile.c:184
msgid "invalid usage of line address 0"
-msgstr "riviosoitteen nolla virheellinen käyttö"
+msgstr "riviosoitteen 0 virheellinen käyttö"
#: sed/compile.c:185
#, c-format
@@ -507,15 +484,15 @@ msgstr "vaillinainen komento"
#: sed/compile.c:189
msgid "\":\" lacks a label"
-msgstr "\":\" nimiö puuttuu"
+msgstr "â€:â€:ltä puuttuu nimiö"
#: sed/compile.c:191
msgid "recursive escaping after \\c not allowed"
-msgstr "rekursiivinen koodinvaihto ei ole sallittu merkin \\c jälkeen"
+msgstr "rekursiivinen ohjaussarja ei ole sallittu \\c:n jälkeen"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w-komennot on poistettu käytöstä sandbox-tilassa"
#: sed/compile.c:215
#, c-format
@@ -530,7 +507,7 @@ msgstr "%s: -e lauseke #%lu, merkki %lu: %s\n"
#: sed/compile.c:1607
#, c-format
msgid "can't find label for jump to `%s'"
-msgstr "nimikettä hypylle kohteeseen â€%s†ei löydy"
+msgstr "nimiötä hypylle kohteeseen â€%s†ei löydy"
#: sed/execute.c:253 sed/execute.c:270
#, c-format
@@ -545,33 +522,33 @@ msgstr "%s: syötteen %s lukeminen epäonnistui: %s\n"
#: sed/execute.c:587
#, c-format
msgid "couldn't edit %s: is a terminal"
-msgstr "kohteen %s muokkaaminen epäonnistui: se on pääte"
+msgstr "tiedoston %s muokkaaminen epäonnistui: on pääte"
#: sed/execute.c:592
#, c-format
msgid "couldn't edit %s: not a regular file"
-msgstr "kohteen %s muokkaaminen epäonnistui: se ei ole tavallinen tiedosto"
+msgstr "tiedoston %s muokkaaminen epäonnistui: ei ole tavallinen tiedosto"
#: sed/execute.c:603
#, c-format
msgid "%s: warning: failed to set default file creation context to %s: %s"
msgstr ""
-"%s: varoitus: oletustiedostonluontikontekstin asettaminen epäonnistui "
-"kohteeseen %s: %s"
+"%s: varoitus: oletustiedostonluontikontekstin asettaminen tiedostolle %s "
+"epäonnistui: %s"
#: sed/execute.c:611
#, c-format
msgid "%s: warning: failed to get security context of %s: %s"
-msgstr "%s: varoitus: ei saatu turvakontekstia kohteesta %s: %s"
+msgstr "%s: varoitus: ei saatu tiedoston %s turvakontekstia: %s"
#: sed/execute.c:630 sed/utils.c:188
#, c-format
msgid "couldn't open temporary file %s: %s"
-msgstr "Väliaikaistiedoston %s avaaminen epäonnistui: %s"
+msgstr "väliaikaistiedoston %s avaaminen epäonnistui: %s"
#: sed/execute.c:1167 sed/execute.c:1366
msgid "error in subprocess"
-msgstr "virhe lapsiprosessissa"
+msgstr "virhe aliprosessissa"
#: sed/execute.c:1169
msgid "option `e' not supported"
@@ -587,56 +564,72 @@ msgstr "ei syötetiedostoja"
#: sed/regexp.c:40
msgid "no previous regular expression"
-msgstr "ei aikaisempaa säännöllistä lauseketta"
+msgstr "ei edellistä säännöllistä lauseketta"
#: sed/regexp.c:125
#, c-format
msgid "invalid reference \\%d on `s' command's RHS"
-msgstr "virheellinen viittaus \\%d komennon â€s†oikealla puolella"
+msgstr "virheellinen viittaus \\%d â€sâ€-komennon oikealla puolella"
#: sed/regexp.c:196
msgid "regex input buffer length larger than INT_MAX"
-msgstr ""
+msgstr "säännöllisen lausekkeen syötepuskuri on suurempi kuin INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
-#, fuzzy, c-format
+#, c-format
msgid ""
"GNU sed home page: <https://www.gnu.org/software/sed/>.\n"
"General help using GNU software: <https://www.gnu.org/gethelp/>.\n"
msgstr ""
-"GNU sed -kotisivu: <http://www.gnu.org/software/sed/>.\n"
-"Yleinen opaste GNU-ohjelmiston käytöstä: <http://www.gnu.org/gethelp/>.\n"
+"GNU sed -kotisivu: <https://www.gnu.org/software/sed/>.\n"
+"Yleisohjeita GNU-ohjelmistojen käyttöön: <https://www.gnu.org/gethelp/>.\n"
#: sed/sed.c:130
#, c-format
msgid "E-mail bug reports to: <%s>.\n"
-msgstr "Ilmoita ohjelmointivirheistä osoitteeseen: <%s>.\n"
+msgstr "Ilmoita ohjelmistovioista osoitteeseen: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Tähän sed-ohjelmaan on käännetty mukaan SELinux-tuki."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux on käytössä tässä järjestelmässä."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux on poistettu käytöstä tässä järjestelmässä."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Tähän sed-ohjelmaan ei ole käännetty mukaan SELinux-tukea."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -646,25 +639,25 @@ msgstr ""
"[syötetiedosto]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
" suppress automatic printing of pattern space\n"
msgstr ""
" -n, --quiet, --silent\n"
-" vaienna automaattinen mallitilan tulostus\n"
+" vaienna automaattinen hahmoston tulostus\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" passivoi kaikki GNU-laajennukset.\n"
+" --debug\n"
+" suorita ohjelma lisähuomautuksin\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -673,7 +666,7 @@ msgstr ""
" -e script, --expression=skripti\n"
" lisää skripti suoritettaviin komentoihin\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -683,26 +676,26 @@ msgstr ""
" -f script-file, --file=skriptitiedosto\n"
" lisää skriptitiedoston sisältö suoritettaviin komentoihin\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
" --follow-symlinks\n"
-" seuraa symbolisia linkkejä, kun prosessoidaan paikallaan\n"
+" seuraa symbolisia linkkejä, kun muokataan paikallaan\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
-" -i[SUFFIKSI], --in-place[=SUFFIKSI]\n"
-" muokkaa tiedostoja paikallaan (tekee varmuuskopion, jos "
-"SUFFIKSI on annettu)\n"
+" -i[JLIITE], --in-place[=JLIITE]\n"
+" muokkaa tiedostoja paikallaan (tekee varmuuskopion,\n"
+" jos JälkiLIITE on annettu)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -710,28 +703,28 @@ msgid ""
"specially)\n"
msgstr ""
" -b, --binary\n"
-" avaa tiedostot binääritilassa (rivinvaihtomerkkejä CR+LF ei "
-"erityisemmin prosessoida)\n"
+" avaa tiedostot binääritilassa (CR+LF-rivinvaihtoja\n"
+" ei erikseen prosessoida)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
" -l N, --line-length=N\n"
-" määrittelee halutun rivinvaihtopituuden komennolle â€lâ€\n"
+" määrittelee halutun rivinvaihtopituuden â€lâ€-komennolle\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
" disable all GNU extensions.\n"
msgstr ""
" --posix\n"
-" passivoi kaikki GNU-laajennukset.\n"
+" poista käytöstä kaikki GNU-laajennokset.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -740,9 +733,9 @@ msgid ""
msgstr ""
" -E, -r, --regexp-extended\n"
" käytä laajennettuja säännöllisiä lausekkeita skriptissä.\n"
-" (käytä siirrettävyyttä varten valitsinta POSIX -E)).\n"
+" (käytä siirrettävyyden vuoksi valitsinta POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -750,19 +743,19 @@ msgid ""
" continuous long stream.\n"
msgstr ""
" -s, --separate\n"
-" pidä tiedostoja erillisinä pikemmin kuin yhtenä,\n"
-" jatkuvana pitkänä virtana.\n"
+" käisttele tiedostot erillisinä eikä yhtenä pitkänä\n"
+" virtana.\n"
-#: sed/sed.c:172
-#, fuzzy, c-format
+#: sed/sed.c:188
+#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
" --sandbox\n"
-" toimi hiekkalaatikkotilassa.\n"
+" toimi hiekkalaatikkotilassa (poistaa e/r/w-komennot).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -771,10 +764,10 @@ msgid ""
" the output buffers more often\n"
msgstr ""
" -u, --unbuffered\n"
-" lataa syötetiedostoista minimimäärä dataa ja tyhjennä\n"
+" lataa syötetiedostoista vähimmäismäärä dataa ja huuhdo\n"
" tulostepuskurit useammin\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -783,17 +776,17 @@ msgstr ""
" -z, --null-data\n"
" erottele rivit NUL-merkeillä\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help näytä tämä opaste ja poistu\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version tulosta versiotiedot ja poistu\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -804,27 +797,24 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Jos valitsimia â€-eâ€, â€--expressionâ€, â€-fâ€, tai â€--file†ei ole annettu, "
-"silloin\n"
-"ensimmäistä ei-valitsinargumenttia pidetään tulkittavana sed-skriptinä. "
-"Kaikki\n"
-"jäljelle jäävät argumentit ovat syötetiedostojen nimiä; jos syötetiedostoja "
-"ei\n"
-"ole määritelty, luetaan vakiosyötettä.\n"
+"Jos valitsimia â€-eâ€, â€--expressionâ€, â€-fâ€, tai â€--file†ei ole annettu,\n"
+"ensimmäistä ei-valitsinargumenttia pidetään tulkittavana sed-skriptinä.\n"
+"Kaikki jäljelle jäävät argumentit ovat syötetiedostojen nimiä; jos\n"
+"syötetiedostoja ei ole annettu, luetaan vakiosyötettä.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "binääritilan asettaminen vakiosyötteelle epäonnistui"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "binääritilan asettaminen vakiotulosteelle epäonnistui"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
msgid "cannot remove %s: %s"
-msgstr "kohteen %s poistaminen epäonnistui: %s"
+msgstr "tiedoston %s poistaminen epäonnistui: %s"
#: sed/utils.c:146
#, c-format
@@ -839,14 +829,14 @@ msgstr "kohteeseen %s liittyminen epäonnistui: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "binääritilan asettaminen tiedostolle â€%s†epäonnistui"
#: sed/utils.c:207
#, c-format
msgid "couldn't write %llu item to %s: %s"
msgid_plural "couldn't write %llu items to %s: %s"
-msgstr[0] "%llu kohteen kirjoittaminen tulosteeseen %s epäonnistui: %s"
-msgstr[1] "%llu kohteen kirjoittaminen tulosteeseen %s epäonnistui: %s"
+msgstr[0] "%llu alkion kirjoittaminen tulosteeseen %s epäonnistui: %s"
+msgstr[1] "%llu alkion kirjoittaminen tulosteeseen %s epäonnistui: %s"
#: sed/utils.c:219 sed/utils.c:238
#, c-format
@@ -861,20 +851,15 @@ msgstr "symbolisen linkin %s seuraaminen epäonnistui: %s"
#: sed/utils.c:370
#, c-format
msgid "cannot stat %s: %s"
-msgstr "stat %s-käskyn suorittaminen epäonnistui: %s"
+msgstr "tiedoston %s tilan lukeminen epäonnistui: %s"
#: sed/utils.c:400
#, c-format
msgid "cannot rename %s: %s"
-msgstr "kohteen %s nimeäminen uudelleen epäonnistui: %s"
+msgstr "tiedoston %s uudelleennimeäminen epäonnistui: %s"
-#~ msgid ""
-#~ " -R, --regexp-perl\n"
-#~ " use Perl 5's regular expressions syntax in the script.\n"
-#~ msgstr ""
-#~ " -R, --regexp-perl\n"
-#~ " käytä Perl 5:n mukaista säännöllisten lauseiden\n"
-#~ " syntaksia skriptissä.\n"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s-kotisivu: <https://www.gnu.org/software/%s/>\n"
#~ msgid "%s: option '--%s' doesn't allow an argument\n"
#~ msgstr "%s: valitsin ’--%s’ ei salli argumenttia\n"
@@ -891,6 +876,14 @@ msgstr "kohteen %s nimeäminen uudelleen epäonnistui: %s"
#~ msgid "%s: option '-W %s' requires an argument\n"
#~ msgstr "%s: valitsin ’-W %s’ vaatii argumentin\n"
+#~ msgid ""
+#~ " -R, --regexp-perl\n"
+#~ " use Perl 5's regular expressions syntax in the script.\n"
+#~ msgstr ""
+#~ " -R, --regexp-perl\n"
+#~ " käytä Perl 5:n mukaista säännöllisten lauseiden\n"
+#~ " syntaksia skriptissä.\n"
+
#~ msgid "cannot specify modifiers on empty regexp"
#~ msgstr ""
#~ "määriteosien määritteleminen tyhjään säännölliseen lausekkeeseen "
diff --git a/po/fr.gmo b/po/fr.gmo
index 13864a3..e3d9784 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index d3fc92b..fef4aca 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,8 +1,8 @@
# French translation of GNU sed.
# This file is distributed under the same license as the sed package.
-# Copyright (C) 2017 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
# Gaël Quéri <gael@lautre.net>, 1998.
-# Frédéric Marchal <fmarchal@perso.be>, 2018
+# Frédéric Marchal <fmarchal@perso.be>, 2020
#
# Gaël Quéri: J'ai préféré utiliser le terme <<Expression régulière>> plutôt
# qu'<<expression rationnelle>> car celui-là est moins déroutant
@@ -10,10 +10,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-15 20:04+0100\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-12 19:23+0100\n"
"Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@@ -32,39 +32,39 @@ msgstr "erreur d'écriture"
msgid "preserving permissions for %s"
msgstr "préserve les permissions de %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "[ non appariée"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "classe de caractères invalide"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "la syntaxe d'une classe de caractères est [[:space:]] et non [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "séquence d'échappement \\ non terminée"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "contenu de \\{\\} invalide"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "expression régulière trop grande"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "( non appariée"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "aucune syntaxe spécifiée"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ") non appariée"
@@ -208,7 +208,7 @@ msgstr "Expression régulière trop grande"
msgid "Unmatched ) or \\)"
msgstr ") ou \\) non apparié"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Pas d'expression régulière précédente"
@@ -234,37 +234,33 @@ msgstr "Empaqueté par %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Licence GPLv3+: GNU GPL version 3 ou ultérieure <https://www.gnu.org/"
-"licenses/gpl-3.0.fr.html>.\n"
+"Licence GPLv3+: GNU GPL version 3 ou ultérieure <%s>.\n"
"Ceci est un logiciel libre: vous êtes libre de le modifier et de le "
"redistribuer.\n"
"Il n'y a AUCUNE GARANTIE dans les limites permises par la loi.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Écrit par %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Écrit par %s et %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Écrit par %s, %s et %s.\n"
@@ -272,7 +268,7 @@ msgstr "Écrit par %s, %s et %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -284,7 +280,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -296,7 +292,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -308,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -320,7 +316,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -334,7 +330,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -348,7 +344,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -363,36 +359,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Rapportez les anomalies à: %s\n"
"Rapportez les erreurs de traduction à <traduc@traduc.org>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Rapportez les bogues %s à: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "page d'accueil de %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "page d'accueil de %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Aide générale sur l'utilisation des logiciels GNU: <https://www.gnu.org/help/"
-"gethelp.fr.html>.\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Aide générale sur l'utilisation des logiciels GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -596,27 +583,27 @@ msgstr ""
"la taille du tampon d'entrée d'expression régulière est plus grand que "
"INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -636,6 +623,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Envoyez les rapports d'anomalies par mail à: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Ce programme sed a été compilé pour supporter SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux est activé sur ce système."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux est désactivé sur ce système."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Ce programme sed a été compilé sans support de SELinux"
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -645,7 +648,7 @@ msgstr ""
"[fichier-d'entrée]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -654,7 +657,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" supprimer l'écriture automatique de l'espace des motifs\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -663,7 +666,7 @@ msgstr ""
" --debug\n"
" annoter l'exécution du programme\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -672,7 +675,7 @@ msgstr ""
" -e script, --expression=script\n"
" ajouter le script aux commandes à exécuter\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -683,7 +686,7 @@ msgstr ""
" ajouter le contenu de fichier-script aux commandes\n"
" à exécuter\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -692,7 +695,7 @@ msgstr ""
" --follow-symlinks\n"
" suivre les liens symboliques pendant le traitement\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -702,7 +705,7 @@ msgstr ""
" éditer les fichiers à leur place (fait une\n"
" sauvegarde si le SUFFIXE est fourni)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -713,7 +716,7 @@ msgstr ""
" ouvrir les fichiers en mode binaire (CR+LF n'ont pas de "
"traitement spécial)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -723,7 +726,7 @@ msgstr ""
" spécifier la longueur de coupure de ligne désirée pour la\n"
" commande « l »\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -732,7 +735,7 @@ msgstr ""
" --posix\n"
" désactiver toutes les extensions GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -744,7 +747,7 @@ msgstr ""
" étendues dans le script.\n"
" (utilisez -E pour la portabilité).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -755,7 +758,7 @@ msgstr ""
" considérer les fichiers comme séparés plutôt que comme un\n"
" simple flux long et continu.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -764,7 +767,7 @@ msgstr ""
" --sandbox\n"
" opère en mode sandbox (désactive les commandes e/r/w)..\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -777,7 +780,7 @@ msgstr ""
" fichiers d'entrée et écrire les tampons de sortie plus\n"
" souvent sur le disque\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -786,18 +789,18 @@ msgstr ""
" -z, --null-data\n"
" séparer les lignes avec un caractère NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help afficher cette aide et sortir\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
" --version afficher les informations de version du logiciel et sortir\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -815,11 +818,11 @@ msgstr ""
"est lue.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "impossible de passer en mode binaire sur STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "impossible de passer en mode binaire sur STDOUT"
@@ -870,6 +873,9 @@ msgstr "impossible de faire un appel système « stat » sur le fichier %s: %s
msgid "cannot rename %s: %s"
msgstr "impossible de renommer %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "page d'accueil de %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/ga.gmo b/po/ga.gmo
index 5fa2e62..c35ff80 100644
--- a/po/ga.gmo
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
index 70adbb8..bd99482 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.4.104\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2018-03-24 11:04-0500\n"
"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
@@ -28,40 +28,40 @@ msgstr "earráid scríofa"
msgid "preserving permissions for %s"
msgstr "ceadanna %s á gcaomhnú"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "[ corr"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "aicme charachtair neamhbhailí"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
"is é [[:space:]] an chomhréir cheart ar aicme charactair, in áit [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "éálúchán \\ gan críochnú"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "ábhar neamhbhailí idir \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "slonn ionadaíochta rómhór"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "( corr"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "níor sonraíodh aon chomhréir"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ") corr"
@@ -206,7 +206,7 @@ msgstr "Slonn ionadaíochta rómhór"
msgid "Unmatched ) or \\)"
msgstr ") nó \\) corr"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Níl aon slonn ionadaíochta roimhe seo"
@@ -232,14 +232,13 @@ msgstr "Pacáistithe ag %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí <https://gnu.org/licenses/"
@@ -249,19 +248,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Scríofa ag %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Scríofa ag %s agus %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Scríofa ag %s, %s, agus %s.\n"
@@ -269,7 +268,7 @@ msgstr "Scríofa ag %s, %s, agus %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -281,7 +280,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -293,7 +292,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +316,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -331,7 +330,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -345,7 +344,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -360,32 +359,26 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"Seol tuairiscí ar fhabhtanna chuig: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Tuairiscigh fabhtanna %s chuig: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Leathanach baile %s: <%s>\n"
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Leathanach baile %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr "Cabhair ghinearálta le bogearraí GNU: <https://www.gnu.org/gethelp/>\n"
#: sed/compile.c:146
@@ -588,27 +581,27 @@ msgstr "tagairt neamhbhailí \\%d ar dheis ordú `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr "fad an mhaoláin ionchurtha níos mó ná INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -627,6 +620,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Seol tuairiscí fabhtanna chuig: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -635,7 +644,7 @@ msgstr ""
"Úsáid: %s [ROGHA]... {script-mura-bhfuil-script-eile} [inchomhad]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -644,7 +653,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" stop priontáil uathoibríoch den spás patrúin\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -653,7 +662,7 @@ msgstr ""
" --posix\n"
" díchumasaigh gach feabhsúchán GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -662,7 +671,7 @@ msgstr ""
" -e script, --expression=script\n"
" cuir an script leis na horduithe le rith\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -672,7 +681,7 @@ msgstr ""
" -f comhad-script, --file=comhad-script\n"
" cuir na línte i `comhad-script' leis na horduithe le rith\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -682,7 +691,7 @@ msgstr ""
" lean naisc shiombalacha má phróiseáiltear an comhad san\n"
" áit a bhfuil sé\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -692,7 +701,7 @@ msgstr ""
" athraigh na comhaid féin (agus déan cúltaca má tá IARMHÃR "
"ann)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -704,7 +713,7 @@ msgstr ""
"+LFanna\n"
" ar bhealach speisialta)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -713,7 +722,7 @@ msgstr ""
" -l N, --line-length=N\n"
" ceap an fad timfhillte le haghaidh an ordaithe `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -722,7 +731,7 @@ msgstr ""
" --posix\n"
" díchumasaigh gach feabhsúchán GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -733,7 +742,7 @@ msgstr ""
" úsáid sloinn ionadaíochta feabhsaithe sa script.\n"
" (ar mhaithe le hinaistritheacht, úsáid POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -744,7 +753,7 @@ msgstr ""
" próiseáil gach comhad ar leith, seachas iad a phróiséail\n"
" mar shruth fada amháin.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -753,7 +762,7 @@ msgstr ""
" --sandbox\n"
" úsáid sed i mbosca gainimh (díchumasaigh orduithe e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -766,7 +775,7 @@ msgstr ""
"sruthlaigh\n"
" na maoláin aschuir níos minice\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -775,17 +784,17 @@ msgstr ""
" -z, --null-data\n"
" carachtair NUL idir línte\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help taispeáin an chabhair seo agus scoir\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version taispeáin eolas faoin leagan agus scoir\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -802,11 +811,11 @@ msgstr ""
"léigh ón ghnáth-ionchur.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
@@ -860,6 +869,9 @@ msgstr "ní féidir %s a 'stat': %s"
msgid "cannot rename %s: %s"
msgstr "ní féidir %s a athainmniú: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Leathanach baile %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 5e4290a..29b2ed8 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 139ddf3..38fb8ca 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.2\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2016-08-07 17:31+0200\n"
"Last-Translator: Francisco Javier Tsao Santín <tsao@members.fsf.org>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
@@ -28,42 +28,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Nome de clase de caracteres non válido"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Contido de \\{\\} non válido"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Expresión regular grande de máis"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -209,7 +209,7 @@ msgstr "Expresión regular grande de máis"
msgid "Unmatched ) or \\)"
msgstr ") ou \\) sen parella"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Non hai unha expresión regular anterior"
@@ -235,30 +235,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -266,7 +265,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -276,7 +275,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -286,7 +285,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -296,7 +295,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -306,7 +305,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +316,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -328,7 +327,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -340,31 +339,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"Páxina principal de GNU sed: <http://www.gnu.org/software/sed/>.\n"
"Axuda xeral usando software GNU: <http://www.gnu.org/gethelp/>.\n"
@@ -567,27 +559,27 @@ msgstr "referencia \\%d non válida no lado dereito do comando `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -606,6 +598,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -613,7 +621,7 @@ msgid ""
msgstr ""
"Uso: %s [OPCIÓN]... {script-só-sen-outro-script} [ficheiro-de-entrada]...\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -622,7 +630,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" suprime a visualización automática do espacio de patróns\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -631,7 +639,7 @@ msgstr ""
" --posix\n"
" desactiva tódalas extensións GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -640,7 +648,7 @@ msgstr ""
"-e script, --expression=script\n"
" engade script ás instruccións que serán executadas\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -651,7 +659,7 @@ msgstr ""
" engade o contido do ficheiro do script ás instruccións que "
"serán executadas\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -660,7 +668,7 @@ msgstr ""
" --follow-symlinks\n"
" segue ligazóns simbólicas cando se procesan no seu sitio\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -670,7 +678,7 @@ msgstr ""
" edita ficheiros no seu sitio (fai copia de seguridade se se "
"indica un SUFIXO)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -681,7 +689,7 @@ msgstr ""
" ficheiros abertos en modo binario (non se procesan de xeito "
"especial CR+LFs)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -691,7 +699,7 @@ msgstr ""
" especifica a lonxitude de axuste da liña desexado para a "
"instrucción `l' \n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -700,7 +708,7 @@ msgstr ""
" --posix\n"
" desactiva tódalas extensións GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -710,7 +718,7 @@ msgstr ""
" -r, --regexp-extended\n"
" usa a sintaxe extendida de expresións regulares no script.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -721,7 +729,7 @@ msgstr ""
" trata os ficheiros coma separados no canto de coma unha\n"
" longa tira de caracteres continua.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, fuzzy, c-format
msgid ""
" --sandbox\n"
@@ -730,7 +738,7 @@ msgstr ""
" -z, --null-data\n"
" separa liñas por caracteres NUL\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -742,7 +750,7 @@ msgstr ""
" carga cantidades mínimas de datos dos ficheiros de entrada\n"
" e baleira os buffers de saída máis decote\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -751,17 +759,17 @@ msgstr ""
" -z, --null-data\n"
" separa liñas por caracteres NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help amosa esta axuda e sae\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version amosa-la información da versión e saír\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -781,11 +789,11 @@ msgstr ""
"ficheiros de entrada, entón se le a entrada standard.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/he.gmo b/po/he.gmo
index 06f475e..0a01cba 100644
--- a/po/he.gmo
+++ b/po/he.gmo
Binary files differ
diff --git a/po/he.po b/po/he.po
index 7356d2b..972d25c 100644
--- a/po/he.po
+++ b/po/he.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 3.02.80\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2001-08-04 20:37+0300\n"
"Last-Translator: Eli Zaretskii <eliz@gnu.org>\n"
"Language-Team: Hebrew <eliz@gnu.org>\n"
@@ -25,39 +25,39 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr ""
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr ""
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr ""
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -204,7 +204,7 @@ msgstr ""
msgid "Unmatched ) or \\)"
msgstr "âåæ-ïá åì ïéàù `{'"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr ""
@@ -230,30 +230,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -261,7 +260,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -271,7 +270,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -281,7 +280,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -291,7 +290,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -301,7 +300,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -312,7 +311,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -323,7 +322,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -335,30 +334,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
#: sed/compile.c:146
@@ -573,27 +566,27 @@ msgstr ""
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -610,34 +603,50 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
" suppress automatic printing of pattern space\n"
msgstr ""
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
" add the script to the commands to be executed\n"
msgstr ""
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -645,21 +654,21 @@ msgid ""
"executed\n"
msgstr ""
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -667,21 +676,21 @@ msgid ""
"specially)\n"
msgstr ""
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
" disable all GNU extensions.\n"
msgstr ""
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -689,7 +698,7 @@ msgid ""
" (for portability use POSIX -E).\n"
msgstr ""
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -697,14 +706,14 @@ msgid ""
" continuous long stream.\n"
msgstr ""
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -713,24 +722,24 @@ msgid ""
" the output buffers more often\n"
msgstr ""
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr ""
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -741,11 +750,11 @@ msgid ""
"\n"
msgstr ""
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 2d4b760..fd86cdc 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index e8c8287..f2fb297 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -4,13 +4,13 @@
#
# Denis Lacković <delacko@fly.srk.fer.hr>, 2002.
# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
-# Božidar Putanec <bozidarp@yahoo.com>, 2018.
+# Božidar Putanec <bozidarp@yahoo.com>, 2018, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: sed-4.5.48\n"
+"Project-Id-Version: sed-4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-13 12:52-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 18:59-0800\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
@@ -20,7 +20,7 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 19.04.3\n"
#: lib/closeout.c:122
msgid "write error"
@@ -31,39 +31,39 @@ msgstr "greška pisanja"
msgid "preserving permissions for %s"
msgstr "zadržavaju se prava pristupa za %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "nesparena ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "nevaljana znakovna klasa"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "sintaksa znakovne klase je [[:space]], a ne [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "nedovršena \\ escape sekvencija"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "nevaljani sadržaj od \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regularni izraz je preveliki"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "nesparena ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "sintaksa nije navedena"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "nesparena )"
@@ -207,7 +207,7 @@ msgstr "Regularni izraz je prevelik"
msgid "Unmatched ) or \\)"
msgstr "Nesparena ) ili \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Nema prethodnog regularnog izraza"
@@ -233,36 +233,33 @@ msgstr "Pakirao %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
"Licencija:\n"
-"GPLv3+: GNU GPL inaÄica 3 ili kasnija <https://gnu.org/licenses/gpl.html>.\n"
+"GPLv3+: GNU GPL inaÄica 3 ili novija <%s>.\n"
"Ovo je slobodan softver: slobodno ga mijenjajte i dijelite.\n"
"NEMA JAMSTVA do granica dopuštenih zakonom.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Napisao %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Napisali %s i %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Napisali %s, %s i %s.\n"
@@ -270,7 +267,7 @@ msgstr "Napisali %s, %s i %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -282,7 +279,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -294,7 +291,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -306,7 +303,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -332,7 +329,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -346,7 +343,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -361,35 +358,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
-"Pogreške (bugs) na engleskom (LC_ALL=C) prijavite na <%s>.\n"
-"Primjedbe i pogreške u prijevodu prijavite na <lokalizacija@linux.hr>.\n"
+"Pogreške (bugs) na engleskom (LC_ALL=C) prijavite na: <%s>\n"
+"Primjedbe i pogreške u prijevodu prijavite na: <lokalizacija@linux.hr>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Prijavite greške „%s“ na <%s>\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Web stranica od „%s“: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Web stranica od „%s“: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Općenita pomoć za korištenje GNU softvera: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Općenita pomoć za korištenje GNU softvera: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -591,27 +580,27 @@ msgid "regex input buffer length larger than INT_MAX"
msgstr ""
"duljina ulaznog međuspremnika regularnog izraza (regex) je veća od INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -627,9 +616,25 @@ msgstr ""
#: sed/sed.c:130
#, c-format
msgid "E-mail bug reports to: <%s>.\n"
-msgstr "Pogreške u ovom programu javite na: <%s>.\n"
+msgstr "Pogreške u ovom programu prijavite na: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Ovaj sed program podržava SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux je omogućen na ovom sustavu."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux nije omogućen na ovom sustavu."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Ovaj sed program ne podržava SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -638,7 +643,7 @@ msgstr ""
"Uporaba: %s [OPCIJA]... {SKRIPTA-samo-kad-je-jedina} [ulazna-datoteka]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -647,7 +652,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" izostavi automatsko ispisivanje prostora uzoraka\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -656,7 +661,7 @@ msgstr ""
" --debug\n"
" komentira izrvršavanje programa\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -665,7 +670,7 @@ msgstr ""
" -e script, --expression=SKRIPT\n"
" doda SKRIPTU naredbama koje će se izvršiti\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -675,26 +680,26 @@ msgstr ""
" -f datoteka-skripte, --file=SKRIPT-DATOTEKA\n"
" doda sadržaj SKRIPT-DATOTEKE naredbama koje će se izvršiti\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
" --follow-symlinks\n"
-" slijedi simboliÄke veze (kad radi na-mjestu (in-place))\n"
+" slijedi simboliÄke veze (kad radi u-mjestu (in-place))\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
" -i[SUFIKS], --in-place[=SUFIKS]\n"
-" izravno, na-mjestu, mijenja ulaznu datoteku\n"
+" izravno, u-mjestu, mijenja ulaznu datoteku\n"
" (napravi osiguranje ako je navedeni SUFIKS)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -705,7 +710,7 @@ msgstr ""
" otvori datoteke i obradi ih kao da su binarne\n"
" (CR+LF ne obrađuju se specijalno)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -714,7 +719,7 @@ msgstr ""
" -l N, --line-length=BROJ\n"
" na poziciji BROJ prelamaju se redci za „l“ naredbu\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -723,7 +728,7 @@ msgstr ""
" --posix\n"
" onemogućuje sva GNU proširenja\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -734,7 +739,7 @@ msgstr ""
" koristi proširene regularne izraze u skripti\n"
" (za prenosivost rabite POSIX opciju -E)\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -742,9 +747,10 @@ msgid ""
" continuous long stream.\n"
msgstr ""
" -s, --separate\n"
-" smatra datoteke kao zasebne a ne kao jedan dugaÄki stream\n"
+" smatra datoteke kao zasebne, a ne kao jedan dugaÄak tok "
+"podataka\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -754,7 +760,7 @@ msgstr ""
" radi u sandbox (izoliranom) naÄinu (onemogući e/r/w "
"naredbe)\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -766,7 +772,7 @@ msgstr ""
" uÄitava minimalne koliÄine podataka iz ulaznih datoteka\n"
" i Äešće prazni izlazne meÄ‘uspremnike\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -775,17 +781,17 @@ msgstr ""
" -z, --null-data\n"
" retke odvaja s NUL znakom\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help pokaže ovu pomoć i završi\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version pokaže informacije o inaÄici ovog programa i zavrÅ¡i\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -804,11 +810,11 @@ msgstr ""
"datoteka, Äita se standardni ulaz.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "nije uspjelo postaviti STDIN u binarni naÄin rada"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "nije uspjelo postaviti STDOUT u binarni naÄin rada"
@@ -860,6 +866,9 @@ msgstr "ne može se dobiti status od %s: %s"
msgid "cannot rename %s: %s"
msgstr "ne može se preimenovati %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Web stranica od „%s“: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/hu.gmo b/po/hu.gmo
index e2ed711..18cc2d4 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index a02b1c1..3a2175a 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.2.177\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2018-03-20 22:12+0100\n"
"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -31,39 +31,39 @@ msgstr "íráshiba"
msgid "preserving permissions for %s"
msgstr "%s jogosultságainak megtartása"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "kiegyensúlyozatlan ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "érvénytelen karakterosztály"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "a karakterosztály szintaxisa [[:space:]], nem [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "befejezetlen \\ escape"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "a \\{\\} tartalma érvénytelen"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "a szabályos kifejezés túl nagy"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "kiegyensúlyozatlan ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "nincs szintaxis megadva"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "kiegyensúlyozatlan )"
@@ -207,7 +207,7 @@ msgstr "Túl nagy reguláris kifejezés"
msgid "Unmatched ) or \\)"
msgstr "Nincs párban ) vagy \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Nincsen előző reguláris kifejezés"
@@ -233,15 +233,13 @@ msgstr "Csomagolta: %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"A licenc GPLv3+: a GNU GPL 3. vagy újabb változata <http://gnu.org/licenses/"
@@ -251,19 +249,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Ãrta: %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Ãrta: %s és %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Ãrta: %s, %s és %s.\n"
@@ -271,7 +269,7 @@ msgstr "Ãrta: %s, %s és %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -283,7 +281,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +293,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +305,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -319,7 +317,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -333,7 +331,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -347,7 +345,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -362,33 +360,26 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"A hibák a(z) %s címen jelenthetők.\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "A(z) %s hibái a(z) %s címen jelenthetők.\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "A(z) %s honlapja: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, fuzzy, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "A %s honlapja: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"Ãltalános segítség a GNU szoftverek használatához: <http://www.gnu.org/"
"gethelp/>\n"
@@ -591,27 +582,27 @@ msgstr "érvénytelen hivatkozás (\\%d) az „s†parancs RHS-ére"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -631,6 +622,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Hibajelentést a következő címre küldhet: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -640,7 +647,7 @@ msgstr ""
"[bemeneti fájl]…\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -649,7 +656,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" a minta tér automatikus kiírásának elnyomása\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -658,7 +665,7 @@ msgstr ""
" --posix\n"
" minden GNU kiterjesztés letiltása.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -667,7 +674,7 @@ msgstr ""
" -e parancsfájl, --expression=parancsfájl\n"
" parancsfájl hozzáadása a végrehajtandó parancsokhoz\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -679,7 +686,7 @@ msgstr ""
"végrehajtandó\n"
" parancsokhoz\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -688,7 +695,7 @@ msgstr ""
" --follow-symlinks\n"
" szimbolikus linkek követése helyben feldolgozáskor\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -698,7 +705,7 @@ msgstr ""
" fájlok szerkesztése helyben (biztonsági mentést készít, ha\n"
" az UTÓTAG meg van adva)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -709,7 +716,7 @@ msgstr ""
" fájlok megnyitása bináris módban (a CR+LF karakterek nem\n"
" lesznek speciálisan feldolgozva)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -718,7 +725,7 @@ msgstr ""
" -l N, --line-length=N\n"
" a kívánt sortörési hossz megadása az „l†parancshoz\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -727,7 +734,7 @@ msgstr ""
" --posix\n"
" minden GNU kiterjesztés letiltása.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -739,7 +746,7 @@ msgstr ""
" parancsfájlban (a hordozhatóságért használja a -E "
"kapcsolót)\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -750,7 +757,7 @@ msgstr ""
" a fájlokat külön kezeli egyetlen folyamatos, hosszú folyam\n"
" helyett.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, fuzzy, c-format
msgid ""
" --sandbox\n"
@@ -759,7 +766,7 @@ msgstr ""
" --sandbox\n"
" működés homokozó módban.\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -772,7 +779,7 @@ msgstr ""
"a\n"
" kimeneti pufferek gyakori ürítése\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -781,17 +788,17 @@ msgstr ""
" -z, --null-data\n"
" sorok elválasztása NULL karakterekkel\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help kiírja ezt a súgót és kilép\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version kiírja a verzióinformációt és kilép\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -808,11 +815,11 @@ msgstr ""
"bemenetről olvas.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
@@ -862,6 +869,10 @@ msgstr "nem lehet stat-olni: %s: %s"
msgid "cannot rename %s: %s"
msgstr "nem lehet átnevezni: %s: %s"
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "A %s honlapja: <http://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/id.gmo b/po/id.gmo
index 5f4a256..7a9ba6f 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index f4bedc1..f8253c3 100644
--- a/po/id.po
+++ b/po/id.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2014-08-04 10:15+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -29,42 +29,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Nama kelas karakter tidak valid"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Isi \\{\\} tidak valid"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Reguler ekspresi terlalu besar"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -210,7 +210,7 @@ msgstr "Reguler ekspresi terlalu besar"
msgid "Unmatched ) or \\)"
msgstr ") atau \\) tidak sesuai"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Tidak ada reguler ekspresi sebelumnya"
@@ -236,30 +236,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -267,7 +266,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -277,7 +276,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -287,7 +286,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -297,7 +296,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +306,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +317,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -329,7 +328,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -341,31 +340,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"GNU sed home page: <http://www.gnu.org/software/sed/>.\n"
"Bantuan umum dalam menggunakan aplikasi GNU: <http://www.gnu.org/gethelp/>.\n"
@@ -567,27 +559,27 @@ msgstr "referensi tidak valid \\%d pada perintah `s' RHS"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -606,6 +598,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -615,7 +623,7 @@ msgstr ""
"masukan]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -624,7 +632,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" tekan penampilan otomatis dari pola ruang\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -633,7 +641,7 @@ msgstr ""
" --posix\n"
" non-aktifkan seluruh ekstensi GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -642,7 +650,7 @@ msgstr ""
" -e script, --expression=script\n"
" tambahkan script ke perintah untuk dijalankan\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -653,7 +661,7 @@ msgstr ""
" tambahkan isi dari berkas-script ke perintah yang akan "
"dijalankan\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -662,7 +670,7 @@ msgstr ""
" --follow-symlinks\n"
" ikuti symlinks ketika pemrosesan di tempat\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -672,7 +680,7 @@ msgstr ""
" ubah berkas di tempat (buat backup jika ekstensi "
"diberikan)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -683,7 +691,7 @@ msgstr ""
" buka berkas dalam mode binari (CR+LF tidak diproses secara "
"spesial)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -693,7 +701,7 @@ msgstr ""
" spesifikasikan panjang line-wrap yang diinginkan untuk "
"perintah `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -702,7 +710,7 @@ msgstr ""
" --posix\n"
" non-aktifkan seluruh ekstensi GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -712,7 +720,7 @@ msgstr ""
" -r, --regexp-extended\n"
" gunakan ekspresi ekstensi regular dalam skrip.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -724,14 +732,14 @@ msgstr ""
"sebuah\n"
" stream tunggal panjang berkelanjutan.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -744,24 +752,24 @@ msgstr ""
"flush\n"
" buffer keluaran lebih sering\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help tampilkan pesan bantuan dan keluar\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version keluarkan informasi versi dan keluar\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -779,11 +787,11 @@ msgstr ""
"berkas masukan yang dispesifikasikan, maka standar masukan yang dibaca.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/it.gmo b/po/it.gmo
index 0785444..add7e82 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 5e24071..f80ed4e 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.0\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2008-01-16 12:44+0100\n"
"Last-Translator: Paolo Bonzini <bonzini@gnu.org>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -27,45 +27,45 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
# lib/regcomp.c:191
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Nome non valido per una classe di caratteri"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
# lib/regcomp.c:209
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "numero di ripetizioni specificato tra graffe non valido"
# lib/regcomp.c:224
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Espressione regolare troppo grande"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -230,7 +230,7 @@ msgid "Unmatched ) or \\)"
msgstr "`)' o `\\)' non bilanciata"
# lib/regcomp.c:658 sed/regex.c:47
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Occorre un'espressione regolare precedente"
@@ -256,30 +256,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -287,7 +286,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -297,7 +296,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +306,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +316,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -327,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -338,7 +337,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -349,7 +348,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -361,30 +360,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
# sed/compile.c:166
@@ -619,27 +612,27 @@ msgstr "riferimento non valido \\%d nel secondo membro del comando `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -656,6 +649,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -665,7 +674,7 @@ msgstr ""
"file]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -674,7 +683,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" sopprime la stampa automatica del pattern space\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -683,7 +692,7 @@ msgstr ""
" --posix\n"
" disabilita tutte le estensioni GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -692,7 +701,7 @@ msgstr ""
" -e script, --expression=script\n"
" aggiunge lo script ai comandi da eseguire\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -703,7 +712,7 @@ msgstr ""
" aggiunge il contenuto di file-script ai comandi da "
"eseguire\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -712,7 +721,7 @@ msgstr ""
" --follow-symlinks\n"
" segue i link simbolici quando viene utilizzato -i\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -722,7 +731,7 @@ msgstr ""
" scrive il risultato sul file originale (facendo una copia\n"
" se è fornita un'estensione)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -733,7 +742,7 @@ msgstr ""
" apre i file in modo binario (lasciando le sequenze CR+LF "
"immutate)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -743,7 +752,7 @@ msgstr ""
" specifica la lunghezza delle linee generate dal comando "
"`l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -753,7 +762,7 @@ msgstr ""
" disabilita tutte le estensioni GNU.\n"
# sed/sed.c:98
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -763,7 +772,7 @@ msgstr ""
" -r, --regexp-extended\n"
" usa la sintassi di `egrep' per le espressioni regolari\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -774,14 +783,14 @@ msgstr ""
" considera i file di input come separati invece che come un\n"
" unico file lungo.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -792,24 +801,24 @@ msgstr ""
" -u, --unbuffered\n"
" carica e visualizza i dati una a pezzetti piu' piccoli\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help mostra questo aiuto ed esce\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version stampa le informazioni sulla versione ed esce\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -828,11 +837,11 @@ msgstr ""
"sono specificati file di input sarà letto lo standard input.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/ja.gmo b/po/ja.gmo
index 95bf906..025f99b 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 160d55e..d97fd63 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2010-10-21 13:04+0900\n"
"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -35,42 +35,42 @@ msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼"
msgid "preserving permissions for %s"
msgstr "%s ã®ãƒ‘ーミッションをä¿å­˜ã—ã¦ã„ã¾ã™"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "無効ãªæ–‡å­—クラスåã§ã™"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "\\{\\} ã®ä¸­èº«ãŒç„¡åŠ¹ã§ã™"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "æ­£è¦è¡¨ç¾ãŒå¤§ãã™ãŽã¾ã™"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -215,7 +215,7 @@ msgstr "æ­£è¦è¡¨ç¾ãŒå¤§ãã™ãŽã¾ã™"
msgid "Unmatched ) or \\)"
msgstr ") ã¾ãŸã¯ \\) ãŒä¸ä¸€è‡´ã§ã™"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "以å‰ã«æ­£è¦è¡¨ç¾ãŒã‚ã‚Šã¾ã›ã‚“"
@@ -241,15 +241,13 @@ msgstr "パッケージ作æˆè€…: %s\n"
msgid "(C)"
msgstr "(C)"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -259,19 +257,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "作者 %s。\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "作者 %s ãŠã‚ˆã³ %s。\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "作者 %s〠%sã€ãŠã‚ˆã³ %s。\n"
@@ -279,7 +277,7 @@ msgstr "作者 %s〠%sã€ãŠã‚ˆã³ %s。\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -291,7 +289,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -303,7 +301,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -315,7 +313,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -327,7 +325,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -341,7 +339,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -355,7 +353,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -370,35 +368,28 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"ãƒã‚°ã‚’発見ã—ãŸã‚‰ <%s> ã«å ±å‘Šã—ã¦ä¸‹ã•ã„。\n"
"翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯<translation-team-ja@lists.sourceforge.net>ã«å ±å‘Šã—ã¦ãã ã•"
"ã„。\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "%s ã®ãƒã‚°ã¯ <%s> ã«å ±å‘Šã—ã¦ãã ã•ã„。\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, fuzzy, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"GNU ソフトウェアを使用ã™ã‚‹éš›ã®ä¸€èˆ¬çš„ãªãƒ˜ãƒ«ãƒ—: <http://www.gnu.org/gethelp/>\n"
@@ -600,27 +591,27 @@ msgstr "`s' コマンドã®å³å´ã«ç„¡åŠ¹ãªå‚ç…§ \\%d ãŒã‚ã‚Šã¾ã™"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -640,6 +631,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -648,7 +655,7 @@ msgstr ""
"使用法: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -657,7 +664,7 @@ msgstr ""
"-n, --quiet, --silent\n"
" パターン空間ã®è‡ªå‹•å‡ºåŠ›ã‚’抑制ã™ã‚‹\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -666,7 +673,7 @@ msgstr ""
" --posix\n"
" å…¨ã¦ã® GNU 拡張を無効ã«ã™ã‚‹\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -675,7 +682,7 @@ msgstr ""
" -e script, --expression=script\n"
" 実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã¨ã—㦠script を追加ã™ã‚‹\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -685,7 +692,7 @@ msgstr ""
" -f script-file, --file=script-file\n"
" 実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã¨ã—㦠script-file ã®ä¸­èº«ã‚’追加ã™ã‚‹\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -694,7 +701,7 @@ msgstr ""
" --follow-symlinks\n"
" 処ç†ã®éš›ã«ãã®å ´ã§ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’辿る\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -704,7 +711,7 @@ msgstr ""
" ファイルを自体をãã®å ´ã§ç·¨é›†ã™ã‚‹ (SUFFIX ãŒä¸Žãˆã‚‰ã‚ŒãŸ\n"
" å ´åˆã¯ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—を作æˆã™ã‚‹)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -714,7 +721,7 @@ msgstr ""
" -b, --binary\n"
" ファイルをãƒã‚¤ãƒŠãƒªãƒ¢ãƒ¼ãƒ‰ã§é–‹ã (CR+LFs を特別ã«å‡¦ç†ã—ãªã„)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -723,7 +730,7 @@ msgstr ""
" -l N, --line-length=N\n"
" `l' コマンドã®è¡ŒæŠ˜ã‚Šè¿”ã—ã®é•·ã•ã‚’指定ã™ã‚‹\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -732,7 +739,7 @@ msgstr ""
" --posix\n"
" å…¨ã¦ã® GNU 拡張を無効ã«ã™ã‚‹\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -742,7 +749,7 @@ msgstr ""
" -r, --regexp-extended\n"
" スクリプトã§æ‹¡å¼µæ­£è¦è¡¨ç¾ã‚’使用ã™ã‚‹\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -753,14 +760,14 @@ msgstr ""
" 複数ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’処ç†ã™ã‚‹éš›ã«é€£ç¶šã—ãŸå˜ä¸€ã®é•·ã„ストリーム\n"
" ã¨ã—ã¦ã§ã¯ãªãã€å€‹åˆ¥ã«å–り扱ã†\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -772,24 +779,24 @@ msgstr ""
" 入力ファイルã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’ã”ãå°‘é‡ãšã¤å–ã‚Šè¾¼ã¿ã€é »ç¹ã«å‡ºåŠ›\n"
" ãƒãƒƒãƒ•ã‚¡ã«å‡ºåŠ› (flush) ã™ã‚‹\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã—ã¦çµ‚了ã™ã‚‹\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã—ã¦çµ‚了ã™ã‚‹\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -806,11 +813,11 @@ msgstr ""
"ã‚Œã¦ã„ãªã„å ´åˆã¯ã€æ¨™æº–入力ã‹ã‚‰èª­ã¿è¾¼ã¿ã¾ã™ã€‚\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
@@ -860,6 +867,10 @@ msgstr "%s ã®çŠ¶æ…‹å–å¾— (stat) ãŒã§ãã¾ã›ã‚“: %s"
msgid "cannot rename %s: %s"
msgstr "%s ã®åå‰ã‚’変更ã§ãã¾ã›ã‚“: %s"
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸: <http://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/ko.gmo b/po/ko.gmo
index bf410bf..ee93346 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 1b7581b..3e4f6ad 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,108 +1,113 @@
-# ko.po -- Korean messages for GNU sed
-# Copyright (C) 2001 Free Software Foundation, Inc.
+# Korean translation for sed.
+# This file is distributed under the same license as the sed package.
+# Copyright (C) 2001, 2019 Free Software Foundation, Inc.
# Jong-Hoon Ryu <redhat4u@netian.com>, 2001.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU sed 3.02.80\n"
+"Project-Id-Version: GNU sed 4.5.48\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2001-10-12 17:26+0900\n"
-"Last-Translator: Jong-Hoon Ryu <redhat4u@netian.com>\n"
-"Language-Team: Korean <ko@li.org>\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2019-01-17 15:04+0900\n"
+"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
+"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=EUC-KR\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.2\n"
+"X-Poedit-SourceCharset: UTF-8\n"
#: lib/closeout.c:122
msgid "write error"
-msgstr ""
+msgstr "ê¸°ë¡ ì˜¤ë¥˜"
#: lib/copy-acl.c:54
#, c-format
msgid "preserving permissions for %s"
-msgstr ""
+msgstr "%s 권한 유지"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
-msgstr ""
+msgstr "ì§ì´ 맞지 않는 [ 괄호"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
-msgstr ""
+msgstr "ìž˜ëª»ëœ ë¬¸ìž í´ëž˜ìŠ¤"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
-msgstr ""
+msgstr "ë¬¸ìž í´ëž˜ìŠ¤ 표기 ë°©ì‹ì€ [:space:]ê°€ ì•„ë‹Œ [[:space:]]입니다"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
-msgstr ""
+msgstr "ë나지 ì•Šì€ \\ ì´ìŠ¤ì¼€ì´í”„ 문ìž"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
-msgstr ""
+msgstr "ìž˜ëª»ëœ \\{\\} ë‚´ìš©"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
-msgstr ""
+msgstr "ì •ê·œ 표현ì‹ì´ 너무 ê¹ë‹ˆë‹¤"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
-msgstr ""
+msgstr "ì§ì´ 맞지 않는 ( 괄호"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
-msgstr ""
+msgstr "ë¬¸ë²•ì„ ì§€ì •í•˜ì§€ 않았습니다"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
-msgstr ""
+msgstr "ì§ì´ 맞지 않는 ) 괄호"
#: lib/error.c:195
msgid "Unknown system error"
-msgstr ""
+msgstr "알 수 없는 시스템 오류"
#: lib/getopt.c:278
#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
-msgstr ""
+msgstr "%s: '%s%s' ì˜µì…˜ì´ ëª¨í˜¸í•©ë‹ˆë‹¤\n"
#: lib/getopt.c:284
#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
-msgstr ""
+msgstr "%s: '%s%s' ì˜µì…˜ì´ ëª¨í˜¸í•©ë‹ˆë‹¤. 가능한 ê°’:"
#: lib/getopt.c:319
#, c-format
msgid "%s: unrecognized option '%s%s'\n"
-msgstr ""
+msgstr "%s: ì¸ì§€í•  수 없는 '%s%s' 옵션\n"
#: lib/getopt.c:345
#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
-msgstr ""
+msgstr "%s: '%s%s' ì˜µì…˜ì€ ì¸ìžë¥¼ 허용하지 않습니다\n"
#: lib/getopt.c:360
#, c-format
msgid "%s: option '%s%s' requires an argument\n"
-msgstr ""
+msgstr "%s: '%s%s' ì˜µì…˜ì— ì¸ìžê°€ 필요합니다\n"
#: lib/getopt.c:621
#, c-format
msgid "%s: invalid option -- '%c'\n"
-msgstr ""
+msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- '%c'\n"
#: lib/getopt.c:636 lib/getopt.c:682
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
-msgstr ""
+msgstr "%s: ì˜µì…˜ì— ì¸ìžê°€ 필요합니다 -- '%c'\n"
#: lib/obstack.c:338 lib/obstack.c:340 lib/xalloc-die.c:34
msgid "memory exhausted"
-msgstr ""
+msgstr "메모리가 바닥남"
#. TRANSLATORS:
#. Get translations for open and closing quotation marks.
@@ -127,475 +132,476 @@ msgstr ""
#. and use glyphs suitable for your language.
#: lib/quotearg.c:362
msgid "`"
-msgstr ""
+msgstr "`"
#: lib/quotearg.c:363
msgid "'"
-msgstr ""
+msgstr "'"
#: lib/regcomp.c:135
msgid "Success"
-msgstr ""
+msgstr "성공"
#: lib/regcomp.c:138
msgid "No match"
-msgstr ""
+msgstr "ì¼ì¹˜ 항목 ì—†ìŒ"
#: lib/regcomp.c:141
msgid "Invalid regular expression"
-msgstr ""
+msgstr "ìž˜ëª»ëœ ì •ê·œ 표현ì‹"
#: lib/regcomp.c:144
msgid "Invalid collation character"
-msgstr ""
+msgstr "ìž˜ëª»ëœ ì¡°í•© 문ìž"
#: lib/regcomp.c:147
msgid "Invalid character class name"
-msgstr ""
+msgstr "ìž˜ëª»ëœ ë¬¸ìž í´ëž˜ìŠ¤ ì´ë¦„"
#: lib/regcomp.c:150
msgid "Trailing backslash"
-msgstr ""
+msgstr "ë°± 슬래시 문ìžê°€ ë”°ë¼ì˜´"
#: lib/regcomp.c:153
msgid "Invalid back reference"
-msgstr ""
+msgstr "ìž˜ëª»ëœ í›„ìœ„ 참조"
#: lib/regcomp.c:156
msgid "Unmatched [, [^, [:, [., or [="
-msgstr ""
+msgstr "ì¼ì¹˜í•˜ì§€ 않는 [, [^, [:, [., [="
#: lib/regcomp.c:159
-#, fuzzy
msgid "Unmatched ( or \\("
-msgstr "`{' °¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
+msgstr "ì¼ì¹˜í•˜ì§€ 않는 ( ë˜ëŠ” \\( 괄호"
#: lib/regcomp.c:162
-#, fuzzy
msgid "Unmatched \\{"
-msgstr "`{' °¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
+msgstr "ì¼ì¹˜í•˜ì§€ 않는 \\{ 괄호"
#: lib/regcomp.c:165
msgid "Invalid content of \\{\\}"
-msgstr ""
+msgstr "ìž˜ëª»ëœ \\{\\} ë‚´ìš©"
#: lib/regcomp.c:168
msgid "Invalid range end"
-msgstr ""
+msgstr "ìž˜ëª»ëœ ë²”ìœ„ ë"
#: lib/regcomp.c:171
msgid "Memory exhausted"
-msgstr ""
+msgstr "메모리가 바닥남"
#: lib/regcomp.c:174
msgid "Invalid preceding regular expression"
-msgstr ""
+msgstr "ìž˜ëª»ëœ ì„ í–‰ ì •ê·œ 표현ì‹"
#: lib/regcomp.c:177
msgid "Premature end of regular expression"
-msgstr ""
+msgstr "ì •ê·œ í‘œí˜„ì‹ ë§ˆê° í‘œí˜„ì´ ì•žì„œìžˆìŠµë‹ˆë‹¤"
#: lib/regcomp.c:180
msgid "Regular expression too big"
-msgstr ""
+msgstr "ì •ê·œ 표현ì‹ì´ 너무 ê¹ë‹ˆë‹¤"
#: lib/regcomp.c:183
-#, fuzzy
msgid "Unmatched ) or \\)"
-msgstr "`{' °¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
+msgstr "ì¼ì¹˜í•˜ì§€ 않는 ) ë˜ëŠ” \\) 괄호"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
-msgstr ""
+msgstr "ì´ì „ ì •ê·œ í‘œí˜„ì‹ ì—†ìŒ"
#: lib/set-acl.c:46
#, c-format
msgid "setting permissions for %s"
-msgstr ""
+msgstr "%s 권한 설정"
#: lib/version-etc.c:73
#, c-format
msgid "Packaged by %s (%s)\n"
-msgstr ""
+msgstr "%sì´(ê°€) 패키징 함 (%s)\n"
#: lib/version-etc.c:76
#, c-format
msgid "Packaged by %s\n"
-msgstr ""
+msgstr "%sì´(ê°€) 패키징 함\n"
#. TRANSLATORS: Translate "(C)" to the copyright symbol
#. (C-in-a-circle), if this symbol is available in the user's
#. locale. Otherwise, do not translate "(C)"; leave it as-is.
#: lib/version-etc.c:83
msgid "(C)"
-msgstr ""
+msgstr "(C)"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
+"\n"
+"GPLv3+ ë¼ì´ì„ ìŠ¤: GNU GPL 버전 3 ì´ìƒ <https://gnu.org/licenses/gpl.html>.\n"
+"ì´ í”„ë¡œê·¸ëž¨ì€ ìžìœ  소프트웨어입니다: ìžìœ ë¡­ê²Œ 바꾸고 재배í¬í•  수 있습니다.\n"
+"ë²•ë¥ ì´ í—ˆìš©í•˜ëŠ” 모든 ë²”ìœ„ë‚´ì˜ ë³´ì¦ì€ 없습니다.\n"
+"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
-msgstr ""
+msgstr "%sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
-msgstr ""
+msgstr "%s와(ê³¼) %sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
-msgstr ""
+msgstr "%s와(ê³¼) %s, %sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"and %s.\n"
msgstr ""
+"%s와(과) %s, %s,\n"
+"%sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, and %s.\n"
msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %sì´(ê°€) 작성함.\n"
+"\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, and %s.\n"
msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, and %s.\n"
msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s,\n"
+"%sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"and %s.\n"
msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s,\n"
+"%s, %sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"%s, and %s.\n"
msgstr ""
+"%s와(과) %s, %s,\n"
+"%s, %s, %s,\n"
+"%s, %s, %sì´(ê°€) 작성함.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
"%s, %s, %s, %s,\n"
"%s, %s, and others.\n"
msgstr ""
+"%s, %s, %s,\n"
+"%s, %s, %s,\n"
+"%s, %s, %s\n"
+"외 다수가 작성함.\n"
#. TRANSLATORS: The placeholder indicates the bug-reporting address
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
+"\n"
+"버그 보고 주소: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
-msgstr ""
+msgstr "%s 버그 보고 주소: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
-msgstr ""
-
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
+msgstr "%s 홈 페ì´ì§€: <%s>\n"
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
+msgstr "GNU 소프트웨어 활용 ì¼ë°˜ ë„움ë§: <https://www.gnu.org/gethelp/>\n"
#: sed/compile.c:146
-#, fuzzy
msgid "multiple `!'s"
-msgstr "`!' °¡ Áߺ¹µÇ¾ú½À´Ï´Ù"
+msgstr "`!' 중복"
#: sed/compile.c:147
-#, fuzzy
msgid "unexpected `,'"
-msgstr "ºÒÇÊ¿äÇÑ `,' °¡ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù"
+msgstr "불필요한 `,'가 있습니다"
#: sed/compile.c:149
-#, fuzzy
msgid "invalid usage of +N or ~N as first address"
-msgstr "ù¹ø° ÁÖ¼Ò·Î '+N' ¶Ç´Â '~N' À» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
+msgstr "'+N' ë˜ëŠ” '~N'ì˜ ì²«ë²ˆì§¸ 주소 í™œìš©ì€ ìž˜ëª»ëœ ë°©ì‹ìž…니다"
#: sed/compile.c:150
-#, fuzzy
msgid "unmatched `{'"
-msgstr "`{' °¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
+msgstr "ì¼ì¹˜í•˜ì§€ 않는 `{' 괄호"
#: sed/compile.c:151
-#, fuzzy
msgid "unexpected `}'"
-msgstr "ºÒÇÊ¿äÇÑ `}' °¡ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù"
+msgstr "ì¼ì¹˜í•˜ì§€ 않는 `}' 괄호"
#: sed/compile.c:153
-#, fuzzy
msgid "extra characters after command"
-msgstr "¸í·ÉµÚ¿¡ ÇÊ¿ä¾ø´Â ¹®ÀÚµéÀÌ ÀÖ½À´Ï´Ù"
+msgstr "명령 ë’¤ì— ì¶”ê°€ 문ìžê°€ 있습니다"
#: sed/compile.c:155
msgid "expected \\ after `a', `c' or `i'"
-msgstr ""
+msgstr "`a', `c', `i' ë‹¤ìŒ \\ 문ìžê°€ 와야 합니다"
#: sed/compile.c:157
msgid "`}' doesn't want any addresses"
-msgstr "`}' ¿¡ ¾î¶°ÇÑ ÁÖ¼Òµµ ÇÊ¿äÄ¡ ¾Ê½À´Ï´Ù"
+msgstr "`}'ì— ì–´ë– í•œ ì£¼ì†Œë„ í•„ìš”ì¹˜ 않습니다"
#: sed/compile.c:159
msgid ": doesn't want any addresses"
-msgstr ": ¿¡ ¾î¶°ÇÑ ÁÖ¼Òµµ ÇÊ¿äÄ¡ ¾Ê½À´Ï´Ù"
+msgstr ": ì— ì–´ë– í•œ ì£¼ì†Œë„ í•„ìš”ì¹˜ 않습니다"
#: sed/compile.c:161
-#, fuzzy
msgid "comments don't accept any addresses"
-msgstr "ÄÚ¸àÆ®¿¡ ¾î¶°ÇÑ ÁÖ¼Òµµ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
+msgstr "설명문ì—는 ì–´ë–¤ 주소 ê°’ë„ ë„£ì„ ìˆ˜ 없습니다"
#: sed/compile.c:162
-#, fuzzy
msgid "missing command"
-msgstr "¸í·ÉÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò½À´Ï´Ù"
+msgstr "ëª…ë ¹ì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤"
#: sed/compile.c:163
-#, fuzzy
msgid "command only uses one address"
-msgstr "¸í·É¿¡ ÇϳªÀÇ ÁÖ¼Ò¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù"
+msgstr "명령ì—는 주소 하나만 사용하십시오"
#: sed/compile.c:165
-#, fuzzy
msgid "unterminated address regex"
-msgstr "ÁÖ¼Ò Á¤±ÔÇ¥Çö½Ä Á¾·áµÇÁö ¾Ê¾Ò½À´Ï´Ù"
+msgstr "주소 ì •ê·œì‹ì´ ë나지 않았습니다"
#: sed/compile.c:166
-#, fuzzy
msgid "unterminated `s' command"
-msgstr "`s' ¸í·ÉÀÌ Á¾·áµÇÁö ¾Ê¾Ò½À´Ï´Ù"
+msgstr "`s' ëª…ë ¹ì´ ë나지 않았습니다"
#: sed/compile.c:167
-#, fuzzy
msgid "unterminated `y' command"
-msgstr "`y' ¸í·ÉÀÌ Á¾·áµÇÁö ¾Ê¾Ò½À´Ï´Ù"
+msgstr "`y' ëª…ë ¹ì´ ë나지 않았습니다"
#: sed/compile.c:168
-#, fuzzy
msgid "unknown option to `s'"
-msgstr "`s' ¿¡ ¾Ë ¼ö ¾ø´Â ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù"
+msgstr "`s'ì— ì•Œ 수 없는 ì˜µì…˜ì´ ìžˆìŠµë‹ˆë‹¤"
#: sed/compile.c:170
msgid "multiple `p' options to `s' command"
-msgstr "`s' ¸í·É¿¡ `p' ¿É¼ÇÀÌ Áߺ¹µÇ¾î ÀÖ½À´Ï´Ù"
+msgstr "`s' ëª…ë ¹ì— `p' ì˜µì…˜ì´ ì¤‘ë³µë˜ì–´ 있습니다"
#: sed/compile.c:172
msgid "multiple `g' options to `s' command"
-msgstr "`s' ¸í·É¿¡ `g' ¿É¼ÇÀÌ Áߺ¹µÇ¾î ÀÖ½À´Ï´Ù"
+msgstr "`s' ëª…ë ¹ì— `g' ì˜µì…˜ì´ ì¤‘ë³µë˜ì–´ 있습니다"
#: sed/compile.c:174
msgid "multiple number options to `s' command"
-msgstr "`s' ¸í·É¿¡ ¼ýÀÚ ¿É¼ÇÀÌ Áߺ¹µÇ¾î ÀÖ½À´Ï´Ù"
+msgstr "`s' ëª…ë ¹ì— ìˆ«ìž ì˜µì…˜ì´ ì¤‘ë³µë˜ì–´ 있습니다"
#: sed/compile.c:176
msgid "number option to `s' command may not be zero"
-msgstr "`s' ¸í·ÉÀÇ ¼ýÀÚ ¿É¼Ç¿¡ '0' À» ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù"
+msgstr "`s' ëª…ë ¹ì˜ ìˆ«ìž ì˜µì…˜ì— '0'ì„ ì§€ì •í•  수 없습니다"
#: sed/compile.c:178
-#, fuzzy
msgid "strings for `y' command are different lengths"
-msgstr "`y' ¸í·ÉÀÇ ¹®ÀÚ¿­ÀÌ ±æÀÌ°¡ ´Ù¸¨´Ï´Ù"
+msgstr "`y' ëª…ë ¹ì˜ ë¬¸ìžì—´ 길ì´ê°€ 다릅니다"
#: sed/compile.c:180
msgid "delimiter character is not a single-byte character"
-msgstr ""
+msgstr "구분 문ìžê°€ ë‹¨ì¼ ë°”ì´íŠ¸ 문ìžê°€ 아닙니다."
#: sed/compile.c:182
msgid "expected newer version of sed"
-msgstr ""
+msgstr "sed 최신 ë²„ì „ì´ í•„ìš”í•©ë‹ˆë‹¤"
#: sed/compile.c:184
-#, fuzzy
msgid "invalid usage of line address 0"
-msgstr "ÁÖ¼Ò º¯°æÀÚ(modifier)ÀÇ »ç¿ëÀÌ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù"
+msgstr "0번째 í–‰ 주소 ì‚¬ìš©ì€ ìž˜ëª»ëœ ë°©ì‹ìž…니다"
#: sed/compile.c:185
-#, fuzzy, c-format
+#, c-format
msgid "unknown command: `%c'"
-msgstr "¾Ë ¼ö ¾ø´Â ¸í·É:"
+msgstr "알 수 없는 명령: `%c'"
#: sed/compile.c:187
-#, fuzzy
msgid "incomplete command"
-msgstr "¸í·ÉÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò½À´Ï´Ù"
+msgstr "ëª…ë ¹ì´ ë나지 않았습니다"
#: sed/compile.c:189
msgid "\":\" lacks a label"
-msgstr ""
+msgstr "\":\"ì— ë ˆì´ë¸”ì´ ë¹ ì¡ŒìŠµë‹ˆë‹¤"
#: sed/compile.c:191
msgid "recursive escaping after \\c not allowed"
-msgstr ""
+msgstr "\\c 다ìŒì— 재귀 ì´ìŠ¤ì¼€ì´í•‘ì„ í•  수 없습니다"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w ëª…ë ¹ì€ ìƒŒë“œë°•ìŠ¤ 모드ì—ì„œ 사용할 수 없습니다"
#: sed/compile.c:215
#, c-format
msgid "%s: file %s line %lu: %s\n"
-msgstr "%s: %s ÆÄÀÏÀÇ %lu ¹ø° ÁÙ: %s\n"
+msgstr "%s: %s 파ì¼ì˜ %lu 번째 í–‰: %s\n"
#: sed/compile.c:218
#, c-format
msgid "%s: -e expression #%lu, char %lu: %s\n"
-msgstr "%s: -e expression #%lu, char %lu: %s\n"
+msgstr "%s: -e í‘œí˜„ì‹ %lu번째 í–‰, %lu번째 문ìž: %s\n"
#: sed/compile.c:1607
-#, fuzzy, c-format
+#, c-format
msgid "can't find label for jump to `%s'"
-msgstr "`%s' (À¸)·Î Á¡ÇÁÇÒ ·¹À̺íÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù"
+msgstr "`%s'(으)ë¡œ ì í”„í•  ë ˆì´ë¸”ì„ ì°¾ì„ ìˆ˜ 없습니다"
#: sed/execute.c:253 sed/execute.c:270
#, c-format
msgid "case conversion produced an invalid character"
-msgstr ""
+msgstr "ëŒ€ì†Œë¬¸ìž ë³€í™˜ 과정ì—ì„œ ìž˜ëª»ëœ ë¬¸ìžê°€ 나왔습니다"
#: sed/execute.c:561
#, c-format
msgid "%s: can't read %s: %s\n"
-msgstr "%s: %s (À»)¸¦ ÀÐÀ» ¼ö ¾øÀ½: %s\n"
+msgstr "%s: %s(ì„)를 ì½ì„ 수 ì—†ìŒ: %s\n"
#: sed/execute.c:587
#, c-format
msgid "couldn't edit %s: is a terminal"
-msgstr ""
+msgstr "%s 편집 불가: 종결 문ìžìž…니다"
#: sed/execute.c:592
#, c-format
msgid "couldn't edit %s: not a regular file"
-msgstr ""
+msgstr "%s 편집 불가: ì¼ë°˜ íŒŒì¼ ì•„ë‹˜"
#: sed/execute.c:603
#, c-format
msgid "%s: warning: failed to set default file creation context to %s: %s"
-msgstr ""
+msgstr "%s: 경고: %s 기본 íŒŒì¼ ìƒì„± 컨í…스트 ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s"
#: sed/execute.c:611
#, c-format
msgid "%s: warning: failed to get security context of %s: %s"
-msgstr ""
+msgstr "%s: 경고: %sì˜ ë³´ì•ˆ 컨í…스트 ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s"
#: sed/execute.c:630 sed/utils.c:188
-#, fuzzy, c-format
+#, c-format
msgid "couldn't open temporary file %s: %s"
-msgstr "%s ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù"
+msgstr "%s ìž„ì‹œ 파ì¼ì„ ì—´ 수 없습니다: %s"
#: sed/execute.c:1167 sed/execute.c:1366
msgid "error in subprocess"
-msgstr ""
+msgstr "하위 프로세스ì—ì„œ 오류"
#: sed/execute.c:1169
msgid "option `e' not supported"
-msgstr ""
+msgstr "`e' ì˜µì…˜ì€ ì§€ì›í•˜ì§€ 않습니다"
#: sed/execute.c:1347
msgid "`e' command not supported"
-msgstr ""
+msgstr "`e' ëª…ë ¹ì€ ì§€ì›í•˜ì§€ 않습니다"
#: sed/execute.c:1662
msgid "no input files"
-msgstr ""
+msgstr "ìž…ë ¥ 파ì¼ì´ 없습니다"
#: sed/regexp.c:40
msgid "no previous regular expression"
-msgstr ""
+msgstr "ì´ì „ ì •ê·œ 표현ì‹ì´ 없습니다"
#: sed/regexp.c:125
#, c-format
msgid "invalid reference \\%d on `s' command's RHS"
-msgstr ""
+msgstr "`s' ëª…ë ¹ì˜ RHSì— ìž˜ëª»ëœ ì°¸ì¡° \\%d"
#: sed/regexp.c:196
msgid "regex input buffer length larger than INT_MAX"
-msgstr ""
+msgstr "ì •ê·œì‹ ìž…ë ¥ ë²„í¼ ê¸¸ì´ê°€ 최대 정수 허용치보다 ê¹ë‹ˆë‹¤"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
-msgstr ""
+msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
-msgstr ""
+msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
-msgstr ""
+msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
-msgstr ""
+msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
#, c-format
@@ -603,108 +609,157 @@ msgid ""
"GNU sed home page: <https://www.gnu.org/software/sed/>.\n"
"General help using GNU software: <https://www.gnu.org/gethelp/>.\n"
msgstr ""
+"GNU sed 홈 페ì´ì§€: <https://www.gnu.org/software/sed/>.\n"
+"GNU 소프트웨어 활용 ì¼ë°˜ ë„움ë§: <https://www.gnu.org/gethelp/>.\n"
#: sed/sed.c:130
#, c-format
msgid "E-mail bug reports to: <%s>.\n"
-msgstr ""
+msgstr "버그 ë³´ê³  ì „ìžë©”ì¼ ì£¼ì†Œ: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
+"사용법: %s [<옵션>]... {<스í¬ë¦½íŠ¸>} [<입력파ì¼>]...\n"
+"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
" suppress automatic printing of pattern space\n"
msgstr ""
+" -n, --quiet, --silent\n"
+" 패턴 ì˜ì—­ì˜ ìžë™ ì¶œë ¥ì„ ìƒëžµí•©ë‹ˆë‹¤\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
+" --debug\n"
+" 프로그램 실행 ê³¼ì •ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
" add the script to the commands to be executed\n"
msgstr ""
+" -e script, --expression=<스í¬ë¦½íŠ¸>\n"
+" 실행할 스í¬ë¦½íŠ¸ë¥¼ ëª…ë ¹ì— ì¶”ê°€í•©ë‹ˆë‹¤\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
" add the contents of script-file to the commands to be "
"executed\n"
msgstr ""
+" -f script-file, --file=<스í¬ë¦½íŠ¸-파ì¼>\n"
+" 실행할 스í¬ë¦½íŠ¸ íŒŒì¼ ë‚´ìš©ì„ ëª…ë ¹ì— ì¶”ê°€í•©ë‹ˆë‹¤\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
+" --follow-symlinks\n"
+" 심볼릭 ë§í¬ì˜ ëŒ€ìƒ íŒŒì¼ì„ 처리할 경우 심볼릭 ë§í¬ë¥¼ ë”°ë¼ê°‘니"
+"다\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
+" -i[<접미부>], --in-place[=<접미부>]\n"
+" 지정 위치ì—ì„œ 파ì¼ì„ 편집합니다(<접미부>를 설정하면 백업 파"
+"ì¼ ë§Œë“¦)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
" open files in binary mode (CR+LFs are not processed "
"specially)\n"
msgstr ""
+" -b, --binary\n"
+" ë°”ì´ë„ˆë¦¬ 모드로 파ì¼ì„ 엽니다(CR+LF는 개별ì ìœ¼ë¡œ 취급하지 ì•Š"
+"ìŒ)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
+" -l N, --line-length=N\n"
+" `l' ëª…ë ¹ì— ì›í•˜ëŠ” 줄 바꿈 문ìžì—´ 길ì´ë¥¼ 지정합니다\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
" disable all GNU extensions.\n"
msgstr ""
+" --posix\n"
+" 모든 GNU í™•ìž¥ì„ ë¹„í™œì„±í™”í•©ë‹ˆë‹¤.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
" use extended regular expressions in the script\n"
" (for portability use POSIX -E).\n"
msgstr ""
+" -E, -r, --regexp-extended\n"
+" 스í¬ë¦½íŠ¸ì— 확장 ì •ê·œ 표현ì‹ì„ 사용합니다\n"
+" (ê°„ì´ ë°©ì‹ POSIX -E 활용).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
" consider files as separate rather than as a single,\n"
" continuous long stream.\n"
msgstr ""
+" -s, --separate\n"
+" 파ì¼ì„ 긴 ì—°ì† ìŠ¤íŠ¸ë¦¼ 단ì¼ì²´ê°€ ì•„ë‹Œ,\n"
+" 분할체로 간주합니다.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
+" --sandbox\n"
+" 샌드박스 모드로 실행합니다 (e/r/w 명령 사용 불가).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -712,25 +767,30 @@ msgid ""
"flush\n"
" the output buffers more often\n"
msgstr ""
+" -u, --unbuffered\n"
+" ìž…ë ¥ 파ì¼ì—ì„œ ìµœì†Œí•œì˜ ë°ì´í„°ë¥¼ 불러오고\n"
+" 출력 버í¼ë¡œ 내보내는 ê³¼ì •ì„ ë¹ˆë²ˆížˆ 수행합니다\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
+" -z, --null-data\n"
+" ë„ ë¬¸ìž ê°œí–‰\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
-msgstr ""
+msgstr " --help ì´ ë„움ë§ì„ 표시하고 나갑니다\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
-msgstr ""
+msgstr " --version 버전 정보를 출력하고 나갑니다\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -740,79 +800,87 @@ msgid ""
"specified, then the standard input is read.\n"
"\n"
msgstr ""
+"\n"
+"-e, --expression, -f, --file 옵션 중 설정한 ì˜µì…˜ì´ ì—†ë‹¤ë©´, ì˜µì…˜ì´ ì—†ëŠ”\n"
+"첫번째 ì¸ìžë¥¼ í•´ì„í•  sed 스í¬ë¦½íŠ¸ë¡œ 취합니다. 남아있는 모든 ì¸ìžëŠ”\n"
+"ìž…ë ¥ 파ì¼ì˜ ì´ë¦„입니다. ìž…ë ¥ 파ì¼ì„ 지정하지 않으면 표준 ìž…ë ¥ì„ ì½ìŠµ\n"
+"니다.\n"
+"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "표준 ìž…ë ¥ ëŒ€ìƒ ë°”ì´ë„ˆë¦¬ 모드 ì ìš©ì— 실패했습니다"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "표준 출력 ëŒ€ìƒ ë°”ì´ë„ˆë¦¬ 모드 ì ìš©ì— 실패했습니다"
#: sed/utils.c:77 sed/utils.c:395
-#, fuzzy, c-format
+#, c-format
msgid "cannot remove %s: %s"
-msgstr "%s: %s (À»)¸¦ ÀÐÀ» ¼ö ¾øÀ½: %s\n"
+msgstr "%sì„(를) 제거할 수 없습니다: %s"
#: sed/utils.c:146
-#, fuzzy, c-format
+#, c-format
msgid "couldn't open file %s: %s"
-msgstr "%s ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù"
+msgstr "%s 파ì¼ì„ ì—´ 수 없습니다: %s"
#: sed/utils.c:165
-#, fuzzy, c-format
+#, c-format
msgid "couldn't attach to %s: %s"
-msgstr "%s ¿¡ Ç׸ñ(item)À» ±â·ÏÇÒ ¼ö ¾ø½À´Ï´Ù: %s"
+msgstr "%sì— ì¶”ê°€í•  수 없습니다: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "'%s' ëŒ€ìƒ ë°”ì´ë„ˆë¦¬ 모드 ì ìš©ì— 실패했습니다"
#: sed/utils.c:207
-#, fuzzy, c-format
+#, c-format
msgid "couldn't write %llu item to %s: %s"
msgid_plural "couldn't write %llu items to %s: %s"
-msgstr[0] "%2$s ¿¡ %1$d Ç׸ñ(item)À» ±â·ÏÇÒ ¼ö ¾ø½À´Ï´Ù: %3$s"
-msgstr[1] "%2$s ¿¡ %1$d Ç׸ñ(item)À» ±â·ÏÇÒ ¼ö ¾ø½À´Ï´Ù: %3$s"
+msgstr[0] "%2$sì— í•­ëª© %1$llu개를 기ë¡í•  수 없습니다: %3$s"
#: sed/utils.c:219 sed/utils.c:238
#, c-format
msgid "read error on %s: %s"
-msgstr "%s ÀÇ ³»¿ë Àб⠿À·ù: %s"
+msgstr "%s ì½ê¸° 오류: %s"
#: sed/utils.c:336
-#, fuzzy, c-format
+#, c-format
msgid "couldn't follow symlink %s: %s"
-msgstr "%s ¿¡ Ç׸ñ(item)À» ±â·ÏÇÒ ¼ö ¾ø½À´Ï´Ù: %s"
+msgstr "%s 심볼릭 ë§í¬ë¥¼ ë”°ë¼ê°ˆ 수 없습니다: %s"
#: sed/utils.c:370
-#, fuzzy, c-format
+#, c-format
msgid "cannot stat %s: %s"
-msgstr "%s: %s (À»)¸¦ ÀÐÀ» ¼ö ¾øÀ½: %s\n"
+msgstr "%s ìƒíƒœë¥¼ 나타낼 수 ì—†ìŒ: %s"
#: sed/utils.c:400
-#, fuzzy, c-format
+#, c-format
msgid "cannot rename %s: %s"
-msgstr "%s: %s (À»)¸¦ ÀÐÀ» ¼ö ¾øÀ½: %s\n"
+msgstr "%s ì´ë¦„ì„ ë°”ê¿€ 수 ì—†ìŒ: %s"
+
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s 홈 페ì´ì§€: <https://www.gnu.org/software/%s/>\n"
#~ msgid "bad regexp: %s\n"
-#~ msgstr "À߸øµÈ Á¤±ÔÇ¥Çö½Ä: %s\n"
+#~ msgstr "ìž˜ëª»ëœ ì •ê·œí‘œí˜„ì‹: %s\n"
#~ msgid "Unexpected End-of-file"
-#~ msgstr "ÆÄÀÏÀÇ ³¡(EOF)ÀÌ À߸øµÇ¾ú½À´Ï´Ù"
+#~ msgstr "파ì¼ì˜ ë(EOF)ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤"
#~ msgid "Called savchar() with unexpected pushback (%x)"
-#~ msgstr "¿¹»óÄ¡ ¸øÇÑ pushback (%x) °ú ÇÔ²² savchar() °¡ È£ÃâµÇ¾ú½À´Ï´Ù"
+#~ msgstr "예ìƒì¹˜ 못한 pushback (%x) ê³¼ 함께 savchar() ê°€ 호출ë˜ì—ˆìŠµë‹ˆë‹¤"
#~ msgid "input read error: %s"
-#~ msgstr "ÀÔ·Â ³»¿ë Àб⠿À·ù: %s"
+#~ msgstr "ìž…ë ¥ ë‚´ìš© ì½ê¸° 오류: %s"
#~ msgid "INTERNAL ERROR: bad address type"
-#~ msgstr "³»ºÎ ¿À·ù: À߸øµÈ ÁÖ¼Ò À¯ÇüÀÔ´Ï´Ù"
+#~ msgstr "내부 오류: ìž˜ëª»ëœ ì£¼ì†Œ 유형입니다"
#~ msgid "INTERNAL ERROR: Bad cmd %c"
-#~ msgstr "³»ºÎ ¿À·ù: %c (Àº)´Â À߸øµÈ ¸í·ÉÀÔ´Ï´Ù"
+#~ msgstr "내부 오류: %c (ì€)는 ìž˜ëª»ëœ ëª…ë ¹ìž…ë‹ˆë‹¤"
#~ msgid ""
#~ "Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -838,36 +906,36 @@ msgstr "%s: %s (À»)¸¦ ÀÐÀ» ¼ö ¾øÀ½: %s\n"
#~ "specified, then the standard input is read.\n"
#~ "\n"
#~ msgstr ""
-#~ "»ç¿ë¹ý: %s [¿É¼Ç]... {½ºÅ©¸³Æ®-½ºÅ©¸³Æ®°¡ ¾øÀ» °æ¿ì¿¡´Â} [ÀÔ·Â-ÆÄÀÏ]...\n"
+#~ "사용법: %s [옵션]... {스í¬ë¦½íŠ¸-스í¬ë¦½íŠ¸ê°€ ì—†ì„ ê²½ìš°ì—는} [ìž…ë ¥-파ì¼]...\n"
#~ "\n"
#~ " -n, --quiet, --silent\n"
-#~ " ÀÚµ¿À¸·Î ÆÐÅÏ °ø°£À» Ãâ·ÂÇÏÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù\n"
-#~ " -e ½ºÅ©¸³Æ®, --expression=½ºÅ©¸³Æ®\n"
-#~ " ½ÇÇàµÉ ¸í·É¿¡ ½ºÅ©¸³Æ®¸¦ Ãß°¡ÇÕ´Ï´Ù\n"
-#~ " -f ½ºÅ©¸³Æ®-ÆÄÀÏ, --file=½ºÅ©¸³Æ®-ÆÄÀÏ\n"
-#~ " ½ÇÇàµÉ ¸í·É¿¡ ½ºÅ©¸³Æ®-ÆÄÀÏÀÇ ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù\n"
-#~ " -l ¼ýÀÚ, --line-length=¼ýÀÚ\n"
-#~ " `l' ¸í·É¿¡ ÁٹٲÞ(line-wrap)ÇÒ ¼ýÀÚ¸¦ ÁöÁ¤ÇÕ´Ï´Ù\n"
+#~ " ìžë™ìœ¼ë¡œ 패턴 ê³µê°„ì„ ì¶œë ¥í•˜ì§€ 못하ë„ë¡ í•©ë‹ˆë‹¤\n"
+#~ " -e 스í¬ë¦½íŠ¸, --expression=스í¬ë¦½íŠ¸\n"
+#~ " ì‹¤í–‰ë  ëª…ë ¹ì— ìŠ¤í¬ë¦½íŠ¸ë¥¼ 추가합니다\n"
+#~ " -f 스í¬ë¦½íŠ¸-파ì¼, --file=스í¬ë¦½íŠ¸-파ì¼\n"
+#~ " ì‹¤í–‰ë  ëª…ë ¹ì— ìŠ¤í¬ë¦½íŠ¸-파ì¼ì˜ ë‚´ìš©ì„ ì¶”ê°€í•©ë‹ˆë‹¤\n"
+#~ " -l 숫ìž, --line-length=숫ìž\n"
+#~ " `l' ëª…ë ¹ì— ì¤„ë°”ê¿ˆ(line-wrap)í•  숫ìžë¥¼ 지정합니다\n"
#~ " -u, --unbuffered\n"
#~ "\n"
-#~ " --help ÇöÀç º¸¿©Áö´Â µµ¿ò¸»À» Ãâ·ÂÇÕ´Ï´Ù\n"
-#~ " -V, --version ÇöÀç »ç¿ëÇÏ´Â ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --help 현재 보여지는 ë„움ë§ì„ 출력합니다\n"
+#~ " -V, --version 현재 사용하는 버전 정보를 출력합니다\n"
#~ "\n"
-#~ "¸¸ÀÏ -e, --expression, -f, --file ¿É¼ÇÀÌ ÁÖ¾îÁöÁö ¾Ê¾ÒÀ» °æ¿ì¿¡´Â ¿É¼Ç-¾ø"
-#~ "ÀÌ\n"
-#~ "ù¹ø° Àμö¿¡ Çؼ®µÉ sed ½ºÅ©¸³Æ®°¡ ³õ¿©Áö°Ô µË´Ï´Ù. ±× ´ÙÀ½¿¡ ¿Ã ¼ö ÀÖ"
-#~ "´Â\n"
-#~ "Àμö·Î´Â ÀÔ·Â ÆÄÀÏÀÇ À̸§ÀÔ´Ï´Ù; ¸¸ÀÏ ÀÔ·Â ÆÄÀÏÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» °æ¿ì¿¡"
-#~ "´Â\n"
-#~ "Ç¥ÁØ ÀÔ·ÂÀÇ ³»¿ëÀ» ÀнÀ´Ï´Ù.\n"
+#~ "ë§Œì¼ -e, --expression, -f, --file ì˜µì…˜ì´ ì£¼ì–´ì§€ì§€ ì•Šì•˜ì„ ê²½ìš°ì—는 옵션-ì—†"
+#~ "ì´\n"
+#~ "첫번째 ì¸ìˆ˜ì— í•´ì„ë  sed 스í¬ë¦½íŠ¸ê°€ 놓여지게 ë©ë‹ˆë‹¤. ê·¸ 다ìŒì— 올 수 있"
+#~ "는\n"
+#~ "ì¸ìˆ˜ë¡œëŠ” ìž…ë ¥ 파ì¼ì˜ ì´ë¦„입니다; ë§Œì¼ ìž…ë ¥ 파ì¼ì´ 지정ë˜ì§€ ì•Šì•˜ì„ ê²½ìš°ì—"
+#~ "는\n"
+#~ "표준 ìž…ë ¥ì˜ ë‚´ìš©ì„ ì½ìŠµë‹ˆë‹¤.\n"
#~ "\n"
#~ msgid ""
#~ "E-mail bug reports to: %s .\n"
#~ "Be sure to include the word ``%s'' somewhere in the ``Subject:'' field.\n"
#~ msgstr ""
-#~ "¹ö±×¸¦ º¸°íÇÒ E-mail ÁÖ¼Ò: %s .\n"
-#~ "``Subject:'' Ç׸ñ¿¡ ¹Ýµå½Ã ``%s'' ´Ü¾î¸¦ Æ÷ÇÔÇØ Áֽñ⠹ٶø´Ï´Ù.\n"
+#~ "버그를 보고할 E-mail 주소: %s .\n"
+#~ "``Subject:'' í•­ëª©ì— ë°˜ë“œì‹œ ``%s'' 단어를 í¬í•¨í•´ 주시기 ë°”ëžë‹ˆë‹¤.\n"
#~ msgid ""
#~ "%s\n"
@@ -878,7 +946,7 @@ msgstr "%s: %s (À»)¸¦ ÀÐÀ» ¼ö ¾øÀ½: %s\n"
#~ "to the extent permitted by law.\n"
#~ msgstr ""
#~ "%s\n"
-#~ "ÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î ÀÔ´Ï´Ù; ÀÚ¼¼ÇÑ ³»¿ëÀº ÀúÀÛ±Ç ³»¿ëÀÇ ¿ø¹®À»\n"
-#~ "Âü°íÇϽñ⠹ٶø´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¹ý¿¡ ÀúÃ˵ÇÁö ¾Ê´Â ¹üÀ§¿¡¼­ »ó¾÷ÀûÀÌ"
-#~ "³ª\n"
-#~ "Ư¼ö ¸ñÀûÀ¸·Î »ç¿ëµÉ °æ¿ì¸¦ Æ÷ÇÔÇÑ ¾î¶°ÇÑ °æ¿ì¿¡µµ º¸ÁõÇÏÁö ¾Ê½À´Ï´Ù.\n"
+#~ "ì´ í”„ë¡œê·¸ëž¨ì€ ìžìœ  소프트웨어 입니다; ìžì„¸í•œ ë‚´ìš©ì€ ì €ìž‘ê¶Œ ë‚´ìš©ì˜ ì›ë¬¸ì„\n"
+#~ "참고하시기 ë°”ëžë‹ˆë‹¤. ì´ í”„ë¡œê·¸ëž¨ì€ ë²•ì— ì €ì´‰ë˜ì§€ 않는 범위ì—ì„œ ìƒì—…ì ì´"
+#~ "나\n"
+#~ "특수 목ì ìœ¼ë¡œ ì‚¬ìš©ë  ê²½ìš°ë¥¼ í¬í•¨í•œ ì–´ë– í•œ 경우ì—ë„ ë³´ì¦í•˜ì§€ 않습니다.\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index f4afba5..e7e1636 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 57e455a..36e54cb 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -2,14 +2,14 @@
# Copyright (C) 2012 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
#
-# Johnny A. Solbu <johnny@solbu.net>, 2012 - 2018
+# Johnny A. Solbu <johnny@solbu.net>, 2012-2019
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.4.104\n"
+"Project-Id-Version: sed 4.5.48\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-03-26 15:16+0200\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2019-08-20 03:19+0200\n"
"Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
"Language: nb\n"
@@ -29,39 +29,39 @@ msgstr "skrivefeil"
msgid "preserving permissions for %s"
msgstr "bevare tillatelser for %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "ubalansert ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "ugyldig tegnklassenavn"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "tegnklassesyntaksen er [[:space:]], ikke [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "uferdig \\ escape"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "ugyldig innhold av \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regulært uttrykk for stort"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "ubalansert ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "ingen syntax spesifisert"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "ubalansert )"
@@ -205,7 +205,7 @@ msgstr "Regulært uttrykk for stort"
msgid "Unmatched ) or \\)"
msgstr "Ubalansert ) eller \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Intet foregående regulært uttrykk"
@@ -231,14 +231,13 @@ msgstr "Pakket av %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"Lisens GPLv3+: GNU GPL versjon 3 eller senere <https://gnu.org/licenses/gpl."
@@ -248,19 +247,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Skrevet av %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Skrevet av %s og %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Skrevet av %s, %s og %s.\n"
@@ -268,7 +267,7 @@ msgstr "Skrevet av %s, %s og %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -280,7 +279,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -292,7 +291,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -304,7 +303,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -330,7 +329,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -344,7 +343,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -359,33 +358,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"Rapporter feil, på engelsk, til <%s>.\n"
"Oversettelsesfeil kan rapporteres til <i18n-nb@lister.ping.uio.no>.\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Rapporter %s-feil til %s.\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s hjemmeside: <%s>\n"
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s hjemmeside: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr "Generelt hjelp med GNU-programvare:. <https://www.gnu.org/gethelp/>.\n"
#: sed/compile.c:146
@@ -503,7 +496,7 @@ msgstr "Rekursiv escape etter \\c ikke tillatt"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w-kommandoer deaktivert i sandboks-modus"
#: sed/compile.c:215
#, c-format
@@ -585,29 +578,29 @@ msgstr "ugyldig referanse \\%d på «s»-kommandoens RHS"
msgid "regex input buffer length larger than INT_MAX"
msgstr "regex inngangsbufferlengde lengre enn INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
#, c-format
@@ -624,6 +617,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Send feilrapporter på e-post til: <%s>\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -632,7 +641,7 @@ msgstr ""
"Bruk: %s [VALG] ... {skript-bare-hvis-ingen-andre-skript} [inndatafil]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -641,16 +650,16 @@ msgstr ""
" -n, --quiet, --silent\n"
" undertrykk automatisk utskrift av mønsterplass\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" deaktivere alle GNU-utvidelser.\n"
+" --debug\n"
+" kommenter programgjennomføring\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -659,7 +668,7 @@ msgstr ""
" -e script, --expression=script\n"
" legge skriptet til kommandoer som skal utføres\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -670,7 +679,7 @@ msgstr ""
" legge innholdet i skriptfil til kommandoer som skal "
"utføres\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -679,7 +688,7 @@ msgstr ""
" --follow-symlinks\n"
" Følg symbolske lenker ved prosessering «på stedet»\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -688,7 +697,7 @@ msgstr ""
" -i[SUFFIKS], --in-place[=SUFFIKS]\n"
" rediger filer «på stedet» (tar backup hvis SUFFIKS oppgis)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -698,7 +707,7 @@ msgstr ""
" -b, --binary\n"
" åpne filer i binært (CR+LFs prosesseres ikke spesielt)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -707,7 +716,7 @@ msgstr ""
" -l N, --line-length=N\n"
" angi ønsket linjebrytingslengde for «l»-kommandoen\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -716,7 +725,7 @@ msgstr ""
" --posix\n"
" deaktivere alle GNU-utvidelser.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -727,7 +736,7 @@ msgstr ""
" bruk utvidede regulære uttrykk i skriptet.\n"
" (for portabilitet bruk POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -738,7 +747,7 @@ msgstr ""
" vurder filer som separate i stedet for en enkelt\n"
" sammenhengende lang strøm.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -747,7 +756,7 @@ msgstr ""
" --sandbox\n"
" operere I sandkassemodus (deaktiver e/r/w-kommandoer).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -759,7 +768,7 @@ msgstr ""
" last minimale mengder data fra inndatafiler og skyll\n"
" utdatabufferne oftere\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -768,17 +777,17 @@ msgstr ""
" -z, --null-data\n"
" skille linjer ved NULL-tegn\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help vis denne hjelpteksten og avslutt\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version vis programversjon og avslutt\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -795,13 +804,13 @@ msgstr ""
"inndatafiler angis leses standard inndata.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "kunne ikke angi binærmodus på STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "kunne ikke angi binærmodus på STOUT"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -821,7 +830,7 @@ msgstr "kunne ikke koble til %s: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "kunne ikke angi binærmodus på «%s»"
#: sed/utils.c:207
#, c-format
@@ -850,6 +859,9 @@ msgstr "kan ikke lese status på %s: %s"
msgid "cannot rename %s: %s"
msgstr "Kan ikke omdøpe %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s hjemmeside: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index 302d5d1..04b0b3e 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index bce335a..8267256 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed-4.5.48\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2018-12-19 10:08+0100\n"
"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -30,39 +30,39 @@ msgstr "schrijffout"
msgid "preserving permissions for %s"
msgstr "behouden van toegangsrechten van %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "ongepaarde ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "ongeldige tekenklasse"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "syntax van tekenklasse is [[:space:]], niet [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "onafgemaakte \\-stuurcode"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "ongeldige inhoud van \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "reguliere expressie is te groot"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "ongepaarde ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "geen syntax opgegeven"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "ongepaarde )"
@@ -206,7 +206,7 @@ msgstr "Reguliere expressie is te groot"
msgid "Unmatched ) or \\)"
msgstr "Ongepaarde ) of \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Geen eerdere reguliere expressie"
@@ -232,14 +232,13 @@ msgstr "In pakketvorm gebracht door %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"Dit is vrije software: u mag het vrijelijk wijzigen en verder verspreiden.\n"
@@ -250,19 +249,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Geschreven door %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Geschreven door %s en %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Geschreven door %s, %s en %s.\n"
@@ -270,7 +269,7 @@ msgstr "Geschreven door %s, %s en %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -282,7 +281,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -294,7 +293,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -306,7 +305,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +317,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -332,7 +331,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -346,7 +345,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -361,35 +360,29 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"Rapporteer gebreken in het programma aan <%s>;\n"
"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
"Rapporteer gebreken in het programma '%s' aan <%s>;\n"
"meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Webpagina van '%s': <%s>\n"
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Webpagina van '%s': <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"Algemene hulp bij gebruik van GNU-software: <https://www.gnu.org/gethelp/>\n"
@@ -591,27 +584,27 @@ msgstr "ongeldige verwijzing \\%d rechts van 's'-opdracht"
msgid "regex input buffer length larger than INT_MAX"
msgstr "lengte van regex-invoerbuffer is groter dan INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -632,6 +625,22 @@ msgstr ""
"meld fouten in de vertaling aan: <vertaling@vrijschriftorg>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -640,7 +649,7 @@ msgstr ""
"Gebruik: %s [OPTIE]... {SCRIPT_als_verder_geen_script} [INVOERBESTAND]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -649,7 +658,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" automatische weergave van patroonruimte onderdrukken\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -658,7 +667,7 @@ msgstr ""
" --debug\n"
" de uitvoering van het programma annoteren\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -667,7 +676,7 @@ msgstr ""
" -e SCRIPT, --expression=SCRIPT\n"
" dit SCRIPT toevoegen aan de uit te voeren opdrachten\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -678,7 +687,7 @@ msgstr ""
" inhoud van SCRIPTBESTAND toevoegen aan de uit te voeren "
"opdrachten\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -687,7 +696,7 @@ msgstr ""
" --follow-symlinks\n"
" symbolische koppelingen volgen (bij bewerking ter plekke)\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -697,7 +706,7 @@ msgstr ""
" bestanden ter plekke bewerken\n"
" (en een reservekopie maken als een ACHTERVOEGSEL gegeven is)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -708,7 +717,7 @@ msgstr ""
" bestanden openen in binaire modus (regeleinden zijn niet "
"speciaal)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -717,7 +726,7 @@ msgstr ""
" -l AANTAL, --line-length=AANTAL\n"
" de gewenste regelafbreeklengte voor de 'l'-opdracht\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -726,7 +735,7 @@ msgstr ""
" --posix\n"
" alle GNU-uitbreidingen uitschakelen\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -737,7 +746,7 @@ msgstr ""
" uitgebreide reguliere expressies gebruiken in het script\n"
" (gebruik voor portabiliteit de POSIX-optie '-E')\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -747,7 +756,7 @@ msgstr ""
" -s, --separate\n"
" bestanden als losstaand beschouwen, niet als één enkele stroom\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -756,7 +765,7 @@ msgstr ""
" --sandbox\n"
" in sandbox-modus opereren (de e/r/w-commando's uitschakelen)\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -768,7 +777,7 @@ msgstr ""
" minimale hoeveelheden gegevens laden uit de invoerbestanden,\n"
" en de uitvoerbuffers vaker leegmaken\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -778,17 +787,17 @@ msgstr ""
" regels scheiden met NUL-tekens\n"
"\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help deze hulptekst tonen en stoppen\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version programmaversie tonen en stoppen\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -805,11 +814,11 @@ msgstr ""
"invoerbestanden gegeven zijn, wordt standaardinvoer gelezen.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "kan standaardinvoer niet in binaire modus zetten"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "kan standaarduitvoer niet in binaire modus zetten"
@@ -860,6 +869,9 @@ msgstr "kan de status van %s niet opvragen: %s"
msgid "cannot rename %s: %s"
msgstr "kan %s niet hernoemen: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Webpagina van '%s': <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 1891c11..9d9e626 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 6a3f1ab..7f047b9 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2010-06-12 20:01+0200\n"
"Last-Translator: Wojciech Polak <polak@gnu.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -30,42 +30,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Nieprawidłowa nazwa klasy znaku"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Nieprawidłowa zawartość \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Wyrażenie regularne jest zbyt duże"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -211,7 +211,7 @@ msgstr "Wyrażenie regularne jest zbyt duże"
msgid "Unmatched ) or \\)"
msgstr "Niedopasowany znak ) lub \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Brak poprzedniego wyrażenia regularnego"
@@ -237,30 +237,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -268,7 +267,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -278,7 +277,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -288,7 +287,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -298,7 +297,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -308,7 +307,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -319,7 +318,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -330,7 +329,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -342,31 +341,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"Strona projektu GNU sed: <http://www.gnu.org/software/sed/>.\n"
"Pomoc dotyczÄ…ca oprogramowania GNU: <http://www.gnu.org/gethelp/>.\n"
@@ -571,27 +563,27 @@ msgstr "nieprawidłowe odwołanie \\%d po prawej stronie polecenia `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -610,6 +602,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -619,7 +627,7 @@ msgstr ""
"wejściowy]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -628,7 +636,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" powstrzymuje automatyczne drukowanie przetwarzanych linii.\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -637,7 +645,7 @@ msgstr ""
" --posix\n"
" wyłącza wszystkie rozszerzenia GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -646,7 +654,7 @@ msgstr ""
" -e skrypt, --expression=skrypt\n"
" dodaje skrypt do poleceń, które mają być wykonane.\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -657,7 +665,7 @@ msgstr ""
" dodaje zawartość pliku skryptowego do poleceń,\n"
" które mają być wykonane.\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -667,7 +675,7 @@ msgstr ""
" podąża za dowiązaniami symbolicznymi,\n"
" gdy przetwarza \"w miejscu\".\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -677,7 +685,7 @@ msgstr ""
" edytuje pliki \"w miejscu\" (tworzy kopie zapasowe\n"
" jeżeli zostało podane rozszerzenie).\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -688,7 +696,7 @@ msgstr ""
" otwiera pliki w trybie binarnym (CR+LF nie jest "
"przetwarzane).\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -697,7 +705,7 @@ msgstr ""
" -l N, --line-length=N\n"
" ustala pożądaną długość łamanych linii dla polecenia `l'.\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -706,7 +714,7 @@ msgstr ""
" --posix\n"
" wyłącza wszystkie rozszerzenia GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -716,7 +724,7 @@ msgstr ""
" -r, --regexp-extended\n"
" używa w skrypcie rozszerzonych wyrażeń regularnych.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -727,14 +735,14 @@ msgstr ""
" traktuje pliki jako oddzielne, a nie jako pojedynczy,\n"
" długi i ciągły strumień.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -746,24 +754,24 @@ msgstr ""
" ładuje minimalną ilość danych z plików wejściowych\n"
" i częściej oczyszcza bufor wyjściowy.\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help wyświetla tę oto pomoc i kończy pracę.\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version wyświetla numer wersji i kończy pracę.\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -781,11 +789,11 @@ msgstr ""
"żadne pliki wejściowe, to wtedy odczytane zostanie standardowe wejście.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/pt.gmo b/po/pt.gmo
index 2ab90c6..5a4e680 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index 31b9570..20501e6 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,22 +1,22 @@
# Portuguese translation of the "sed" messages
# Copyright (C) 2018 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
-# Pedro Albuquerque <palbuquerque73@gmail.com>, 2018.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-14 18:07+0000\n"
-"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-07 08:05+0000\n"
+"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\\n\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 2.91.7\n"
#: lib/closeout.c:122
@@ -28,39 +28,39 @@ msgstr "erro de escrita"
msgid "preserving permissions for %s"
msgstr "preservar permissões para %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "[ sem par"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "classe de carácter inválida"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "a sintaxe da classe de carácter é [[:espaço:]], não [:espaço:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "escape \\ não terminado"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "Conteúdo de \\{\\} inválido"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "Expressão regular muito grande"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "( sem par"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "sem sintaxe especificada"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ") sem par"
@@ -204,7 +204,7 @@ msgstr "Expressão regular muito grande"
msgid "Unmatched ) or \\)"
msgstr ") ou \\) sem par"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Expressão regular anterior não existente"
@@ -230,36 +230,33 @@ msgstr "Empacotado por %s\n"
msgid "(C)"
msgstr "(©)"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
-"html>\n"
+"Licença GPLv3+: GNU GPL versão 3 ou posterior <%s>\n"
"Este é um programa grátis: pode alterá-lo e redistribuí-lo.\n"
"Não há QUALQUER GARANTIA, até ao limite da Lei.\n"
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Escrito por %s\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Escrito por %s e %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Escrito por %s, %s e %s.\n"
@@ -267,7 +264,7 @@ msgstr "Escrito por %s, %s e %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -279,7 +276,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -291,7 +288,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -303,7 +300,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -315,7 +312,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -329,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -343,7 +340,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -358,33 +355,25 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
-msgstr ""
-"\n"
-"Reportar erros a: %s\n"
+msgid "Report bugs to: %s\n"
+msgstr "Reportar erros a: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Reportar %s erros a: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Página inicial %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Página inicial %s: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Ajuda geral para uso de programas GNU: <http://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ajuda geral para uso de programas GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -584,27 +573,27 @@ msgstr "referência \\%d inválida no RHS do comando \"s\""
msgid "regex input buffer length larger than INT_MAX"
msgstr "tamanho do buffer de entrada de regexp maior que INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -623,6 +612,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Enviar relatórios de erro para: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Este programa sed foi compilado com suporte a SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux está activado no seu sistema."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux está desactivado no seu sistema."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Este programa sed foi compilado sem suporte a SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -632,7 +637,7 @@ msgstr ""
"entrada]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -641,7 +646,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" suprime mostra automática do espaço de padrões\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -650,7 +655,7 @@ msgstr ""
" --debug\n"
" anota a execução do programa\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -659,7 +664,7 @@ msgstr ""
" -e script, --expression=script\n"
" adiciona script aos comandos a executar\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -669,7 +674,7 @@ msgstr ""
" -f script, --file=script\n"
" adiciona conteúdos de script aos comandos a executar\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -678,7 +683,7 @@ msgstr ""
" --follow-symlinks\n"
" segue ligações simbólicas ao processar no local\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -687,7 +692,7 @@ msgstr ""
" -i[SUFIXO], --in-place[=SUFIXO]\n"
" edita ficheiros no local (segurança se SUFIXO fornecido)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -698,7 +703,7 @@ msgstr ""
" abre ficheiros em modo binário (CR+LFs não são processados "
"de forma especial)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -707,7 +712,7 @@ msgstr ""
" -l N, --line-length=N\n"
" especifica comprimento de linha desejado no comando \"l\"\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -716,7 +721,7 @@ msgstr ""
" --posix\n"
" desactiva todas as extensões GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -726,7 +731,7 @@ msgstr ""
" -r, --regexp-extended\n"
" usa expressões regulares estendidas no script.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -737,7 +742,7 @@ msgstr ""
" considera ficheiros como separados em vez de uma única,\n"
" longa corrente contínua.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -746,7 +751,7 @@ msgstr ""
" --sandbox\n"
" opera em modo virtual (desactiva os comandos e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -759,7 +764,7 @@ msgstr ""
"entrada e\n"
" despejar mais frequentemente os buffers de saída\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -768,17 +773,17 @@ msgstr ""
" -z, --null-data\n"
" separa linhas com caracteres NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help mostra esta mensagem e sai\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version mostra informação de versão e sai\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -795,11 +800,11 @@ msgstr ""
"especificados ficheiros de entrada, é lida a entrada padrão.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "falha ao definir modo binário em STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "falha ao definir modo binário em STDOUT"
@@ -850,6 +855,9 @@ msgstr "impossível obter informações de %s: %s"
msgid "cannot rename %s: %s"
msgstr "impossível renomear %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Página inicial %s: <http://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 711d073..89961a8 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 9d600ed..8879fab 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,17 +1,17 @@
# Brazilian Portuguese translations for sed package
# Traduções em português brasileiro para o pacote sed
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Tradução original da versão 4.01:
# Juan Carlos Castro y Castro <jcastro@vialink.com.br>, 2002.
# Aurelio Jargas <verde@aurelio.net>, 1999-2010.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2016-2018.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2016-2020.
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-14 06:48-0200\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 09:33-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
"net>\n"
@@ -32,39 +32,39 @@ msgstr "erro de escrita"
msgid "preserving permissions for %s"
msgstr "preservando permissões de %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "[ sem correspondente"
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "classe de caracteres inválida"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "a sintaxe de classe de caracteres é [[:space:]], e não [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "escape \\ não terminado"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "conteúdo inválido de \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "expressão regular grande demais"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "( sem correspondente"
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "nenhuma sintaxe especificada"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ") sem correspondente"
@@ -208,7 +208,7 @@ msgstr "Expressão regular grande demais"
msgid "Unmatched ) or \\)"
msgstr ") ou \\) sem correspondente"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Nenhuma expressão regular anterior"
@@ -234,36 +234,32 @@ msgstr "Empacotado por %s\n"
msgid "(C)"
msgstr "(C)"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Licença GPLv3+: GNU GPL versão 3 ou posterior <https://gnu.org/licenses/gpl."
-"html>\n"
+"Licença GPLv3+: GNU GPL versão 3 ou posterior <%s>\n"
"Este é um software livre: você é livre para alterá-lo e redistribuí-lo.\n"
"NÃO Hà QUALQUER GARANTIA, na máxima extensão permitida em lei.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Escrito por %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Escrito por %s e %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Escrito por %s, %s e %s.\n"
@@ -271,7 +267,7 @@ msgstr "Escrito por %s, %s e %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -283,7 +279,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +291,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +303,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -319,7 +315,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -333,7 +329,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -347,7 +343,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -362,35 +358,28 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Relate erros para: %s\n"
-"Relate erros de tradução para <http://ldpbr-translation@lists.sourceforge."
-"net>\n"
+"Relate erros de tradução para <https://translationproject.org/team/pt_BR."
+"html>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Relate erros do %s para: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Página do %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Página do %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Ajuda geral no uso de software GNU: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Ajuda geral no uso de software GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -590,27 +579,27 @@ msgstr "referência inválida \\%d na segunda parte do comando `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr "tamanho do buffer de entrada da expressão regular maior que INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -629,6 +618,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Envie relatórios de erros para: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Este programa sed foi compilado com suporte a SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux está habilitado neste sistema."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux está desabilitado neste sistema."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Este programa sed foi compilado sem suporte a SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -637,7 +642,7 @@ msgstr ""
"Uso: %s [OPÇÃO]... {script-apenas-se-for-único} [arquivo-entrada]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -646,7 +651,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" suprime a impressão automática do buffer padrão\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -655,7 +660,7 @@ msgstr ""
" --debug\n"
" anota a execução do programa\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -664,7 +669,7 @@ msgstr ""
" -e script, --expression=script\n"
" adiciona o script aos comandos a serem executados\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -675,7 +680,7 @@ msgstr ""
" adiciona o conteúdo do arquivo-script aos comandos\n"
" a serem executados\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -685,7 +690,7 @@ msgstr ""
" segue links simbólicos ao editar o próprio arquivo "
"original\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -694,7 +699,7 @@ msgstr ""
" -i[SUFIXO], --in-place[=SUFIXO]\n"
" edita o arquivo original (faz backup se usado SUFIXO)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -705,7 +710,7 @@ msgstr ""
" abre os arquivos em modo binário (CR+LFs não são "
"especiais)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -714,7 +719,7 @@ msgstr ""
" -l N, --line-length=N\n"
" determina comprimento da quebra de linha para comando `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -723,7 +728,7 @@ msgstr ""
" --posix\n"
" desativa todas as extensões GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -734,7 +739,7 @@ msgstr ""
" usa sintaxe moderna de expressões regulares, sem escapes.\n"
" (para portabilidade, use POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -745,7 +750,7 @@ msgstr ""
" considera arquivos como entidades separadas, e não\n"
" como um longo e único fluxo de dados.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -754,7 +759,7 @@ msgstr ""
" --sandbox\n"
" opera em modo sandbox (desabilita comandos e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -767,7 +772,7 @@ msgstr ""
"entrada\n"
" e descarrega os buffers de saída com mais frequência\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -776,17 +781,17 @@ msgstr ""
" -z, --null-data\n"
" separa linhas por caracteres NULOs\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help mostra esta ajuda e sai\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version mostra informações sobre a versão e sai\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -804,11 +809,11 @@ msgstr ""
"seja especificado, então a entrada padrão será lida.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "falha ao definir modo binário na STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "falha ao definir modo binário na STDOUT"
@@ -859,6 +864,9 @@ msgstr "não foi possível obter o estado de %s: %s"
msgid "cannot rename %s: %s"
msgstr "não foi possível renomear %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Página do %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/ro.gmo b/po/ro.gmo
index f43f1fc..b438823 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 3fc8d27..620421b 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.1.4\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2005-04-19 12:00-0500\n"
"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -28,42 +28,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Nume de clasã de caractere incorect"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Conþinut incorect pentru \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Expresie regularã prea mare"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -209,7 +209,7 @@ msgstr "Expresie regularã prea mare"
msgid "Unmatched ) or \\)"
msgstr ") sau \\) fãrã pereche"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Nici o expresie regularã anterioarã"
@@ -235,30 +235,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -266,7 +265,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -276,7 +275,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -286,7 +285,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -296,7 +295,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -306,7 +305,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +316,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -328,7 +327,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -340,30 +339,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
#: sed/compile.c:146
@@ -563,27 +556,27 @@ msgstr "referinþã invalidã \\%d pentru expresia din dreapta a comenzii `s'"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -600,6 +593,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -608,7 +617,7 @@ msgstr ""
"Folosire: %s [OPÞIUNE]... {script-dacã-nu-alt-script} [fiºier-intrare]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -617,7 +626,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" eliminã afiºarea automatã a spaþiului de pattern\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -626,7 +635,7 @@ msgstr ""
" --posix\n"
" deactiveazã toate extensiile GNU.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -635,7 +644,7 @@ msgstr ""
" -e script, --expression=script\n"
" adaugã scriptul la comenzile ce trebuie executate\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -646,14 +655,14 @@ msgstr ""
" adaugã conþinutul scriptului-fiºier la comenzile ce\n"
" trebuie executate\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -663,7 +672,7 @@ msgstr ""
" editeazã fiºierele pe loc (creazã copii de siguranþã\n"
" dacã este furnizatã extensia)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -671,7 +680,7 @@ msgid ""
"specially)\n"
msgstr ""
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -681,7 +690,7 @@ msgstr ""
" specificã lungimea doritã pentru trecut la linia urmãtoare\n"
" pentru comanda `l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -690,7 +699,7 @@ msgstr ""
" --posix\n"
" deactiveazã toate extensiile GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -701,7 +710,7 @@ msgstr ""
" foloseºte sintaxa extinsã a expresiilor regulare în "
"script.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -712,14 +721,14 @@ msgstr ""
" considerã fiºierele ca fiind separate, în loc de a le\n"
" considera un flux lung continuu.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -732,24 +741,24 @@ msgstr ""
"intrare\n"
" ºi goleºte bufferele mai des\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help afiºeazã aceste mesaje ºi terminã\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version afiºeazã informaþii despre versiune ºi terminã\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -768,11 +777,11 @@ msgstr ""
"standard.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/ru.gmo b/po/ru.gmo
index 97d2fe6..92357fd 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index e65146b..465a7e6 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,13 +4,13 @@
#
# Const Kaplinsky <const@ce.cctpu.edu.ru>, 1998.
# Pavel Maryanov <acid_jack@ukr.net>, 2004, 2008.
-# Yuri Kozlov <yuray@komyakino.ru>, 2013, 2016, 2018.
+# Yuri Kozlov <yuray@komyakino.ru>, 2013, 2016, 2018, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.4.104\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-04-01 08:46+0300\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-11 08:10+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
"Language: ru\n"
@@ -31,39 +31,39 @@ msgstr "ошибка запиÑи"
msgid "preserving permissions for %s"
msgstr "Ñохранение прав доÑтупа Ð´Ð»Ñ %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "неÑбаланÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "неправильный клаÑÑ Ñимволов"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "ÑинтакÑÐ¸Ñ ÐºÐ»Ð°ÑÑа Ñимволов: [[:space:]], а не [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ \\ ÑÐºÑ€Ð°Ð½Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "неправильное Ñодержимое в \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "регулÑрное выражение Ñлишком большое"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "неÑбаланÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "не указан ÑинтакÑиÑ"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "неÑбаланÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ )"
@@ -207,7 +207,7 @@ msgstr "РегулÑрное выражение Ñлишком большое"
msgid "Unmatched ) or \\)"
msgstr "Ðепарный Ñимвол ) или \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Ðет предыдущего регулÑрного выражениÑ"
@@ -233,36 +233,32 @@ msgstr "Упакован %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или новее <https://gnu.org/licenses/gpl."
-"html>\n"
+"Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или новее <%s>.\n"
"Это Ñвободное ПО: вы можете изменÑÑ‚ÑŒ и раÑпроÑтранÑÑ‚ÑŒ его.\n"
"Ðет ÐИКÐКИХ ГÐРÐÐТИЙ до Ñтепени, разрешённой законом.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Ðвтор программы — %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Ðвторы программы — %s и %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Ðвторы программы — %s, %s и %s.\n"
@@ -270,7 +266,7 @@ msgstr "Ðвторы программы — %s, %s и %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -282,7 +278,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -294,7 +290,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -306,7 +302,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +314,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -332,7 +328,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -346,7 +342,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -361,34 +357,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
-"Об ошибках Ñообщайте по адреÑу <%s>\n"
-"Об ошибках в переводе Ñообщайте по адреÑу <gnu@d07.ru>\n"
+"Об ошибках Ñообщайте по адреÑу: %s\n"
+"Об ошибках в переводе Ñообщайте по адреÑу: <gnu@d07.ru>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Об ошибках в %s Ñообщайте по адреÑу %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "ДомашнÑÑ Ñтраница %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "ДомашнÑÑ Ñтраница %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Справка по работе Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°Ð¼Ð¸ GNU: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Справка по работе Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°Ð¼Ð¸ GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -505,7 +494,7 @@ msgstr "рекурÑивное Ñкранирование поÑле \\c запÑ
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "команды e/r/w отключены в режиме «пеÑочницы»"
#: sed/compile.c:215
#, c-format
@@ -588,29 +577,29 @@ msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑÑылка \\%d на RHS команды «s»
msgid "regex input buffer length larger than INT_MAX"
msgstr "длина входного буфера регулÑрного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐµ INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Джей ФенлаÑон (Jay Fenlason)"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Том Лорд (Tom Lord)"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Кен Пиццини (Ken Pizzini)"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Паоло Бонзини (Paolo Bonzini)"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Джим Мейеринг (Jim Meyering)"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "ÐÑÑаф Гордон (Assaf Gordon)"
#: sed/sed.c:124
#, c-format
@@ -627,6 +616,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках отправлÑйте на <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Программа sed Ñобрана Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "Ð’ ÑиÑтеме включен SELinux."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "Ð’ ÑиÑтеме выключен SELinux."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Программа sed Ñобрана без поддержки SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -636,7 +641,7 @@ msgstr ""
" [входной-файл]…\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -645,16 +650,16 @@ msgstr ""
" -n, --quiet, --silent\n"
" выключить автоматичеÑкую печать образца\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" отключить вÑе раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ GNU\n"
+" --debug\n"
+" комментировать выполнение программы\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -663,7 +668,7 @@ msgstr ""
" -e script, --expression=Ñценарий\n"
" добавить Ñценарий в иÑполнÑемые команды\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -673,7 +678,7 @@ msgstr ""
" -f script-file, --file=файл-ÑценариÑ\n"
" добавить Ñодержимое файла-ÑÑ†ÐµÐ½Ð°Ñ€Ð¸Ñ Ð² иÑполнÑемые команды\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -682,7 +687,7 @@ msgstr ""
" --follow-symlinks\n"
" переходить по Ñимвольным ÑÑылкам при обработке на меÑте\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -692,7 +697,7 @@ msgstr ""
" править файлы на меÑте (Ñоздаёт копию, еÑли указан "
"СУФФИКС)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -703,7 +708,7 @@ msgstr ""
" открывать файлы в двоичном режиме (CR+LF не "
"обрабатываютÑÑ)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -712,7 +717,7 @@ msgstr ""
" -l N, --line-length=N\n"
" задать желаемую длину до переноÑа Ñтроки Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «l»\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -721,7 +726,7 @@ msgstr ""
" --posix\n"
" отключить вÑе раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ GNU\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -732,7 +737,7 @@ msgstr ""
" иÑпользовать в Ñценарии раÑширенные регулÑрные выражениÑ\n"
" (Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½Ð¾ÑимоÑти иÑпользуйте -E (POSIX)\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -743,7 +748,7 @@ msgstr ""
" раÑÑматривать файлы раздельно, а не в виде одного\n"
" длинного непрерывного потока\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -753,7 +758,7 @@ msgstr ""
" работать в режиме «пеÑочницы»\n"
" (отключает команды e/r/w)\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -765,7 +770,7 @@ msgstr ""
" загружать минимальный объём данных из входных файлов\n"
" и чаще ÑбраÑывать выходные буферы на диÑк\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -774,17 +779,17 @@ msgstr ""
" -z, --null-data\n"
" разделÑÑ‚ÑŒ Ñтроки Ñимволами NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help показать Ñту Ñправку и выйти\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version показать информацию о верÑии и выйти\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -801,13 +806,13 @@ msgstr ""
"файлы не указаны, тогда читаетÑÑ Ñтандартный ввод.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "ошибка при уÑтановке двоичного режима Ð´Ð»Ñ STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "ошибка при уÑтановке двоичного режима Ð´Ð»Ñ STDOUT"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -827,7 +832,7 @@ msgstr "невозможно прикрепить к %s: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "ошибка при уÑтановке двоичного режима Ð´Ð»Ñ Â«%s»"
#: sed/utils.c:207
#, c-format
@@ -857,6 +862,9 @@ msgstr "невозможно выполнить stat Ð´Ð»Ñ %s: %s"
msgid "cannot rename %s: %s"
msgstr "невозможно переименовать %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "ДомашнÑÑ Ñтраница %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/sed.pot b/po/sed.pot
index 7ad4c88..a745249 100644
--- a/po/sed.pot
+++ b/po/sed.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: GNU sed 4.7\n"
+"Project-Id-Version: GNU sed 4.8\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -27,39 +27,39 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr ""
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr ""
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr ""
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -203,7 +203,7 @@ msgstr ""
msgid "Unmatched ) or \\)"
msgstr ""
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr ""
@@ -229,30 +229,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -260,7 +259,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -270,7 +269,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -280,7 +279,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -290,7 +289,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -300,7 +299,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -311,7 +310,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -322,7 +321,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -334,30 +333,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
#: sed/compile.c:146
@@ -556,27 +549,27 @@ msgstr ""
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -593,34 +586,50 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
"\n"
msgstr ""
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
" suppress automatic printing of pattern space\n"
msgstr ""
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
" add the script to the commands to be executed\n"
msgstr ""
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -628,21 +637,21 @@ msgid ""
"executed\n"
msgstr ""
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
" follow symlinks when processing in place\n"
msgstr ""
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" edit files in place (makes backup if SUFFIX supplied)\n"
msgstr ""
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -650,21 +659,21 @@ msgid ""
"specially)\n"
msgstr ""
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
" specify the desired line-wrap length for the `l' command\n"
msgstr ""
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
" disable all GNU extensions.\n"
msgstr ""
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -672,7 +681,7 @@ msgid ""
" (for portability use POSIX -E).\n"
msgstr ""
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -680,14 +689,14 @@ msgid ""
" continuous long stream.\n"
msgstr ""
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -696,24 +705,24 @@ msgid ""
" the output buffers more often\n"
msgstr ""
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr ""
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -724,11 +733,11 @@ msgid ""
"\n"
msgstr ""
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/sk.gmo b/po/sk.gmo
index 28f3a22..3d4ddf5 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index a07d5dc..b4f004c 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,15 +1,15 @@
# Slovak translations for GNU sed package.
-# Copyright (C) 1999, 2002, 2003, 2004, 2005, 2008, 2010, 2016, 2018 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2002, 2003, 2004, 2005, 2008, 2010, 2016, 2018, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Miroslav Vasko <vasko@debian.cz>, 1999.
-# Marcel Telka <marcel@telka.sk>, 2002, 2003, 2004, 2005, 2008, 2010, 2016, 2018.
+# Marcel Telka <marcel@telka.sk>, 2002, 2003, 2004, 2005, 2008, 2010, 2016, 2018, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU sed 4.5.48\n"
+"Project-Id-Version: GNU sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-13 22:14+0100\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 12:08+0100\n"
"Last-Translator: Marcel Telka <marcel@telka.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
"Language: sk\n"
@@ -28,39 +28,39 @@ msgstr "chyba zápisu"
msgid "preserving permissions for %s"
msgstr "zachovanie oprávnení pre %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "neuzavretá ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "neplatná trieda znakov"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "syntax triedy znakov je [[:space:]], nie [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "neukonÄená riadiaca sekvencia \\"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "neplatný obsah \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "regulárny výraz je príliš veľký"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "neuzavretá ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "nebola zadaná syntax"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "neuzavretá )"
@@ -204,7 +204,7 @@ msgstr "Regulárny výraz je príliš veľký"
msgid "Unmatched ) or \\)"
msgstr "Nezodpovedajúca ) alebo \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Bez predchádzajúceho regulárneho výrazu"
@@ -230,36 +230,32 @@ msgstr "Zabalil %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Licencia GPLv3+: GNU GPL verzia 3 alebo novšia <https://gnu.org/licenses/gpl."
-"html>.\n"
+"Licencia GPLv3+: GNU GPL verzia 3 alebo novšia <%s>.\n"
"Toto je voľne šíriteľný softvér: môžete ho voľne meniÅ¥ a Äalej šíriÅ¥.\n"
"Neposkytuje sa ŽIADNA ZÃRUKA, v rozsahu povolenom zákonmi.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Napísal %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Napísali %s a %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Napísali %s, %s a %s.\n"
@@ -267,7 +263,7 @@ msgstr "Napísali %s, %s a %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -279,7 +275,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -291,7 +287,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -303,7 +299,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -315,7 +311,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -329,7 +325,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -343,7 +339,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -358,38 +354,29 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Chyby oznamujte na: %s (iba anglicky)\n"
"Chyby slovenského prekladu oznamujte na: <sk-i18n@lists.linux.sk>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
"Chyby %s oznamujte na: %s (iba anglicky)\n"
"Chyby slovenského prekladu oznamujte na: <sk-i18n@lists.linux.sk>\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Domovská stránka %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Domovská stránka %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Všeobecný pomocník na používanie softvéru GNU: <https://www.gnu.org/gethelp/"
-">\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Všeobecný pomocník na používanie softvéru GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -590,27 +577,27 @@ msgid "regex input buffer length larger than INT_MAX"
msgstr ""
"veľkosÅ¥ vstupnej vyrovnávacej pamäte regulárneho výrazu je väÄÅ¡ia ako INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -630,6 +617,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Správy o chybách zasielajte na adresu <%s> (iba anglicky).\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Tento program sed bol skompilovaný s podporou SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "Na tomto poÄítaÄi je SELinux je aktívne."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "Na tomto poÄítaÄi je SELinux je neaktívne."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Tento program sed bol skompilovaný bez podpory SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -639,7 +642,7 @@ msgstr ""
"súbor]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -648,7 +651,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" potlaÄiÅ¥ automatický výpis priestoru vzorov\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -657,7 +660,7 @@ msgstr ""
" --debug\n"
" komentovať beh programu\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -666,7 +669,7 @@ msgstr ""
" -e skript, --expression=skript\n"
" pridať skript k príkazom, ktoré majú byť vykonané\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -677,7 +680,7 @@ msgstr ""
" pridať obsah súboru skript-súbor k príkazom, ktoré majú byť "
"vykonané\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -686,7 +689,7 @@ msgstr ""
" --follow-symlinks\n"
" nasledovať symbolické odkazy pri spracovávaní na mieste\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -696,7 +699,7 @@ msgstr ""
" upraviť súbory na mieste (vytvoria sa zálohy, ak je zadaná "
"PRÃPONA)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -707,7 +710,7 @@ msgstr ""
" otvoriť súbory v binárnom režime (CR+LF nie sú špeciálne "
"spracovávané)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -717,7 +720,7 @@ msgstr ""
" nastaviť požadovanú dĺžku pre zalomenie riadkov pre príkaz "
"`l'\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -726,7 +729,7 @@ msgstr ""
" --posix\n"
" zakázať všetky rozšírenia GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -737,7 +740,7 @@ msgstr ""
" použiť rozšírené regulárne výrazy v skripte\n"
" (pre prenositeľnosť použite POSIXové -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -747,7 +750,7 @@ msgstr ""
" -s, --separate\n"
" spracovať súbory ako oddelené a nie ako jeden spojitý.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -756,7 +759,7 @@ msgstr ""
" --sandbox\n"
" pracovať v režime sandbox (zakázať príkazy e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -769,7 +772,7 @@ msgstr ""
"vyprázdňovať\n"
" výstupné vyrovnávacie pamäte ÄastejÅ¡ie\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -778,17 +781,17 @@ msgstr ""
" -z, --null-data\n"
" oddeliť riadky znakmi NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help vypísaÅ¥ túto pomoc a skonÄiÅ¥\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version vypísaÅ¥ informáciu o verzii a skonÄiÅ¥\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -806,11 +809,11 @@ msgstr ""
"Ak nebudú vstupné súbory zadané, bude Äítaný Å¡tandardný vstup.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "zlyhalo nastavenie binárneho režimu na štandardnom vstupe (STDIN)"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "zlyhalo nastavenie binárneho režimu na štandardnom výstupe (STDOUT)"
@@ -861,10 +864,3 @@ msgstr "nepodarilo sa zistiť stav %s: %s"
#, c-format
msgid "cannot rename %s: %s"
msgstr "nepodarilo sa premenovať %s: %s"
-
-#~ msgid ""
-#~ " -R, --regexp-perl\n"
-#~ " use Perl 5's regular expressions syntax in the script.\n"
-#~ msgstr ""
-#~ " -R, --regexp-perl\n"
-#~ " použiť syntax regulárnych výrazov z Perlu 5 v skripte.\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index 1104e22..aa3d131 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 3424599..dcfd284 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2010-11-16 14:45+0100\n"
"Last-Translator: Primož Peterlin <primozz.peterlin@gmail.com>\n"
"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -29,42 +29,42 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Neveljavno ime razreda znakov"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "Neveljavna vsebina \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Regularni izraz prevelik"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -210,7 +210,7 @@ msgstr "Regularni izraz prevelik"
msgid "Unmatched ) or \\)"
msgstr "Oklepaj ) ali \\) brez zaklepaja"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Prejšnji regularni izraz manjka"
@@ -236,30 +236,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -267,7 +266,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -277,7 +276,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -287,7 +286,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -297,7 +296,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +306,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -318,7 +317,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -329,7 +328,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -341,31 +340,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"DomaÄa stran GNU sed: <http://www.gnu.org/software/sed/>.\n"
"SploÅ¡na pomoÄ pri rabi programja GNU: <http://www.gnu.org/gethelp/>.\n"
@@ -569,27 +561,27 @@ msgstr "neveljavni sklic \\%d na desni strani ukaza »s«"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -608,6 +600,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -616,7 +624,7 @@ msgstr ""
"Uporaba: %s [IZBIRA]... {skript--Äe-je-en-sam} [vhodna-datoteka]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -625,7 +633,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" brez samodejnega izpisa prostora vzorcev\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -634,7 +642,7 @@ msgstr ""
" --posix\n"
" onemogoÄi vse razÅ¡iritve GNU\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -643,7 +651,7 @@ msgstr ""
" -e SKRIPT, --expression=SKRIPT\n"
" dodaj SKRIPT med ukaze, ki se izvedejo\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -653,7 +661,7 @@ msgstr ""
" -f SKRIPTNA_DATOTEKA, --file=SKRIPTNA_DATOTEKA\n"
" dodaj vsebino SKRIPTNE DATOTEKE med ukaze, ki se izvedejo\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -662,7 +670,7 @@ msgstr ""
" --follow-symlinks\n"
" pri obdelavi na mestu sledi simbolnim povezavam\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -673,7 +681,7 @@ msgstr ""
"z\n"
" dano pripono, Äe je ta podana)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -683,7 +691,7 @@ msgstr ""
" -b, --binary\n"
" odpri kot binarno datoteko (brez posebne obravnave CR+LF)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -692,7 +700,7 @@ msgstr ""
" -l N, --line-length=N\n"
" doloÄi Å¡irino vrstice za ukaz ,l` na N znakov\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -701,7 +709,7 @@ msgstr ""
" --posix\n"
" onemogoÄi vse razÅ¡iritve GNU\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -711,7 +719,7 @@ msgstr ""
" -r, --regexp-extended\n"
" dovoli uporabo razširjenih regularnih izrazov.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -722,14 +730,14 @@ msgstr ""
" datoteke obravnavaj kot loÄene, ne pa kot neprekinjen tok\n"
" podatkov\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -742,24 +750,24 @@ msgstr ""
"pogosteje\n"
" izprazni izhodni medpomnilnik\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help prikaži ta navodila in konÄaj\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version razliÄica programa\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -776,11 +784,11 @@ msgstr ""
"ÄŒe ni podano nobeno ime datoteke, se bere standardni vhod.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/sr.gmo b/po/sr.gmo
index ee9d816..50d7296 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 7ac52c4..40aa613 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed-4.2.2.177\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2016-12-18 08:03+0200\n"
"Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
@@ -28,39 +28,39 @@ msgstr "грешка пиÑања"
msgid "preserving permissions for %s"
msgstr "причувавам овлашћења за %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "неуравнотежена ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "неиÑправна клаÑа знака"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "ÑинтакÑа клаÑе знака је [[:размак:]], а не [:размак:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "недовршена \\ излазим"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "неиÑправан Ñадржај \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "регуларни израз је превелик"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "неуравнотежена ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "ÑинтакÑа није наведена"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "неуравнотежена )"
@@ -204,7 +204,7 @@ msgstr "Регуларан израз је превелик"
msgid "Unmatched ) or \\)"
msgstr "Ðије упарена ) или \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Ðема претходног регуларног израза"
@@ -230,15 +230,13 @@ msgstr "Запаковао је %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
-#, fuzzy
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
"\n"
"Дозвола ОЈЛв3+: Гнуова ОЈЛ издање 3 или каÑније <http://gnu.org/licenses/gpl."
@@ -248,19 +246,19 @@ msgstr ""
"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "ÐапиÑао је %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "ÐапиÑали Ñу %s и %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "ÐапиÑали Ñу %s, %s, и %s.\n"
@@ -268,7 +266,7 @@ msgstr "ÐапиÑали Ñу %s, %s, и %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -280,7 +278,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -292,7 +290,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -304,7 +302,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +314,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -330,7 +328,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -344,7 +342,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -359,33 +357,26 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
-#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+#: lib/version-etc.c:249
+#, fuzzy, c-format
+msgid "Report bugs to: %s\n"
msgstr ""
"\n"
"Грешке пријавите на: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Грешке програма „%s“ пријавите на: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Матична Ñтраница за „%s“: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, fuzzy, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Матична Ñтраница за „%s“: <http://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr "Општа помоћ за Гнуов Ñофтвер: <http://www.gnu.org/gethelp/>\n"
#: sed/compile.c:146
@@ -586,27 +577,27 @@ msgstr "неиÑправна референца \\%d на деÑној ÑтраÐ
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Ðеј ФенлаÑон"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Том Лорд"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Кен Пицини"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Паоло Бонцини"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -625,6 +616,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Извештаје о грешкама пошаљите на: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -634,7 +641,7 @@ msgstr ""
"датотека]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -643,7 +650,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" обуÑтавља аутоматÑки иÑÐ¿Ð¸Ñ Ð¿Ñ€Ð¾Ñтора образаца\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -652,7 +659,7 @@ msgstr ""
" --posix\n"
" иÑкључује Ñва ГÐУ-ова проширења.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -661,7 +668,7 @@ msgstr ""
" -e ÑпиÑ, --expression=Ñкрипта\n"
" додаје Ñкрипту наредбама да би била извршена\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -671,7 +678,7 @@ msgstr ""
" -f ÑпиÑотека, --file=ÑпиÑотека\n"
" додаје Ñадржај ÑпиÑотеке наредбама да би била извршена\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -680,7 +687,7 @@ msgstr ""
" --follow-symlinks\n"
" прати Ñимболичне везе када обрађује на меÑту\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -690,7 +697,7 @@ msgstr ""
" уређује датотеке на меÑту (прави резерву ако је дат "
"СУФИКС)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -701,7 +708,7 @@ msgstr ""
" отвара датотеке у бинарном режиму (ЦР+ЛФ ниÑу поÑебно "
"обрађени)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -710,7 +717,7 @@ msgstr ""
" -l N, --line-length=Ð\n"
" наводи жељену ширину реда за наредбу „l“\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -719,7 +726,7 @@ msgstr ""
" --posix\n"
" иÑкључује Ñва ГÐУ-ова проширења.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -730,7 +737,7 @@ msgstr ""
" кориÑти проширене регуларне изразе у ÑпиÑу\n"
" (зарад преноÑивоÑти кориÑтитие „POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -741,7 +748,7 @@ msgstr ""
" Ñматра датотеке одвојеним а не као један,\n"
" непрекидан дуги ток.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, fuzzy, c-format
msgid ""
" --sandbox\n"
@@ -750,7 +757,7 @@ msgstr ""
" --sandbox\n"
" ради у режиму заштићеног окружења.\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -762,7 +769,7 @@ msgstr ""
" учитава најмање количине података из улазних датотека и\n"
" чешће празни излазне бафере\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -771,17 +778,17 @@ msgstr ""
" -z, --null-data\n"
" раздваја редове ÐИШТÐÐ’ÐИМ знацима\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help приказује ову помоћ и излази\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version иÑпиÑује податке о издању и излази\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -798,11 +805,11 @@ msgstr ""
"Ñтандардног улаза.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
@@ -854,6 +861,10 @@ msgstr "не могу да добавим податке „%s“: %s"
msgid "cannot rename %s: %s"
msgstr "не могу да преименујем %s: %s"
+#, fuzzy
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Матична Ñтраница за „%s“: <http://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 788d35a..5508c1b 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 716830d..7b20ed6 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,15 +1,15 @@
# Swedish messages for sed.
-# Copyright © 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2015, 2016, 2017, 2018 Free Software Foundation, Inc.
+# Copyright © 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2015, 2016, 2017, 2018, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Christian Rose <menthos@menthos.com>, 1999, 2000, 2001, 2002, 2003, 2004, 2008.
-# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017, 2018.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017, 2018, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-16 20:18+0100\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 17:35+0100\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Poedit 2.2.4\n"
#: lib/closeout.c:122
msgid "write error"
@@ -29,39 +29,39 @@ msgstr "skrivfel"
msgid "preserving permissions for %s"
msgstr "bevarar rättigheter för %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "obalanserad ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "ogiltig teckenklass"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "syntax för teckenklass är [[:space:]], inte [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "oavslutad \\-sekvens"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "ogiltigt innehåll i \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "reguljärt uttryck för stort"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "obalanserad ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "ingen syntax angiven"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "obalanserad )"
@@ -205,7 +205,7 @@ msgstr "Reguljärt uttryck för stort"
msgid "Unmatched ) or \\)"
msgstr "Obalanserad ) eller \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Inget tidigare reguljärt uttryck"
@@ -231,36 +231,32 @@ msgstr "Paketerad av %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Licens GPLv3+: GNU GPL version 3 eller senare <https://gnu.org/licenses/gpl."
-"html>\n"
+"Licens GPLv3+: GNU GPL version 3 eller senare <%s>\n"
"Det här är fri programvara: du får ändra och distribuera den.\n"
"Det finns INGEN GARANTI, så långt som tillåts enligt lag.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Skrivet av %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Skrivet av %s och %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Skrivet av %s, %s och %s.\n"
@@ -268,7 +264,7 @@ msgstr "Skrivet av %s, %s och %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -280,7 +276,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -292,7 +288,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -304,7 +300,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -316,7 +312,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -330,7 +326,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -344,7 +340,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -359,34 +355,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
"Rapportera fel till: %s\n"
"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Rapportera fel i %s till: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Webbplats för %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Webbplats för %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "Allmän hjälp för GNU-programvara: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Allmän hjälp för GNU-programvara: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -590,27 +579,27 @@ msgstr "ogiltig referens \\%d pÃ¥ â€sâ€-kommandots högersida"
msgid "regex input buffer length larger than INT_MAX"
msgstr "indatabuffertlängd för reguljära uttryck större än INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -631,6 +620,22 @@ msgstr ""
"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Detta sed-program byggdes med stöd för SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux är aktiverat på detta system."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux är inaktiverat på detta system."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Detta sed-program byggdes utan stöd för SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -639,7 +644,7 @@ msgstr ""
"Användning: %s [FLAGGA]… {skript-endast-om-inga-andra} [indatafil]…\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -648,7 +653,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" förhindrar automatisk utskrift av mönsterutrymme\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -657,7 +662,7 @@ msgstr ""
" --debug\n"
" kommentera körning av program\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -666,7 +671,7 @@ msgstr ""
" -e skript, --expression=skript\n"
" lägg till skript till de kommandon som ska utföras\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -677,7 +682,7 @@ msgstr ""
" lägg till innehållet i skriptfil till de kommandon som ska\n"
" utföras\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -686,7 +691,7 @@ msgstr ""
" --follow-symlinks\n"
" följ symlänkar när behandling sker på plats\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -696,7 +701,7 @@ msgstr ""
" redigera filer på plats (skapar säkerhetskopia om ÄNDELSE\n"
" tillhandahålls)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -706,7 +711,7 @@ msgstr ""
" -b, --binary\n"
" öppna filer i binärläge (CR+LF särbehandlas inte)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -715,7 +720,7 @@ msgstr ""
" -l N, --line-length=N\n"
" ange önskad radbrytningslängd för â€lâ€-kommandot\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -724,7 +729,7 @@ msgstr ""
" --posix\n"
" inaktivera alla GNU-utökningar.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -735,7 +740,7 @@ msgstr ""
" använd utökade reguljära uttryck i skriptet\n"
" (för portabilitet använd POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -746,7 +751,7 @@ msgstr ""
" betrakta filer som separata istället för som en\n"
" kontinuerlig lång dataström.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -755,7 +760,7 @@ msgstr ""
" --sandbox\n"
" arbeta i sandlådeläge (inaktivera kommandona e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -767,7 +772,7 @@ msgstr ""
" läs in minimala mängder data från indatafilerna och töm\n"
" utdatabuffertarna oftare\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -776,17 +781,17 @@ msgstr ""
" -z, --null-data\n"
" separera rader med nolltecken\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help visa denna hjälptext och avsluta\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version visa versionsinformation och avsluta\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -803,11 +808,11 @@ msgstr ""
"läses standard in.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "misslyckades med att ställa in binärläge för STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "misslyckades med att ställa in binärläge för STDOUT"
@@ -858,6 +863,9 @@ msgstr "kan inte ta status på %s: %s"
msgid "cannot rename %s: %s"
msgstr "kan inte byta namn på %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Webbplats för %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 1a91fc4..713d27b 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index f374897..7352113 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sed 4.2.1\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
"PO-Revision-Date: 2013-04-17 17:34+0200\n"
"Last-Translator: Volkan Gezer <vlkngzr@gmail.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -28,43 +28,43 @@ msgstr ""
msgid "preserving permissions for %s"
msgstr ""
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr ""
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
#, fuzzy
msgid "invalid character class"
msgstr "Hatalı karakter sınıf ismi"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr ""
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr ""
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
#, fuzzy
msgid "invalid content of \\{\\}"
msgstr "\\{\\} içeriği hatalı"
#
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
#, fuzzy
msgid "regular expression too big"
msgstr "Düzenli ifade fazla büyük"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr ""
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr ""
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr ""
@@ -218,7 +218,7 @@ msgstr "Düzenli ifade fazla büyük"
msgid "Unmatched ) or \\)"
msgstr "EÅŸleÅŸmeyen ) or \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Daha önce düzenli ifade yok"
@@ -244,30 +244,29 @@ msgstr ""
msgid "(C)"
msgstr ""
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr ""
@@ -275,7 +274,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -285,7 +284,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +294,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -315,7 +314,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -326,7 +325,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -337,7 +336,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -349,31 +348,24 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr ""
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr ""
-#: lib/version-etc.c:253
-#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr ""
-
-#: lib/version-etc.c:256
-#, fuzzy
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+#: lib/version-etc.c:260
+#, fuzzy, c-format
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"GNU sed ana sayfası: <http://www.gnu.org/software/sed/>.\n"
"GNU yazılımı kullanımı hakkında genel yardım: <http://www.gnu.org/gethelp/"
@@ -577,27 +569,27 @@ msgstr "`s' komutunun RHS'sinde geçersiz \\%d referansı"
msgid "regex input buffer length larger than INT_MAX"
msgstr ""
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr ""
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr ""
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr ""
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr ""
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr ""
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr ""
@@ -617,6 +609,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr ""
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr ""
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr ""
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr ""
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr ""
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -625,7 +633,7 @@ msgstr ""
"Kullanım: %s [SEÇENEK]... {betik-eğer-başka-betik-yoksa} [girdi-dosyası]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -634,7 +642,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" kalıp uzayının otomatik yazdırılmasını kaldırır\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, fuzzy, c-format
msgid ""
" --debug\n"
@@ -643,7 +651,7 @@ msgstr ""
" --posix\n"
" bütün GNU eklentilerini devre dışı bırakır.\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -652,7 +660,7 @@ msgstr ""
" -e script, --expression=betik\n"
" betiÄŸi, koÅŸturulacak komutlara ekler\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -662,7 +670,7 @@ msgstr ""
" -f betik-dosyası, --file=betik-dosyası\n"
" betik-dosyası'nın içeriğini, koşturulacak komutlara ekler\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -671,7 +679,7 @@ msgstr ""
" --follow-symlinks\n"
" symlink'leri yerinde iÅŸlerken takip et\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, fuzzy, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -681,7 +689,7 @@ msgstr ""
" dosyaları yerinde değiştirir (eğer uzantı verilmişse yedek\n"
" oluÅŸturur)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -691,7 +699,7 @@ msgstr ""
" -b, --binary\n"
" dosyaları ikili kipte aç (CR+LF'ler özel olarak işlenmez)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -700,7 +708,7 @@ msgstr ""
" -l N, --line-length=N\n"
" `l' komutu için istenen satır sarma uzunluğunu belirtir\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -709,7 +717,7 @@ msgstr ""
" --posix\n"
" bütün GNU eklentilerini devre dışı bırakır.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, fuzzy, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -719,7 +727,7 @@ msgstr ""
" -r, --regexp-extended\n"
" betikte geliştirilmiş düzenli ifadeler kullanır.\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, fuzzy, c-format
msgid ""
" -s, --separate\n"
@@ -730,14 +738,14 @@ msgstr ""
" dosyaları, tek uzun bir akış yerine ayrı ayrı "
"deÄŸerlendirir.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
" operate in sandbox mode (disable e/r/w commands).\n"
msgstr ""
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -749,24 +757,24 @@ msgstr ""
" girdi dosyalarından asgari miktarda veri yükler ve\n"
" çıktı yastıklarını daha sık boşaltır\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
" separate lines by NUL characters\n"
msgstr ""
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help bu yardımı gösterir ve çıkar\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version sürüm bilgisinin gösterir ve çıkar\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -783,11 +791,11 @@ msgstr ""
"verilmemiÅŸ ise, standart girdi okunur.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr ""
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr ""
diff --git a/po/uk.gmo b/po/uk.gmo
index c175aff..ed5d756 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index b99cd43..a57d55b 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -4,21 +4,21 @@
#
# Volodymyr M. Lisivka <lvm@mystery.lviv.net>, 2003.
# Dmytro O. Redchuk <dor@kiev-online.net>, 2002.
-# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2016, 2018.
+# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2016, 2018, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-13 21:02+0200\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 14:16+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
-"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 20.03.70\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
@@ -31,39 +31,39 @@ msgstr "помилка під Ñ‡Ð°Ñ Ñпроби запиÑу"
msgid "preserving permissions for %s"
msgstr "зберігаємо права доÑтупу Ð´Ð»Ñ %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "неурівноважена ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "некоректний ÐºÐ»Ð°Ñ Ñимволів"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "ÑинтакÑÐ¸Ñ ÐºÐ»Ð°Ñу Ñимволів передбачає [[:space:]], а не [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "незавершене ÐµÐºÑ€Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ \\"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "некоректний вміÑÑ‚ \\{\\}"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "занадто об'ємний формальний вираз"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "неурівноважена ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "не вказано ÑинтакÑиÑу"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "неурівноважена )"
@@ -207,7 +207,7 @@ msgstr "Ðадто великий регулÑрний вираз"
msgid "Unmatched ) or \\)"
msgstr "Ðе закрито ) чи \\)"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Ðемає попереднього регулÑрного виразу"
@@ -233,37 +233,34 @@ msgstr "ÐŸÐ°ÐºÑƒÐ²Ð°Ð½Ð½Ñ â€” %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Умови Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у GPLv3+: GNU GPL верÑÑ–Ñ— 3 або новішій, "
-"<https://gnu.org/licenses/gpl.html>\n"
+"Умови Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у GPLv3+: GNU GPL верÑÑ–Ñ— 3 або новішій, <%s>\n"
"Це вільне програмне забезпеченнÑ: ви можете вільно змінювати Ñ– поширювати "
"його.\n"
"Вам не надаєтьÑÑ Ð–ÐžÐ”ÐИХ ГÐРÐÐТІЙ, окрім гарантій передбачених "
"законодавÑтвом.\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Ðвтор — %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Ðвтор — %s та %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Ðвтори — %s, %s Ñ– %s.\n"
@@ -271,7 +268,7 @@ msgstr "Ðвтори — %s, %s Ñ– %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -283,7 +280,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -295,7 +292,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -307,7 +304,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -319,7 +316,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -333,7 +330,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -347,7 +344,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -362,35 +359,27 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
-msgstr ""
-"\n"
-"ПовідомлÑйте про вади на адреÑу: %s\n"
+msgid "Report bugs to: %s\n"
+msgstr "ПовідомлÑйте про вади на адреÑу: %s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Про вади у %s повідомлÑйте на адреÑу %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
msgstr ""
"Загальна довідкова Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‰Ð¾Ð´Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ "
-"GNU: <https://www.gnu.org/gethelp/>\n"
+"GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -590,27 +579,27 @@ msgstr "некоректне поÑÐ¸Ð»Ð°Ð½Ð½Ñ \\%d праворуч від кÐ
msgid "regex input buffer length larger than INT_MAX"
msgstr "довжина вхідного буфера формального виразу перевищує INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -630,6 +619,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Про вади Ñлід повідомлÑти на таку адреÑу: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Цей варіант sed було зібрано із підтримкою SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "У цій ÑиÑтемі SELinux увімкнено."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "У цій ÑиÑтемі SELinux вимкнено"
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Цей варіант sed було зібрано без підтримки SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -639,7 +644,7 @@ msgstr ""
"вхідних даних]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -648,7 +653,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" не виводити автоматично пробіли шаблонів\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -657,7 +662,7 @@ msgstr ""
" --debug\n"
" анотувати Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -666,7 +671,7 @@ msgstr ""
" -e Ñкрипт, --expression=Ñкрипт\n"
" додати Ñкрипт до команд, Ñкі Ñлід виконати\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -677,7 +682,7 @@ msgstr ""
" додати вміÑÑ‚ файла файл-Ñкрипту до команд, Ñкі Ñлід "
"виконати\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -686,7 +691,7 @@ msgstr ""
" --follow-symlinks\n"
" переходити за Ñимволічними поÑиланнÑм під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -696,7 +701,7 @@ msgstr ""
" редагувати файл на міÑці (Ñтворювати резервні копії, Ñкщо "
"вказано ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -707,7 +712,7 @@ msgstr ""
" відкривати файли у бінарному режимі (CR+LF не "
"оброблÑÑŽÑ‚ÑŒÑÑ)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -717,7 +722,7 @@ msgstr ""
" вказати бажану довжину Ñ€Ñдка Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ "
"«l»\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -726,7 +731,7 @@ msgstr ""
" --posix\n"
" вимкнути вÑÑ– Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -737,7 +742,7 @@ msgstr ""
" викориÑтовувати розширені формальні вирази у Ñкрипті\n"
" (Ð´Ð»Ñ ÑуміÑноÑÑ‚Ñ– кориÑтуйтеÑÑ -E POSIX).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -749,7 +754,7 @@ msgstr ""
"неперервним\n"
" довгим потоком.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -758,7 +763,7 @@ msgstr ""
" --sandbox\n"
" працювати у режимі піÑочниці (вимкнути команди e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -771,7 +776,7 @@ msgstr ""
"даних і\n"
" чаÑтіше ÑпорожнÑти буфери вихідних даних\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -780,19 +785,19 @@ msgstr ""
" -z, --null-data\n"
" відокремити Ñ€Ñдки Ñимволами NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help показати цю довідку та вийти\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr ""
" --version показати інформацію щодо верÑÑ–Ñ— Ñ– вийти\n"
"\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -810,11 +815,11 @@ msgstr ""
"прочитано зі Ñтандартного джерела вхідних даних.\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "не вдалоÑÑ Ð²Ñтановити двійковий режим Ð´Ð»Ñ STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "не вдалоÑÑ Ð²Ñтановити двійковий режим Ð´Ð»Ñ STDOUT"
@@ -867,6 +872,9 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані щÐ
msgid "cannot rename %s: %s"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index 00584df..ecdf080 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index f9a9326..62c6582 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -3,14 +3,14 @@
# Copyright © 2016 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
# Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
-# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2014, 2016, 2018.
+# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2014, 2016, 2018, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.5.48\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-12-15 14:17+0700\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-08 14:22+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
"Language: vi\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Gtranslator 2.91.7\n"
+"X-Generator: Poedit 2.2.4\n"
#: lib/closeout.c:122
msgid "write error"
@@ -30,39 +30,39 @@ msgstr "lá»—i ghi"
msgid "preserving permissions for %s"
msgstr "giữ nguyên quyá»n hạn cho %s"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "thiếu dấu ngoặc vuông mở ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "sai lớp ký tự"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "cú pháp lớp ký tự là [[:space:]], không phải [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "chưa kết thúc thoát chuỗi \\"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "nội dung của “\\{\\}†không hợp lệ"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "biểu thức chính quy quá lớn"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "thiếu dấu ngoặc đơn mở ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "chưa đưa ra cú pháp"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "thiếu dấu ngoặc đơn đóng )"
@@ -172,11 +172,11 @@ msgstr "Có ký tự [, [^, [:, [., hay [= lẻ cặp"
#: lib/regcomp.c:159
msgid "Unmatched ( or \\("
-msgstr "Có dấu ngoặc mở “(†hay “\\(†lẻ đôi"
+msgstr "ChÆ°a khá»›p cặp “(†hoặc “\\(â€"
#: lib/regcomp.c:162
msgid "Unmatched \\{"
-msgstr "Có dấu ngoặc đơn mở “\\(†lẻ đôi"
+msgstr "ChÆ°a khá»›p cặp “\\{â€"
#: lib/regcomp.c:165
msgid "Invalid content of \\{\\}"
@@ -206,7 +206,7 @@ msgstr "Biểu thức chính quy quá lớn"
msgid "Unmatched ) or \\)"
msgstr "Có dấu ngoặc đơn đóng “)†hay “\\)†lẻ đôi"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "Không có biểu thức chính quy đi trước"
@@ -232,36 +232,32 @@ msgstr "Äóng gói bởi %s\n"
msgid "(C)"
msgstr "©"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"Giấy phép GPL pb3+: Giấy phép Công cộng GNU phiên bản 3 hay sau <https://gnu."
-"org/licenses/gpl.html>.\n"
+"Giấy phép GPL pb3+: Giấy phép Công cộng GNU phiên bản 3 hay sau <%s>.\n"
"Äây là phần má»m tá»± do: bạn có quyá»n sá»­a đổi và phát hành lại nó.\n"
"KHÔNG CÓ BẢO HÀNH GÃŒ CẢ, vá»›i Ä‘iá»u kiện được pháp luật cho phép.\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "Viết bởi %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "Viết bởi %s và %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "Viết bởi %s, %s và %s.\n"
@@ -269,7 +265,7 @@ msgstr "Viết bởi %s, %s và %s.\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -281,7 +277,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -293,7 +289,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +301,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +313,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -331,7 +327,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -345,7 +341,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -360,36 +356,28 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
-"Báo cáo lỗi cho: %s\n"
-"Báo cáo lỗi dịch cho nhóm dịch tiếng Việt: <translation-team-vi@lists."
-"sourceforge.net>\n"
+"Thông báo lỗi cho: %s\n"
+"Thông báo lỗi dịch tiếng Việt cho: <http://translationproject.org/team/vi."
+"html>\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "Báo cáo lỗi %s cho: %s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "Trang chủ %s: <%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "Trang chủ %s: <https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Trợ giúp chung vá» cách sá»­ dụng phần má»m GNU: <https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "Trợ giúp chung vá» cách sá»­ dụng phần má»m GNU: <%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -588,27 +576,27 @@ msgstr "tham chiếu không hợp lệ “\\%d†bên phải lệnh “sâ€"
msgid "regex input buffer length larger than INT_MAX"
msgstr "chiá»u dài bá»™ đện đầu vào regex lá»›n hÆ¡n INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
msgstr "Assaf Gordon"
@@ -628,6 +616,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "Gửi thư điện tử báo cáo lỗi đến: <%s>.\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "Chương trình sed này được biên dịch có hỗ trợ SELinux."
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "SELinux được bật trên hệ thống này."
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "SELinux bị vô hiệu hoá trên hệ thống này."
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "Chương trình sed này được biên dịch mà không hỗ trợ SELinux."
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -637,7 +641,7 @@ msgstr ""
"tin-đầu-vào]…\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -646,7 +650,7 @@ msgstr ""
" -n, --quiet, --silent\n"
" thu hồi chức năng tự động in ra khoảng cách mẫu\n"
-#: sed/sed.c:144
+#: sed/sed.c:160
#, c-format
msgid ""
" --debug\n"
@@ -655,7 +659,7 @@ msgstr ""
" --debug\n"
" điễn giải việc thực thi chương trình\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -664,7 +668,7 @@ msgstr ""
" -e văn_lệnh, --expression=văn_lệnh\n"
" thêm văn lệnh này vào các câu lệnh cần thực hiện\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -675,7 +679,7 @@ msgstr ""
" thêm nội dung của tập tin văn lệnh này\n"
" vào các câu lệnh cần thực hiện\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -684,7 +688,7 @@ msgstr ""
" --follow-symlinks\n"
" theo liên kết má»m khi xá»­ lý tại chá»—\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -694,7 +698,7 @@ msgstr ""
" chỉnh sửa tập tin tại chỗ\n"
" (tạo bản sao lưu nếu phần mở rộng được áp dụng)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -705,7 +709,7 @@ msgstr ""
" mở tập tin ở chế độ nhị phân (không phải xử lý một cách\n"
" đặc biệt đối với các ký tự xuống dòng CR+LF)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -714,7 +718,7 @@ msgstr ""
" -l N, --line-length=N\n"
" chỉ ra chiá»u dài muốn ngắt dòng cho lệnh “lâ€\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -723,7 +727,7 @@ msgstr ""
" --posix\n"
" tắt má»i phần mở rá»™ng của GNU.\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -734,7 +738,7 @@ msgstr ""
" dùng biểu thức chính quy đã mở rộng trong văn lệnh.\n"
" (để tương thích khi dùng POSIX -E).\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -745,7 +749,7 @@ msgstr ""
" coi các tập tin là riêng với nhau, chứ không phải đơn,\n"
" luồng liên tục.\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -754,7 +758,7 @@ msgstr ""
" --sandbox\n"
" thực hiện trong chế độ sandbox (tắt lệnh e/r/w).\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -767,7 +771,7 @@ msgstr ""
" và đẩy dữ liệu của bá»™ đệm kết xuất lên Ä‘Ä©a thÆ°á»ng xuyên "
"hơn\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -776,17 +780,17 @@ msgstr ""
" -z, --null-data\n"
" ngăn cách các dòng bằng ký tự NUL\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help hiện trợ giúp này rồi thoát\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version xuất thông tin phiên bản rồi thoát\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -803,18 +807,18 @@ msgstr ""
"còn lại là tên của tập tin đầu vào; không chỉ ra tập tin đầu\n"
"vào thì nó dùng đầu vào tiêu chuẩn.\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
msgstr "gặp lỗi khi đặt chế độ nhị phân trên STDIN"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
msgstr "gặp lỗi khi đặt chế độ nhị phân trên STDOUT"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
msgid "cannot remove %s: %s"
-msgstr "không thể gỡ bỠ%s: %s "
+msgstr "không thể gỡ bỠ%s: %s"
#: sed/utils.c:146
#, c-format
@@ -857,6 +861,9 @@ msgstr "không thể lấy thống kê %s: %s"
msgid "cannot rename %s: %s"
msgstr "không thể đổi tên %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "Trang chủ %s: <https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 3ac9831..f958074 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index f1c9588..97b3d01 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -4,13 +4,13 @@
# Copyright (C) 2002, 2007, 2008 Free Software Foundation, Inc.
# Wang Li <charles@linux.net.cn>, 2002.
# LI Daobing <lidaobing@gmail.com>, 2007, 2008.
-# Boyuan Yang <073plan@gmail.com>, 2017, 2018.
+# Boyuan Yang <073plan@gmail.com>, 2017, 2018, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.4.104\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-05-14 20:32+0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-06 10:40-0500\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.0.7\n"
+"X-Generator: Poedit 2.2.4\n"
#: lib/closeout.c:122
msgid "write error"
@@ -30,39 +30,39 @@ msgstr "写入错误"
msgid "preserving permissions for %s"
msgstr "ä¿ç•™ %s çš„æƒé™æœªæ”¹å˜"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "ä¸å¯¹ç§°çš„ ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "éžæ³•çš„字符类型"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "字符类型语法是 [[:space:]],ä¸æ˜¯ [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "未结æŸçš„ \\ 转义"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "“\\{\\}â€ä¸­å†…容éžæ³•"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "正则表达å¼è¿‡å¤§"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "ä¸å¯¹ç§°çš„ ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "未指定语法"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "ä¸å¯¹ç§°çš„ )"
@@ -206,7 +206,7 @@ msgstr "正则表达å¼è¿‡å¤§"
msgid "Unmatched ) or \\)"
msgstr "未匹é…的“)â€æˆ–者“\\)â€"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "å‰é¢æ²¡æœ‰æ­£åˆ™è¡¨è¾¾å¼"
@@ -232,36 +232,32 @@ msgstr "由 %s 打包\n"
msgid "(C)"
msgstr "(C)"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"许å¯è¯ï¼šGPLv3+:GNU 通用公共许å¯è¯ç¬¬ 3 版或更新版本<https://gnu.org/licenses/"
-"gpl.html>。\n"
+"许å¯è¯ GPLv3+:GNU 通用公共许å¯è¯ç¬¬ 3 版或更新版本<%s>。\n"
"本软件是自由软件:您å¯ä»¥è‡ªç”±ä¿®æ”¹å’Œé‡æ–°å‘布它。\n"
"在法律范围内没有其他ä¿è¯ã€‚\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "由 %s 编写。\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "由 %s 和 %s 编写。\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "ç”± %sã€%s å’Œ %s 编写。\n"
@@ -269,7 +265,7 @@ msgstr "ç”± %sã€%s å’Œ %s 编写。\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -281,7 +277,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -293,7 +289,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -305,7 +301,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -317,7 +313,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -331,7 +327,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -345,7 +341,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -360,33 +356,26 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
+msgid "Report bugs to: %s\n"
msgstr ""
-"\n"
-"请å‘<%s> æŠ¥å‘Šè½¯ä»¶é”™è¯¯ã€‚è¯·å‘ <i18n-zh@googlegroups.com> 报告翻译错误。\n"
+"è¯·å‘ <%s> æŠ¥å‘Šè½¯ä»¶é”™è¯¯ã€‚è¯·å‘ <i18n-zh@googlegroups.com> 报告翻译错误。\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "请将 %s 的错误报告至:%s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s 的主页:<%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s 项目主页:<https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "GNU 软件一般性帮助:<https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "GNU 软件一般性帮助:<%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -503,7 +492,7 @@ msgstr "ä¸å…许 \\c åŽçš„递归转义"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w 命令在沙盒模å¼ä¸­è¢«ç¦ç”¨"
#: sed/compile.c:215
#, c-format
@@ -584,29 +573,29 @@ msgstr "“sâ€å‘½ä»¤çš„RHSéžæ³•å¼•ç”¨\\%d"
msgid "regex input buffer length larger than INT_MAX"
msgstr "正则输入缓冲长度大于 INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
#, c-format
@@ -623,6 +612,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "请将错误报告å‘é€è‡³ï¼š<%s>。\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "本 sed 程åºæž„建时å«æœ‰ SELinux 支æŒã€‚"
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "此系统已å¯ç”¨ SELinux。"
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "此系统已ç¦ç”¨ SELinux。"
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "本 sed 程åºæž„å»ºæ—¶æœªåŒ…å« SELinux 支æŒã€‚"
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -631,7 +636,7 @@ msgstr ""
"用法: %s [选项]... {脚本(如果没有其他脚本)} [输入文件]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -640,16 +645,16 @@ msgstr ""
" -n, --quiet, --silent\n"
" å–消自动打å°æ¨¡å¼ç©ºé—´\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" 关闭所有 GNU 扩展\n"
+" --debug\n"
+" 对程åºè¿è¡Œè¿›è¡Œæ ‡æ³¨\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -658,7 +663,7 @@ msgstr ""
" -e 脚本, --expression=脚本\n"
" 添加“脚本â€åˆ°ç¨‹åºçš„è¿è¡Œåˆ—表\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -668,7 +673,7 @@ msgstr ""
" -f 脚本文件, --file=脚本文件\n"
" 添加“脚本文件â€åˆ°ç¨‹åºçš„è¿è¡Œåˆ—表\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -677,7 +682,7 @@ msgstr ""
" --follow-symlinks\n"
" 直接修改文件时跟éšè½¯é“¾æŽ¥\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -686,7 +691,7 @@ msgstr ""
" -i[扩展å], --in-place[=扩展å]\n"
" 直接修改文件(如果指定扩展å则备份文件)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -696,7 +701,7 @@ msgstr ""
" -b, --binary\n"
" 以二进制方å¼æ‰“开文件 (回车加æ¢è¡Œä¸åšç‰¹æ®Šå¤„ç†)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -705,7 +710,7 @@ msgstr ""
" -l N, --line-length=N\n"
" 指定“lâ€å‘½ä»¤çš„æ¢è¡ŒæœŸæœ›é•¿åº¦\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -714,7 +719,7 @@ msgstr ""
" --posix\n"
" 关闭所有 GNU 扩展\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -725,7 +730,7 @@ msgstr ""
" 在脚本中使用扩展正则表达å¼\n"
" (为ä¿è¯å¯ç§»æ¤æ€§ä½¿ç”¨ POSIX -E)。\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -736,7 +741,7 @@ msgstr ""
" 将输入文件视为å„个独立的文件而ä¸æ˜¯å•ä¸ª\n"
" 长的连续输入æµã€‚\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -745,7 +750,7 @@ msgstr ""
" --sandbox\n"
" 在沙盒模å¼ä¸­è¿›è¡Œæ“作(ç¦ç”¨ e/r/w 命令)。\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -756,7 +761,7 @@ msgstr ""
" -u, --unbuffered\n"
" 从输入文件读å–最少的数æ®ï¼Œæ›´é¢‘ç¹çš„刷新输出\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -765,17 +770,17 @@ msgstr ""
" -z, --null-data\n"
" 使用 NUL 字符分隔å„è¡Œ\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help 打å°å¸®åŠ©å¹¶é€€å‡º\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version 输出版本信æ¯å¹¶é€€å‡º\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -790,13 +795,13 @@ msgstr ""
"sed脚本。其他éžé€‰é¡¹å‚数被视为输入文件,如果没有输入文件,那么程åºå°†ä»Žæ ‡å‡†\n"
"输入读å–æ•°æ®ã€‚\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "无法对标准输入设置二进制模å¼"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "无法对标准输出设置二进制模å¼"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -816,7 +821,7 @@ msgstr "无法绑定 %s: %s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "无法对“%sâ€è®¾ç½®äºŒè¿›åˆ¶æ¨¡å¼"
#: sed/utils.c:207
#, c-format
@@ -844,6 +849,9 @@ msgstr "æ— æ³•èŽ·å– %s 的状æ€: %s"
msgid "cannot rename %s: %s"
msgstr "无法é‡å‘½å %s:%s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s 项目主页:<https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 573ded3..2c57a82 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 773f997..857fe2a 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,24 +1,25 @@
# Traditional Chinese Messages for the sed.
# Copyright (C) 2002, 05 Free Software Foundation, Inc.
# This file is distributed under the same license as the sed package.
+#
# Wang Li <charles@linux.net.cn>, 2002.
# Wei-Lun Chao <bluebat@member.fsf.org>, 2005, 2013.
-#
+# pan93412 <pan93412@gmail.com>, 2019, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: sed 4.4.104\n"
+"Project-Id-Version: sed 4.7.13\n"
"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n"
-"POT-Creation-Date: 2018-12-20 22:03-0800\n"
-"PO-Revision-Date: 2018-10-12 18:34+0800\n"
+"POT-Creation-Date: 2020-01-14 20:01-0800\n"
+"PO-Revision-Date: 2020-01-07 00:55+0800\n"
"Last-Translator: pan93412 <pan93412@gmail.com>\n"
-"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.2\n"
+"X-Generator: Lokalize 19.12.0\n"
#: lib/closeout.c:122
msgid "write error"
@@ -29,39 +30,39 @@ msgstr "寫入錯誤"
msgid "preserving permissions for %s"
msgstr "正為 %s ä¿ç•™æ¬Šé™"
-#: lib/dfa.c:970
+#: lib/dfa.c:923
msgid "unbalanced ["
msgstr "ä¸å¹³è¡¡çš„ ["
-#: lib/dfa.c:1091
+#: lib/dfa.c:1044
msgid "invalid character class"
msgstr "無效字元類別"
-#: lib/dfa.c:1217
+#: lib/dfa.c:1170
msgid "character class syntax is [[:space:]], not [:space:]"
msgstr "字元類別語法是 [[:space:]] è€Œéž [:space:]"
-#: lib/dfa.c:1284
+#: lib/dfa.c:1237
msgid "unfinished \\ escape"
msgstr "未完æˆçš„ \\ 跳脫字元"
-#: lib/dfa.c:1445
+#: lib/dfa.c:1398
msgid "invalid content of \\{\\}"
msgstr "無效的 \\{\\} 中內容"
-#: lib/dfa.c:1448
+#: lib/dfa.c:1401
msgid "regular expression too big"
msgstr "æ­£è¦è¡¨ç¤ºå¼éŽé•·"
-#: lib/dfa.c:1863
+#: lib/dfa.c:1872
msgid "unbalanced ("
msgstr "ä¸å¹³è¡¡çš„ ("
-#: lib/dfa.c:1981
+#: lib/dfa.c:1989
msgid "no syntax specified"
msgstr "未指定語法"
-#: lib/dfa.c:1992
+#: lib/dfa.c:2000
msgid "unbalanced )"
msgstr "ä¸å¹³è¡¡çš„ )"
@@ -205,7 +206,7 @@ msgstr "æ­£è¦è¡¨ç¤ºå¼å¤ªå¤§"
msgid "Unmatched ) or \\)"
msgstr "未匹é…的「)ã€æˆ–「\\ã€"
-#: lib/regcomp.c:688
+#: lib/regcomp.c:676
msgid "No previous regular expression"
msgstr "沒有先å‰çš„æ­£è¦è¡¨ç¤ºå¼"
@@ -231,35 +232,32 @@ msgstr "由 %s 打包\n"
msgid "(C)"
msgstr "(C)"
-#: lib/version-etc.c:85
+#. TRANSLATORS: The %s placeholder is the web address of the GPL license.
+#: lib/version-etc.c:88
+#, c-format
msgid ""
-"\n"
-"License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl."
-"html>.\n"
+"License GPLv3+: GNU GPL version 3 or later <%s>.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
-"\n"
msgstr ""
-"\n"
-"GPLv3+ 授權:GNU GPL 第三版或更新版本 <https://gnu.org/licenses/gpl.html>。\n"
+"GPLv3+ 授權:GNU GPL 第三版或更新版本 <%s>。\n"
"此為自由軟體:您能修改與é‡æ•£å¸ƒå®ƒã€‚\n"
"在法律å…許的範åœå…§æ²’有任何擔ä¿ã€‚\n"
-"\n"
#. TRANSLATORS: %s denotes an author name.
-#: lib/version-etc.c:102
+#: lib/version-etc.c:105
#, c-format
msgid "Written by %s.\n"
msgstr "由 %s 編寫。\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:106
+#: lib/version-etc.c:109
#, c-format
msgid "Written by %s and %s.\n"
msgstr "由 %s 與 %s 編寫。\n"
#. TRANSLATORS: Each %s denotes an author name.
-#: lib/version-etc.c:110
+#: lib/version-etc.c:113
#, c-format
msgid "Written by %s, %s, and %s.\n"
msgstr "ç”± %sã€%s 與 %s 編寫。\n"
@@ -267,7 +265,7 @@ msgstr "ç”± %sã€%s 與 %s 編寫。\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:117
+#: lib/version-etc.c:120
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -277,7 +275,7 @@ msgstr "ç”± %sã€%sã€%s 與 %s 編寫。\n"
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:124
+#: lib/version-etc.c:127
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -289,7 +287,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:131
+#: lib/version-etc.c:134
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -301,7 +299,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:139
+#: lib/version-etc.c:142
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -313,7 +311,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:147
+#: lib/version-etc.c:150
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -326,7 +324,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:156
+#: lib/version-etc.c:159
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -340,7 +338,7 @@ msgstr ""
#. TRANSLATORS: Each %s denotes an author name.
#. You can use line breaks, estimating that each author name occupies
#. ca. 16 screen columns and that a screen line has ca. 80 columns.
-#: lib/version-etc.c:167
+#: lib/version-etc.c:170
#, c-format
msgid ""
"Written by %s, %s, %s,\n"
@@ -355,33 +353,25 @@ msgstr ""
#. for this package. Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
-#: lib/version-etc.c:245
+#: lib/version-etc.c:249
#, c-format
-msgid ""
-"\n"
-"Report bugs to: %s\n"
-msgstr ""
-"\n"
-"回報æ¼æ´žè‡³ï¼š%s\n"
+msgid "Report bugs to: %s\n"
+msgstr "回報æ¼æ´žè‡³ï¼š%s\n"
-#: lib/version-etc.c:247
+#: lib/version-etc.c:251
#, c-format
msgid "Report %s bugs to: %s\n"
msgstr "回報 %s çš„æ¼æ´žåˆ°ï¼š%s\n"
-#: lib/version-etc.c:251
+#: lib/version-etc.c:255 lib/version-etc.c:257
#, c-format
msgid "%s home page: <%s>\n"
msgstr "%s 的首é ï¼š<%s>\n"
-#: lib/version-etc.c:253
+#: lib/version-etc.c:260
#, c-format
-msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
-msgstr "%s 的首é ï¼š<https://www.gnu.org/software/%s/>\n"
-
-#: lib/version-etc.c:256
-msgid "General help using GNU software: <https://www.gnu.org/gethelp/>\n"
-msgstr "使用 GNU 軟體的一般說明:<https://www.gnu.org/gethelp/>\n"
+msgid "General help using GNU software: <%s>\n"
+msgstr "使用 GNU 軟體的一般說明:<%s>\n"
#: sed/compile.c:146
msgid "multiple `!'s"
@@ -498,7 +488,7 @@ msgstr "ä¸å…許在「\\cã€ä¹‹å¾ŒåŠ å…¥éžè¿´è·³è„«å­—å…ƒ"
#: sed/compile.c:193
msgid "e/r/w commands disabled in sandbox mode"
-msgstr ""
+msgstr "e/r/w 指令已在沙盒模å¼ä¸­åœç”¨"
#: sed/compile.c:215
#, c-format
@@ -579,29 +569,29 @@ msgstr "「sã€å‘½ä»¤çš„ RHS 上ä¸æ­£ç¢ºçš„åƒè€ƒå€¼ \\%d"
msgid "regex input buffer length larger than INT_MAX"
msgstr "æ­£è¦è¡¨é”å¼ç·©è¡å€é•·åº¦å¤§æ–¼ INT_MAX"
-#: sed/sed.c:36
+#: sed/sed.c:37
msgid "Jay Fenlason"
msgstr "Jay Fenlason"
-#: sed/sed.c:37
+#: sed/sed.c:38
msgid "Tom Lord"
msgstr "Tom Lord"
-#: sed/sed.c:38
+#: sed/sed.c:39
msgid "Ken Pizzini"
msgstr "Ken Pizzini"
-#: sed/sed.c:39
+#: sed/sed.c:40
msgid "Paolo Bonzini"
msgstr "Paolo Bonzini"
-#: sed/sed.c:40
+#: sed/sed.c:41
msgid "Jim Meyering"
-msgstr ""
+msgstr "Jim Meyering"
-#: sed/sed.c:41
+#: sed/sed.c:42
msgid "Assaf Gordon"
-msgstr ""
+msgstr "Assaf Gordon"
#: sed/sed.c:124
#, c-format
@@ -618,6 +608,22 @@ msgid "E-mail bug reports to: <%s>.\n"
msgstr "å°‡æ¼æ´žå›žå ±å‚³åˆ°è©² E-mail:<%s>。\n"
#: sed/sed.c:138
+msgid "This sed program was built with SELinux support."
+msgstr "這個 sed 程å¼ç·¨è­¯æ™‚帶有 SELinux 支æ´ã€‚"
+
+#: sed/sed.c:140
+msgid "SELinux is enabled on this system."
+msgstr "此系統有啟用 SELinux。"
+
+#: sed/sed.c:142
+msgid "SELinux is disabled on this system."
+msgstr "此系統未啟用 SELinux。"
+
+#: sed/sed.c:144
+msgid "This sed program was built without SELinux support."
+msgstr "這個 sed 程å¼ç·¨è­¯æ™‚ä¸å¸¶æœ‰ SELinux 支æ´ã€‚"
+
+#: sed/sed.c:154
#, c-format
msgid ""
"Usage: %s [OPTION]... {script-only-if-no-other-script} [input-file]...\n"
@@ -626,7 +632,7 @@ msgstr ""
"用法: %s [é¸é …]... {若無其他命令稿則åªèƒ½æ”¾å‘½ä»¤ç¨¿} [輸入檔]...\n"
"\n"
-#: sed/sed.c:142
+#: sed/sed.c:158
#, c-format
msgid ""
" -n, --quiet, --silent\n"
@@ -635,16 +641,16 @@ msgstr ""
" -n, --quiet, --silent\n"
" 抑止樣版空間的自動顯示\n"
-#: sed/sed.c:144
-#, fuzzy, c-format
+#: sed/sed.c:160
+#, c-format
msgid ""
" --debug\n"
" annotate program execution\n"
msgstr ""
-" --posix\n"
-" åœç”¨æ‰€æœ‰ GNU 擴充功能。\n"
+" --debug\n"
+" 說明程å¼åŸ·è¡ŒéŽç¨‹\n"
-#: sed/sed.c:146
+#: sed/sed.c:162
#, c-format
msgid ""
" -e script, --expression=script\n"
@@ -653,7 +659,7 @@ msgstr ""
" -e 命令稿, --expression=命令稿\n"
" 加入命令稿åšç‚ºåŸ·è¡Œçš„命令\n"
-#: sed/sed.c:148
+#: sed/sed.c:164
#, c-format
msgid ""
" -f script-file, --file=script-file\n"
@@ -663,7 +669,7 @@ msgstr ""
" -f 命令稿檔案, --file=命令稿檔案\n"
" 加入命令稿檔案內容åšç‚ºåŸ·è¡Œçš„命令\n"
-#: sed/sed.c:152
+#: sed/sed.c:168
#, c-format
msgid ""
" --follow-symlinks\n"
@@ -672,7 +678,7 @@ msgstr ""
" --follow-symlinks\n"
" 就地處ç†æ™‚追隨符號連çµ\n"
-#: sed/sed.c:155
+#: sed/sed.c:171
#, c-format
msgid ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
@@ -681,7 +687,7 @@ msgstr ""
" -i[SUFFIX], --in-place[=SUFFIX]\n"
" 一次編輯檔案 (è‹¥æä¾› SUFFIX 則建立備份)\n"
-#: sed/sed.c:158
+#: sed/sed.c:174
#, c-format
msgid ""
" -b, --binary\n"
@@ -691,7 +697,7 @@ msgstr ""
" -b, --binary\n"
" 以二進ä½æ¨¡å¼é–‹å•Ÿæª”案 (ä¸¦æœªç‰¹æ®Šè™•ç† CR+LF)\n"
-#: sed/sed.c:162
+#: sed/sed.c:178
#, c-format
msgid ""
" -l N, --line-length=N\n"
@@ -700,7 +706,7 @@ msgstr ""
" -l N, --line-length=N\n"
" 指定使用「lã€å‘½ä»¤æ™‚想è¦çš„æ›åˆ—長度\n"
-#: sed/sed.c:164
+#: sed/sed.c:180
#, c-format
msgid ""
" --posix\n"
@@ -709,7 +715,7 @@ msgstr ""
" --posix\n"
" åœç”¨æ‰€æœ‰ GNU 擴充功能。\n"
-#: sed/sed.c:166
+#: sed/sed.c:182
#, c-format
msgid ""
" -E, -r, --regexp-extended\n"
@@ -720,7 +726,7 @@ msgstr ""
" 在指令中使用延伸正è¦è¡¨é”å¼\n"
" (è‹¥è¦å¯æ”œæ€§è«‹ä½¿ç”¨ POSIX -E)。\n"
-#: sed/sed.c:169
+#: sed/sed.c:185
#, c-format
msgid ""
" -s, --separate\n"
@@ -731,7 +737,7 @@ msgstr ""
" 將檔案視為å„自分離而éžå–®ä¸€ä¸”\n"
" 連續的長字串。\n"
-#: sed/sed.c:172
+#: sed/sed.c:188
#, c-format
msgid ""
" --sandbox\n"
@@ -740,7 +746,7 @@ msgstr ""
" --sandbox\n"
" 在沙盒模å¼ä¸­æ“作 (åœç”¨ e/r/w 指令)。\n"
-#: sed/sed.c:174
+#: sed/sed.c:190
#, c-format
msgid ""
" -u, --unbuffered\n"
@@ -751,7 +757,7 @@ msgstr ""
" -u, --unbuffered\n"
" 從輸入檔中讀å–最少é‡çš„資料並更常清空輸出緩è¡å€\n"
-#: sed/sed.c:177
+#: sed/sed.c:193
#, c-format
msgid ""
" -z, --null-data\n"
@@ -760,17 +766,17 @@ msgstr ""
" -z, --null-data\n"
" 以 NUL 字元分割行列\n"
-#: sed/sed.c:179
+#: sed/sed.c:195
#, c-format
msgid " --help display this help and exit\n"
msgstr " --help 顯示本輔助訊æ¯ä¸¦é›¢é–‹\n"
-#: sed/sed.c:180
+#: sed/sed.c:196
#, c-format
msgid " --version output version information and exit\n"
msgstr " --version 輸出版本資訊並離開\n"
-#: sed/sed.c:181
+#: sed/sed.c:197
#, c-format
msgid ""
"\n"
@@ -786,13 +792,13 @@ msgstr ""
"å‡å¦‚未指定輸入檔,就會從標準輸入來讀å–。\n"
"\n"
-#: sed/sed.c:373
+#: sed/sed.c:390
msgid "failed to set binary mode on STDIN"
-msgstr ""
+msgstr "無法在 STDIN 設定二進ä½æ¨¡å¼"
-#: sed/sed.c:375
+#: sed/sed.c:392
msgid "failed to set binary mode on STDOUT"
-msgstr ""
+msgstr "無法在 STDOUT 設定二進ä½æ¨¡å¼"
#: sed/utils.c:77 sed/utils.c:395
#, c-format
@@ -812,7 +818,7 @@ msgstr "無法附加到 %s:%s"
#: sed/utils.c:192
#, c-format
msgid "failed to set binary mode on '%s'"
-msgstr ""
+msgstr "無法在「%sã€è¨­å®šäºŒé€²ä½æ¨¡å¼"
#: sed/utils.c:207
#, c-format
@@ -840,6 +846,9 @@ msgstr "無法å–得狀態 %s:%s"
msgid "cannot rename %s: %s"
msgstr "無法更改å稱 %s: %s"
+#~ msgid "%s home page: <https://www.gnu.org/software/%s/>\n"
+#~ msgstr "%s 的首é ï¼š<https://www.gnu.org/software/%s/>\n"
+
#~ msgid ""
#~ " -R, --regexp-perl\n"
#~ " use Perl 5's regular expressions syntax in the script.\n"
diff --git a/sed/compile.c b/sed/compile.c
index ca58371..8321d68 100644
--- a/sed/compile.c
+++ b/sed/compile.c
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/sed/debug.c b/sed/debug.c
index 9ec37b6..181f87d 100644
--- a/sed/debug.c
+++ b/sed/debug.c
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 2018 Free Software Foundation, Inc.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/sed/execute.c b/sed/execute.c
index b39bab4..c5f07cc 100644
--- a/sed/execute.c
+++ b/sed/execute.c
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/sed/local.mk b/sed/local.mk
index 5ccaaf4..24788cd 100644
--- a/sed/local.mk
+++ b/sed/local.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/sed/mbcs.c b/sed/mbcs.c
index c94b219..3fdd483 100644
--- a/sed/mbcs.c
+++ b/sed/mbcs.c
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 2003-2018 Free Software Foundation, Inc.
+ Copyright (C) 2003-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/sed/regexp.c b/sed/regexp.c
index 4ac06d6..9764ef3 100644
--- a/sed/regexp.c
+++ b/sed/regexp.c
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 1999-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/sed/sed.c b/sed/sed.c
index e588c56..f75e4b6 100644
--- a/sed/sed.c
+++ b/sed/sed.c
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This 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 @@
#include "progname.h"
#include "version.h"
#include "xalloc.h"
+#include <selinux/selinux.h>
#include "version-etc.h"
@@ -116,7 +117,6 @@ cancel_cleanup (void)
G_file_to_unlink = NULL;
}
-static void usage (int);
static void
contact (int errmsg)
{
@@ -130,6 +130,22 @@ General help using GNU software: <https://www.gnu.org/gethelp/>.\n"));
fprintf (out, _("E-mail bug reports to: <%s>.\n"), PACKAGE_BUGREPORT);
}
+static void
+selinux_support (void)
+{
+ putchar ('\n');
+#if HAVE_SELINUX_SELINUX_H
+ puts (_("This sed program was built with SELinux support."));
+ if (is_selinux_enabled ())
+ puts (_("SELinux is enabled on this system."));
+ else
+ puts (_("SELinux is disabled on this system."));
+#else
+ puts (_("This sed program was built without SELinux support."));
+#endif
+ putchar ('\n');
+}
+
_Noreturn static void
usage (int status)
{
@@ -344,6 +360,7 @@ main (int argc, char **argv)
case 'v':
version_etc (stdout, program_name, PACKAGE_NAME, Version,
AUTHORS, (char *) NULL);
+ selinux_support ();
contact (false);
ck_fclose (NULL);
exit (EXIT_SUCCESS);
diff --git a/sed/sed.h b/sed/sed.h
index cb28736..1c8e83a 100644
--- a/sed/sed.h
+++ b/sed/sed.h
@@ -1,5 +1,5 @@
/* GNU SED, a batch stream editor.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/sed/utils.c b/sed/utils.c
index 6f847cd..9576dd1 100644
--- a/sed/utils.c
+++ b/sed/utils.c
@@ -1,5 +1,5 @@
/* Functions from hack's utils library.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -181,7 +181,7 @@ ck_mkstemp (char **p_filename, const char *tmpdir,
/* The ownership might change, so omit some permissions at first
so unauthorized users cannot nip in before the file is ready.
mkstemp forces O_BINARY on cygwin, so use mkostemp instead. */
- mode_t save_umask = umask (0700);
+ mode_t save_umask = umask (0077);
int fd = mkostemp (template, 0);
umask (save_umask);
if (fd == -1)
diff --git a/sed/utils.h b/sed/utils.h
index 810ac9f..47a029e 100644
--- a/sed/utils.h
+++ b/sed/utils.h
@@ -1,5 +1,5 @@
/* Functions from hack's utils library.
- Copyright (C) 1989-2018 Free Software Foundation, Inc.
+ Copyright (C) 1989-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/testsuite/8bit.sh b/testsuite/8bit.sh
index 35a594c..09373c3 100755
--- a/testsuite/8bit.sh
+++ b/testsuite/8bit.sh
@@ -2,7 +2,7 @@
# Adapted from sed's old "8bit" test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/8to7.sh b/testsuite/8to7.sh
index 8b0e014..be1d463 100755
--- a/testsuite/8to7.sh
+++ b/testsuite/8to7.sh
@@ -2,7 +2,7 @@
# Runner for old '8to7' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/Coreutils.pm b/testsuite/Coreutils.pm
index 4e7a00a..a0c8c59 100644
--- a/testsuite/Coreutils.pm
+++ b/testsuite/Coreutils.pm
@@ -1,7 +1,7 @@
package Coreutils;
# This is a testing framework.
-# Copyright (C) 1998-2018 Free Software Foundation, Inc.
+# Copyright (C) 1998-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/CuSkip.pm b/testsuite/CuSkip.pm
index a2aad28..090abba 100644
--- a/testsuite/CuSkip.pm
+++ b/testsuite/CuSkip.pm
@@ -1,7 +1,7 @@
package CuSkip;
# Skip a test: emit diag to log and to stderr, and exit 77
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/CuTmpdir.pm b/testsuite/CuTmpdir.pm
index eee8a8d..015a92d 100644
--- a/testsuite/CuTmpdir.pm
+++ b/testsuite/CuTmpdir.pm
@@ -1,7 +1,7 @@
package CuTmpdir;
# create, then chdir into a temporary sub-directory
-# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# Copyright (C) 2007-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/badenc.sh b/testsuite/badenc.sh
index 2dd80ab..c3819c3 100755
--- a/testsuite/badenc.sh
+++ b/testsuite/badenc.sh
@@ -2,7 +2,7 @@
# Test runner for old 'badenc' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/binary.sh b/testsuite/binary.sh
index 8ee7ec9..4ef503d 100755
--- a/testsuite/binary.sh
+++ b/testsuite/binary.sh
@@ -3,7 +3,7 @@
# Test runner for the binary-operation version of dc.sed.
# Adapted from old-style 'binary.sed' test.
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/bsd-wrapper.sh b/testsuite/bsd-wrapper.sh
index 557deb7..de7cc59 100644
--- a/testsuite/bsd-wrapper.sh
+++ b/testsuite/bsd-wrapper.sh
@@ -2,7 +2,7 @@
# Test runner for the old bsd tests
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/bug32082.sh b/testsuite/bug32082.sh
index d5d4e92..51356bc 100755
--- a/testsuite/bug32082.sh
+++ b/testsuite/bug32082.sh
@@ -3,7 +3,7 @@
# Before sed 4.6 these would result in "Invalid read size of 4" reported
# by valgrind from execute.c:992
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/bug32271-1.sh b/testsuite/bug32271-1.sh
index df2e308..b8ad229 100755
--- a/testsuite/bug32271-1.sh
+++ b/testsuite/bug32271-1.sh
@@ -3,7 +3,7 @@
# Before sed 4.6 these would result in an extraneous NUL at end of lines.
#
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/bug32271-2.sh b/testsuite/bug32271-2.sh
index d6e50ce..723d973 100755
--- a/testsuite/bug32271-2.sh
+++ b/testsuite/bug32271-2.sh
@@ -4,7 +4,7 @@
# uninitialised value(s)" and "Invalid read of size 1"
# by valgrind from regexp.c:286
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This 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,6 +64,9 @@ valgrind --quiet --error-exitcode=1 \
grep 'valgrind: .*Assertion.*failed' err-no-posix > /dev/null \
&& skip_ 'you seem to have a buggy version of valgrind'
+# Remove any valgrind-added diagnostics from stderr.
+sed -i '/^==/d' err
+
compare exp out || fail=1
compare /dev/null err || fail=1
diff --git a/testsuite/cmd-R.sh b/testsuite/cmd-R.sh
index 4f4eb99..d0c2627 100644
--- a/testsuite/cmd-R.sh
+++ b/testsuite/cmd-R.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test 'R' command
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/cmd-l.sh b/testsuite/cmd-l.sh
index f5207e9..17f35e3 100755
--- a/testsuite/cmd-l.sh
+++ b/testsuite/cmd-l.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test 'l' command with different widths
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/colon-with-no-label.sh b/testsuite/colon-with-no-label.sh
index 915a192..3b6ae53 100755
--- a/testsuite/colon-with-no-label.sh
+++ b/testsuite/colon-with-no-label.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Verify that a ":" command with no label is now rejected.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/command-endings.sh b/testsuite/command-endings.sh
index 1c257e9..03e2617 100644
--- a/testsuite/command-endings.sh
+++ b/testsuite/command-endings.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test command separators and endings
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/comment-n.sh b/testsuite/comment-n.sh
index ad94c63..c2e05dd 100644
--- a/testsuite/comment-n.sh
+++ b/testsuite/comment-n.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test the '#n' silent mode (activated by first line comment)
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/compile-errors.sh b/testsuite/compile-errors.sh
index 7773adb..2b6236a 100644
--- a/testsuite/compile-errors.sh
+++ b/testsuite/compile-errors.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test compilation errors
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/compile-tests.sh b/testsuite/compile-tests.sh
index 75d5b6d..cb7d49d 100644
--- a/testsuite/compile-tests.sh
+++ b/testsuite/compile-tests.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test compilation less-common cases
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/convert-number.sh b/testsuite/convert-number.sh
index a485f47..c6b4449 100755
--- a/testsuite/convert-number.sh
+++ b/testsuite/convert-number.sh
@@ -2,7 +2,7 @@
# Test number conversion from escape sequences \xNN \oNNN \dNNN
# (compile.c:convert_number())
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/dc.sh b/testsuite/dc.sh
index 96c000c..0e1e9b1 100755
--- a/testsuite/dc.sh
+++ b/testsuite/dc.sh
@@ -2,7 +2,7 @@
# Test runner for dc.sed
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/debug.pl b/testsuite/debug.pl
index 661c5ed..49fd0b4 100644
--- a/testsuite/debug.pl
+++ b/testsuite/debug.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
# Test the --debug feature
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/distrib.sh b/testsuite/distrib.sh
index 700c983..db81505 100644
--- a/testsuite/distrib.sh
+++ b/testsuite/distrib.sh
@@ -2,7 +2,7 @@
# Test runner for the old 'distrib' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/envvar-check b/testsuite/envvar-check
index 708013e..fcf7742 100644
--- a/testsuite/envvar-check
+++ b/testsuite/envvar-check
@@ -1,7 +1,7 @@
# -*- sh -*-
# Check environment variables for sane values while testing.
-# Copyright (C) 2000-2018 Free Software Foundation, Inc.
+# Copyright (C) 2000-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/eval.sh b/testsuite/eval.sh
index 33395dc..3dfca73 100755
--- a/testsuite/eval.sh
+++ b/testsuite/eval.sh
@@ -2,7 +2,7 @@
# Test runner for old 'eval' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/execute-tests.sh b/testsuite/execute-tests.sh
index 191a518..cb6bc52 100644
--- a/testsuite/execute-tests.sh
+++ b/testsuite/execute-tests.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test execution less-common cases
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/follow-symlinks-stdin.sh b/testsuite/follow-symlinks-stdin.sh
index 788729c..b284a2a 100755
--- a/testsuite/follow-symlinks-stdin.sh
+++ b/testsuite/follow-symlinks-stdin.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Verify that --follow-symlinks does not break reading from stdin.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/follow-symlinks.sh b/testsuite/follow-symlinks.sh
index 6abc822..1342ac5 100644
--- a/testsuite/follow-symlinks.sh
+++ b/testsuite/follow-symlinks.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test --follow-symlinks option
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/get-mb-cur-max.c b/testsuite/get-mb-cur-max.c
index 6c34a88..a2ffac6 100644
--- a/testsuite/get-mb-cur-max.c
+++ b/testsuite/get-mb-cur-max.c
@@ -1,5 +1,5 @@
/* Auxiliary program to detect support for a locale.
- Copyright 2010-2018 Free Software Foundation, Inc.
+ Copyright 2010-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/testsuite/help-version.sh b/testsuite/help-version.sh
index d053cf1..dcf105a 100755
--- a/testsuite/help-version.sh
+++ b/testsuite/help-version.sh
@@ -2,7 +2,7 @@
# Make sure all of these programs work properly
# when invoked with --help or --version.
-# Copyright (C) 2000-2018 Free Software Foundation, Inc.
+# Copyright (C) 2000-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/help.sh b/testsuite/help.sh
index bddaf08..087068c 100644
--- a/testsuite/help.sh
+++ b/testsuite/help.sh
@@ -2,7 +2,7 @@
# Test --help screen
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/in-place-hyphen.sh b/testsuite/in-place-hyphen.sh
index 8a97ba3..bc8cadf 100755
--- a/testsuite/in-place-hyphen.sh
+++ b/testsuite/in-place-hyphen.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Verify that "-" is treated as a file name with --in-place.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/in-place-suffix-backup.sh b/testsuite/in-place-suffix-backup.sh
index bc7defc..2629522 100644
--- a/testsuite/in-place-suffix-backup.sh
+++ b/testsuite/in-place-suffix-backup.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test -i/--inplace with backup suffixes
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/init.sh b/testsuite/init.sh
index 93d14f5..b4a5944 100644
--- a/testsuite/init.sh
+++ b/testsuite/init.sh
@@ -1,6 +1,6 @@
# source this file; set up for tests
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -60,6 +60,9 @@
# 4. Finally
# $ exit
+# =============================================================================
+# Elementary diagnostics
+
ME_=`expr "./$0" : '.*/\(.*\)$'`
# Prepare PATH_SEPARATOR.
@@ -109,26 +112,8 @@ skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; }
fatal_ () { warn_ "$ME_: hard error: $@"; Exit 99; }
framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; }
-# This is used to simplify checking of the return value
-# which is useful when ensuring a command fails as desired.
-# I.e., just doing `command ... &&fail=1` will not catch
-# a segfault in command for example. With this helper you
-# instead check an explicit exit code like
-# returns_ 1 command ... || fail
-returns_ () {
- # Disable tracing so it doesn't interfere with stderr of the wrapped command
- { set +x; } 2>/dev/null
-
- local exp_exit="$1"
- shift
- "$@"
- test $? -eq $exp_exit && ret_=0 || ret_=1
-
- if test "$VERBOSE" = yes && test "$gl_set_x_corrupts_stderr_" = false; then
- set -x
- fi
- { return $ret_; } 2>/dev/null
-}
+# =============================================================================
+# Ensure the shell supports modern syntax.
# Sanitize this shell to POSIX mode, if possible.
DUALCASE=1; export DUALCASE
@@ -144,6 +129,8 @@ else
fi
# We require $(...) support unconditionally.
+# We require that the printf built-in work correctly regarding octal escapes;
+# this eliminates /bin/sh on AIX 7.2.
# We require non-surprising "local" semantics (this eliminates dash).
# This takes the admittedly draconian step of eliminating dash, because the
# assignment tab=$(printf '\t') works fine, yet preceding it with "local "
@@ -173,6 +160,12 @@ fi
# ? - not ok
gl_shell_test_script_='
test $(echo y) = y || exit 1
+LC_ALL=en_US.UTF-8 printf "\\351" 2>/dev/null \
+ | LC_ALL=C tr "\\351" x | LC_ALL=C grep "^x$" > /dev/null \
+ || exit 1
+printf "\\351" 2>/dev/null \
+ | LC_ALL=C tr "\\351" x | LC_ALL=C grep "^x$" > /dev/null \
+ || exit 1
f_local_() { local v=1; }; f_local_ || exit 1
f_dash_local_fail_() { local t=$(printf " 1"); }; f_dash_local_fail_
score_=10
@@ -255,6 +248,9 @@ else
fi
fi
+# =============================================================================
+# Ensure the shell behaves reasonably.
+
# If this is bash, turn off all aliases.
test -n "$BASH_VERSION" && unalias -a
@@ -265,99 +261,177 @@ test -n "$BASH_VERSION" && unalias -a
# widespread than that for hyphen-containing function names.
test -n "$EXEEXT" && test -n "$BASH_VERSION" && shopt -s expand_aliases
-# Enable glibc's malloc-perturbing option.
-# This is useful for exposing code that depends on the fact that
-# malloc-related functions often return memory that is mostly zeroed.
-# If you have the time and cycles, use valgrind to do an even better job.
-: ${MALLOC_PERTURB_=87}
-export MALLOC_PERTURB_
+# =============================================================================
+# Creating a temporary directory (needed by the core test framework)
-# This is a stub function that is run upon trap (upon regular exit and
-# interrupt). Override it with a per-test function, e.g., to unmount
-# a partition, or to undo any other global state changes.
-cleanup_ () { :; }
+# Create a temporary directory, much like mktemp -d does.
+# Written by Jim Meyering.
+#
+# Usage: mktempd_ /tmp phoey.XXXXXXXXXX
+#
+# First, try to use the mktemp program.
+# Failing that, we'll roll our own mktemp-like function:
+# - try to get random bytes from /dev/urandom
+# - failing that, generate output from a combination of quickly-varying
+# sources and gzip. Ignore non-varying gzip header, and extract
+# "random" bits from there.
+# - given those bits, map to file-name bytes using tr, and try to create
+# the desired directory.
+# - make only $MAX_TRIES_ attempts
-# Emit a header similar to that from diff -u; Print the simulated "diff"
-# command so that the order of arguments is clear. Don't bother with @@ lines.
-emit_diff_u_header_ ()
+# Helper function. Print $N pseudo-random bytes from a-zA-Z0-9.
+rand_bytes_ ()
{
- printf '%s\n' "diff -u $*" \
- "--- $1 1970-01-01" \
- "+++ $2 1970-01-01"
+ n_=$1
+
+ # Maybe try openssl rand -base64 $n_prime_|tr '+/=\012' abcd first?
+ # But if they have openssl, they probably have mktemp, too.
+
+ chars_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+ dev_rand_=/dev/urandom
+ if test -r "$dev_rand_"; then
+ # Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194.
+ dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \
+ | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
+ return
+ fi
+
+ n_plus_50_=`expr $n_ + 50`
+ cmds_='date; date +%N; free; who -a; w; ps auxww; ps -ef'
+ data_=` (eval "$cmds_") 2>&1 | gzip `
+
+ # Ensure that $data_ has length at least 50+$n_
+ while :; do
+ len_=`echo "$data_"|wc -c`
+ test $n_plus_50_ -le $len_ && break;
+ data_=` (echo "$data_"; eval "$cmds_") 2>&1 | gzip `
+ done
+
+ echo "$data_" \
+ | dd bs=1 skip=50 count=$n_ 2>/dev/null \
+ | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
}
-# Arrange not to let diff or cmp operate on /dev/null,
-# since on some systems (at least OSF/1 5.1), that doesn't work.
-# When there are not two arguments, or no argument is /dev/null, return 2.
-# When one argument is /dev/null and the other is not empty,
-# cat the nonempty file to stderr and return 1.
-# Otherwise, return 0.
-compare_dev_null_ ()
+mktempd_ ()
{
- test $# = 2 || return 2
+ case $# in
+ 2);;
+ *) fail_ "Usage: mktempd_ DIR TEMPLATE";;
+ esac
- if test "x$1" = x/dev/null; then
- test -s "$2" || return 0
- emit_diff_u_header_ "$@"; sed 's/^/+/' "$2"
- return 1
- fi
+ destdir_=$1
+ template_=$2
- if test "x$2" = x/dev/null; then
- test -s "$1" || return 0
- emit_diff_u_header_ "$@"; sed 's/^/-/' "$1"
- return 1
- fi
+ MAX_TRIES_=4
- return 2
+ # Disallow any trailing slash on specified destdir:
+ # it would subvert the post-mktemp "case"-based destdir test.
+ case $destdir_ in
+ / | //) destdir_slash_=$destdir;;
+ */) fail_ "invalid destination dir: remove trailing slash(es)";;
+ *) destdir_slash_=$destdir_/;;
+ esac
+
+ case $template_ in
+ *XXXX) ;;
+ *) fail_ \
+ "invalid template: $template_ (must have a suffix of at least 4 X's)";;
+ esac
+
+ # First, try to use mktemp.
+ d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` &&
+
+ # The resulting name must be in the specified directory.
+ case $d in "$destdir_slash_"*) :;; *) false;; esac &&
+
+ # It must have created the directory.
+ test -d "$d" &&
+
+ # It must have 0700 permissions. Handle sticky "S" bits.
+ perms=`ls -dgo "$d" 2>/dev/null` &&
+ case $perms in drwx--[-S]---*) :;; *) false;; esac && {
+ echo "$d"
+ return
+ }
+
+ # If we reach this point, we'll have to create a directory manually.
+
+ # Get a copy of the template without its suffix of X's.
+ base_template_=`echo "$template_"|sed 's/XX*$//'`
+
+ # Calculate how many X's we've just removed.
+ template_length_=`echo "$template_" | wc -c`
+ nx_=`echo "$base_template_" | wc -c`
+ nx_=`expr $template_length_ - $nx_`
+
+ err_=
+ i_=1
+ while :; do
+ X_=`rand_bytes_ $nx_`
+ candidate_dir_="$destdir_slash_$base_template_$X_"
+ err_=`mkdir -m 0700 "$candidate_dir_" 2>&1` \
+ && { echo "$candidate_dir_"; return; }
+ test $MAX_TRIES_ -le $i_ && break;
+ i_=`expr $i_ + 1`
+ done
+ fail_ "$err_"
}
-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` &&
- break
-done
-if test "$diff_opt_" != no; then
- if test -z "$diff_out_"; then
- compare_ () { 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
- diff_status_=$?
- test $diff_status_ -eq 0 || cat diff.out || diff_status_=2
- rm -f diff.out || diff_status_=2
- return $diff_status_
- }
- fi
-elif cmp -s /dev/null /dev/null 2>/dev/null; then
- compare_ () { cmp -s "$@"; }
-else
- compare_ () { cmp "$@"; }
-fi
+# =============================================================================
+# Core test framework
-# Usage: compare EXPECTED ACTUAL
-#
-# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more.
-# Otherwise, propagate $? to caller: any diffs have already been printed.
-compare ()
+# An arbitrary prefix to help distinguish test directories.
+testdir_prefix_ () { printf gt; }
+
+# Set up the environment for the test to run in.
+setup_ ()
{
- # This looks like it can be factored to use a simple "case $?"
- # after unchecked compare_dev_null_ invocation, but that would
- # fail in a "set -e" environment.
- if compare_dev_null_ "$@"; then
- return 0
- else
- case $? in
- 1) return 1;;
- *) compare_ "$@";;
- esac
+ if test "$VERBOSE" = yes; then
+ # Test whether set -x may cause the selected shell to corrupt an
+ # application's stderr. Many do, including zsh-4.3.10 and the /bin/sh
+ # from SunOS 5.11, OpenBSD 4.7 and Irix 5.x and 6.5.
+ # If enabling verbose output this way would cause trouble, simply
+ # issue a warning and refrain.
+ if $gl_set_x_corrupts_stderr_; then
+ warn_ "using SHELL=$SHELL with 'set -x' corrupts stderr"
+ else
+ set -x
+ fi
fi
+
+ initial_cwd_=$PWD
+
+ # Create and enter the temporary directory.
+ pfx_=`testdir_prefix_`
+ test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \
+ || fail_ "failed to create temporary directory in $initial_cwd_"
+ cd "$test_dir_" || fail_ "failed to cd to temporary directory"
+ # Set variables srcdir, builddir, for the convenience of the test.
+ case $srcdir in
+ /* | ?:*) ;;
+ *) srcdir="../$srcdir" ;;
+ esac
+ builddir=".."
+ export srcdir builddir
+
+ # As autoconf-generated configure scripts do, ensure that IFS
+ # is defined initially, so that saving and restoring $IFS works.
+ gl_init_sh_nl_='
+'
+ IFS=" "" $gl_init_sh_nl_"
+
+ # This trap statement, along with a trap on 0 below, ensure that the
+ # temporary directory, $test_dir_, is removed upon exit as well as
+ # upon receipt of any of the listed signals.
+ for sig_ in 1 2 3 13 15; do
+ eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
+ done
}
-# An arbitrary prefix to help distinguish test directories.
-testdir_prefix_ () { printf gt; }
+# This is a stub function that is run upon trap (upon regular exit and
+# interrupt). Override it with a per-test function, e.g., to unmount
+# a partition, or to undo any other global state changes.
+cleanup_ () { :; }
# Run the user-overridable cleanup_ function, remove the temporary
# directory and exit with the incoming value of $?.
@@ -377,6 +451,9 @@ remove_tmp_ ()
exit $__st
}
+# =============================================================================
+# Prepending directories to PATH
+
# Given a directory name, DIR, if every entry in it that matches *.exe
# contains only the specified bytes (see the case stmt below), then print
# a space-separated list of those names and return 0. Otherwise, don't
@@ -458,160 +535,148 @@ path_prepend_ ()
export PATH
}
-setup_ ()
-{
- if test "$VERBOSE" = yes; then
- # Test whether set -x may cause the selected shell to corrupt an
- # application's stderr. Many do, including zsh-4.3.10 and the /bin/sh
- # from SunOS 5.11, OpenBSD 4.7 and Irix 5.x and 6.5.
- # If enabling verbose output this way would cause trouble, simply
- # issue a warning and refrain.
- if $gl_set_x_corrupts_stderr_; then
- warn_ "using SHELL=$SHELL with 'set -x' corrupts stderr"
- else
- set -x
- fi
- fi
+# =============================================================================
+# Convenience environment variables for the tests
- initial_cwd_=$PWD
+# -----------------------------------------------------------------------------
- pfx_=`testdir_prefix_`
- test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \
- || fail_ "failed to create temporary directory in $initial_cwd_"
- cd "$test_dir_" || fail_ "failed to cd to temporary directory"
+# Enable glibc's malloc-perturbing option.
+# This is useful for exposing code that depends on the fact that
+# malloc-related functions often return memory that is mostly zeroed.
+# If you have the time and cycles, use valgrind to do an even better job.
+: ${MALLOC_PERTURB_=87}
+export MALLOC_PERTURB_
- # As autoconf-generated configure scripts do, ensure that IFS
- # is defined initially, so that saving and restoring $IFS works.
- gl_init_sh_nl_='
-'
- IFS=" "" $gl_init_sh_nl_"
+# -----------------------------------------------------------------------------
- # This trap statement, along with a trap on 0 below, ensure that the
- # temporary directory, $test_dir_, is removed upon exit as well as
- # upon receipt of any of the listed signals.
- for sig_ in 1 2 3 13 15; do
- eval "trap 'Exit $(expr $sig_ + 128)' $sig_"
- done
-}
+# The interpreter for Bourne-shell scripts.
+# No special standards compatibility requirements.
+# Some environments, such as Android, don't have /bin/sh.
+if test -f /bin/sh$EXEEXT; then
+ BOURNE_SHELL=/bin/sh
+else
+ BOURNE_SHELL=sh
+fi
-# Create a temporary directory, much like mktemp -d does.
-# Written by Jim Meyering.
-#
-# Usage: mktempd_ /tmp phoey.XXXXXXXXXX
-#
-# First, try to use the mktemp program.
-# Failing that, we'll roll our own mktemp-like function:
-# - try to get random bytes from /dev/urandom
-# - failing that, generate output from a combination of quickly-varying
-# sources and gzip. Ignore non-varying gzip header, and extract
-# "random" bits from there.
-# - given those bits, map to file-name bytes using tr, and try to create
-# the desired directory.
-# - make only $MAX_TRIES_ attempts
+# =============================================================================
+# Convenience functions for the tests
-# Helper function. Print $N pseudo-random bytes from a-zA-Z0-9.
-rand_bytes_ ()
-{
- n_=$1
+# -----------------------------------------------------------------------------
+# Return value checking
- # Maybe try openssl rand -base64 $n_prime_|tr '+/=\012' abcd first?
- # But if they have openssl, they probably have mktemp, too.
+# This is used to simplify checking of the return value
+# which is useful when ensuring a command fails as desired.
+# I.e., just doing `command ... &&fail=1` will not catch
+# a segfault in command for example. With this helper you
+# instead check an explicit exit code like
+# returns_ 1 command ... || fail
+returns_ () {
+ # Disable tracing so it doesn't interfere with stderr of the wrapped command
+ { set +x; } 2>/dev/null
- chars_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
- dev_rand_=/dev/urandom
- if test -r "$dev_rand_"; then
- # Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194.
- dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \
- | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
- return
- fi
+ local exp_exit="$1"
+ shift
+ "$@"
+ test $? -eq $exp_exit && ret_=0 || ret_=1
- n_plus_50_=`expr $n_ + 50`
- cmds_='date; date +%N; free; who -a; w; ps auxww; ps -ef'
- data_=` (eval "$cmds_") 2>&1 | gzip `
+ if test "$VERBOSE" = yes && test "$gl_set_x_corrupts_stderr_" = false; then
+ set -x
+ fi
+ { return $ret_; } 2>/dev/null
+}
- # Ensure that $data_ has length at least 50+$n_
- while :; do
- len_=`echo "$data_"|wc -c`
- test $n_plus_50_ -le $len_ && break;
- data_=` (echo "$data_"; eval "$cmds_") 2>&1 | gzip `
- done
+# -----------------------------------------------------------------------------
+# Text file comparison
- echo "$data_" \
- | dd bs=1 skip=50 count=$n_ 2>/dev/null \
- | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_
+# Emit a header similar to that from diff -u; Print the simulated "diff"
+# command so that the order of arguments is clear. Don't bother with @@ lines.
+emit_diff_u_header_ ()
+{
+ printf '%s\n' "diff -u $*" \
+ "--- $1 1970-01-01" \
+ "+++ $2 1970-01-01"
}
-mktempd_ ()
+# Arrange not to let diff or cmp operate on /dev/null,
+# since on some systems (at least OSF/1 5.1), that doesn't work.
+# When there are not two arguments, or no argument is /dev/null, return 2.
+# When one argument is /dev/null and the other is not empty,
+# cat the nonempty file to stderr and return 1.
+# Otherwise, return 0.
+compare_dev_null_ ()
{
- case $# in
- 2);;
- *) fail_ "Usage: mktempd_ DIR TEMPLATE";;
- esac
-
- destdir_=$1
- template_=$2
-
- MAX_TRIES_=4
-
- # Disallow any trailing slash on specified destdir:
- # it would subvert the post-mktemp "case"-based destdir test.
- case $destdir_ in
- / | //) destdir_slash_=$destdir;;
- */) fail_ "invalid destination dir: remove trailing slash(es)";;
- *) destdir_slash_=$destdir_/;;
- esac
-
- case $template_ in
- *XXXX) ;;
- *) fail_ \
- "invalid template: $template_ (must have a suffix of at least 4 X's)";;
- esac
-
- # First, try to use mktemp.
- d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` &&
-
- # The resulting name must be in the specified directory.
- case $d in "$destdir_slash_"*) :;; *) false;; esac &&
-
- # It must have created the directory.
- test -d "$d" &&
+ test $# = 2 || return 2
- # It must have 0700 permissions. Handle sticky "S" bits.
- perms=`ls -dgo "$d" 2>/dev/null` &&
- case $perms in drwx--[-S]---*) :;; *) false;; esac && {
- echo "$d"
- return
- }
+ if test "x$1" = x/dev/null; then
+ test -s "$2" || return 0
+ emit_diff_u_header_ "$@"; sed 's/^/+/' "$2"
+ return 1
+ fi
- # If we reach this point, we'll have to create a directory manually.
+ if test "x$2" = x/dev/null; then
+ test -s "$1" || return 0
+ emit_diff_u_header_ "$@"; sed 's/^/-/' "$1"
+ return 1
+ fi
- # Get a copy of the template without its suffix of X's.
- base_template_=`echo "$template_"|sed 's/XX*$//'`
+ return 2
+}
- # Calculate how many X's we've just removed.
- template_length_=`echo "$template_" | wc -c`
- nx_=`echo "$base_template_" | wc -c`
- nx_=`expr $template_length_ - $nx_`
+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` &&
+ break
+done
+if test "$diff_opt_" != no; then
+ if test -z "$diff_out_"; then
+ compare_ () { 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
+ diff_status_=$?
+ test $diff_status_ -eq 0 || cat diff.out || diff_status_=2
+ rm -f diff.out || diff_status_=2
+ return $diff_status_
+ }
+ fi
+elif cmp -s /dev/null /dev/null 2>/dev/null; then
+ compare_ () { cmp -s "$@"; }
+else
+ compare_ () { cmp "$@"; }
+fi
- err_=
- i_=1
- while :; do
- X_=`rand_bytes_ $nx_`
- candidate_dir_="$destdir_slash_$base_template_$X_"
- err_=`mkdir -m 0700 "$candidate_dir_" 2>&1` \
- && { echo "$candidate_dir_"; return; }
- test $MAX_TRIES_ -le $i_ && break;
- i_=`expr $i_ + 1`
- done
- fail_ "$err_"
+# Usage: compare EXPECTED ACTUAL
+#
+# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more.
+# Otherwise, propagate $? to caller: any diffs have already been printed.
+compare ()
+{
+ # This looks like it can be factored to use a simple "case $?"
+ # after unchecked compare_dev_null_ invocation, but that would
+ # fail in a "set -e" environment.
+ if compare_dev_null_ "$@"; then
+ return 0
+ else
+ case $? in
+ 1) return 1;;
+ *) compare_ "$@";;
+ esac
+ fi
}
+# -----------------------------------------------------------------------------
+
# If you want to override the testdir_prefix_ function,
# or to add more utility functions, use this file.
test -f "$srcdir/init.cfg" \
&& . "$srcdir/init.cfg"
+# =============================================================================
+# Set up the environment for the test to run in.
+
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.
diff --git a/testsuite/inplace-hold.sh b/testsuite/inplace-hold.sh
index 1bc293c..95525d6 100644
--- a/testsuite/inplace-hold.sh
+++ b/testsuite/inplace-hold.sh
@@ -2,7 +2,7 @@
# Test runner for old 'inplace-hold' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/inplace-selinux.sh b/testsuite/inplace-selinux.sh
index 783c3de..f10fedf 100755
--- a/testsuite/inplace-selinux.sh
+++ b/testsuite/inplace-selinux.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This 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,11 @@
print_ver_ sed
require_selinux_
+sed --version | grep -q "with SELinux" \
+ || skip_ "sed built without SELinux support"
+sed --version | grep -q "^SELinux is enabled" \
+ || skip_ "sed reports SELinux is disabled on this system"
+
touch a || framework_failure_
chcon -u system_u a || skip_ "chcon doesn't work"
chcon -u user_u a || skip_ "chcon doesn't work"
diff --git a/testsuite/invalid-mb-seq-UMR.sh b/testsuite/invalid-mb-seq-UMR.sh
index 196db65..0edbc3c 100755
--- a/testsuite/invalid-mb-seq-UMR.sh
+++ b/testsuite/invalid-mb-seq-UMR.sh
@@ -2,7 +2,7 @@
# Inserting an invalid multibyte sequence could lead to
# reading uninitialized memory.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/local.mk b/testsuite/local.mk
index 43623bf..2b3bf86 100644
--- a/testsuite/local.mk
+++ b/testsuite/local.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This 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,7 @@ TEST_EXTENSIONS = .sh .pl
if HAVE_PERL
TESTSUITE_PERL = $(PERL)
else
-TESTSUITE_PERL = $(SHELL) $(srcdir)/no-perl
+TESTSUITE_PERL = $(SHELL) $(srcdir)/testsuite/no-perl
endif
# Options passed to the perl invocations running the perl test scripts.
@@ -199,6 +199,7 @@ EXTRA_DIST += \
testsuite/madding.good \
testsuite/madding.inp \
testsuite/madding.sed \
+ testsuite/no-perl \
testsuite/uniq.good \
testsuite/uniq.inp \
testsuite/uniq.sed \
diff --git a/testsuite/mac-mf.sh b/testsuite/mac-mf.sh
index d91b223..f909965 100755
--- a/testsuite/mac-mf.sh
+++ b/testsuite/mac-mf.sh
@@ -2,7 +2,7 @@
# Runner for old 'mac-mf' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/madding.sh b/testsuite/madding.sh
index b2ea96f..c67af8d 100755
--- a/testsuite/madding.sh
+++ b/testsuite/madding.sh
@@ -2,7 +2,7 @@
# Runner for old 'madding' test (long lines)
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/mb-bad-delim.sh b/testsuite/mb-bad-delim.sh
index 9ef16b5..c7735a1 100755
--- a/testsuite/mb-bad-delim.sh
+++ b/testsuite/mb-bad-delim.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test 's' and 'y' non-slash delimiters in multibyte locales
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/mb-charclass-non-utf8.sh b/testsuite/mb-charclass-non-utf8.sh
index 7bf8951..023ad18 100755
--- a/testsuite/mb-charclass-non-utf8.sh
+++ b/testsuite/mb-charclass-non-utf8.sh
@@ -4,7 +4,7 @@
# a single-byte character, or the second byte of a multibyte
# character.
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/mb-match-slash.sh b/testsuite/mb-match-slash.sh
index c824a2e..f2e69fd 100755
--- a/testsuite/mb-match-slash.sh
+++ b/testsuite/mb-match-slash.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test slash following an incomplete multibyte character
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/mb-y-translate.sh b/testsuite/mb-y-translate.sh
index 02238ec..8257235 100755
--- a/testsuite/mb-y-translate.sh
+++ b/testsuite/mb-y-translate.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test multibyte y/// translations
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/misc.pl b/testsuite/misc.pl
index 3fa5b84..7bc92f6 100644
--- a/testsuite/misc.pl
+++ b/testsuite/misc.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
# Test misc.
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/missing-filename.sh b/testsuite/missing-filename.sh
index 704bc67..6bb0884 100755
--- a/testsuite/missing-filename.sh
+++ b/testsuite/missing-filename.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test r/R/w/W commands without a file name.
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/newjis.sh b/testsuite/newjis.sh
index 51ed78e..e50fe23 100755
--- a/testsuite/newjis.sh
+++ b/testsuite/newjis.sh
@@ -2,7 +2,7 @@
# Test runner for newjis
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/newline-dfa-bug.sh b/testsuite/newline-dfa-bug.sh
index af31ce5..05e2a3b 100755
--- a/testsuite/newline-dfa-bug.sh
+++ b/testsuite/newline-dfa-bug.sh
@@ -2,7 +2,7 @@
# sed may access to uninitialized memory if transit to 15th dfa state
# with newline. This bug affected sed version 4.3.
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This 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,6 +32,9 @@ valgrind --quiet --error-exitcode=1 \
grep 'valgrind: .*Assertion.*failed' err > /dev/null \
&& skip_ 'you seem to have a buggy version of valgrind'
+# Remove any valgrind-added diagnostics from stderr.
+sed -i '/^==/d' err
+
compare exp out || fail=1
compare /dev/null err || fail=1
diff --git a/testsuite/no-perl b/testsuite/no-perl
new file mode 100644
index 0000000..19cfcfb
--- /dev/null
+++ b/testsuite/no-perl
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Perl is not available, the test should be considered skipped.
+# FD 9 should have been opened by the test suite harness, pointing
+# to the original stderr (usually, the user's terminal).
+echo "test skipped: no usable version of Perl found" >&9
+exit 77
diff --git a/testsuite/normalize-text.sh b/testsuite/normalize-text.sh
index 71b03bf..f9fe3f8 100644
--- a/testsuite/normalize-text.sh
+++ b/testsuite/normalize-text.sh
@@ -4,7 +4,7 @@
# \dNNN \xNN \oNNN - tested in 'convert-number.sh'
# character-classes in POSIX mode - tested in 'posix-char-class.sh'
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/nulldata.sh b/testsuite/nulldata.sh
index a8a0114..c23dc0a 100755
--- a/testsuite/nulldata.sh
+++ b/testsuite/nulldata.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test -z/--null-data option
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/obinary.sh b/testsuite/obinary.sh
index 78bffb5..0086d1c 100755
--- a/testsuite/obinary.sh
+++ b/testsuite/obinary.sh
@@ -2,7 +2,7 @@
# Test CR/LF behaviour on platforms which support O_BINARY file mode
# (i.e. differentiates between text and binary files).
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/panic-tests.sh b/testsuite/panic-tests.sh
index 76146f9..29de75e 100644
--- a/testsuite/panic-tests.sh
+++ b/testsuite/panic-tests.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Exercise some panic stops
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/posix-char-class.sh b/testsuite/posix-char-class.sh
index ecbda07..df6821d 100644
--- a/testsuite/posix-char-class.sh
+++ b/testsuite/posix-char-class.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test character-class definitions in POSIX mode.
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/posix-mode-ERE.sh b/testsuite/posix-mode-ERE.sh
index 223593c..a43de0f 100644
--- a/testsuite/posix-mode-ERE.sh
+++ b/testsuite/posix-mode-ERE.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Ensure extended regular expressions work in posix mode
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/posix-mode-N.sh b/testsuite/posix-mode-N.sh
index 344ec19..2aae1a4 100755
--- a/testsuite/posix-mode-N.sh
+++ b/testsuite/posix-mode-N.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test 'N' command with/without posix conformity
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/posix-mode-addr.sh b/testsuite/posix-mode-addr.sh
index 1ba5fc7..99ab534 100644
--- a/testsuite/posix-mode-addr.sh
+++ b/testsuite/posix-mode-addr.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Ensure GNU address extensions are rejected in posix mode
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/posix-mode-bad-ref.sh b/testsuite/posix-mode-bad-ref.sh
index f933f79..80183c5 100755
--- a/testsuite/posix-mode-bad-ref.sh
+++ b/testsuite/posix-mode-bad-ref.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test non-posix-conforming gnu extensions when using --posix.
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/posix-mode-s.sh b/testsuite/posix-mode-s.sh
index 33ad92b..4bd8e07 100644
--- a/testsuite/posix-mode-s.sh
+++ b/testsuite/posix-mode-s.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Ensure GNU extensions are rejected in posix mode
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/range-overlap.sh b/testsuite/range-overlap.sh
index ddcd08f..98345ec 100755
--- a/testsuite/range-overlap.sh
+++ b/testsuite/range-overlap.sh
@@ -2,7 +2,7 @@
# Verify that even with overlapping ranges of line numbers,
# only the selected lines are affected.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/recursive-escape-c.sh b/testsuite/recursive-escape-c.sh
index 41bbced..c7df9b0 100644
--- a/testsuite/recursive-escape-c.sh
+++ b/testsuite/recursive-escape-c.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# test \c escaping
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/regex-errors.sh b/testsuite/regex-errors.sh
index 454f7c0..ca0afa5 100644
--- a/testsuite/regex-errors.sh
+++ b/testsuite/regex-errors.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Exercise regex_compile errors
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/regex-max-int.sh b/testsuite/regex-max-int.sh
index fcea466..e105788 100755
--- a/testsuite/regex-max-int.sh
+++ b/testsuite/regex-max-int.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test regex on input buffers larger than 2GB
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/sandbox.sh b/testsuite/sandbox.sh
index cd5e7c9..02a2773 100755
--- a/testsuite/sandbox.sh
+++ b/testsuite/sandbox.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test --sandbox mode
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/stdin-prog.sh b/testsuite/stdin-prog.sh
index 6a7167c..a7c2c16 100644
--- a/testsuite/stdin-prog.sh
+++ b/testsuite/stdin-prog.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test program file from STDIN
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/stdin.sh b/testsuite/stdin.sh
index 71c17d2..4bad7a2 100755
--- a/testsuite/stdin.sh
+++ b/testsuite/stdin.sh
@@ -2,7 +2,7 @@
# Test runner for old 'stdin' test
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/subst-mb-incomplete.sh b/testsuite/subst-mb-incomplete.sh
index 5045e2d..8453a71 100755
--- a/testsuite/subst-mb-incomplete.sh
+++ b/testsuite/subst-mb-incomplete.sh
@@ -3,7 +3,7 @@
# performing a substitution with a replacement string containing an
# incomplete multi-byte character.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/subst-options.sh b/testsuite/subst-options.sh
index bc206aa..f5b323e 100644
--- a/testsuite/subst-options.sh
+++ b/testsuite/subst-options.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test Substitute options (for code-coverage purposes as well)
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/subst-replacement.sh b/testsuite/subst-replacement.sh
index 7f4854b..2964c83 100644
--- a/testsuite/subst-replacement.sh
+++ b/testsuite/subst-replacement.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test Substitute replacements, e.g. 's/(.)/\U\1/'
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/temp-file-cleanup.sh b/testsuite/temp-file-cleanup.sh
index dc53d57..9c738e5 100755
--- a/testsuite/temp-file-cleanup.sh
+++ b/testsuite/temp-file-cleanup.sh
@@ -2,7 +2,7 @@
# Verify that an erroneous use of sed -i no longer leaves behind
# a temporary file.
-# Copyright (C) 2015-2018 Free Software Foundation, Inc.
+# Copyright (C) 2015-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/test-mbrtowc.c b/testsuite/test-mbrtowc.c
index 912b14b..cd79764 100644
--- a/testsuite/test-mbrtowc.c
+++ b/testsuite/test-mbrtowc.c
@@ -1,5 +1,5 @@
/* Auxiliary program to test mbrtowc(3) behaviour.
- Copyright 2016-2018 Free Software Foundation, Inc.
+ Copyright 2016-2020 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/testsuite/title-case.sh b/testsuite/title-case.sh
index a365f08..7d0d559 100755
--- a/testsuite/title-case.sh
+++ b/testsuite/title-case.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test case insensitive matching for titlecase and similarly odd chars.
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This 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,8 +26,8 @@ c='\363' # sigma
printf "$a\\n$b\\n$c\\n" >in || framework_failure_
for chr in "$a" "$b" "$c"; do
- printf '/\(\)\\1'"$chr"/Ip >prog || fail=1
- LC_ALL=el_GR.iso88597 sed -n -f prog in >out || fail=1
+ printf '/()\\1'"$chr"/Ip >prog || fail=1
+ LC_ALL=el_GR.iso88597 sed -r -n -f prog in >out || fail=1
compare_ in out || fail=1
done
diff --git a/testsuite/unbuffered.sh b/testsuite/unbuffered.sh
index 5cdfc27..4fc5cb9 100644
--- a/testsuite/unbuffered.sh
+++ b/testsuite/unbuffered.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Test -u/--unbuffered option
-# Copyright (C) 2016-2018 Free Software Foundation, Inc.
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/uniq.sh b/testsuite/uniq.sh
index f394cb3..afad9b3 100644
--- a/testsuite/uniq.sh
+++ b/testsuite/uniq.sh
@@ -2,7 +2,7 @@
# Test runner for the uniq.sed script
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/utf8-ru.sh b/testsuite/utf8-ru.sh
index 695c383..b3213b3 100644
--- a/testsuite/utf8-ru.sh
+++ b/testsuite/utf8-ru.sh
@@ -4,7 +4,7 @@
# in "s///" command.
# This is an adaptation of the old utf8-1/2/3/4 tests.
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/testsuite/xemacs.good b/testsuite/xemacs.good
index abe2903..dff0941 100644
--- a/testsuite/xemacs.good
+++ b/testsuite/xemacs.good
@@ -1,6 +1,6 @@
#Makefile.in generated automatically by automake 1.5 from Makefile.am.
-#Copyright 1994-2018 Free Software Foundation, Inc.
+#Copyright 1994-2020 Free Software Foundation, Inc.
#This Makefile.in is free software; the Free Software Foundation
#gives unlimited permission to copy and/or distribute it,
#with or without modifications, as long as this notice is preserved.
diff --git a/testsuite/xemacs.inp b/testsuite/xemacs.inp
index c313b4a..ba6c748 100644
--- a/testsuite/xemacs.inp
+++ b/testsuite/xemacs.inp
@@ -1,6 +1,6 @@
# Makefile.in generated automatically by automake 1.5 from Makefile.am.
-# Copyright 1994-2018 Free Software Foundation, Inc.
+# Copyright 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/testsuite/xemacs.sh b/testsuite/xemacs.sh
index e1877a2..d52fcb9 100755
--- a/testsuite/xemacs.sh
+++ b/testsuite/xemacs.sh
@@ -2,7 +2,7 @@
# Test runner for xemacs.sed
-# Copyright (C) 2017-2018 Free Software Foundation, Inc.
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by