>From 3876904855478f7fda64d14f02035d8eaa57a527 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Thu, 2 Nov 2017 13:02:38 +0100
Subject: [PATCH 1/5] maint: avoid unused-macros warning from GCC 7
GCC-7.2.1 on openSUSE-Tumbleweed complains:
listfile.c:56:0: error: macro "HAVE_MAJOR" is not used \
[-Werror=unused-macros]
#define HAVE_MAJOR
* listfile.c (major,minor): Avoid the temporary #define HAVE_MAJOR
by using #else's.
---
lib/listfile.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/lib/listfile.c b/lib/listfile.c
index 4f9462b3..ff730691 100644
--- a/lib/listfile.c
+++ b/lib/listfile.c
@@ -49,21 +49,16 @@
/* Since major is a function on SVR4, we can't use `ifndef major'. */
#ifdef MAJOR_IN_MKDEV
#include
-#define HAVE_MAJOR
-#endif
-#ifdef MAJOR_IN_SYSMACROS
-#include
-#define HAVE_MAJOR
-#endif
-
-#ifdef major /* Might be defined in sys/types.h. */
-#define HAVE_MAJOR
-#endif
-#ifndef HAVE_MAJOR
-#define major(dev) (((dev) >> 8) & 0xff)
-#define minor(dev) ((dev) & 0xff)
+#else
+# ifdef MAJOR_IN_SYSMACROS
+# include
+# else
+# ifndef major /* Might be defined in sys/types.h. */
+# define major(dev) (((dev) >> 8) & 0xff)
+# define minor(dev) ((dev) & 0xff)
+# endif
+# endif
#endif
-#undef HAVE_MAJOR
#if ENABLE_NLS
# include
--
2.14.3
>From a7e7526798c9d53b2a2ce67654e6d452cf9f1253 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Thu, 2 Nov 2017 13:18:38 +0100
Subject: [PATCH 2/5] maint: avoid implicit-fallthrough warnings from GCC 7
Avoid the new warnings GCC 7 gives with the
"-Werror=implicit-fallthrough=" compiler option.
Since version 7, GCC requires fallthrough switch/cases to be
marked by the appropriate attribute.
* lib/system.h: Add new header file defining the FALLTHROUGH macro.
* lib/Makefile.am (libfind_a_SOURCES): Reference it.
* find/print.c (do_fprintf): Use the new macro.
* xargs/xargs.c (read_line): Likewise.
(xargs_do_exec): For error(3), GCC 7 doesn't know that the function
does not return, and would complain about falling through into the
following case. Temporarily add an abort call - this will be fixed
with another commit.
---
find/print.c | 11 ++++-------
lib/Makefile.am | 3 ++-
lib/system.h | 43 +++++++++++++++++++++++++++++++++++++++++++
xargs/xargs.c | 6 +++++-
4 files changed, 54 insertions(+), 9 deletions(-)
create mode 100644 lib/system.h
diff --git a/find/print.c b/find/print.c
index 02785ea2..b820333e 100644
--- a/find/print.c
+++ b/find/print.c
@@ -44,6 +44,7 @@
#include "xalloc.h"
/* find-specific headers. */
+#include "system.h"
#include "defs.h"
#include "print.h"
@@ -951,13 +952,9 @@ do_fprintf (struct format_val *dest,
checked_fprintf (dest, segment->text, g->gr_name);
break;
}
- else
- {
- /* Do nothing. */
- /*FALLTHROUGH*/
- }
+ /* else fallthru */
}
- /*FALLTHROUGH*/ /*...sometimes, so 'G' case.*/
+ FALLTHROUGH; /*...sometimes, so 'G' case.*/
case 'G': /* GID number */
/* UNTRUSTED, probably unexploitable */
@@ -1167,7 +1164,7 @@ do_fprintf (struct format_val *dest,
}
/* else fallthru */
}
- /* FALLTHROUGH*/ /* .. to case U */
+ FALLTHROUGH; /* .. to case U */
case 'U': /* UID number */
/* UNTRUSTED, probably unexploitable */
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 739f2ceb..7686d565 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -56,7 +56,8 @@ libfind_a_SOURCES = \
splitstring.c \
splitstring.h \
bugreports.c \
- bugreports.h
+ bugreports.h \
+ system.h
EXTRA_DIST = unused-result.h check-regexprops.sh
SUFFIXES =
diff --git a/lib/system.h b/lib/system.h
new file mode 100644
index 00000000..15658bda
--- /dev/null
+++ b/lib/system.h
@@ -0,0 +1,43 @@
+/* system.h -- system-dependent definitions for findutils
+
+ Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+#if !defined SYSTEM_H
+# define SYSTEM_H
+
+/* FALLTHROUGH
+ * Since GCC7, the "-Werror=implicit-fallthrough=" option requires
+ * fallthrough cases to be marked as such via:
+ * __attribute__ ((__fallthrough__))
+ * Usage:
+ * switch (c)
+ * {
+ * case 1:
+ * doOne();
+ * FALLTHROUGH;
+ * case 2:
+ * ...
+ * }
+ */
+#ifndef FALLTHROUGH
+# if __GNUC__ < 7
+# define FALLTHROUGH ((void) 0)
+# else
+# define FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+#endif
+
+#endif /* SYSTEM_H */
diff --git a/xargs/xargs.c b/xargs/xargs.c
index 321b5ba0..20fb75a6 100644
--- a/xargs/xargs.c
+++ b/xargs/xargs.c
@@ -67,6 +67,7 @@
#include "bugreports.h"
#include "findutils-version.h"
#include "gcc-function-attributes.h"
+#include "system.h"
#if ENABLE_NLS
# include
@@ -904,7 +905,7 @@ read_line (void)
if (ISSPACE (c))
continue;
state = NORM;
- /* aaahhhh.... */
+ FALLTHROUGH; /* aaahhhh.... */
case NORM:
if (c == '\n')
@@ -1277,6 +1278,9 @@ xargs_do_exec (struct buildcmd_control *ctl, void *usercontext, int argc, char *
{
case -1:
error (EXIT_FAILURE, errno, _("cannot fork"));
+ /* error(EXIT_FAILURE, ...) does not return, but tell GCC 7 that
+ we don't fall through here; fixed with another commit. */
+ abort();
case 0: /* Child. */
{
--
2.14.3
>From 0da12e14025da4d022cf9ae6453fc86596f31237 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Fri, 3 Nov 2017 00:41:27 +0100
Subject: [PATCH 3/5] maint: add die.h; avoid missing-fallthrough warnings
after error w/ GCC 7
* lib/die.h (die): New file/function from grep/coreutils.
Note: this file will probably be migrated to gnulib.
* lib/Makefile.am (libfind_a_SOURCES): Reference it.
* xargs/xargs.c: Include die.h.
(xargs_do_exec): Use die in place of error-nonzero, thus allowing
the compiler to know that we do not fall through into the 0 (child)
case.
---
lib/Makefile.am | 3 ++-
lib/die.h | 32 ++++++++++++++++++++++++++++++++
xargs/xargs.c | 8 +++-----
3 files changed, 37 insertions(+), 6 deletions(-)
create mode 100644 lib/die.h
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 7686d565..f0d6640e 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -57,7 +57,8 @@ libfind_a_SOURCES = \
splitstring.h \
bugreports.c \
bugreports.h \
- system.h
+ system.h \
+ die.h
EXTRA_DIST = unused-result.h check-regexprops.sh
SUFFIXES =
diff --git a/lib/die.h b/lib/die.h
new file mode 100644
index 00000000..0b329266
--- /dev/null
+++ b/lib/die.h
@@ -0,0 +1,32 @@
+/* Report an error and exit.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Borrowed from coreutils. */
+#ifndef DIE_H
+# define DIE_H
+
+# include
+# include
+# include
+
+/* Like 'error (STATUS, ...)', except STATUS must be a nonzero constant.
+ This may pacify the compiler or help it generate better code. */
+# define die(status, ...) \
+ verify_expr (status, (error (status, __VA_ARGS__), assume (false)))
+
+#endif /* DIE_H */
diff --git a/xargs/xargs.c b/xargs/xargs.c
index 20fb75a6..8ef91dee 100644
--- a/xargs/xargs.c
+++ b/xargs/xargs.c
@@ -63,8 +63,9 @@
/* find headers. */
#include "buildcmd.h"
-#include "fdleak.h"
+#include "die.h"
#include "bugreports.h"
+#include "fdleak.h"
#include "findutils-version.h"
#include "gcc-function-attributes.h"
#include "system.h"
@@ -1277,10 +1278,7 @@ xargs_do_exec (struct buildcmd_control *ctl, void *usercontext, int argc, char *
switch (child)
{
case -1:
- error (EXIT_FAILURE, errno, _("cannot fork"));
- /* error(EXIT_FAILURE, ...) does not return, but tell GCC 7 that
- we don't fall through here; fixed with another commit. */
- abort();
+ die (EXIT_FAILURE, errno, _("cannot fork"));
case 0: /* Child. */
{
--
2.14.3
>From 7302d90616e69e839d5a01e093c14699a0f38dfa Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Fri, 3 Nov 2017 01:10:36 +0100
Subject: [PATCH 4/5] maint: avoid unused-but-set-variable, unused-parameter
warnings from GCC 7
GCC-7.2.1 complained about this occur during 'make check'.
* lib/regexprops.c (menu): Remove set-but-unused-variable 'options'.
* lib/test_splitstring.c (main): Avoid unused-parameter warnings
for 'argc' and 'argv'.
---
lib/regexprops.c | 4 ++--
lib/test_splitstring.c | 3 +++
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/regexprops.c b/lib/regexprops.c
index 048315e7..fcbdd5db 100644
--- a/lib/regexprops.c
+++ b/lib/regexprops.c
@@ -478,12 +478,12 @@ ignore (int ix, const unsigned int context)
static void
menu (unsigned int context)
{
- int i, options;
+ int i;
const char *name;
output ("@menu\n", 0);
for (i=0;
- options = get_regex_type_flags (i),
+ get_regex_type_flags (i),
name=get_regex_type_name (i);
++i)
{
diff --git a/lib/test_splitstring.c b/lib/test_splitstring.c
index b01b6b79..0feb089e 100644
--- a/lib/test_splitstring.c
+++ b/lib/test_splitstring.c
@@ -196,6 +196,9 @@ static void test_consecutive_empty (void)
int main (int argc, char *argv[])
{
+ (void) argc; /* pacify -Werror=unused-parameter */
+ (void) argv; /* pacify -Werror=unused-parameter */
+
test_empty ();
test_onefield ();
test_not_colon ();
--
2.14.3
>From c15a51e515d021aa68c1ead211f9a59419e4bdbe Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Wed, 8 Nov 2017 01:13:31 +0100
Subject: [PATCH 5/5] maint: document the https change in NEWS
* NEWS (Documentation Changes): Mention the switch from http to https
done in commit 2cb10332.
---
NEWS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/NEWS b/NEWS
index 3e0b915e..cfd18b88 100644
--- a/NEWS
+++ b/NEWS
@@ -48,6 +48,8 @@ interactive application. Added for compatibility with BSD.
** Documentation Changes
+Prefer https:// over http:// links where possible, e.g. for '*.gnu.org' servers.
+
Some minor documentation improvements are listed in "Bug Fixes" below.
** Bug Fixes
--
2.14.3