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.
Bruno Haible [Mon, 21 Mar 2011 22:14:43 +0000 (23:14 +0100)]
Tests for module 'unictype/joininggroup-of'.
* modules/unictype/joininggroup-of-tests: New file.
* tests/unictype/test-joininggroup_of.c: New file.
* tests/unictype/test-joininggroup_of.h: New file, automatically
generated by gen-uni-tables.
Bruno Haible [Mon, 21 Mar 2011 22:12:53 +0000 (23:12 +0100)]
New module 'unictype/joininggroup-of'.
* modules/unictype/joininggroup-of: New file.
* lib/unictype/joininggroup_of.c: New file.
* lib/unictype/joininggroup_of.h: New file, automatically generated by
gen-uni-tables.
Bruno Haible [Mon, 21 Mar 2011 22:04:10 +0000 (23:04 +0100)]
Tests for module 'unictype/joiningtype-of'.
* modules/unictype/joiningtype-of-tests: New file.
* tests/unictype/test-joiningtype_of.c: New file.
* tests/unictype/test-joiningtype_of.h: New file, automatically
generated by gen-uni-tables.
Bruno Haible [Mon, 21 Mar 2011 22:02:14 +0000 (23:02 +0100)]
New module 'unictype/joiningtype-of'.
* modules/unictype/joiningtype-of: New file.
* lib/unictype/joiningtype_of.c: New file.
* lib/unictype/joiningtype_of.h: New file, automatically generated by
gen-uni-tables.
Bruno Haible [Mon, 21 Mar 2011 21:51:46 +0000 (22:51 +0100)]
unictype: Add support for Arabic shaping properties.
* lib/unictype.in.h (UC_JOINING_TYPE_*): New enumeration values.
(uc_joining_type_name, uc_joining_type_byname, uc_joining_type): New
declarations.
(UC_JOINING_GROUP_*): New enumeration values.
(uc_joining_group_name, uc_joining_group_byname, uc_joining_group): New
declarations.
* lib/gen-uni-tables.c (UC_JOINING_TYPE_*): New enumeration values.
(unicode_joining_type): New variable.
(UC_JOINING_GROUP_*): New enumeration values.
(unicode_joining_group): New variable.
(fill_arabicshaping, joining_type_as_c_identifier,
output_joining_type_test, output_joining_type,
joining_group_as_c_identifier, output_joining_group_test,
output_joining_group): New functions.
(main); Add an argument denoting the ArabicShaping.txt file. Invoke
fill_arabicshaping and output_joining_type_test, output_joining_type,
output_joining_group_test, output_joining_group.
Reported by Simon Josefsson.
Paul Eggert [Mon, 21 Mar 2011 06:59:29 +0000 (23:59 -0700)]
strftime: don't assume a byte count fits in 'int'
* lib/strftime.c (add): Don't assume first arg fits in 'int'. I
found this problem by static analysis, using gcc -Wstrict-overflow
(GCC 4.5.2, x86-64). This reported an optimization that depended
on an integer overflow having undefined behavior, but it turns out
that the argument is a size, which might not fit in 'int' anyway,
Paul Eggert [Mon, 21 Mar 2011 03:02:28 +0000 (20:02 -0700)]
stdio: don't require ignore_value around fwrite
This patch works around libc bug 11959
<http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>.
Without this patch, applications must often write
ignore_value (fwrite (...)) even though the ignore_value is
not helpful here. It's common to write many objects, using
fwrite/printf/etc., and then use ferror to detect output error.
I considered making this patch optional, but decided against it,
because libc is obviously being inconsistent here: there is no
reason libc should insist that user code must inspect fwrite
return's value without also insisting that it inspect printf's,
putchar's, etc. If user code wants to have a strict style where
all these functions' values are checked (so that ferror need not
be checked), we could add support for that style in a new gnulib
module, but in the meantime it's better to be consistent and to
support common usage.
* lib/stdio.in.h (rpl_fwrite): Define this wrapper around fwrite,
to work around libc bug 11959, if __USE_FORTIFY_LEVEL indicates
that we are compiling in checking mode, and if not C++, and
if not already wrapping fwrite for some other reason.
(fwrite): #define to rpl_fwrite if the latter is defined.
Bruno Haible [Sun, 20 Mar 2011 21:34:13 +0000 (22:34 +0100)]
verror: Fix compilation error introduced on 2011-02-13.
* lib/verror.h (verror, verror_at_line): Use _GL_ATTRIBUTE_FORMAT macro
instead of __attribute__.
Reported by Tom G. Christensen <tgc@jupiterrise.com>.
Paul Eggert [Sun, 20 Mar 2011 11:51:49 +0000 (12:51 +0100)]
socklen: do not depend on sys_socket
While trying to modify Emacs to use gnulib's socklen module,
I discovered a circular dependency: socklen depends on sys_socket
and vice versa. Emacs can use socklen, but it does not need
sys_socket because it has its own substitute for sys/socket.h.
* m4/socklen.m4 (gl_SOCKET_HEADERS): New macro, extracted from
gl_TYPE_SOCKLEN_T.
(gl_CHECK_SOCKET_HEADERS): New macro, taken from parts of
gl_PREREQ_SYS_H_SOCKET.
(gl_TYPE_SOCKLEN_T): Require it instead of requiring
gl_PREREQ_SYS_H_SOCKET.
* m4/sys_socket_h.m4 (gl_PREREQ_SYS_H_SOCKET): Require
gl_CHECK_SOCKET_HEADERS instead of doing its work ourselves.
* modules/socklen (Depends-on): Do not depend on sys_socket.
(Include): Adjust to match the code used in gl_SOCKET_HEADERS.
Jim Meyering [Sun, 20 Mar 2011 10:31:11 +0000 (11:31 +0100)]
maint.mk: sort file names *after* new transformation
* top/maint.mk (sc_po_check): Sorting before removing the $(srcdir)/
prefix would have led to an unwarranted failure in GNU parted.
Sort after that transformation.
Paul Eggert [Sat, 19 Mar 2011 12:58:17 +0000 (13:58 +0100)]
inet_ntop, inet_pton: Simplify.
* modules/inet_ntop (Depends-on): Remove socklen, since sys_socket is
documented to provide socklen_t and we already depend on sys_socket.
* modules/inet_pton (Depends-on): Likewise.
* lib/arpa_inet.in.h: Adjust comment.
Paul Eggert [Sat, 19 Mar 2011 12:55:24 +0000 (13:55 +0100)]
netdb: Simplify.
* modules/netdb (Depends-on): Remove socklen, since sys_socket is
documented to provide socklen_t and we already depend on sys_socket.
* lib/netdb.in.h: Adjust comment.
Jim Meyering [Wed, 16 Mar 2011 11:14:21 +0000 (12:14 +0100)]
maint.mk: allow fine-grained syntax-check exclusion via Make variables
Before, you would have had to create one .x-sc_ file per rule in order
to exempt offending files. Now, you may instead use a Make variable --
usually defined in cfg.mk -- whose name identifies the affected rule.
* top/maint.mk (_sc_excl): Define.
(VC_LIST_EXCEPT): Use it to exclude names on a per-rule basis.
(_sc_search_regexp): When not using VC_LIST_EXCEPT, exclude here, too.
Jim Meyering [Sun, 13 Mar 2011 17:45:33 +0000 (18:45 +0100)]
Makefile: rely on GNU make; derive syntax-check rule names
Rather than requiring that each sc_ rule be listed as a dependent
of "check", use features of GNU make to derive the list.
* Makefile (syntax-check-rules): Define.
(check): Depend on the new variable, not the hard-coded list.
Add a comment listing a few requirements.
Bruno Haible [Sun, 13 Mar 2011 14:36:47 +0000 (15:36 +0100)]
passfd module, part 2, tweaks.
* modules/passfd (Files): Reorder.
(Depends-on): Remove errno.
(Include): Remove <sys/socket.h>, <sys/un.h>.
* lib/passfd.h: Use a GPLv3+ header. Make C++ safe.
* lib/passfd.c: Untabify. Use a GPLv3+ header. Really include the
specification header. Include <sys/socket.h> always. Don't include
<winsock2.h>. Use "#if HAVE_..." instead of "#ifdef HAVE_...".
(sendfd): Clarify that it sets errno when it fails.
(recvfd): Fix specification.
Bruno Haible [Sat, 12 Mar 2011 12:54:43 +0000 (13:54 +0100)]
wcswidth, mbswidth: Avoid integer overflow.
* lib/wcswidth.c: Include <limits.h>.
* lib/wcswidth-impl.h (wcswidth): Avoid 'int' overflow.
* lib/mbswidth.c: Include <limits.h>.
(mbsnwidth): Avoid 'int' overflow.
Reported by Jim Meyering.
Bruno Haible [Sat, 12 Mar 2011 11:39:06 +0000 (12:39 +0100)]
futimens, utimensat: Avoid endless recursion on Solaris 10.
* lib/sys_stat.in.h (futimens, utimensat): Define with rpl_ prefix on
Solaris.
Reported by Ben Walton <bwalton@artsci.utoronto.ca> via Eric Blake
in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8230>.
Eric Blake [Thu, 10 Mar 2011 23:26:20 +0000 (16:26 -0700)]
wchar: add explicit dependencies, for Tru64
Commit 9a354cd exposed a few modules that were previously
picking up the <wchar.h> replacement via indirect dependency,
rather than explicitly including it. This led to a compile
failure on Tru64 for the vsnprintf module, for example.