commit - 522700c3d859c7ef1fc1e46c076c1d51e7b9d482
commit + e49ce157fae23fdb5dac3e093f743b85af2d952f
blob - 6dc5f5b56eb5202d22b9c7e460388325acec7501
blob + bdbb0df70436547074fb284a20ded7414f1f21bb
--- telescope.c
+++ telescope.c
static struct tab *tab_by_id(uint32_t);
static void handle_imsg_err(struct imsg*, size_t);
static void handle_imsg_check_cert(struct imsg*, size_t);
-static void handle_check_cert_user_choice(int, unsigned int);
+static void handle_check_cert_user_choice(int, void*);
static void handle_imsg_got_code(struct imsg*, size_t);
static void handle_imsg_got_meta(struct imsg*, size_t);
static void handle_imsg_buf(struct imsg*, size_t);
tab->trust = TS_UNTRUSTED;
load_page_from_str(tab, "# Certificate mismatch\n");
ui_yornp("Certificate mismatch. Proceed?",
- handle_check_cert_user_choice);
+ handle_check_cert_user_choice, &tab->id);
}
}
static void
-handle_check_cert_user_choice(int accept, unsigned int tabid)
+handle_check_cert_user_choice(int accept, void *d)
{
+ unsigned int tabid = *(unsigned int*)d;
+
imsg_compose(netibuf, IMSG_CERT_STATUS, tabid, 0, -1,
&accept, sizeof(accept));
imsg_flush(netibuf);
blob - 6a359b37e8369f9d9c2dc88667d3f919637041b3
blob + 50a7cc2dee9be23766864d7cf244a65e06b7363f
--- telescope.h
+++ telescope.h
void ui_on_tab_loaded(struct tab*);
void ui_on_tab_refresh(struct tab*);
void ui_require_input(struct tab*, int);
-void ui_yornp(const char*, void (*)(int, unsigned int));
+void ui_yornp(const char*, void (*)(int, void*), void*);
void ui_notify(const char*, ...) __attribute__((format(printf, 1, 2)));
void ui_end(void);
blob - 598ff494985258d1c5f9ce7d8176e29616492ac0
blob + 05ffdd75e9e4b6cd6c5c3808ca18c7f721fcc6b4
--- ui.c
+++ ui.c
static char keybuf[64];
-static void (*yornp_cb)(int, unsigned int);
+static void (*yornp_cb)(int, void*);
+static void *yornp_data;
struct kmap global_map,
minibuffer_map,
return;
}
- yornp_cb(thiskey.key == 'y', current_tab()->id);
+ yornp_cb(thiskey.key == 'y', yornp_data);
+ yornp_data = NULL;
exit_minibuffer();
}
static void
yornp_abort(void)
{
- yornp_cb(0, current_tab()->id);
+ yornp_cb(0, yornp_data);
+ yornp_data = NULL;
exit_minibuffer();
}
}
void
-ui_yornp(const char *prompt, void (*fn)(int, unsigned int))
+ui_yornp(const char *prompt, void (*fn)(int, void*), void *data)
{
size_t len;
yornp_cb = fn;
+ yornp_data = data;
enter_minibuffer(yornp_self_insert, yornp_self_insert,
yornp_abort, NULL);