[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