diff options
Diffstat (limited to 'package/busybox/busybox-1.18.1/busybox-1.18.1-hush.patch')
-rw-r--r-- | package/busybox/busybox-1.18.1/busybox-1.18.1-hush.patch | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/package/busybox/busybox-1.18.1/busybox-1.18.1-hush.patch b/package/busybox/busybox-1.18.1/busybox-1.18.1-hush.patch deleted file mode 100644 index 5281a52e5..000000000 --- a/package/busybox/busybox-1.18.1/busybox-1.18.1-hush.patch +++ /dev/null @@ -1,259 +0,0 @@ -diff -urpN busybox-1.18.1/shell/hush.c busybox-1.18.1-hush/shell/hush.c ---- busybox-1.18.1/shell/hush.c 2010-12-21 05:31:04.000000000 +0100 -+++ busybox-1.18.1-hush/shell/hush.c 2011-01-07 14:59:19.649956156 +0100 -@@ -913,7 +913,7 @@ static const struct built_in_command blt - */ - #if HUSH_DEBUG - /* prevent disasters with G.debug_indent < 0 */ --# define indent() fprintf(stderr, "%*s", (G.debug_indent * 2) & 0xff, "") -+# define indent() fdprintf(2, "%*s", (G.debug_indent * 2) & 0xff, "") - # define debug_enter() (G.debug_indent++) - # define debug_leave() (G.debug_indent--) - #else -@@ -923,56 +923,56 @@ static const struct built_in_command blt - #endif - - #ifndef debug_printf --# define debug_printf(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_parse --# define debug_printf_parse(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_parse(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_exec --#define debug_printf_exec(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+#define debug_printf_exec(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_env --# define debug_printf_env(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_env(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_jobs --# define debug_printf_jobs(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_jobs(...) (indent(), fdprintf(2, __VA_ARGS__)) - # define DEBUG_JOBS 1 - #else - # define DEBUG_JOBS 0 - #endif - - #ifndef debug_printf_expand --# define debug_printf_expand(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_expand(...) (indent(), fdprintf(2, __VA_ARGS__)) - # define DEBUG_EXPAND 1 - #else - # define DEBUG_EXPAND 0 - #endif - - #ifndef debug_printf_varexp --# define debug_printf_varexp(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_varexp(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_glob --# define debug_printf_glob(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_glob(...) (indent(), fdprintf(2, __VA_ARGS__)) - # define DEBUG_GLOB 1 - #else - # define DEBUG_GLOB 0 - #endif - - #ifndef debug_printf_list --# define debug_printf_list(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_list(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_subst --# define debug_printf_subst(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_subst(...) (indent(), fdprintf(2, __VA_ARGS__)) - #endif - - #ifndef debug_printf_clean --# define debug_printf_clean(...) (indent(), fprintf(stderr, __VA_ARGS__)) -+# define debug_printf_clean(...) (indent(), fdprintf(2, __VA_ARGS__)) - # define DEBUG_CLEAN 1 - #else - # define DEBUG_CLEAN 0 -@@ -982,9 +982,9 @@ static const struct built_in_command blt - static void debug_print_strings(const char *prefix, char **vv) - { - indent(); -- fprintf(stderr, "%s:\n", prefix); -+ fdprintf(2, "%s:\n", prefix); - while (*vv) -- fprintf(stderr, " '%s'\n", *vv++); -+ fdprintf(2, " '%s'\n", *vv++); - } - #else - # define debug_print_strings(prefix, vv) ((void)0) -@@ -1416,6 +1416,22 @@ static void hush_exit(int exitcode) - builtin_eval(argv); - } - -+#if ENABLE_FEATURE_CLEAN_UP -+ { -+ struct variable *cur_var; -+ if (G.cwd != bb_msg_unknown) -+ free((char*)G.cwd); -+ cur_var = G.top_var; -+ while (cur_var) { -+ struct variable *tmp = cur_var; -+ if (!cur_var->max_len) -+ free(cur_var->varstr); -+ cur_var = cur_var->next; -+ free(tmp); -+ } -+ } -+#endif -+ - #if ENABLE_HUSH_JOB - fflush_all(); - sigexit(- (exitcode & 0xff)); -@@ -2158,22 +2174,22 @@ static void debug_print_list(const char - int i = 0; - - indent(); -- fprintf(stderr, "%s: list:%p n:%d string_start:%d length:%d maxlen:%d glob:%d quoted:%d escape:%d\n", -+ fdprintf(2, "%s: list:%p n:%d string_start:%d length:%d maxlen:%d glob:%d quoted:%d escape:%d\n", - prefix, list, n, string_start, o->length, o->maxlen, - !!(o->o_expflags & EXP_FLAG_GLOB), - o->has_quoted_part, - !!(o->o_expflags & EXP_FLAG_ESC_GLOB_CHARS)); - while (i < n) { - indent(); -- fprintf(stderr, " list[%d]=%d '%s' %p\n", i, (int)list[i], -- o->data + (int)list[i] + string_start, -- o->data + (int)list[i] + string_start); -+ fdprintf(2, " list[%d]=%d '%s' %p\n", i, (int)(uintptr_t)list[i], -+ o->data + (int)(uintptr_t)list[i] + string_start, -+ o->data + (int)(uintptr_t)list[i] + string_start); - i++; - } - if (n) { -- const char *p = o->data + (int)list[n - 1] + string_start; -+ const char *p = o->data + (int)(uintptr_t)list[n - 1] + string_start; - indent(); -- fprintf(stderr, " total_sz:%ld\n", (long)((p + strlen(p) + 1) - o->data)); -+ fdprintf(2, " total_sz:%ld\n", (long)((p + strlen(p) + 1) - o->data)); - } - } - #else -@@ -2672,18 +2688,18 @@ static void debug_print_tree(struct pipe - - pin = 0; - while (pi) { -- fprintf(stderr, "%*spipe %d res_word=%s followup=%d %s\n", lvl*2, "", -+ fdprintf(2, "%*spipe %d res_word=%s followup=%d %s\n", lvl*2, "", - pin, RES[pi->res_word], pi->followup, PIPE[pi->followup]); - prn = 0; - while (prn < pi->num_cmds) { - struct command *command = &pi->cmds[prn]; - char **argv = command->argv; - -- fprintf(stderr, "%*s cmd %d assignment_cnt:%d", -+ fdprintf(2, "%*s cmd %d assignment_cnt:%d", - lvl*2, "", prn, - command->assignment_cnt); - if (command->group) { -- fprintf(stderr, " group %s: (argv=%p)%s%s\n", -+ fdprintf(2, " group %s: (argv=%p)%s%s\n", - CMDTYPE[command->cmd_type], - argv - # if !BB_MMU -@@ -2697,10 +2713,10 @@ static void debug_print_tree(struct pipe - continue; - } - if (argv) while (*argv) { -- fprintf(stderr, " '%s'", *argv); -+ fdprintf(2, " '%s'", *argv); - argv++; - } -- fprintf(stderr, "\n"); -+ fdprintf(2, "\n"); - prn++; - } - pi = pi->next; -@@ -4106,7 +4122,16 @@ static struct pipe *parse_stream(char ** - if (IS_NULL_CMD(ctx.command) - && dest.length == 0 && !dest.has_quoted_part - ) { -- continue; -+ /* This newline can be ignored. But... -+ * without the below check, interactive shell -+ * will ignore even lines with bare <newline>, -+ * and show the continuation prompt: -+ * ps1_prompt$ <enter> -+ * ps2> _ <=== wrong prompt, should be ps1 -+ */ -+ struct pipe *pi = ctx.list_head; -+ if (pi->num_cmds != 0) -+ continue; - } - /* Treat newline as a command separator. */ - done_pipe(&ctx, PIPE_SEQ); -@@ -7445,7 +7470,7 @@ int hush_main(int argc, char **argv) - unsigned builtin_argc; - char **e; - struct variable *cur_var; -- struct variable shell_ver; -+ struct variable *shell_ver; - - INIT_G(); - if (EXIT_SUCCESS) /* if EXIT_SUCCESS == 0, it is already done */ -@@ -7454,17 +7479,17 @@ int hush_main(int argc, char **argv) - G.argv0_for_re_execing = argv[0]; - #endif - /* Deal with HUSH_VERSION */ -- memset(&shell_ver, 0, sizeof(shell_ver)); -- shell_ver.flg_export = 1; -- shell_ver.flg_read_only = 1; -+ shell_ver = xzalloc(sizeof(*shell_ver)); -+ shell_ver->flg_export = 1; -+ shell_ver->flg_read_only = 1; - /* Code which handles ${var<op>...} needs writable values for all variables, - * therefore we xstrdup: */ -- shell_ver.varstr = xstrdup(hush_version_str), -- G.top_var = &shell_ver; -+ shell_ver->varstr = xstrdup(hush_version_str); - /* Create shell local variables from the values - * currently living in the environment */ - debug_printf_env("unsetenv '%s'\n", "HUSH_VERSION"); - unsetenv("HUSH_VERSION"); /* in case it exists in initial env */ -+ G.top_var = shell_ver; - cur_var = G.top_var; - e = environ; - if (e) while (*e) { -@@ -7479,8 +7504,8 @@ int hush_main(int argc, char **argv) - e++; - } - /* (Re)insert HUSH_VERSION into env (AFTER we scanned the env!) */ -- debug_printf_env("putenv '%s'\n", shell_ver.varstr); -- putenv(shell_ver.varstr); -+ debug_printf_env("putenv '%s'\n", shell_ver->varstr); -+ putenv(shell_ver->varstr); - - /* Export PWD */ - set_pwd_var(/*exp:*/ 1); -@@ -7840,18 +7865,6 @@ int hush_main(int argc, char **argv) - parse_and_run_file(stdin); - - final_return: --#if ENABLE_FEATURE_CLEAN_UP -- if (G.cwd != bb_msg_unknown) -- free((char*)G.cwd); -- cur_var = G.top_var->next; -- while (cur_var) { -- struct variable *tmp = cur_var; -- if (!cur_var->max_len) -- free(cur_var->varstr); -- cur_var = cur_var->next; -- free(tmp); -- } --#endif - hush_exit(G.last_exitcode); - } - |