summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/Parser.cpp')
-rw-r--r--cpp/src/IceStorm/Parser.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/IceStorm/Parser.cpp b/cpp/src/IceStorm/Parser.cpp
index ca0c0c5ae7b..df8decb2e14 100644
--- a/cpp/src/IceStorm/Parser.cpp
+++ b/cpp/src/IceStorm/Parser.cpp
@@ -30,6 +30,10 @@ namespace IceStorm
Parser* parser;
+#ifdef _WIN32
+Ice::StringConverterPtr windowsConsoleConverter = 0;
+#endif
+
}
namespace
@@ -489,13 +493,17 @@ Parser::getInput(char* buf, size_t& result, size_t maxSize)
}
line += c;
-
if(c == '\n')
{
break;
}
}
-
+#ifdef _WIN32
+ if(windowsConsoleConverter)
+ {
+ line = nativeToUTF8(line, windowsConsoleConverter);
+ }
+#endif
result = line.length();
if(result > maxSize)
{
@@ -661,6 +669,12 @@ Parser::Parser(const CommunicatorPtr& communicator, const TopicManagerPrx& admin
_defaultManager(admin),
_managers(managers)
{
+#ifdef _WIN32
+ if(!windowsConsoleConverter)
+ {
+ windowsConsoleConverter = Ice::createWindowsStringConverter(GetConsoleOutputCP());
+ }
+#endif
}
void