foxygit / doom Log in
commit 7265f8d9b9bd15a05f51f30392928fd2f869b0cd
Author:     Mike Swanson <mikeonthecomputer@gmail.com>
AuthorDate: Fri Jun 5 22:49:27 2015 -0700
Commit:     Mike Swanson <mikeonthecomputer@gmail.com>
CommitDate: Fri Jun 5 22:49:27 2015 -0700

    textscreen: use ShellExecute on Windows to open URLs

    Trying to use the cmd.exe built-in has been causing nothing but
    troubles, this is the officially supported way to open them.
---
 textscreen/txt_window.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/textscreen/txt_window.c b/textscreen/txt_window.c
index 5aa35edf..44cdf9d1 100644
--- a/textscreen/txt_window.c
+++ b/textscreen/txt_window.c
@@ -27,6 +27,12 @@
 #include "txt_separator.h"
 #include "txt_window.h"

+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <shellapi.h>
+#endif
+
 void TXT_SetWindowAction(txt_window_t *window,
                          txt_horiz_align_t position,
                          txt_window_action_t *action)
@@ -516,7 +522,7 @@ void TXT_OpenURL(char *url)
     cmd = malloc(cmd_len);

 #if defined(_WIN32)
-    TXT_snprintf(cmd, cmd_len, "cmd /c start \"%s\"", url);
+    TXT_snprintf(cmd, cmd_len, "%s", url);
 #elif defined(__MACOSX__)
     TXT_snprintf(cmd, cmd_len, "open \"%s\"", url);
 #else
@@ -532,7 +538,11 @@ void TXT_OpenURL(char *url)
     TXT_snprintf(cmd, cmd_len, "xdg-open \"%s\"", url);
 #endif

+#if defined(_WIN32)
+    ShellExecute(NULL, "open", cmd, NULL, NULL, SW_SHOWNORMAL);
+#else
     system(cmd);
+#endif
     free(cmd);
 }