diff --git a/ChangeLog b/ChangeLog index 1f73281c..ea696055 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2008-03-10 Jim Meyering + + 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 Fix (documentation) bug #20873, / and . in file names for -path. diff --git a/find/defs.h b/find/defs.h index d076aa9b..1708d839 100644 --- a/find/defs.h +++ b/find/defs.h @@ -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); diff --git a/find/ftsfind.c b/find/ftsfind.c index 7f882a66..543b80f0 100644 --- a/find/ftsfind.c +++ b/find/ftsfind.c @@ -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); } } } diff --git a/find/parser.c b/find/parser.c index b7ef88f8..246c4cee 100644 --- a/find/parser.c +++ b/find/parser.c @@ -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); } diff --git a/find/pred.c b/find/pred.c index 75e6774a..d758276f 100644 --- a/find/pred.c +++ b/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); } diff --git a/find/util.c b/find/util.c index 40f36d5a..a06eada7 100644 --- a/find/util.c +++ b/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; } } diff --git a/lib/buildcmd.c b/lib/buildcmd.c index bda2492a..6c6a9c44 100644 --- a/lib/buildcmd.c +++ b/lib/buildcmd.c @@ -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; } diff --git a/lib/buildcmd.h b/lib/buildcmd.h index cbd3f84d..e295852e 100644 --- a/lib/buildcmd.h +++ b/lib/buildcmd.h @@ -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 diff --git a/lib/dircallback.c b/lib/dircallback.c index b551c021..29fb276c 100644 --- a/lib/dircallback.c +++ b/lib/dircallback.c @@ -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); diff --git a/lib/dircallback.h b/lib/dircallback.h index abce104f..41ea2825 100644 --- a/lib/dircallback.h +++ b/lib/dircallback.h @@ -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 diff --git a/lib/listfile.c b/lib/listfile.c index 9b4ed20d..ca9eae25 100644 --- a/lib/listfile.c +++ b/lib/listfile.c @@ -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; diff --git a/lib/listfile.h b/lib/listfile.h index d894d234..0f162fe7 100644 --- a/lib/listfile.h +++ b/lib/listfile.h @@ -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);