浏览代码

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.
Michael Vetter 7 年之前
父节点
当前提交
80dbe636cd
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      src/core.c

+ 5 - 2
src/core.c

@@ -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);
 }