diff options
Diffstat (limited to 'legacy/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch')
-rw-r--r-- | legacy/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/legacy/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch b/legacy/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch deleted file mode 100644 index 929370b9d..000000000 --- a/legacy/busybox/0001-ash-add-support-for-command_not_found_handle-hook-fu.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 185ba65457e991ebd0f6e64266380df5e11cc489 Mon Sep 17 00:00:00 2001 -From: William Pitcock <nenolod@dereferenced.org> -Date: Thu, 19 Oct 2017 17:24:40 +0000 -Subject: [PATCH 01/16] ash: add support for command_not_found_handle hook - function, like bash - -This implements support for the command_not_found_handle hook function, which is -useful for allowing package managers to suggest packages which could provide the -command. - -Unlike bash, however, we ignore exit codes from the hook function and always return -the correct POSIX error code (EX_NOTFOUND). - -Signed-off-by: William Pitcock <nenolod@dereferenced.org> ---- - shell/ash.c | 24 ++++++++++++++++++++++-- - 1 file changed, 22 insertions(+), 2 deletions(-) - -diff --git a/shell/ash.c b/shell/ash.c -index b73a79975..7ceb91920 100644 ---- a/shell/ash.c -+++ b/shell/ash.c -@@ -132,6 +132,15 @@ - //config: you to run the specified command or builtin, - //config: even when there is a function with the same name. - //config: -+//config:config ASH_COMMAND_NOT_FOUND_HOOK -+//config: bool "command_not_found_handle hook support" -+//config: default y -+//config: depends on ASH || SH_IS_ASH || BASH_IS_ASH -+//config: help -+//config: Enable support for the 'command_not_found_handle' hook function, -+//config: from GNU bash, which allows for alternative command not found -+//config: handling. -+//config: - //config:endif # ash options - - //applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP)) -@@ -13166,8 +13175,19 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path) - /* We failed. If there was an entry for this command, delete it */ - if (cmdp && updatetbl) - delete_cmd_entry(); -- if (act & DO_ERR) -- ash_msg("%s: %s", name, errmsg(e, "not found")); -+ if (act & DO_ERR) { -+#ifdef CONFIG_ASH_COMMAND_NOT_FOUND_HOOK -+#define HOOKFN_NAME "command_not_found_handle" -+ char hookfn_name[] = HOOKFN_NAME; -+ struct tblentry *hookp = cmdlookup(hookfn_name, 0); -+ if (hookp != NULL && hookp->cmdtype == CMDFUNCTION) { -+ evalfun(hookp->param.func, 2, (char *[]){ hookfn_name, name }, 0); -+ entry->cmdtype = CMDUNKNOWN; -+ return; -+ } else -+#endif -+ ash_msg("%s: %s", name, errmsg(e, "not found")); -+ } - entry->cmdtype = CMDUNKNOWN; - return; - --- -2.16.2 - |