diff options
author | Jose <jose@zeroc.com> | 2017-01-09 17:01:31 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2017-01-09 17:01:31 +0100 |
commit | d4ed7973f1824478477be29989fc125b04207494 (patch) | |
tree | ec488f46a0ee15f987a0a24c87d1fe0a999cc168 /cpp/src/Slice/SliceUtil.cpp | |
parent | IceSSL C#/Java test fixes to sync with C++ changes (diff) | |
download | ice-d4ed7973f1824478477be29989fc125b04207494.tar.bz2 ice-d4ed7973f1824478477be29989fc125b04207494.tar.xz ice-d4ed7973f1824478477be29989fc125b04207494.zip |
Fixed (ICE-6694) - Unicode output in command line tools
Diffstat (limited to 'cpp/src/Slice/SliceUtil.cpp')
-rw-r--r-- | cpp/src/Slice/SliceUtil.cpp | 96 |
1 files changed, 34 insertions, 62 deletions
diff --git a/cpp/src/Slice/SliceUtil.cpp b/cpp/src/Slice/SliceUtil.cpp index 09dd9e312ec..b148b91dea7 100644 --- a/cpp/src/Slice/SliceUtil.cpp +++ b/cpp/src/Slice/SliceUtil.cpp @@ -7,11 +7,15 @@ // // ********************************************************************** +#include <IceUtil/DisableWarnings.h> #include <Slice/Util.h> +#include <Slice/FileTracker.h> #include <IceUtil/FileUtil.h> #include <IceUtil/StringUtil.h> #include <IceUtil/StringConverter.h> +#include <IceUtil/ConsoleUtil.h> #include <climits> +#include <cstring> #ifndef _MSC_VER # include <unistd.h> // For readlink() @@ -19,6 +23,7 @@ using namespace std; using namespace Slice; +using namespace IceUtilInternal; namespace { @@ -210,38 +215,19 @@ Slice::changeInclude(const string& p, const vector<string>& includePaths) return result; } -namespace -{ - -ostream* errorStream = &cerr; - -} - -void -Slice::setErrorStream(ostream& stream) -{ - errorStream = &stream; -} - -ostream& -Slice::getErrorStream() -{ - return *errorStream; -} - void Slice::emitError(const string& file, int line, const string& message) { if(!file.empty()) { - *errorStream << file; + consoleErr << file; if(line != -1) { - *errorStream << ':' << line; + consoleErr << ':' << line; } - *errorStream << ": "; + consoleErr << ": "; } - *errorStream << message << endl; + consoleErr << message << endl; } void @@ -249,14 +235,14 @@ Slice::emitWarning(const string& file, int line, const string& message) { if(!file.empty()) { - *errorStream << file; + consoleErr << file; if(line != -1) { - *errorStream << ':' << line; + consoleErr << ':' << line; } - *errorStream << ": "; + consoleErr << ": "; } - *errorStream << "warning: " << message << endl; + consoleErr << "warning: " << message << endl; } void @@ -264,14 +250,14 @@ Slice::emitError(const string& file, const std::string& line, const string& mess { if(!file.empty()) { - *errorStream << file; + consoleErr << file; if(!line.empty()) { - *errorStream << ':' << line; + consoleErr << ':' << line; } - *errorStream << ": "; + consoleErr << ": "; } - *errorStream << message << endl; + consoleErr << message << endl; } void @@ -279,20 +265,20 @@ Slice::emitWarning(const string& file, const std::string& line, const string& me { if(!file.empty()) { - *errorStream << file; + consoleErr << file; if(!line.empty()) { - *errorStream << ':' << line; + consoleErr << ':' << line; } - *errorStream << ": "; + consoleErr << ": "; } - *errorStream << "warning: " << message << endl; + consoleErr << "warning: " << message << endl; } void Slice::emitRaw(const char* message) { - *errorStream << message << flush; + consoleErr << message << flush; } vector<string> @@ -398,41 +384,27 @@ Slice::printGeneratedHeader(IceUtilInternal::Output& out, const string& path, co out << comment << "\n"; } -Slice::DependOutputUtil::DependOutputUtil(string& file) : _file(file) +void +Slice::writeDependencies(const string& dependencies, const string& dependFile) { - if(!_file.empty()) + if(dependFile.empty()) { - _os.open(file.c_str(), ios::out); + consoleOut << dependencies << flush; } -} - -Slice::DependOutputUtil::~DependOutputUtil() -{ - if(!_file.empty() && _os.is_open()) + else { - _os.close(); - } -} - -void -Slice::DependOutputUtil::cleanup() -{ - if(!_file.empty()) - { - if(_os.is_open()) + ofstream of(IceUtilInternal::streamFilename(dependFile).c_str()); // dependFile is a UTF-8 string + if(!of) { - _os.close(); + ostringstream os; + os << "cannot open file `" << dependFile << "': " << strerror(errno); + throw Slice::FileException(__FILE__, __LINE__, os.str()); } - IceUtilInternal::unlink(_file); + of << dependencies; + of.close(); } } -ostream& -Slice::DependOutputUtil::os() -{ - return _file.empty() ? cout : _os; -} - #ifdef _WIN32 vector<string> Slice::argvToArgs(int argc, wchar_t* argv[]) |