static uint32 idaapi res_unmatch(deng_t * d,uint32 n, int type) { slist_t * sl; if (type == 0) sl = d->ilist; else sl = d->mlist; psig_t *sig = ui_access_sig(sl, n); sig->nfile = 1; sig->msig->nfile = 2; siglist_add(d->ulist, sig); siglist_add(d->ulist, sig->msig); sig->msig->msig = NULL; sig->msig = NULL; siglist_remove(sl, n - 1); refresh_chooser(title_unmatch); return 1; }
static uint32 idaapi res_match(void *obj,uint32 n) { deng_t * eng = (deng_t *)obj; psig_t * s1, * s2; int option; ea_t ea = BADADDR; size_t i; const char format[] = "STARTITEM 0\n" "Set Match\n" "<Match address:$:32:32::>\n\n" "Options :\n" "<Propagate :C>>\n\n" ; option = 1; if (AskUsingForm_c(format, &ea, &option)) { s1 = ui_access_sig(eng->ulist, n); for (i=0; i<eng->ulist->num; i++) { s2 = eng->ulist->sigs[i]; if (s2->startEA != ea || (s2->nfile == s1->nfile)) continue; sig_set_matched_sig(s1, s2, DIFF_MANUAL); propagate_match(eng, s1, s2, option); refresh_chooser(title_match); refresh_chooser(title_identical); return 1; } warning("Address '%a' is not valid.", ea); return 0; } return 1; }
static uint32 idaapi res_flagged(void *obj,uint32 n) { psig_t *sig = ui_access_sig(((deng_t *)obj)->mlist, n); sig->flag = !sig->flag; refresh_chooser(title_match); return 1; }
static uint32 idaapi res_itom(void *obj,uint32 n) { deng_t * d = (deng_t *)obj; psig_t *sig = ui_access_sig(d->ilist, n); sig->mtype = sig->msig->mtype = DIFF_MANUAL; siglist_add(d->mlist, sig); siglist_remove(d->ilist, n - 1); refresh_chooser(title_match); return 1; }
//--------------------------------------------------------------------------- void x86seh_ctx_t::refresh() { get_sehlist(); refresh_chooser(title.c_str()); }
void do_refresh() { refresh_chooser(chobj->title); }