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

lib/rpmps.c File Reference

#include "system.h"
#include <rpmlib.h>
#include "rpmps.h"
#include "misc.h"
#include "debug.h"

Include dependency graph for rpmps.c:

Go to the source code of this file.

Defines

#define _RPMPS_INTERNAL
#define XSTRCMP(a, b)   ((!(a) && !(b)) || ((a) && (b) && !strcmp((a), (b))))

Functions

rpmps XrpmpsUnlink (rpmps ps, const char *msg, const char *fn, unsigned ln)
rpmps XrpmpsLink (rpmps ps, const char *msg, const char *fn, unsigned ln)
int rpmpsNumProblems (rpmps ps)
 Return number of problems in set.
rpmps rpmpsCreate (void)
 Create a problem set.
rpmps rpmpsFree (rpmps ps)
 Destroy a problem set.
void rpmpsAppend (rpmps ps, rpmProblemType type, const char *pkgNEVR, fnpyKey key, const char *dn, const char *bn, const char *altNEVR, unsigned long long ulong1)
 Append a problem to current set of problems.
int rpmpsTrim (rpmps ps, rpmps filter)
 Filter a problem set.
static int vsnprintf (char *buf, int nb, const char *fmt, va_list ap)
static int snprintf (char *buf, int nb, const char *fmt,...)
const char * rpmProblemString (const rpmProblem prob)
 Return formatted string representation of a problem.
static int sameProblem (const rpmProblem ap, const rpmProblem bp)
void rpmpsPrint (FILE *fp, rpmps ps)
 Print problems to file handle.
rpmProblem rpmpsGetProblem (rpmps ps, int num)
 Return a problem from problem set.
char * rpmProblemGetPkgNEVR (rpmProblem prob)
 Return the package NEVR causing the problem.
char * rpmProblemGetAltNEVR (rpmProblem prob)
 Return the second package NEVR causing the problem.
char * rpmProblemGetStr (rpmProblem prob)
 Return a generic data string from a problem.
unsigned long long rpmProblemGetLong (rpmProblem prob)
 Return generic pointer/long attribute from a problem.
rpmProblemType rpmProblemGetType (rpmProblem prob)
 Return the problem type.
fnpyKey rpmProblemKey (rpmProblem prob)
 Return the transaction key causing the problem.

Variables

int _rpmps_debug = 0


Detailed Description

Definition in file rpmps.c.


Define Documentation

#define _RPMPS_INTERNAL
 

Definition at line 9 of file rpmps.c.

#define XSTRCMP a,
 )     ((!(a) && !(b)) || ((a) && (b) && !strcmp((a), (b))))
 

Definition at line 127 of file rpmps.c.

Referenced by rpmpsTrim().


Function Documentation

char* rpmProblemGetAltNEVR rpmProblem  prob  ) 
 

Return the second package NEVR causing the problem.

Parameters:
prob rpm problem
Returns:
NEVR string ptr, or NULL if unset

Definition at line 357 of file rpmps.c.

unsigned long long rpmProblemGetLong rpmProblem  prob  ) 
 

Return generic pointer/long attribute from a problem.

Parameters:
prob rpm problem
Returns:
a generic pointer/long attribute
Todo:
needs a better name

Definition at line 367 of file rpmps.c.

char* rpmProblemGetPkgNEVR rpmProblem  prob  ) 
 

Return the package NEVR causing the problem.

Parameters:
prob rpm problem
Returns:
NEVR string ptr

Definition at line 352 of file rpmps.c.

char* rpmProblemGetStr rpmProblem  prob  ) 
 

Return a generic data string from a problem.

Parameters:
prob rpm problem
Returns:
a generic data string
Todo:
needs a better name

Definition at line 362 of file rpmps.c.

rpmProblemType rpmProblemGetType rpmProblem  prob  ) 
 

Return the problem type.

Parameters:
prob rpm problem
Returns:
rpmProblemType

Definition at line 372 of file rpmps.c.

fnpyKey rpmProblemKey rpmProblem  prob  ) 
 

Return the transaction key causing the problem.

Parameters:
prob rpm problem
Returns:
fnpkey ptr if any or NULL

Definition at line 377 of file rpmps.c.

const char* rpmProblemString const rpmProblem  prob  ) 
 

Return formatted string representation of a problem.

Parameters:
prob rpm problem
Returns:
formatted string (malloc'd)

Definition at line 194 of file rpmps.c.

References _, N_, RPMPROB_BADPLATFORM, RPMPROB_BADPRETRANS, RPMPROB_BADRELOCATE, RPMPROB_CONFLICT, RPMPROB_DISKNODES, RPMPROB_DISKSPACE, RPMPROB_FILE_CONFLICT, RPMPROB_NEW_FILE_CONFLICT, RPMPROB_NOREPACKAGE, RPMPROB_OLDPACKAGE, RPMPROB_PKG_INSTALLED, RPMPROB_RDONLY, RPMPROB_REQUIRES, snprintf(), and xmalloc().

Referenced by rpmps_iternext(), rpmps_subscript(), rpmpsPrint(), and rpmts_Run().

void rpmpsAppend rpmps  ps,
rpmProblemType  type,
const char *  pkgNEVR,
fnpyKey  key,
const char *  dn,
const char *  bn,
const char *  altNEVR,
unsigned long long  ulong1
 

Append a problem to current set of problems.

Warning:
This function's args have changed, so the function cannot be used portably
Parameters:
ps problem set
type type of problem
pkgNEVR package name
key filename or python object address
dn directory name
bn file base name
altNEVR related (e.g. through a dependency) package name
ulong1 generic pointer/long attribute

Definition at line 82 of file rpmps.c.

References stpcpy(), xcalloc(), xrealloc(), and xstrdup().

Referenced by cmpArgvStr(), ensureOlder(), handleInstInstalledFiles(), handleOverlappedFiles(), relocateFileList(), rpmdsProblem(), rpmps_ass_sub(), rpmtsAddInstallElement(), rpmtsCheckDSIProblems(), and rpmtsRun().

rpmps rpmpsCreate void   ) 
 

Create a problem set.

Returns:
new problem set

Definition at line 55 of file rpmps.c.

References rpmpsLink, and xcalloc().

Referenced by rpmps_init(), rpmRollback(), rpmtsCheck(), and rpmtsRun().

rpmps rpmpsFree rpmps  ps  ) 
 

Destroy a problem set.

Parameters:
ps problem set
Returns:
NULL always

Definition at line 61 of file rpmps.c.

References _free(), and rpmpsUnlink.

Referenced by checkPackageDeps(), checkSpec(), cmpArgvStr(), ensureOlder(), handleInstInstalledFiles(), handleOverlappedFiles(), relocateFileList(), rpmErase(), rpmgiNext(), rpmInstall(), rpmps_dealloc(), rpmps_free(), rpmrbProblems(), rpmRollback(), rpmts_Check(), rpmts_Run(), rpmtsAddInstallElement(), rpmtsCheck(), rpmtsCheckDSIProblems(), rpmtsClean(), rpmtsRun(), and verifyDependencies().

rpmProblem rpmpsGetProblem rpmps  ps,
int  num
 

Return a problem from problem set.

Parameters:
ps problem set
num problem number
Returns:
rpmProblem, or NULL if error

Definition at line 344 of file rpmps.c.

int rpmpsNumProblems rpmps  ps  ) 
 

Return number of problems in set.

Parameters:
ps problem set
Returns:
number of problems

Definition at line 47 of file rpmps.c.

Referenced by checkSpec(), rpmErase(), rpmgiNext(), rpmInstall(), rpmps_length(), rpmrbProblems(), rpmtsCheck(), rpmtsRun(), and verifyDependencies().

void rpmpsPrint FILE *  fp,
rpmps  ps
 

Print problems to file handle.

Parameters:
fp file handle (NULL uses stderr)
ps problem set

Definition at line 309 of file rpmps.c.

References _free(), rpmProblemString(), and sameProblem().

Referenced by checkSpec(), rpmErase(), rpmgiNext(), rpmInstall(), rpmps_print(), and rpmrbProblems().

int rpmpsTrim rpmps  ps,
rpmps  filter
 

Filter a problem set.

As the problem sets are generated in an order solely dependent on the ordering of the packages in the transaction, and that ordering can't be changed, the problem sets must be parallel to one another. Additionally, the filter set must be a subset of the target set, given the operations available on transaction set. This is good, as it lets us perform this trim in linear time, rather then logarithmic or quadratic.

Parameters:
ps problem set
filter problem filter (or NULL)
Returns:
0 no problems, 1 if problems remain

Definition at line 129 of file rpmps.c.

References XSTRCMP.

Referenced by rpmtsRun().

static int sameProblem const rpmProblem  ap,
const rpmProblem  bp
[static]
 

Definition at line 288 of file rpmps.c.

Referenced by rpmpsPrint().

static int snprintf char *  buf,
int  nb,
const char *  fmt,
  ...
[inline, static]
 

Definition at line 183 of file rpmps.c.

References vsnprintf().

Referenced by FDGsqlTag(), formatValue(), headerCheck(), intFormat(), pgpsigFormat(), PRCOsqlTag(), rpmfcHelper(), rpmProblemString(), rpmpsmStage(), rpmReadHeader(), rpmReadSignature(), shescapeFormat(), singleSprintf(), statFormat(), xmlFormat(), and yamlFormat().

static int vsnprintf char *  buf,
int  nb,
const char *  fmt,
va_list  ap
[inline, static]
 

Definition at line 175 of file rpmps.c.

Referenced by snprintf(), and vrpmlog().

rpmps XrpmpsLink rpmps  ps,
const char *  msg,
const char *  fn,
unsigned  ln
 

Todo:
Remove debugging entry from the ABI.

Definition at line 34 of file rpmps.c.

References _rpmps_debug.

rpmps XrpmpsUnlink rpmps  ps,
const char *  msg,
const char *  fn,
unsigned  ln
 

Todo:
Remove debugging entry from the ABI.

Definition at line 21 of file rpmps.c.

References _rpmps_debug.


Variable Documentation

int _rpmps_debug = 0
 

Definition at line 19 of file rpmps.c.


Generated on Wed Dec 28 00:18:15 2016 for rpm by  doxygen 1.4.4