Paul Eggert [Wed, 8 Nov 2006 00:22:30 +0000 (00:22 +0000)]
* lib/xalloc.h (XMALLOC, XNMALLOC, XZALLOC, XCALLOC): Move
definitions up, to avoid colliding with change below.
(static_inline) [HAVE_INLINE]: New macro.
(xnmalloc, xnrealloc, x2nrealloc, xcharalloc):
Provide extern decls when !HAVE_INLINE. Do not define unless
static_inline is defined, either by us or by xmalloc.c. Use
static_inline rather than static inline.
(XCALLOC): Optimize sizeof(T) = 1 case.
* lib/xmalloc.c (static_inline) [!HAVE_INLINE]: New macro.
Paul Eggert [Mon, 6 Nov 2006 22:02:53 +0000 (22:02 +0000)]
* lib/idcache.c: Include <stddef.h>, for offsetof.
(struct userid.name): Change from char * to a flexible array member.
All uses changed.
* modules/idcache (Depends-on): Add flexmember.
Paul Eggert [Mon, 6 Nov 2006 21:38:27 +0000 (21:38 +0000)]
* m4/xalloc.m4 (gl_PREREQ_XMALLOC): Remove AC_C_INLINE since
xmalloc.c no longer uses inline directly. gl_PREREQ_XALLOC now
captures the dependency in AC_C_INLINE.
Paul Eggert [Mon, 6 Nov 2006 21:24:35 +0000 (21:24 +0000)]
* lib/xalloc.h (xnmalloc, xnrealloc, x2nrealloc): Now static
inline functions that are identical with the old xnmalloc_inline,
xnrealloc_inline, x2nrealloc_inline of lib/xmalloc.c. This is so
that we can avoid some unnecessary integer multiplications and
divisions in the common case where the element size is known at
compile time.
(XNMALLOC) [HAVE_INLINE]: Remove special case, which is no longer
needed.
(xnboundedmalloc): Remove.
(XMALLOC, XNMALLOC, XZALLOC, XCALLOC): Use lower-case letters for
arguments, for consistency with rest of this header.
(xcharalloc): Rewrite using XNMALLOC.
* lib/xmalloc.c (xnmalloc_inline, xnmalloc, xnrealloc_inline):
(xnrealloc, x2nrealloc_inline, x2nrealloc): Remove. The *_inline
versions have been moved to lib/xalloc.h and renamed to be the
non-*_inline versions.
(xmalloc, xrealloc): Implement without reference to the xnmalloc
and xnrealloc functions, since those functions are now inline and
now call us.
(x2realloc): Invoke x2realloc, not x2realloc_inline, to accommodate
renaming described above.
Paul Eggert [Mon, 6 Nov 2006 18:21:34 +0000 (18:21 +0000)]
* MODULES.html.sh (File system functions): New module
canonicalize-lgpl.
* lib/canonicalize.h: Add comments for canonicalize_filename_mode
and canonicalize_file_name.
* lib/canonicalize-lgpl.c, m4/canonicalize-lgpl.m4:
* modules/canonicalize-lgpl: New files.
Paul Eggert [Fri, 3 Nov 2006 23:17:27 +0000 (23:17 +0000)]
* lib/canonicalize.h: (canonicalize_mode_t, CAN_EXISTING):
(CAN_ALL_BUT_LAST, CAN_MISSING, canonicalize_filename_mode):
Define only if PROVIDE_CANONICALIZE_FILENAME_MODE is defined.
* m4/canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME):
Check for functions and headers just once.
Check for declaration of canonicalize_file_name.
Define PROVIDE_CANONICALIZE_FILENAME_MODE.
Paul Eggert [Tue, 31 Oct 2006 21:51:45 +0000 (21:51 +0000)]
Avoid some C++ diagnostics reported by Bruno Haible.
* lib/quotearg.c (clone_quoting_options): Use xmemdup rather than
xmalloc.
(quotearg_alloc): Use xcharalloc rather than xmalloc.
(struct slotvec): Move to top level.
(quotearg_n_options): Rewrite to avoid xmalloc.
* lib/xalloc.h (xcharalloc): New function.
* (xrealloc, xnrealloc, x2realloc, x2nrealloc, xmemdup):
[defined __cplusplus]: Add function template that provides result
type propagation. This part of the change is from Bruno Haible.
Eric Blake [Fri, 27 Oct 2006 13:51:23 +0000 (13:51 +0000)]
* MODULES.html.sh: Document tempname.
* modules/mkstemp (Depends-on): Add tempname, and drop transitive
dependencies.
(Files): Move lib/tempname.c...
* modules/tempname: ...to this new module.
* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Remove tempname checks.
(gl_PREREQ_TEMPNAME): Move...
* m4/tempname.m4: ...to this new file.
* lib/mkstemp.c (includes) [!_LIBC]: Use tempname.h.
* modules/sys_stat (Depends-on): Add stat-macros.
* lib/stat_.h (includes): Pick up stat macros.
* m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Replace <sys/stat.h>
if stat macros are broken.
* lib/tempname.c (includes): No need to include "stat-macros.h".
(__gen_tempname) [!_LIBC]: Expose as gen_tempname.
(direxists, __path_search) [!_LIBC]: Don't compile these in
gnulib; the tmpdir module covers that.
* lib/tempname.h: New file.
Paul Eggert [Sun, 22 Oct 2006 07:32:17 +0000 (07:32 +0000)]
* lib/canonicalize.c (ELOOP): Define if not already defined.
Problem reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2006-10/msg00282.html>.
Paul Eggert [Thu, 19 Oct 2006 07:51:14 +0000 (07:51 +0000)]
* lib/xstrtol.h: Include gettext.h.
(_STRTOL_ERROR): Wrap English-language formats inside gettext.
Problem reported by Eric Blake.
* modules/xstrtol (Depends-on): Add gettext-h.
Paul Eggert [Thu, 19 Oct 2006 07:32:18 +0000 (07:32 +0000)]
* lib/strftime.c (advance): New macro.
(add): Use it to avoid adding 0 to a FILE *. FILE can be
an incomplete type, so you can't add 0 to it. Problem reported
by Eelco Dolstra for dietlibc.