From abc2b3fe5af97e971f10ebdbeee174f6d87f1fe6 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 24 Dec 2020 21:33:18 -0800 Subject: [PATCH] canonicalize, canonicalize-lgpl: remove lint Pacify GCC. Some of these problems were reported by Bruno Haible in: https://lists.gnu.org/r/bug-gnulib/2020-12/msg00217.html * lib/canonicalize-lgpl.c, lib/canonicalize.c: Sort shared include directives, for consistency. (IF_LINT): New macro. (suffix_requires_dir_check): Mark with _GL_ATTRIBUTE_PURE. * lib/canonicalize-lgpl.c (GCC_LINT, _GL_ATTRIBUTE_PURE) [_LIBC]: New macros. (realpath_stk): Suppress bogus -Wmaybe-uninitialized warning. * lib/canonicalize.c (canonicalize_filename_mode_stk): Omit unused local. Suppress bogus -Wmaybe-uninitialized warning. --- ChangeLog | 15 +++++++++++++++ lib/canonicalize-lgpl.c | 15 ++++++++++++--- lib/canonicalize.c | 16 +++++++++++----- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8f27b286e..dff97afe4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2020-12-24 Paul Eggert + + canonicalize, canonicalize-lgpl: remove lint + Pacify GCC. Some of these problems were reported by Bruno Haible in: + https://lists.gnu.org/r/bug-gnulib/2020-12/msg00217.html + * lib/canonicalize-lgpl.c, lib/canonicalize.c: + Sort shared include directives, for consistency. + (IF_LINT): New macro. + (suffix_requires_dir_check): Mark with _GL_ATTRIBUTE_PURE. + * lib/canonicalize-lgpl.c (GCC_LINT, _GL_ATTRIBUTE_PURE) [_LIBC]: + New macros. + (realpath_stk): Suppress bogus -Wmaybe-uninitialized warning. + * lib/canonicalize.c (canonicalize_filename_mode_stk): + Omit unused local. Suppress bogus -Wmaybe-uninitialized warning. + 2020-12-24 Bruno Haible spawn-pipe: Use posix_spawn by default on native Windows. diff --git a/lib/canonicalize-lgpl.c b/lib/canonicalize-lgpl.c index 8c8f98abc..68b6fdf6e 100644 --- a/lib/canonicalize-lgpl.c +++ b/lib/canonicalize-lgpl.c @@ -38,8 +38,8 @@ #include #include -#include #include +#include #include #ifdef _LIBC @@ -50,6 +50,8 @@ # else # define FACCESSAT_NEVER_EOVERFLOWS true # endif +# define GCC_LINT 1 +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define __canonicalize_file_name canonicalize_file_name # define __realpath realpath @@ -82,6 +84,13 @@ # define __stat stat #endif +/* Suppress bogus GCC -Wmaybe-uninitialized warnings. */ +#if defined GCC_LINT || defined lint +# define IF_LINT(Code) Code +#else +# define IF_LINT(Code) /* empty */ +#endif + #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT false #endif @@ -114,7 +123,7 @@ file_accessible (char const *file) component within END. END must either be empty, or start with a slash. */ -static bool +static bool _GL_ATTRIBUTE_PURE suffix_requires_dir_check (char const *end) { /* If END does not start with a slash, the suffix is OK. */ @@ -338,7 +347,7 @@ realpath_stk (const char *name, char *resolved, buf[n] = '\0'; char *extra_buf = extra_buffer.data; - idx_t end_idx; + idx_t end_idx IF_LINT (= 0); if (end_in_extra_buffer) end_idx = end - extra_buf; idx_t len = strlen (end); diff --git a/lib/canonicalize.c b/lib/canonicalize.c index 2c88335bf..e8b74d855 100644 --- a/lib/canonicalize.c +++ b/lib/canonicalize.c @@ -27,14 +27,21 @@ #include #include +#include +#include #include #include "attribute.h" #include "file-set.h" -#include "idx.h" #include "hash-triple.h" #include "xalloc.h" -#include "filename.h" + +/* Suppress bogus GCC -Wmaybe-uninitialized warnings. */ +#if defined GCC_LINT || defined lint +# define IF_LINT(Code) Code +#else +# define IF_LINT(Code) /* empty */ +#endif #ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT # define DOUBLE_SLASH_IS_DISTINCT_ROOT false @@ -72,7 +79,7 @@ file_accessible (char const *file) component within END. END must either be empty, or start with a slash. */ -static bool +static bool _GL_ATTRIBUTE_PURE suffix_requires_dir_check (char const *end) { /* If END does not start with a slash, the suffix is OK. */ @@ -334,7 +341,6 @@ canonicalize_filename_mode_stk (const char *name, canonicalize_mode_t can_mode, dest = mempcpy (dest, start, startlen); *dest = '\0'; - char discard; char *buf; ssize_t n = -1; if (!logical) @@ -386,7 +392,7 @@ canonicalize_filename_mode_stk (const char *name, canonicalize_mode_t can_mode, buf[n] = '\0'; char *extra_buf = extra_buffer.data; - idx_t end_idx; + idx_t end_idx IF_LINT (= 0); if (end_in_extra_buffer) end_idx = end - extra_buf; idx_t len = strlen (end); -- 2.27.0