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

lib/rpmds.c File Reference

More...

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

Go to the source code of this file.

Defines

#define _RPMDS_INTERNAL

Functions

rpmds XrpmdsUnlink (rpmds ds, const char *msg, const char *fn, unsigned ln)
rpmds XrpmdsLink (rpmds ds, const char *msg, const char *fn, unsigned ln)
rpmds rpmdsFree (rpmds ds)
 Destroy a dependency set. More...

rpmds rpmdsNew (Header h, rpmTag tagN, int scareMem)
 Create and load a dependency set. More...

char * rpmdsNewDNEVR (const char *dspfx, const rpmds ds)
 Return new formatted dependency string. More...

rpmds rpmdsThis (Header h, rpmTag tagN, int_32 Flags)
 Create, load and initialize a dependency for this header. More...

rpmds rpmdsSingle (rpmTag tagN, const char *N, const char *EVR, int_32 Flags)
 Create, load and initialize a dependency set of size 1. More...

int rpmdsCount (const rpmds ds)
 Return dependency set count. More...

int rpmdsIx (const rpmds ds)
 Return dependency set index. More...

int rpmdsSetIx (rpmds ds, int ix)
 Set dependency set index. More...

const char * rpmdsDNEVR (const rpmds ds)
 Return current formatted dependency string. More...

const char * rpmdsN (const rpmds ds)
 Return current dependency name. More...

const char * rpmdsEVR (const rpmds ds)
 Return current dependency epoch-version-release. More...

int_32 rpmdsFlags (const rpmds ds)
 Return current dependency flags. More...

rpmTag rpmdsTagN (const rpmds ds)
 Return current dependency type. More...

int rpmdsNoPromote (const rpmds ds)
 Return current "Don't promote Epoch:" flag. More...

int rpmdsSetNoPromote (rpmds ds, int nopromote)
 Set "Don't promote Epoch:" flag. More...

void rpmdsNotify (rpmds ds, const char *where, int rc)
 Notify of results of dependency match. More...

int rpmdsNext (rpmds ds)
 Return next dependency set iterator index. More...

rpmds rpmdsInit (rpmds ds)
 Initialize dependency set iterator. More...

void parseEVR (char *evr, const char **ep, const char **vp, const char **rp)
 Split EVR into epoch, version, and release components. More...

int rpmdsCompare (const rpmds A, const rpmds B)
 Compare two versioned dependency ranges, looking for overlap. More...

void rpmdsProblem (rpmps ps, const char *pkgNEVR, const rpmds ds, const fnpyKey *suggestedKeys, int adding)
 Report a Requires: or Conflicts: dependency problem. More...

int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package provides dependencies from header with a single dependency. More...

int rpmdsNVRMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package name-version-release from header with a single dependency. More...


Variables

int _noisy_range_comparison_debug_message = 0
 Enable noisy range comparison debugging message? More...

int _rpmds_debug = 0
int _rpmds_nopromote = 1
int _rpmds_unspecified_epoch_noise = 0


Detailed Description

Definition in file rpmds.c.


Define Documentation

#define _RPMDS_INTERNAL
 

Definition at line 8 of file rpmds.c.


Function Documentation

void parseEVR char *    evr,
const char **    ep,
const char **    vp,
const char **    rp
[static]
 

Split EVR into epoch, version, and release components.

Parameters:
evr  [epoch:]version[-release] string
Return values:
ep  pointer to epoch
vp  pointer to version
rp  pointer to release

Definition at line 528 of file rpmds.c.

References xisdigit.

Referenced by rpmdsCompare.

int rpmdsAnyMatchesDep const Header    h,
const rpmds    req,
int    nopromote
 

Compare package provides dependencies from header with a single dependency.

Parameters:
h  header
req  dependency set
nopromote  Don't promote Epoch: in comparison?
Returns:
1 if any dependency overlaps, 0 otherwise

Definition at line 683 of file rpmds.c.

References rpmds, rpmdsCompare, rpmdsFree, rpmdsInit, rpmdsNew, rpmdsNext, rpmdsSetNoPromote, RPMSENSE_SENSEMASK, and RPMTAG_PROVIDENAME.

int rpmdsCompare const rpmds    A,
const rpmds    B
 

Compare two versioned dependency ranges, looking for overlap.

Parameters:
A  1st dependency
B  2nd dependency
Returns:
1 if dependencies overlap, 0 otherwise

Definition at line 572 of file rpmds.c.

References _, _free, _rpmds_unspecified_epoch_noise, parseEVR, rpmds, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, rpmvercmp, and xstrdup.

int rpmdsCount const rpmds    ds
 

Return dependency set count.

Parameters:
ds  dependency set
Returns:
current count

Definition at line 365 of file rpmds.c.

References rpmds.

const char* rpmdsDNEVR const rpmds    ds
 

Return current formatted dependency string.

Parameters:
ds  dependency set
Returns:
current dependency DNEVR, NULL on invalid

Definition at line 386 of file rpmds.c.

References rpmds.

const char* rpmdsEVR const rpmds    ds
 

Return current dependency epoch-version-release.

Parameters:
ds  dependency set
Returns:
current dependency EVR, NULL on invalid

Definition at line 412 of file rpmds.c.

References rpmds.

int_32 rpmdsFlags const rpmds    ds
 

Return current dependency flags.

Parameters:
ds  dependency set
Returns:
current dependency flags, 0 on invalid

Definition at line 425 of file rpmds.c.

References int_32, and rpmds.

rpmds rpmdsFree rpmds    ds
 

Destroy a dependency set.

Parameters:
ds  dependency set
Returns:
NULL always

Definition at line 54 of file rpmds.c.

References _free, _rpmds_debug, headerFree, HFD_t, rpmds, rpmdsUnlink, rpmTag, RPMTAG_CONFLICTFLAGS, RPMTAG_CONFLICTNAME, RPMTAG_CONFLICTVERSION, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, RPMTAG_TRIGGERFLAGS, RPMTAG_TRIGGERNAME, and RPMTAG_TRIGGERVERSION.

rpmds rpmdsInit rpmds    ds
 

Initialize dependency set iterator.

Parameters:
ds  dependency set
Returns:
dependency set

Definition at line 510 of file rpmds.c.

References rpmds.

int rpmdsIx const rpmds    ds
 

Return dependency set index.

Parameters:
ds  dependency set
Returns:
current index

Definition at line 370 of file rpmds.c.

References rpmds.

const char* rpmdsN const rpmds    ds
 

Return current dependency name.

Parameters:
ds  dependency set
Returns:
current dependency name, NULL on invalid

Definition at line 399 of file rpmds.c.

References N, and rpmds.

rpmds rpmdsNew Header    h,
rpmTag    tagN,
int    scareMem
 

Create and load a dependency set.

Parameters:
h  header
tagN  type of dependency
scareMem  Use pointers to refcounted header memory?
Returns:
new dependency set

Definition at line 115 of file rpmds.c.

References _rpmds_debug, headerLink, HGE_t, int_32, N, rpmds, rpmdsLink, rpmTag, RPMTAG_CONFLICTFLAGS, RPMTAG_CONFLICTNAME, RPMTAG_CONFLICTVERSION, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, RPMTAG_TRIGGERFLAGS, RPMTAG_TRIGGERNAME, RPMTAG_TRIGGERVERSION, rpmTagType, xcalloc, and xmalloc.

char* rpmdsNewDNEVR const char *    dspfx,
const rpmds    ds
 

Return new formatted dependency string.

Parameters:
dspfx  formatted dependency string prefix
ds  dependency set
Returns:
new formatted dependency (malloc'ed)

Definition at line 192 of file rpmds.c.

References rpmds, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, stpcpy, and xmalloc.

int rpmdsNext rpmds    ds
 

Return next dependency set iterator index.

Parameters:
ds  dependency set
Returns:
dependency set iterator index, -1 on termination

Definition at line 481 of file rpmds.c.

References _free, _rpmds_debug, rpmds, and rpmdsNewDNEVR.

int rpmdsNoPromote const rpmds    ds
 

Return current "Don't promote Epoch:" flag.

This flag controls for Epoch: promotion when a dependency set is compared. If the flag is set (for already installed packages), then an unspecified value will be treated as Epoch: 0. Otherwise (for added packages), the Epoch: portion of the comparison is skipped if the value is not specified, i.e. an unspecified Epoch: is assumed to be equal in dependency comparisons.

Parameters:
ds  dependency set
Returns:
current "Don't promote Epoch:" flag

Definition at line 448 of file rpmds.c.

References rpmds.

void rpmdsNotify rpmds    ds,
const char *    where,
int    rc
 

Notify of results of dependency match.

Parameters:
ds  dependency set
where  where dependency was resolved (or NULL)
rc  0 == YES, otherwise NO

Definition at line 468 of file rpmds.c.

References _, and rpmds.

int rpmdsNVRMatchesDep const Header    h,
const rpmds    req,
int    nopromote
 

Compare package name-version-release from header with a single dependency.

Deprecated:
Remove from API when obsoletes is correctly implemented.
Parameters:
h  header
req  dependency set
nopromote  Don't promote Epoch: in comparison?
Returns:
1 if dependency overlaps, 0 otherwise

Definition at line 734 of file rpmds.c.

References alloca, headerNVR, HGE_t, int_32, rpmds, rpmdsCompare, rpmdsFree, rpmdsSetNoPromote, rpmdsSingle, RPMSENSE_EQUAL, RPMSENSE_SENSEMASK, RPMTAG_EPOCH, RPMTAG_PROVIDENAME, and stpcpy.

void rpmdsProblem rpmps    ps,
const char *    pkgNEVR,
const rpmds    ds,
const fnpyKey *    suggestedKeys,
int    adding
 

Report a Requires: or Conflicts: dependency problem.

Parameters:
ps  transaction set problems
pkgNEVR  package name/epoch/version/release
ds  dependency set
suggestedKeys  filename or python object address
adding  dependency problem is from added package set?

Definition at line 653 of file rpmds.c.

References _, rpmds, rpmdsDNEVR, rpmdsEVR, rpmdsN, RPMPROB_CONFLICT, RPMPROB_REQUIRES, rpmProblemType, and rpmpsAppend.

int rpmdsSetIx rpmds    ds,
int    ix
 

Set dependency set index.

Parameters:
ds  dependency set
ix  new index
Returns:
current index

Definition at line 375 of file rpmds.c.

References rpmds.

int rpmdsSetNoPromote rpmds    ds,
int    nopromote
 

Set "Don't promote Epoch:" flag.

Parameters:
ds  dependency set
Returns:
previous "Don't promote Epoch:" flag

Definition at line 457 of file rpmds.c.

References rpmds.

rpmds rpmdsSingle rpmTag    tagN,
const char *    N,
const char *    EVR,
int_32    Flags
 

Create, load and initialize a dependency set of size 1.

Parameters:
tagN  type of dependency
N  name
EVR  epoch:version-release
Flags  comparison flags
Returns:
new dependency set

Definition at line 316 of file rpmds.c.

References int_32, N, rpmds, rpmdsLink, rpmdsNewDNEVR, rpmTag, RPMTAG_CONFLICTNAME, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, xcalloc, and xmalloc.

rpmTag rpmdsTagN const rpmds    ds
 

Return current dependency type.

Parameters:
ds  dependency set
Returns:
current dependency type, 0 on invalid

Definition at line 438 of file rpmds.c.

References rpmds, and rpmTag.

rpmds rpmdsThis Header    h,
rpmTag    tagN,
int_32    Flags
 

Create, load and initialize a dependency for this header.

Parameters:
h  header
tagN  type of dependency
Flags  comparison flags
Returns:
new dependency set

Definition at line 236 of file rpmds.c.

References headerNVR, HGE_t, int_32, N, rpmds, rpmdsLink, rpmdsNewDNEVR, rpmTag, RPMTAG_CONFLICTNAME, RPMTAG_EPOCH, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, stpcpy, xcalloc, and xmalloc.

rpmds XrpmdsLink rpmds    ds,
const char *    msg,
const char *    fn,
unsigned    ln
 

Todo:
Remove debugging entry from the ABI.

Definition at line 41 of file rpmds.c.

References _rpmds_debug, and rpmds.

rpmds XrpmdsUnlink rpmds    ds,
const char *    msg,
const char *    fn,
unsigned    ln
 

Todo:
Remove debugging entry from the ABI.

Definition at line 30 of file rpmds.c.

References _rpmds_debug, and rpmds.


Variable Documentation

int _noisy_range_comparison_debug_message = 0 [static]
 

Enable noisy range comparison debugging message?

Definition at line 17 of file rpmds.c.

int _rpmds_debug = 0
 

Definition at line 20 of file rpmds.c.

Referenced by rpmdsFree, rpmdsNew, rpmdsNext, XrpmdsLink, and XrpmdsUnlink.

int _rpmds_nopromote = 1
 

Definition at line 23 of file rpmds.c.

int _rpmds_unspecified_epoch_noise = 0
 

Definition at line 27 of file rpmds.c.

Referenced by rpmdsCompare.


Generated on Wed Sep 4 12:50:00 2002 for rpm by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002