#!/usr/local/bin/cz -- use b size_t n_buckets = 10007 Main() new(alloced, hashtable, cstr_hash, cstr_eq, n_buckets) int n = 1 Eachline(l) if !(among(*l, 'A', 'F') || l[1] == '\t') continue let(words, split(l, '\t')) cstr type = words[0] cstr func = words[1] cstr addr = words[2] cstr size = words[3] cstr location = words[4] if *type == 'A' key_value *kv = kv(alloced, addr, NULL) if kv->v == NULL kv->k = strdup(addr) kv->v = strdup(l) else sf("bad\t%s", l) else # type == 'F' int addr_not_null = 0 for_cstr(i, addr) if *i != '0' addr_not_null = 1 break if addr_not_null if kv_is_null(del(alloced, addr)) sf("bad\t%s", l)