#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <zlib.h>
#include <errno.h>
#include "pool.h"
if (!s->evr)
s->evr = ID_EMPTY;
sid = pool_rel2id(pool, s->name, s->evr, REL_EQ, 1);
- s->provides = repo_addid_dep(s->repo, s->provides, sid, 0);
+ s->provides = repo_addid_dep(s->repo, s->provides, sid, 0);
if (!job || !pool->installed || s->repo != pool->installed)
return;
if (keep == KEEP_VERSION)
int
repo_add_cudf(Repo *repo, Repo *installedrepo, FILE *fp, Queue *job, int flags)
{
- Pool *pool = repo->pool;
+ Pool *pool;
char *buf, *p;
int bufa, bufl, c;
Solvable *s;
xrepo = repo ? repo : installedrepo;
if (!xrepo)
return -1;
+ pool = xrepo->pool;
buf = solv_malloc(4096);
bufa = 4096;
bufl = 0;
s = 0;
-
+
while (fgets(buf + bufl, bufa - bufl, fp) > 0)
{
bufl += strlen(buf + bufl);
if (!*buf)
{
if (s && !repo && !isinstalled)
- {
- repo_free_solvable(repo, s - pool->solvables, 1);
- s = 0;
- }
+ s = solvable_free(s, 1);
if (s)
finishpackage(pool, s, keep, job);
s = 0;
Id id, *idp;
Offset off = makedeps(xrepo, p, 0, 0);
for (idp = xrepo->idarraydata + off; (id = *idp) != 0; idp++)
- queue_push2(job, SOLVER_UPDATE|SOLVER_SOLVABLE_PROVIDES, id);
+ queue_push2(job, SOLVER_INSTALL|SOLVER_ORUPDATE|SOLVER_SOLVABLE_PROVIDES, id);
}
continue;
}
{
isinstalled = 1;
if (!installedrepo)
- {
- repo_free_solvable(repo, s - pool->solvables, 1);
- s = 0;
- }
+ s = solvable_free(s, 1);
else if (s->repo != installedrepo)
{
copysolvabledata(pool, s, installedrepo);
s->name = pool_str2id(pool, p, 1);
continue;
}
+ if (!strcmp(buf, "provides"))
+ {
+ s->provides = makedeps(s->repo, p, s->provides, 0);
+ continue;
+ }
break;
case 'r':
if (!strcmp(buf, "depends"))
}
}
if (s && !repo && !isinstalled)
- {
- repo_free_solvable(repo, s - pool->solvables, 1);
- s = 0;
- }
+ s = solvable_free(s, 1);
if (s)
finishpackage(pool, s, keep, job);
solv_free(buf);