diff mbox series

common: console: Fix print complete stdio device list

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

Commit Message

Patrice CHOTARD Jan. 16, 2024, 4:12 p.m. UTC
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(-)

Comments

Bin Meng Jan. 16, 2024, 4:29 p.m. UTC | #1
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
Patrice CHOTARD Jan. 17, 2024, 12:22 p.m. UTC | #2
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 mbox series

Patch

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 */