From: Jim Meyering <meyering@fb.com> Date: Wed, 5 Oct 2016 16:13:55 +0000 (-0700) Subject: utimecmp: avoid new GCC 7 warning from -Wbool-operation X-Git-Tag: v1.0~6617 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d7ccbff42ce581fac951d9ac1579f253e3cbd2e2;p=gnulib.git utimecmp: avoid new GCC 7 warning from -Wbool-operation Testing this module would fail when using GCC 7 like this: $ CFLAGS='-O -Werror=bool-operation' ./gnulib-tool --create-testdir \ --dir=/tmp/x --with-tests --test utimecmp ../../gllib/utimecmp.c: In function ‘utimecmp’: ../../gllib/utimecmp.c:291:36: error: ‘~’ on a boolean expression \ [-Werror=bool-operation] time_t s = src_s & ~ (res == 2 * BILLION); ^ ../../gllib/utimecmp.c:370:16: error: ‘~’ on a boolean expression \ [-Werror=bool-operation] src_s &= ~ (res == 2 * BILLION); ^ * lib/utimecmp.c (utimecmp): Do not apply "~" to a boolean. Instead, make it explicit that we intend to apply it to 0 or 1. --- diff --git a/ChangeLog b/ChangeLog index 93f83e6bed..7b04177028 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2016-10-05 Jim Meyering <meyering@fb.com> + + utimecmp: avoid new GCC 7 warning from -Wbool-operation + Testing this module would fail when using GCC 7 like this: + $ CFLAGS='-O -Werror=bool-operation' ./gnulib-tool --create-testdir \ + --dir=/tmp/x --with-tests --test utimecmp + ../../gllib/utimecmp.c: In function âutimecmpâ: + ../../gllib/utimecmp.c:291:36: error: â~â on a boolean expression \ + [-Werror=bool-operation] + time_t s = src_s & ~ (res == 2 * BILLION); + ^ + ../../gllib/utimecmp.c:370:16: error: â~â on a boolean expression \ + [-Werror=bool-operation] + src_s &= ~ (res == 2 * BILLION); + ^ + * lib/utimecmp.c (utimecmp): Do not apply "~" to a boolean. + Instead, make it explicit that we intend to apply it to 0 or 1. + 2016-10-03 Pádraig Brady <P@draigBrady.com> quotearg: minimize shell quoting using double quotes diff --git a/lib/utimecmp.c b/lib/utimecmp.c index ac3d626288..c2e30579d6 100644 --- a/lib/utimecmp.c +++ b/lib/utimecmp.c @@ -288,7 +288,7 @@ utimecmp (char const *dst_name, to interrogate the file system to deduce the exact time stamp resolution; return the answer directly. */ { - time_t s = src_s & ~ (res == 2 * BILLION); + time_t s = src_s & ~ (res == 2 * BILLION ? 1 : 0); if (src_s < dst_s || (src_s == dst_s && src_ns <= dst_ns)) return 1; if (dst_s < s @@ -367,7 +367,7 @@ utimecmp (char const *dst_name, } /* Truncate the source's time stamp according to the resolution. */ - src_s &= ~ (res == 2 * BILLION); + src_s &= ~ (res == 2 * BILLION ? 1 : 0); src_ns -= src_ns % res; }