From 7265f8d9b9bd15a05f51f30392928fd2f869b0cd Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Fri, 5 Jun 2015 22:49:27 -0700 Subject: 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 +#include +#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); } -- cgit v1.2.3 From b44b84beb3d7c3cf7e56bf1796d49102c5f9e562 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Sat, 6 Jun 2015 10:52:33 -0700 Subject: textscreen: Pass url directly to ShellExecute, snprintf unneeded --- textscreen/txt_window.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/textscreen/txt_window.c b/textscreen/txt_window.c index 44cdf9d1..41b8c8ef 100644 --- a/textscreen/txt_window.c +++ b/textscreen/txt_window.c @@ -521,11 +521,9 @@ void TXT_OpenURL(char *url) cmd_len = strlen(url) + 30; cmd = malloc(cmd_len); -#if defined(_WIN32) - TXT_snprintf(cmd, cmd_len, "%s", url); -#elif defined(__MACOSX__) +#if defined(__MACOSX__) TXT_snprintf(cmd, cmd_len, "open \"%s\"", url); -#else +#elif !defined(_WIN32) // The Unix situation sucks as usual, but the closest thing to a // standard that exists is the xdg-utils package. if (system("xdg-open --version 2>/dev/null") != 0) @@ -539,7 +537,7 @@ void TXT_OpenURL(char *url) #endif #if defined(_WIN32) - ShellExecute(NULL, "open", cmd, NULL, NULL, SW_SHOWNORMAL); + ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL); #else system(cmd); #endif -- cgit v1.2.3