Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

lib/rpmal.c File Reference

More...

#include "system.h"
#include <rpmlib.h>
#include "rpmal.h"
#include "rpmds.h"
#include "rpmfi.h"
#include "debug.h"

Go to the source code of this file.

Data Structures

struct  availableIndex_s
struct  availableIndexEntry_s
struct  availablePackage_s
struct  dirInfo_s
struct  fileIndexEntry_s
struct  rpmal_s

Typedefs

typedef availablePackage_savailablePackage
typedef availableIndexEntry_savailableIndexEntry
typedef availableIndex_savailableIndex
typedef fileIndexEntry_sfileIndexEntry
typedef dirInfo_sdirInfo

Functions

void rpmalFreeIndex (rpmal al)
 Destroy available item index. More...

alNum alKey2Num (const rpmal al, alKey pkgKey)
alKey alNum2Key (const rpmal al, alNum pkgNum)
rpmal rpmalCreate (int delta)
 Initialize available packckages, items, and directory list. More...

rpmal rpmalFree (rpmal al)
 Free available packages, items, and directory members. More...

int dieCompare (const void *one, const void *two)
 Compare two directory info entries by name (qsort/bsearch). More...

int fieCompare (const void *one, const void *two)
 Compare two file info entries by name (qsort/bsearch). More...

void rpmalDel (rpmal al, alKey pkgKey)
 Delete package from available list. More...

alKey rpmalAdd (rpmal *alistp, alKey pkgKey, fnpyKey key, rpmds provides, rpmfi fi)
 Add package to available list. More...

int indexcmp (const void *one, const void *two)
 Compare two available index entries by name (qsort/bsearch). More...

void rpmalAddProvides (rpmal al, alKey pkgKey, rpmds provides)
 Add package provides to available list index. More...

void rpmalMakeIndex (rpmal al)
 Generate index for available list. More...

fnpyKey * rpmalAllFileSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
 Check added package file lists for package(s) that provide a file. More...

fnpyKey * rpmalAllSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
 Check added package file lists for package(s) that have a provide. More...

fnpyKey rpmalSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
 Check added package file lists for first package that has a provide. More...


Variables

int _rpmal_debug = 0


Detailed Description

Definition in file rpmal.c.


Typedef Documentation

typedef struct availableIndex_s* availableIndex
 

Definition at line 63 of file rpmal.c.

typedef struct availableIndexEntry_s* availableIndexEntry
 

Definition at line 45 of file rpmal.c.

typedef struct availablePackage_s* availablePackage
 

Definition at line 15 of file rpmal.c.

typedef struct dirInfo_s* dirInfo
 

Definition at line 90 of file rpmal.c.

typedef struct fileIndexEntry_s* fileIndexEntry
 

Definition at line 76 of file rpmal.c.


Function Documentation

alNum alKey2Num const rpmal    al,
alKey    pkgKey
[inline, static]
 

Definition at line 147 of file rpmal.c.

References alKey, and alNum.

Referenced by rpmalAdd, rpmalAddProvides, rpmalAllSatisfiesDepend, and rpmalDel.

alKey alNum2Key const rpmal    al,
alNum    pkgNum
[inline, static]
 

Definition at line 156 of file rpmal.c.

References alKey, and alNum.

Referenced by rpmalAllFileSatisfiesDepend.

int dieCompare const void *    one,
const void *    two
[static]
 

Compare two directory info entries by name (qsort/bsearch).

Parameters:
one  1st directory info
two  2nd directory info
Returns:
result of comparison

Definition at line 242 of file rpmal.c.

References dirInfo_s::dirName, and dirInfo_s::dirNameLen.

Referenced by rpmalAdd, rpmalAllFileSatisfiesDepend, and rpmalDel.

int fieCompare const void *    one,
const void *    two
[static]
 

Compare two file info entries by name (qsort/bsearch).

Parameters:
one  1st directory info
two  2nd directory info
Returns:
result of comparison

Definition at line 267 of file rpmal.c.

References fileIndexEntry_s::baseName, and fileIndexEntry_s::baseNameLen.

Referenced by rpmalAdd, and rpmalAllFileSatisfiesDepend.

int indexcmp const void *    one,
const void *    two
[static]
 

Compare two available index entries by name (qsort/bsearch).

Parameters:
one  1st available index entry
two  2nd available index entry
Returns:
result of comparison

Definition at line 525 of file rpmal.c.

References availableIndexEntry_s::entry, and availableIndexEntry_s::entryLen.

Referenced by rpmalAllSatisfiesDepend, and rpmalMakeIndex.

alKey rpmalAdd rpmal   alistp,
alKey    pkgKey,
fnpyKey    key,
rpmds    provides,
rpmfi    fi
 

Add package to available list.

Parameters:
alistp  address of available list
pkgKey  package key, RPMAL_NOMATCH to force an append
key  associated file name/python object
provides  provides dependency set
fi  file info set
Returns:
available package index

Definition at line 380 of file rpmal.c.

References alKey, alKey2Num, alloca, rpmal_s::alloced, alNum, fileIndexEntry_s::baseName, fileIndexEntry_s::baseNameLen, rpmal_s::delta, die, dieCompare, dirInfo_s::dirName, dirInfo_s::dirNameLen, rpmal_s::dirs, availablePackage_s::fi, fieCompare, fileIndexEntry_s::fileFlags, dirInfo_s::files, availablePackage_s::key, rpmal_s::list, rpmal_s::numDirs, dirInfo_s::numFiles, fileIndexEntry_s::pkgNum, availablePackage_s::provides, RPMAL_NOMATCH, rpmalCreate, rpmalDel, rpmalFreeIndex, rpmds, rpmdsLink, rpmfi, rpmal_s::size, xrealloc, and xstrdup.

void rpmalAddProvides rpmal    al,
alKey    pkgKey,
rpmds    provides
 

Add package provides to available list index.

Parameters:
al  available list
pkgKey  package key
provides  added package provides

Definition at line 541 of file rpmal.c.

References alKey, alKey2Num, alNum, availableIndexEntry_s::entry, availableIndexEntry_s::entryIx, availableIndexEntry_s::entryLen, availableIndex_s::index, rpmal_s::index, int_32, isDependsMULTILIB, availableIndex_s::k, rpmal_s::list, availableIndexEntry_s::pkgKey, rpmds, rpmdsFlags, rpmdsInit, rpmdsIx, rpmdsN, rpmdsNext, availableIndex_s::size, rpmal_s::size, and availableIndexEntry_s::type.

fnpyKey* rpmalAllFileSatisfiesDepend const rpmal    al,
const rpmds    ds,
alKey   keyp
 

Check added package file lists for package(s) that provide a file.

Parameters:
al  available list
ds  dependency set
Return values:
keyp  added package key pointer (or NULL)
Returns:
associated package key(s), NULL if none

Definition at line 613 of file rpmal.c.

References _, _free, alKey, alloca, alNum2Key, fileIndexEntry_s::baseName, fileIndexEntry_s::baseNameLen, die, dieCompare, dirInfo_s::dirName, dirInfo_s::dirNameLen, rpmal_s::dirs, fieCompare, fileIndexEntry_s::fileFlags, dirInfo_s::files, isFileMULTILIB, availablePackage_s::key, rpmal_s::list, rpmal_s::numDirs, dirInfo_s::numFiles, fileIndexEntry_s::pkgNum, RPMAL_NOMATCH, rpmds, rpmdsN, rpmdsNotify, xrealloc, and xstrdup.

fnpyKey* rpmalAllSatisfiesDepend const rpmal    al,
const rpmds    ds,
alKey   keyp
 

Check added package file lists for package(s) that have a provide.

Parameters:
al  available list
ds  dependency set
Return values:
keyp  added package key pointer (or NULL)
Returns:
associated package key(s), NULL if none

Definition at line 712 of file rpmal.c.

References _, alKey, alKey2Num, alloca, availableIndexEntry_s::entry, availableIndexEntry_s::entryIx, availableIndexEntry_s::entryLen, availableIndex_s::index, rpmal_s::index, indexcmp, availablePackage_s::key, rpmal_s::list, availableIndexEntry_s::pkgKey, availablePackage_s::provides, RPMAL_NOMATCH, rpmalAllFileSatisfiesDepend, rpmds, rpmdsCompare, rpmdsN, rpmdsNext, rpmdsNotify, rpmdsSetIx, availableIndex_s::size, availableIndexEntry_s::type, and xrealloc.

rpmal rpmalCreate int    delta
 

Initialize available packckages, items, and directory list.

Parameters:
delta  no. of entries to add on each realloc
Returns:
al new available list

Definition at line 188 of file rpmal.c.

References rpmal_s::alloced, rpmal_s::delta, rpmal_s::dirs, availableIndex_s::index, rpmal_s::index, rpmal_s::list, rpmal_s::numDirs, availableIndex_s::size, rpmal_s::size, and xcalloc.

void rpmalDel rpmal    al,
alKey    pkgKey
 

Delete package from available list.

Parameters:
al  available list
pkgKey  package key

Definition at line 286 of file rpmal.c.

References _free, alKey, alKey2Num, alloca, alNum, die, dieCompare, dirInfo_s::dirName, dirInfo_s::dirNameLen, rpmal_s::dirs, availablePackage_s::fi, dirInfo_s::files, rpmal_s::list, rpmal_s::numDirs, dirInfo_s::numFiles, fileIndexEntry_s::pkgNum, availablePackage_s::provides, rpmdsFree, rpmfi, and xrealloc.

rpmal rpmalFree rpmal    al
 

Free available packages, items, and directory members.

Parameters:
al  available list
Returns:
NULL always

Definition at line 206 of file rpmal.c.

References _free, rpmal_s::alloced, die, dirInfo_s::dirName, rpmal_s::dirs, availablePackage_s::fi, dirInfo_s::files, rpmal_s::list, rpmal_s::numDirs, availablePackage_s::provides, rpmalFreeIndex, rpmdsFree, and rpmal_s::size.

void rpmalFreeIndex rpmal    al [static]
 

Destroy available item index.

Parameters:
al  available list

Definition at line 124 of file rpmal.c.

References _free, availableIndex_s::index, and availableIndex_s::size.

Referenced by rpmalAdd, and rpmalFree.

void rpmalMakeIndex rpmal    al
 

Generate index for available list.

Parameters:
al  available list

Definition at line 586 of file rpmal.c.

References alKey, availableIndex_s::index, rpmal_s::index, indexcmp, availableIndex_s::k, rpmal_s::list, availablePackage_s::provides, rpmalAddProvides, rpmdsCount, rpmal_s::size, availableIndex_s::size, and xrealloc.

fnpyKey rpmalSatisfiesDepend const rpmal    al,
const rpmds    ds,
alKey   keyp
 

Check added package file lists for first package that has a provide.

Todo:
Eliminate.
Parameters:
al  available list
ds  dependency set
Return values:
keyp  added package key pointer (or NULL)
Returns:
associated package key, NULL if none

Definition at line 793 of file rpmal.c.

References alKey, rpmalAllSatisfiesDepend, and rpmds.


Variable Documentation

int _rpmal_debug = 0
 

Definition at line 18 of file rpmal.c.


Generated on Tue Sep 17 16:00:03 2002 for rpm by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002