[git commit master 1/1] hush: fix faloout from previous commit

Denys Vlasenko vda.linux at googlemail.com
Thu Jul 15 06:18:46 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=8fa1f5d543266816967949812b65790fbe7cdcd4
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 include/busybox.h |   13 ++++++++-----
 shell/hush.c      |   26 ++++++++++++--------------
 2 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/include/busybox.h b/include/busybox.h
index 48ce856..48fc0b4 100644
--- a/include/busybox.h
+++ b/include/busybox.h
@@ -35,18 +35,21 @@ extern const uint16_t applet_nameofs[];
 extern const uint8_t applet_install_loc[];
 
 #if ENABLE_FEATURE_SUID || ENABLE_FEATURE_PREFER_APPLETS
-#define APPLET_NAME(i) (applet_names + (applet_nameofs[i] & 0x0fff))
+# define APPLET_NAME(i) (applet_names + (applet_nameofs[i] & 0x0fff))
 #else
-#define APPLET_NAME(i) (applet_names + applet_nameofs[i])
+# define APPLET_NAME(i) (applet_names + applet_nameofs[i])
 #endif
 
 #if ENABLE_FEATURE_PREFER_APPLETS
-#define APPLET_IS_NOFORK(i) (applet_nameofs[i] & (1 << 12))
-#define APPLET_IS_NOEXEC(i) (applet_nameofs[i] & (1 << 13))
+# define APPLET_IS_NOFORK(i) (applet_nameofs[i] & (1 << 12))
+# define APPLET_IS_NOEXEC(i) (applet_nameofs[i] & (1 << 13))
+#else
+# define APPLET_IS_NOFORK(i) 0
+# define APPLET_IS_NOEXEC(i) 0
 #endif
 
 #if ENABLE_FEATURE_SUID
-#define APPLET_SUID(i) ((applet_nameofs[i] >> 14) & 0x3)
+# define APPLET_SUID(i) ((applet_nameofs[i] >> 14) & 0x3)
 #endif
 
 #if ENABLE_FEATURE_INSTALLER
diff --git a/shell/hush.c b/shell/hush.c
index 8a467be..7dacfa0 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -4328,9 +4328,7 @@ static NOINLINE int run_pipe(struct pipe *pi)
 				}
 #endif
 			}
-#if ENABLE_FEATURE_SH_STANDALONE
  clean_up_and_ret:
-#endif
 			restore_redirects(squirrel);
 			unset_vars(new_env);
 			add_vars(old_vars);
@@ -4342,20 +4340,20 @@ static NOINLINE int run_pipe(struct pipe *pi)
 			return rcode;
 		}
 
-#if ENABLE_FEATURE_SH_STANDALONE
-		i = find_applet_by_name(argv_expanded[0]);
-		if (i >= 0 && APPLET_IS_NOFORK(i)) {
-			rcode = setup_redirects(command, squirrel);
-			if (rcode == 0) {
-				new_env = expand_assignments(argv, command->assignment_cnt);
-				old_vars = set_vars_and_save_old(new_env);
-				debug_printf_exec(": run_nofork_applet '%s' '%s'...\n",
-					argv_expanded[0], argv_expanded[1]);
-				rcode = run_nofork_applet(i, argv_expanded);
+		if (ENABLE_FEATURE_SH_STANDALONE) {
+			int n = find_applet_by_name(argv_expanded[0]);
+			if (n >= 0 && APPLET_IS_NOFORK(n)) {
+				rcode = setup_redirects(command, squirrel);
+				if (rcode == 0) {
+					new_env = expand_assignments(argv, command->assignment_cnt);
+					old_vars = set_vars_and_save_old(new_env);
+					debug_printf_exec(": run_nofork_applet '%s' '%s'...\n",
+						argv_expanded[0], argv_expanded[1]);
+					rcode = run_nofork_applet(n, argv_expanded);
+				}
+				goto clean_up_and_ret;
 			}
-			goto clean_up_and_ret;
 		}
-#endif
 		/* It is neither builtin nor applet. We must fork. */
 	}
 
-- 
1.7.1



More information about the busybox-cvs mailing list