
On 1/16/24 17:29, Bin Meng wrote:
On Wed, Jan 17, 2024 at 12:13 AM Patrice Chotard patrice.chotard@foss.st.com wrote:
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
common/console.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/common/console.c b/common/console.c index cad65891fc9..8bfcfce5643 100644 --- a/common/console.c +++ b/common/console.c @@ -1049,6 +1049,11 @@ 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; @@ -1060,19 +1065,13 @@ static void stdio_print_current_devices(void) 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!";
stdinname = stdinname ? : get_stdio(stdin);
stdoutname = stdoutname ? : get_stdio(stdout);
stderrname = stderrname ? : get_stdio(stderr); } 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 = get_stdio(stdin);
stdoutname = get_stdio(stdout);
stderrname = get_stdio(stderr); } /* Print information */
--
This can be further simplified to:
char *stdinname = NULL; char *stdoutname = NULL; char *stderrname NULL;
if (CONFIG_IS_ENABLED(CONSOLE_MUX) && CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV)) { /* stdin stdout and stderr are in environment */ stdinname = env_get("stdin"); stdoutname = env_get("stdout"); stderrname = env_get("stderr"); }
stdinname = stdinname ? : get_stdio(stdin); stdoutname = stdoutname ? : get_stdio(stdout); stderrname = stderrname ? : get_stdio(stderr);
Regards, Bin
Right, i will send a v2 Thanks
Patrice