aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg_Strings.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-03-04 06:10:59 -0800
committerRobert Schumacher <roschuma@microsoft.com>2017-03-04 06:11:24 -0800
commit4806aaf460465b972ad1b6203ca744431b296ade (patch)
treedf37ae1893d3bd40b1680d9bf831c170a08e212b /toolsrc/src/vcpkg_Strings.cpp
parentc055def45369d89c3b3fca3e57b57a9547d3b6a6 (diff)
downloadvcpkg-4806aaf460465b972ad1b6203ca744431b296ade.tar.gz
vcpkg-4806aaf460465b972ad1b6203ca744431b296ade.zip
[vcpkg] Remove more uses of iostreams. Force 'C' locale -- localization is TODO.
Diffstat (limited to 'toolsrc/src/vcpkg_Strings.cpp')
-rw-r--r--toolsrc/src/vcpkg_Strings.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/toolsrc/src/vcpkg_Strings.cpp b/toolsrc/src/vcpkg_Strings.cpp
index 35ebcc90f..a7805f211 100644
--- a/toolsrc/src/vcpkg_Strings.cpp
+++ b/toolsrc/src/vcpkg_Strings.cpp
@@ -15,14 +15,20 @@ namespace vcpkg::Strings::details
return static_cast<char>(std::tolower(c));
}
+ static _locale_t& c_locale()
+ {
+ static _locale_t c_locale_impl = _create_locale(LC_ALL, "C");
+ return c_locale_impl;
+ }
+
std::string format_internal(const char* fmtstr, ...)
{
va_list lst;
va_start(lst, fmtstr);
- const int sz = _vscprintf(fmtstr, lst);
+ const int sz = _vscprintf_l(fmtstr, c_locale(), lst);
std::string output(sz, '\0');
- _vsnprintf_s(&output[0], output.size() + 1, output.size() + 1, fmtstr, lst);
+ _vsnprintf_s_l(&output[0], output.size() + 1, output.size() + 1, fmtstr, c_locale(), lst);
va_end(lst);
return output;
@@ -33,9 +39,9 @@ namespace vcpkg::Strings::details
va_list lst;
va_start(lst, fmtstr);
- const int sz = _vscwprintf(fmtstr, lst);
+ const int sz = _vscwprintf_l(fmtstr, c_locale(), lst);
std::wstring output(sz, '\0');
- _vsnwprintf_s(&output[0], output.size() + 1, output.size() + 1, fmtstr, lst);
+ _vsnwprintf_s_l(&output[0], output.size() + 1, output.size() + 1, fmtstr, c_locale(), lst);
va_end(lst);
return output;