[PATCH v6 03/12] lib: sbi: Add '+' flags for print

Anup Patel anup at brainfault.org
Mon Jul 3 21:08:25 PDT 2023


On Mon, Jun 12, 2023 at 1:40 PM Xiang W <wxjstz at 126.com> wrote:

No patch description ?

>
> Signed-off-by: Xiang W <wxjstz at 126.com>
> ---
>  lib/sbi/sbi_console.c | 25 ++++++++++++++++---------
>  1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/lib/sbi/sbi_console.c b/lib/sbi/sbi_console.c
> index b7d0896..75fd5ac 100644
> --- a/lib/sbi/sbi_console.c
> +++ b/lib/sbi/sbi_console.c
> @@ -120,6 +120,7 @@ unsigned long sbi_ngets(char *str, unsigned long len)
>  #define PAD_RIGHT 1
>  #define PAD_ZERO 2
>  #define PAD_ALTERNATE 4
> +#define PAD_SIGN 8
>  #define PRINT_BUF_LEN 64
>
>  #define va_start(v, l) __builtin_va_start((v), l)
> @@ -186,15 +187,18 @@ static int prints(char **out, u32 *out_len, const char *string, int width,
>  static int printi(char **out, u32 *out_len, long long i, int b, int sg,
>                   int width, int flags, int letbase)
>  {
> -       char print_buf[PRINT_BUF_LEN];
> -       char *s;
> -       int neg = 0, pc = 0;
> +       char *s, sign, print_buf[PRINT_BUF_LEN];
> +       int pc = 0;
>         u64 t;
>         unsigned long long u = i;
>
> -       if (sg && b == 10 && i < 0) {
> -               neg = 1;
> -               u   = -i;
> +       if (sg && b == 10) {
> +               if ((flags & PAD_SIGN) && i > 0)
> +                       sign = '+';
> +               if (i < 0) {
> +                       sign = '-';
> +                       u = -i;
> +               }
>         }
>
>         s  = print_buf + PRINT_BUF_LEN - 1;
> @@ -221,13 +225,13 @@ static int printi(char **out, u32 *out_len, long long i, int b, int sg,
>                 *--s = '0';
>         }
>
> -       if (neg) {
> +       if (sign) {
>                 if (width && (flags & PAD_ZERO)) {
> -                       printc(out, out_len, '-');
> +                       printc(out, out_len, sign);
>                         ++pc;
>                         --width;
>                 } else {
> -                       *--s = '-';
> +                       *--s = sign;
>                 }
>         }
>
> @@ -275,6 +279,9 @@ static int print(char **out, u32 *out_len, const char *format, va_list args)
>                                 case '-':
>                                         flags |= PAD_RIGHT;
>                                         break;
> +                               case '+':
> +                                       flags |= PAD_SIGN;
> +                                       break;
>                                 case '#':
>                                         flags |= PAD_ALTERNATE;
>                                         break;
> --
> 2.39.2
>

Otherwise, it looks good to me.

Reviewed-by: Anup Patel <anup at brainfault.org>

Regards,
Anup



More information about the opensbi mailing list