diff options
-rw-r--r-- | Userland/Libraries/LibC/scanf.cpp | 8 | ||||
-rw-r--r-- | Userland/Tests/LibC/scanf.cpp | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/Userland/Libraries/LibC/scanf.cpp b/Userland/Libraries/LibC/scanf.cpp index aae825a426..964f219d72 100644 --- a/Userland/Libraries/LibC/scanf.cpp +++ b/Userland/Libraries/LibC/scanf.cpp @@ -418,6 +418,14 @@ extern "C" int vsscanf(const char* input, const char* format, va_list ap) format_lexer.ignore(); // '%' + // Parse width specification + [[maybe_unused]] int width_specifier = 0; + if (format_lexer.next_is(isdigit)) { + auto width_digits = format_lexer.consume_while([](char c) { return isdigit(c); }); + width_specifier = width_digits.to_int().value(); + // FIXME: Actually use width specifier + } + bool invert_scanlist = false; StringView scanlist; LengthModifier length_modifier { None }; diff --git a/Userland/Tests/LibC/scanf.cpp b/Userland/Tests/LibC/scanf.cpp index 73f6c858ad..a23e93316b 100644 --- a/Userland/Tests/LibC/scanf.cpp +++ b/Userland/Tests/LibC/scanf.cpp @@ -170,6 +170,7 @@ const TestSuite test_suites[] { { "%d", "", 0, 0, {}, {} }, { "%x", "0x519", 1, 1, { unsignedarg0 }, { to_value_t(0x519) } }, { "%x", "0x51g", 1, 1, { unsignedarg0 }, { to_value_t(0x51u) } }, + { "%06x", "0xabcdef", 1, 1, { unsignedarg0 }, { to_value_t(0xabcdefu) } }, { "\"%%%d#", "\"%42#", 1, 1, { intarg0 }, { to_value_t(42) } }, { " %d", "42", 1, 1, { intarg0 }, { to_value_t(42) } }, { "%d", " 42", 1, 1, { intarg0 }, { to_value_t(42) } }, |