+static void
+test_64bit2 (void)
+{
+ gint res;
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_FORMAT, (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_FORMAT, (gint64)-123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*-123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GUINT64_FORMAT, (guint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_MODIFIER "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" G_GINT64_MODIFIER "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_MODIFIER "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" G_GINT64_MODIFIER "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0x1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" G_GINT64_MODIFIER "X", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1E240*");
+
+#ifdef G_OS_WIN32
+ /* On Win32, test that the "ll" modifier also works, for backward
+ * compatibility. One really should use the G_GINT64_MODIFIER (which
+ * on Win32 is the "I64" that the (msvcrt) C library's printf uses),
+ * but "ll" used to work with the "trio" g_printf implementation in
+ * GLib 2.2, so it's best if it continues to work.
+ */
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "lli", (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "lli", (gint64)-123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*-123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "llu", (guint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*123456*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "ll" "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 6);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" "ll" "o", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0361100*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "ll" "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%#" "ll" "x", (gint64)123456);
+ g_assert_cmpint (res, ==, 7);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*0x1e240*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
+ {
+ res = g_printf ("%" "ll" "X", (gint64)123456);
+ g_assert_cmpint (res, ==, 5);
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stdout ("*1E240*");
+#endif
+}
+