Merge pull request #346 from pvsr/safer-edit

Pass lyrics filename in single quotes
This commit is contained in:
Larson Carter
2019-09-30 17:55:13 -05:00
committed by GitHub
3 changed files with 17 additions and 2 deletions

View File

@@ -326,9 +326,10 @@ void Lyrics::edit()
GNUC_UNUSED int res;
std::string command;
std::string filename = lyricsFilename(m_song);
escapeSingleQuotes(filename);
if (Config.use_console_editor)
{
command = "/bin/sh -c \"" + Config.external_editor + " \\\"" + filename + "\\\"\"";
command = Config.external_editor + " '" + filename + "'";
NC::pauseScreen();
res = system(command.c_str());
NC::unpauseScreen();
@@ -337,7 +338,7 @@ void Lyrics::edit()
else
{
command = "nohup " + Config.external_editor
+ " \"" + filename + "\" > /dev/null 2>&1 &";
+ " '" + filename + "' > /dev/null 2>&1 &";
res = system(command.c_str());
}
}

View File

@@ -96,3 +96,15 @@ void removeInvalidCharsFromFilename(std::string &filename, bool win32_compatible
}
}
}
void escapeSingleQuotes(std::string &filename)
{
for (size_t i = 0; i < filename.length(); ++i)
{
if (filename[i] == '\'')
{
filename.replace(i, 1, "'\\''");
i += 3;
}
}
}

View File

@@ -60,4 +60,6 @@ std::string getEnclosedString(const std::string &s, char a, char b, size_t *pos)
void removeInvalidCharsFromFilename(std::string &filename, bool win32_compatible);
void escapeSingleQuotes(std::string &filename);
#endif // NCMPCPP_UTILITY_STRING_H