From: Alessandro Rubini <rub...@unipv.it>

If "stdout" is not previously set, doing "setenv stdout lcd" had no
effect, since console redirection only worked if the environment
variable was already set; the second time you run setenv it worked.
Most default environments lack stdin/out/err definitions, so I'm sure
I'm not alone with this problem.

This patch simply moves a block of code out of a conditional, to do
the same work even if the variable was previously unset.

Signed-off-by: Alessandro Rubini <rub...@unipv.it>
Acked-by: Andrea Gallo <andrea.ga...@stericsson.com>
---
 common/cmd_nvedit.c |   62 +++++++++++++++++++++++++-------------------------
 1 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 2186205..9f8d531 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -202,6 +202,37 @@ int _do_setenv (int flag, int argc, char *argv[])
                        break;
        }
 
+       /* Check for console redirection */
+       if (strcmp(name,"stdin") == 0) {
+               console = stdin;
+       } else if (strcmp(name,"stdout") == 0) {
+               console = stdout;
+       } else if (strcmp(name,"stderr") == 0) {
+               console = stderr;
+       }
+
+       if (console != -1) {
+               if (argc < 3) {         /* Cannot delete it! */
+                       printf("Can't delete \"%s\"\n", name);
+                       return 1;
+               }
+
+#ifdef CONFIG_CONSOLE_MUX
+               i = iomux_doenv(console, argv[2]);
+               if (i)
+                       return i;
+#else
+               /* Try assigning specified device */
+               if (console_assign (console, argv[2]) < 0)
+                       return 1;
+
+#ifdef CONFIG_SERIAL_MULTI
+               if (serial_assign (argv[2]) < 0)
+                       return 1;
+#endif
+#endif /* CONFIG_CONSOLE_MUX */
+       }
+
        /*
         * Delete any existing definition
         */
@@ -229,37 +260,6 @@ int _do_setenv (int flag, int argc, char *argv[])
                }
 #endif
 
-               /* Check for console redirection */
-               if (strcmp(name,"stdin") == 0) {
-                       console = stdin;
-               } else if (strcmp(name,"stdout") == 0) {
-                       console = stdout;
-               } else if (strcmp(name,"stderr") == 0) {
-                       console = stderr;
-               }
-
-               if (console != -1) {
-                       if (argc < 3) {         /* Cannot delete it! */
-                               printf("Can't delete \"%s\"\n", name);
-                               return 1;
-                       }
-
-#ifdef CONFIG_CONSOLE_MUX
-                       i = iomux_doenv(console, argv[2]);
-                       if (i)
-                               return i;
-#else
-                       /* Try assigning specified device */
-                       if (console_assign (console, argv[2]) < 0)
-                               return 1;
-
-#ifdef CONFIG_SERIAL_MULTI
-                       if (serial_assign (argv[2]) < 0)
-                               return 1;
-#endif
-#endif /* CONFIG_CONSOLE_MUX */
-               }
-
                /*
                 * Switch to new baudrate if new baudrate is supported
                 */
-- 
1.6.0.2
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to