summaryrefslogtreecommitdiff
path: root/debian/patches/command-not-found.dpatch
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2007-11-12 13:13:20 -0800
committerAn-Cheng Huang <ancheng@vyatta.com>2007-11-14 16:16:47 -0800
commitfc7695ee76400ee9833301f98a3fe483d64591b5 (patch)
tree15b568f5adfa956817cf9f5a1652c43d33d8efa9 /debian/patches/command-not-found.dpatch
parentb7fc9e0f6d6105ba2203f219743d4b269415e84b (diff)
downloadvyatta-bash-upstream.tar.gz
vyatta-bash-upstream.zip
initial import from bash_3.1dfsg-8.diff.gzupstream
Diffstat (limited to 'debian/patches/command-not-found.dpatch')
-rwxr-xr-xdebian/patches/command-not-found.dpatch66
1 files changed, 66 insertions, 0 deletions
diff --git a/debian/patches/command-not-found.dpatch b/debian/patches/command-not-found.dpatch
new file mode 100755
index 0000000..b1feb22
--- /dev/null
+++ b/debian/patches/command-not-found.dpatch
@@ -0,0 +1,66 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+# DP: Add command_not_found_handle in interactive non POSIX mode
+
+--- bash/execute_cmd.c~ 2004-08-28 14:43:04.000000000 +0200
++++ bash/execute_cmd.c 2004-08-28 14:54:57.000000000 +0200
+@@ -3615,8 +3615,26 @@
+
+ if (command == 0)
+ {
+- internal_error (_("%s: command not found"), pathname);
+- exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */
++ SHELL_VAR *f, *v;
++ WORD_LIST *cmdlist;
++ WORD_DESC *w;
++ int fval;
++ if( (posixly_correct || interactive_shell == 0) ||
++ (f = find_function ("command_not_found_handle")) == 0)
++ {
++ internal_error (_("%s: command not found"), pathname);
++ exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */
++ }
++ w = make_word("command_not_found_handle");
++ cmdlist = make_word_list(w, (WORD_LIST*)NULL);
++
++ w = make_word(pathname);
++ cmdlist->next = make_word_list(w, (WORD_LIST*)NULL);
++
++ fval = execute_shell_function (f, cmdlist);
++ if (fval == EX_NOTFOUND)
++ internal_error (_("%s: command not found"), pathname);
++ exit(fval);
+ }
+
+ /* Execve expects the command name to be in args[0]. So we
+--- bash/doc/bash.1~ 2004-08-06 08:01:10.000000000 +0200
++++ bash/doc/bash.1 2004-08-28 15:03:13.000000000 +0200
+@@ -1972,6 +1972,13 @@
+ .B %
+ job identifier.
+ .TP
++.B command_not_found_handle
++The name of a shell function to be called if a command cannot be
++found. The return value of this function should be 0, if the command
++is available after execution of the function, otherwise 127 (EX_NOTFOUND).
++Enabled only in interactive, non POSIX mode shells. This is a Debian
++extension.
++.TP
+ .B histchars
+ The two or three characters which control history expansion
+ and tokenization (see