return repodata_lookup_id(repo_id2repodata($self->repo, $self->id), solvid, keyname);
}
unsigned long long lookup_num(Id solvid, Id keyname, unsigned long long notfound = 0) {
- unsigned long long v = 0;
- return repodata_lookup_num(repo_id2repodata($self->repo, $self->id), solvid, keyname, &v) ? v : notfound;
+ return repodata_lookup_num(repo_id2repodata($self->repo, $self->id), solvid, keyname, notfound);
}
bool lookup_void(Id solvid, Id keyname) {
return repodata_lookup_void(repo_id2repodata($self->repo, $self->id), solvid, keyname);
const char *
repo_lookup_str(Repo *repo, Id entry, Id keyname)
{
- Pool *pool = repo->pool;
Repodata *data;
if (entry >= 0)
{
+ Pool *pool = repo->pool;
switch (keyname)
{
case SOLVABLE_NAME:
repo_lookup_num(Repo *repo, Id entry, Id keyname, unsigned long long notfound)
{
Repodata *data;
- unsigned long long value;
if (entry >= 0)
{
}
}
data = repo_lookup_repodata_opt(repo, entry, keyname);
- return data && repodata_lookup_num(data, entry, keyname, &value) ? value : notfound;
+ return data ? repodata_lookup_num(data, entry, keyname, notfound) : notfound;
}
Id
return pool_id2str(data->repo->pool, id);
}
-int
-repodata_lookup_num(Repodata *data, Id solvid, Id keyname, unsigned long long *value)
+unsigned long long
+repodata_lookup_num(Repodata *data, Id solvid, Id keyname, unsigned long long notfound)
{
unsigned char *dp;
Repokey *key;
unsigned int high, low;
- *value = 0;
dp = find_key_data(data, solvid, keyname, &key);
if (!dp)
- return 0;
+ return notfound;
switch (key->type)
{
case REPOKEY_TYPE_NUM:
data_read_num64(dp, &low, &high);
- *value = (unsigned long long)high << 32 | low;
- return 1;
+ return (unsigned long long)high << 32 | low;
case REPOKEY_TYPE_U32:
data_read_u32(dp, &low);
- *value = low;
- return 1;
+ return low;
case REPOKEY_TYPE_CONSTANT:
- *value = key->size;
- return 1;
+ return key->size;
default:
- return 0;
+ return notfound;
}
}
Id repodata_lookup_type(Repodata *data, Id solvid, Id keyname);
Id repodata_lookup_id(Repodata *data, Id solvid, Id keyname);
const char *repodata_lookup_str(Repodata *data, Id solvid, Id keyname);
-int repodata_lookup_num(Repodata *data, Id solvid, Id keyname, unsigned long long *value);
+unsigned long long repodata_lookup_num(Repodata *data, Id solvid, Id keyname, unsigned long long notfound);
int repodata_lookup_void(Repodata *data, Id solvid, Id keyname);
const unsigned char *repodata_lookup_bin_checksum(Repodata *data, Id solvid, Id keyname, Id *typep);
int repodata_lookup_idarray(Repodata *data, Id solvid, Id keyname, Queue *q);