diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-05-09 22:56:14 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-05-20 13:54:47 -0400 |
commit | 69891e27d9feceda296c1b4283c35d805a322775 (patch) | |
tree | 068bdeb359e98549eca425cf09572d7d9a534920 | |
parent | 7e8058df8574fd40f744074dece56df3ccfe7fe2 (diff) |
vsprintf: Refactor mac_address_string()
- We're attempting to consolidate printf_spec and format string
handling in the top level vpr_buf(), this changes mac_address_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 | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 62a221522c77..76947e0d30a5 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1233,15 +1233,13 @@ void bitmap_list_string(struct printbuf *out, unsigned long *bitmap, static noinline_for_stack void mac_address_string(struct printbuf *out, u8 *addr, - struct printf_spec spec, const char *fmt) + const char *fmt) { - char mac_addr[sizeof("xx:xx:xx:xx:xx:xx")]; - char *p = mac_addr; int i; char separator; bool reversed = false; - if (check_pointer_spec(out, addr, spec)) + if (check_pointer(out, addr)) return; switch (fmt[1]) { @@ -1260,16 +1258,13 @@ void mac_address_string(struct printbuf *out, u8 *addr, for (i = 0; i < 6; i++) { if (reversed) - p = hex_byte_pack(p, addr[5 - i]); + pr_hex_byte(out, addr[5 - i]); else - p = hex_byte_pack(p, addr[i]); + pr_hex_byte(out, addr[i]); if (fmt[0] == 'M' && i != 5) - *p++ = separator; + pr_char(out, separator); } - *p = '\0'; - - string_nocheck(out, mac_addr, spec); } static noinline_for_stack @@ -2270,7 +2265,8 @@ void pointer(struct printbuf *out, const char *fmt, case 'm': /* Contiguous: 000102030405 */ /* [mM]F (FDDI) */ /* [mM]R (Reverse order; Bluetooth) */ - return mac_address_string(out, ptr, spec, fmt); + mac_address_string(out, ptr, fmt); + return do_width_precision(out, prev_pos, spec); case 'I': /* Formatted IP supported * 4: 1.2.3.4 * 6: 0001:0203:...:0708 |