commit e49ce157fae23fdb5dac3e093f743b85af2d952f from: Omar Polo date: Thu Apr 01 09:40:05 2021 UTC add extra parameter to yornp commit - 522700c3d859c7ef1fc1e46c076c1d51e7b9d482 commit + e49ce157fae23fdb5dac3e093f743b85af2d952f blob - 6dc5f5b56eb5202d22b9c7e460388325acec7501 blob + bdbb0df70436547074fb284a20ded7414f1f21bb --- telescope.c +++ telescope.c @@ -25,7 +25,7 @@ static void die(void) __attribute__((__noreturn__)); 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); @@ -128,13 +128,15 @@ handle_imsg_check_cert(struct imsg *imsg, size_t datal 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 @@ -250,7 +250,7 @@ int ui_init(int, char * const*); 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 @@ -168,7 +168,8 @@ static uint32_t tab_counter; 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, @@ -1141,14 +1142,16 @@ yornp_self_insert(void) 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(); } @@ -2016,11 +2019,12 @@ ui_require_input(struct tab *tab, int hide) } 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);