bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gnulib and *printf


From: Joel E. Denny
Subject: Re: gnulib and *printf
Date: Thu, 8 Oct 2009 01:05:51 -0400 (EDT)
User-agent: Alpine 1.00 (DEB 882 2007-12-20)

Hi Eric.

On Wed, 7 Oct 2009, Eric Blake wrote:

> Yes.  But in my opinion, it is even slicker to use either the
> xvasprintf{-posix} module, which mallocs for you and calls xalloc_die
> automatically on malloc failure:
> 
> char *buf = xasprintf (format, args);
> 
> or the vasnprintf{-posix} module, which helps manage an existing buffer,
> so that you can avoid malloc overhead in the common case of small output:

Thanks for mentioning these as they will likely become useful to me later.
Unfortunately, the example I gave doesn't very well represent exactly what 
I'm trying to do right now.  In one case, I'm computing the length for a 
variable-length array.  In another case, I'm computing a column width for 
a table to be formatted to a stream.  No malloc is needed in either case.

> Yes, for every known system, snprintf is just a simple va_arg wrapper that
> forwards to vsnprintf, so if the latter has a bug, then the former will as
> well.

Thanks for explaining.

> > 2. Is there any single module that ensures portability of all *printf 
> > functions?  Or is it worthwhile to maintain a list of modules trimmed to 
> > exactly the functions that are currently used?
> 
> At the moment, you have to pull in all the modules one by one.  You can
> pull in more than you currently use, if you want to play it safe.  Also,
> compiling with -DGNULIB_POSIXCHECK is supposed to help identify places
> where you might be missing a module.

Ah, thanks.  It looks like bison has a lot of gnulib modules to consider. 
Already 6 of them are in the printf-posix family (but -DGNULIB_POSIXCHECK 
suggests none of those if I don't include at least one of them).

> Maybe it would be worth an
> uber-printf{-posix} module that pulls in all the variants, but I'm
> probably not going to write it.

While -DGNULIB_POSIXCHECK solves the biggest problem, it still seems a 
little silly to maintain a list of gnulib's printf-posix modules in bison.  
Is the following patch ok?  I'm not sure how to fill out some of the 
fields.

>From 351599f18e824e4cdc883156f080becc64ffeb41 Mon Sep 17 00:00:00 2001
From: Joel E. Denny <address@hidden>
Date: Thu, 8 Oct 2009 00:18:25 -0400
Subject: [PATCH] all-printf, all-printf-posix: new modules.

* modules/all-printf: New module.
* modules/all-printf-posix: New module.
---
 ChangeLog                |    6 ++++++
 modules/all-printf       |   25 +++++++++++++++++++++++++
 modules/all-printf-posix |   31 +++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 0 deletions(-)
 create mode 100644 modules/all-printf
 create mode 100644 modules/all-printf-posix

diff --git a/ChangeLog b/ChangeLog
index dedcfc8..a953cbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-08  Joel E. Denny  <address@hidden>
+
+       all-printf, all-printf-posix: new modules.
+       * modules/all-printf: New module.
+       * modules/all-printf-posix: New module.
+
 2009-10-07  Eric Blake  <address@hidden>
 
        areadlinkat-with-size: new module
diff --git a/modules/all-printf b/modules/all-printf
new file mode 100644
index 0000000..efc6f35
--- /dev/null
+++ b/modules/all-printf
@@ -0,0 +1,25 @@
+Description:
+All functions in the printf family.
+
+Files:
+
+Depends-on:
+dprintf
+obstack-printf
+snprintf
+vasnprintf
+vasprintf
+vdprintf
+vsnprintf
+xprintf
+xvasprintf
+
+configure.ac:
+
+Makefile.am:
+
+Include:
+
+License:
+
+Maintainer:
diff --git a/modules/all-printf-posix b/modules/all-printf-posix
new file mode 100644
index 0000000..3005eff
--- /dev/null
+++ b/modules/all-printf-posix
@@ -0,0 +1,31 @@
+Description:
+POSIX compatible versions of all functions in the printf family.
+
+Files:
+
+Depends-on:
+dprintf-posix
+fprintf-posix
+obstack-printf-posix
+printf-posix
+snprintf-posix
+sprintf-posix
+vasnprintf-posix
+vasprintf-posix
+vdprintf-posix
+vfprintf-posix
+vprintf-posix
+vsnprintf-posix
+vsprintf-posix
+xprintf-posix
+xvasprintf-posix
+
+configure.ac:
+
+Makefile.am:
+
+Include:
+
+License:
+
+Maintainer:
-- 
1.5.4.3





reply via email to

[Prev in Thread] Current Thread [Next in Thread]