RPMDS Dependency Set API.

Files

file  rpmdpkg.c
file  rpmdpkg.h
 

Structure(s) and routine(s) used for dpkg EVR parsing and comparison.


file  rpmds.c
file  rpmds.h
 

Structure(s) used for dependency tag sets.


file  rpmevr.c
file  rpmevr.h
 

Structure(s) and routine(s) used for EVR parsing and comparison.


file  rpmlib.h
 

In Memoriam: Steve Taylor <staylor@redhat.com> was here, now he's not.


file  rpmns.c
file  rpmns.h
 

Structure(s) and routine(s) used for classifying and parsing names.


Typedefs

typedef struct rpmds_s * rpmds
 Dependency tag sets from a header, so that a header can be discarded early.
typedef struct rpmPRCO_s * rpmPRCO
 Container for commonly extracted dependency set(s).

Functions

int dpkgEVRcmp (const char *a, const char *b)
 Segmented string compare.
int dpkgEVRparse (const char *evrstr, EVR_t evr)
 Split EVR string into epoch, version, and release components.
int dpkgEVRcompare (const EVR_t a, const EVR_t b)
 Compare EVR containers.
int rpmEVRcmp (const char *a, const char *b)
 Segmented string compare.
int rpmEVRparse (const char *evrstr, EVR_t evr)
 Split EVR string into epoch, version, and release components.
int rpmEVRcompare (const EVR_t a, const EVR_t b)
 Compare EVR containers.
nsType rpmnsArch (const char *str)
 Is string a known arch suffix?
nsType rpmnsProbe (const char *str)
 Is string a known probe namespace?
nsType rpmnsClassify (const char *str)
 Classify a string as a dependency type.
int rpmnsParse (const char *str, rpmns ns)
 Split NS string into namespace, name and arch components.

Variables

int _rpmds_debug
const char * _sysinfo_path
int _rpmds_nopromote
int(* rpmvercmp )(const char *a, const char *b)
 Segmented string compare vector.

RPMDS



rpmds rpmdsUnlink (rpmds ds, const char *msg)
 Unreference a dependency set instance.
rpmds rpmdsLink (rpmds ds, const char *msg)
 Reference a dependency set instance.
rpmds rpmdsFree (rpmds ds)
 Destroy a dependency set.
rpmds rpmdsNew (Header h, rpmTag tagN, int flags)
 Create and load a dependency set.
const char * rpmdsNewN (rpmds ds)
 Return N string, expanded if necessary.
char * rpmdsNewDNEVR (const char *dspfx, rpmds ds)
 Return new formatted dependency string.
rpmds rpmdsThis (Header h, rpmTag tagN, evrFlags Flags)
 Create, load and initialize a dependency for this header.
rpmds rpmdsSingle (rpmTag tagN, const char *N, const char *EVR, evrFlags Flags)
 Create, load and initialize a dependency set of size 1.
int rpmdsCount (const rpmds ds)
 Return dependency set count.
int rpmdsIx (const rpmds ds)
 Return dependency set index.
int rpmdsSetIx (rpmds ds, int ix)
 Set dependency set index.
const char * rpmdsDNEVR (const rpmds ds)
 Return current formatted dependency string.
const char * rpmdsN (rpmds ds)
 Return current dependency name.
const char * rpmdsEVR (const rpmds ds)
 Return current dependency epoch-version-release.
evrFlags rpmdsFlags (const rpmds ds)
 Return current dependency flags.
rpmTag rpmdsTagN (const rpmds ds)
 Return current dependency type.
const char * rpmdsA (const rpmds ds)
 Return current dependency arch.
time_t rpmdsBT (const rpmds ds)
 Return dependency build time.
time_t rpmdsSetBT (const rpmds ds, time_t BT)
 Set dependency build time.
nsType rpmdsNSType (const rpmds ds)
 Return dependency class type.
int rpmdsNoPromote (const rpmds ds)
 Return current "Don't promote Epoch:" flag.
int rpmdsSetNoPromote (rpmds ds, int nopromote)
 Set "Don't promote Epoch:" flag.
void * rpmdsSetEVRparse (rpmds ds, int(*EVRparse)(const char *everstr, EVR_t evr))
 Set EVR parsing function.
void * rpmdsSetEVRcmp (rpmds ds, int(*EVRcmp)(const char *a, const char *b))
 Set EVR comparison function.
uint32_t rpmdsColor (const rpmds ds)
 Return current dependency color.
uint32_t rpmdsSetColor (const rpmds ds, uint32_t color)
 Set current dependency color.
uint32_t rpmdsRefs (const rpmds ds)
 Return current dependency file refs.
uint32_t rpmdsSetRefs (const rpmds ds, uint32_t refs)
 Set current dependency file refs.
int32_t rpmdsResult (const rpmds ds)
 Return current dependency comparison result.
int32_t rpmdsSetResult (const rpmds ds, int32_t result)
 Set current dependency comparison result.
void rpmdsNotify (rpmds ds, const char *where, int rc)
 Notify of results of dependency match.
int rpmdsNext (rpmds ds)
 Return next dependency set iterator index.
rpmds rpmdsInit (rpmds ds)
 Initialize dependency set iterator.
int rpmdsFind (rpmds ds, const rpmds ods)
 Find a dependency set element using binary search.
int rpmdsMerge (rpmds *dsp, rpmds ods)
 Merge a dependency set maintaining (N,EVR,Flags) sorted order.
int rpmdsSearch (rpmds ds, rpmds ods)
 Search a sorted dependency set for an element that overlaps.
int rpmdsCpuinfo (rpmds *dsp, const char *fn)
 Load /proc/cpuinfo provides into a dependency set.
int rpmdsRpmlib (rpmds *dsp, void *tblp)
 Load rpmlib provides into a dependency set.
int rpmdsSysinfo (rpmPRCO PRCO, const char *fn)
 Load sysinfo dependencies into a dependency set.
int rpmdsGetconf (rpmds *dsp, const char *path)
 Load getconf provides into a dependency set.
int rpmdsMergePRCO (void *context, rpmds ds)
 Merge provides/requires/conflicts/obsoletes dependencies.
rpmPRCO rpmdsFreePRCO (rpmPRCO PRCO)
 Free dependency set(s) container.
rpmPRCO rpmdsNewPRCO (Header h)
 Create dependency set(s) container.
rpmds rpmdsFromPRCO (rpmPRCO PRCO, rpmTag tagN)
 Retrieve a dependency set from container.
int rpmdsELF (const char *fn, int flags, int(*add)(void *context, rpmds ds), void *context)
 Extract ELF dependencies from a file.
int rpmdsLdconfig (rpmPRCO PRCO, const char *fn)
 Load /etc/ld.so.cache provides into a dependency set.
int rpmdsPipe (rpmds *dsp, rpmTag tagN, const char *cmd)
 Load provides from a pipe into a dependency set.
int rpmdsCompare (const rpmds A, const rpmds B)
 Compare two versioned dependency ranges, looking for overlap.
void rpmdsProblem (rpmps ps, const char *pkgNEVR, const rpmds ds, const fnpyKey *suggestedKeys, int adding)
 Report a Requires: or Conflicts: dependency problem.
int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package provides dependencies from header with a single dependency.
int rpmdsNVRMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package name-version-release from header with a single dependency.
int rpmdsNegateRC (const rpmds ds, int rc)
 Negate return code for negated comparisons.
static const char * rpmdsTagName (const rpmds ds)
 Return current dependency type name.
static int rpmdsPrint (rpmds ds, FILE *fp)
 Print current dependency set contents.
static int rpmdsPrintResults (rpmds ds, FILE *fp)
 Print current dependency set results.
static int rpmdsPrintClosure (rpmds P, rpmds R, FILE *fp)
 Check Provides: against Requires: and print closure results.

Typedef Documentation

typedef struct rpmds_s* rpmds

Dependency tag sets from a header, so that a header can be discarded early.

Definition at line 84 of file rpmlib.h.

typedef struct rpmPRCO_s* rpmPRCO

Container for commonly extracted dependency set(s).

Definition at line 89 of file rpmlib.h.


Function Documentation

int dpkgEVRcmp ( const char *  a,
const char *  b 
)

Segmented string compare.

Parameters:
a 1st string
b 2nd string
Returns:
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 31 of file rpmdpkg.c.

References dpkgEVRctype(), and xisdigit().

Referenced by dpkgEVRcompare().

int dpkgEVRcompare ( const EVR_t  a,
const EVR_t  b 
)

Compare EVR containers.

Parameters:
a 1st EVR container
b 2nd EVR container
Returns:
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 64 of file rpmdpkg.c.

References dpkgEVRcmp().

int dpkgEVRparse ( const char *  evrstr,
EVR_t  evr 
)

Split EVR string into epoch, version, and release components.

Parameters:
evrstr [epoch:]version[-release] string
Return values:
*evr parse results
Returns:
0 always

Definition at line 59 of file rpmdpkg.c.

References rpmEVRparse().

const char* rpmdsA ( const rpmds  ds  ) 

Return current dependency arch.

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

Definition at line 690 of file rpmds.c.

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 3666 of file rpmds.c.

References rpmdsCompare(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), rpmdsSetNoPromote(), RPMNS_TYPE_ARCH, and RPMSENSE_SENSEMASK.

Referenced by handleOneTrigger(), rpmtsAddInstallElement(), rpmtsSolve(), and unsatisfiedDepend().

time_t rpmdsBT ( const rpmds  ds  ) 

Return dependency build time.

Parameters:
ds dependency set
Returns:
dependency build time, 0 on invalid

Definition at line 699 of file rpmds.c.

Referenced by rpmds_BT().

uint32_t rpmdsColor ( const rpmds  ds  ) 

Return current dependency color.

Parameters:
ds dependency set
Returns:
current dependency color (0 if not set)

Definition at line 768 of file rpmds.c.

Referenced by checkPackageDeps(), rpmalAddProvides(), rpmds_Color(), and rpmtsAddInstallElement().

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 3548 of file rpmds.c.

References _, _free(), alloca(), rpmdsFlags(), rpmdsNAcmp(), rpmEVRparse(), rpmlog(), RPMLOG_DEBUG, RPMLOG_WARNING, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_NOTEQUAL, RPMSENSE_SENSEMASK, rpmvercmp, and xstrdup().

Referenced by rpmalAllSatisfiesDepend(), rpmds_richcompare(), rpmdsAnyMatchesDep(), rpmdsNVRMatchesDep(), rpmdsSearch(), rpmHeadersIdentical(), and rpmtsAddInstallElement().

int rpmdsCount ( const rpmds  ds  ) 

Return dependency set count.

Parameters:
ds dependency set
Returns:
current count

Definition at line 615 of file rpmds.c.

Referenced by main(), rpmalMakeIndex(), rpmds_Count(), rpmds_length(), rpmfcGenerateDepends(), rpmfcPrint(), and rpmteColorDS().

int rpmdsCpuinfo ( rpmds dsp,
const char *  fn 
)

Load /proc/cpuinfo provides into a dependency set.

Return values:
*dsp (loaded) depedency set
Parameters:
fn path to file (NULL uses /proc/cpuinfo)
Returns:
0 on success

Definition at line 1217 of file rpmds.c.

References _free(), _isspace, _PROC_CPUINFO, cpuinfo_s::done, Fclose(), fdGetFILE, Ferror(), Fopen(), cpuinfo_s::name, rpmdsCpuinfoCtagFlags(), rpmdsNSAdd(), rpmExpand(), RPMSENSE_EQUAL, and xstrdup().

Referenced by main(), rpmds_Cpuinfo(), rpmShowRC(), and unsatisfiedDepend().

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 636 of file rpmds.c.

Referenced by missingokTag(), printDeps(), rpmdepPrint(), rpmds_DNEVR(), rpmds_print(), rpmds_subscript(), rpmdsPrint(), rpmdsPrintResults(), rpmdsProblem(), rpmfcPrint(), rpmfiBuildFDeps(), rpmShowRC(), rpmts_SolveCallback(), rpmtsAddInstallElement(), and unsatisfiedDepend().

int rpmdsELF ( const char *  fn,
int  flags,
int(*)(void *context, rpmds ds)  add,
void *  context 
)

Extract ELF dependencies from a file.

Parameters:
fn file name
flags 1: skip provides 2: skip requires
*add add(arg, ds) saves next provide/require elf dependency.
context add() callback context
Returns:
0 on success

Extract ELF dependencies from a file.

Return values:
t soname dependency
Parameters:
s elf string (NULL uses "")
isElf64 is this an ELF64 symbol?

Definition at line 2760 of file rpmds.c.

References _free(), DT_GNU_HASH, rpmdsFree(), rpmdsSingle(), RPMELF_FLAG_SKIPPROVIDES, RPMELF_FLAG_SKIPREQUIRES, rpmExpandNumeric(), RPMTAG_PROVIDES, stpcpy(), and xstrdup().

Referenced by main(), rpmdsLdconfig(), rpmfcELF(), and unsatisfiedDepend().

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 659 of file rpmds.c.

Referenced by rpmds_compare(), rpmds_EVR(), rpmds_iternext(), rpmdsProblem(), rpmfcFileDep(), rpmfcGenerateDepends(), rpmtsAddInstallElement(), rpmtsCheck(), and unsatisfiedDepend().

int rpmdsFind ( rpmds  ds,
const rpmds  ods 
)

Find a dependency set element using binary search.

Parameters:
ds dependency set to search
ods dependency set element to find.
Returns:
dependency index (or -1 if not found)

Definition at line 958 of file rpmds.c.

Referenced by rpmds_Find(), rpmdsMerge(), and rpmfcApply().

evrFlags rpmdsFlags ( const rpmds  ds  ) 

Return current dependency flags.

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

Definition at line 670 of file rpmds.c.

Referenced by handleOneTrigger(), missingokTag(), printDeps(), rpmds_Flags(), rpmds_iternext(), rpmdsAnyMatchesDep(), rpmdsCompare(), rpmdsNVRMatchesDep(), rpmfcFileDep(), rpmtsOrder(), unsatisfiedDepend(), and zapRelation().

rpmds rpmdsFree ( rpmds  ds  ) 
rpmPRCO rpmdsFreePRCO ( rpmPRCO  PRCO  ) 

Free dependency set(s) container.

Parameters:
PRCO dependency set(s) container
Returns:
NULL

Definition at line 2662 of file rpmds.c.

References _free(), and rpmdsFree().

Referenced by main(), rpmds_Ldconfig(), rpmds_Sysinfo(), rpmShowRC(), rpmteCleanDS(), rpmtsFree(), and unsatisfiedDepend().

rpmds rpmdsFromPRCO ( rpmPRCO  PRCO,
rpmTag  tagN 
)

Retrieve a dependency set from container.

Parameters:
PRCO dependency set(s) container
tagN type of dependency set
Returns:
dependency set (or NULL)

Definition at line 2710 of file rpmds.c.

Referenced by main(), rpmds_Ldconfig(), rpmds_Sysinfo(), rpmShowRC(), rpmteDS(), rpmtsCheck(), and unsatisfiedDepend().

int rpmdsGetconf ( rpmds dsp,
const char *  path 
)

Load getconf provides into a dependency set.

Return values:
*dsp (loaded) depedency set
Parameters:
path getconf path (NULL uses /)
Returns:
0 on success

Definition at line 2527 of file rpmds.c.

References _free(), _GETCONF_PATH, conf::call, conf::call_name, conf::CONFSTR, errno, EXIT_FAILURE, conf::name, conf::PATHCONF, rpmdsNSAdd(), rpmExpand(), RPMSENSE_EQUAL, conf::SYSCONF, xmalloc(), and xstrdup().

Referenced by main(), rpmds_Getconf(), rpmShowRC(), and unsatisfiedDepend().

rpmds rpmdsInit ( rpmds  ds  ) 
int rpmdsIx ( const rpmds  ds  ) 

Return dependency set index.

Parameters:
ds dependency set
Returns:
current index

Definition at line 620 of file rpmds.c.

Referenced by addRelation(), rpmalAddProvides(), rpmdepPrint(), rpmds_Find(), rpmds_Ix(), rpmdsPrint(), rpmdsPrintResults(), and rpmdsSearch().

int rpmdsLdconfig ( rpmPRCO  PRCO,
const char *  fn 
)

Load /etc/ld.so.cache provides into a dependency set.

Todo:
Add dependency colors, and attach to file.
Return values:
*PRCO provides/requires/conflicts/obsoletes depedency set(s)
Parameters:
fn cache file name (NULL uses /etc/ld.so.cache)
Returns:
0 on success

Definition at line 3045 of file rpmds.c.

References _free(), _isspace, _LD_SO_CACHE, _SBIN_LDCONFIG_P, rpmdsELF(), rpmdsFree(), rpmdsMerge(), rpmdsMergePRCO(), rpmdsSingle(), rpmExpand(), and xstrdup().

Referenced by main(), and rpmds_Ldconfig().

rpmds rpmdsLink ( rpmds  ds,
const char *  msg 
)

Reference a dependency set instance.

Parameters:
ds dependency set
msg 
Returns:
new dependency set reference
int rpmdsMerge ( rpmds dsp,
rpmds  ods 
)

Merge a dependency set maintaining (N,EVR,Flags) sorted order.

Return values:
*dsp (merged) dependency set
Parameters:
ods dependency set to merge
Returns:
0 on success

Definition at line 990 of file rpmds.c.

References _free(), rpmdsDup(), rpmdsDupArgv(), rpmdsFind(), rpmdsInit(), rpmdsNext(), save(), and xmalloc().

Referenced by rpmds_Merge(), rpmds_Sort(), rpmdsLdconfig(), rpmdsMergePRCO(), rpmdsNSAdd(), rpmdsPipe(), rpmdsRpmlib(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().

int rpmdsMergePRCO ( void *  context,
rpmds  ds 
)

Merge provides/requires/conflicts/obsoletes dependencies.

Parameters:
context merge dependency set(s) container
ds dependency set to merge
Returns:
0 on success

Definition at line 2625 of file rpmds.c.

References rpmdsMerge(), rpmdsTagN(), and tagName().

Referenced by main(), rpmdsLdconfig(), rpmdsSysinfoFile(), and unsatisfiedDepend().

const char* rpmdsN ( rpmds  ds  ) 

Return current dependency name.

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

Definition at line 647 of file rpmds.c.

References rpmdsNewN().

Referenced by addRelation(), checkPackageDeps(), handleOneTrigger(), rpmalAllFileSatisfiesDepend(), rpmalAllSatisfiesDepend(), rpmds_iternext(), rpmds_N(), rpmdsProblem(), rpmfcFileDep(), rpmfcGenerateDepends(), rpmtsAddInstallElement(), rpmtsCheck(), rpmtsSolve(), and unsatisfiedDepend().

int rpmdsNegateRC ( const rpmds  ds,
int  rc 
)

Negate return code for negated comparisons.

Parameters:
ds dependency set
rc postive return code
Returns:
return code

Definition at line 3771 of file rpmds.c.

Referenced by rpmtsCheck(), and unsatisfiedDepend().

rpmds rpmdsNew ( Header  h,
rpmTag  tagN,
int  flags 
)

Create and load a dependency set.

Parameters:
h header
tagN type of dependency
flags scareMem(0x1), nofilter(0x2)
Returns:
new dependency set

Definition at line 236 of file rpmds.c.

References _free(), alloca(), rpmDataType_u::argv, argvFree(), _HE_s::c, headerGet(), _HE_s::p, rpmDataType_u::ptr, rpmdsDupArgv(), rpmdsLink, rpmGenPath(), rpmDataType_u::str, _HE_s::tag, rpmDataType_u::ui32p, urlPath(), xcalloc(), and xstrdup().

Referenced by checkPackageSet(), handleOneTrigger(), hdr_dsFromHeader(), missingokTag(), printDeps(), rpmds_init(), rpmdsAnyMatchesDep(), rpmdsNewPRCO(), rpmfcGenerateDepends(), and rpmfiBuildFDeps().

char* rpmdsNewDNEVR ( const char *  dspfx,
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 394 of file rpmds.c.

References _rpmns_N_at_A, rpmdsNewN(), RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_NOTEQUAL, RPMSENSE_SENSEMASK, stpcpy(), and xmalloc().

Referenced by rpmdsNext(), rpmdsSingle(), rpmdsThis(), and zapRelation().

const char* rpmdsNewN ( rpmds  ds  ) 

Return N string, expanded if necessary.

Parameters:
ds dependency set
Returns:
new N string (malloc'ed)

Definition at line 380 of file rpmds.c.

References rpmnsParse().

Referenced by rpmdsN(), and rpmdsNewDNEVR().

rpmPRCO rpmdsNewPRCO ( Header  h  ) 

Create dependency set(s) container.

Parameters:
h header
Returns:
0 on success

Definition at line 2685 of file rpmds.c.

References rpmdsNew(), rpmdsThis(), RPMSENSE_EQUAL, and xcalloc().

Referenced by addTE(), main(), rpmds_Ldconfig(), rpmds_Sysinfo(), rpmShowRC(), rpmtsCreate(), and unsatisfiedDepend().

int rpmdsNext ( rpmds  ds  ) 
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 725 of file rpmds.c.

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 858 of file rpmds.c.

References _, rpmlog(), and RPMLOG_DEBUG.

Referenced by rpmalAllFileSatisfiesDepend(), rpmalAllSatisfiesDepend(), rpmds_Notify(), and unsatisfiedDepend().

nsType rpmdsNSType ( const rpmds  ds  ) 

Return dependency class type.

Parameters:
ds dependency set
Returns:
dependency class type

Definition at line 717 of file rpmds.c.

References RPMNS_TYPE_UNKNOWN.

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

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

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

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

Definition at line 3718 of file rpmds.c.

References _free(), alloca(), headerGet(), headerNEVRA(), _HE_s::p, rpmDataType_u::ptr, rpmdsCompare(), rpmdsFlags(), rpmdsFree(), rpmdsSetNoPromote(), rpmdsSingle(), RPMSENSE_EQUAL, RPMSENSE_SENSEMASK, stpcpy(), _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by ensureOlder().

int rpmdsPipe ( rpmds dsp,
rpmTag  tagN,
const char *  cmd 
)

Load provides from a pipe into a dependency set.

Return values:
*dsp (loaded) depedency set
Parameters:
tagN rpmds tag (0 uses RPMTAG_PROVIDENAME).
cmd popen cmd to run (NULL loads perl provides)
Returns:
0 on success

Definition at line 3391 of file rpmds.c.

References _, _free(), _isspace, _PERL_PROVIDES, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmEVRflags(), rpmExpand(), xisalnum(), and xstrdup().

Referenced by main().

static int rpmdsPrint ( rpmds  ds,
FILE *  fp 
) [inline, static]

Print current dependency set contents.

Parameters:
ds dependency set
fp file handle (NULL uses stderr)
Returns:
0 always

Definition at line 714 of file rpmds.h.

References rpmdsDNEVR(), rpmdsInit(), rpmdsIx(), rpmdsNext(), and rpmdsTagName().

static int rpmdsPrintClosure ( rpmds  P,
rpmds  R,
FILE *  fp 
) [inline, static]

Check Provides: against Requires: and print closure results.

Parameters:
P Provides: dependency set
R Requires: dependency set
fp file handle (NULL uses stderr)
Returns:
0 always

Definition at line 758 of file rpmds.h.

References rpmdsInit(), rpmdsNext(), rpmdsPrintResults(), rpmdsSearch(), and rpmdsSetResult().

Referenced by main().

static int rpmdsPrintResults ( rpmds  ds,
FILE *  fp 
) [inline, static]

Print current dependency set results.

Parameters:
ds dependency set
fp file handle (NULL uses stderr)
Returns:
0 always

Definition at line 733 of file rpmds.h.

References rpmdsDNEVR(), rpmdsInit(), rpmdsIx(), rpmdsNext(), rpmdsResult(), and rpmdsTagName().

Referenced by rpmdsPrintClosure().

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 3638 of file rpmds.c.

References D_, rpmdsDNEVR(), rpmdsEVR(), rpmdsN(), rpmlog(), RPMLOG_DEBUG, RPMPROB_CONFLICT, RPMPROB_REQUIRES, and rpmpsAppend().

Referenced by checkPackageDeps().

uint32_t rpmdsRefs ( const rpmds  ds  ) 

Return current dependency file refs.

Parameters:
ds dependency set
Returns:
current dependency file refs (0 if not set)

Definition at line 798 of file rpmds.c.

Referenced by rpmds_Refs().

int32_t rpmdsResult ( const rpmds  ds  ) 

Return current dependency comparison result.

Parameters:
ds dependency set
Returns:
current dependency result (0 if not set)

Definition at line 828 of file rpmds.c.

Referenced by rpmds_Result(), and rpmdsPrintResults().

int rpmdsRpmlib ( rpmds dsp,
void *  tblp 
)

Load rpmlib provides into a dependency set.

Return values:
*dsp (loaded) depedency set
Parameters:
tblp rpmlib provides table (NULL uses internal table)
Returns:
0 on success

Definition at line 1408 of file rpmds.c.

References rpmlibProvides_s::featureEVR, rpmlibProvides_s::featureFlags, rpmlibProvides_s::featureName, rpmdsFree(), rpmdsMerge(), and rpmdsSingle().

Referenced by main(), rpmds_Rpmlib(), rpmShowRC(), and unsatisfiedDepend().

int rpmdsSearch ( rpmds  ds,
rpmds  ods 
)

Search a sorted dependency set for an element that overlaps.

A boolean result is saved (if allocated) and accessible through rpmdsResult(ods) afterwards.

Parameters:
ds dependency set to search
ods dependency set element to find.
Returns:
dependency index (or -1 if not found)

Definition at line 1068 of file rpmds.c.

References rpmdsCompare(), rpmdsIx(), rpmdsNext(), rpmdsSetIx(), rpmdsSetResult(), and save().

Referenced by rpmds_Search(), rpmdsPrintClosure(), and unsatisfiedDepend().

time_t rpmdsSetBT ( const rpmds  ds,
time_t  BT 
)

Set dependency build time.

Parameters:
ds dependency set
BT build time
Returns:
dependency build time, 0 on invalid

Definition at line 707 of file rpmds.c.

uint32_t rpmdsSetColor ( const rpmds  ds,
uint32_t  color 
)

Set current dependency color.

Parameters:
ds dependency set
color new dependency color
Returns:
previous dependency color

Definition at line 779 of file rpmds.c.

References xcalloc().

Referenced by rpmteColorDS().

void* rpmdsSetEVRcmp ( rpmds  ds,
int(*)(const char *a, const char *b)  EVRcmp 
)

Set EVR comparison function.

Parameters:
ds dependency set
EVRcmp EVR comparison function (NULL uses default)
Returns:
previous EVR comparison function

Definition at line 757 of file rpmds.c.

void* rpmdsSetEVRparse ( rpmds  ds,
int(*)(const char *everstr, EVR_t evr)  EVRparse 
)

Set EVR parsing function.

Parameters:
ds dependency set
EVRparse EVR parsing function (NULL uses default)
Returns:
previous EVR parsing function
int rpmdsSetIx ( rpmds  ds,
int  ix 
)

Set dependency set index.

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

Definition at line 625 of file rpmds.c.

Referenced by rpmalAllSatisfiesDepend(), rpmds_Find(), rpmds_subscript(), rpmdsSearch(), rpmfcPrint(), rpmfiBuildFDeps(), and zapRelation().

int rpmdsSetNoPromote ( rpmds  ds,
int  nopromote 
)

Set "Don't promote Epoch:" flag.

Parameters:
ds dependency set
nopromote Should an unspecified Epoch: be treated as Epoch: 0?
Returns:
previous "Don't promote Epoch:" flag

Definition at line 734 of file rpmds.c.

Referenced by checkPackageSet(), handleOneTrigger(), rpmds_SetNoPromote(), rpmdsAnyMatchesDep(), and rpmdsNVRMatchesDep().

uint32_t rpmdsSetRefs ( const rpmds  ds,
uint32_t  refs 
)

Set current dependency file refs.

Parameters:
ds dependency set
refs new dependency refs
Returns:
previous dependency refs

Definition at line 809 of file rpmds.c.

References xcalloc().

Referenced by rpmteColorDS().

int32_t rpmdsSetResult ( const rpmds  ds,
int32_t  result 
)

Set current dependency comparison result.

Parameters:
ds dependency set
result new dependency result
Returns:
previous dependency result

Definition at line 839 of file rpmds.c.

References xcalloc().

Referenced by rpmdsPrintClosure(), and rpmdsSearch().

rpmds rpmdsSingle ( rpmTag  tagN,
const char *  N,
const char *  EVR,
evrFlags  Flags 
)

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

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

Definition at line 564 of file rpmds.c.

References rpmdsLink, rpmdsNewDNEVR(), xcalloc(), and xmalloc().

Referenced by ensureOlder(), rpmcliInstall(), rpmds_iternext(), rpmds_Single(), rpmdsELF(), rpmdsLdconfig(), rpmdsNSAdd(), rpmdsNVRMatchesDep(), rpmdsPipe(), rpmdsRpmlib(), rpmdsSysinfoFile(), rpmfcApply(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcSCRIPT(), and unsatisfiedDepend().

int rpmdsSysinfo ( rpmPRCO  PRCO,
const char *  fn 
)

Load sysinfo dependencies into a dependency set.

Return values:
*PRCO provides/requires/conflicts/obsoletes depedency set(s)
Parameters:
fn path to file (NULL uses /etc/rpm/sysinfo)
Returns:
0 on success

Definition at line 1568 of file rpmds.c.

References _ETC_RPM_SYSINFO, _free(), alloca(), rpmdsSysinfoFile(), rpmExpand(), rpmGetPath(), Stat(), tagValue(), and xstrdup().

Referenced by main(), rpmds_Sysinfo(), rpmShowRC(), and rpmtsCreate().

rpmTag rpmdsTagN ( const rpmds  ds  ) 

Return current dependency type.

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

Definition at line 681 of file rpmds.c.

Referenced by addRelation(), rpmds_iternext(), rpmds_TagN(), rpmdsMergePRCO(), rpmdsTagName(), rpmfcFileDep(), rpmfcMergePR(), rpmtsSolve(), and unsatisfiedDepend().

static const char* rpmdsTagName ( const rpmds  ds  )  [inline, static]

Return current dependency type name.

Parameters:
ds dependency set
Returns:
current dependency type name

Definition at line 691 of file rpmds.h.

References rpmdsTagN(), and tagName().

Referenced by rpmdepPrint(), rpmdsPrint(), and rpmdsPrintResults().

rpmds rpmdsThis ( Header  h,
rpmTag  tagN,
evrFlags  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 473 of file rpmds.c.

References _free(), alloca(), headerGet(), headerNEVRA(), _HE_s::p, rpmDataType_u::ptr, rpmdsLink, rpmdsNewDNEVR(), stpcpy(), rpmDataType_u::str, _HE_s::tag, rpmDataType_u::ui32p, xcalloc(), and xmalloc().

Referenced by hdr_dsOfHeader(), parseSpec(), rpmdsNewPRCO(), rpmHeadersIdentical(), and rpmtsAddInstallElement().

rpmds rpmdsUnlink ( rpmds  ds,
const char *  msg 
)

Unreference a dependency set instance.

Parameters:
ds dependency set
msg 
Returns:
NULL always
int rpmEVRcmp ( const char *  a,
const char *  b 
)

Segmented string compare.

Parameters:
a 1st string
b 2nd string
Returns:
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 44 of file rpmevr.c.

References _invert_digits_alphas_comparison, MAX, xisdigit(), and xisrpmalpha().

int rpmEVRcompare ( const EVR_t  a,
const EVR_t  b 
)

Compare EVR containers.

Parameters:
a 1st EVR container
b 2nd EVR container
Returns:
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 138 of file rpmevr.c.

References compare_values().

Referenced by labelCompare().

int rpmEVRparse ( const char *  evrstr,
EVR_t  evr 
)

Split EVR string into epoch, version, and release components.

Parameters:
evrstr [epoch:]version[-release] string
Return values:
*evr parse results
Returns:
0 always

Definition at line 96 of file rpmevr.c.

References xisdigit(), and xstrdup().

Referenced by dpkgEVRparse(), and rpmdsCompare().

nsType rpmnsArch ( const char *  str  ) 

Is string a known arch suffix?

Parameters:
str string
Returns:
RPMNS_TYPE_ARCH if known arch, else RPMNS_TYPE_UNKNOWN

Definition at line 57 of file rpmns.c.

References RPMNS_TYPE_ARCH, RPMNS_TYPE_UNKNOWN, and rpmnsArches.

Referenced by rpmnsClassify(), and rpmtsInitIterator().

nsType rpmnsClassify ( const char *  str  ) 

Classify a string as a dependency type.

Parameters:
str string like "bing(bang).boom"
Returns:
dependency type

Definition at line 142 of file rpmns.c.

References _rpmns_N_at_A, RPMNS_TYPE_ARCH, RPMNS_TYPE_COMPOUND, RPMNS_TYPE_DSO, RPMNS_TYPE_FUNCTION, RPMNS_TYPE_NAMESPACE, RPMNS_TYPE_PATH, RPMNS_TYPE_STRING, RPMNS_TYPE_UNKNOWN, RPMNS_TYPE_VERSION, rpmnsArch(), rpmnsProbe(), _rpmnsProbes_s::Type, and xisdigit().

Referenced by rpmnsParse().

int rpmnsParse ( const char *  str,
rpmns  ns 
)
nsType rpmnsProbe ( const char *  str  ) 

Is string a known probe namespace?

Parameters:
str string
Returns:
nsType if known probe, else RPMNS_TYPE_UNKNOWN

Definition at line 127 of file rpmns.c.

References _rpmnsProbes_s::NS, RPMNS_TYPE_UNKNOWN, rpmnsProbes, and _rpmnsProbes_s::Type.

Referenced by rpmnsClassify().


Variable Documentation

Definition at line 105 of file rpmds.c.

Definition at line 108 of file rpmds.c.

const char* _sysinfo_path

Definition at line 1555 of file rpmds.c.

Referenced by rpmnsClean().

int(* rpmvercmp)(const char *a, const char *b)

Segmented string compare vector.

Parameters:
a 1st string
b 2nd string
Returns:
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 151 of file rpmevr.c.

Referenced by compare_values(), rpmdsCompare(), and rpmVersionCompare().

Generated on Fri Feb 26 01:54:16 2010 for rpm by  doxygen 1.6.3