From 490a93a1d7a347ab586637bf9d8163e114285a02 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 24 Feb 2012 22:21:02 +0300 Subject: Add safe error string reporting function. --- src/logger.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/logger.cpp') diff --git a/src/logger.cpp b/src/logger.cpp index 8eba8fdb9..3c439136b 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -189,6 +189,34 @@ void Logger::log(const char *log_text, ...) delete [] buf; } +// here string must be safe for any usage +void Logger::safeError(const std::string &error_text) +{ + log("Error: %s", error_text.c_str()); +#ifdef WIN32 + MessageBox(nullptr, error_text.c_str(), "Error", MB_ICONERROR | MB_OK); +#elif defined __APPLE__ +// Str255 msg; +// CFStringRef error; +// error = CFStringCreateWithCString(nullptr, +// error_text.c_str(), +// kCFStringEncodingMacRoman); +// CFStringGetPascalString(error, msg, 255, kCFStringEncodingMacRoman); +// StandardAlert(kAlertStopAlert, +// (const unsigned char*)"\pError", +// (ConstStr255Param) msg, nullptr, nullptr); +#elif defined __linux__ || __linux + std::cerr << "Error: " << error_text << std::endl; + std::string msg = "xmessage \"" + error_text + "\""; + if (system(msg.c_str()) == -1) + std::cerr << "Error: " << error_text << std::endl; +#else + std::cerr << "Error: " << error_text << std::endl; +#endif + exit(1); +} + +// here string can be unsafe strings void Logger::error(const std::string &error_text) { log("Error: %s", error_text.c_str()); @@ -206,7 +234,7 @@ void Logger::error(const std::string &error_text) // (ConstStr255Param) msg, nullptr, nullptr); #elif defined __linux__ || __linux std::cerr << "Error: " << error_text << std::endl; - std::string msg = "xmessage \"Error happand. Please see log file for more information.\""; + std::string msg = "xmessage \"Error happend. Please see log file for more information.\""; if (system(msg.c_str()) == -1) std::cerr << "Error: " << error_text << std::endl; #else -- cgit v1.2.3-60-g2f50