rpm  4.5
Defines | Functions | Variables
lib/rpmte.c File Reference

Routine(s) to handle an "rpmte" transaction element. More...

#include "system.h"
#include <rpmlib.h>
#include "psm.h"
#include "rpmds.h"
#include "rpmfi.h"
#include "rpmte.h"
#include "rpmts.h"
#include "debug.h"
Include dependency graph for rpmte.c:

Go to the source code of this file.

Defines

#define _RPMTE_INTERNAL

Functions

void rpmteCleanDS (rpmte te)
 Destroy dependency set info of transaction element.
static void delTE (rpmte p)
 Destroy transaction element data.
static void addTE (rpmts ts, rpmte p, Header h, fnpyKey key, rpmRelocation relocs)
 Initialize transaction element data from header.
rpmte rpmteFree (rpmte te)
 Destroy a transaction element.
rpmte rpmteNew (const rpmts ts, Header h, rpmElementType type, fnpyKey key, rpmRelocation relocs, int dboffset, alKey pkgKey)
 Create a transaction element.
unsigned int rpmteDBInstance (rpmte te)
 Retrieve last instance installed to the database.
void rpmteSetDBInstance (rpmte te, unsigned int instance)
 Set last instance installed to the database.
Header rpmteHeader (rpmte te)
 Retrieve header from transaction element.
Header rpmteSetHeader (rpmte te, Header h)
 Save header into transaction element.
rpmElementType rpmteType (rpmte te)
 Retrieve type of transaction element.
const char * rpmteN (rpmte te)
 Retrieve name string of transaction element.
const char * rpmteE (rpmte te)
 Retrieve epoch string of transaction element.
const char * rpmteV (rpmte te)
 Retrieve version string of transaction element.
const char * rpmteR (rpmte te)
 Retrieve release string of transaction element.
const char * rpmteA (rpmte te)
 Retrieve arch string of transaction element.
const char * rpmteO (rpmte te)
 Retrieve os string of transaction element.
int rpmteIsSource (rpmte te)
 Retrieve isSource attribute of transaction element.
uint_32 rpmteColor (rpmte te)
 Retrieve color bits of transaction element.
uint_32 rpmteSetColor (rpmte te, uint_32 color)
 Set color bits of transaction element.
uint_32 rpmtePkgFileSize (rpmte te)
 Retrieve size in bytes of package file.
int rpmteDepth (rpmte te)
 Retrieve dependency tree depth of transaction element.
int rpmteSetDepth (rpmte te, int ndepth)
 Set dependency tree depth of transaction element.
int rpmteBreadth (rpmte te)
 Retrieve dependency tree breadth of transaction element.
int rpmteSetBreadth (rpmte te, int nbreadth)
 Set dependency tree breadth of transaction element.
int rpmteNpreds (rpmte te)
 Retrieve tsort no.
int rpmteSetNpreds (rpmte te, int npreds)
 Set tsort no.
int rpmteTree (rpmte te)
 Retrieve tree index of transaction element.
int rpmteSetTree (rpmte te, int ntree)
 Set tree index of transaction element.
rpmte rpmteParent (rpmte te)
 Retrieve parent transaction element.
rpmte rpmteSetParent (rpmte te, rpmte pte)
 Set parent transaction element.
int rpmteDegree (rpmte te)
 Retrieve number of children of transaction element.
int rpmteSetDegree (rpmte te, int ndegree)
 Set number of children of transaction element.
tsortInfo rpmteTSI (rpmte te)
 Retrieve tsort info for transaction element.
void rpmteFreeTSI (rpmte te)
 Destroy tsort info of transaction element.
void rpmteNewTSI (rpmte te)
 Initialize tsort info of transaction element.
alKey rpmteAddedKey (rpmte te)
 Retrieve pkgKey of TR_ADDED transaction element.
alKey rpmteSetAddedKey (rpmte te, alKey npkgKey)
 Set pkgKey of TR_ADDED transaction element.
int rpmteDBOffset (rpmte te)
 Retrieve rpmdb instance of TR_REMOVED transaction element.
const char * rpmteNEVR (rpmte te)
 Retrieve name-version-release string from transaction element.
const char * rpmteNEVRA (rpmte te)
 Retrieve name-version-release.arch string from transaction element.
const char * rpmtePkgid (rpmte te)
 Retrieve pkgid string from transaction element.
const char * rpmteHdrid (rpmte te)
 Retrieve hdrid string from transaction element.
FD_t rpmteFd (rpmte te)
 Retrieve file handle from transaction element.
fnpyKey rpmteKey (rpmte te)
 Retrieve key from transaction element.
rpmds rpmteDS (rpmte te, rpmTag tag)
 Retrieve dependency tag set from transaction element.
rpmfi rpmteFI (rpmte te, rpmTag tag)
 Retrieve file info tag set from transaction element.
void rpmteColorDS (rpmte te, rpmTag tag)
 Calculate transaction element dependency colors/refs from file info.
int rpmteChain (rpmte p, rpmte q, Header oh, const char *msg)
 Chain p <-> q forward/backward transaction element links.
int rpmtsiOc (rpmtsi tsi)
 Return transaction element index.
rpmtsi XrpmtsiFree (rpmtsi tsi, const char *fn, unsigned int ln)
 Destroy transaction element iterator.
rpmtsi XrpmtsiInit (rpmts ts, const char *fn, unsigned int ln)
 Create transaction element iterator.
static rpmte rpmtsiNextElement (rpmtsi tsi)
 Return next transaction element.
rpmte rpmtsiNext (rpmtsi tsi, rpmElementType type)
 Return next transaction element of type.

Variables

int _rpmte_debug = 0
static int __mydebug = 0

Detailed Description

Routine(s) to handle an "rpmte" transaction element.

Definition in file rpmte.c.


Define Documentation

#define _RPMTE_INTERNAL

Definition at line 13 of file rpmte.c.


Function Documentation

static void addTE ( rpmts  ts,
rpmte  p,
Header  h,
fnpyKey  key,
rpmRelocation  relocs 
) [static]

Initialize transaction element data from header.

Parameters:
tstransaction set
ptransaction element
hheader
key(TR_ADDED) package retrieval key (e.g. file name)
relocs(TR_ADDED) package file relocations

Definition at line 90 of file rpmte.c.

References headerFreeData(), headerGetEntryMinMemory(), headerIsEntry(), hGetNEVR(), rpmRelocation_s::newPath, rpmRelocation_s::oldPath, RPM_BIN_TYPE, rpmdsNewPRCO(), rpmfiNew(), RPMTAG_HDRID, RPMTAG_PKGID, rpmteColorDS(), rpmtsSetRelocateElement(), stpcpy(), xmalloc(), and xstrdup().

Referenced by rpmteNew().

static void delTE ( rpmte  p) [static]

Destroy transaction element data.

Parameters:
ptransaction element

Definition at line 34 of file rpmte.c.

References _free(), argvFree(), fdFree(), headerFree(), rpmRelocation_s::newPath, rpmRelocation_s::oldPath, rpmfiFree(), and rpmteCleanDS().

Referenced by rpmteFree().

const char* rpmteA ( rpmte  te)

Retrieve arch string of transaction element.

Parameters:
tetransaction element
Returns:
arch string

Definition at line 312 of file rpmte.c.

Referenced by rpmpsmStage(), rpmte_A(), rpmte_print(), rpmtsAddInstallElement(), rpmtsCheck(), and rpmtsRun().

alKey rpmteAddedKey ( rpmte  te)

Retrieve pkgKey of TR_ADDED transaction element.

Parameters:
tetransaction element
Returns:
pkgKey

Definition at line 474 of file rpmte.c.

References RPMAL_NOMATCH.

Referenced by addRelation(), rpmte_AddedKey(), rpmtsAddInstallElement(), rpmtsAddObsoletes(), rpmtsAddUpgrades(), rpmtsOrder(), and rpmtsRun().

int rpmteBreadth ( rpmte  te)

Retrieve dependency tree breadth of transaction element.

Parameters:
tetransaction element
Returns:
breadth

Definition at line 362 of file rpmte.c.

Referenced by rpmte_Breadth().

int rpmteChain ( rpmte  p,
rpmte  q,
Header  oh,
const char *  msg 
)

Chain p <-> q forward/backward transaction element links.

Parameters:
pinstalled element (needs backward link)
qerased element (needs forward link)
oherased element header
msgoperation identifier for debugging (NULL uses "")
Returns:
0 on success

Definition at line 616 of file rpmte.c.

References __mydebug, _free(), argvAdd(), headerFreeData(), headerGetEntryMinMemory(), hGetNEVRA(), RPM_BIN_TYPE, RPMTAG_HDRID, RPMTAG_PKGID, and xmalloc().

Referenced by findErases(), rpmtsAddObsoletes(), and rpmtsAddUpgrades().

void rpmteCleanDS ( rpmte  te)

Destroy dependency set info of transaction element.

Parameters:
tetransaction element

Definition at line 25 of file rpmte.c.

References rpmdsFreePRCO().

Referenced by delTE(), and rpmtsClean().

uint_32 rpmteColor ( rpmte  te)

Retrieve color bits of transaction element.

Parameters:
tetransaction element
Returns:
color bits

Definition at line 327 of file rpmte.c.

Referenced by addQ(), handleInstInstalledFiles(), populateInstallHeader(), rpmte_Color(), rpmtsCheck(), and rpmtsRun().

void rpmteColorDS ( rpmte  te,
rpmTag  tag 
)

Calculate transaction element dependency colors/refs from file info.

Parameters:
tetransaction element
tagdependency tag (RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME)

Definition at line 545 of file rpmte.c.

References alloca(), rpmdsCount(), rpmdsInit(), rpmdsNext(), rpmdsSetColor(), rpmdsSetRefs(), rpmfiFC(), rpmfiFColor(), rpmfiFDepends(), rpmfiInit(), rpmfiNext(), rpmteDS(), and rpmteFI().

Referenced by addTE().

unsigned int rpmteDBInstance ( rpmte  te)

Retrieve last instance installed to the database.

Parameters:
tetransaction element
Returns:
last install instance.

Definition at line 260 of file rpmte.c.

int rpmteDBOffset ( rpmte  te)

Retrieve rpmdb instance of TR_REMOVED transaction element.

Parameters:
tetransaction element
Returns:
rpmdb instance

Definition at line 490 of file rpmte.c.

Referenced by rpmte_DBOffset(), and rpmtsRun().

int rpmteDegree ( rpmte  te)

Retrieve number of children of transaction element.

Parameters:
tetransaction element
Returns:
tree index

Definition at line 426 of file rpmte.c.

Referenced by rpmte_Degree(), and rpmtsOrder().

int rpmteDepth ( rpmte  te)

Retrieve dependency tree depth of transaction element.

Parameters:
tetransaction element
Returns:
depth

Definition at line 347 of file rpmte.c.

Referenced by addRelation(), rpmte_Depth(), and rpmtsOrder().

rpmds rpmteDS ( rpmte  te,
rpmTag  tag 
)

Retrieve dependency tag set from transaction element.

Parameters:
tetransaction element
tagdependency tag
Returns:
dependency tag set

Definition at line 527 of file rpmte.c.

References rpmdsFromPRCO().

Referenced by rpmte_DS(), rpmteColorDS(), rpmtsAddInstallElement(), rpmtsAddObsoletes(), rpmtsCheck(), rpmtsOrder(), and zapRelation().

const char* rpmteE ( rpmte  te)

Retrieve epoch string of transaction element.

Parameters:
tetransaction element
Returns:
epoch string

Definition at line 297 of file rpmte.c.

Referenced by ensureOlder(), rpmpsmStage(), rpmte_E(), and rpmtsRun().

FD_t rpmteFd ( rpmte  te)

Retrieve file handle from transaction element.

Parameters:
tetransaction element
Returns:
file handle

Definition at line 515 of file rpmte.c.

Referenced by rpmpsmStage(), and rpmtsRun().

rpmfi rpmteFI ( rpmte  te,
rpmTag  tag 
)

Retrieve file info tag set from transaction element.

Parameters:
tetransaction element
tagfile info tag (RPMTAG_BASENAMES)
Returns:
file info tag set

Definition at line 532 of file rpmte.c.

Referenced by rpmte_FI(), rpmteColorDS(), rpmtsAddInstallElement(), rpmtsCheck(), rpmtsCheckDSIProblems(), and rpmtsOrder().

rpmte rpmteFree ( rpmte  te)

Destroy a transaction element.

Parameters:
tetransaction element
Returns:
NULL always

Definition at line 218 of file rpmte.c.

References _free(), and delTE().

Referenced by rpmpsmFree(), rpmtsAddInstallElement(), and rpmtsEmpty().

void rpmteFreeTSI ( rpmte  te)

Destroy tsort info of transaction element.

Parameters:
tetransaction element

Definition at line 448 of file rpmte.c.

References _free(), and rpmteTSI().

Referenced by rpmteNewTSI(), and rpmtsOrder().

const char* rpmteHdrid ( rpmte  te)

Retrieve hdrid string from transaction element.

Parameters:
tetransaction element
Returns:
hdrid string

Definition at line 510 of file rpmte.c.

Referenced by rpmpsmStage(), and rpmte_Hdrid().

Header rpmteHeader ( rpmte  te)

Retrieve header from transaction element.

Parameters:
tetransaction element
Returns:
header

Definition at line 272 of file rpmte.c.

References headerLink().

Referenced by rpmgiNext().

int rpmteIsSource ( rpmte  te)

Retrieve isSource attribute of transaction element.

Parameters:
tetransaction element
Returns:
isSource attribute

Definition at line 322 of file rpmte.c.

Referenced by rpmtsAddInstallElement().

fnpyKey rpmteKey ( rpmte  te)

Retrieve key from transaction element.

Parameters:
tetransaction element
Returns:
key

Definition at line 522 of file rpmte.c.

Referenced by ensureOlder(), handleInstInstalledFiles(), handleOverlappedFiles(), relocateFileList(), rpmte_Key(), rpmtsAddInstallElement(), rpmtsCheckDSIProblems(), rpmtsNotify(), and rpmtsRun().

const char* rpmteN ( rpmte  te)

Retrieve name string of transaction element.

Parameters:
tetransaction element
Returns:
name string

Definition at line 292 of file rpmte.c.

Referenced by ensureOlder(), ignoreDep(), rpmpsmStage(), rpmte_N(), rpmtsAddInstallElement(), rpmtsAddObsoletes(), rpmtsAddUpgrades(), rpmtsRun(), and runTriggers().

const char* rpmteNEVR ( rpmte  te)

Retrieve name-version-release string from transaction element.

Parameters:
tetransaction element
Returns:
name-version-release string

Definition at line 495 of file rpmte.c.

Referenced by ensureOlder(), handleOverlappedFiles(), relocateFileList(), rpmpsmStage(), rpmte_NEVR(), rpmte_print(), rpmtsCheck(), rpmtsCheckDSIProblems(), and rpmtsRun().

const char* rpmteNEVRA ( rpmte  te)

Retrieve name-version-release.arch string from transaction element.

Parameters:
tetransaction element
Returns:
name-version-release.arch string

Definition at line 500 of file rpmte.c.

Referenced by handleInstInstalledFiles(), rpmte_NEVRA(), rpmtsAddObsoletes(), rpmtsAddUpgrades(), rpmtsCheck(), rpmtsOrder(), rpmtsRollback(), and zapRelation().

rpmte rpmteNew ( const rpmts  ts,
Header  h,
rpmElementType  type,
fnpyKey  key,
rpmRelocation  relocs,
int  dboffset,
alKey  pkgKey 
)

Create a transaction element.

Parameters:
tstransaction set
hheader
typeTR_ADDED/TR_REMOVED
key(TR_ADDED) package retrieval key (e.g. file name)
relocs(TR_ADDED) package file relocations
dboffset(TR_REMOVED) rpmdb instance
pkgKeyassociated added package (if any)
Returns:
new transaction element

Definition at line 228 of file rpmte.c.

References addTE(), headerGetEntry(), RPMTAG_SIGSIZE, TR_ADDED, TR_REMOVED, and xcalloc().

Referenced by removePackage(), and rpmtsAddInstallElement().

void rpmteNewTSI ( rpmte  te)

Initialize tsort info of transaction element.

Parameters:
tetransaction element

Definition at line 466 of file rpmte.c.

References rpmteFreeTSI(), and xcalloc().

Referenced by rpmtsOrder().

int rpmteNpreds ( rpmte  te)

Retrieve tsort no.

of predecessors of transaction element.

Parameters:
tetransaction element
Returns:
no. of predecessors

Definition at line 377 of file rpmte.c.

Referenced by rpmte_Npreds(), and rpmtsOrder().

const char* rpmteO ( rpmte  te)

Retrieve os string of transaction element.

Parameters:
tetransaction element
Returns:
os string

Definition at line 317 of file rpmte.c.

Referenced by rpmpsmStage(), rpmte_O(), rpmtsAddInstallElement(), rpmtsCheck(), and rpmtsRun().

rpmte rpmteParent ( rpmte  te)

Retrieve parent transaction element.

Parameters:
tetransaction element
Returns:
parent transaction element

Definition at line 407 of file rpmte.c.

Referenced by rpmte_Parent().

uint_32 rpmtePkgFileSize ( rpmte  te)

Retrieve size in bytes of package file.

Todo:
Signature header is estimated at 256b.
Parameters:
tetransaction element
Returns:
size in bytes of package file.

Definition at line 342 of file rpmte.c.

Referenced by rpmte_PkgFileSize(), and rpmtsOrder().

const char* rpmtePkgid ( rpmte  te)

Retrieve pkgid string from transaction element.

Parameters:
tetransaction element
Returns:
pkgid string

Definition at line 505 of file rpmte.c.

Referenced by rpmte_Pkgid().

const char* rpmteR ( rpmte  te)

Retrieve release string of transaction element.

Parameters:
tetransaction element
Returns:
release string

Definition at line 307 of file rpmte.c.

Referenced by ensureOlder(), rpmpsmStage(), rpmte_R(), and rpmtsRun().

alKey rpmteSetAddedKey ( rpmte  te,
alKey  npkgKey 
)

Set pkgKey of TR_ADDED transaction element.

Parameters:
tetransaction element
npkgKeynew pkgKey
Returns:
previous pkgKey

Definition at line 479 of file rpmte.c.

References RPMAL_NOMATCH.

Referenced by rpmtsAddInstallElement(), and rpmtsOrder().

int rpmteSetBreadth ( rpmte  te,
int  nbreadth 
)

Set dependency tree breadth of transaction element.

Parameters:
tetransaction element
nbreadthnew breadth
Returns:
previous breadth

Definition at line 367 of file rpmte.c.

Referenced by rpmtsOrder().

uint_32 rpmteSetColor ( rpmte  te,
uint_32  color 
)

Set color bits of transaction element.

Parameters:
tetransaction element
colornew color bits
Returns:
previous color bits

Definition at line 332 of file rpmte.c.

void rpmteSetDBInstance ( rpmte  te,
unsigned int  instance 
)

Set last instance installed to the database.

Parameters:
tetransaction element
instanceDatabase instance of last install element.
Returns:
last install instance.

Definition at line 266 of file rpmte.c.

Referenced by rpmpsmStage().

int rpmteSetDegree ( rpmte  te,
int  ndegree 
)

Set number of children of transaction element.

Parameters:
tetransaction element
ndegreenew number of children
Returns:
previous number of children

Definition at line 431 of file rpmte.c.

Referenced by rpmtsOrder().

int rpmteSetDepth ( rpmte  te,
int  ndepth 
)

Set dependency tree depth of transaction element.

Parameters:
tetransaction element
ndepthnew depth
Returns:
previous depth

Definition at line 352 of file rpmte.c.

Referenced by addRelation(), and rpmtsOrder().

Header rpmteSetHeader ( rpmte  te,
Header  h 
)

Save header into transaction element.

Parameters:
tetransaction element
hheader
Returns:
NULL always

Definition at line 277 of file rpmte.c.

References headerFree(), and headerLink().

Referenced by rpmtsAddInstallElement().

int rpmteSetNpreds ( rpmte  te,
int  npreds 
)

Set tsort no.

of predecessors of transaction element.

Parameters:
tetransaction element
npredsnew no. of predecessors
Returns:
previous no. of predecessors

Definition at line 382 of file rpmte.c.

Referenced by rpmtsOrder().

rpmte rpmteSetParent ( rpmte  te,
rpmte  pte 
)

Set parent transaction element.

Parameters:
tetransaction element
ptenew parent transaction element
Returns:
previous parent transaction element

Definition at line 412 of file rpmte.c.

Referenced by rpmtsOrder().

int rpmteSetTree ( rpmte  te,
int  ntree 
)

Set tree index of transaction element.

Parameters:
tetransaction element
ntreenew tree index
Returns:
previous tree index

Definition at line 397 of file rpmte.c.

Referenced by rpmtsOrder().

int rpmteTree ( rpmte  te)

Retrieve tree index of transaction element.

Parameters:
tetransaction element
Returns:
tree index

Definition at line 392 of file rpmte.c.

Referenced by rpmte_Tree(), and rpmtsOrder().

tsortInfo rpmteTSI ( rpmte  te)

Retrieve tsort info for transaction element.

Parameters:
tetransaction element
Returns:
tsort info

Definition at line 441 of file rpmte.c.

Referenced by addQ(), addRelation(), markLoop(), rpmteFreeTSI(), rpmtsOrder(), and zapRelation().

rpmElementType rpmteType ( rpmte  te)

Retrieve type of transaction element.

Parameters:
tetransaction element
Returns:
type

Definition at line 287 of file rpmte.c.

Referenced by _processFailedPackage(), addQ(), addRelation(), fsmMapPath(), handleOverlappedFiles(), mapInitIterator(), rpmfiNew(), rpmfiTypeString(), rpmgiNext(), rpmte_print(), rpmte_TEType(), rpmtsAddInstallElement(), rpmtsOrder(), rpmtsRun(), and zapRelation().

const char* rpmteV ( rpmte  te)

Retrieve version string of transaction element.

Parameters:
tetransaction element
Returns:
version string

Definition at line 302 of file rpmte.c.

Referenced by ensureOlder(), rpmpsmStage(), rpmte_V(), and rpmtsRun().

rpmte rpmtsiNext ( rpmtsi  tsi,
rpmElementType  type 
)

Return next transaction element of type.

Parameters:
tsitransaction element iterator
typetransaction element type selector (0 for any)
Returns:
next transaction element of type, NULL on termination

Definition at line 759 of file rpmte.c.

References rpmtsiNextElement().

Referenced by addRelation(), markLinkedFailed(), rpmgiNext(), rpmts_iternext(), rpmtsAddInstallElement(), rpmtsCheck(), rpmtsClean(), rpmtsEmpty(), rpmtsOrder(), rpmtsRollback(), and rpmtsRun().

static rpmte rpmtsiNextElement ( rpmtsi  tsi) [static]

Return next transaction element.

Parameters:
tsitransaction element iterator
Returns:
transaction element, NULL on termination

Definition at line 737 of file rpmte.c.

References rpmtsElement(), and rpmtsNElements().

Referenced by rpmtsiNext().

int rpmtsiOc ( rpmtsi  tsi)

Return transaction element index.

Parameters:
tsitransaction element iterator
Returns:
transaction element index

Definition at line 694 of file rpmte.c.

Referenced by rpmtsOrder(), and rpmtsRun().

rpmtsi XrpmtsiFree ( rpmtsi  tsi,
const char *  fn,
unsigned int  ln 
)

Destroy transaction element iterator.

Parameters:
tsitransaction element iterator
fn
ln
Returns:
NULL always

Definition at line 699 of file rpmte.c.

References _free(), _rpmte_debug, and rpmtsFree().

rpmtsi XrpmtsiInit ( rpmts  ts,
const char *  fn,
unsigned int  ln 
)

Create transaction element iterator.

Parameters:
tstransaction set
fn
ln
Returns:
transaction element iterator

Definition at line 715 of file rpmte.c.

References _rpmte_debug, rpmtsLink(), rpmtsNElements(), and xcalloc().


Variable Documentation

int __mydebug = 0 [static]

Definition at line 614 of file rpmte.c.

Referenced by rpmteChain().

int _rpmte_debug = 0

Definition at line 20 of file rpmte.c.

Referenced by rpmte_Debug(), XrpmtsiFree(), and XrpmtsiInit().