aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Austin Clements <amdragon@MIT.EDU>2012-01-19 17:29:19 -0500
committerGravatar David Bremner <bremner@debian.org>2012-01-21 08:49:50 -0400
commita9a9e374e2567caad8601d1781a3b0af8a3dde13 (patch)
tree55254879111f1f5d05a4217a825a4add463a31a9
parent18947b95cd1668d1b98f7ea4196e97b050599f7d (diff)
Silence buildbot warnings about unused results
This ignores the results of the two writes in sigint handlers even harder than before. While my libc lacks the declarations that trigger these warnings, this can be tested by adding the following to notmuch.h: __attribute__((warn_unused_result)) ssize_t write(int fd, const void *buf, size_t count);
-rw-r--r--compat/compat.h8
-rw-r--r--notmuch-new.c6
-rw-r--r--notmuch-tag.c7
3 files changed, 19 insertions, 2 deletions
diff --git a/compat/compat.h b/compat/compat.h
index 7767fe84..b2e27368 100644
--- a/compat/compat.h
+++ b/compat/compat.h
@@ -46,6 +46,14 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp);
char* strcasestr(const char *haystack, const char *needle);
#endif /* !HAVE_STRCASESTR */
+/* Silence gcc warnings about unused results. These warnings exist
+ * for a reason; any use of this needs to be justified. */
+#ifdef __GNUC__
+#define IGNORE_RESULT(x) ({ __typeof__(x) __z = (x); (void)(__z = __z); })
+#else /* !__GNUC__ */
+#define IGNORE_RESULT(x) x
+#endif /* __GNUC__ */
+
#ifdef __cplusplus
}
#endif
diff --git a/notmuch-new.c b/notmuch-new.c
index 3512de72..a569a544 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -67,7 +67,11 @@ handle_sigint (unused (int sig))
{
static char msg[] = "Stopping... \n";
- (void) write(2, msg, sizeof(msg)-1);
+ /* This write is "opportunistic", so it's okay to ignore the
+ * result. It is not required for correctness, and if it does
+ * fail or produce a short write, we want to get out of the signal
+ * handler as quickly as possible, not retry it. */
+ IGNORE_RESULT (write (2, msg, sizeof(msg)-1));
interrupted = 1;
}
diff --git a/notmuch-tag.c b/notmuch-tag.c
index 292c5da3..44fd61f6 100644
--- a/notmuch-tag.c
+++ b/notmuch-tag.c
@@ -26,7 +26,12 @@ static void
handle_sigint (unused (int sig))
{
static char msg[] = "Stopping... \n";
- (void) write(2, msg, sizeof(msg)-1);
+
+ /* This write is "opportunistic", so it's okay to ignore the
+ * result. It is not required for correctness, and if it does
+ * fail or produce a short write, we want to get out of the signal
+ * handler as quickly as possible, not retry it. */
+ IGNORE_RESULT (write (2, msg, sizeof(msg)-1));
interrupted = 1;
}