mirror of
https://https.git.savannah.gnu.org/git/findutils.git
synced 2026-01-27 01:44:23 +00:00
Applied patch from Jim Meyering; rename dirfd to dir_fd to avoid shadowing problem
This commit is contained in:
parent
f2d3ffa59e
commit
447dee1b43
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
2008-03-10 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
Rename local and member "dirfd" to avoid shadowing the function.
|
||||
This avoids many warnings from gcc -Wshadow:
|
||||
* lib/buildcmd.h (struct buildcmd_state) [dir_fd]: Rename member
|
||||
from dirfd.
|
||||
* find/defs.h (struct exec_val) [dir_fd]: Likewise.
|
||||
Rename parameter in prototype.
|
||||
* find/ftsfind.c (inside_dir): Rename parameter: s/dirfd/dir_fd/
|
||||
* find/parser.c (new_insert_exec_ok, insert_exec_ok): Likewise.
|
||||
* find/pred.c (new_impl_pred_exec, prep_child_for_exec, launch):
|
||||
s/dirfd/dir_fd/
|
||||
* find/util.c (do_complete_pending_execdirs): Likewise.
|
||||
(complete_pending_execdirs): Likewise
|
||||
* lib/buildcmd.c (bc_init_state, bc_clear_args): Likewise.
|
||||
* lib/dircallback.c (run_in_dir): Likewise.
|
||||
* lib/dircallback.h (DIRCALLBACK_H): Likewise.
|
||||
* lib/listfile.c (list_file, get_link_name_at): Likewise.
|
||||
* lib/listfile.h (LISTFILE_H): Likewise.
|
||||
|
||||
2008-03-09 James Youngman <jay@gnu.org>
|
||||
|
||||
Fix (documentation) bug #20873, / and . in file names for -path.
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
/* defs.h -- data types and declarations.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2004, 2005,
|
||||
2006, 2007, 2008 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
|
||||
@ -196,7 +197,7 @@ struct exec_val
|
||||
int num_args;
|
||||
boolean use_current_dir; /* If nonzero, don't chdir to start dir */
|
||||
boolean close_stdin; /* If true, close stdin in the child. */
|
||||
int dirfd; /* The directory to do the exec in. */
|
||||
int dir_fd; /* The directory to do the exec in. */
|
||||
};
|
||||
|
||||
/* The format string for a -printf or -fprintf is chopped into one or
|
||||
@ -489,7 +490,7 @@ struct predicate *insert_primary_withpred PARAMS((const struct parser_table *ent
|
||||
void usage PARAMS((FILE *fp, int status, char *msg));
|
||||
extern boolean check_nofollow(void);
|
||||
void complete_pending_execs(struct predicate *p);
|
||||
void complete_pending_execdirs(int dirfd); /* Passing dirfd is an unpleasant CodeSmell. */
|
||||
void complete_pending_execdirs(int dir_fd); /* Passing dir_fd is an unpleasant CodeSmell. */
|
||||
const char *safely_quote_err_filename (int n, char const *arg);
|
||||
void fatal_file_error(const char *name) ATTRIBUTE_NORETURN;
|
||||
void nonfatal_file_error(const char *name);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/* find -- search for files in a directory hierarchy (fts version)
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000,
|
||||
2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2003, 2004, 2005, 2006,
|
||||
2007, 2008 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
|
||||
@ -133,34 +133,34 @@ static void left_dir(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Signal that we are now inside a directory pointed to by dirfd.
|
||||
* Signal that we are now inside a directory pointed to by dir_fd.
|
||||
* The caller can't tell if this is the first time this happens, so
|
||||
* we have to be careful not to call dup() more than once
|
||||
*/
|
||||
static void inside_dir(int dirfd)
|
||||
static void inside_dir(int dir_fd)
|
||||
{
|
||||
if (ftsoptions & FTS_CWDFD)
|
||||
{
|
||||
assert (dirfd == AT_FDCWD || dirfd >= 0);
|
||||
assert (dir_fd == AT_FDCWD || dir_fd >= 0);
|
||||
|
||||
state.cwd_dir_fd = dirfd;
|
||||
state.cwd_dir_fd = dir_fd;
|
||||
if (curr_fd < 0)
|
||||
{
|
||||
if (AT_FDCWD == dirfd)
|
||||
if (AT_FDCWD == dir_fd)
|
||||
{
|
||||
curr_fd = AT_FDCWD;
|
||||
}
|
||||
else if (dirfd >= 0)
|
||||
else if (dir_fd >= 0)
|
||||
{
|
||||
curr_fd = dup(dirfd);
|
||||
curr_fd = dup(dir_fd);
|
||||
set_close_on_exec(curr_fd);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* curr_fd is invalid, but dirfd is also invalid.
|
||||
/* curr_fd is invalid, but dir_fd is also invalid.
|
||||
* This should not have happened.
|
||||
*/
|
||||
assert (curr_fd >= 0 || dirfd >= 0);
|
||||
assert (curr_fd >= 0 || dir_fd >= 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/* parser.c -- convert the command line args into an expression tree.
|
||||
Copyright (C) 1990, 1991, 1992, 1993, 1994, 2000, 2001, 2003,
|
||||
2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1991, 1992, 1993, 1994, 2000, 2001, 2003,
|
||||
2004, 2005, 2006, 2007, 2008 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
|
||||
@ -178,7 +178,7 @@ static struct segment **make_segment PARAMS((struct segment **segment,
|
||||
struct predicate *pred));
|
||||
static boolean insert_exec_ok PARAMS((const char *action,
|
||||
const struct parser_table *entry,
|
||||
int dirfd,
|
||||
int dir_fd,
|
||||
char *argv[],
|
||||
int *arg_ptr));
|
||||
static boolean get_comp_type PARAMS((const char **str,
|
||||
@ -3001,7 +3001,7 @@ check_path_safety(const char *action, char **argv)
|
||||
static boolean
|
||||
new_insert_exec_ok (const char *action,
|
||||
const struct parser_table *entry,
|
||||
int dirfd,
|
||||
int dir_fd,
|
||||
char **argv,
|
||||
int *arg_ptr)
|
||||
{
|
||||
@ -3205,11 +3205,11 @@ new_insert_exec_ok (const char *action,
|
||||
static boolean
|
||||
insert_exec_ok (const char *action,
|
||||
const struct parser_table *entry,
|
||||
int dirfd,
|
||||
int dir_fd,
|
||||
char **argv,
|
||||
int *arg_ptr)
|
||||
{
|
||||
return new_insert_exec_ok(action, entry, dirfd, argv, arg_ptr);
|
||||
return new_insert_exec_ok(action, entry, dir_fd, argv, arg_ptr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
18
find/pred.c
18
find/pred.c
@ -1,5 +1,5 @@
|
||||
/* pred.c -- execute the expression tree.
|
||||
Copyright (C) 1990, 1991, 1992, 1993, 1994, 2000, 2003,
|
||||
Copyright (C) 1990, 1991, 1992, 1993, 1994, 2000, 2003,
|
||||
2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
@ -499,7 +499,7 @@ pred_empty (const char *pathname, struct stat *stat_buf, struct predicate *pred_
|
||||
}
|
||||
|
||||
static boolean
|
||||
new_impl_pred_exec (int dirfd, const char *pathname,
|
||||
new_impl_pred_exec (int dir_fd, const char *pathname,
|
||||
struct stat *stat_buf,
|
||||
struct predicate *pred_ptr,
|
||||
const char *prefix, size_t pfxlen)
|
||||
@ -508,7 +508,7 @@ new_impl_pred_exec (int dirfd, const char *pathname,
|
||||
size_t len = strlen(pathname);
|
||||
|
||||
(void) stat_buf;
|
||||
execp->dirfd = dirfd;
|
||||
execp->dir_fd = dir_fd;
|
||||
if (execp->multiple)
|
||||
{
|
||||
/* Push the argument onto the current list.
|
||||
@ -1862,7 +1862,7 @@ pred_xtype (const char *pathname, struct stat *stat_buf, struct predicate *pred_
|
||||
|
||||
|
||||
static boolean
|
||||
prep_child_for_exec (boolean close_stdin, int dirfd)
|
||||
prep_child_for_exec (boolean close_stdin, int dir_fd)
|
||||
{
|
||||
boolean ok = true;
|
||||
if (close_stdin)
|
||||
@ -1898,10 +1898,10 @@ prep_child_for_exec (boolean close_stdin, int dirfd)
|
||||
* announcement of a call to stat() anyway, as we're about to exec
|
||||
* something.
|
||||
*/
|
||||
if (dirfd != AT_FDCWD)
|
||||
if (dir_fd != AT_FDCWD)
|
||||
{
|
||||
assert (dirfd >= 0);
|
||||
if (0 != fchdir(dirfd))
|
||||
assert (dir_fd >= 0);
|
||||
if (0 != fchdir(dir_fd))
|
||||
{
|
||||
/* If we cannot execute our command in the correct directory,
|
||||
* we should not execute it at all.
|
||||
@ -1927,7 +1927,7 @@ launch (const struct buildcmd_control *ctl,
|
||||
if (!execp->use_current_dir)
|
||||
{
|
||||
assert (starting_desc >= 0);
|
||||
assert (execp->dirfd == starting_desc);
|
||||
assert (execp->dir_fd == starting_desc);
|
||||
}
|
||||
|
||||
|
||||
@ -1952,7 +1952,7 @@ launch (const struct buildcmd_control *ctl,
|
||||
{
|
||||
/* We are the child. */
|
||||
assert (starting_desc >= 0);
|
||||
if (!prep_child_for_exec(execp->close_stdin, execp->dirfd))
|
||||
if (!prep_child_for_exec(execp->close_stdin, execp->dir_fd))
|
||||
{
|
||||
_exit(1);
|
||||
}
|
||||
|
||||
13
find/util.c
13
find/util.c
@ -1,5 +1,6 @@
|
||||
/* util.c -- functions for initializing new tree elements, and other things.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2003, 2004, 2005,
|
||||
2008 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
|
||||
@ -288,14 +289,14 @@ check_nofollow(void)
|
||||
* have no effect if there are no arguments waiting).
|
||||
*/
|
||||
static void
|
||||
do_complete_pending_execdirs(struct predicate *p, int dirfd)
|
||||
do_complete_pending_execdirs(struct predicate *p, int dir_fd)
|
||||
{
|
||||
if (NULL == p)
|
||||
return;
|
||||
|
||||
assert (state.execdirs_outstanding);
|
||||
|
||||
do_complete_pending_execdirs(p->pred_left, dirfd);
|
||||
do_complete_pending_execdirs(p->pred_left, dir_fd);
|
||||
|
||||
if (pred_is(p, pred_execdir) || pred_is(p, pred_okdir))
|
||||
{
|
||||
@ -315,15 +316,15 @@ do_complete_pending_execdirs(struct predicate *p, int dirfd)
|
||||
}
|
||||
}
|
||||
|
||||
do_complete_pending_execdirs(p->pred_right, dirfd);
|
||||
do_complete_pending_execdirs(p->pred_right, dir_fd);
|
||||
}
|
||||
|
||||
void
|
||||
complete_pending_execdirs(int dirfd)
|
||||
complete_pending_execdirs(int dir_fd)
|
||||
{
|
||||
if (state.execdirs_outstanding)
|
||||
{
|
||||
do_complete_pending_execdirs(get_eval_tree(), dirfd);
|
||||
do_complete_pending_execdirs(get_eval_tree(), dir_fd);
|
||||
state.execdirs_outstanding = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
/* buildcmd.c -- build command lines from a list of arguments.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 91, 92, 93, 94, 2000, 2003, 2005, 2006,
|
||||
2007, 2008 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
|
||||
@ -538,7 +539,7 @@ bc_init_state(const struct buildcmd_control *ctl,
|
||||
|
||||
state->cmd_argv_chars = state->cmd_initial_argv_chars = 0;
|
||||
state->todo = 0;
|
||||
state->dirfd = -1;
|
||||
state->dir_fd = -1;
|
||||
state->usercontext = context;
|
||||
}
|
||||
|
||||
@ -549,5 +550,5 @@ bc_clear_args(const struct buildcmd_control *ctl,
|
||||
state->cmd_argc = ctl->initial_argc;
|
||||
state->cmd_argv_chars = state->cmd_initial_argv_chars;
|
||||
state->todo = 0;
|
||||
state->dirfd = -1;
|
||||
state->dir_fd = -1;
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* buildcmd.[ch] -- build command lines from a stream of arguments
|
||||
Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005, 2008 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
|
||||
@ -47,7 +47,7 @@ struct buildcmd_state
|
||||
int todo;
|
||||
|
||||
/* Directory in which to perform the exec. */
|
||||
int dirfd;
|
||||
int dir_fd;
|
||||
};
|
||||
|
||||
struct buildcmd_control
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* listfile.c -- run a function in a specific directory
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2008 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
|
||||
@ -59,9 +59,9 @@
|
||||
|
||||
|
||||
int
|
||||
run_in_dir (int dirfd, int (*callback)(void*), void *usercontext)
|
||||
run_in_dir (int dir_fd, int (*callback)(void*), void *usercontext)
|
||||
{
|
||||
if (dirfd == AT_FDCWD)
|
||||
if (dir_fd == AT_FDCWD)
|
||||
{
|
||||
return (*callback)(usercontext);
|
||||
}
|
||||
@ -74,7 +74,7 @@ run_in_dir (int dirfd, int (*callback)(void*), void *usercontext)
|
||||
if (save_cwd (&saved_cwd) != 0)
|
||||
openat_save_fail (errno);
|
||||
|
||||
if (fchdir (dirfd) != 0)
|
||||
if (fchdir (dir_fd) != 0)
|
||||
{
|
||||
saved_errno = errno;
|
||||
free_cwd (&saved_cwd);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* listfile.h -- display a long listing of a file
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2008 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
|
||||
@ -19,6 +19,6 @@
|
||||
#if !defined DIRCALLBACK_H
|
||||
# define DIRCALLBACK_H
|
||||
|
||||
int run_in_dir (int dirfd, int (*callback)(void*), void *usercontext);
|
||||
int run_in_dir (int dir_fd, int (*callback)(void*), void *usercontext);
|
||||
|
||||
#endif
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
/* listfile.c -- display a long listing of a file
|
||||
Copyright (C) 1991, 1993, 2000, 2004, 2005, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1993, 2000, 2004, 2005, 2007,
|
||||
2008 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
|
||||
@ -185,7 +186,7 @@ file_blocksize(const struct stat *p)
|
||||
|
||||
void
|
||||
list_file (const char *name,
|
||||
int dirfd,
|
||||
int dir_fd,
|
||||
char *relname,
|
||||
const struct stat *statp,
|
||||
time_t current_time,
|
||||
@ -299,7 +300,7 @@ list_file (const char *name,
|
||||
#ifdef S_ISLNK
|
||||
if (S_ISLNK (statp->st_mode))
|
||||
{
|
||||
char *linkname = get_link_name_at (name, dirfd, relname);
|
||||
char *linkname = get_link_name_at (name, dir_fd, relname);
|
||||
|
||||
if (linkname)
|
||||
{
|
||||
@ -417,13 +418,13 @@ get_link_name_cb(void *context)
|
||||
}
|
||||
|
||||
char *
|
||||
get_link_name_at (const char *name, int dirfd, char *relname)
|
||||
get_link_name_at (const char *name, int dir_fd, char *relname)
|
||||
{
|
||||
struct link_name_args args;
|
||||
args.result = NULL;
|
||||
args.name = name;
|
||||
args.relname = relname;
|
||||
if (0 == run_in_dir(dirfd, get_link_name_cb, &args))
|
||||
if (0 == run_in_dir(dir_fd, get_link_name_cb, &args))
|
||||
return args.result;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* listfile.h -- display a long listing of a file
|
||||
Copyright (C) 1991, 1993, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 1993, 2000, 2008 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
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
void list_file (const char *name, int dir_fd, char *relname, const struct stat *statp, time_t current_time, int output_block_size, int literal_control_chars, FILE *stream);
|
||||
|
||||
char * get_link_name_at (const char *name, int dirfd, char *relname);
|
||||
char * get_link_name_at (const char *name, int dir_fd, char *relname);
|
||||
|
||||
size_t file_blocksize(const struct stat *p);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user