core: OpenURL() fix xdg-open call

Calling just `xdg-open` is not right. One needs to pack the URL in `'`.
If we don't do this then some special characters (like ampersand) will
be executed.

Maybe this is true for Windows and Apple case too, but I don't own any
such system. So please merge this, and if it's true for more cases let's
use `sprintf()` in the other cases too.
This commit is contained in:
Michael Vetter 2018-11-10 08:36:15 +01:00
parent 4c83cee810
commit 80dbe636cd
1 changed files with 5 additions and 2 deletions

View File

@ -1823,14 +1823,17 @@ int StorageLoadValue(int position)
void OpenURL(const char *url)
{
char *cmd = calloc(10 + strlen(url), sizeof(char));
#if defined(_WIN32)
strcpy(cmd, "explorer ");
strcat(cmd, url);
#elif defined(__linux__)
strcpy(cmd, "xdg-open "); // Alternatives: firefox, x-www-browser
sprintf(cmd, "xdg-open '%s'", url); // Alternatives: firefox, x-www-browser
#elif defined(__APPLE__)
strcpy(cmd, "open ");
#endif
strcat(cmd, url);
#endif
system(cmd);
free(cmd);
}