Bruno Haible [Sun, 24 Jun 2012 23:00:57 +0000 (01:00 +0200)]
ptsname_r: Make it consistent with ptsname on AIX.
* lib/ptsname_r.c (__ptsname_r): For AIX, use nearly the same
implementation as for OSF/1.
* tests/test-ptsname_r.c (main) [AIX]: Use the modern way of opening
a pty master.
Bruno Haible [Sun, 24 Jun 2012 15:05:25 +0000 (17:05 +0200)]
ptsname_r: Fix test failures on IRIX, Solaris.
* m4/ptsname_r.m4 (gl_PREREQ_PTSNAME_R): Test whether isatty sets
errno when it fails. Define ISATTY_FAILS_WITHOUT_SETTING_ERRNO
accordingly.
* lib/ptsname_r.c: Include <fcntl.h>.
(__ptsname_r): When isatty returned false, then on IRIX, Solaris
set errno if fd is invalid.
* tests/test-isatty.c (main): Update comments.
Bruno Haible [Sat, 23 Jun 2012 15:08:47 +0000 (17:08 +0200)]
getopt-gnu: Handle suboptimal getopt_long's abbreviation handling.
* m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): If getopt_long exists but
does not handle abbreviated long options with equivalent
disambiguations, set gl_replace_getopt to yes.
* doc/posix-functions/getopt.texi: Mention the OpenBSD 5.0 problem.
* lib/grantpt.c: Don't include <fcntl.h>.
(grantpt): Don't verify the validity of the file descriptor.
* modules/grantpt (Depends-on): Remove fcntl-h.
* tests/test-grantpt.c (main): Allow grantpt to succeed for invalid
file descriptors.
* doc/posix-functions/grantpt.texi: Document more platforms on which
grantpt succeeds for invalid file descriptors.
Reported by Rich Felker <dalias@aerifal.cx>.
Bruno Haible [Fri, 22 Jun 2012 10:02:54 +0000 (12:02 +0200)]
fbufmode test: Don't test unportable behaviour.
* tests/test-fbufmode.c (test_mode): New function, extracted from main.
(main): Invoke it three times.
Reported by Szabolcs Nagy <nsz@port70.net>
and Rich Felker <dalias@aerifal.cx>.
Bruno Haible [Thu, 21 Jun 2012 20:45:22 +0000 (22:45 +0200)]
gnulib-tool: Refactor inctests variable.
* gnulib-tool: Normalize inctests to 'true' or 'false', not ''.
(func_modules_transitive_closure,
func_modules_transitive_closure_separately,
func_import, func_create_testdir): Update.
* gnulib-tool: Accept option --without-tests.
(func_usage): Document --without-tests option. Rearrange.
(inctests): Normalize according to the mode.
* NEWS: Mention the change.
Suggested by Simon Josefsson.
Bruno Haible [Thu, 21 Jun 2012 10:39:37 +0000 (12:39 +0200)]
nonblocking: Avoid compilation error on mingw64.
* m4/stdio_h.m4 (gl_STDIO_H): Invoke gl_MODULE_INDICATOR for scanf,
fscanf.
* modules/vscanf (configure.ac): Invoke gl_MODULE_INDICATOR.
* modules/vfscanf (configure.ac): Likewise.
* lib/stdio-read.c (scanf, fscanf, vscanf, vfscanf): Enable function
definition only if stdio.h has prepared it.
Reported by Daniel P. Berrange <berrange@redhat.com>.
Bernd Jendrissek [Wed, 20 Jun 2012 23:04:28 +0000 (01:04 +0200)]
Do use readlink if available
The main effect of this patch is to make gnulib-tool not spam the
terminal with failures from ls. Despite the copious stderr output,
files still get linked correctly.
gnulib-tool: Use readlink if it is available.
* gnulib-tool (func_readlink): Choose function more appropriately.
Running under dash, type -p readlink fails because dash doesn't
understand -p. That causes gnulib-tool to fall back to ls to read
symlinks, despite readlink being available. That, in turn, spams the
terminal when func_ln_if_changed's DEST argument doesn't exist.
The output from type goes to /dev/null anyway, so asking for -p has no
purpose.
Paul Eggert [Thu, 21 Jun 2012 09:13:59 +0000 (02:13 -0700)]
posixtm-tests: port to buggy compiler
Problem reported by Simon Josefsson in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-06/msg00246.html>.
* modules/posixtm-tests (Depends-on): Add stdint.
* tests/test-posixtm.c (struct posixtm_test.t_expected):
Now of type int_least64_t, not int64_t, both because that's
what INT64_C returns and because int_least64_t works even
on 72-bit hosts.
(T): Use INT64_C on constants outside the traditional int range,
to work around compiler bug noted by Simon.
Paul Eggert [Thu, 21 Jun 2012 08:49:15 +0000 (01:49 -0700)]
mktime: fix integer overflow in 'configure'-time test
* m4/mktime.m4 (gl_FUNC_MKTIME): Do not rely on undefined behavior
after integer overflow. Problem reported by Rich Felker in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-06/msg00257.html>.
Also, don't look for further instances of a bug if we've already
found one instance; this helps 'configure' run faster.
Paul Eggert [Wed, 20 Jun 2012 14:06:54 +0000 (07:06 -0700)]
init.sh: do not rely on autoupated PWD
This addresses symptoms of the problem reported by Nelson H.F. Beebe in
<http://lists.gnu.org/archive/html/bug-gzip/2012-06/msg00008.html>.
Although Nelson's bug was not necessarily fixed by this patch,
it seems wise to make the change for safety.
* tests/init.sh (path_prepend_): Do not rely on PWD updating
automagically after 'cd'; this is not reliable on older shells.
(setup_): Fail if we cannot cd to temporary directory.
Bruno Haible [Wed, 20 Jun 2012 00:01:14 +0000 (02:01 +0200)]
stat, fstat: Avoid warnings on mingw64.
* lib/stat.c (stat) [_GL_WINDOWS_64_BIT_ST_SIZE]: Undefine before
redefining.
* lib/fstat.c (stat, fstat) [_GL_WINDOWS_64_BIT_ST_SIZE]: Likewise.
Reported by Daniel P. Berrange <berrange@redhat.com>.
Bruno Haible [Tue, 19 Jun 2012 21:35:08 +0000 (23:35 +0200)]
stdioext: Add support for musl libc.
* m4/fbufmode.m4 (gl_FUNC_FBUFMODE): Test whether __fbufsize exists.
* lib/fbufmode.c (fbufmode): Add conditional code for musl.
* m4/fseterr.m4: New file.
* lib/fseterr.h (fseterr): Define as an alias of __fseterr if that
function exists.
* modules/fseterr (Files): Add m4/fseterr.m4.
(configure.ac): Invoke gl_FUNC_FSETERR. Compile fseterr.c if
__fseterr does not exist.
(Makefile.am): Remove fseterr.c from lib_SOURCES.
* lib/freadable.h: Update comment.
* lib/fwritable.h: Update comment.
* lib/freading.h: Update comment.
* lib/fwriting.h: Update comment.
* m4/freadahead.m4: New file.
* lib/freadahead.h (freadahead): Define as an alias of __freadahead if
that function exists.
* modules/freadahead (Files): Add m4/freadahead.m4.
(configure.ac): Invoke gl_FUNC_FREADAHEAD. Compile freadahead.c if
__freadahead does not exist.
(Makefile.am): Remove freadahead.c from lib_SOURCES.
* m4/freadptr.m4: New file.
* lib/freadptr.h (freadptr): Define as an alias of __freadptr if that
function exists.
* modules/freadptr (Files): Add m4/freadptr.m4.
(configure.ac): Invoke gl_FUNC_FREADPTR. Compile freadptr.c if
__freadptr does not exist.
(Makefile.am): Remove freadptr.c from lib_SOURCES.
* m4/freadseek.m4: New file.
* lib/freadseek.c (freadptrinc): Use __freadptrinc if that function
exists.
* modules/freadseek (Files): Add m4/freadseek.m4.
(configure.ac): Invoke gl_FUNC_FREADSEEK.
* lib/fpurge.c (fpurge): Update comment.
Reported by and with help from Rich Felker <dalias@aerifal.cx>.
Paul Eggert [Sun, 17 Jun 2012 16:55:15 +0000 (09:55 -0700)]
regex: avoid warning when pointers are not long
* lib/regcomp.c (parse_dup_op, mark_opt_subexp): Cast between void *
and uintptr_t, not long, for portability to hosts where pointers and
long have different sizes. Issue noted by Daniel P. Berrange in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-06/msg00122.html>
and fix suggested by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-06/msg00128.html>.
Akim Demaille [Tue, 12 Jun 2012 10:23:59 +0000 (12:23 +0200)]
announce-gen: VPATH issues
* build-aux/announce-gen (--srcdir): New option, used to trim the
$srcdir part of the path from $builddir to NEWS.
* top/maint.mk (announcement): Adjust.
Akim Demaille [Thu, 7 Jun 2012 14:17:36 +0000 (16:17 +0200)]
gnu-web-doc-update: VPATH builds
* build-aux/gnu-web-doc-update (--builddir): New option.
Revamp the handling of options.
Prefer $(...) to `...`.
Don't pass --tmpdir=. to mktemp, it is useless given that we specify
the template, and it is GNU mktemp specific.
Prefer set -e to long series of &&.
Restore the initial git branch, not "master".
Properly initialize submodules (don't rely only on bootstrap)
Do not reconfigure blindly, use config.status.
* top/README-release: Update instructions for gnu-web-doc-update.
Jim Meyering [Mon, 11 Jun 2012 09:32:54 +0000 (11:32 +0200)]
maint.mk: revert most of the previous change re "all these"
* top/maint.mk (prohibit_undesirable_word_seq_RE_): Remove that pair.
For rationale, see the discussion at
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/30912
Jim Meyering [Sun, 10 Jun 2012 19:49:59 +0000 (21:49 +0200)]
maint.mk: prohibit common grammar error: "all these"
* top/maint.mk (prohibit_undesirable_word_seq_RE_): Add "all these" to
the list of prohibited word sequences. It should be "all of these".
* lib/tempname.c (__gen_tempname): Fix one of them.
Akim Demaille [Thu, 7 Jun 2012 14:17:30 +0000 (16:17 +0200)]
do-release-commit-and-tag: support VPATH builds
* build-aux/do-release-commit-and-tag: Prefer $(...) to `...`.
(noteworthy): Defined earlier to factor its value.
(noteworthy_stub): New.
Use it to factor.
(help_version): Split into...
(help, version): these.
Adjust the option processing part.
Support "--option=value" in addition to "--option value".
(builddir): New.
(--builddir): New option.
* top/README-release: Document this.
Reword slightly so that the reader cannot understand that he
has to do these steps before calling do-release-commit-and-tag.
Paolo Bonzini [Sun, 3 Jun 2012 16:29:00 +0000 (18:29 +0200)]
error, strerror-override: Support mingw64 from Fedora 17.
* lib/errno.in.h (GNULIB_defined_ESTREAMS): Use a different indicator
for ETXTBSY, ENODATA, ENOSR, ENOSTR, ETIME, EOTHER, compared to
EINPROGRESS.
* lib/strerror-override.h (strerror_override): Test it.
* lib/strerror-override.c (strerror_override): Likewise.
* m4/errno_h.m4 (gl_HEADER_ERRNO_H): Test also ETXTBSY.
Paolo Bonzini [Sun, 3 Jun 2012 16:02:55 +0000 (18:02 +0200)]
error, strerror-override: Support mingw64 from Fedora 17.
* lib/errno.in.h (GNULIB_defined_ENOTRECOVERABLE): Use a different
indicator for ENOTRECOVERABLE, compared to EOWNERDEAD.
* lib/strerror-override.h (strerror_override): Test it.
* lib/strerror-override.c (strerror_override): Likewise.
Bruno Haible [Sun, 3 Jun 2012 13:47:14 +0000 (15:47 +0200)]
error, strerror-override: Support new errno values from POSIX:2008.
* m4/errno_h.m4 (gl_HEADER_ERRNO_H): Test also EOWNERDEAD and
ENOTRECOVERABLE.
* lib/errno.in.h (EOWNERDEAD, ENOTRECOVERABLE): Define on all
platforms.
* lib/strerror-override.c (strerror_override): Conditionalize the
EOWNERDEAD, ENOTRECOVERABLE handling on GNULIB_defined_EOWNERDEAD.
* lib/strerror-override.h (strerror_override): Declare also if
GNULIB_defined_EOWNERDEAD is defined.
* tests/test-errno.c (e130, e131): New variables.
* doc/posix-headers/errno.texi: Mention the status for EOWNERDEAD,
ENOTRECOVERABLE.
Reported by Paolo Bonzini.
Paul Eggert [Tue, 29 May 2012 14:50:21 +0000 (07:50 -0700)]
system-quote-tests: port to CentOS 5
Problem reported by Tom G. Christensen in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00255.html>.
* tests/test-system-quote-child.c (fclose, fprintf): Undef.
Paul Eggert [Sun, 27 May 2012 23:26:51 +0000 (16:26 -0700)]
manywarnings: remove duplicate -Wmultichar entry
* m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Remove duplicate
entry for -Wmultichar. -Wno-multichar is in the GCC 4.7.0 manual,
so keep the entry marked as documented.
Paul Eggert [Sun, 27 May 2012 06:48:00 +0000 (23:48 -0700)]
regex: don't assume uint64_t or uint32_t
* lib/regcomp.c (init_word_char): Don't assume that the types
uint64_t and uint32_t exist. The C standard doesn't guarantee
them, and on some 32-bit compilers there is no uint64_t.
Problem reported by Gianluigi Tiesi in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-03/msg00154.html>.
Jim Meyering [Thu, 24 May 2012 08:22:29 +0000 (10:22 +0200)]
maint.mk: compute $(gpg_key_ID) more portably
* top/maint.mk (gpg_key_ID): Use awk in place of sed '{...;...;}'.
That use of sed is not portable to some fringe systems.
Reported by Paul Eggert in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/30793/focus=30802
Paul Eggert [Thu, 24 May 2012 05:03:52 +0000 (22:03 -0700)]
mktime: sync from glibc
* config/srclist.txt: Uncomment mktime.c.
* lib/mktime.c: Sync from glibc master. This incorporates 3 changes.
First, indent with tabs, since glibc uses tabs and doesn't want to
change and we'd rather be identical to glibc. Also, two small
coding changes:
(isdst_differ): Use &&, not &, as && is the usual style.
(__mktime_internal): Rename local var from abs_diff to approx_abs_diff
for clarity.
Akim Demaille [Wed, 23 May 2012 07:47:48 +0000 (09:47 +0200)]
announce-gen: du -h is more portable than du --human
* build-aux/announce-gen (sizes): Invoke du with -h instead
of --human. Accept leading white space in its output.
These changes are required to accommodate OS/X's du.
Akim Demaille [Wed, 23 May 2012 07:45:14 +0000 (09:45 +0200)]
announce-gen: improve getopt-emitted diagnostics
* build-aux/announce-gen: When parsing command line options,
prefer "announce-gen: option --release-type requires an argument"
to "Option release-type requires an argument".
Paolo Bonzini [Mon, 21 May 2012 07:52:42 +0000 (09:52 +0200)]
poll/select: prevent busy-waiting
2012-05-21 Paolo Bonzini <bonzini@gnu.org>
poll/select: prevent busy-waiting. SwitchToThread() only gives away
the rest of the current time slice to another thread in the current
process. So if the thread that feeds the file decscriptor we're
polling is not in the current process, we get busy-waiting.
* lib/poll.c: Use SleepEx(1, TRUE) instead of SwitchToThread().
Patch from Theodore Leblond.
* lib/select.c: Split polling out of the loop that sets the output
fd_sets. Check for zero result and loop if the wait timeout is
infinite.
Paul Eggert [Fri, 18 May 2012 21:33:54 +0000 (14:33 -0700)]
crypto: fix bug in large buffer handling
* lib/sha512.c (sha512_process_block):
Don't assume the buffer length is less than 2**32.
Here, the bug is present only in the rare case where the host does
not support uint64_t; use u64size to work around the problem.
* lib/u64.h (u64size): New macro.
Paul Eggert [Fri, 18 May 2012 20:10:42 +0000 (13:10 -0700)]
crypto: fix bug in large buffer handling
Problem reported by Serge Belyshev for glibc in
<http://sourceware.org/bugzilla/show_bug.cgi?id=14090> and for gnulib in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00226.html>.
* lib/md4.c (md4_process_block):
* lib/md5.c (md5_process_block):
* lib/sha1.c (sha1_process_block):
* lib/sha256.c (sha256_process_block):
Don't assume the buffer length is less than 2**32.
Pádraig Brady [Tue, 15 May 2012 11:52:36 +0000 (12:52 +0100)]
fsusage: fix block size returned on older Linux 2.6
* lib/fsusage.c: Fall back to (struct statfs).f_frsize
which is available since Linux 2.6.
* m4/fsusage.m4 (STAT_STATFS2_FRSIZE): Always define
when the member is available so it can be used as a fallback.
* doc/posix-functions/statvfs.texi: Mention the hang issue
on Linux < 2.6.36.
Paul Eggert [Tue, 15 May 2012 06:21:02 +0000 (23:21 -0700)]
bootstrap: suppress stderr chatter
* build-aux/bootstrap (insert_sorted_if_absent, main program):
Omit unnecessary chatter to stderr. The main program chatter
was there only inadvertantly.
Paul Eggert [Mon, 14 May 2012 21:25:20 +0000 (14:25 -0700)]
bootstrap: .gitignore files created by autopoint, libtool
I ran into this problem when bootstrapping the latest diffutils.
After './bootstrap', 'git status' reported lots of untracked files
m4/codeset.m4, m4/gettext.m4, etc. These files were created by
autopoint and do not need to be version-controlled.
* build-aux/bootstrap: Put into .gitignore the files that
autopoint and libtool create, by keeping track of files that exist
after but not before these programs are run.
(version_controlled_file): Move up. 2nd arg is now full file
name, not base name; this is more convenient. Put CVS at the end,
as it's now somewhat deprecated.
Bruno Haible [Sun, 13 May 2012 20:54:49 +0000 (22:54 +0200)]
binary-io: Define set_binary_mode function.
* lib/binary-io.h (set_binary_mode): New function.
(SET_BINARY): Define in terms of set_binary_mode.
* modules/binary-io (configure.ac): Require AC_C_INLINE.
* tests/test-binary-io.c (main): Accept an argument, and test either
set_binary_mode or SET_BINARY depending on the argument.
* tests/test-binary-io.sh: Invoke test-binary-io twice, with an
argument. Clean up also t-bin-out0.tmp.
The 'bootstrap' script offered by Gnulib script already uses POSIX
shell features (like $((...)) arithmetic expansions) that are not
supported by legacy Bourne shells like Solaris 10 /bin/sh. This
means that bootstrap must already be run using a proper POSIX shell,
which will thus provide more features, like ${var#pattern} parameter
expansion or inversion of a command exit status with '!'. We can
thus use these features to improve the clarity and the performances
of the bootstrap script.
Suggested by Eric Blake.
* build-aux/bootstrap: Prefer xpg4 parameter expansions over use
of sed/expr plus command substitutions, to save some forks. While
we are at it, prefer the POSIX $(...) form of command substitution,
rather than the legacy form `...` (since the former is visually
clearer and interacts better with quoting), and prefer the idiom:
"if ! CMD; then ACTION ..."
over the idiom:
"if CMD; then :; else ACTION ..."
which was required by legacy Bourne shells not supporting '!'.
Paul Eggert [Sat, 12 May 2012 03:54:15 +0000 (20:54 -0700)]
fsusage: check for GNU/Linux statvfs problem dynamically
Problem reported by Nikolaus Rath in <http://bugs.gnu.org/11406>.
* lib/fsusage.c [STAT_STATVFS && __linux__ && (__GLIBC__||__UCLIBC__)]:
Define STAT_STATFS2_BSIZE too, since in this case the code now
checks dynamically whether statvfs is reliable, falling back on
Linux-style statfs otherwise.
(statvfs_works): New function, for dynamically testing statvfs.
(get_fs_usage) [STAT_STATVFS]: Use it.
* m4/fsusage.m4 (gl_FILE_SYSTEM_USAGE): Remove static check for
statvfs on GNU/Linux hosts, since it's now done dynamically.
Bruno Haible [Thu, 10 May 2012 23:39:04 +0000 (01:39 +0200)]
system-quote, execute, spawn-pipe: Escape '?' on Windows.
* lib/system-quote.c (SHELL_SPECIAL_CHARS, CMD_SPECIAL_CHARS): Add the
'?' character.
* lib/w32spawn.h (SHELL_SPECIAL_CHARS): Likewise.
* tests/test-system-quote-main.c (check_all): Check also strings like
"??????????".
Reported by Eli Zaretskii <eliz@gnu.org>.
Paul Eggert [Thu, 10 May 2012 15:59:49 +0000 (08:59 -0700)]
_Noreturn: port config.h to gcc -Wundef
* m4/gnulib-common.m4 (gl_COMMON_BODY): Check that __STDC_VERSION__ is
defined before using it, for gcc -Wundef. Reported by Akim Demaille in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00147.html>.
Bruno Haible [Thu, 10 May 2012 11:52:21 +0000 (13:52 +0200)]
system-quote: Refactor.
* lib/system-quote.h (system_quote_copy): Fix comment.
* lib/system-quote.c (windows_createprocess_quote, windows_cmd_quote):
New functions, extracted from system_quote_copy.
(system_quote_length, system_quote_copy): Use these functions.
Reported by Paul Eggert.