diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-05-11 13:48:42 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-05-20 13:54:47 -0400 |
commit | efb62965db7cfaa15ccd60956209e5d133e99de4 (patch) | |
tree | a4dd65e9cbd4b80bbec422771037c31748c988f7 | |
parent | e55eb3bd5d7b5e1bc348d5d8b75da4563fd4a74e (diff) |
vsprintf: Refactor fourcc_string()
- We're attempting to consolidate printf_spec and format string
handling in the top level vpr_buf(), this changes fourcc_string() to
not take printf_spec
- With the new printbuf helpers there's no need to use a separate stack
allocated buffer, so this patch deletes it.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | lib/vsprintf.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index dd4bbb28e7bd..3d17ddad3155 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1702,17 +1702,15 @@ void netdev_bits(struct printbuf *out, const void *addr, static noinline_for_stack void fourcc_string(struct printbuf *out, const u32 *fourcc, - struct printf_spec spec, const char *fmt) + const char *fmt) { - char output_buf[sizeof("0123 little-endian (0x01234567)")]; - struct printbuf output = PRINTBUF_EXTERN(output_buf, sizeof(output_buf)); unsigned int i; u32 val; if (fmt[1] != 'c' || fmt[2] != 'c') - return error_string_spec(out, "(%p4?)", spec); + return error_string(out, "(%p4?)"); - if (check_pointer_spec(out, fourcc, spec)) + if (check_pointer(out, fourcc)) return; val = *fourcc & ~BIT(31); @@ -1721,18 +1719,17 @@ void fourcc_string(struct printbuf *out, const u32 *fourcc, unsigned char c = val >> (i * 8); /* Print non-control ASCII characters as-is, dot otherwise */ - __pr_char(&output, isascii(c) && isprint(c) ? c : '.'); + __pr_char(out, isascii(c) && isprint(c) ? c : '.'); } - pr_str(&output, *fourcc & BIT(31) ? " big-endian" : " little-endian"); + pr_str(out, *fourcc & BIT(31) ? " big-endian" : " little-endian"); - __pr_char(&output, ' '); - __pr_char(&output, '('); - special_hex_number(&output, *fourcc, sizeof(u32)); - __pr_char(&output, ')'); - printbuf_nul_terminate(&output); + __pr_char(out, ' '); + __pr_char(out, '('); + special_hex_number(out, *fourcc, sizeof(u32)); + __pr_char(out, ')'); - string_spec(out, output_buf, spec); + printbuf_nul_terminate(out); } static noinline_for_stack @@ -2340,7 +2337,8 @@ void pointer(struct printbuf *out, const char *fmt, netdev_bits(out, ptr, fmt); return do_width_precision(out, prev_pos, spec); case '4': - return fourcc_string(out, ptr, spec, fmt); + fourcc_string(out, ptr, fmt); + return do_width_precision(out, prev_pos, spec); case 'a': address_val(out, ptr, fmt); return do_width_precision(out, prev_pos, spec); |