pool->pos = oldpos;
return seq;
}
- const char *lookup_deltalocation() {
+ const char *lookup_deltalocation(unsigned int *OUTPUT) {
Pool *pool = $self->repo->pool;
Datapos oldpos = pool->pos;
const char *loc;
pool->pos = *$self;
- loc = pool_lookup_deltalocation(pool, SOLVID_POS);
+ loc = pool_lookup_deltalocation(pool, SOLVID_POS, OUTPUT);
pool->pos = oldpos;
return loc;
}
chksum = dp.lookup_checksum(solv.DELTA_CHECKSUM)
if not chksum:
continue
- dloc = dp.lookup_deltalocation()
+ dloc, dmedianr = dp.lookup_deltalocation()
dloc = repo.packagespath() + dloc
f = repo.download(dloc, False, chksum)
if not f:
chksum = pool_lookup_bin_checksum(pool, SOLVID_POS, DELTA_CHECKSUM, &chksumtype);
if (!chksumtype)
continue; /* no way! */
- dloc = pool_lookup_deltalocation(pool, SOLVID_POS);
+ dloc = pool_lookup_deltalocation(pool, SOLVID_POS, 0);
if (!dloc)
continue;
if (cinfo->type == TYPE_SUSETAGS)
}
const char *
-pool_lookup_deltalocation(Pool *pool, Id entry)
+pool_lookup_deltalocation(Pool *pool, Id entry, unsigned int *medianrp)
{
const char *loc;
+ if (medianrp)
+ *medianrp = 0;
if (entry != SOLVID_POS)
return 0;
- loc = pool_lookup_str(pool, SOLVID_POS, DELTA_LOCATION_DIR);
- loc = pool_tmpjoin(pool, loc, loc ? "/" : 0, pool_lookup_str(pool, SOLVID_POS, DELTA_LOCATION_NAME));
- loc = pool_tmpappend(pool, loc, "-", pool_lookup_str(pool, SOLVID_POS, DELTA_LOCATION_EVR));
- loc = pool_tmpappend(pool, loc, ".", pool_lookup_str(pool, SOLVID_POS, DELTA_LOCATION_SUFFIX));
+ loc = pool_lookup_str(pool, entry, DELTA_LOCATION_DIR);
+ loc = pool_tmpjoin(pool, loc, loc ? "/" : 0, pool_lookup_str(pool, entry, DELTA_LOCATION_NAME));
+ loc = pool_tmpappend(pool, loc, "-", pool_lookup_str(pool, entry, DELTA_LOCATION_EVR));
+ loc = pool_tmpappend(pool, loc, ".", pool_lookup_str(pool, entry, DELTA_LOCATION_SUFFIX));
return loc;
}
int pool_lookup_void(Pool *pool, Id entry, Id keyname);
const unsigned char *pool_lookup_bin_checksum(Pool *pool, Id entry, Id keyname, Id *typep);
const char *pool_lookup_checksum(Pool *pool, Id entry, Id keyname, Id *typep);
-const char *pool_lookup_deltalocation(Pool *pool, Id entry);
+const char *pool_lookup_deltalocation(Pool *pool, Id entry, unsigned int *medianrp);
void pool_add_fileconflicts_deps(Pool *pool, Queue *conflicts);
return 0;
pool = s->repo->pool;
if (medianrp)
- *medianrp = solvable_lookup_num(s, SOLVABLE_MEDIANR, 1);
+ *medianrp = solvable_lookup_num(s, SOLVABLE_MEDIANR, 0);
if (solvable_lookup_void(s, SOLVABLE_MEDIADIR))
mediadir = pool_id2str(pool, s->arch);
else
const char *
solvable_get_location(Solvable *s, unsigned int *medianrp)
{
- return solvable_lookup_location(s, medianrp);
+ const char *loc = solvable_lookup_location(s, medianrp);
+ if (medianrp && *medianrp == 0)
+ *medianrp = 1; /* compat, to be removed */
+ return loc;
}
const char *