--- a/gozilla/gozilla.c 2017/10/21 12:55:58 1.70
+++ b/gozilla/gozilla.c 2017/12/16 05:18:38 1.71
@@ -611,7 +611,8 @@
void
show_page_by_url(const char *browser, const char *url)
{
- char com[1024];
+ STRBUF *sb = strbuf_open(0);
+ STRBUF *arg = strbuf_open(0);
/*
* Browsers which have openURL() command.
@@ -624,22 +625,33 @@
locatestring(browser, "netscape", MATCH_AT_LAST) ||
locatestring(browser, "netscape-remote", MATCH_AT_LAST))
{
- snprintf(com, sizeof(com), "%s -remote \"openURL(%s)\"", browser, url);
- system(com);
+ strbuf_puts(sb, quote_shell(browser));
+ strbuf_putc(sb, ' ');
+ strbuf_puts(sb, "-remote");
+ strbuf_putc(sb, ' ');
+ strbuf_sprintf(arg, "openURL(%s)", url);
+ strbuf_puts(sb, quote_shell(strbuf_value(arg)));
+ system(strbuf_value(sb));
}
/*
* Load default browser of OSX.
*/
else if (!strcmp(browser, "osx-default")) {
- snprintf(com, sizeof(com), "open \"%s\"", make_url_file(url));
- system(com);
+ strbuf_puts(sb, "open");
+ strbuf_putc(sb, ' ');
+ strbuf_puts(sb, quote_shell(make_url_file(url)));
+ system(strbuf_value(sb));
}
/*
* Generic browser.
*/
else {
- snprintf(com, sizeof(com), "%s \"%s\"", browser, url);
- system(com);
+ strbuf_puts(sb, quote_shell(browser));
+ strbuf_putc(sb, ' ');
+ strbuf_puts(sb, quote_shell(url));
+ system(strbuf_value(sb));
}
+ strbuf_close(sb);
+ strbuf_close(arg);
}
#endif