From 58cdca3984beb4e1019ef5ccf1dd7361f032a9a6 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 28 Mar 2010 20:01:31 +0200 Subject: apply post-1.16.0 fixes, bump version to 1.16.1 Signed-off-by: Denys Vlasenko --- shell/ash.c | 13 +++++++------ shell/ash_test/ash-misc/nulltick1.right | 3 +++ shell/ash_test/ash-misc/nulltick1.tests | 3 +++ shell/hush.c | 12 +++++++++--- 4 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 shell/ash_test/ash-misc/nulltick1.right create mode 100755 shell/ash_test/ash-misc/nulltick1.tests (limited to 'shell') diff --git a/shell/ash.c b/shell/ash.c index 798d15a4c..34f70ecfc 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -43,8 +43,6 @@ #endif #include "busybox.h" /* for applet_names */ -//TODO: pull in some .h and find out do we have SINGLE_APPLET_MAIN? -//#include "applet_tables.h" doesn't work #include #include #include @@ -58,12 +56,15 @@ # define CLEAR_RANDOM_T(rnd) ((void)0) #endif -#if defined SINGLE_APPLET_MAIN +#define SKIP_definitions 1 +#include "applet_tables.h" +#undef SKIP_definitions +#if NUM_APPLETS == 1 /* STANDALONE does not make sense, and won't compile */ # undef CONFIG_FEATURE_SH_STANDALONE # undef ENABLE_FEATURE_SH_STANDALONE # undef IF_FEATURE_SH_STANDALONE -# undef IF_NOT_FEATURE_SH_STANDALONE(...) +# undef IF_NOT_FEATURE_SH_STANDALONE # define ENABLE_FEATURE_SH_STANDALONE 0 # define IF_FEATURE_SH_STANDALONE(...) # define IF_NOT_FEATURE_SH_STANDALONE(...) __VA_ARGS__ @@ -4539,7 +4540,7 @@ forkchild(struct job *jp, union node *n, int mode) if (mode == FORK_NOJOB /* is it `xxx` ? */ && n && n->type == NCMD /* is it single cmd? */ /* && n->ncmd.args->type == NARG - always true? */ - && strcmp(n->ncmd.args->narg.text, "trap") == 0 + && n->ncmd.args && strcmp(n->ncmd.args->narg.text, "trap") == 0 && n->ncmd.args->narg.next == NULL /* "trap" with no arguments */ /* && n->ncmd.args->narg.backquote == NULL - do we need to check this? */ ) { @@ -4627,7 +4628,7 @@ forkchild(struct job *jp, union node *n, int mode) } #if JOBS if (n && n->type == NCMD - && strcmp(n->ncmd.args->narg.text, "jobs") == 0 + && n->ncmd.args && strcmp(n->ncmd.args->narg.text, "jobs") == 0 ) { TRACE(("Job hack\n")); /* "jobs": we do not want to clear job list for it, diff --git a/shell/ash_test/ash-misc/nulltick1.right b/shell/ash_test/ash-misc/nulltick1.right new file mode 100644 index 000000000..f90b8209e --- /dev/null +++ b/shell/ash_test/ash-misc/nulltick1.right @@ -0,0 +1,3 @@ +Test 1 +Test 2 +Done diff --git a/shell/ash_test/ash-misc/nulltick1.tests b/shell/ash_test/ash-misc/nulltick1.tests new file mode 100755 index 000000000..f81923de3 --- /dev/null +++ b/shell/ash_test/ash-misc/nulltick1.tests @@ -0,0 +1,3 @@ +echo Test ` ` 1 +echo Test `" should work, + * therefore we should use BB_EXECVP, not execvp */ + BB_EXECVP(argv[0], argv); bb_perror_msg("can't execute '%s'", argv[0]); _exit(127); /* bash compat */ } -- cgit v1.2.3-55-g6feb