#include "system.h"
#include <rpmlib.h>
#include "rpmps.h"
#include "misc.h"
#include "debug.h"
Go to the source code of this file.
Defines | |
#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 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. | |
Variables | |
int | _rpmps_debug = 0 |
Definition in file rpmps.c.
#define XSTRCMP | ( | a, | |||
b | ) | ((!(a) && !(b)) || ((a) && (b) && !strcmp((a), (b)))) |
const char* rpmProblemString | ( | const rpmProblem | prob | ) |
Return formatted string representation of a problem.
prob | rpm problem |
Definition at line 193 of file rpmps.c.
References _, rpmProblem_s::altNEVR, N_, rpmProblem_s::pkgNEVR, RPMPROB_BADARCH, RPMPROB_BADOS, RPMPROB_BADPRETRANS, RPMPROB_BADRELOCATE, RPMPROB_CONFLICT, RPMPROB_DISKNODES, RPMPROB_DISKSPACE, RPMPROB_FILE_CONFLICT, RPMPROB_NEW_FILE_CONFLICT, RPMPROB_OLDPACKAGE, RPMPROB_PKG_INSTALLED, RPMPROB_REQUIRES, snprintf(), rpmProblem_s::str1, strerror, rpmProblem_s::type, rpmProblem_s::ulong1, and xmalloc().
Referenced by 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 | ulong1 | |||
) |
Append a problem to current set of problems.
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 81 of file rpmps.c.
References rpmps_s::numProblems, rpmps_s::numProblemsAlloced, rpmps_s::probs, stpcpy(), xcalloc(), xrealloc(), and xstrdup().
Referenced by ensureOlder(), handleInstInstalledFiles(), handleOverlappedFiles(), relocateFileList(), rpmdsProblem(), rpmtsCheckDSIProblems(), and rpmtsRun().
rpmps rpmpsCreate | ( | void | ) |
Create a problem set.
Definition at line 54 of file rpmps.c.
References rpmpsLink, and xcalloc().
Referenced by rpmtsCheck(), and rpmtsRun().
Destroy a problem set.
ps | problem set |
Definition at line 60 of file rpmps.c.
References _free(), rpmps_s::nrefs, rpmps_s::numProblems, rpmProblem_s::pkgNEVR, rpmps_s::probs, and rpmpsUnlink.
Referenced by _rpmtsRollback(), checkSpec(), ensureOlder(), handleInstInstalledFiles(), handleOverlappedFiles(), relocateFileList(), rpmErase(), rpmgiNext(), rpmGraph(), rpmInstall(), rpmRollback(), rpmts_Check(), rpmts_Run(), rpmtsCheck(), rpmtsClean(), rpmtsRun(), and verifyDependencies().
int rpmpsNumProblems | ( | rpmps | ps | ) |
Return number of problems in set.
ps | problem set |
Definition at line 46 of file rpmps.c.
References rpmps_s::numProblems, and rpmps_s::probs.
Referenced by _rpmtsRollback(), checkSpec(), rpmErase(), rpmgiNext(), rpmGraph(), rpmInstall(), rpmRollback(), and verifyDependencies().
void rpmpsPrint | ( | FILE * | fp, | |
rpmps | ps | |||
) |
Print problems to file handle.
fp | file handle (NULL uses stderr) | |
ps | problem set |
Definition at line 303 of file rpmps.c.
References _free(), rpmps_s::numProblems, rpmps_s::probs, rpmProblemString(), and sameProblem().
Referenced by _rpmtsRollback(), checkSpec(), rpmErase(), rpmgiNext(), rpmGraph(), rpmInstall(), and rpmRollback().
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.
ps | problem set | |
filter | problem filter (or NULL) |
Definition at line 128 of file rpmps.c.
References rpmProblem_s::ignoreProblem, rpmProblem_s::key, rpmps_s::numProblems, rpmps_s::probs, rpmProblem_s::str1, rpmProblem_s::type, and XSTRCMP.
Referenced by rpmtsRun().
static int sameProblem | ( | const rpmProblem | ap, | |
const rpmProblem | bp | |||
) | [static] |
Definition at line 282 of file rpmps.c.
References rpmProblem_s::altNEVR, rpmProblem_s::pkgNEVR, rpmProblem_s::str1, rpmProblem_s::type, and rpmProblem_s::ulong1.
Referenced by rpmpsPrint().
static int snprintf | ( | char * | buf, | |
int | nb, | |||
const char * | fmt, | |||
... | ||||
) | [inline, static] |
Definition at line 182 of file rpmps.c.
References vsnprintf().
Referenced by getRepackageHeaderFromTE(), headerCheck(), mkdbname(), pgpsigFormat(), rpmfcHelper(), rpmProblemString(), rpmReadHeader(), rpmReadSignature(), and xmlFormat().
static int vsnprintf | ( | char * | buf, | |
int | nb, | |||
const char * | fmt, | |||
va_list | ap | |||
) | [inline, static] |
Definition at line 33 of file rpmps.c.
References _rpmps_debug, and rpmps_s::nrefs.
Definition at line 20 of file rpmps.c.
References _rpmps_debug, and rpmps_s::nrefs.
int _rpmps_debug = 0 |