R_API int r_core_zdiff(RCore *c, RCore *c2) { if (!c || !c2) { return false; } ////////// moove this into anal/sign SdbList *a = sdb_foreach_list (c->anal->sdb_zigns, false); SdbList *b = sdb_foreach_list (c2->anal->sdb_zigns, false); eprintf ("Diff %d %d\n", (int)ls_length (a), (int)ls_length (b)); SdbListIter *iter; SdbKv *kv; RList *la = r_list_new (); ls_foreach (a, iter, kv) { RSignItem *it = r_sign_item_new (); if (r_sign_deserialize (c->anal, it, kv->base.key, kv->base.value)) { r_list_append (la, it); } else { r_sign_item_free (it); } }
// (vector x y ...) Cell* op_vector(Scheme *sc) { Cell* x; int len = ls_length(sc, sc->args); if (len < 0) return error_helper(sc, "vector: not a proper list:", sc->args); Cell* vec = make_vector(sc, len); int index = 0; for (x = sc->args; is_pair(x); x = cdr(x), index++) { set_vector_item(vec, index, car(x)); } return s_return_helper(sc, vec); }