needid
NeedId *needid;
needid = calloc(reloff + pool->nrels, sizeof(*needid));
needid[0].map = reloff;
cbdata.needid = needid;
needid[s->name].need++;
needid[s->arch].need++;
needid[s->evr].need++;
needid[s->vendor].need++;
target.keys[cbdata.keymap[SOLVABLE_PROVIDES]].size += incneedidarray(pool, idarraydata + s->provides, needid);
target.keys[cbdata.keymap[SOLVABLE_OBSOLETES]].size += incneedidarray(pool, idarraydata + s->obsoletes, needid);
target.keys[cbdata.keymap[SOLVABLE_CONFLICTS]].size += incneedidarray(pool, idarraydata + s->conflicts, needid);
target.keys[cbdata.keymap[SOLVABLE_REQUIRES]].size += incneedidarray(pool, idarraydata + s->requires, needid);
target.keys[cbdata.keymap[SOLVABLE_RECOMMENDS]].size += incneedidarray(pool, idarraydata + s->recommends, needid);
target.keys[cbdata.keymap[SOLVABLE_SUGGESTS]].size += incneedidarray(pool, idarraydata + s->suggests, needid);
target.keys[cbdata.keymap[SOLVABLE_SUPPLEMENTS]].size += incneedidarray(pool, idarraydata + s->supplements, needid);
target.keys[cbdata.keymap[SOLVABLE_ENHANCES]].size += incneedidarray(pool, idarraydata + s->enhances, needid);
needid = cbdata.needid;
needid[target.keys[i].size].need++;
needid[target.keys[i].name].need++;
needid[target.keys[i].type].need++;
needid = cbdata.needid;
needid[id].need++;
reloff = needid[0].map;
needid[0].need = 0;
needid[reloff].need = 0;
needid[i].map = i;
solv_sort(needid + 1, spool->nstrings - 1, sizeof(*needid), needid_cmp_need_s, spool);
needid[1].need = 1;
solv_sort(needid + 2, spool->nstrings - 2, sizeof(*needid), needid_cmp_need_s, spool);
solv_sort(needid + reloff, pool->nrels, sizeof(*needid), needid_cmp_need, 0);
if (!needid[i].need)
needid[i].need = 0;
sizeid += strlen(spool->stringspace + spool->strings[needid[i].map]) + 1;
needid[needid[i].map].need = i;
if (!needid[reloff + i].need)
needid[reloff + i].need = 0;
needid[needid[reloff + i].map].need = nstrings + i;
dirmap[i] = needid[id].need;
data_addid(xd, needid[s->name].need);
data_addid(xd, needid[s->arch].need);
data_addid(xd, needid[s->evr].need);
data_addid(xd, needid[s->vendor].need);
data_addidarray_sort(xd, pool, needid, idarraydata + s->provides, SOLVABLE_FILEMARKER);
data_addidarray_sort(xd, pool, needid, idarraydata + s->obsoletes, 0);
data_addidarray_sort(xd, pool, needid, idarraydata + s->conflicts, 0);
data_addidarray_sort(xd, pool, needid, idarraydata + s->requires, SOLVABLE_PREREQMARKER);
data_addidarray_sort(xd, pool, needid, idarraydata + s->recommends, 0);
data_addidarray_sort(xd, pool, needid, idarraydata + s->suggests, 0);
data_addidarray_sort(xd, pool, needid, idarraydata + s->supplements, 0);
data_addidarray_sort(xd, pool, needid, idarraydata + s->enhances, 0);
char *str = spool->stringspace + spool->strings[needid[i].map];
char *str = spool->stringspace + spool->strings[needid[i].map];
ran = pool->rels + (needid[reloff + i].map - reloff);
write_id(&target, needid[ISRELDEP(ran->name) ? RELOFF(ran->name) : ran->name].need);
write_id(&target, needid[ISRELDEP(ran->evr) ? RELOFF(ran->evr) : ran->evr].need);
write_id(&target, needid[target.keys[i].name].need);
write_id(&target, needid[target.keys[i].type].need);
write_id(&target, needid[target.keys[i].size].need);
solv_free(needid);
write_idarray(Repodata *data, Pool *pool, NeedId *needid, Id *ids)
if (needid)
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
write_idarray_sort(Repodata *data, Pool *pool, NeedId *needid, Id *ids, Id marker)
if (needid)
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
if (needid)
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
if (needid)
marker = needid[marker].need;
NeedId *needid;
#define RELOFF(id) (needid[0].map + GETRELID(id))
data_addidarray_sort(struct extdata *xd, Pool *pool, NeedId *needid, Id *ids, Id marker)
if (needid)
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
if (needid)
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
if (needid)
marker = needid[marker].need;
incneedid(Pool *pool, Id id, NeedId *needid)
needid[RELOFF(id)].need++;
if (id >= cbdata->needid[0].map)
int oldoff = cbdata->needid[0].map;
cbdata->needid = solv_realloc2(cbdata->needid, newoff + nrels, sizeof(NeedId));
memmove(cbdata->needid + newoff, cbdata->needid + oldoff, nrels * sizeof(NeedId));
memset(cbdata->needid + oldoff, 0, (newoff - oldoff) * sizeof(NeedId));
cbdata->needid[0].map = newoff;
incneedid(pool, rd->evr, needid);
needid[rd->evr].need++;
needid[id].need++;
incneedid(repo->pool, id, cbdata->needid);
incneedidarray(Pool *pool, Id *idarray, NeedId *needid)
NeedId *needid;
needid = cbdata->needid;
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
needid = cbdata->needid;
id = needid[ISRELDEP(id) ? RELOFF(id) : id].need;
needid[RELOFF(id)].need++;
incneedid(pool, rd->evr, needid);
needid[rd->evr].need++;
needid[id].need++;