Date: Wed, 30 Oct 2013 00:21:28 +1100 (EST) From: Bruce Evans <brde@optusnet.com.au> To: Mark Johnston <markj@FreeBSD.org> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r257298 - head/lib/libproc Message-ID: <20131029235717.M905@besplex.bde.org> In-Reply-To: <201310290312.r9T3CVx4064237@svn.freebsd.org> References: <201310290312.r9T3CVx4064237@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131029235717.M905>
