rpm  5.4.15
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
rpmal.c File Reference
#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmbf.h>
#include <rpmlog.h>
#include <rpmfi.h>
#include <rpmtag.h>
#include <rpmtypes.h>
#include <rpmds.h>
#include <rpmal.h>
#include "debug.h"
Include dependency graph for rpmal.c:

Go to the source code of this file.

Data Structures

struct  availablePackage_s
 Info about a single package to be installed. More...
 
struct  availableIndexEntry_s
 A single available item (e.g. More...
 
struct  availableIndex_s
 Index of all available items. More...
 
struct  rpmal_s
 Set of available packages, items, and directories. More...
 

Macros

#define _RPMFI_INTERNAL
 
#define _RPMDS_INTERNAL
 

Typedefs

typedef struct availablePackage_savailablePackage
 
typedef struct
availableIndexEntry_s
availableIndexEntry
 
typedef struct availableIndex_savailableIndex
 

Enumerations

enum  indexEntryType_e { IET_PROVIDES =1 }
 

Functions

static alNum alKey2Num (const rpmal al, alKey pkgKey)
 
static alKey alNum2Key (const rpmal al, alNum pkgNum)
 
static void rpmalFreeIndex (rpmal al)
 Destroy available item index. More...
 
static void rpmalFini (void *_al)
 
static rpmal rpmalGetPool (rpmioPool pool)
 
rpmal rpmalNew (int delta)
 Initialize available list. 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, rpmuint32_t tscolor)
 Add package to available list. More...
 
static 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, rpmuint32_t tscolor)
 Add package provides to available list index. More...
 
void rpmalMakeIndex (rpmal al)
 Generate index for available list. More...
 
fnpyKeyrpmalAllFileSatisfiesDepend (const rpmal al, const rpmds ds, alKey *keyp)
 Check added package file lists for package(s) that provide a file. More...
 
fnpyKeyrpmalAllSatisfiesDepend (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
 
rpmioPool _rpmalPool
 

Macro Definition Documentation

#define _RPMDS_INTERNAL

Definition at line 18 of file rpmal.c.

#define _RPMFI_INTERNAL

Definition at line 12 of file rpmal.c.

Typedef Documentation

Definition at line 74 of file rpmal.c.

Definition at line 54 of file rpmal.c.

Definition at line 24 of file rpmal.c.

Enumeration Type Documentation

Enumerator
IET_PROVIDES 

A Provides: dependency.

Definition at line 57 of file rpmal.c.

Function Documentation

static alNum alKey2Num ( const rpmal  al,
alKey  pkgKey 
)
inlinestatic

Definition at line 107 of file rpmal.c.

References key, and num.

Referenced by rpmalAdd(), rpmalAddProvides(), rpmalAllSatisfiesDepend(), and rpmalDel().

static alKey alNum2Key ( const rpmal  al,
alNum  pkgNum 
)
inlinestatic

Definition at line 119 of file rpmal.c.

References key, and num.

Referenced by rpmalAllFileSatisfiesDepend(), and rpmalMakeIndex().

static int indexcmp ( const void *  one,
const void *  two 
)
static

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

Parameters
one1st available index entry
two2nd available index entry
Returns
result of comparison

Definition at line 271 of file rpmal.c.

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

Referenced by rpmalAllSatisfiesDepend(), and rpmalMakeIndex().

alKey rpmalAdd ( rpmal alistp,
alKey  pkgKey,
fnpyKey  key,
rpmds  provides,
rpmfi  fi,
rpmuint32_t  tscolor 
)

Add package to available list.

Parameters
alistpaddress of available list
pkgKeypackage key, RPMAL_NOMATCH to force an append
keyassociated file name/python object
providesprovides dependency set
fifile info set
tscolortransaction color bits
Returns
available package index

Definition at line 222 of file rpmal.c.

References alKey2Num(), rpmal_s::alloced, availablePackage_s::bf, rpmal_s::delta, availablePackage_s::fi, availablePackage_s::key, key, rpmal_s::list, availablePackage_s::provides, RPMAL_NOMATCH, rpmalDel(), rpmalFreeIndex(), rpmalNew(), rpmbfLink(), rpmdsLink(), rpmfiFNBF(), rpmfiLink(), rpmal_s::size, size, availablePackage_s::tscolor, and xrealloc.

Referenced by _orgrpmtsOrder(), _rpmtsOrder(), rpmal_Add(), and rpmtsAddInstallElement().

void rpmalAddProvides ( rpmal  al,
alKey  pkgKey,
rpmds  provides,
rpmuint32_t  tscolor 
)

Add package provides to available list index.

Parameters
alavailable list
pkgKeypackage key
providesadded package provides
tscolortransaction color bits

Definition at line 287 of file rpmal.c.

References alKey2Num(), availableIndexEntry_s::entry, availableIndexEntry_s::entryIx, availableIndexEntry_s::entryLen, IET_PROVIDES, availableIndex_s::index, rpmal_s::index, availableIndex_s::k, availableIndexEntry_s::pkgKey, rpmdsColor(), rpmdsInit(), rpmdsIx(), rpmdsNext(), availableIndex_s::size, rpmal_s::size, and availableIndexEntry_s::type.

Referenced by rpmal_AddProvides(), and rpmalMakeIndex().

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

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

Parameters
alavailable list
dsdependency set
Return values
keypadded package key pointer (or NULL)
Returns
associated package key(s), NULL if none

Definition at line 360 of file rpmal.c.

References _, alNum2Key(), availablePackage_s::bf, availablePackage_s::fi, i, j, availablePackage_s::key, rpmal_s::list, RPMAL_NOMATCH, rpmbfChk(), rpmdsN(), rpmdsNotify(), rpmlog(), RPMLOG_DEBUG, rpmal_s::size, stpcpy(), urlPath(), and xrealloc.

Referenced by rpmalAllSatisfiesDepend().

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

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

Parameters
alavailable list
dsdependency set
Return values
keypadded package key pointer (or NULL)
Returns
associated package key(s), NULL if none

Definition at line 419 of file rpmal.c.

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

Referenced by checkPackageDeps(), rpmalSatisfiesDepend(), and rpmtsAvailable().

void rpmalDel ( rpmal  al,
alKey  pkgKey 
)

Delete package from available list.

Parameters
alavailable list
pkgKeypackage key

Definition at line 201 of file rpmal.c.

References alKey2Num(), availablePackage_s::bf, availablePackage_s::fi, rpmal_s::list, availablePackage_s::provides, rpmbfFree(), rpmdsFree(), and rpmfiFree().

Referenced by rpmal_Del(), and rpmalAdd().

static void rpmalFini ( void *  _al)
static
static void rpmalFreeIndex ( rpmal  al)
static

Destroy available item index.

Parameters
alavailable list

Definition at line 135 of file rpmal.c.

References _free(), availableIndex_s::index, rpmal_s::index, and availableIndex_s::size.

Referenced by rpmalAdd(), and rpmalFini().

static rpmal rpmalGetPool ( rpmioPool  pool)
static

Definition at line 169 of file rpmal.c.

References rpmal_s::_item, _rpmal_debug, _rpmalPool, rpmalFini(), rpmioGetPool(), and rpmioNewPool().

Referenced by rpmalNew().

void rpmalMakeIndex ( rpmal  al)
rpmal rpmalNew ( int  delta)

Initialize available list.

Parameters
deltano. of entries to add on each realloc
Returns
al new available list

Definition at line 185 of file rpmal.c.

References rpmal_s::alloced, rpmal_s::delta, availableIndex_s::index, rpmal_s::index, rpmal_s::list, rpmalGetPool(), rpmalLink(), availableIndex_s::size, rpmal_s::size, and xcalloc().

Referenced by rpmalAdd().

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
alavailable list
dsdependency set
Return values
keypadded package key pointer (or NULL)
Returns
associated package key, NULL if none

Definition at line 511 of file rpmal.c.

References rpmalAllSatisfiesDepend().

Referenced by addRelation(), orgrpmAddRelation(), and unsatisfiedDepend().

Variable Documentation

int _rpmal_debug = 0

Definition at line 35 of file rpmal.c.

Referenced by rpmalGetPool().

rpmioPool _rpmalPool

Definition at line 167 of file rpmal.c.

Referenced by rpmalGetPool().