diff options
Diffstat (limited to 'meta/recipes-extended/findutils/findutils-4.4.2/02-28824.patch')
-rw-r--r-- | meta/recipes-extended/findutils/findutils-4.4.2/02-28824.patch | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/meta/recipes-extended/findutils/findutils-4.4.2/02-28824.patch b/meta/recipes-extended/findutils/findutils-4.4.2/02-28824.patch new file mode 100644 index 0000000000..3469712d90 --- /dev/null +++ b/meta/recipes-extended/findutils/findutils-4.4.2/02-28824.patch @@ -0,0 +1,292 @@ +commit 76ed377d6d3e4a83a00cabd401f751b37ecd1e7b +Author: James Youngman <jay@gnu.org> +Date: Sat Feb 20 13:11:45 2010 +0000 + + Fix Savannah bug# 28824: "-ctime x" yields "missing argument to `-ctime'". + + * find/parser.c (parse_fls): If the argument is invalid, reverse + the change that collect_arg() made to *arg_ptr (that is, don't + consume the argument). + (parse_fprint0): Likewise. + (parse_gid): Likewise. + (parse_group): Likewise. + (parse_inum): Likewise. + (parse_links): Likewise. + (do_parse_xmin): Likewise. + (parse_name): Likewise. + (parse_printf): Likewise. + (parse_uid): Likewise. + (parse_used): Likewise. + (parse_time): Likewise. + + Signed-off-by: James Youngman <jay@gnu.org> + +diff --git a/ChangeLog b/ChangeLog +index d0ce1fe..13539a4 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,0 +1,19 @@ ++2010-02-20 James Youngman <jay@gnu.org> ++ ++ Fix Savannah bug# 28824: "-ctime x" yields "missing argument to ++ `-ctime'". ++ * find/parser.c (parse_fls): If the argument is invalid, reverse ++ the change that collect_arg() made to *arg_ptr (that is, don't ++ consume the argument). ++ (parse_fprint0): Likewise. ++ (parse_gid): Likewise. ++ (parse_group): Likewise. ++ (parse_inum): Likewise. ++ (parse_links): Likewise. ++ (do_parse_xmin): Likewise. ++ (parse_name): Likewise. ++ (parse_printf): Likewise. ++ (parse_uid): Likewise. ++ (parse_used): Likewise. ++ (parse_time): Likewise. ++ +diff --git a/NEWS b/NEWS +index 5394311..4e910df 100644 +--- a/NEWS ++++ b/NEWS +@@ -4,5 +4,8 @@ GNU findutils NEWS - User visible changes. -*- outline -*- (allout) + + ** Bug Fixes + ++#28824: Corrected error message for "-ctime x". ++ Likewise for -gid, -inum, -links, -mmin, -cmin, -amin, ++ -uid, -used, -atime, -mtime, -ctime. + #26537: find -prune now makes sure it has valid stat() information. + +diff --git a/find/parser.c b/find/parser.c +index 2e6b989..08758ee 100644 +--- a/find/parser.c ++++ b/find/parser.c +@@ -886,8 +886,14 @@ static boolean + parse_fls (const struct parser_table* entry, char **argv, int *arg_ptr) + { + const char *filename; +- return collect_arg(argv, arg_ptr, &filename) +- && insert_fls(entry, filename); ++ if (collect_arg(argv, arg_ptr, &filename)) ++ { ++ if (insert_fls(entry, filename)) ++ return true; ++ else ++ --*arg_ptr; /* don't consume the invalid arg. */ ++ } ++ return false; + } + + static boolean +@@ -937,9 +943,13 @@ parse_fprint0 (const struct parser_table* entry, char **argv, int *arg_ptr) + { + const char *filename; + if (collect_arg(argv, arg_ptr, &filename)) +- return insert_fprint(entry, filename); +- else +- return false; ++ { ++ if (insert_fprint(entry, filename)) ++ return true; ++ else ++ --*arg_ptr; /* don't consume the bad arg. */ ++ } ++ return false; + } + + static float estimate_fstype_success_rate(const char *fsname) +@@ -993,6 +1003,7 @@ parse_gid (const struct parser_table* entry, char **argv, int *arg_ptr) + } + else + { ++ --*arg_ptr; /* don't consume the invalid argument. */ + return false; + } + } +@@ -1049,6 +1060,7 @@ static boolean + parse_group (const struct parser_table* entry, char **argv, int *arg_ptr) + { + const char *groupname; ++ const int saved_argc = *arg_ptr; + + if (collect_arg(argv, arg_ptr, &groupname)) + { +@@ -1077,6 +1089,7 @@ parse_group (const struct parser_table* entry, char **argv, int *arg_ptr) + "because it has the unexpected suffix %s"), + quotearg_n_style(0, options.err_quoting_style, groupname), + quotearg_n_style(1, options.err_quoting_style, groupname+gid_len)); ++ *arg_ptr = saved_argc; /* don't consume the invalid argument. */ + return false; + } + } +@@ -1092,6 +1105,7 @@ parse_group (const struct parser_table* entry, char **argv, int *arg_ptr) + { + error(1, 0, _("argument to -group is empty, but should be a group name")); + } ++ *arg_ptr = saved_argc; /* don't consume the invalid argument. */ + return false; + } + } +@@ -1256,6 +1270,7 @@ parse_inum (const struct parser_table* entry, char **argv, int *arg_ptr) + } + else + { ++ --*arg_ptr; /* don't consume the invalid argument. */ + return false; + } + } +@@ -1310,6 +1325,7 @@ parse_links (const struct parser_table* entry, char **argv, int *arg_ptr) + } + else + { ++ --*arg_ptr; /* don't consume the invalid argument. */ + return false; + } + } +@@ -1358,6 +1374,7 @@ insert_depthspec(const struct parser_table* entry, char **argv, int *arg_ptr, + error(1, 0, _("Expected a positive decimal integer argument to %s, but got %s"), + predicate, + quotearg_n_style(0, options.err_quoting_style, depthstr)); ++ /* NOTREACHED */ + return false; + } + /* missing argument */ +@@ -1385,6 +1402,7 @@ do_parse_xmin (const struct parser_table* entry, + enum xval xv) + { + const char *minutes; ++ const int saved_argc = *arg_ptr; + + if (collect_arg(argv, arg_ptr, &minutes)) + { +@@ -1401,6 +1419,11 @@ do_parse_xmin (const struct parser_table* entry, + our_pred->est_success_rate = estimate_timestamp_success_rate(tval.ts.tv_sec); + return true; + } ++ else ++ { ++ /* Don't consume the invalid argument. */ ++ *arg_ptr = saved_argc; ++ } + } + return false; + } +@@ -1427,6 +1450,8 @@ static boolean + parse_name (const struct parser_table* entry, char **argv, int *arg_ptr) + { + const char *name; ++ const int saved_argc = *arg_ptr; ++ + if (collect_arg(argv, arg_ptr, &name)) + { + fnmatch_sanitycheck(); +@@ -1438,6 +1463,10 @@ parse_name (const struct parser_table* entry, char **argv, int *arg_ptr) + our_pred->est_success_rate = estimate_pattern_match_rate(name, 0); + return true; + } ++ else ++ { ++ *arg_ptr = saved_argc; /* don't consume the invalid argument. */ ++ } + } + return false; + } +@@ -1954,11 +1983,21 @@ static boolean + parse_printf (const struct parser_table* entry, char **argv, int *arg_ptr) + { + const char *format; ++ const int saved_argc = *arg_ptr; ++ + if (collect_arg(argv, arg_ptr, &format)) + { + struct format_val fmt; + open_stdout(&fmt); +- return insert_fprintf (&fmt, entry, pred_fprintf, format); ++ if (insert_fprintf (&fmt, entry, pred_fprintf, format)) ++ { ++ return true; ++ } ++ else ++ { ++ *arg_ptr = saved_argc; /* don't consume the invalid argument. */ ++ return false; ++ } + } + return false; + } +@@ -1967,15 +2006,21 @@ static boolean + parse_fprintf (const struct parser_table* entry, char **argv, int *arg_ptr) + { + const char *format, *filename; ++ int saved_argc = *arg_ptr; ++ + if (collect_arg(argv, arg_ptr, &filename)) + { + if (collect_arg(argv, arg_ptr, &format)) + { + struct format_val fmt; + open_output_file (filename, &fmt); +- return insert_fprintf (&fmt, entry, pred_fprintf, format); ++ saved_argc = *arg_ptr; ++ ++ if (insert_fprintf (&fmt, entry, pred_fprintf, format)) ++ return true; + } + } ++ *arg_ptr = saved_argc; /* don't consume the invalid argument. */ + return false; + } + +@@ -2405,6 +2450,7 @@ parse_uid (const struct parser_table* entry, char **argv, int *arg_ptr) + } + else + { ++ --*arg_ptr; /* don't consume the invalid argument. */ + return false; + } + } +@@ -2431,6 +2477,7 @@ parse_used (const struct parser_table* entry, char **argv, int *arg_ptr) + else + { + error(1, 0, _("Invalid argument %s to -used"), offset_str); ++ /*NOTREACHED*/ + return false; + } + } +@@ -2610,6 +2657,7 @@ insert_type (char **argv, int *arg_ptr, + if (strlen(typeletter) != 1u) + { + error(1, 0, _("Arguments to -type should contain only one letter")); ++ /*NOTREACHED*/ + return false; + } + +@@ -2657,6 +2705,7 @@ insert_type (char **argv, int *arg_ptr, + #endif + default: /* None of the above ... nuke 'em. */ + error(1, 0, _("Unknown argument to -type: %c"), (*typeletter)); ++ /*NOTREACHED*/ + return false; + } + our_pred = insert_primary_withpred (entry, which_pred, typeletter); +@@ -3349,6 +3398,7 @@ parse_time (const struct parser_table* entry, char *argv[], int *arg_ptr) + const char *errmsg = "arithmetic overflow while converting %s " + "days to a number of seconds"; + struct timespec origin; ++ const int saved_argc = *arg_ptr; + + if (!collect_arg(argv, arg_ptr, &timearg)) + return false; +@@ -3381,7 +3431,10 @@ parse_time (const struct parser_table* entry, char *argv[], int *arg_ptr) + timearg = orig_timearg; + + if (!get_relative_timestamp(timearg, &tval, origin, DAYSECS, errmsg)) +- return false; ++ { ++ *arg_ptr = saved_argc; /* don't consume the invalid argument */ ++ return false; ++ } + + our_pred = insert_primary (entry, orig_timearg); + our_pred->args.reftime = tval; |