summaryrefslogblamecommitdiff
path: root/shells/bash2/files/patch-ae
blob: c0ae0bccf27015d0a090c9c08d7c936cb42a4b29 (plain) (tree)






















































































































































                                                                               
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