pmccabe2html: escaping of special characters

The C code characters '<', '>', and '&' were improperly
escaped in HTML output, and their multiplicity was ignored.
getdtablesize: work around cygwin issue

Cygwin 1.7.25 has a bug that even though it claims to support
RLIMIT_NOFILE inheritance, there is no enforcement of the soft
limit, and getdtablesize() automatically grows until it reaches
the hard limit which cannot be changed by setrlimit().  Best is
to just treat things as an invariant limit, as several other
modules assume that getdtablesize() will not change without an
intervening setrlimit().

* m4/getdtablesize.m4 (gl_FUNC_GETDTABLESIZE): Detect problem.
* modules/getdtablesize (configure.ac): Build replacement.
* m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Set up a witness.
* modules/unistd (Makefile.am): Expose the witness.
* lib/unistd.in.h (getdtablesize): Declare replacement.
* lib/getdtablesize.c (rpl_getdtablesize): Work around it.
* tests/test-getdtablesize.c (main): Test it.
* doc/glibc-functions/getdtablesize.texi (getdtablesize): Document it.

Signed-off-by: Eric Blake <eblake@redhat.com>
dup2, dup3: work around another cygwin crasher

Cygwin 1.7.25 can crash due to an off-by-one bug on an attempt to
duplicate a file into the current RLIMIT_NOFILE soft limit, when
that limit is smaller than the hard limit.  The intent in the
cygwin code was to allow the dup and auto-increase the soft limit,
which is itself questionable (and which we work around in the
gnulib getdtablesize module); but avoiding the crash is worth
doing even if the soft limit semantics are wrong.

http://cygwin.com/ml/cygwin/2013-09/msg00397.html
http://cygwin.com/ml/cygwin-developers/2013-q3/msg00010.html

* m4/dup2.m4 (gl_FUNC_DUP2): Expose the bug.
* m4/dup3.m4 (gl_FUNC_DUP3): Likewise.
* tests/test-dup2.c (main): Likewise.
* lib/dup2.c (rpl_dup2): Use setdtablesize to avoid it.
* lib/dup3.c (dup3): Likewise.
* doc/posix-functions/dup2.texi (dup2): Document it.
* doc/glibc-functions/dup3.texi (dup3): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
autoupdate
verify: new macro 'assume'

This is taken from Emacs, and should be generally useful.
* doc/verify.texi (assume): Document it.
* lib/verify.h (assume): New macro.
(__has_builtin): Expand to 0 if not defined.
tests: improve diagnostic when an assertion fails

* tests/macros.h (ASSERT): Report the assertion that failed.
mountlist: fix resource leak with MOUNTED_INTERIX_STATVFS

* lib/mountlist.c (read_file_system_list): fix leak of directory
streams in case of #ifdef MOUNTED_INTERIX_STATVFS.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
count-one-bits: port to MSC; support types wider than 64 bits

The ideas behind the MSC port are stolen from Emacs.
* lib/count-one-bits.c (popcount_support) [_MSC_VER]: New variable.
* lib/count-one-bits.h: Include limits.h, for CHAR_BIT.
Don't include verify.h: it's no longer needed, as types wider than
64 bits are now supported.
(COUNT_ONE_BITS_GENERIC): New macro.
(popcount_supported) [_MSC_VER]: New inline function.
(COUNT_ONE_BITS): Use it.  New arg MSC_BUILTIN, for better
performance with MSC.  All uses changed.  Do not assume that TYPE
has at most 64 bits.
* modules/count-one-bits (Depends-on): Do not depend on 'verify'.
count-leading-zeros: port to MSC; support types wider than 64 bits

The ideas behind the MSC port are stolen from Emacs.
* lib/count-leading-zeros.h:
Don't include verify.h: it's no longer needed, as types wider than
64 bits are now supported.
(COUNT_LEADING_ZEROS): New arg MSC_BUILTIN, for better
performance with MSC.  All uses changed.  Do not assume that TYPE
has at most 64 bits.
(count_leading_zeros_32): Assume 0 < X < 2**32, for speed.
All uses changed.  Fold the subtraction from 31 into the table.
New module 'count-trailing-zeros'.

* MODULES.html.sh: Mention it.
* lib/count-trailing-zeros.c, lib/count-trailing-zeros.h:
* m4/count-trailing-zeros.m4, modules/count-trailing-zeros:
* modules/count-trailing-zeros-tests:
* tests/test-count-trailing-zeros.c:
New files.
strtoimax: port to HP-UX 11.11

Problem reported by Daniel Richard G.
* lib/strtoimax.c (Strtoimax, Strtol, Strtoll): New macros.
(strtoimax, strtol, strtoll) [UNSIGNED]: Remove, since
they might clash with inttypes.h.
strtoimax, strtoumax: port to HP-UX 11.11

Problem reported by Daniel Richard G. in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00023.html>.
* lib/inttypes.in.h (strtoumax): Replace strtoumax if
REPLACE_STRTOUMAX, thus treating it consistently with strtoimax.
* m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Add default for
REPLACE_STRTOUMAX.
* m4/strtoimax.m4 (gl_FUNC_STRTOIMAX):
* m4/strtoumax.m4 (gl_FUNC_STRTOUMAX):
Replace the function if defined as a macro but not as a function.
* modules/inttypes-incomplete (inttypes.h): Substitute
REPLACE_STRTOUMAX.
* modules/strtoumax (configure.ac): Replace strtoumax if
REPLACE_STRTOUMAX.
autoupdate
strtoumax: port to Solaris 8

This problem was introduced in the recent HP-UX patch.
Reported by Tom G. Christensen in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00037.html>.
* modules/strtoumax (Depends-on): Test HAVE_STRTOUMAX
and REPLACE_STRTOUMAX rather than ac_cv_func_strtoumax.
strtoumax: fix typo in previous commit.

Tom G. Christensen reported:

> I see this in the configure output:
> ./configure: line 7680: test: =: unary operator expected
>
> $ sed -n 7680p configure
>   if test $HAVE_STRTOUMAX = 0 || test $REPLACE_STRTOUMAX = 1; then

and indeed, we're only setting HAVE_DECL_STRTOUMAX.

* modules/strtoumax (Depends-on): Fix typo.
* modules/strtoimax (Depends-on): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
strtoumax: fix another typo in previous commit

I missed one in the last commit...

* modules/strtoumax (configure.ac): Fix typo.
* modules/strtoimax (configure.ac): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
verify: document some 'assume' pitfalls

* doc/verify.texi (Compile-time Assertions):
Mention that 'assume (E)' can sometimes slow things down.
Use CHAR_MAX + 1, not UCHAR_MAX + 1.
regex-tests: port to HP-UX 11.11

Problem reported by Daniel Richard G. in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00052.html>.
* modules/regex-tests (test_regex_LDADD): Add LIBTHREAD, LIB_PTHREAD.
mgetgroups: remove dependency on realloc-gnu

The dependency violates the comment in realloc-gnu, which
says that tests can't depend on realloc-gnu; some tests depend
on mgetgroups, so mgetgroups can't depend on realloc-gnu.
Problem reported by Daniel Richard G. in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00056.html>.
* lib/mgetgroups.c (mgetgroups): Don't call realloc (NULL, 0).
* modules/mgetgroups (Depends-on): Depend on realloc-posix,
not realloc-gnu.
acl: allow cross-compilation to Gentoo

Problem reported by Gabriel Marcano in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00058.html>.
* m4/acl.m4 (gl_ACL_GET_FILE): When cross-compiling,
test only whether it links.