dict
opendict(char *dict)
if ((fp = fopen(dict, "r")) == NULL)
SPLAY_GENERATE(dict, dictentry, entry, dictentry_cmp);
SPLAY_PROTOTYPE(dict, dictentry, entry, dictentry_cmp);
dict_check(struct dict *d, const char *k)
return (SPLAY_FIND(dict, d, &key) != NULL);
dict_set(struct dict *d, const char *k, void *data)
if ((entry = SPLAY_FIND(dict, d, &key)) == NULL) {
SPLAY_INSERT(dict, d, entry);
dict_get(struct dict *d, const char *k)
if ((entry = SPLAY_FIND(dict, d, &key)) == NULL)
dict_pop(struct dict *d, const char *k)
if ((entry = SPLAY_FIND(dict, d, &key)) == NULL)
SPLAY_REMOVE(dict, d, entry);
struct dict name_tree;
int dict_check(struct dict *, const char *);
void *dict_set(struct dict *, const char *, void *);
void *dict_get(struct dict *, const char *);
void *dict_pop(struct dict *, const char *);
SPLAY_HEAD(dict, dictentry);
unsigned char dict[257];
memset(dict, 0, 257);
ret = inflateSetDictionary(&strm, dict, 257);
bool dict)
enum dcp_parse_type type = dict ? DCP_TYPE_DICTIONARY : DCP_TYPE_ARRAY;
dictp = &db->dict[hval];
dictp = &db->dict[hval];
dictp2 = &db->dict[max_ent+1];
if (db->dict[dictp2->cptr].codem1 == max_ent) {
db->dict[dictp2->cptr].codem1 = BADCODEM1;
incode, finchar, db->dict[finchar].cptr, max_ent);
db->dict[finchar].cptr, dictp->codem1);
} dict[1];
newlen = sizeof(*db) + (hsize-1) * (sizeof(db->dict[0]));
db->dict[--i].codem1 = BADCODEM1;
db->dict[i].cptr = 0;
dictp = &db->dict[hval];
dictp = &db->dict[hval];
dictp2 = &db->dict[max_ent+1];
if (db->dict[dictp2->cptr].codem1 == max_ent)
db->dict[dictp2->cptr].codem1 = BADCODEM1;
dictp = &db->dict[hval];
dictp = &db->dict[hval];
dictp2 = &db->dict[max_ent+1];
if (db->dict[dictp2->cptr].codem1 == max_ent)
db->dict[dictp2->cptr].codem1 = BADCODEM1;
dictp = &db->dict[db->dict[finchar].cptr];
i = dict(bp, ep);
i = dict(bp, ep);
int dict(char *, char *);
static struct dict pkeys;
if ((entry = SPLAY_FIND(_dict, &d->dict, &key)) == NULL)
dict_xget(struct dict *d, const char *k)
if ((entry = SPLAY_FIND(_dict, &d->dict, &key)) == NULL)
dict_pop(struct dict *d, const char *k)
if ((entry = SPLAY_FIND(_dict, &d->dict, &key)) == NULL)
SPLAY_REMOVE(_dict, &d->dict, entry);
dict_xpop(struct dict *d, const char *k)
if ((entry = SPLAY_FIND(_dict, &d->dict, &key)) == NULL)
SPLAY_REMOVE(_dict, &d->dict, entry);
dict_poproot(struct dict *d, void **data)
entry = SPLAY_ROOT(&d->dict);
SPLAY_REMOVE(_dict, &d->dict, entry);
dict_root(struct dict *d, const char **k, void **data)
entry = SPLAY_ROOT(&d->dict);
dict_iter(struct dict *d, void **hdl, const char **k, void **data)
curr = SPLAY_MIN(_dict, &d->dict);
curr = SPLAY_NEXT(_dict, &d->dict, curr);
dict_iterfrom(struct dict *d, void **hdl, const char *kfrom, const char **k,
curr = SPLAY_MIN(_dict, &d->dict);
curr = SPLAY_FIND(_dict, &d->dict, &key);
SPLAY_INSERT(_dict, &d->dict, &key);
curr = SPLAY_NEXT(_dict, &d->dict, &key);
SPLAY_REMOVE(_dict, &d->dict, &key);
curr = SPLAY_NEXT(_dict, &d->dict, curr);
dict_merge(struct dict *dst, struct dict *src)
while (!SPLAY_EMPTY(&src->dict)) {
entry = SPLAY_ROOT(&src->dict);
SPLAY_REMOVE(_dict, &src->dict, entry);
if (SPLAY_INSERT(_dict, &dst->dict, entry))
dict_check(struct dict *d, const char *k)
return (SPLAY_FIND(_dict, &d->dict, &key) != NULL);
dict_set(struct dict *d, const char *k, void *data)
if ((entry = SPLAY_FIND(_dict, &d->dict, &key)) == NULL) {
SPLAY_INSERT(_dict, &d->dict, entry);
dict_xset(struct dict *d, const char * k, void *data)
if (SPLAY_INSERT(_dict, &d->dict, entry))
dict_get(struct dict *d, const char *k)
struct _dict dict;
#define dict_init(d) do { SPLAY_INIT(&((d)->dict)); (d)->count = 0; } while(0)
#define dict_empty(d) SPLAY_EMPTY(&((d)->dict))
int dict_check(struct dict *, const char *);
void *dict_set(struct dict *, const char *, void *);
void dict_xset(struct dict *, const char *, void *);
void *dict_get(struct dict *, const char *);
void *dict_xget(struct dict *, const char *);
void *dict_pop(struct dict *, const char *);
void *dict_xpop(struct dict *, const char *);
int dict_poproot(struct dict *, void **);
int dict_root(struct dict *, const char **, void **);
int dict_iter(struct dict *, void **, const char **, void **);
int dict_iterfrom(struct dict *, void **, const char *, const char **, void **);
void dict_merge(struct dict *, struct dict *);
struct dict d;
static int envelope_ascii_load(struct envelope *, struct dict *);
envelope_ascii_load(struct envelope *ep, struct dict *d)
envelope_buffer_to_dict(struct dict *d, const char *ibuf, size_t buflen)
static struct dict filters;
static struct dict filter_chains;
static struct dict report_smtp_in;
struct dict *subsystem;
static struct dict report_smtp_out;
struct dict *d;
static struct dict processors;
m_add_params(struct mproc *m, struct dict *d)
m_get_params(struct msg *m, struct dict *d)
m_clear_params(struct dict *d)
static struct dict hoststat;
void table_api_on_check(int(*)(int, struct dict *, const char *));
void table_api_on_lookup(int(*)(int, struct dict *, const char *, char *, size_t));
void table_api_on_fetch(int(*)(int, struct dict *, char *, size_t));
struct dict chain_procs;
void m_add_params(struct mproc *, struct dict *);
void m_get_params(struct msg *, struct dict *);
void m_clear_params(struct dict *);
struct dict *sc_mda_wrappers;
struct dict *sc_filter_processes_dict;
struct dict *sc_filters_dict;
struct dict *sc_dispatchers;
struct dict *sc_ca_dict;
struct dict *sc_pki_dict;
struct dict *sc_ssl_dict;
struct dict *sc_tables_dict; /* keyed lookup */
struct dict *sc_limits_dict;
struct dict seen;
old = dict_set(&priv->dict, lkey, new ? new : priv);
dict_init(&priv->dict);
while (dict_iter(&priv->dict, &iter, &key, (void**)&value)) {
while (dict_iter(&priv->dict, &iter, &k, (void **)&v)) {
struct dict dict;
if (!dict_iter(&priv->dict, &priv->iter, &k, (void **)NULL)) {
if (!dict_iter(&priv->dict, &priv->iter, &k, (void **)NULL))
while (dict_poproot(&priv->dict, (void **)&p))