+2013-10-15 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/kern/misc.c (grub_vsnprintf_real): Handle %% properly.
+ * tests/printf_unit_test.c (printf_test): Add %% tests.
+ Reported by: Paulo Flabiano Smorigo.
+
2013-10-15 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/osdep/windows/hostdisk.c (fsync) [__MINGW32__]: Really
#include <grub/test.h>
#include <grub/misc.h>
-#define MSG "printf test failed"
+#define MSG "printf test failed: %s, %s", real, expected
static void
printf_test (void)
{
char real[512];
char expected[512];
+
+ grub_snprintf (real, sizeof (real), "%d%%", 10);
+ snprintf (expected, sizeof (expected), "%d%%", 10);
+ grub_test_assert (strcmp (real, expected) == 0, MSG);
+
+ grub_snprintf (real, sizeof (real), "%d %%", 10);
+ snprintf (expected, sizeof (expected), "%d %%", 10);
+ grub_test_assert (strcmp (real, expected) == 0, MSG);
+
+ grub_snprintf (real, sizeof (real), "%%");
+ snprintf (expected, sizeof (expected), "%%");
+ grub_test_assert (strcmp (real, expected) == 0, MSG);
+
grub_snprintf (real, sizeof (real), "%d %d %d", 1, 2, 3);
snprintf (expected, sizeof (expected), "%d %d %d", 1, 2, 3);
grub_test_assert (strcmp (real, expected) == 0, MSG);