1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-25 04:43:33 +00:00

Re-add patch for failglob variable (see previous discussion on -commiters)

This commit is contained in:
Martin Cracauer 2000-05-24 10:33:20 +00:00
parent 0eefe0c694
commit 913c2b25ba
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=28728
3 changed files with 453 additions and 0 deletions

151
shells/bash/files/patch-ae Normal file
View File

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

151
shells/bash2/files/patch-ae Normal file
View File

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

151
shells/bash3/files/patch-ae Normal file
View File

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