- // make sure string isn't empty...
- while ( (*browser) && (isspace(*browser)) ) browser++;
- if (*browser == '\0') return false;
-
- bool seenurl = false;
- char buf[4096]; // !!! FIXME: we aren't checking for overflow here!
- char *dst = buf;
- while (*browser)
+#ifdef WIN32
+ ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
+
+#elif (defined(__APPLE__) && defined(__MACH__))
+ const char *fmt = "open '%s'";
+ const size_t len = strlen(fmt) + strlen(url) + 16;
+ char *buf = new char[len];
+ snprintf(buf, len, fmt, url);
+ system(buf);
+ delete[] buf;
+
+#elif PLATFORM_LINUX
+ const char *fmt = "PATH=$PATH:. xdg-open '%s'";
+ const size_t len = strlen(fmt) + strlen(url) + 16;
+ char *buf = new char[len];
+ snprintf(buf, len, fmt, url);
+ system(buf);
+ delete[] buf;
+#endif
+}
+
+
+#ifndef WIN32
+// (code lifted from physfs: http://icculus.org/physfs/ ... zlib license.)
+static char *findBinaryInPath(const char *bin, char *envr)
+{
+ size_t alloc_size = 0;
+ char *exe = NULL;
+ char *start = envr;
+ char *ptr;
+
+ do