bug-gnulib
[Top][All Lists]
Advanced

[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;




reply via email to

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