On Tue, 29 Oct 2013, Mark Johnston wrote:

Log:
 Revert r257248 and fix the problem in a way that doesn't violate style(9).

Why did gcc complain about the original version?

Modified: head/lib/libproc/_libproc.h
==============================================================================
--- head/lib/libproc/_libproc.h Tue Oct 29 02:25:18 2013        (r257297)
+++ head/lib/libproc/_libproc.h Tue Oct 29 03:12:31 2013        (r257298)
@@ -52,6 +52,6 @@ struct proc_handle {
#define DPRINTF(...)    warn(__VA_ARGS__)
#define DPRINTFX(...)   warnx(__VA_ARGS__)
#else
-#define        DPRINTF(...)
-#define        DPRINTFX(...)
+#define        DPRINTF(...)    do { } while (0)
+#define        DPRINTFX(...)   do { } while (0)
#endif

Modified: head/lib/libproc/proc_util.c
==============================================================================
--- head/lib/libproc/proc_util.c        Tue Oct 29 02:25:18 2013        
(r257297)
+++ head/lib/libproc/proc_util.c        Tue Oct 29 03:12:31 2013        
(r257298)
@@ -145,9 +145,8 @@ proc_wstatus(struct proc_handle *phdl)
        if (phdl == NULL)
                return (-1);
        if (waitpid(phdl->pid, &status, WUNTRACED) < 0) {
-               if (errno != EINTR) {
+               if (errno != EINTR)
                        DPRINTF("waitpid");
-               }
                return (-1);
        }
        if (WIFSTOPPED(status))

Unlike some buggy macros, the null macro expanded to syntactically correct
code:

                if (errno != EINTR)
                        ;

so it doesn't need the do-while hack.  Empty statements are common in some
contexts, so compilers shouldn't warn about them.  In all versions, the
macro isn't completely function-like and the if statement is dead code,
so if compilers warn about too many things then the do-while hack wouldn't
work here or in most places that it is used.

Nearby style bugs:
- the error check is for "< 0" instead of for "== -1"
- the error message is not as loud as old ones.  All old ones begin with
  "ERROR: ".  The new style is better.  "ERROR" is not even redundant.
  It is wrong, since the errors are just warnings.

Bruce
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to