mu: convert command-line tools to c++
This commit is contained in:
@ -195,18 +195,8 @@ Sexp::Node::to_string () const
|
||||
break;
|
||||
}
|
||||
case Type::String:
|
||||
//sstrm << quote(value());
|
||||
sstrm << "\"";
|
||||
for (auto&& k: value()) {
|
||||
switch (k) {
|
||||
case '"' : sstrm << "\\\""; break;
|
||||
case '\\': sstrm << "\\\\"; break;
|
||||
default: sstrm << k;
|
||||
}
|
||||
}
|
||||
sstrm << "\"";
|
||||
sstrm << quote(value());
|
||||
break;
|
||||
|
||||
case Type::Number:
|
||||
case Type::Symbol:
|
||||
default:
|
||||
|
||||
@ -309,7 +309,7 @@ typedef gpointer XapianEnquire;
|
||||
} while (0)
|
||||
|
||||
|
||||
#define MU_G_ERROR_CODE(GE) ((GE)&&(*(GE))?(*(GE))->code:MU_ERROR)
|
||||
#define MU_G_ERROR_CODE(GE) ((GE)&&(*(GE))?(MuError)(*(GE))->code:MU_ERROR)
|
||||
|
||||
|
||||
enum _MuError {
|
||||
|
||||
@ -165,14 +165,17 @@ Mu::split (const std::string& str, const std::string& sepa)
|
||||
std::string
|
||||
Mu::quote (const std::string& str)
|
||||
{
|
||||
char *s = g_strescape (str.c_str(), NULL);
|
||||
if (!s)
|
||||
return {};
|
||||
std::string res{"\""};
|
||||
|
||||
std::string res (s);
|
||||
g_free (s);
|
||||
for (auto&& k: str) {
|
||||
switch (k) {
|
||||
case '"' : res += "\\\""; break;
|
||||
case '\\': res += "\\\\"; break;
|
||||
default: res += k;
|
||||
}
|
||||
}
|
||||
|
||||
return "\"" + res + "\"";
|
||||
return res + "\"";
|
||||
}
|
||||
|
||||
std::string
|
||||
|
||||
@ -65,7 +65,7 @@ std::vector<std::string> split (const std::string& str,
|
||||
const std::string& sepa);
|
||||
|
||||
/**
|
||||
* Quote & escape a string
|
||||
* Quote & escape a string for " and \
|
||||
*
|
||||
* @param str a string
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user