diff --git a/src/Base/Tools.cpp b/src/Base/Tools.cpp index 2a45de076c..3c0bfcca1b 100644 --- a/src/Base/Tools.cpp +++ b/src/Base/Tools.cpp @@ -192,6 +192,38 @@ std::string Base::Tools::escapedUnicodeToUtf8(const std::string& s) return string; } +QString Base::Tools::escapeEncodeFilename(const QString& s) +{ + QString result; + const int len = s.length(); + result.reserve(int(len * 1.1)); + for (int i = 0; i < len; ++i) { + if (s.at(i) == QLatin1Char('\"')) + result += QLatin1String("\\\""); + else if (s.at(i) == QLatin1Char('\'')) + result += QLatin1String("\\\'"); + else + result += s.at(i); + } + result.squeeze(); + return result; +} + +std::string Base::Tools::escapeEncodeFilename(const std::string& s) +{ + std::string result; + size_t len = s.size(); + for (size_t i = 0; i < len; ++i) { + if (s.at(i) == '\"') + result += "\\\""; + else if (s.at(i) == '\'') + result += "\\\'"; + else + result += s.at(i); + } + return result; +} + // ---------------------------------------------------------------------------- using namespace Base; diff --git a/src/Base/Tools.h b/src/Base/Tools.h index 5c51974aa7..96ebdc1439 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -285,6 +285,9 @@ struct BaseExport Tools static std::string escapedUnicodeFromUtf8(const char *s); static std::string escapedUnicodeToUtf8(const std::string& s); + static QString escapeEncodeFilename(const QString& s); + static std::string escapeEncodeFilename(const std::string& s); + /** * @brief toStdString Convert a QString into a UTF-8 encoded std::string. * @param s String to convert.