Commit Diff


commit - 3d8c2326ed9a64ab1c48af6e5bd057ae8b3dd888
commit + 941b3761caf7ad45b24b9556161424d183021d97
blob - 76dfc8347db50cbb03bd085d30afe700a4ea9226
blob + 1404d6ee3e645292a65ee33d7afb83cc92cf241f
--- telescope.c
+++ telescope.c
@@ -412,7 +412,7 @@ add_to_bookmarks(const char *str)
 }
 
 int
-main(void)
+main(int argc, char **argv)
 {
 	struct imsgbuf	network_ibuf, fs_ibuf;
 	int		net_fds[2], fs_fds[2];
@@ -478,11 +478,11 @@ main(void)
 	event_set(&fsev, fsibuf->fd, EV_READ | EV_PERSIST, handle_dispatch_imsg, fsibuf);
 	event_add(&fsev, NULL);
 
-	ui_init();
-
-	sandbox_ui_process();
-
-	event_dispatch();
+	if (ui_init(argc, argv)) {
+		sandbox_ui_process();
+		event_dispatch();
+		ui_end();
+	}
 
 	imsg_compose(netibuf, IMSG_QUIT, 0, 0, -1, NULL, 0);
 	imsg_flush(netibuf);
@@ -490,7 +490,5 @@ main(void)
 	imsg_compose(fsibuf, IMSG_QUIT, 0, 0, -1, NULL, 0);
 	imsg_flush(fsibuf);
 
-	ui_end();
-
 	return 0;
 }
blob - e2832ad89223268a6cf04b4c834b19187fb671e6
blob + 690933f8d7ccea28dedb9434becc39ee5fd5ee74
--- telescope.h
+++ telescope.h
@@ -246,7 +246,7 @@ void		 add_to_bookmarks(const char*);
 void		 textplain_initparser(struct parser*);
 
 /* ui.c */
-int		 ui_init(void);
+int		 ui_init(int, const char**);
 void		 ui_on_tab_loaded(struct tab*);
 void		 ui_on_tab_refresh(struct tab*);
 void		 ui_require_input(struct tab*, int);
blob - e240653612f5732871f10d6d675377072efdfd6a
blob + afd5af58bc6dc398d89430885b0d128426610962
--- ui.c
+++ ui.c
@@ -137,6 +137,7 @@ static void		 enter_minibuffer(void(*)(void), void(*)(
 static void		 exit_minibuffer(void);
 static void		 switch_to_tab(struct tab*);
 static struct tab	*new_tab(const char*);
+static void		 usage(void);
 
 static struct { int meta, key; } thiskey;
 
@@ -1653,9 +1654,31 @@ new_tab(const char *url)
 	return tab;
 }
 
-int
-ui_init(void)
+static void
+usage(void)
 {
+	fprintf(stderr, "USAGE: %s [url]\n", getprogname());
+}
+
+int
+ui_init(int argc, const char **argv)
+{
+	const char *url = NEW_TAB_URL;
+	int ch;
+
+	while ((ch = getopt(argc, argv, "")) != -1) {
+		switch (ch) {
+		default:
+			usage();
+			return 0;
+		}
+	}
+	argc -= optind;
+	argv += optind;
+
+	if (argc != 0)
+		url = argv[0];
+
 	setlocale(LC_ALL, "");
 
 	TAILQ_INIT(&global_map.m);
@@ -1704,7 +1727,7 @@ ui_init(void)
 	signal_set(&winchev, SIGWINCH, handle_resize, NULL);
 	signal_add(&winchev, NULL);
 
-	new_tab(NEW_TAB_URL);
+	new_tab(url);
 
 	return 1;
 }