modules


Log

Author Commit Date CI Message
Paul Eggert b12a85c0 2018-06-30T18:47:11 regex: trim module dependencies * modules/regex (Depends-on): Remove gettext-h and lock, since the regex code should work OK without these modules, and Emacs uses it that way. Also remove memcmp, memmove, and wctype, as these modules are obsolete and should not be needed any more.
Bruno Haible c08a99b5 2018-06-25T00:41:03 af_alg: Fix state of stream after sendfile() succeeds. * lib/af_alg.c (afalg_stream): Invoke fflush and lseek, to ensure that the stream is correctly positioned afterwards. * modules/crypto/af_alg (Depends-on): Add fflush. * tests/test-digest.h (test_digest_on_files): Verify that after the operation the stream is positioned at end of file.
Bruno Haible d27c90a1 2018-06-25T01:02:39 af_alg tests: Add another test. * tests/test-digest.h (test_digest_on_files): Also check a large file with a skipped header. * tests/test-md5.c: Include macros.h. * tests/test-sha1.c: Likewise. * tests/test-sha256.c: Likewise. * tests/test-sha512.c: Likewise. * modules/crypto/md5-tests (Files): Add tests/macros.h. * modules/crypto/sha1-tests (Files): Likewise. * modules/crypto/sha256-tests (Files): Likewise. * modules/crypto/sha512-tests (Files): Likewise.
Bruno Haible 7903cdbf 2018-06-24T16:19:31 mbrtowc, wcwidth: Fix MT-safety bug (regression from 2018-06-23). * lib/mbrtowc.c (enc_t): New enum type. (locale_enc, locale_enc_cached): New functions. (mbrtowc): Eliminate static variables. Use locale_enc_cached instead. * lib/wcwidth.c (is_locale_utf8, is_locale_utf8_cached): New functions. (wcwidth): Eliminate static variables. Use is_locale_utf8_cached instead. * m4/mbrtowc.m4 (gl_PREREQ_MBRTOWC): Require AC_C_INLINE. * m4/wcwidth.m4 (gl_PREREQ_WCWIDTH): New macro. * modules/wcwidth (configure.ac): Invoke it.
Pádraig Brady 79ff8c35 2018-05-20T22:11:12 wchar-single: a new module to enable optimizations in wchar replacements * lib/mbrtowc.c (mbrtowc): Only check locale_charset() once if GNULIB_WCHAR_SINGLE is enabled. * lib/wcwidth.c (wcwidth): Likewise.
Paul Eggert 137dda35 2018-06-21T11:25:02 random, random_r: merge from glibc * lib/random.c, lib/random_r.c: Include libc-config.h if !_LIBC, not config.h unilaterally. * lib/random.c: Do not include stdint.h or time.h; not needed. Include libc-lock.h if _LIBC, and define substitute macros otherwise. (unsafe_state): Rename from generator. All uses changed. Use C99-style initializers. (__random, __srandom, __initstate, __setstate): Rename from non-underscored version, but define it to non-underscored version on Gnulib. Add a lock. * lib/random_r.c (__srandom_r, __initstate_r, __setstate_r, __random_r): Likewise. Do not include <stdint.h>; not needed since stdlib.h defines int32_t. (weak_alias, __set_errno) [!_LIBC]: Remove; now done by libc-config. (__srandom_r): Use int32_t instead of long int where int32_t will do. (__random_r): Use uint32 to fix glibc bug 17343. * modules/random, modules/random_r (Depends-on): Add libc-config. Depend on stdint only if $HAVE_RANDOM = 0.
Paul Eggert 0d45ec7c 2018-06-17T14:35:37 crypto: use byteswap * lib/md4.c, lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c: * lib/sm3.c: Include <byteswap.h>. (SWAP): Use its macros rather than reinventing the wheel. * modules/crypto/md4, modules/crypto/md5-buffer: * modules/crypto/sha1-buffer, modules/crypto/sha256-buffer: * modules/crypto/sha512-buffer, modules/crypto/sm3: (Depends-on): Add byteswap.
Paul Eggert 7ff7a27a 2018-06-03T18:02:10 Port crypto/af_alg to GCC 4.8.4 Problem reported by Peter Simons in: https://lists.gnu.org/r/bug-gnulib/2018-06/msg00002.html * modules/crypto/af_alg (Depends-on): Add c99 if USE_AF_ALG.
Paul Eggert 0c011767 2018-05-21T10:32:25 crypto: omit stream ops Emacs doesn’t need * lib/md5.c (md5_stream): * lib/sha1.c (sha1_stream): * lib/sha256.c (shaxxx_stream, sha256_stream, sha224_stream): * lib/sha512.c (shaxxx_stream, sha512_stream, sha384_stream): Compile stream functions only if GL_COMPILE_CRYPTO_STREAM is defined. Emacs needs this, as it does not use the stream operations and doesn’t need all the af_alg stuff we’ve recently added. Perhaps a similar change is needed to the other crypto modules, but this patch changes only those needed for Emacs. * modules/crypto/md5-buffer, modules/crypto/sha1-buffer: * modules/crypto/sha256-buffer, modules/crypto/sha512-buffer: New modules, used by Emacs. * modules/crypto/md5, modules/crypto/sha1, modules/crypto/sha256: * modules/crypto/sha512: Rewrite to depend on the new modules.
Bruno Haible 1193175e 2018-05-21T02:42:01 wcwidth tests: Fix link error. * modules/wcwidth-tests (Makefile.am): Link test-wcwidth against $(LIBUNISTRING).
Bruno Haible 68d64349 2018-05-20T14:02:19 regex: Fix "error: possibly undefined macro: gl_GLIBC21". * modules/regex (Files): Add m4/glibc21.m4.
Bruno Haible bb5cc1c5 2018-05-19T17:17:32 localcharset: Move mapping tables into the code. * lib/localcharset.h: Document the GNU canonical names for character encodings here. * lib/localcharset.c: Don't include <fcntl.h>, <unistd.h>, relocatable.h, configmake.h. (O_NOFOLLOW, ISSLASH, DIRECTORY_SEPARATOR, getc, volatile): Remove macros. (charset_aliases): Remove variable. (get_charset_aliases): Remove function. (struct table_entry): New type. (alias_table, locale_table): New constants. (locale_charset): Use the alias_table or locale_table to get the canonicalized encoding name. * lib/config.charset: Remove file. * lib/ref-add.sin: Remove file. * lib/ref-del.sin: Remove file. * m4/localcharset.m4 (gl_LOCALCHARSET): Don't require gl_FCNTL_O_FLAGS, AC_CANONICAL_HOST, gl_GLIBC21. Don't check for getc_unlocked. * modules/localcharset (Notice): Remove. (Files): Remove config.charset, ref-add.sin, ref-del.sin, fcntl-o.m4, glibc21.m4. (Depends-on): Remove configmake. (configure.ac): Define LOCALCHARSET_TESTS_ENVIRONMENT to empty. (Makefile.am): Simplify. * build-aux/prefix-gnulib-mk: Remove special code for the removed files.
Bruno Haible 9d70137b 2018-05-19T17:07:34 localcharset: Add a manual test. * tests/test-localcharset.c: New file. * modules/localcharset-tests: New file.
Bruno Haible a0f15cb0 2018-05-14T01:48:22 truncate: Fix compilation error on Android. * m4/truncate.m4 (gl_FUNC_TRUNCATE): Test also whether 'truncate' is declared. Set HAVE_DECL_TRUNCATE, not HAVE_TRUNCATE. * lib/unistd.in.h (truncate): Test HAVE_DECL_TRUNCATE, not HAVE_TRUNCATE. * modules/truncate: Likewise. * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Initialize HAVE_DECL_TRUNCATE, not HAVE_TRUNCATE. * modules/unistd (Makefile.am): Substitute HAVE_DECL_TRUNCATE, not HAVE_TRUNCATE. * doc/posix-functions/truncate.texi: Mention the issue.
Bruno Haible b2399209 2018-05-14T00:02:48 tsearch: Fix compilation error on Android. * lib/search.in.h (twalk): Declare when HAVE_TWALK, not HAVE_TSEARCH, is 0. (GNULIB_defined_tsearch, GNULIB_defined_twalk): New macros. * lib/tsearch.c (tsearch, tfind, tdelete): Define only if GNULIB_defined_tsearch is true. (twalk): Define only if GNULIB_defined_twalk is true. * modules/tsearch (configure.ac): Compile tsearch.c also if HAVE_TWALK is 0. * m4/tsearch.m4 (gl_FUNC_TSEARCH): Set HAVE_TWALK. * m4/search_h.m4 (gl_SEARCH_H_DEFAULTS): Initialize HAVE_TWALK. * modules/search (Makefile.am): Substitute HAVE_TWALK.
Bruno Haible 88d119b2 2018-05-13T23:23:47 imaxdiv: Fix compilation error on Android. * m4/imaxdiv.m4 (gl_FUNC_IMAXDIV): Set HAVE_IMAXDIV_T to 0 if imaxdiv_t is not defined. * lib/inttypes.in.h (imaxdiv_t): Define if HAVE_IMAXDIV_T, not HAVE_DECL_IMAXDIV, is 0. * m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Initialize HAVE_IMAXDIV_T. * modules/inttypes-incomplete (Makefile.am): Substitute HAVE_IMAXDIV_T.
Bruno Haible 0cc03459 2018-05-13T18:28:35 getpagesize: Fix compilation error on Android. * m4/getpagesize.m4 (gl_CHECK_FUNC_GETPAGESIZE): New macro. (gl_FUNC_GETPAGESIZE): Invoke it instead of AC_CHECK_FUNC. * m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Don't invoke AC_CHECK_FUNC. Instead, invoke gl_CHECK_FUNC_GETPAGESIZE and define HAVE_GETPAGESIZE accordingly. * modules/getcwd (Files): Add m4/getpagesize.m4.
Paul Eggert cb17397c 2018-05-09T18:07:29 af_alg: recover better from crypto failures * lib/af_alg.c (afalg_stream): Recover from crypto failures if the input stream is seekable, by repositioning the stream back to where it was, possibly by just calling sendfile with an offset arg. This lets us return -EAFNOSUPPORT instead of -EIO in some cases, which lets our callers try again with user-mode code. * modules/crypto/af_alg (Depends-on): Depend on fseeko and ftello instead of on fflush and lseek.
Bruno Haible 207cac7a 2018-05-06T16:46:57 crypto/{md5,sha1,sha256,sha512} tests: Add benchmarks. * tests/bench-digest.h: New file. * tests/bench-md5.c: New file. * tests/bench-sha1.c: New file. * tests/bench-sha224.c: New file. * tests/bench-sha256.c: New file. * tests/bench-sha384.c: New file. * tests/bench-sha512.c: New file. * modules/crypto/md5-tests (Files): Add tests/bench-md5.c, tests/bench-digest.h. (Depends-on): Add getrusage, gettimeofday. (Makefile.am): Add variables to build bench-md5. * modules/crypto/sha1-tests (Files): Add tests/bench-sha1.c, tests/bench-digest.h. (Depends-on): Add getrusage, gettimeofday. (Makefile.am): Add variables to build bench-sha1. * modules/crypto/sha256-tests (Files): Add tests/bench-sha224.c, tests/bench-sha256.c, tests/bench-digest.h. (Depends-on): Add getrusage, gettimeofday. (Makefile.am): Add variables to build bench-sha224, bench-sha256. * modules/crypto/sha512-tests (Files): Add tests/bench-sha384.c, tests/bench-sha512.c, tests/bench-digest.h. (Depends-on): Add getrusage, gettimeofday. (Makefile.am): Add variables to build bench-sha384, bench-sha512.
Bruno Haible 22d459bb 2018-05-06T13:30:24 af_alg: Fix bug with streams that are not at position 0. * lib/af_alg.c (afalg_stream): Before sendfile, invoke fflush. Don't assume that the stream is positioned at position 0. * lib/af_alg.h (afalg_stream): Mention restriction regarding the state of the stream. * lib/md5.h (md5_stream): Likewise. * lib/sha1.h (sha1_stream): Likewise. * lib/sha256.h (sha256_stream, sha224_stream): Likewise. * lib/sha512.h (sha512_stream, sha384_stream): Likewise. * modules/crypto/af_alg (Depends-on): Add fflush, lseek.
Bruno Haible 55832dcf 2018-05-06T11:55:55 Followup to 'af_alg: New module.'. * modules/crypto/md5 (Depends-on): Remove sys_socket, sys_stat. * modules/crypto/sha1 (Depends-on): Likewise. * modules/crypto/sha256 (Depends-on): Likewise. * modules/crypto/sha512 (Depends-on): Likewise.
Bruno Haible 459221a8 2018-05-05T20:27:33 af_alg: New module. * lib/af_alg.h: Test HAVE_* macro through '#if', not '#ifdef'. * lib/af_alg.c: Include "af_alg.h" before the other header files. * lib/md5.c: Include "af_alg.h" unconditionally. (md5_stream): Invoke afalg_stream unconditionally. * lib/sha1.c: Include "af_alg.h" unconditionally. (sha1_stream): Invoke afalg_stream unconditionally. * lib/sha256.c: Include "af_alg.h" unconditionally. (sha256_stream, sha224_stream): Invoke afalg_stream unconditionally. * lib/sha512.c: Include "af_alg.h" unconditionally. (sha512_stream, sha384_stream): Invoke afalg_stream unconditionally. * m4/af_alg.m4: Renamed from m4/linux-if-alg.m4. (gl_AF_ALG): Renamed from gl_LINUX_IF_ALG_H. * modules/crypto/af_alg: New file. * modules/crypto/md5 (Files): Remove files that are now in the 'crypto/af_alg' module. (Depends-on): Add crypto/af_alg. (configure.ac): Remove gl_LINUX_IF_ALG_H invocation. (Makefile.am): Don't mention af_alg.c here. * modules/crypto/sha1 (Files): Remove files that are now in the 'crypto/af_alg' module. (Depends-on): Add crypto/af_alg. (configure.ac): Remove gl_LINUX_IF_ALG_H invocation. (Makefile.am): Don't mention af_alg.c here. * modules/crypto/sha256 (Files): Remove files that are now in the 'crypto/af_alg' module. (Depends-on): Add crypto/af_alg. (configure.ac): Remove gl_LINUX_IF_ALG_H invocation. (Makefile.am): Don't mention af_alg.c here. * modules/crypto/sha512 (Files): Remove files that are now in the 'crypto/af_alg' module. (Depends-on): Add crypto/af_alg. (configure.ac): Remove gl_LINUX_IF_ALG_H invocation. (Makefile.am): Don't mention af_alg.c here.
Paul Eggert a4fd2b6f 2018-05-05T10:27:38 sys-limits.h: new file for crypto and safe I/O * lib/af_alg.c: Include sys-limits.h. (MAX_RW_COUNT): Remove. Use replaced by SYS_BUFSIZE_MAX. (afalg_stream): Also reject negative sizes for sendfile; they should not happen and the code is a bit cleaner and faster this way. * lib/safe-read.c: Include sys-limits.h. (BUGGY_READ_MAXIMUM): Remove. All uses replaced by SYS_BUFSIZE_MAX. * lib/sys-limits.h: New file, with values and commentary derived from the old safe-read.c and from GNU Emacs sysdep.c. * modules/crypto/md5, modules/crypto/sha1, modules/crypto/sha256: * modules/crypto/sha512, modules/safe-read, modules/safe-write: Add lib/sys-limits.h to Files section.
Bruno Haible ba0ffea0 2018-05-05T18:09:40 crypto/{md5,sha1,sha256,sha512}: Fix compilation error (S_TYPEISTMO). * modules/crypto/md5 (Depends-on): Add 'sys_stat'. * modules/crypto/sha1 (Depends-on): Likewise. * modules/crypto/sha256 (Depends-on): Likewise. * modules/crypto/sha512 (Depends-on): Likewise.
Bruno Haible dad2461a 2018-05-05T18:04:43 crypto/{md5,sha1,sha256,sha512}: Fix module description. * modules/crypto/md5 (Depends-on): Add 'sys_socket'. * modules/crypto/sha1 (Depends-on): Likewise. * modules/crypto/sha256 (Depends-on): Likewise. * modules/crypto/sha512 (Depends-on): Likewise.
Bruno Haible a0bdcae5 2018-05-05T17:38:39 md5 tests: Add test for md5_stream. * tests/test-digest.h: New file. * tests/test-md5.c: Include test-digest.h. (main): Invoke test_digest_on_files on 'md5_stream'. * modules/crypto/md5-tests (Files): Add tests/test-digest.h.
Bruno Haible 6c3f5ab2 2018-05-05T17:42:46 sha512: Add tests. * tests/test-sha512.c: New file. * modules/crypto/sha512-tests: New file.
Bruno Haible a4be0318 2018-05-05T17:41:35 sha256: Add tests. * tests/test-sha256.c: New file. * modules/crypto/sha256-tests: New file.
Bruno Haible 854681bd 2018-05-05T17:39:57 sha1 tests: Add test for sha1_stream. * tests/test-sha1.c: Include test-digest.h. (main): Invoke test_digest_on_files on 'sha1_stream'. * modules/crypto/sha1-tests (Files): Add tests/test-digest.h.
Matteo Croce a720fab2 2018-04-28T15:32:58 md5sum: use kernel crypto API Use AF_ALG for md5 too Signed-off-by: Matteo Croce <mcroce@redhat.com>
Matteo Croce 833bb2f5 2018-04-28T15:32:57 sha512sum: use kernel crypto API Use AF_ALG for sha384 and sha512 too Signed-off-by: Matteo Croce <mcroce@redhat.com>
Matteo Croce cb08dad2 2018-04-28T15:32:56 sha256sum: use kernel crypto API Use AF_ALG for sha224 and sha256 too Signed-off-by: Matteo Croce <mcroce@redhat.com>
Matteo Croce 7074a586 2018-04-28T15:32:55 sha1sum: use AF_ALG when available Linux supports accessing kernel crypto API via AF_ALG since version 2.6.38. Coreutils uses libcrypto when available and fallbacks to generic C implementation of various hashing functions. Add a generic afalg_stream() function which uses AF_ALG to calculate the hash of a stream and use sendfile() when possible (regular file with size less or equal than 0x7ffff000 (2,147,479,552) bytes, AKA MAX_RW_COUNT). Use afalg_stream() only in sha1sum for now, but other hashes are possible. The speed gain really depends on the CPU type, on systems which doesn't use libcrypto ranges from ~10% to 320%. This is a test on a Intel(R) Xeon(R) CPU E3-1265L V2 and Debian stretch: $ truncate -s 2GB 2g.bin $ time sha1sum 2g.bin 752ef2367f479e79e4f0cded9c270c2890506ab0 2g.bin real 0m4.829s user 0m4.437s sys 0m0.391s $ time ./sha1sum-afalg 2g.bin 752ef2367f479e79e4f0cded9c270c2890506ab0 2g.bin real 0m3.164s user 0m0.000s sys 0m3.162s Signed-off-by: Matteo Croce <mcroce@redhat.com>
Bruno Haible 37efd1c5 2018-04-24T20:04:05 sys_socket: Make SO_REUSEPORT available across platforms. Reported by Tom G. Christensen <tgc@jupiterrise.com>. * lib/sys_socket.in.h (SO_REUSEPORT): New macro. * doc/posix-headers/sys_socket.texi: Mention the issue. * tests/test-poll.c (SO_REUSEPORT): Remove. * tests/test-select.h: Include <sys/socket.h>. (SO_REUSEPORT): Remove. * modules/select-tests (Depends-on): Add 'sys_socket'.
Bruno Haible 8f9b7b4f 2018-04-07T19:32:31 unicase/u*-context: Fix link errors with libunistring <= 0.9.9. Reported by Genki Sky <sky@genki.is>. * modules/unicase/u8-prefix-context (configure.ac): Require libunistring version 0.9.10 or newer. * modules/unicase/u8-suffix-context (configure.ac): Likewise. * modules/unicase/u16-prefix-context (configure.ac): Likewise. * modules/unicase/u16-suffix-context (configure.ac): Likewise. * modules/unicase/u32-prefix-context (configure.ac): Likewise.
Jim Meyering 8326a2e5 2018-03-24T09:48:47 test-version-etc.sh: don't use diff directly: use init.sh's compare We'd rather not sacrifice readable "diff -u" output even for "diff -c" output (not supported by busybox) or for even less readable ed-style "diff" output. So use init.sh's compare function * tests/test-version-etc.sh: Source init.sh and add "." to path. Remove "./" from invocation of test-version-etc, so we use path. And s/diff/compare/. * modules/version-etc-tests (Depends-on): Add test-framework-sh, to get init.sh. Prompted by Eric Blake's comments in https://lists.gnu.org/r/sed-devel/2018-03/msg00015.html
Bruno Haible a96f69a5 2018-03-16T16:25:02 glob: Don't compile replacements on recent glibc systems. * lib/glob.in.h: Use the usual idiom for the double-inclusion guard. If REPLACE_GLOB is 0, include the system's <glob.h> and use _GL_CXXALIAS_SYS. * m4/glob.m4 (gl_GLOB): Set REPLACE_GLOB instead of GLOB_H. Accept _GNU_GLOB_INTERFACE_VERSION 2 as well. Delete the file conf$$-globtest inside the AC_RUN_IFELSE block. Remove GL_GENERATE_GLOB_H conditional. * modules/glob (Dependencies): Test REPLACE_GLOB instead of GLOB_H. Remove snippet/warn-on-use. (configure.ac): Test REPLACE_GLOB instead of GLOB_H. (Makefile.am): Create glob.h always. Update list of substitutions in glob.h. Don't depend on $(WARN_ON_USE_H).
Bruno Haible e9866b99 2018-03-16T14:05:42 glob: Fix link error on native Windows. * modules/glob (Depends-on): Add 'lstat'.
Bruno Haible 4ce79717 2018-02-24T15:21:11 striconveha, uniconv/*: Avoid test failures on musl libc. * tests/iconvsupport.c: New file. * tests/test-striconveha.c (main): Skip autodetect_jp tests if iconv() does not support the ISO-2022-JP-2 encoding. * tests/uniconv/test-u8-conv-from-enc.c (main): Likewise. * tests/uniconv/test-u8-strconv-from-enc.c (main): Likewise. * tests/uniconv/test-u16-conv-from-enc.c (main): Likewise. * tests/uniconv/test-u16-strconv-from-enc.c (main): Likewise. * tests/uniconv/test-u32-conv-from-enc.c (main): Likewise. * tests/uniconv/test-u32-strconv-from-enc.c (main): Likewise. * modules/striconveha-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-striconveha with iconvsupport.o. * modules/uniconv/u8-conv-from-enc-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-u8-conv-from-enc with iconvsupport.o. * modules/uniconv/u8-strconv-from-enc-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-u8-strconv-from-enc with iconvsupport.o. * modules/uniconv/u16-conv-from-enc-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-u16-conv-from-enc with iconvsupport.o. * modules/uniconv/u16-strconv-from-enc-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-u16-strconv-from-enc with iconvsupport.o. * modules/uniconv/u32-conv-from-enc-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-u32-conv-from-enc with iconvsupport.o. * modules/uniconv/u32-strconv-from-enc-tests (Files): Add tests/iconvsupport.c. (Makefile.am): Link test-u32-strconv-from-enc with iconvsupport.o.
Paul Eggert a4d64c00 2018-02-20T09:06:51 utimecmp: new function utimecmpat * lib/utimecmp.c: Include fcntl.h, sys/stat.h and dirname.h. Do not include utimens.h. (utimecmpat): New function, generalizing utimecmp. (utimecmp): Now a thin layer around utimecmpat. * modules/utimecmp (Depends-on): Depend on dirname-lgpl, fstatat, utimensat instead of on lstat and utimens.
Paul Eggert d50980dd 2018-02-20T09:05:48 same: new function same_nameat * lib/same.c: Include fcntl.h. * lib/same.c (same_nameat): New function, generalizing same_name. (same_name): Now a thin layer around same_nameat. * m4/same.m4 (gl_SAME): Check for fpathconf, not pathconf. * modules/same (Depends-on): Depend on fstatat, openat.
Bruno Haible a798733d 2018-02-17T10:05:01 lock: Add test of gl_once. * tests/test-once.c: New file. * modules/lock-tests (Files): Add it. (Makefile.am): Build and test programs 'test-once1' and 'test-once2'.
Bruno Haible d9f3d91f 2018-02-04T10:42:45 signal-h, monetary, strings: Fix build failure in some cases. Reported by Tim Rühsen <tim.ruehsen@gmx.de>. * modules/signal-h (Makefile.am): In the GNULIB_* substitutions, use '/' as delimiter in sed command, not '|'. * modules/monetary (Makefile.am): Likewise. * modules/strings (Makefile.am): Likewise.
Paul Eggert d6a3b8f0 2018-02-03T00:47:15 malloca: Add a compile-time verification. * lib/malloca.c (small_t): Verify that it is wide enough. * modules/malloca (Depends-on): Add verify.
Bruno Haible 8a4aa2ec 2018-02-02T19:32:02 malloca, xmalloca: Make multithread-safe. Reported by Florian Weimer <fweimer@redhat.com>. Implements an idea by Ondřej Bílka <neleai@seznam.cz>. * lib/malloca.h (malloca): In the stack allocation case, return a pointer that is a multiple of 2 * sa_alignment_max. (sa_increment): Remove enum item. * lib/xmalloca.h (xmalloca): In the stack allocation case, return a pointer that is a multiple of 2 * sa_alignment_max. * lib/malloca.c (NO_SANITIZE_MEMORY): Remove macro. (MAGIC_NUMBER, MAGIC_SIZE, preliminary_header, HEADER_SIZE, header, HASH_TABLE_SIZE, mmalloca_results): Remove. (small_t): New type. (mmalloca, free): Rewritten. * lib/malloca.valgrind: Remove file. * modules/malloca (Files): Remove it. (Depends-on): Remove verify.
Bruno Haible d4f6a210 2018-01-27T10:57:59 Fix malfunction of socket functions on HP-UX in 64-bit mode. * m4/socketlib.m4 (gl_SOCKETLIB): Add comment. * m4/extensions.m4 (AC_USE_SYSTEM_EXTENSIONS): Define _HPUX_ALT_XOPEN_SOCKET_API. * modules/accept (Depends-on): Add 'extensions'. * modules/getpeername (Depends-on): Likewise. * modules/getsockname (Depends-on): Likewise. * modules/getsockopt (Depends-on): Likewise. * modules/recvfrom (Depends-on): Likewise. * doc/posix-functions/accept.texi: Mention the HP-UX socklen_t problem. * doc/posix-functions/getpeername.texi: Likewise. * doc/posix-functions/getsockname.texi: Likewise. * doc/posix-functions/getsockopt.texi: Likewise. * doc/posix-functions/recvfrom.texi: Likewise.
Bruno Haible 46e7ff4a 2018-01-27T08:52:31 getsockname tests: More tests. * tests/test-getsockname.c (open_server_socket): New function, mostly copied from test-poll.c. (main): Check that getsockname fills in addr. * modules/getsockname-tests (Depends-on): Add the necessary dependencies. (test_getsockname_LDADD): Link with $(INET_PTON_LIB).
Bruno Haible 703dcf1d 2018-01-26T05:51:55 langinfo: Fix last commit. Reported by Tim Rühsen <tim.ruehsen@gmx.de>. * modules/langinfo (Makefile.am): Substitute HAVE_LANGINFO_ALTMON.
Paul Eggert 73b4150c 2018-01-17T15:09:59 canonicalize-lgpl: fix typo Problem reported by Reuben Thomas.
Paul Eggert 281b825e 2018-01-01T00:57:25 maint: Run 'make update-copyright'
Paul Eggert 44100f56 2017-12-30T16:34:32 chdir-safer: remove this module * MODULES.html.sh (func_all_modules): Remove chdir-safer. * NEWS: Document removal. * lib/chdir-safer.c, lib/chdir-safer.h, m4/afs.m4, m4/chdir-safer.m4: * modules/chdir-safer: Remove these files.
Paul Eggert d2fe1853 2017-11-28T14:19:55 stat: add missing module dependencies * modules/lstat, modules/stat, modules/utimensat (Depends-on): Add stat-time.
Daiki Ueno b6b92958 2017-11-27T16:14:16 unicase: fix VPATH build * modules/unicase/special-casing (Makefile.am): Ensure that the base directory is created when generating unicase/special-casing.h.
Daiki Ueno 19f18ecf 2017-11-27T11:34:25 libunistring: update to Unicode 9.0.0 * lib/gen-uni-tables.c (fill_properties): Recognize Sentence_Terminal and Prepended_Concatenation_Mark. (is_property_default_ignorable_code_point): Exclude U+08E2. (fill_arabicshaping): Allow missing whitespace when parsing; recognize "AFRICAN FEH", "AFRICAN QAF", and "AFRICAN MOON". (output_blocks): Increase the element size of the level1 table to accommodate more blocks. (get_lbp): Recognize ZWJ, E_Base, and E_Modifier characters; Update each class according to the standard. (get_wbp): Recognize ZWJ, E_Base, E_Modifier, Glue_After_Zwj, and E_Base_GAZ characters. (output_gbp_table): Recognize ZWJ, E_Base, E_Modifier, Glue_After_Zwj, and E_Base_GAZ characters. * lib/unictype.in.h (UC_JOINING_GROUP_AFRICAN_FEH) (UC_JOINING_GROUP_AFRICAN_QAF, UC_JOINING_GROUP_AFRICAN_MOON): New enum value. * lib/unilbrk/lbrktables.h (LBP_ZWJ, LBP_EB, LBP_EM): New enum value. * lib/unilbrk/lbrktables.c (unilbrk_table): Extend the table with LBP_ZWJ, LBP_EB, and LBP_EM. * lib/uniwbrk.in.h (WBP_ZWJ, WBP_EB, WBP_EM, WBP_GAZ, WBP_EBG): New enum value. * lib/uniwbrk/u-wordbreaks.h: Implement WB3c, WB15, and WB16. * lib/uniwbrk/wbrktable.h (uniwbrk_prop_index): New variable declaration. * lib/uniwbrk/wbrktable.c (uniwbrk_prop_index): New variable. (uniwbrk_table): Implement WB14. * tests/uniwbrk/test-uc-wordbreaks.c (wordbreakproperty_to_string): Check WBP_ZWJ, WBP_EB, WBP_EM, WBP_GAZ, and WBP_EBG. * modules/unigbrk/u{32,16,8}-grapheme-breaks: No longer depend on uc-is-grapheme-break. * modules/unigbrk/uc-grapheme-breaks: New module. * modules/unigbrk/uc-grapheme-breaks-tests: New module. * lib/unigbrk.in.h (GBP_ZWJ, GBP_EB, GBP_EM, GBP_GAZ, GBP_EBG): New enum value. (uc_grapheme_breaks): New function, replacing uc_is_grapheme_break. * lib/unigbrk/u-grapheme-breaks.h: New file. * lib/unigbrk/u{32,16,8}-grapheme-breaks.c: Rewrite using u-grapheme-breaks.h instead of uc_is_grapheme_break. * lib/unigbrk/uc-grapheme-breaks.c: New file. * lib/unigbrk/uc-is-grapheme-break.c: Partially update to TR29 rev 29. * tests/unigbrk/test-uc-gbrk-prop.c (graphemebreakproperty_to_string): Check GBP_ZWJ, GBP_EB, GBP_EM, GBP_GAZ, and GBP_EBG. * tests/unigbrk/test-uc-grapheme-breaks.c: New test. * tests/unigbrk/test-uc-is-grapheme-break.c (graphemebreakproperty_to_string): Check GBP_ZWJ, GBP_EB, GBP_EM, GBP_GAZ, and GBP_EBG. (main): Skip unsupported rules involving 3 or more characters, namely GB10, GB12, and GB13. * lib/uniwidth/width.c (nonspacing_table_data): Update. * all generated files under lib/uni* and tests/uni*: Regenerate. * all the dependant modules: Bump version.
Paul Eggert 2c5d5587 2017-11-23T00:05:57 stat: work around Solaris bug with tv_nsec < 0 * doc/posix-functions/fstat.texi (fstat): * doc/posix-functions/fstatat.texi (fstatat): * doc/posix-functions/lstat.texi (lstat): * doc/posix-functions/stat.texi (stat): Mention Solaris 11 bug. * lib/fstat.c, lib/fstatat.c, lib/lstat.c: Include stat-time.h. * lib/fstat.c (rpl_fstat) [!WINDOWS_NATIVE]: * lib/lstat.c (rpl_lstat): * lib/stat.c (rpl_stat): Normalize resulting timestamps. * lib/fstatat.c (normal_fstatat): New function. (rpl_fstatat): Use it. * lib/stat-time.h: Include intprops.h, errno.h, stddef.h. (stat_time_normalize): New function. * m4/fstat.m4 (gl_FUNC_FSTAT): * m4/fstatat.m4 (gl_FUNC_FSTATAT): * m4/lstat.m4 (gl_FUNC_LSTAT): * m4/stat.m4 (gl_FUNC_STAT): Replace on Solaris. * modules/fstat (Depends-on): * modules/fstatat (Depends-on): Add stat-time. * modules/stat-time (Depends-on): Add errno, intprops.
Paul Eggert dd1890b7 2017-11-11T22:33:38 faccessat: port to macOS (Bug#29231) macOS faccessat has the same bug that lstat does: if the file name ends in '/' it ignores the trailing slash. Problem reported for Emacs by Vincent Zhang. * doc/posix-functions/faccessat.texi (faccessat): Document this. * lib/faccessat.c (_GL_INCLUDING_UNISTD_H): Define and undef around the initial includes. Include errno.h, string.h, sys/stat.h. (orig_faccessat) [HAVE_FACCESSAT]: New function. Include "unistd.h" after defining it. (rpl_faccessat) [HAVE_FACCESSAT]: New implementation. * lib/unistd.in.h (faccessat) [REPLACE_FACCESSAT]: Handle in the usual way. * m4/faccessat.m4 (gl_FUNC_FACCESSAT): Replace faccessat if lstat dereferences symlinks, since faccessat is likely to have the same problem. * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Default REPLACE_ACCESSAT. * modules/faccessat (Depends-on): Add fstatat. Depend if REPLACE_FACCESSAT is 1, too. (configure.ac): Link if REPLACE_FACCESSAT is 1. * modules/faccessat-tests (Depends-on): Add symlink. * modules/unistd (unistd.h): Substitute REPLACE_FACCESSAT. * tests/test-faccessat.c (main): Test for the bug.
Paul Eggert f466816e 2017-10-29T16:22:41 timespec: prefer ‘assume’ to ‘assure’ This avoids some runtime tests. The rest of the module makes similar assumptions and there is little point to testing here. * lib/timespec.h: Include verify.h instead of assure.h. (timespec_cmp): Use ‘assume’, not ‘assure’. Also, remove an unnecessary cast to ‘int’, as lots of other code in this module now causes -Wconversion to complain, and this is a problem with -Wconversion not with the code. * modules/timespec (Depends-on): Depend on ‘verify’, not ‘assure’.
Jim Meyering 59faabad 2017-10-27T21:28:47 timespec.h: use "assure" to avoid a spurious warning * lib/timespec.h: Include "assure.h" and use it to help gcc7's -Wstrict-overflow avoid a false positive warning for a use in coreutils' ls.c. Suggested by Paul Eggert in https://lists.gnu.org/r/bug-gnulib/2017-10/msg00007.html * modules/timespec (Depends-on): Add assure.
Bruno Haible 625f7aea 2017-10-29T12:57:35 ilogbl: Ensure replacement on Haiku. * m4/ilogbl.m4 (gl_FUNC_ILOGBL): Invoke gl_FUNC_ILOGBL_WORKS and set REPLACE_ILOGBL if ilogbl does not work. (gl_FUNC_ILOGBL_WORKS): New macro. * lib/math.in.h (ilogbl): Replace if REPLACE_ILOGBL is 1. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize REPLACE_ILOGBL. * modules/math (Makefile.am): Substitute REPLACE_ILOGBL. * modules/ilogbl (Depends-on, configure.ac): Consider REPLACE_ILOGBL. * doc/posix-functions/ilogbl.texi: Mention the Haiku problem.
Jia Zhang e128f7fb 2017-10-28T23:58:20 New module: crypto/gc-sm3 * lib/gc.h: Declare SM3-related stuffs. * lib/gc-gnulib.c: Support sm3 in internal functions. * lib/gc-libgcrypt.c: Support sm3 with libgcrypt. * m4/gc-sm3.m4: m4 file for gc-sm3 module. * modules/crypto/gc-sm3: Define gc-sm3 module. * tests/test-gc-sm3.c: Implement SM3 test case with libgcrypt. * modules/crypto/gc-sm3-tests: Define gc-sm3 test module. * MODULES.html.sh: List gc-sm3 module.
Jia Zhang 12ad1d14 2017-10-07T04:31:27 New module: crypto/sm3 This new module can be used to compute SM3 message digest of files or memory blocks according to the specification GM/T 004-2012 Cryptographic Hash Algorithm SM3, published by State Cryptography Administration, China. The official SM3 cryptographic hash algorithm specification is available at http://www.sca.gov.cn/sca/xwdt/2010-12/17/content_1002389.shtml * lib/sm3.h: Declare the APIs of sm3 module. * lib/sm3.c: Implement SM3 hash algorithm. * m4/sm3.m4: m4 file for sm3 module. * modules/crypto/sm3: Define sm3 module. * tests/test-sm3.c: Implement SM3 test case. * modules/crypto/sm3-tests: Define sm3 test module. * MODULES.html.sh: List sm3 module.
Bruno Haible e7069415 2017-10-04T01:22:57 Fix warning "`gl_HOST_CPU_C_ABI' was expanded before it was required". * modules/host-cpu-c-abi (configure.ac): Require, don't invoke gl_HOST_CPU_C_ABI.
Paul Eggert 467061a2 2017-10-01T20:35:53 fsusage: remove SVR2 support SVR2 was obsolete by 1986 and is no longer supported by anybody, and its code was getting in the way of use of this module by Emacs, which has its own ‘read’ function anyway. * lib/fsusage.c: Do not include sys/filsys.h. (get_fs_usage): Remove SVR2-specific code. * m4/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Do not test for sys/filsys.h or set STAT_READ_FILSYS. * modules/fsusage (Depends-on): Do not depend on full-read.
Bruno Haible 26e27d9f 2017-09-30T18:16:03 vma-iter: Make it work on 32-bit Solaris with module 'largefile'. * modules/vma-iter: Don't test for sys/procfs.h, as this test would fail when module 'largefile' is in use. * lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Don't test HAVE_SYS_PROCFS_H. * lib/vma-iter.c: Undefine _FILE_OFFSET_BITS early. Don't test HAVE_SYS_PROCFS_H.
Bruno Haible e2b7318b 2017-09-30T15:59:27 havelib: Make it work for CC="gcc -m32" (regression from 2017-02-19). * m4/lib-prefix.m4 (AC_LIB_PREPARE_MULTILIB): Require gl_HOST_CPU_C_ABI. When $CC produces 32-bit code, set acl_libdirstem to 'lib', not 'lib64'. * modules/havelib (Depends-on): Add host-cpu-c-abi.
Bruno Haible 2b7a75de 2017-09-28T13:09:34 string: code style * m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Reorder list of substitutable variables. * modules/string (Makefile.am): Likewise.
Paul Eggert 8f87a591 2017-09-25T18:20:44 maint: fix overflow checking in nap.h * modules/chown-tests: * modules/fchownat-tests, modules/fdutimensat-tests: * modules/futimens-tests, modules/lchown-tests: * modules/stat-time-tests, modules/utime-tests: * modules/utimens-tests, modules/utimensat-tests: Depend on intprops. * tests/nap.h: Include intprops.h. (diff_timespec): Handle overflow properly.
Paul Eggert 4499147b 2017-09-25T18:12:06 parse-datetime: fix dependency * modules/parse-datetime (Depends-on): Depend on nstrftime, not strftime.
Bruno Haible ad8ece88 2017-09-25T21:31:25 vma-iter: Improvements for BSD platforms. - Add support for GNU/kFreeBSD. - Make it work on FreeBSD and NetBSD even when /proc is not mounted. - Speed up on OpenBSD. * lib/vma-iter.c (struct rofile, rof*): Define also on GNU/kFreeBSD. (vma_iterate_bsd): New function. (vma_iterate): Use it as fallback on FreeBSD and NetBSD. Use it as first choice on OpenBSD. Treat GNU/kFreeBSD like Linux. * lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Define also on GNU/kFreeBSD. * modules/vma-iter (configure.ac): Require AC_C_INLINE.
Bruno Haible 19882ec1 2017-09-23T12:22:17 strfmon_l: New module. * modules/strfmon_l: New file. * lib/strfmon_l.c: New file. * m4/strfmon_l.m4: New file. * doc/posix-functions/strfmon_l.texi: Mention the new module. * modules/strfmon_l-tests: New file. * tests/test-strfmon_l.c: New file.
Bruno Haible b2fc4a43 2017-09-23T09:26:48 monetary: New module. * modules/monetary: New file. * lib/monetary.in.h: New file. * m4/monetary_h.m4: New file. * doc/posix-headers/monetary.texi: Mention the new module. * modules/monetary-tests: New file. * tests/test-monetary.c: New file. * modules/monetary-c++-tests: New file. * tests/test-monetary-c++.cc: New file. * modules/duplocale-tests (configure.ac): Use AC_CHECK_HEADERS_ONCE.
Bruno Haible 03eac9d3 2017-09-14T00:35:56 all: Replace many more http URLs by https URLs. Update stale URLs. * users.txt: Remove mention of 'newts'. * lib/localename.c: Update comment about LANG_SOTHO.
Paul Eggert ca35d468 2017-09-13T00:48:18 all: prefer https: URLs
Paul Eggert 2890b021 2017-09-05T23:32:59 libc-config: port to MSVC Problems reported by Gisle Vanem in: http://lists.gnu.org/archive/html/bug-gnulib/2017-09/msg00016.html * lib/libc-config.h (__inline): Don't define if HAVE___INLINE. (libc_hidden_proto): Stick to Standard C syntax for varargs macro. * m4/__inline.m4: New file. * modules/libc-config (Files): Add it. (Depends-on): Use it.
Paul Eggert dca11d0f 2017-09-02T01:21:03 scratch_buffer: don’t use private glibc API Suggested by Florian Weimer in: http://lists.gnu.org/archive/html/bug-gnulib/2017-09/msg00004.html * lib/scratch_buffer.h: Rename to lib/malloc/scratch_buffer.h. * lib/scratch_buffer_grow.c: Rename to lib/malloc/scratch_buffer_grow.c. * lib/scratch_buffer_grow_preserve.c: Rename to lib/malloc/scratch_buffer_grow_preserve.c. * lib/scratch_buffer_set_array_size.c: Rename to lib/malloc/scratch_buffer_set_array_size.c. * lib/scratch_buffer.h: New file. * modules/scratch_buffer (Files, Makefile.am): Adjust to source-file renaming.
Paul Eggert e1e84205 2017-09-01T15:41:45 glob: use scratch_buffer instead of extend_alloca Much of the lib/glob.c part of this patch comes from a glibc patch proposed by Adhemerval Zanella in: https://sourceware.org/ml/libc-alpha/2017-08/msg00456.html * lib/glob.c: Do not include <config.h>, since <libc-config.h>, included via glob.h, does this for us now. (__set_errno): Remove, as libc-config does this for us now. Include <scratch_buffer.h>. (GETPW_R_SIZE_MAX): Remove. (glob): Use struct scratch_buffer instead of extend_alloca. * lib/glob.in.h: Include libc-config.h rather than including <sys/cdefs.h> conditionally. (__BEGIN_DECLS, __END_DECLS, __THROW, __THROWNL, attribute_hidden) (__glibc_unlikely, __restrict, weak_alias): Remove, as libc-config does this for us now. * m4/glob.m4 (gl_PREREQ_GLOB): Remove sys/cdefs.h tests; no longer needed. * modules/glob (Depends-on): Add libc-config, scratch_buffer. (glob.h): Do not replace HAVE_SYS_CDEFS_H.
Paul Eggert 3866ef61 2017-09-01T14:42:53 scratch_buffer: new module * lib/scratch_buffer.h, lib/scratch_buffer_grow.c: * lib/scratch_buffer_grow_preserve.c: * lib/scratch_buffer_set_array_size.c: New files, copied from glibc with very minor changes that can be copied back. * modules/scratch_buffer: New file.
Paul Eggert 38885c86 2017-09-01T14:40:58 libc-config: new module * MODULES.html.sh: Add libc-config. * lib/cdefs.h: New file, copied from the GNU C Library with very minor changes that can be copied back. * lib/libc-config.h, modules/libc-config: New files.
Paul Eggert fd1daf4e 2017-08-31T14:34:25 glob: match dangling symlinks This fixes a bug I inadvertently introduced to Gnulib when I merged glibc glob back into gnulib on 2007-10-16. This fix is inspired by a patch proposed for glibc by Adhemerval Zanella in: https://sourceware.org/ml/libc-alpha/2017-08/msg00446.html * doc/posix-functions/glob.texi: Update list of affected platforms. * lib/glob.c (__lstat64): New macro. (is_dir): New function. (glob, glob_in_dir): Match symlinks even if they are dangling. (link_stat, link_exists_p): Remove. All uses removed. * lib/glob.in.h (__attribute_noinline__): Remove; no longer used. * m4/glob.m4 (gl_PREREQ_GLOB): Do not check for fstatat. * modules/glob (Depends-on): Remove dirfd. * modules/glob-tests (Depends-on): Add symlink. * tests/test-glob.c: Include errno.h, unistd.h. (BASE): New macro. (main): Test dangling symlinks, if symlinks are supported.
Paul Eggert c8e57c1a 2017-08-31T14:34:24 glob, backupfile: inode 0 is a valid inode number * doc/posix-functions/readdir.texi (readdir): * doc/posix-headers/dirent.texi (dirent.h): Document more readdir portability issues. * lib/backupfile.c (REAL_DIR_ENTRY): Remove. (numbered_backup): Don’t treat inode 0 any differently from other inode values. * lib/glob.c (struct readdir_result): Remove skip_entry member. (readdir_result_skip_entry, D_INO_TO_RESULT): Remove. All uses removed. * modules/glob (Depends-on): Remove d-ino.
Pádraig Brady a20922f1 2017-08-30T22:32:23 fts-tests: tag as a longrunning-test so not included by default * modules/fts-tests: This test takes about 20s on current systems, and uses about 285M of space on ext4.
Bruno Haible 8e0845e2 2017-08-24T12:12:31 glob: Fix compilation error on NetBSD 7.0 and OpenBSD 6.0. * modules/glob (Depends-on): Add c99.
Paul Eggert 32107c10 2017-08-23T10:45:42 glob: merge from glibc with Zanella glob changes Merge glob from glibc, with changes for glob proposed by Adhemerval Zanella in the thread starting here: https://sourceware.org/ml/libc-alpha/2017-08/msg01079.html plus some fixes for this merge. * lib/flexmember.h: Change license wording to something that works unchanged in Glibc, since this code might be used in Glibc and this will minimize 'diff' output. * lib/glob_internal.h, lib/glob_pattern_p.c, lib/globfree.c: New files, ported from glibc. * lib/glob_pattern_p.c, lib/globfree.c, lib/glob.c [!_LIBC]: Include <config.h> first. * lib/glob-libc.h (_Restrict_): Remove. All uses replaced with __restrict. (__size_t): Remove. All uses replaced by size_t. (size_t): Define by defining __need_size_t and including <stddef.h>. This should work even in non-glibc platforms, where any name pollution is OK. Use __USE_MISC instead of __USE_BSD || __USE_GNU. (struct stat64): Don’t worry about __GLOB_GNULIB. (glob, globfree, glob_pattern_p): Remove macros for __USE_FILE_OFFSET64 && __GNUC__ < 2 && !defined __GLOB_GNULIB case. Remove _GL_ARG_NONNULL as GNU behavior is to accept NULL but set errno. * lib/glob.c (_GL_ARG_NONNULL) [!_LIBC]: Remove. All uses removed since the glibc behavior works on null pointers. Do not include stdio.h; old SunOS is irrelevant now. Do not worry about GLOB_ONLY_P as we now mimic glibc here. Include glob_internal.h. (D_INO_TO_RESULT): Depend on (_LIBC || D_INO_IN_DIRENT), not ((POSIX || WINDOWS32) && !__GNU_LIBRARY__). The latter probably worked only coincidentally. (attribute_hidden, __attribute_noinline__, __glibc_unlikely): Remove macros; now done in glob.in.h. (size_add_wrapv): Do not use __builtin_add_overflow if __ICC. (glob): Properly initialize glob structure with GLOB_BRACE|GLOB_DOOFFS (bug 20707). Remove old code using SHELL since Bash no longer uses this. (glob, prefix_array): Separate MS code better. (glob, glob_in_dir): Use C99 decls before statements when glibc does. (glob_in_dir): Remove old Amiga and VMS code. (globfree, __glob_pattern_type, __glob_pattern_p): Move to separate files. * lib/glob.in.h (attribute_hidden, __attribute_noinline__) (__glibc_unlikely): Move here from glob.c. (__restrict): New macro here, replacing the _Restrict_ in glob.c. (weak_alias): New macro. (__size_t): Remove. All uses replaced by size_t. * modules/d-ino (License): Now LGPLv2+, for compatibility with glob. * modules/flexmember (License): Now LGPLv2+, which it should have been anyway since flexmember.h is not unlimited-license. * modules/glob (Files): Add +lib/glob_internal.h, lib/glob_pattern_p.c, lib/globfree.c. (Depends-on): Remove snippet/arg-nonnull.
Bruno Haible 299d6d5f 2017-08-17T14:17:58 random: Fix test compilation failure on Cygwin 1.5.25. * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize HAVE_DECL_INITSTATE, HAVE_DECL_SETSTATE. * m4/random.m4 (gl_FUNC_RANDOM): Test whether initstate and setstate are declared. * modules/stdlib (Makefile.am): Substitute HAVE_DECL_INITSTATE, HAVE_DECL_SETSTATE. * lib/stdlib.in.h (initstate): Declare also if HAVE_DECL_INITSTATE is 0. (setstate): Declare also if HAVE_DECL_SETSTATE is 0. * doc/posix-functions/initstate.texi: Mention the Cygwin 1.5.x problem. * doc/posix-functions/random.texi: Likewise. * doc/posix-functions/setstate.texi: Likewise. * doc/posix-functions/srandom.texi: Likewise.
Bruno Haible 9241177c 2017-08-16T20:35:42 thread: Fix conflict with pthread_sigmask module. * lib/glthread/thread.h (pthread_sigmask): Don't declare it weak if it's defined as a macro. * modules/thread (Depends-on): Add pthread_sigmask.
Bruno Haible bf9412ab 2017-08-16T11:25:10 iconv_open, uni*: Add support for VPATH builds with OpenBSD 'make'. * modules/iconv_open (Makefile.am): In the rules that use gperf, prefix the target file names with '$(srcdir)/'. * modules/unicase/locale-language (Makefile.am): Likewise. * modules/unicase/special-casing (Makefile.am): Likewise. * modules/unictype/bidiclass-byname (Makefile.am): Likewise. * modules/unictype/category-byname (Makefile.am): Likewise. * modules/unictype/combining-class-byname (Makefile.am): Likewise. * modules/unictype/joininggroup-byname (Makefile.am): Likewise. * modules/unictype/joiningtype-byname (Makefile.am): Likewise. * modules/unictype/property-byname (Makefile.am): Likewise. * modules/unictype/scripts (Makefile.am): Likewise. * modules/uninorm/composition (Makefile.am): Likewise.
Bruno Haible a71158ab 2017-08-15T20:23:00 duplocale tests: Verify use with *_l functions. * modules/duplocale-tests (configure.ac): Test for uselocale and some *_l functions. * tests/test-duplocale.c (test_with_uselocale): New function, extracted from main. (get_locale_dependent_values_from, test_with_locale_parameter): New functions. (main): Test both test_with_uselocale and test_with_locale_parameter.
Paul Eggert 990fa9d5 2017-08-14T13:04:46 open: support O_CLOEXEC * NEWS, doc/posix-functions/open.texi: * doc/posix-functions/openat.texi: Document this. * lib/fcntl.in.h (O_CLOEXEC): Default to a nonzero value. (GNULIB_defined_O_CLOEXEC): New symbol. * lib/open.c: Include cloexec.h. (open): Support O_CLOEXEC. * lib/openat.c: Include cloexec.h. (rpl_openat): Support O_CLOEXEC. * lib/popen-safer.c: Do not include cloexec.h. (open_noinherit): Remove. (popen_safer): Use O_CLOEXEC instead of set_cloexec_flag. * lib/save-cwd.c: Do not include cloexec.h. (save_cwd): Use O_CLOEXEC instead of set_cloexec_flag. * m4/open-cloexec.m4: New file. * m4/open.m4 (gl_FUNC_OPEN): Require gl_PREPROC_O_CLOEXEC. Replace 'open' if O_CLOEXEC is not present. * m4/openat.m4 (gl_FUNC_OPENAT): Require gl_PREPROC_O_CLOEXEC. Replace 'openat' if O_CLOEXEC is not present. * modules/freopen (Depends-on): Depend on 'open' if replacing freopen. * modules/open (Files): Add m4/open-cloexec.m4. (Depends-on): Depend on cloexec if replacing 'open'. * modules/openat (Files): Add m4/open-cloexec.m4. (Depends-on): Depend on cloexec if replacing openat. * modules/popen-safer (Depends-on): Remove cloexec. * modules/save-cwd (Depends-on): Remove cloexec, and add fd-safer-flag and 'open'.
Paul Eggert aa459ef4 2017-08-13T10:55:55 reallocarray: minor fixes * doc/glibc-functions/reallocarray.texi: Update version numbers. * m4/reallocarray.m4 (gl_FUNC_REALLOCARRAY): Don't trust _cv_ contents. * modules/reallocarray (License): Change from GPL to LGPL. * tests/test-reallocarray.c (main): Fix ENOMEM typo. Indent properly and don't use tabs.
Darshit Shah 98756762 2017-08-13T10:13:33 reallocarray: New module reallocarray is a new function in glibc 2.26 to safely allocate an array of memory locations with integer overflow protection. * MODULES.html.sh: Add reallocarray. * doc/glibc-functions/reallocarray.texi: Documentation for reallocarray. * lib/reallocarray.c: New file to implement module reallocarray. * lib/stdlib.in.h: Add function declarations for reallocarray. * m4/reallocarray.m4: New file. * m4/stdlib_h.m4: Declare reallocarray. * modules/reallocarray: New file. * modules/reallocarray-test: New file. * modules/stdlib: Coerce stdlib.h to export reallocarray. * tests/test-reallocarray.c: New test.
Paul Eggert 0474f8e6 2017-08-12T11:34:50 dirent-safer: fix cloexec race * lib/opendir-safer.c: Include fcntl.h instead of unistd-safer.h. (opendir_safer): Use F_DUPFD_CLOEXEC. * modules/dirent-safer (Depends-on): Add fcntl. Remove unistd-safer. * tests/test-dirent-safer.c: Do not include unistd-safer.h, as it is no longer a prerequisite. Use F_DUPFD_CLOEXEC instead of dup_safer.
Paul Eggert b1f55699 2017-08-12T11:20:41 fts: fix cloexec races * lib/fts.c [!_LIBC]: Do not include dirent--.h, unistd--.h, cloexec.h. (opendirat, diropen): Use O_CLOEXEC instead of set_cloexec_flag. (fts_build): Use F_DUPD_CLOEXEC rinstad of set_cloexec_flag. (fd_ring_check): Set cloexec flag on new file descriptors. (fts_build, fd_ring_check): While we’re at it, make sure the resulting file descriptor is not 0, 1, or 2, since that is easy. * modules/fts (Depends-on): Remove cloexec, dirent-safer, dup, fcntl-safer, unistd-safer. Add fcntl.
Bruno Haible 3fae50e0 2017-08-11T20:43:35 fts tests: Fix link error. Reported by Tom G. Christensen in https://lists.gnu.org/archive/html/bug-gnulib/2017-08/msg00078.html * modules/fts-tests (Makefile.am): Link test-fts against LIBINTL.
Paul Eggert 5befc656 2017-08-09T11:30:36 tempname: do not depend on secure_getenv Excess dependency noted by Eli Zaretskii (Bug#28023#17). * lib/tempname.c (__secure_getenv) [!_LIBC]: Remove; unused. * modules/tempname (Depends-on): Remove secure_getenv.
Reuben Thomas ddbba9b3 2017-08-07T17:32:18 manywarnings: Add support for C++. * build-aux/g++-warning.spec: New file. * m4/manywarnings-c++.m4: New file. * modules/manywarnings (Files): Add it.
Bruno Haible 7c6893ba 2017-08-04T11:57:20 Relax the license of some modules with no runtime code.
Paul Eggert b6ac7d13 2017-07-30T10:53:32 backup-rename: new module It is like backupfile, except it avoids some race conditions, and it does not output to stderr or exit. * MODULES.html.sh: Add backup-rename. * lib/backup-find.c, lib/backup-internal.h, lib/backup-rename.c: * modules/backup-rename: New files. * lib/backupfile.c: Turn this into an internals file, which contains code common to backupfile and backup_rename. Do not include argmatch.h or xalloc.h: include xalloc-oversized.h. Include renameat2.h and fcntl.h. (BACKUP_NOMEM): New constant. (numbered_backup): New args BASE_OFFSET and *DIRPP. Do not exit on memory exhaustion; just return BACKUP_NOMEM. Caller changed. (backupfile_internal): Rename from find_backup_file_name. Support new arg RENAME. (backup_args, backup_types, get_version, xget_version): Move to lib/backup-find.c. * lib/backupfile.h (backup_file_rename): New decl. * modules/backupfile (Files): Add lib/backup-internal.h, lib/backup-find.c. (Depends-on): Add dirfd, fcntl, renameat2. (lib_SOURCES): Add backup-find.c.
Reuben Thomas 1e8195cc 2017-07-30T13:34:44 relocatable-lib{,-lgpl}: add Valgrind suppressions * lib/relocatable.valgrind: New file. * modules/relocatable-lib (Files): Add relocatable.valgrind. * modules/relocatable-lib-lgpl: Likewise.
Paul Eggert a6749d96 2017-07-27T16:36:03 renameat2: port to Solaris 10 * lib/renameat2.c (rename_noreplace): Use lstat, not faccessat with AT_SYMLINK_NOFOLLOW (which is not portable). (renameat): Undef before using, to avoid endless recursion when the replacement renameat calls renameat2 which calls the replacement renameat. (renameat2): Use lstatat, not faccessat with AT_SYMLINK_NOFOLLOW. * modules/renameat2 (Depends-on): Remove faccessat. * modules/renameat-tests (test_renameat_LDADD): * modules/renameat2-tests (test_renameat2_LDADD): Remove $(LIB_EACCESS).
Paul Eggert ec046e66 2017-07-27T12:08:39 renameat2: new module Although the Linux syscall renameat2 is not in glibc (yet?), it is useful to have access to its RENAME_NOREPLACE flag. * MODULES.html.sh (func_all_modules): Add renameat2. * lib/renameat2.c, lib/renameat2.h, modules/renameat2: * modules/renameat2-tests, tests/test-renameat2.c: New files. * lib/renameat.c (renameat): Move most of the implementation to renameat2, and just call renameat2. * modules/renameat (Files): Remove lib/at-func2.c. (Depends-on): Depend only on renameat2. (Include): Remove <fcntl.h>. * modules/renameat-tests (test_renameat_LDADD): Add $(LIB_EACCESS), since renameat (via renameat2) might use faccessat.