+2020-12-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 <bruno@clisp.org>
spawn-pipe: Use posix_spawn by default on native Windows.
#include <unistd.h>
#include <eloop-threshold.h>
-#include <idx.h>
#include <filename.h>
+#include <idx.h>
#include <scratch_buffer.h>
#ifdef _LIBC
# 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
# 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
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. */
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);
#include <sys/stat.h>
#include <unistd.h>
+#include <filename.h>
+#include <idx.h>
#include <scratch_buffer.h>
#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
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. */
dest = mempcpy (dest, start, startlen);
*dest = '\0';
- char discard;
char *buf;
ssize_t n = -1;
if (!logical)
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);