bug-gnulib
[Top][All Lists]
Advanced

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

Re: [PATCH] ignore-value() tweaks


From: Jim Meyering
Subject: Re: [PATCH] ignore-value() tweaks
Date: Wed, 26 Aug 2009 14:14:21 +0200

Pádraig Brady wrote:
> I noticed the use of ignore-value() recently and
> was a little confused by it. How about the attached tweaks
> to make it explicit it doesn't handle all return types
> and also remove the use of __attribute__ ((__unused__))
> which I don't think is required.

I think you're right that __attribute__ ((__unused__)) is unnecessary here.
While "(void)" does not quiet gcc's warn_unused_result attribute warning,
it does do the job for an otherwise unused parameter.

> Subject: [PATCH] ignore-value: support old compilers and pointer types
>
> * lib/ignore-value.h: Add a function to suppress warnings
> from fuctions that return pointers, and to make it explicit
> that one function doesn't handle all cases.  Also don't use
> __attribute__ ((unused)) as it's too verbose/non standard

Regarding the log message, I don't think there's a problem with portability.
Either that __attribute__ directives is used and accepted, or gcc is so
old that it doesn't support it, so it's compiled out -- but when gcc
is that old, we don't have to worry about warn_unused_result attributes
either, so that's fine.  Hmm... I guess you could be thinking about
warnings from non-gcc compilers.  Yes, that's another way in which
(void)i is better.

How about this adjusted patch?

>From af0fafc96bfa9ba20b9786d945d27401f05038ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <address@hidden>
Date: Wed, 12 Aug 2009 09:37:56 +0100
Subject: [PATCH] ignore-value: handle pointer types, too

* lib/ignore-value.h (__attribute__): Remove definition.
(ignore_value): Remove use of "__attribute__ ((unused))" in favor
of a more concise and more-often effective "(void) i" statement.
(ignore_ptr): New function to suppress warnings from functions that
return pointers, and to make it explicit that one function doesn't
handle all cases.
---
 ChangeLog          |   10 ++++++++++
 lib/ignore-value.h |   20 ++++++--------------
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 952e5c8..fb7d7dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-08-26  Pádraig Brady  <address@hidden>
+
+       ignore-value: handle pointer types, too
+       * lib/ignore-value.h (__attribute__): Remove definition.
+       (ignore_value): Remove use of "__attribute__ ((unused))" in favor
+       of a more concise and more-often effective "(void) i" statement.
+       (ignore_ptr): New function to suppress warnings from functions that
+       return pointers, and to make it explicit that one function doesn't
+       handle all cases.
+
 2009-08-25  Bruno Haible  <address@hidden>

        dup2: work around a Linux bug.
diff --git a/lib/ignore-value.h b/lib/ignore-value.h
index 5f97c91..86cfad7 100644
--- a/lib/ignore-value.h
+++ b/lib/ignore-value.h
@@ -1,6 +1,6 @@
-/* ignore a value to quiet a compiler warning
+/* ignore a function return without a compiler warning

-   Copyright (C) 2008 Free Software Foundation, Inc.
+   Copyright (C) 2008-2009 Free Software Foundation, Inc.

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -17,13 +17,7 @@

 /* Written by Jim Meyering.  */

-#ifndef __attribute__
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
-#  define __attribute__(x)
-# endif
-#endif
-
-/* Use this function to avoid a warning when using a function declared with
+/* Use these functions 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,
@@ -38,8 +32,6 @@
    "copy.c:233: warning: ignoring return value of 'fchown',
    declared with attribute warn_unused_result".  */

-static inline void
-ignore_value (int i __attribute__ ((__unused__)))
-{
-  /* empty */
-}
+static inline void ignore_value (int i) { (void) i; }
+static inline void ignore_ptr (void* p) { (void) p; }
+/* FIXME: what about aggregate types? */
--
1.6.4.1.341.gf2a44




reply via email to

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