Message ID | 20240116161231.741794-1-patrice.chotard@foss.st.com |
---|---|
State | Changes Requested |
Delegated to: | Bin Meng |
Headers | show |
Series | common: console: Fix print complete stdio device list | expand |
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
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
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 */
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(-)