dircache
if (data->dircache)
struct dircache *dircache = data->dircache;
if (l < DIRCACHE_SIZE && dircache->ids[l] && !memcmp(dircache->str + l * (l - 1) / 2, dir, l))
parent = dircache->ids[l];
if (!data->dircache)
data->dircache = solv_calloc(1, sizeof(struct dircache));
if (data->dircache)
data->dircache->ids[l] = parent;
memcpy(data->dircache->str + l * (l - 1) / 2, dirs, l);
data->dircache = solv_free(data->dircache);
solv_free(data->dircache);
struct dircache *dircache;
struct dircache;