Applied patch from Jim Meyering; rename dirfd to dir_fd to avoid shadowing problem

This commit is contained in:
James Youngman 2008-03-10 09:39:29 +00:00
parent f2d3ffa59e
commit 447dee1b43
12 changed files with 77 additions and 53 deletions

View File

@ -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.

View File

@ -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);

View File

@ -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);
}
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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);