Jim Meyering [Sat, 9 Apr 2011 21:05:22 +0000 (23:05 +0200)]
maint: change "can not" to "cannot"
But do not change the occurrences in maintain.texi or in
build-aux/po/Makefile.in.in, which I presume comes from gettext.
* doc/gnulib-tool.texi: s/can not/cannot/
* doc/posix-functions/accept.texi (accept): Likewise.
* doc/posix-functions/socket.texi (socket): Likewise.
* lib/mbrtowc.c: Likewise.
Bruno Haible [Sat, 9 Apr 2011 00:12:11 +0000 (02:12 +0200)]
verify: Fix syntax error with GCC 4.6 in C++ mode.
* lib/verify.h (HAVE__STATIC_ASSERT): Don't define in C++ mode.
(HAVE_STATIC_ASSERT): New macro.
(verify_true, verify): Use 'static_assert' if it is supported and
'_Static_assert' is not supported.
Paul Eggert [Fri, 8 Apr 2011 20:22:51 +0000 (13:22 -0700)]
allocator: New module.
* modules/allocator, lib/allocator.c: New files.
* lib/allocator.h (stdlib_allocator): New decl.
* lib/careadlinkat.c (_GL_USE_STDLIB_ALLOC, standard_allocator):
Remove. Do not include <stdlib.h>.
(careadlinkat): Use stdlib_allocator instead of rolling our own.
* modules/careadlinkat (Files): Remove lib/allocator.h.
(Depends-on): Add allocator.
Paul Eggert [Fri, 8 Apr 2011 17:41:30 +0000 (10:41 -0700)]
careadlinkat: rename members to avoid problem
* lib/allocator.h (struct allocator): Rename members from
malloc/realloc to allocate/reallocate, to avoid problems if malloc
and realloc are #define'd. Reported by Eric Blake in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00091.html>.
* lib/careadlinkat.c (careadlinkat): Adjust to renaming.
Eric Blake [Fri, 8 Apr 2011 17:51:45 +0000 (11:51 -0600)]
nonblocking: reduce dependency
No need to make nonblocking drag in sockets just for a test;
test them if they are present and skip them otherwise.
* tests/test-nonblocking.c: Only test sockets when in use.
* modules/nonblocking-tests (Depends-on): Drop socket.
(Makefile.am): Link even if sockets are not present.
* modules/pipe2-tests (Makefile.am): Likewise.
* lib/ioctl.c (ioctl) [WIN32]: Fail if sockets are not also in use.
Eric Blake [Fri, 8 Apr 2011 16:15:54 +0000 (10:15 -0600)]
nonblocking: provide O_NONBLOCK for mingw
Mingw is the only known platform that lacks O_NONBLOCK (possibly
via the alternate spelling O_NDELAY). But mingw also lacks any
files where open() needs to enforce non-blocking behavior, and
lacks openat(), so it is relatively simple to provide a non-zero
flag. A future patches will make use of O_NONBLOCK for pipe2.
* modules/nonblocking (Depends-on): Add open.
(configure.ac): Set new witness macro.
* m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Provide default for it.
* modules/fcntl-h (Makefile.am): Substitute it.
* lib/fcntl.in.h (O_NONBLOCK): Guarantee non-zero definition when
nonblocking module is in use.
* lib/nonblocking.c: Adjust portability test.
* lib/open.c (open): Don't let native open see gnulib flag.
* tests/test-fcntl-h.c (main): Enhance test.
* tests/test-open.h (test_open): Likewise.
* doc/posix-headers/fcntl.texi (fcntl.h): Document the replacement.
Eric Blake [Fri, 8 Apr 2011 14:51:56 +0000 (08:51 -0600)]
careadlink: fix compilation error on mingw
Mingw compilation failed:
lib/careadlinkat.c: In function 'careadlinkat':
lib/careadlinkat.c:143:39: error: 'const struct allocator' has no member named 'malloc'
lib/careadlinkat.c:149:66: error: 'const struct allocator' has no member named 'realloc'
lib/careadlinkat.c:152:39: error: 'const struct allocator' has no member named 'realloc'
lib/careadlinkat.c:169:27: error: 'const struct allocator' has no member named 'malloc'
make[4]: *** [careadlinkat.lo] Error 1
because "careadlinkat.h" includes enough system headers to get
replacement names defined for malloc, then "allocator.h" defines
fields with those replacement names, then undefining the macros
tries to reference missing fields.
I figured this patch is less invasive than changing the field names
in allocator.h, and possibly requiring clients to change.
* lib/careadlinkat.c (standard_allocator): Avoid renaming fields
within struct allocator.
Paul Eggert [Wed, 6 Apr 2011 06:45:10 +0000 (23:45 -0700)]
verify: use _Static_assert if available
* lib/verify.h (HAVE__STATIC_ASSERT): New macro.
(verify_true, verify): Use it if available. This generates better
diagnostics with GCC 4.6.0 and later.
Bruno Haible [Tue, 5 Apr 2011 23:55:16 +0000 (01:55 +0200)]
Remove leftover generated .h files after config.status changed.
* m4/alloca.m4 (gl_FUNC_ALLOCA): New automake conditional
GL_GENERATE_ALLOCA_H.
* modules/alloca-opt (Makefile.am): Remove alloca.h if
GL_GENERATE_ALLOCA_H evaluates to false.
* m4/argz.m4 (gl_FUNC_ARGZ): New automake conditional
GL_GENERATE_ARGZ_H.
* modules/argz (Makefile.am): Remove argz.h if GL_GENERATE_ARGZ_H
evaluates to false.
* m4/byteswap.m4 (gl_BYTESWAP): New automake conditional
GL_GENERATE_BYTESWAP_H.
* modules/byteswap (Makefile.am): Remove byteswap.h if
GL_GENERATE_BYTESWAP_H evaluates to false.
* m4/errno_h.m4 (gl_HEADER_ERRNO_H): New automake conditional
GL_GENERATE_ERRNO_H.
* modules/errno (Makefile.am): Remove errno.h if GL_GENERATE_ERRNO_H
evaluates to false.
* m4/float_h.m4 (gl_FLOAT_H): New automake conditional
GL_GENERATE_FLOAT_H.
* modules/float (Makefile.am): Remove float.h if GL_GENERATE_FLOAT_H
evaluates to false.
* m4/fnmatch.m4 (gl_FUNC_FNMATCH_POSIX): New automake conditional
GL_GENERATE_FNMATCH_H.
* modules/fnmatch (Makefile.am): Remove fnmatch.h if
GL_GENERATE_FNMATCH_H evaluates to false.
* m4/glob.m4 (gl_GLOB_SUBSTITUTE, gl_GLOB): New automake conditional
GL_GENERATE_GLOB_H.
* modules/glob (Makefile.am): Remove glob.h if GL_GENERATE_GLOB_H
evaluates to false.
* m4/iconv_h.m4 (gl_REPLACE_ICONV_H, gl_ICONV_H_DEFAULTS): New
automake conditional GL_GENERATE_ICONV_H.
* modules/iconv-h (Makefile.am): Remove iconv.h if GL_GENERATE_ICONV_H
evaluates to false.
* m4/netinet_in_h.m4 (gl_HEADER_NETINET_IN): New automake conditional
GL_GENERATE_NETINET_IN_H.
* modules/netinet_in (Makefile.am): Remove netinet/in.h if
GL_GENERATE_NETINET_IN_H evaluates to false.
* m4/pthread.m4 (gl_PTHREAD_CHECK): Set PTHREAD_H here. New automake
conditional GL_GENERATE_PTHREAD_H.
(gl_PTHREAD_DEFAULTS): Don't set PTHREAD_H here.
* modules/pthread (Makefile.am): Remove pthread.h if
GL_GENERATE_PTHREAD_H evaluates to false.
* m4/sched_h.m4 (gl_SCHED_H): New automake conditional
GL_GENERATE_SCHED_H.
* modules/sched (Makefile.am): Remove sched.h if GL_GENERATE_SCHED_H
evaluates to false.
* m4/selinux-context-h.m4 (gl_HEADERS_SELINUX_CONTEXT_H): New automake
conditional GL_GENERATE_SELINUX_CONTEXT_H.
* modules/selinux-h (Makefile.am): Remove selinux/context.h if
GL_GENERATE_SELINUX_CONTEXT_H evaluates to false.
* m4/stdarg.m4 (gl_STDARG_H): New automake conditional
GL_GENERATE_STDARG_H.
* modules/stdarg (Makefile.am): Remove stdarg.h if
GL_GENERATE_STDARG_H evaluates to false.
* m4/stdbool.m4 (AM_STDBOOL_H): New automake conditional
GL_GENERATE_STDBOOL_H.
* modules/stdbool (Makefile.am): Remove stdbool.h if
GL_GENERATE_STDBOOL_H evaluates to false.
* m4/stddef_h.m4 (gl_STDDEF_H): Set STDDEF_H here. New automake
conditional GL_GENERATE_STDDEF_H.
(gl_STDDEF_H_DEFAULTS): Don't set STDDEF_H here.
* modules/stddef (Makefile.am): Remove stddef.h if
GL_GENERATE_STDDEF_H evaluates to false.
* m4/stdint.m4 (gl_STDINT_H): New automake conditional
GL_GENERATE_STDINT_H.
* modules/stdint (Makefile.am): Remove stdint.h if
GL_GENERATE_STDINT_H evaluates to false.
* m4/sysexits.m4 (gl_SYSEXITS): New automake conditional
GL_GENERATE_SYSEXITS_H.
* modules/sysexits (Makefile.am): Remove sysexits.h if
GL_GENERATE_SYSEXITS_H evaluates to false.
careadlinkat: new module
* lib/allocator.h, lib/careadlinkat.h, lib/careadlinkat.c:
* modules/careadlinkat: New files, written by me with
a review and feedback from Ben Pfaff in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00008.html>.
Bruno Haible [Fri, 1 Apr 2011 22:01:13 +0000 (00:01 +0200)]
wmemchr, wcschr, wcsrchr, wcspbrk, wcsstr: Avoid errors in C++ mode.
* lib/wchar.in.h (wmemchr, wcschr, wcsrchr, wcspbrk, wcsstr): Use
_GL_CXXALIAS_SYS_CAST2 instead of _GL_CXXALIAS_SYS. On glibc >= 2.10
systems, use _GL_CXXALIASWARN1 instead of _GL_CXXALIASWARN.
Reported by Bruce Korb <bruce.korb@gmail.com>.
Eric Blake [Thu, 31 Mar 2011 21:28:37 +0000 (15:28 -0600)]
nonblocking: fix mingw test failures
Actually testing on mingw uncovered a few more problems.
* lib/nonblocking.c (set_nonblocking_flag): Succeed when clearing
non-blocking flag on regular file.
(get_nonblocking_flag): Set errno on invalid fd.
* tests/test-nonblocking.c (main): Avoid test failure on
directories if fchdir is not active.
* modules/nonblocking-tests (Depends-on): Drop unused dependency.
Bruno Haible [Thu, 31 Mar 2011 16:21:36 +0000 (18:21 +0200)]
Fix bug with gl_WARN_ON_USE_PREPARE, introduced on 2011-01-23.
* m4/gnulib-common.m4 (gl_ASSERT_NO_GNULIB_POSIXCHECK): Hide the
gl_WARN_ON_USE_PREPARE definition from 'aclocal'.
Reported by Simon Josefsson <simon@josefsson.org>.
Bruno Haible [Thu, 31 Mar 2011 00:52:06 +0000 (02:52 +0200)]
stdio: Avoid GCC >= 4.4 warnings when using %lld and similar on mingw.
* lib/stdio.in.h (_GL_ATTRIBUTE_FORMAT_PRINTF): Use 'gnu_printf' format
instead of 'printf' format for GCC >= 4.4.
(_GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM): New macro.
(fprintf, printf, vfprintf, vprintf): Declare with
_GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM when the function ends up calling
the system's vfprintf() function.
Reported by Daniel P. Berrange <berrange@redhat.com> via Eric Blake.
Eric Blake [Wed, 30 Mar 2011 21:30:13 +0000 (15:30 -0600)]
passfd: standardize coding conventions
* m4/afunix.m4 (gl_SOCKET_AFUNIX): Drop check for something that
can be learned at compile time.
* lib/passfd.c (MSG_CMSG_CLOEXEC): Reduce number of in-function
ifdefs.
(passfd, recvfd): Follow gnulib code conventions.
Jim Meyering [Wed, 30 Mar 2011 06:46:22 +0000 (08:46 +0200)]
tests: readlink* ("",... fails with EINVAL on newer kernels
readlink and readlinkat have typically failed with ENOENT for
the invalid, empty file name, "". However, with the advent
of linux-2.6.39, they fail with EINVAL.
* tests/test-areadlink.h (test_areadlink): Also accept EINVAL
when operating on the empty file name.
* tests/test-readlink.h (test_readlink): Likewise.
Bruno Haible [Sat, 26 Mar 2011 14:36:15 +0000 (15:36 +0100)]
unictype/property-byname: Reduce the number of load-time relocations.
* lib/unictype/pr_byname.c: Include <stdlib.h>.
(UC_PROPERTY_INDEX_*): New enumeration values.
(uc_property_byname): Convert an index from the lookup table to an
uc_property_t.
* lib/unictype/pr_byname.gperf: Store indices instead of uc_property_t
values.
Bruno Haible [Sat, 26 Mar 2011 13:10:30 +0000 (14:10 +0100)]
unictype/joininggroup-byname: Allow hyphens, omitted word separators.
* lib/unictype/joininggroup_byname.c (uc_joining_group_byname): Convert
also hyphens to space.
* lib/unictype/joininggroup_byname.gperf: Recognize the names also
without spaces.
* tests/unictype/test-joininggroup_byname.c (main): Add more tests.
Bruno Haible [Sat, 26 Mar 2011 12:38:00 +0000 (13:38 +0100)]
unictype/joiningtype-byname: Recognize long names as well.
* lib/unictype.in.h (uc_joiningtype_class_byname): Allow argument to be
a long name.
* lib/unictype/joiningtype_byname.c: Include <string.h>,
unictype/joiningtype_byname.h.
(uc_joiningtype_class_byname): Use uc_joining_type_lookup.
* lib/unictype/joiningtype_byname.gperf: New file.
* modules/unictype/joiningtype-byname (Files): Add
lib/unictype/joiningtype_byname.gperf.
(Depends-on): Add gperf.
(Makefile.am): Add rule for generating unictype/joiningtype_byname.h.
* tests/unictype/test-joiningtype_byname.c (main): Test the recognition of
long names.
Bruno Haible [Sat, 26 Mar 2011 11:49:04 +0000 (12:49 +0100)]
unictype/bidiclass-byname: Recognize long names as well.
* lib/unictype.in.h (uc_bidi_class_byname): Allow argument to be a long
name.
* lib/unictype/bidi_byname.c: Include <string.h>,
unictype/bidi_byname.h.
(uc_bidi_class_byname): Use uc_bidi_class_lookup.
* lib/unictype/bidi_byname.gperf: New file.
* modules/unictype/bidiclass-byname (Files): Add
lib/unictype/bidi_byname.gperf.
(Depends-on): Add gperf.
(Makefile.am): Add rule for generating unictype/bidi_byname.h.
* tests/unictype/test-bidi_byname.c (main): Test the recognition of
long names.
Bruno Haible [Sat, 26 Mar 2011 01:39:24 +0000 (02:39 +0100)]
New module 'unictype/combining-class-byname'.
* lib/unictype.in.h (uc_combining_class_byname): New declaration.
* lib/unictype/combiningclass_byname.c: New file.
* lib/unictype/combiningclass_byname.gperf: New file.
* modules/unictype/combining-class-byname: New file.
Bruno Haible [Sat, 26 Mar 2011 00:03:10 +0000 (01:03 +0100)]
New module 'unictype/combining-class-longname'.
* lib/unictype.in.h (uc_combining_class_long_name): New declaration.
* lib/unictype/combiningclass_longname.c: New file.
* modules/unictype/combining-class-longname: New file.
Bruno Haible [Fri, 25 Mar 2011 23:52:51 +0000 (00:52 +0100)]
New module 'unictype/combining-class-name'.
* lib/unictype.in.h (uc_combining_class_name): New declaration.
* lib/unictype/combiningclass_name.c: New file.
* modules/unictype/combining-class-name: New file.
Bruno Haible [Fri, 25 Mar 2011 22:23:09 +0000 (23:23 +0100)]
unictype/category-byname: Recognize long names as well.
* lib/unictype.in.h (uc_general_category_byname): Allow argument to be
a long name.
* lib/unictype/categ_byname.c: Include <stdlib.h>, <string.h>,
unictype/categ_byname.h.
(UC_CATEGORY_INDEX_*): New enumeration values.
(uc_general_category_byname): Use uc_general_category_lookup and
convert from index to value.
* lib/unictype/categ_byname.gperf: New file.
* modules/unictype/category-byname (Files): Add
lib/unictype/categ_byname.gperf.
(Depends-on): Add gperf.
(Makefile.am): Add rule for generating unictype/categ_byname.h.
* tests/unictype/test-categ_byname.c (main): Test the recognition of
long names.
Bruno Haible [Fri, 25 Mar 2011 22:14:10 +0000 (23:14 +0100)]
New module 'unictype/category-longname'.
* lib/unictype.in.h (uc_general_category_long_name): New declaration.
* lib/unictype/categ_longname.c: New file.
* modules/unictype/category-longname: New file.
* modules/unictype/category-all (Depends-on): Add it.
Eric Blake [Fri, 25 Mar 2011 16:45:39 +0000 (10:45 -0600)]
xmalloc: revert yesterday's regression
* lib/xmalloc.c (xrealloc): Once again forward xrealloc(NULL,0) to
realloc's underlying behavior (allowing allocation of zero-size
objects, especially if malloc-gnu is also in use).
Paul Eggert [Thu, 24 Mar 2011 20:10:38 +0000 (13:10 -0700)]
xmalloc: Do not leak if underlying realloc is C99 compatible.
* lib/xmalloc.c (xrealloc): If N is zero, call 'free' directly.
This avoids a leak on C99-based systems. See
<http://lists.gnu.org/archive/html/bug-gnulib/2011-03/msg00243.html>.
Jim Meyering [Wed, 23 Mar 2011 06:41:18 +0000 (07:41 +0100)]
doc: update users.txt
Looking through matches up to the following URL (there are still
several more pages), I found several projects that use gnulib:
http://codesearch.google.com/codesearch?start=50&q=gnulib-cache\.m4
* users.txt: Add nagios plugins (nagiosplug), acct, gengetopt,
gmediaserver, gtkreindeer, jugtail, libunistring, mini-httpd, reindeer.
Bruno Haible [Tue, 22 Mar 2011 23:32:49 +0000 (00:32 +0100)]
unictype/bidi*: Rename functions.
* lib/unictype.in.h (uc_bidi_class_name, uc_bidi_class_byname,
uc_bidi_class, uc_is_bidi_class): New declarations.
* lib/unictype/bidi_byname.c (uc_bidi_class_byname): Renamed from
uc_bidi_category_byname.
(uc_bidi_category_byname): New function.
* lib/unictype/bidi_name.c (u_bidi_class_name): Renamed from
u_bidi_category_name.
(uc_bidi_class_name): Renamed from uc_bidi_category_name.
(uc_bidi_category_name): New function.
* lib/unictype/bidi_of.c (uc_bidi_class): Renamed from
uc_bidi_category.
(uc_bidi_category): New function.
* lib/unictype/bidi_test.c (uc_is_bidi_class): Renamed from
uc_is_bidi_category. Invoke uc_bidi_class.
(uc_is_bidi_category): New function.
* tests/unictype/test-bidi_byname.c (main): Test uc_bidi_class_byname
instead of uc_bidi_category_byname.
* tests/unictype/test-bidi_name.c (main): Test uc_bidi_class_name
instead of uc_bidi_category_name.
* tests/unictype/test-bidi_of.c (main): Test uc_bidi_class instead of
uc_bidi_category.
* tests/unictype/test-bidi_test.c (main): Test uc_is_bidi_class
instead of uc_is_bidi_category.