Avoid warnings for unused results in nscd/connections.c.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 26 Nov 2014 20:54:16 +0000 (20:54 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 26 Nov 2014 20:54:16 +0000 (20:54 +0000)
This patch avoids warnings for unused results of setuid and setgid in
nscd/connections.c using an ignore_value macro along the lines
suggested by Paul in
<https://sourceware.org/ml/libc-alpha/2014-11/msg00733.html>.

Tested for x86_64.

* include/libc-internal.h (ignore_value): New macro.
* nscd/connections.c (restart): Wrap calls to setuid and setgid
with ignore_value.

ChangeLog
include/libc-internal.h
nscd/connections.c

index 5ec7f0d..44c9453 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2014-11-26  Joseph Myers  <joseph@codesourcery.com>
 
+       * include/libc-internal.h (ignore_value): New macro.
+       * nscd/connections.c (restart): Wrap calls to setuid and setgid
+       with ignore_value.
+
        * sysdeps/mips/__longjmp.c (____longjmp): Use prototype
        definition.
 
index 78f82da..2ced1c1 100644 (file)
@@ -70,4 +70,10 @@ extern void __init_misc (int, char **, char **);
 #define PTR_ALIGN_UP(base, size) \
   ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size)))
 
+/* Ignore the value of an expression when a cast to void does not
+   suffice (in particular, for a call to a function declared with
+   attribute warn_unused_result).  */
+#define ignore_value(x) \
+  ({ __typeof__ (x) __ignored_value = (x); (void) __ignored_value; })
+
 #endif /* _LIBC_INTERNAL  */
index 3e950af..1631212 100644 (file)
@@ -1464,7 +1464,7 @@ cannot change to old UID: %s; disabling paranoia mode"),
 cannot change to old GID: %s; disabling paranoia mode"),
                   strerror (errno));
 
-         setuid (server_uid);
+         ignore_value (setuid (server_uid));
          paranoia = 0;
          return;
        }
@@ -1479,8 +1479,8 @@ cannot change to old working directory: %s; disabling paranoia mode"),
 
       if (server_user != NULL)
        {
-         setuid (server_uid);
-         setgid (server_gid);
+         ignore_value (setuid (server_uid));
+         ignore_value (setgid (server_gid));
        }
       paranoia = 0;
       return;
@@ -1524,8 +1524,8 @@ cannot change to old working directory: %s; disabling paranoia mode"),
 
   if (server_user != NULL)
     {
-      setuid (server_uid);
-      setgid (server_gid);
+      ignore_value (setuid (server_uid));
+      ignore_value (setgid (server_gid));
     }
   if (chdir ("/") != 0)
     dbg_log (_("cannot change current working directory to \"/\": %s"),