Blob Blame History Raw
--- 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