Browse Source

Allow BX_CRT_MUSL to be defined via compiler options. Issue #142.

Branimir Karadžić 8 years ago
parent
commit
ccdb15b820
3 changed files with 14 additions and 1 deletions
  1. 4 1
      include/bx/platform.h
  2. 2 0
      src/string.cpp
  3. 8 0
      tests/vsnprintf_test.cpp

+ 4 - 1
include/bx/platform.h

@@ -34,9 +34,12 @@
 #define BX_CRT_LIBCXX 0
 #define BX_CRT_MINGW  0
 #define BX_CRT_MSVC   0
-#define BX_CRT_MUSL   0
 #define BX_CRT_NEWLIB 0
 
+#ifndef BX_CRT_MUSL
+#	define BX_CRT_MUSL 0
+#endif // BX_CRT_MUSL
+
 #ifndef BX_CRT_NONE
 #	define BX_CRT_NONE 0
 #endif // BX_CRT_NONE

+ 2 - 0
src/string.cpp

@@ -743,7 +743,9 @@ namespace bx
 						};
 						break;
 
+					case 'e':
 					case 'f':
+					case 'g':
 						param.upper = isUpper(ch);
 						size += write(_writer, va_arg(_argList, double), param, _err);
 						break;

+ 8 - 0
tests/vsnprintf_test.cpp

@@ -149,6 +149,14 @@ TEST_CASE("vsnprintf s", "")
 	REQUIRE(test("(null)", "%s", NULL) );
 }
 
+TEST_CASE("vsnprintf g", "")
+{
+	REQUIRE(test("   0.01",  "%7.3g", .01) );
+	REQUIRE(test(" 0.0123",  "%7.3G", .0123) );
+	REQUIRE(test("1.23e+05", "%.3g",  123000.25) );
+	REQUIRE(test("1e+05",    "%.0g",  123000.25) );
+}
+
 TEST_CASE("vsnprintf", "")
 {
 	REQUIRE(test("x", "%c", 'x') );