]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/nolibc: Use printf variable field widths and precisions
authorDavid Laight <david.laight.linux@gmail.com>
Sun, 8 Mar 2026 11:37:42 +0000 (11:37 +0000)
committerThomas Weißschuh <linux@weissschuh.net>
Fri, 20 Mar 2026 16:58:26 +0000 (17:58 +0100)
Now that printf supports '*' for field widths and precisions
then can be used to simplify the test output.
 - aligning the "[OK]" strings.
 - reporting the expected sprintf() output when there is a mismatch.

Signed-off-by: David Laight <david.laight.linux@gmail.com>
Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://patch.msgid.link/20260308113742.12649-18-david.laight.linux@gmail.com
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
tools/testing/selftests/nolibc/nolibc-test.c

index 7836162dcd2f0a09a258df0f22fbd28f112d7649..0ca695acbc444d3832e3809dde20b85953c92f95 100644 (file)
@@ -164,21 +164,6 @@ static const char *errorname(int err)
        }
 }
 
-static void align_result(size_t llen)
-{
-       const size_t align = 64;
-       char buf[align];
-       size_t n;
-
-       if (llen >= align)
-               return;
-
-       n = align - llen;
-       memset(buf, ' ', n);
-       buf[n] = '\0';
-       fputs(buf, stdout);
-}
-
 enum RESULT {
        OK,
        FAIL,
@@ -196,8 +181,10 @@ static void result(int llen, enum RESULT r)
        else
                msg = " [FAIL]";
 
-       align_result(llen);
-       puts(msg);
+       llen = 64 - llen;
+       if (llen < 0)
+               llen = 0;
+       printf("%*s%s\n", llen, "", msg);
 }
 
 /* The tests below are intended to be used by the macroes, which evaluate
@@ -1700,10 +1687,7 @@ static int expect_vfprintf(int llen, const char *expected, const char *fmt, ...)
        }
 
        if (memcmp(expected, buf, cmp_len) || buf[cmp_len]) {
-               /* Copy and truncate until "%.*s" supported */
-               memcpy(buf, expected, cmp_len);
-               buf[cmp_len] = 0;
-               llen += printf(" should be \"%s\"", buf);
+               llen += printf(" should be \"%.*s\"", VFPRINTF_LEN, expected);
                result(llen, FAIL);
                return 1;
        }