Commit Diff


commit - 057e7eb6f1bc703a5d90e6ca41a5506008b850e9
commit + 2f0ffab47b34449e9e24a05e408e9d6983b24ba8
blob - 55e409f587dd8e950bd3e92ff391b43de995028d
blob + 8d99448e05f0635c4fb2697c80b760e1ef89441a
--- downloads.c
+++ downloads.c
@@ -119,5 +119,5 @@ download_finished(struct download *d)
 	d->fd = -1;
 
 	ui_on_download_refresh();
-	ui_prompt_download_cmd(d->path, d->mime_type);
+	ui_prompt_download_cmd(d);
 }
blob - b3aac44246bce82d209ffde2fc02cfe429b21132
blob + 3d80b3f3f90db230627a5809a6ffa98ec5f41a27
--- ui.c
+++ ui.c
@@ -1257,20 +1257,33 @@ ui_on_download_refresh(void)
 	    handle_download_refresh, NULL);
 }
 
-void
-ui_prompt_download_cmd(char *path, char *mime_type)
+static void
+open_download(int res, void *data)
 {
+	struct download	*d = data;
 	struct mailcap 	*mc = NULL;
 	enum exec_mode	 mode = EXEC_BACKGROUND;
 
-	if ((mc = mailcap_cmd_from_mimetype(mime_type, path)) == NULL)
+	if (!res)
 		return;
 
+	if ((mc = mailcap_cmd_from_mimetype(d->mime_type, d->path)) == NULL)
+		return;
+
 	if (mc->flags & MAILCAP_NEEDSTERMINAL)
 		mode = EXEC_FOREGROUND;
 
-	message("Loaded %s with %s", mime_type, mc->cmd_argv[0]);
+	message("Loaded %s with %s", d->mime_type, mc->cmd_argv[0]);
 	exec_external_cmd(mc->cmd_argv, mode);
+}
+
+void
+ui_prompt_download_cmd(struct download *d)
+{
+	char		 prompt[64];
+
+	snprintf(prompt, sizeof(prompt), "Open %s?", d->path);
+	ui_yornp(prompt, open_download, d);
 }
 
 void
blob - b8bcbd9cefc98b72e3145e0b46cbf84318f07f98
blob + 455b6a9408c7281563c1328d29f58ce38f0fe0d7
--- ui.h
+++ ui.h
@@ -145,7 +145,7 @@ void		 ui_main_loop(void);
 void		 ui_on_tab_loaded(struct tab *);
 void		 ui_on_tab_refresh(struct tab *);
 void		 ui_on_download_refresh(void);
-void 		 ui_prompt_download_cmd(char *, char *);
+void 		 ui_prompt_download_cmd(struct download *);
 void		 ui_remotely_open_link(const char *);
 const char	*ui_keyname(int);
 void		 ui_toggle_side_window(int);