On 05/01/11 11:22, Jim Meyering wrote: > Pádraig Brady wrote: > ... >> Cool, thanks for doing that. >> It probably needs this too: >> >> #ifndef __attribute__ >> /* The __attribute__((__deprecated__) feature >> is available in gcc versions 3.1 and later. */ >> # if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1) >> # define __attribute__(Spec) /* empty */ >> # endif >> #endif > > Thanks! It needed a few other tweaks, too. > I'm Cc'ing bug-gnulib, now too, in case anyone there can improve on this. > It's in your name, so I'll wait for an "ok" before pushing it. > > [ For newcomers, the quick summary is that Pádraig found a way to > unify ignore_value and ignore_ptr. Here's the context: > http://marc.info/?t=129391563400002&r=1&w=2 ] > >>From 1e47005f2eac55ad241d17a1711895c2e6ab3f64 Mon Sep 17 00:00:00 2001 > From: =?UTF-8?q?P=C3=A1draig=20Brady?= <[email protected]> > Date: Wed, 5 Jan 2011 12:09:52 +0100 > Subject: [PATCH] ignore-value: make ignore_value more generic; deprecate > ignore_ptr > > * lib/ignore-value.h: Include <stdint.h>, for decl of intptr_t. > (ATTRIBUTE_DEPRECATED): Define. > (_ignore_case): New function. > (ignore_value): New macro, to replace the old function. > (ignore_ptr): Arrange for any use to evoke a deprecation warning. > * modules/ignore-value (Depends-on): Add stdint. > --- > ChangeLog | 11 +++++++++++ > lib/ignore-value.h | 25 +++++++++++++++++++++---- > modules/ignore-value | 1 + > 3 files changed, 33 insertions(+), 4 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 6a6198b..f068683 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,14 @@ > +2011-01-05 Pádraig Brady <[email protected]> > + and Jim Meyering <[email protected]> > + > + ignore-value: make ignore_value more generic; deprecate ignore_ptr > + * lib/ignore-value.h: Include <stdint.h>, for decl of intptr_t. > + (ATTRIBUTE_DEPRECATED): Define. > + (_ignore_case): New function. > + (ignore_value): New macro, to replace the old function. > + (ignore_ptr): Arrange for any use to evoke a deprecation warning. > + * modules/ignore-value (Depends-on): Add stdint. > + > 2011-01-04 Bruce Korb <addr...@hidden> > > git-version-gen: avoid a sub-shell > diff --git a/lib/ignore-value.h b/lib/ignore-value.h > index 04d6520..8f60b0e 100644 > --- a/lib/ignore-value.h > +++ b/lib/ignore-value.h > @@ -15,9 +15,9 @@ > You should have received a copy of the GNU General Public License > along with this program. If not, see <http://www.gnu.org/licenses/>. */ > > -/* Written by Jim Meyering. */ > +/* Written by Jim Meyering and Pádraig Brady. */ > > -/* Use these functions to avoid a warning when using a function declared with > +/* Use "ignore_value" to avoid a warning when using a function declared with > gcc's warn_unused_result attribute, but for which you really do want to > ignore the result. Traditionally, people have used a "(void)" cast to > indicate that a function's return value is deliberately unused. However, > @@ -35,8 +35,25 @@ > #ifndef _GL_IGNORE_VALUE_H > # define _GL_IGNORE_VALUE_H > > -static inline void ignore_value (int i) { (void) i; } > -static inline void ignore_ptr (void* p) { (void) p; } > +# include <stdint.h> > + > +# ifndef ATTRIBUTE_DEPRECATED > +/* The __attribute__((__deprecated__)) feature > + is available in gcc versions 3.1 and newer. */ > +# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 1) > +# define ATTRIBUTE_DEPRECATED /* empty */ > +# else > +# define ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) > +# endif > +# endif > + > +static inline void _ignore_value (intptr_t p) { (void) p; } > +# define ignore_value(x) _ignore_value ((intptr_t) x) > + > +/* ignore_value works for both scalars and pointers; deprecate ignore_ptr. > */ > +static inline void ATTRIBUTE_DEPRECATED > +ignore_ptr (void *p) { (void) p; } /* deprecated: use ignore_value */ > + > /* FIXME: what about aggregate types? */ > > #endif > diff --git a/modules/ignore-value b/modules/ignore-value > index 8d48863..aeda194 100644 > --- a/modules/ignore-value > +++ b/modules/ignore-value > @@ -5,6 +5,7 @@ Files: > lib/ignore-value.h > > Depends-on: > +stdint > > configure.ac: > AC_REQUIRE([AC_C_INLINE]) > -- > 1.7.3.4 >
Looks good. I'll apply the following to coreutils, along with a gnulib update soon. thanks, Pádraig. commit 79138dbb615644c1b2d9ec05afa4e028e8b0ef06 Author: Pádraig Brady <[email protected]> Date: Wed Jan 5 12:01:14 2011 +0000 maint: replace uses of ignore_ptr with ignore_value * src/chcon.c (process_file): Don't use the deprecated ignore_ptr. * src/chmod.c (process_file): Likewise. * src/chown-core.c (change_file_owner): Likewise. diff --git a/src/chcon.c b/src/chcon.c index ee25c3d..5174a46 100644 --- a/src/chcon.c +++ b/src/chcon.c @@ -226,7 +226,7 @@ process_file (FTS *fts, FTSENT *ent) /* Tell fts not to traverse into this hierarchy. */ fts_set (fts, ent, FTS_SKIP); /* Ensure that we do not process "/" on the second visit. */ - ignore_ptr (fts_read (fts)); + ignore_value (fts_read (fts)); return false; } return true; diff --git a/src/chmod.c b/src/chmod.c index 272c19e..98db5fa 100644 --- a/src/chmod.c +++ b/src/chmod.c @@ -248,7 +248,7 @@ process_file (FTS *fts, FTSENT *ent) /* Tell fts not to traverse into this hierarchy. */ fts_set (fts, ent, FTS_SKIP); /* Ensure that we do not process "/" on the second visit. */ - ignore_ptr (fts_read (fts)); + ignore_value (fts_read (fts)); return false; } diff --git a/src/chown-core.c b/src/chown-core.c index 0d59f7a..82f7341 100644 --- a/src/chown-core.c +++ b/src/chown-core.c @@ -271,7 +271,7 @@ change_file_owner (FTS *fts, FTSENT *ent, /* Tell fts not to traverse into this hierarchy. */ fts_set (fts, ent, FTS_SKIP); /* Ensure that we do not process "/" on the second visit. */ - ignore_ptr (fts_read (fts)); + ignore_value (fts_read (fts)); return false;
