12 #define _RPMFI_INTERNAL
18 #define _RPMDS_INTERNAL
102 GENfree(availablePackage)
103 GENfree(availableIndexEntry)
138 availableIndex ai = &al->
index;
148 availablePackage alp;
152 for (i = 0; i < al->
size; i++, alp++) {
175 if (_rpmalPool ==
NULL) {
188 availableIndex ai = &al->
index;
204 availablePackage alp;
209 alp = al->
list + pkgNum;
218 memset(alp, 0,
sizeof(*alp));
227 availablePackage alp;
235 if (pkgNum >= 0 && pkgNum < al->
size) {
248 alp = al->
list + pkgNum;
271 static int indexcmp(
const void * one,
const void * two)
292 availableIndex ai = &al->
index;
293 availableIndexEntry aie;
296 if (provides ==
NULL || pkgNum < 0 || pkgNum >= al->
size)
304 if ((Name = provides->N[provides->i]) ==
NULL)
309 if (tscolor && dscolor && !(tscolor & dscolor))
319 aie->
entryLen = (
unsigned short)strlen(Name);
333 availablePackage alp;
340 for (i = 0; i < al->
size; i++) {
345 if (ai->
size == 0)
return;
349 for (i = 0; i < al->
size; i++) {
363 int found = 0, verified = 0;
375 for (i = 0; i < al->
size; i++) {
376 availablePackage alp = al->
list +
i;
378 if (!rpmbfChk(alp->
bf, fn, nfn))
382 char * fifn = (
char *) malloc(alp->
fi->fnlen + 1);
383 for(j=0; j<(
int)alp->
fi->fc; j++) {
384 const char * dn =
NULL;
386 strcpy(
stpcpy(fifn, dn), alp->
fi->bnl[j]);
403 ret[found] = alp->
key;
422 availableIndexEntry needle;
423 availableIndexEntry match;
427 availablePackage alp;
452 needle->
entry = KName;
466 for (ret =
NULL, found = 0;
474 switch (match->
type) {
492 ret[found] = alp->
key;
int rpmdsNext(rpmds ds)
Return next dependency set iterator index.
qsort(mc->macroTable, mc->firstFree, sizeof(mc->macroTable[0]), compareMacroName)
rpmal rpmalLink(rpmal al, const char *msg)
Reference available list.
rpmlog(RPMLOG_ERR,"%s\n", buf)
static void rpmalFreeIndex(rpmal al)
Destroy available item index.
void * alKey
An added/available package retrieval key.
A single available item (e.g.
Structure(s) used for file info tag sets.
int alNum
An added/available package retrieval index.
Index of all available items.
alKey rpmalAdd(rpmal *alistp, alKey pkgKey, fnpyKey key, rpmds provides, rpmfi fi, rpmuint32_t tscolor)
Add package to available list.
void * rpmfiFNBF(rpmfi fi)
Return FN Bloom filter from file info set.
int rpmdsIx(const rpmds ds)
Return dependency set index.
rpmfi rpmfiFree(rpmfi fi)
Destroy a file info set.
static rpmal rpmalGetPool(rpmioPool pool)
availableIndexEntry index
Yet Another syslog(3) API clone.
memset(_r, 0, sizeof(*_r))
void * xcalloc(size_t nmemb, size_t size)
assert(key->size==sizeof(hdrNum))
void rpmdsNotify(rpmds ds, const char *where, int rc)
Notify of results of dependency match.
int rpmdsSetIx(rpmds ds, int ix)
Set dependency set index.
static void rpmalFini(void *_al)
struct availableIndexEntry_s * availableIndexEntry
rpmioItem rpmioGetPool(rpmioPool pool, size_t size)
Get unused item from pool, or alloc a new item.
rpmal rpmalNew(int delta)
Initialize available list.
static alNum alKey2Num(const rpmal al, alKey pkgKey)
void rpmalAddProvides(rpmal al, alKey pkgKey, rpmds provides, rpmuint32_t tscolor)
Add package provides to available list index.
Set of available packages, items, and directories.
Structure(s) used for dependency tag sets.
struct availableIndex_s index
int rpmdsCount(const rpmds ds)
Return dependency set count.
fnpyKey * rpmalAllFileSatisfiesDepend(const rpmal al, const rpmds ds, alKey *keyp)
Check added package file lists for package(s) that provide a file.
struct rpmds_s * rpmds
Dependency tag sets from a header, so that a header can be discarded early.
struct availableIndex_s * availableIndex
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
return strcmp(ame->name, bme->name)
struct availablePackage_s * availablePackage
urltype urlPath(const char *url, const char **pathp)
Return path component of URL.
rpmfi rpmfiLink(rpmfi fi, const char *msg)
Reference a file info set instance.
fnpyKey rpmalSatisfiesDepend(const rpmal al, const rpmds ds, alKey *keyp)
Check added package file lists for first package that has a provide.
rpmioPool rpmioNewPool(const char *name, size_t size, int limit, int flags, char *(*dbg)(void *item), void(*init)(void *item), void(*fini)(void *item))
Create a memory pool.
char * stpcpy(char *dest, const char *src)
int rpmdsCompare(const rpmds A, const rpmds B)
Compare two versioned dependency ranges, looking for overlap.
rpmds rpmdsInit(rpmds ds)
Initialize dependency set iterator.
rpmuint32_t rpmdsColor(const rpmds ds)
Return current dependency color.
rpmds rpmdsLink(rpmds ds, const char *msg)
Reference a dependency set instance.
static int indexcmp(const void *one, const void *two)
Compare two available index entries by name (qsort/bsearch).
Info about a single package to be installed.
void rpmalDel(rpmal al, alKey pkgKey)
Delete package from available list.
void rpmalMakeIndex(rpmal al)
Generate index for available list.
fnpyKey * rpmalAllSatisfiesDepend(const rpmal al, const rpmds ds, alKey *keyp)
Check added package file lists for package(s) that have a provide.
static void
Print copy of spec file, filling in Group/Description/Summary from specspo.
Structures used for managing added/available package lists.
int
Save source and expand field into target.
struct rpmfi_s * rpmfi
File info tag sets from a header, so that a header can be discarded early.
const char * rpmdsN(const rpmds ds)
Return current dependency name.
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
static alKey alNum2Key(const rpmal al, alNum pkgNum)
static PyObject *rpmds ds