mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-06 05:35:47 +01:00
Prepare session-metadata export to external command
This commit is contained in:
parent
0268489c78
commit
d169864b5b
4 changed files with 65 additions and 0 deletions
|
|
@ -236,6 +236,39 @@ SystemExec::SystemExec (std::string command, const std::map<char, std::string> s
|
|||
make_envp();
|
||||
}
|
||||
|
||||
char*
|
||||
SystemExec::format_key_value_parameter (std::string key, std::string value)
|
||||
{
|
||||
size_t start_pos = 0;
|
||||
std::string v1 = value;
|
||||
while((start_pos = v1.find_first_not_of(
|
||||
"abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789(),.\"'",
|
||||
start_pos)) != std::string::npos)
|
||||
{
|
||||
v1.replace(start_pos, 1, "_");
|
||||
start_pos += 1;
|
||||
}
|
||||
|
||||
start_pos = 0;
|
||||
while((start_pos = v1.find("\"", start_pos)) != std::string::npos) {
|
||||
v1.replace(start_pos, 1, "\\\"");
|
||||
start_pos += 2;
|
||||
}
|
||||
|
||||
size_t len = key.length() + v1.length() + 4;
|
||||
char *mds = (char*) calloc(len, sizeof(char));
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
/* SystemExec::make_wargs() adds quotes around the complete argument
|
||||
* windows uses CreateProcess() with a parameter string
|
||||
* (and not an array list of separate arguments)
|
||||
*/
|
||||
snprintf(mds, len, "%s=%s", key.c_str(), v1.c_str());
|
||||
#else
|
||||
snprintf(mds, len, "%s=\"%s\"", key.c_str(), v1.c_str());
|
||||
#endif
|
||||
return mds;
|
||||
}
|
||||
|
||||
void
|
||||
SystemExec::make_argp_escaped(std::string command, const std::map<char, std::string> subs)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue