findutils/find-Fix-a-number-of-compiler-warnings-mostly-const-.patch
2019-09-30 10:38:48 -04:00

218 lines
7.1 KiB
Diff

From e7b976a7e8b4023bd9ac2493341320f88aa9189c Mon Sep 17 00:00:00 2001
From: James Youngman <jay@gnu.org>
Date: Sat, 2 Jan 2016 13:04:24 +0000
Subject: [PATCH 023/224] find: Fix a number of compiler warnings (mostly
const-correctness).
* find/find.c (get_current_dirfd): remove unused function.
(process_dir): make parameters const: parent, pathname, name.
(process_path): make parameters const: parent, pathname, name.
(at_top): Modify the function pointer parameter accordingly.
* find/ftsfind.c (get_fts_info_name): Now returns const char*, not
char*.
(show_outstanding_execdirs): Fix type of loop variable to avoid
possible overflow.
(process_all_startpoints): Avoid compiler warning about overflow
of int loop variable.
* find/defs.h (struct predicate): Make p_name const.
(struct state): make rel_pathname const.
* find/exec.c (impl_pred_exec): Make prefix const.
(launch): Silence compiler warning about unused parameter argc.
* find/pred.c (blank_rtrim): Make str parameter const, since we do
not modify it.
* find/util.c (debug_option_assoc): name and docstring are now
const qualified.
(show_valid_debug_options): Avoid signed/unsigned comparison by
using a size_t array index.
(set_stat_placeholders): Avoid a compiler warning on systems
lacking birth time fields (and on which this function therefore
does nothing).
---
find/defs.h | 3 ++-
find/exec.c | 4 +++-
find/ftsfind.c | 6 ++++--
find/oldfind.c | 28 +++++++++++++---------------
find/util.c | 5 +++--
5 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/find/defs.h b/find/defs.h
index a4647e83..981c5336 100644
--- a/find/defs.h
+++ b/find/defs.h
@@ -633,7 +633,8 @@ struct state
/* The file being operated on, relative to the current directory.
Used for stat, readlink, remove, and opendir. */
- char *rel_pathname;
+ const char *rel_pathname;
+
/* The directory fd to which rel_pathname is relative. This is relevant
* when we're navigating the hierarchy with fts() and using FTS_CWDFD.
*/
diff --git a/find/exec.c b/find/exec.c
index f8bd4389..8d20143f 100644
--- a/find/exec.c
+++ b/find/exec.c
@@ -114,7 +114,7 @@ impl_pred_exec (const char *pathname,
const char *target;
bool result;
const bool local = is_exec_in_local_dir (pred_ptr->pred_func);
- char *prefix;
+ const char *prefix;
size_t pfxlen;
(void) stat_buf;
@@ -292,6 +292,8 @@ launch (struct buildcmd_control *ctl, void *usercontext, int argc, char **argv)
static int first_time = 1;
struct exec_val *execp = usercontext;
+ (void) argc; /* silence compiler warning */
+
/* Make sure output of command doesn't get mixed with find output. */
fflush (stdout);
fflush (stderr);
diff --git a/find/ftsfind.c b/find/ftsfind.c
index cbb46de9..5128e574 100644
--- a/find/ftsfind.c
+++ b/find/ftsfind.c
@@ -152,7 +152,7 @@ static void init_mounted_dev_list (void);
#define STRINGIFY(X) #X
#define HANDLECASE(N) case N: return #N;
-static char *
+static const char *
get_fts_info_name (int info)
{
static char buf[10];
@@ -615,16 +615,18 @@ static bool
process_all_startpoints (int argc, char *argv[])
{
int i;
+ bool empty = true;
/* figure out how many start points there are */
for (i = 0; i < argc && !looks_like_expression (argv[i], true); i++)
{
+ empty = false;
state.starting_path_length = strlen (argv[i]); /* TODO: is this redundant? */
if (!find (argv[i]))
return false;
}
- if (i == 0)
+ if (empty)
{
/*
* We use a temporary variable here because some actions modify
diff --git a/find/oldfind.c b/find/oldfind.c
index 986e7b4c..cd235c06 100644
--- a/find/oldfind.c
+++ b/find/oldfind.c
@@ -95,11 +95,9 @@ enum
static void init_mounted_dev_list (int mandatory);
#endif
-static void process_top_path (char *pathname, mode_t mode, ino_t inum);
-static int process_path (char *pathname, char *name, bool leaf, char *parent, mode_t type, ino_t inum);
-static void process_dir (char *pathname, char *name, int pathlen, const struct stat *statp, char *parent);
-
-
+static void process_top_path (const char *pathname, mode_t mode, ino_t inum);
+static int process_path (const char *pathname, const char *name, bool leaf, const char *parent, mode_t type, ino_t inum);
+static void process_dir (const char *pathname, const char *name, int pathlen, const struct stat *statp, const char *parent);
/* A file descriptor open to the initial working directory.
Doing it this way allows us to work when the i.w.d. has
@@ -981,12 +979,12 @@ chdir_back (void)
* specified directory is a child of "." or is the root directory.
*/
static void
-at_top (char *pathname,
+at_top (const char *pathname,
mode_t mode,
ino_t inum,
struct stat *pstat,
- void (*action)(char *pathname,
- char *basename,
+ void (*action)(const char *pathname,
+ const char *basename,
int mode,
ino_t inum,
struct stat *pstat))
@@ -1056,8 +1054,8 @@ at_top (char *pathname,
}
-static void do_process_top_dir (char *pathname,
- char *base,
+static void do_process_top_dir (const char *pathname,
+ const char *base,
int mode,
ino_t inum,
struct stat *pstat)
@@ -1069,8 +1067,8 @@ static void do_process_top_dir (char *pathname,
}
static void
-do_process_predicate (char *pathname,
- char *base,
+do_process_predicate (const char *pathname,
+ const char *base,
int mode,
ino_t inum,
struct stat *pstat)
@@ -1095,7 +1093,7 @@ do_process_predicate (char *pathname,
and move to that.
*/
static void
-process_top_path (char *pathname, mode_t mode, ino_t inum)
+process_top_path (const char *pathname, mode_t mode, ino_t inum)
{
at_top (pathname, mode, inum, NULL, do_process_top_dir);
}
@@ -1181,7 +1179,7 @@ issue_loop_warning (const char *name, const char *pathname, int level)
Return nonzero iff PATHNAME is a directory. */
static int
-process_path (char *pathname, char *name, bool leaf, char *parent,
+process_path (const char *pathname, const char *name, bool leaf, const char *parent,
mode_t mode, ino_t inum)
{
struct stat stat_buf;
@@ -1307,7 +1305,7 @@ process_path (char *pathname, char *name, bool leaf, char *parent,
starting directory. */
static void
-process_dir (char *pathname, char *name, int pathlen, const struct stat *statp, char *parent)
+process_dir (const char *pathname, const char *name, int pathlen, const struct stat *statp, const char *parent)
{
int subdirs_left; /* Number of unexamined subdirs in PATHNAME. */
bool subdirs_unreliable; /* if true, cannot use dir link count as subdir limif (if false, it may STILL be unreliable) */
diff --git a/find/util.c b/find/util.c
index cf7965fc..1b4a07af 100644
--- a/find/util.c
+++ b/find/util.c
@@ -55,9 +55,9 @@
struct debug_option_assoc
{
- char *name;
+ const char *name;
int val;
- char *docstring;
+ const char *docstring;
};
static struct debug_option_assoc debugassoc[] =
{
@@ -176,6 +176,7 @@ usage (FILE *fp, int status, char *msg)
void
set_stat_placeholders (struct stat *p)
{
+ (void) p; /* silence warning for systems lacking these fields. */
#if HAVE_STRUCT_STAT_ST_BIRTHTIME
p->st_birthtime = 0;
#endif
--
2.19.1