From 913c2b25ba201ccce678637f68872e0552160376 Mon Sep 17 00:00:00 2001 From: Martin Cracauer Date: Wed, 24 May 2000 10:33:20 +0000 Subject: Re-add patch for failglob variable (see previous discussion on -commiters) --- shells/bash/files/patch-ae | 151 ++++++++++++++++++++++++++++++++++++++++++++ shells/bash2/files/patch-ae | 151 ++++++++++++++++++++++++++++++++++++++++++++ shells/bash3/files/patch-ae | 151 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 453 insertions(+) create mode 100644 shells/bash/files/patch-ae create mode 100644 shells/bash2/files/patch-ae create mode 100644 shells/bash3/files/patch-ae diff --git a/shells/bash/files/patch-ae b/shells/bash/files/patch-ae new file mode 100644 index 000000000000..c0ae0bccf270 --- /dev/null +++ b/shells/bash/files/patch-ae @@ -0,0 +1,151 @@ +diff -ru ../work/bash-2.04/builtins/shopt.def ./builtins/shopt.def +--- ../work/bash-2.04/builtins/shopt.def Tue Sep 21 17:20:01 1999 ++++ ./builtins/shopt.def Wed May 24 12:18:31 2000 +@@ -56,7 +56,7 @@ + + #define OPTFMT "%-15s\t%s\n" + +-extern int allow_null_glob_expansion, glob_dot_filenames; ++extern int allow_null_glob_expansion, fail_glob_expansion, glob_dot_filenames; + extern int cdable_vars, mail_warning, source_uses_path; + extern int no_exit_on_failed_exec, print_shift_error; + extern int check_hashed_filenames, promptvars, interactive_comments; +@@ -137,6 +137,7 @@ + #endif + { "nocaseglob", &glob_ignore_case, (Function *)NULL }, + { "nullglob", &allow_null_glob_expansion, (Function *)NULL }, ++ { "failglob", &fail_glob_expansion, (Function *)NULL }, + #if defined (PROGRAMMABLE_COMPLETION) + { "progcomp", &prog_completion_enabled, (Function *)NULL }, + #endif +diff -ru ../work/bash-2.04/doc/bash.1 ./doc/bash.1 +--- ../work/bash-2.04/doc/bash.1 Tue Mar 14 17:37:56 2000 ++++ ./doc/bash.1 Wed May 24 12:17:39 2000 +@@ -2414,6 +2414,10 @@ + .B nullglob + option is set, and no matches are found, + the word is removed. ++If the ++.B failglob ++option is set, and no matches are found, an error message is printed ++and the command is not executed. + If the shell option + .B nocaseglob + is enabled, the match is performed without regard to the case +diff -ru ../work/bash-2.04/doc/bashref.texi ./doc/bashref.texi +--- ../work/bash-2.04/doc/bashref.texi Tue Mar 14 17:38:33 2000 ++++ ./doc/bashref.texi Wed May 24 12:17:39 2000 +@@ -1679,7 +1679,8 @@ + and replaced with an alphabetically sorted list of + file names matching the pattern. If no matching file names are found, + and the shell option @code{nullglob} is disabled, the word is left +-unchanged. ++unchanged. If the @code{failglob} option is set, an error message is ++printed and the commandline is not executed. + If the @code{nullglob} option is set, and no matches are found, the word + is removed. + If the shell option @code{nocaseglob} is enabled, the match is performed +@@ -1692,8 +1693,8 @@ + matched explicitly. + In other cases, the @samp{.} character is not treated specially. + +-See the description of @code{shopt} in @ref{Bash Builtins}, +-for a description of the @code{nocaseglob}, @code{nullglob}, ++See the description of @code{shopt} in @ref{Bash Builtins}, for a ++description of the @code{nocaseglob}, @code{nullglob}, @code{failglob} + and @code{dotglob} options. + + The @code{GLOBIGNORE} +@@ -3319,6 +3320,10 @@ + @item extglob + If set, the extended pattern matching features described above + (@pxref{Pattern Matching}) are enabled. ++ ++@item failglob ++If set, filenames that have globbing characters in them, but don't match ++anything, will cause an error. + + @item histappend + If set, the history list is appended to the file named by the value +Only in ../work/bash-2.04/lib/readline/doc: Makefile +diff -ru ../work/bash-2.04/subst.c ./subst.c +--- ../work/bash-2.04/subst.c Tue Mar 14 16:42:02 2000 ++++ ./subst.c Wed May 24 12:17:39 2000 +@@ -106,6 +106,9 @@ + a null file. */ + int allow_null_glob_expansion; + ++/* Non-zero means to signal an error when globbing fails to match. */ ++int fail_glob_expansion; ++ + /* Variables to keep track of which words in an expanded word list (the + output of expand_word_list_internal) are the result of globbing + expansions. GLOB_ARGV_FLAGS is used by execute_cmd.c. */ +@@ -6018,6 +6021,11 @@ + { + output_list = (WORD_LIST *)list_append (glob_list, output_list); + PREPEND_LIST (tlist, disposables); ++ } ++ else if (fail_glob_expansion != 0) ++ { ++ report_error ("no match: %s", tlist->word->word); ++ jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) + { +diff -ru ../work/bash-2.04/tests/shopt.right ./tests/shopt.right +--- ../work/bash-2.04/tests/shopt.right Tue Sep 21 17:55:58 1999 ++++ ./tests/shopt.right Wed May 24 12:17:23 2000 +@@ -21,6 +21,7 @@ + shopt -u no_empty_cmd_completion + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -s progcomp + shopt -s promptvars + shopt -u restricted_shell +@@ -56,6 +57,7 @@ + shopt -u no_empty_cmd_completion + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -u restricted_shell + shopt -u shift_verbose + shopt -u xpg_echo +@@ -75,6 +77,7 @@ + no_empty_cmd_completion off + nocaseglob off + nullglob off ++failglob off + restricted_shell off + shift_verbose off + xpg_echo off +@@ -198,3 +201,5 @@ + -- + ./shopt.tests: shopt: xyz1: unknown shell option name + ./shopt.tests: shopt: xyz1: unknown option name ++tmp/l1 tmp/l2 tmp/*4 tmp/l3 ++./shopt.tests: no match: tmp/*4 +diff -ru ../work/bash-2.04/tests/shopt.tests ./tests/shopt.tests +--- ../work/bash-2.04/tests/shopt.tests Tue Sep 21 17:49:32 1999 ++++ ./tests/shopt.tests Wed May 24 12:17:39 2000 +@@ -21,6 +21,7 @@ + shopt -u mailwarn + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -s promptvars + shopt -u shift_verbose + shopt -s sourcepath +@@ -92,3 +93,11 @@ + builtin printf -- "--\n" + shopt -p xyz1 + shopt -o -p xyz1 ++ ++mkdir tmp ++touch tmp/l1 tmp/l2 tmp/l3 ++builtin echo tmp/l[12] tmp/*4 tmp/*3 ++shopt -s failglob ++builtin echo tmp/l[12] tmp/*4 tmp/*3 ++rm -r tmp ++shopt -u failglob diff --git a/shells/bash2/files/patch-ae b/shells/bash2/files/patch-ae new file mode 100644 index 000000000000..c0ae0bccf270 --- /dev/null +++ b/shells/bash2/files/patch-ae @@ -0,0 +1,151 @@ +diff -ru ../work/bash-2.04/builtins/shopt.def ./builtins/shopt.def +--- ../work/bash-2.04/builtins/shopt.def Tue Sep 21 17:20:01 1999 ++++ ./builtins/shopt.def Wed May 24 12:18:31 2000 +@@ -56,7 +56,7 @@ + + #define OPTFMT "%-15s\t%s\n" + +-extern int allow_null_glob_expansion, glob_dot_filenames; ++extern int allow_null_glob_expansion, fail_glob_expansion, glob_dot_filenames; + extern int cdable_vars, mail_warning, source_uses_path; + extern int no_exit_on_failed_exec, print_shift_error; + extern int check_hashed_filenames, promptvars, interactive_comments; +@@ -137,6 +137,7 @@ + #endif + { "nocaseglob", &glob_ignore_case, (Function *)NULL }, + { "nullglob", &allow_null_glob_expansion, (Function *)NULL }, ++ { "failglob", &fail_glob_expansion, (Function *)NULL }, + #if defined (PROGRAMMABLE_COMPLETION) + { "progcomp", &prog_completion_enabled, (Function *)NULL }, + #endif +diff -ru ../work/bash-2.04/doc/bash.1 ./doc/bash.1 +--- ../work/bash-2.04/doc/bash.1 Tue Mar 14 17:37:56 2000 ++++ ./doc/bash.1 Wed May 24 12:17:39 2000 +@@ -2414,6 +2414,10 @@ + .B nullglob + option is set, and no matches are found, + the word is removed. ++If the ++.B failglob ++option is set, and no matches are found, an error message is printed ++and the command is not executed. + If the shell option + .B nocaseglob + is enabled, the match is performed without regard to the case +diff -ru ../work/bash-2.04/doc/bashref.texi ./doc/bashref.texi +--- ../work/bash-2.04/doc/bashref.texi Tue Mar 14 17:38:33 2000 ++++ ./doc/bashref.texi Wed May 24 12:17:39 2000 +@@ -1679,7 +1679,8 @@ + and replaced with an alphabetically sorted list of + file names matching the pattern. If no matching file names are found, + and the shell option @code{nullglob} is disabled, the word is left +-unchanged. ++unchanged. If the @code{failglob} option is set, an error message is ++printed and the commandline is not executed. + If the @code{nullglob} option is set, and no matches are found, the word + is removed. + If the shell option @code{nocaseglob} is enabled, the match is performed +@@ -1692,8 +1693,8 @@ + matched explicitly. + In other cases, the @samp{.} character is not treated specially. + +-See the description of @code{shopt} in @ref{Bash Builtins}, +-for a description of the @code{nocaseglob}, @code{nullglob}, ++See the description of @code{shopt} in @ref{Bash Builtins}, for a ++description of the @code{nocaseglob}, @code{nullglob}, @code{failglob} + and @code{dotglob} options. + + The @code{GLOBIGNORE} +@@ -3319,6 +3320,10 @@ + @item extglob + If set, the extended pattern matching features described above + (@pxref{Pattern Matching}) are enabled. ++ ++@item failglob ++If set, filenames that have globbing characters in them, but don't match ++anything, will cause an error. + + @item histappend + If set, the history list is appended to the file named by the value +Only in ../work/bash-2.04/lib/readline/doc: Makefile +diff -ru ../work/bash-2.04/subst.c ./subst.c +--- ../work/bash-2.04/subst.c Tue Mar 14 16:42:02 2000 ++++ ./subst.c Wed May 24 12:17:39 2000 +@@ -106,6 +106,9 @@ + a null file. */ + int allow_null_glob_expansion; + ++/* Non-zero means to signal an error when globbing fails to match. */ ++int fail_glob_expansion; ++ + /* Variables to keep track of which words in an expanded word list (the + output of expand_word_list_internal) are the result of globbing + expansions. GLOB_ARGV_FLAGS is used by execute_cmd.c. */ +@@ -6018,6 +6021,11 @@ + { + output_list = (WORD_LIST *)list_append (glob_list, output_list); + PREPEND_LIST (tlist, disposables); ++ } ++ else if (fail_glob_expansion != 0) ++ { ++ report_error ("no match: %s", tlist->word->word); ++ jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) + { +diff -ru ../work/bash-2.04/tests/shopt.right ./tests/shopt.right +--- ../work/bash-2.04/tests/shopt.right Tue Sep 21 17:55:58 1999 ++++ ./tests/shopt.right Wed May 24 12:17:23 2000 +@@ -21,6 +21,7 @@ + shopt -u no_empty_cmd_completion + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -s progcomp + shopt -s promptvars + shopt -u restricted_shell +@@ -56,6 +57,7 @@ + shopt -u no_empty_cmd_completion + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -u restricted_shell + shopt -u shift_verbose + shopt -u xpg_echo +@@ -75,6 +77,7 @@ + no_empty_cmd_completion off + nocaseglob off + nullglob off ++failglob off + restricted_shell off + shift_verbose off + xpg_echo off +@@ -198,3 +201,5 @@ + -- + ./shopt.tests: shopt: xyz1: unknown shell option name + ./shopt.tests: shopt: xyz1: unknown option name ++tmp/l1 tmp/l2 tmp/*4 tmp/l3 ++./shopt.tests: no match: tmp/*4 +diff -ru ../work/bash-2.04/tests/shopt.tests ./tests/shopt.tests +--- ../work/bash-2.04/tests/shopt.tests Tue Sep 21 17:49:32 1999 ++++ ./tests/shopt.tests Wed May 24 12:17:39 2000 +@@ -21,6 +21,7 @@ + shopt -u mailwarn + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -s promptvars + shopt -u shift_verbose + shopt -s sourcepath +@@ -92,3 +93,11 @@ + builtin printf -- "--\n" + shopt -p xyz1 + shopt -o -p xyz1 ++ ++mkdir tmp ++touch tmp/l1 tmp/l2 tmp/l3 ++builtin echo tmp/l[12] tmp/*4 tmp/*3 ++shopt -s failglob ++builtin echo tmp/l[12] tmp/*4 tmp/*3 ++rm -r tmp ++shopt -u failglob diff --git a/shells/bash3/files/patch-ae b/shells/bash3/files/patch-ae new file mode 100644 index 000000000000..c0ae0bccf270 --- /dev/null +++ b/shells/bash3/files/patch-ae @@ -0,0 +1,151 @@ +diff -ru ../work/bash-2.04/builtins/shopt.def ./builtins/shopt.def +--- ../work/bash-2.04/builtins/shopt.def Tue Sep 21 17:20:01 1999 ++++ ./builtins/shopt.def Wed May 24 12:18:31 2000 +@@ -56,7 +56,7 @@ + + #define OPTFMT "%-15s\t%s\n" + +-extern int allow_null_glob_expansion, glob_dot_filenames; ++extern int allow_null_glob_expansion, fail_glob_expansion, glob_dot_filenames; + extern int cdable_vars, mail_warning, source_uses_path; + extern int no_exit_on_failed_exec, print_shift_error; + extern int check_hashed_filenames, promptvars, interactive_comments; +@@ -137,6 +137,7 @@ + #endif + { "nocaseglob", &glob_ignore_case, (Function *)NULL }, + { "nullglob", &allow_null_glob_expansion, (Function *)NULL }, ++ { "failglob", &fail_glob_expansion, (Function *)NULL }, + #if defined (PROGRAMMABLE_COMPLETION) + { "progcomp", &prog_completion_enabled, (Function *)NULL }, + #endif +diff -ru ../work/bash-2.04/doc/bash.1 ./doc/bash.1 +--- ../work/bash-2.04/doc/bash.1 Tue Mar 14 17:37:56 2000 ++++ ./doc/bash.1 Wed May 24 12:17:39 2000 +@@ -2414,6 +2414,10 @@ + .B nullglob + option is set, and no matches are found, + the word is removed. ++If the ++.B failglob ++option is set, and no matches are found, an error message is printed ++and the command is not executed. + If the shell option + .B nocaseglob + is enabled, the match is performed without regard to the case +diff -ru ../work/bash-2.04/doc/bashref.texi ./doc/bashref.texi +--- ../work/bash-2.04/doc/bashref.texi Tue Mar 14 17:38:33 2000 ++++ ./doc/bashref.texi Wed May 24 12:17:39 2000 +@@ -1679,7 +1679,8 @@ + and replaced with an alphabetically sorted list of + file names matching the pattern. If no matching file names are found, + and the shell option @code{nullglob} is disabled, the word is left +-unchanged. ++unchanged. If the @code{failglob} option is set, an error message is ++printed and the commandline is not executed. + If the @code{nullglob} option is set, and no matches are found, the word + is removed. + If the shell option @code{nocaseglob} is enabled, the match is performed +@@ -1692,8 +1693,8 @@ + matched explicitly. + In other cases, the @samp{.} character is not treated specially. + +-See the description of @code{shopt} in @ref{Bash Builtins}, +-for a description of the @code{nocaseglob}, @code{nullglob}, ++See the description of @code{shopt} in @ref{Bash Builtins}, for a ++description of the @code{nocaseglob}, @code{nullglob}, @code{failglob} + and @code{dotglob} options. + + The @code{GLOBIGNORE} +@@ -3319,6 +3320,10 @@ + @item extglob + If set, the extended pattern matching features described above + (@pxref{Pattern Matching}) are enabled. ++ ++@item failglob ++If set, filenames that have globbing characters in them, but don't match ++anything, will cause an error. + + @item histappend + If set, the history list is appended to the file named by the value +Only in ../work/bash-2.04/lib/readline/doc: Makefile +diff -ru ../work/bash-2.04/subst.c ./subst.c +--- ../work/bash-2.04/subst.c Tue Mar 14 16:42:02 2000 ++++ ./subst.c Wed May 24 12:17:39 2000 +@@ -106,6 +106,9 @@ + a null file. */ + int allow_null_glob_expansion; + ++/* Non-zero means to signal an error when globbing fails to match. */ ++int fail_glob_expansion; ++ + /* Variables to keep track of which words in an expanded word list (the + output of expand_word_list_internal) are the result of globbing + expansions. GLOB_ARGV_FLAGS is used by execute_cmd.c. */ +@@ -6018,6 +6021,11 @@ + { + output_list = (WORD_LIST *)list_append (glob_list, output_list); + PREPEND_LIST (tlist, disposables); ++ } ++ else if (fail_glob_expansion != 0) ++ { ++ report_error ("no match: %s", tlist->word->word); ++ jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) + { +diff -ru ../work/bash-2.04/tests/shopt.right ./tests/shopt.right +--- ../work/bash-2.04/tests/shopt.right Tue Sep 21 17:55:58 1999 ++++ ./tests/shopt.right Wed May 24 12:17:23 2000 +@@ -21,6 +21,7 @@ + shopt -u no_empty_cmd_completion + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -s progcomp + shopt -s promptvars + shopt -u restricted_shell +@@ -56,6 +57,7 @@ + shopt -u no_empty_cmd_completion + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -u restricted_shell + shopt -u shift_verbose + shopt -u xpg_echo +@@ -75,6 +77,7 @@ + no_empty_cmd_completion off + nocaseglob off + nullglob off ++failglob off + restricted_shell off + shift_verbose off + xpg_echo off +@@ -198,3 +201,5 @@ + -- + ./shopt.tests: shopt: xyz1: unknown shell option name + ./shopt.tests: shopt: xyz1: unknown option name ++tmp/l1 tmp/l2 tmp/*4 tmp/l3 ++./shopt.tests: no match: tmp/*4 +diff -ru ../work/bash-2.04/tests/shopt.tests ./tests/shopt.tests +--- ../work/bash-2.04/tests/shopt.tests Tue Sep 21 17:49:32 1999 ++++ ./tests/shopt.tests Wed May 24 12:17:39 2000 +@@ -21,6 +21,7 @@ + shopt -u mailwarn + shopt -u nocaseglob + shopt -u nullglob ++shopt -u failglob + shopt -s promptvars + shopt -u shift_verbose + shopt -s sourcepath +@@ -92,3 +93,11 @@ + builtin printf -- "--\n" + shopt -p xyz1 + shopt -o -p xyz1 ++ ++mkdir tmp ++touch tmp/l1 tmp/l2 tmp/l3 ++builtin echo tmp/l[12] tmp/*4 tmp/*3 ++shopt -s failglob ++builtin echo tmp/l[12] tmp/*4 tmp/*3 ++rm -r tmp ++shopt -u failglob -- cgit v1.2.3