{ "%0-5d", 12, "12 " },
{ "%-05d", 12, "12 " },
- /* ...explicit precision of 0 shall be no characters. */
+ /* ...explicit precision of 0 shall be no characters except for alt-octal. */
{ "%.0d", 0, "" },
{ "%.0o", 0, "" },
{ "%#.0d", 0, "" },
- { "%#.0o", 0, "" },
+ { "%#.0o", 0, "0" },
{ "%#.0x", 0, "" },
/* ...but it still has to honor width and flags. */
{ "%o", 15, "17" },
{ "%#o", 15, "017" },
+ /* octal: corner cases */
+ { "%#o", 0, "0" },
+ { "%#.0o", 0, "0" },
+ { "%#.1o", 0, "0" },
+ { "%#o", 1, "01" },
+ { "%#.0o", 1, "01" },
+ { "%#.1o", 1, "01" },
+ { "%#04o", 1, "0001" },
+ { "%#04.0o", 1, " 01" },
+ { "%#04.1o", 1, " 01" },
+ { "%04o", 1, "0001" },
+ { "%04.0o", 1, " 1" },
+ { "%04.1o", 1, " 1" },
+
{ NULL, 0.0, NULL }
};
{ "%f", 1.3, "1.300000" },
{ "%f", 1.4, "1.400000" },
{ "%f", 1.5, "1.500000" },
- { "%.4f", 1.06125, "1.0612" },
+ { "%.4f", 1.06125, "1.0613" }, /* input is not representible exactly as double */
+ { "%.4f", 1.03125, "1.0312" }, /* 0x1.08p0 */
{ "%.2f", 1.375, "1.38" },
{ "%.1f", 1.375, "1.4" },
{ "%.1lf", 1.375, "1.4" },