From 7344f9128dfa797a9b9d51b38832f77a1eaeac2d Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Tue, 6 Dec 2011 19:47:53 +0000
Subject: [PATCH] Remove interleave of non-U-Boot code in hush

There is a nasty interleave of #ifdefs in hush.c where the two code
paths have different indents. Remove this ickiness.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 common/hush.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/common/hush.c b/common/hush.c
index 6cb921d4f3..3aa9d50113 100644
--- a/common/hush.c
+++ b/common/hush.c
@@ -1642,6 +1642,15 @@ static int run_pipe_real(struct pipe *pi)
 				 * Is it really safe for inline use?  Experimentally,
 				 * things seem to work with glibc. */
 				setup_redirects(child, squirrel);
+
+				child->argv += i;  /* XXX horrible hack */
+				rcode = x->function(child);
+				/* XXX restore hack so free() can work right */
+				child->argv -= i;
+				restore_redirects(squirrel);
+			}
+			return rcode;
+		}
 #else
 			/* check ";", because ,example , argv consist from
 			 * "help;flinfo" must not execute
@@ -1674,22 +1683,11 @@ static int run_pipe_real(struct pipe *pi)
 				if ((child->argc - i) > cmdtp->maxargs)
 					return cmd_usage(cmdtp);
 #endif
-				child->argv+=i;  /* XXX horrible hack */
-#ifndef __U_BOOT__
-				rcode = x->function(child);
-#else
 				/* OK - call function to do the command */
-				rcode = cmd_call(cmdtp, flag,  child->argc-i,
-						 &child->argv[i]);
+				rcode = cmd_call(cmdtp, flag,  child->argc,
+						 child->argv);
 				if (!cmdtp->repeatable)
 					flag_repeat = 0;
-#endif
-				child->argv-=i;  /* XXX restore hack so free() can work right */
-#ifndef __U_BOOT__
-
-				restore_redirects(squirrel);
-#endif
-
 				return rcode;
 			}
 		}
-- 
2.39.5