[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: make ignore_value more generic; deprecate ignore_ptr
From: |
Pádraig Brady |
Subject: |
Re: make ignore_value more generic; deprecate ignore_ptr |
Date: |
Wed, 05 Jan 2011 12:06:08 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3 |
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?= <address@hidden>
> 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 <address@hidden>
> + and Jim Meyering <address@hidden>
> +
> + 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 <address@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 <address@hidden>
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;
- make ignore_value more generic; deprecate ignore_ptr, Jim Meyering, 2011/01/05
- Re: make ignore_value more generic; deprecate ignore_ptr,
Pádraig Brady <=
- Re: make ignore_value more generic; deprecate ignore_ptr, Jim Meyering, 2011/01/05
- Re: make ignore_value more generic; deprecate ignore_ptr, Eric Blake, 2011/01/06
- Re: make ignore_value more generic; deprecate ignore_ptr, Eric Blake, 2011/01/06
- Re: make ignore_value more generic; deprecate ignore_ptr, Eric Blake, 2011/01/06
- [PATCH] ignore_value: support aggregate types, Eric Blake, 2011/01/06
- Re: [PATCH] ignore_value: support aggregate types, Pádraig Brady, 2011/01/06
- Re: [PATCH] ignore_value: support aggregate types, Jim Meyering, 2011/01/07
- Re: [PATCH] ignore_value: support aggregate types, Eric Blake, 2011/01/07