[PATCH] common: console: Fix print complete stdio device list
Patrice CHOTARD
patrice.chotard at foss.st.com
Wed Jan 17 13:22:51 CET 2024
On 1/16/24 17:29, Bin Meng wrote:
> On Wed, Jan 17, 2024 at 12:13 AM Patrice Chotard
> <patrice.chotard at 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 at 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
More information about the U-Boot
mailing list