Clean-up compiler warnings about ignoring return values
authorJustin Pettit <jpettit@nicira.com>
Tue, 15 Dec 2009 07:08:10 +0000 (23:08 -0800)
committerJustin Pettit <jpettit@nicira.com>
Tue, 15 Dec 2009 08:14:32 +0000 (00:14 -0800)
Some systems complain when certain functions' return values are not
checked.  This commit fixes those warnings.

Creating ignore() function suggested by Ben Pfaff.

lib/daemon.c
lib/process.c
lib/signals.c
lib/util.c
lib/util.h
ofproto/executer.c
ovsdb/log.c
ovsdb/ovsdb-server.c
tests/test-vconn.c

index 0dcc66ff742c10e48275f4adb9694a6712c93850..50cc3352142755887baf5bfadc450303e4b4fc46 100644 (file)
@@ -232,11 +232,11 @@ daemonize(void)
             /* Child process. */
             close(fds[0]);
             make_pidfile();
-            write(fds[1], &c, 1);
+            ignore(write(fds[1], &c, 1));
             close(fds[1]);
             setsid();
             if (chdir_) {
-                chdir("/");
+                ignore(chdir("/"));
             }
             time_postfork();
             lockfile_postfork();
index 0c7f424fc84cb01324d70b3b15147978b59029b3..12168f7e21289cd07fc65db66f89078d65d3e9cf 100644 (file)
@@ -289,7 +289,7 @@ process_exited(struct process *p)
         return true;
     } else {
         char buf[_POSIX_PIPE_BUF];
-        read(fds[0], buf, sizeof buf);
+        ignore(read(fds[0], buf, sizeof buf));
         return false;
     }
 }
@@ -617,7 +617,7 @@ sigchld_handler(int signr UNUSED)
             }
         }
     }
-    write(fds[1], "", 1);
+    ignore(write(fds[1], "", 1));
 }
 
 static bool
index d8e51b644e541dba230e73d40103fdbf7aadc67b..eabbcc382c03c28a1dbc78a1e8cb0180955e3a24 100644 (file)
@@ -98,7 +98,7 @@ bool
 signal_poll(struct signal *s)
 {
     char buf[_POSIX_PIPE_BUF];
-    read(fds[0], buf, sizeof buf);
+    ignore(read(fds[0], buf, sizeof buf));
     if (signaled[s->signr]) {
         signaled[s->signr] = 0;
         return true;
@@ -122,7 +122,7 @@ static void
 signal_handler(int signr)
 {
     if (signr >= 1 && signr < N_SIGNALS) {
-        write(fds[1], "", 1);
+        ignore(write(fds[1], "", 1));
         signaled[signr] = true;
     }
 }
index 65cb36087dc71e752e68d4cde17698aae940870a..e9284809e34bbd956a0b892f67e188a97e70a95b 100644 (file)
@@ -383,3 +383,9 @@ dir_name(const char *file_name)
         return xmemdup0(file_name, len);
     }
 }
+
+/* Pass a value to this function if it is marked with
+ * __attribute__((warn_unused_result)) and you genuinely want to ignore 
+ * its return value.  (Note that every scalar type can be implicitly 
+ * converted to bool.) */
+void ignore(bool x UNUSED) { }
index 9e7b88f06825866358adca046f55108a6163b40a..0101bf7b544d4bae1e3d7dc4535999cdcf8e9503 100644 (file)
@@ -127,6 +127,8 @@ int hexit_value(int c);
 
 char *dir_name(const char *file_name);
 
+void ignore(bool x UNUSED);
+
 #ifdef  __cplusplus
 }
 #endif
index cdbe5bd969848d4b9198c7b1cb9d447cbd8a9f2c..f78ec33807fcb94fd0897618693949d0858a72eb 100644 (file)
@@ -434,7 +434,7 @@ executer_rconn_closing(struct executer *e, struct rconn *rconn)
 static void
 sigchld_handler(int signr UNUSED)
 {
-    write(signal_fds[1], "", 1);
+    ignore(write(signal_fds[1], "", 1));
 }
 
 int
index 9c2e277ce4a642fa953f00d95e152911bc5dd785..c8dac10c9542064d737ca18d75805d0da63a5ed2 100644 (file)
@@ -337,7 +337,7 @@ ovsdb_log_write(struct ovsdb_log *file, struct json *json)
 
         /* Remove any partially written data, ignoring errors since there is
          * nothing further we can do. */
-        ftruncate(fileno(file->stream), file->offset);
+        ignore(ftruncate(fileno(file->stream), file->offset));
 
         goto error;
     }
index b86a504b57fe1f1c5ce781f6d9c7d200a3055628..d3a332e7353ece56719e815f3d14e70bcb15f040 100644 (file)
@@ -126,7 +126,7 @@ main(int argc, char *argv[])
     unixctl_command_register("exit", ovsdb_server_exit, &exiting);
 
     if (do_chdir) {
-        chdir("/");
+        ignore(chdir("/"));
     }
 
     exiting = false;
index 1bcd8c62f717539f8fa1ad5e0fa2d5d959588019..34c2930a4944f53c28717e0ea29136f2e8fae48f 100644 (file)
@@ -224,7 +224,7 @@ test_send_hello(const char *type, const void *out, size_t out_size,
     fd = fpv_accept(&fpv);
     fpv_destroy(&fpv);
 
-    write(fd, out, out_size);
+    assert(write(fd, out, out_size) == out_size);
 
     assert(!set_nonblocking(fd));