]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
common: console: Fix print complete stdio device list
authorPatrice Chotard <patrice.chotard@foss.st.com>
Wed, 17 Jan 2024 12:37:13 +0000 (13:37 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 24 Jan 2024 16:12:11 +0000 (11:12 -0500)
In case CONSOLE_MUX and SYS_CONSOLE_IS_IN_ENV are on and
stdin or stdout or stderr are missing in environment, as fallback, get
these either from stdio_devices[std] or stdio_devices[std]->name.

Fixes: 6b343ab38d ("console: Print out complete stdio device list")
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
common/console.c

index cad65891fc9f1932e5f490ecc87bb63aa8e30269..aa3053bc441405d177adaaf456a8265054ed038e 100644 (file)
@@ -1049,9 +1049,16 @@ int console_clear(void)
        return 0;
 }
 
+static char *get_stdio(const u8 std)
+{
+       return stdio_devices[std] ? stdio_devices[std]->name : "No devices available!";
+}
+
 static void stdio_print_current_devices(void)
 {
-       char *stdinname, *stdoutname, *stderrname;
+       char *stdinname = NULL;
+       char *stdoutname = NULL;
+       char *stderrname = NULL;
 
        if (CONFIG_IS_ENABLED(CONSOLE_MUX) &&
            CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV)) {
@@ -1059,22 +1066,12 @@ static void stdio_print_current_devices(void)
                stdinname  = env_get("stdin");
                stdoutname = env_get("stdout");
                stderrname = env_get("stderr");
-
-               stdinname = stdinname ? : "No input devices available!";
-               stdoutname = stdoutname ? : "No output devices available!";
-               stderrname = stderrname ? : "No error devices available!";
-       } else {
-               stdinname = stdio_devices[stdin] ?
-                       stdio_devices[stdin]->name :
-                       "No input devices available!";
-               stdoutname = stdio_devices[stdout] ?
-                       stdio_devices[stdout]->name :
-                       "No output devices available!";
-               stderrname = stdio_devices[stderr] ?
-                       stdio_devices[stderr]->name :
-                       "No error devices available!";
        }
 
+       stdinname = stdinname ? : get_stdio(stdin);
+       stdoutname = stdoutname ? : get_stdio(stdout);
+       stderrname = stderrname ? : get_stdio(stderr);
+
        /* Print information */
        puts("In:    ");
        printf("%s\n", stdinname);