X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=package%2Fbusybox%2Fpatches%2F190-ash_performance.patch;fp=package%2Fbusybox%2Fpatches%2F190-ash_performance.patch;h=0000000000000000000000000000000000000000;hb=4f17fe653b4bf22aa059b5f5fa5678ceebc18a67;hp=09319314194e6403b171aadd14d62be28a1a7f04;hpb=261aac942079aa99fec98168e204a0f8089c7d89;p=openwrt.git diff --git a/package/busybox/patches/190-ash_performance.patch b/package/busybox/patches/190-ash_performance.patch deleted file mode 100644 index 0931931419..0000000000 --- a/package/busybox/patches/190-ash_performance.patch +++ /dev/null @@ -1,80 +0,0 @@ - - Copyright (C) 2006 OpenWrt.org - -diff -urN busybox.old/shell/ash.c busybox.dev/shell/ash.c ---- busybox.old/shell/ash.c 2005-11-12 22:39:19.853826250 +0100 -+++ busybox.dev/shell/ash.c 2005-11-12 22:39:42.771258500 +0100 -@@ -1414,6 +1414,13 @@ - - #define NUMBUILTINS (sizeof (builtincmd) / sizeof (struct builtincmd) ) - -+static const char *safe_applets[] = { -+ "[", "test", "echo", "cat", -+ "ln", "cp", "touch", "mkdir", "rm", -+ "cut", "hexdump", "awk", "sort", -+ "find", "xargs", "ls", "dd", -+ "chown", "chmod" -+}; - - - struct cmdentry { -@@ -2050,6 +2057,19 @@ - static void exitshell(void) __attribute__((__noreturn__)); - static int decode_signal(const char *, int); - -+ -+static int is_safe_applet(char *name) -+{ -+ int n = sizeof(safe_applets) / sizeof(char *); -+ int i; -+ for (i = 0; i < n; i++) -+ if (strcmp(safe_applets[i], name) == 0) -+ return 1; -+ -+ return 0; -+} -+ -+ - /* - * This routine is called when an error or an interrupt occurs in an - * interactive shell and control is returned to the main command loop. -@@ -3680,6 +3700,7 @@ - clearredir(1); - envp = environment(); - if (strchr(argv[0], '/') != NULL -+ || is_safe_applet(argv[0]) - #ifdef CONFIG_FEATURE_SH_STANDALONE_SHELL - || find_applet_by_name(argv[0]) - #endif -@@ -3721,6 +3742,18 @@ - tryexec(char *cmd, char **argv, char **envp) - { - int repeated = 0; -+ struct BB_applet *a; -+ int argc = 0; -+ char **c; -+ -+ if(strchr(cmd, '/') == NULL && is_safe_applet(cmd) && (a = find_applet_by_name(cmd)) != NULL) { -+ c = argv; -+ while (*c != NULL) { -+ c++; argc++; -+ } -+ bb_applet_name = cmd; -+ exit(a->main(argc, argv)); -+ } - #ifdef CONFIG_FEATURE_SH_STANDALONE_SHELL - int flg_bb = 0; - char *name = cmd; -@@ -3919,6 +3952,12 @@ - } - #endif - -+ if (is_safe_applet(name)) { -+ entry->cmdtype = CMDNORMAL; -+ entry->u.index = -1; -+ return; -+ } -+ - updatetbl = (path == pathval()); - if (!updatetbl) { - act |= DO_ALTPATH;