[RFC][PATCH] notmuch: Workaround to allow ignoring non-void function return.

Austin Clements amdragon at MIT.EDU
Wed Dec 21 23:03:45 PST 2011


I must admit I haven't been following the warnings problem very
closely, but perhaps we shouldn't be ignoring these return codes?

Quoth David Edmondson on Dec 21 at  9:38 pm:
> ---
> 
> The mechanism used here works for me in an isolated test case and no
> warnings appear when using it as below, but I'm unsure why the
> original warning that it is intended to address didn't appear when I
> build. Any thoughts?
> 
>  compat/compat.h |    6 ++++++
>  notmuch-new.c   |    2 +-
>  notmuch-show.c  |    2 +-
>  notmuch-tag.c   |    2 +-
>  4 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/compat/compat.h b/compat/compat.h
> index 7767fe8..1160301 100644
> --- a/compat/compat.h
> +++ b/compat/compat.h
> @@ -30,6 +30,12 @@
>  extern "C" {
>  #endif
>  
> +#ifdef __GNUC__
> +#define ignore_result(x) ({ __typeof__(x) z = x; (void) sizeof (z); })
> +#else /* !__GNUC__ */
> +#define ignore_result(x) x
> +#endif /* __GNUC__ */
> +
>  #if !HAVE_GETLINE
>  #include <stdio.h>
>  #include <unistd.h>
> diff --git a/notmuch-new.c b/notmuch-new.c
> index 3512de7..0ac04cc 100644
> --- a/notmuch-new.c
> +++ b/notmuch-new.c
> @@ -67,7 +67,7 @@ handle_sigint (unused (int sig))
>  {
>      static char msg[] = "Stopping...         \n";
>  
> -    (void) write(2, msg, sizeof(msg)-1);
> +    ignore_result(write(STDERR_FILENO, msg, sizeof(msg)-1));
>      interrupted = 1;
>  }
>  
> diff --git a/notmuch-show.c b/notmuch-show.c
> index 19fb49f..681f778 100644
> --- a/notmuch-show.c
> +++ b/notmuch-show.c
> @@ -866,7 +866,7 @@ do_show_single (void *ctx,
>  
>  	while (!feof (file)) {
>  	    size = fread (buf, 1, sizeof (buf), file);
> -	    (void) fwrite (buf, size, 1, stdout);
> +	    ignore_result(fwrite (buf, size, 1, stdout));
>  	}
>  
>  	fclose (file);
> diff --git a/notmuch-tag.c b/notmuch-tag.c
> index 292c5da..2cbfdc3 100644
> --- a/notmuch-tag.c
> +++ b/notmuch-tag.c
> @@ -26,7 +26,7 @@ static void
>  handle_sigint (unused (int sig))
>  {
>      static char msg[] = "Stopping...         \n";
> -    (void) write(2, msg, sizeof(msg)-1);
> +    ignore_result(write(STDERR_FILENO, msg, sizeof(msg)-1));
>      interrupted = 1;
>  }
>  


More information about the notmuch mailing list