lib/rpmps.h File Reference

Structures and prototypes used for an "rpmps" problem set. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define rpmpsUnlink(_ps, _msg)   XrpmpsUnlink(_ps, _msg, __FILE__, __LINE__)
#define rpmpsLink(_ps, _msg)   XrpmpsLink(_ps, _msg, __FILE__, __LINE__)

Typedefs

typedef struct rpmProblem_s * rpmProblem
 Raw data for an element of a problem set.
typedef struct rpmps_s * rpmps
 Transaction problems found while processing a transaction set/.
typedef struct rpmpsi_s * rpmpsi
typedef enum rpmprobFilterFlags_e rpmprobFilterFlags
typedef enum rpmProblemType_e rpmProblemType
 Enumerate transaction set problem types.

Enumerations

enum  rpmprobFilterFlags_e {
  RPMPROB_FILTER_NONE = 0, RPMPROB_FILTER_IGNOREOS = (1 << 0), RPMPROB_FILTER_IGNOREARCH = (1 << 1), RPMPROB_FILTER_REPLACEPKG = (1 << 2),
  RPMPROB_FILTER_FORCERELOCATE = (1 << 3), RPMPROB_FILTER_REPLACENEWFILES = (1 << 4), RPMPROB_FILTER_REPLACEOLDFILES = (1 << 5), RPMPROB_FILTER_OLDPACKAGE = (1 << 6),
  RPMPROB_FILTER_DISKSPACE = (1 << 7), RPMPROB_FILTER_DISKNODES = (1 << 8)
}
enum  rpmProblemType_e {
  RPMPROB_BADARCH, RPMPROB_BADOS, RPMPROB_PKG_INSTALLED, RPMPROB_BADRELOCATE,
  RPMPROB_REQUIRES, RPMPROB_CONFLICT, RPMPROB_NEW_FILE_CONFLICT, RPMPROB_FILE_CONFLICT,
  RPMPROB_OLDPACKAGE, RPMPROB_DISKSPACE, RPMPROB_DISKNODES, RPMPROB_RDONLY,
  RPMPROB_BADPRETRANS, RPMPROB_BADPLATFORM, RPMPROB_NOREPACKAGE
}
 Enumerate transaction set problem types. More...

Functions

const char * rpmProblemString (const rpmProblem prob)
 Return formatted string representation of a problem.
rpmps rpmpsUnlink (rpmps ps, const char *msg)
 Unreference a problem set instance.
rpmps XrpmpsUnlink (rpmps ps, const char *msg, const char *fn, unsigned ln)
rpmps rpmpsLink (rpmps ps, const char *msg)
 Reference a problem set instance.
rpmps XrpmpsLink (rpmps ps, const char *msg, const char *fn, unsigned ln)
int rpmpsNumProblems (rpmps ps)
 Return number of problems in set.
rpmpsi rpmpsInitIterator (rpmps ps)
 Initialize problem set iterator.
rpmpsi rpmpsFreeIterator (rpmpsi psi)
 Destroy problem set iterator.
int rpmpsNextIterator (rpmpsi psi)
 Return next problem set iterator index.
rpmProblem rpmpsProblem (rpmpsi psi)
 Return current problem from problem set.
rpmps rpmpsCreate (void)
 Create a problem set.
rpmps rpmpsFree (rpmps ps)
 Destroy a problem set.
void rpmpsPrint (FILE *fp, rpmps ps)
 Print problems to file handle.
void rpmpsAppend (rpmps ps, rpmProblemType type, const char *pkgNEVR, fnpyKey key, const char *dn, const char *bn, const char *altNEVR, uint64_t ulong1)
 Append a problem to current set of problems.
int rpmpsTrim (rpmps ps, rpmps filter)
 Filter a problem set.
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


Detailed Description

Structures and prototypes used for an "rpmps" problem set.

Definition in file rpmps.h.


Define Documentation

#define rpmpsLink ( _ps,
_msg   )     XrpmpsLink(_ps, _msg, __FILE__, __LINE__)

Definition at line 151 of file rpmps.h.

Referenced by rpmpsCreate(), rpmpsInitIterator(), and rpmtsProblems().

#define rpmpsUnlink ( _ps,
_msg   )     XrpmpsUnlink(_ps, _msg, __FILE__, __LINE__)

Definition at line 134 of file rpmps.h.

Referenced by rpmpsFree(), and rpmpsFreeIterator().


Typedef Documentation

Todo:
Generalize filter mechanism.

typedef struct rpmProblem_s* rpmProblem

Raw data for an element of a problem set.

Definition at line 17 of file rpmps.h.

Enumerate transaction set problem types.

typedef struct rpmps_s* rpmps

Transaction problems found while processing a transaction set/.

Definition at line 22 of file rpmps.h.

typedef struct rpmpsi_s* rpmpsi

Definition at line 26 of file rpmps.h.


Enumeration Type Documentation

Todo:
Generalize filter mechanism.
Enumerator:
RPMPROB_FILTER_NONE 
RPMPROB_FILTER_IGNOREOS  from --ignoreos
RPMPROB_FILTER_IGNOREARCH  from --ignorearch
RPMPROB_FILTER_REPLACEPKG  from --replacepkgs
RPMPROB_FILTER_FORCERELOCATE  from --badreloc
RPMPROB_FILTER_REPLACENEWFILES  from --replacefiles
RPMPROB_FILTER_REPLACEOLDFILES  from --replacefiles
RPMPROB_FILTER_OLDPACKAGE  from --oldpackage
RPMPROB_FILTER_DISKSPACE  from --ignoresize
RPMPROB_FILTER_DISKNODES  from --ignoresize

Definition at line 31 of file rpmps.h.

Enumerate transaction set problem types.

Enumerator:
RPMPROB_BADARCH  (unused) package ... is for a different architecture
RPMPROB_BADOS  (unused) package ... is for a different operating system
RPMPROB_PKG_INSTALLED  package ... is already installed
RPMPROB_BADRELOCATE  path ... is not relocatable for package ...
RPMPROB_REQUIRES  package ... has unsatisfied Requires: ...
RPMPROB_CONFLICT  package ... has unsatisfied Conflicts: ...
RPMPROB_NEW_FILE_CONFLICT  file ... conflicts between attemped installs of ...
RPMPROB_FILE_CONFLICT  file ... from install of ... conflicts with file from package ...
RPMPROB_OLDPACKAGE  package ... (which is newer than ...) is already installed
RPMPROB_DISKSPACE  installing package ... needs ... on the ... filesystem
RPMPROB_DISKNODES  installing package ... needs ... on the ... filesystem
RPMPROB_RDONLY  installing package ... on ... rdonly filesystem
RPMPROB_BADPRETRANS  (unimplemented)
RPMPROB_BADPLATFORM  package ... is for a different platform
RPMPROB_NOREPACKAGE  re-packaged package ... is missing

Definition at line 47 of file rpmps.h.


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 401 of file rpmps.c.

Referenced by rpmts_Check(), and verifyDependencies().

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 411 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 396 of file rpmps.c.

Referenced by rpmts_Check(), and verifyDependencies().

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 406 of file rpmps.c.

rpmProblemType rpmProblemGetType ( rpmProblem  prob  ) 

Return the problem type.

Parameters:
prob rpm problem
Returns:
rpmProblemType

Definition at line 416 of file rpmps.c.

Referenced by rpmts_Check(), and rpmts_Run().

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 421 of file rpmps.c.

Referenced by rpmts_Check().

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 234 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,
uint64_t  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 126 of file rpmps.c.

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

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

rpmps rpmpsCreate ( void   ) 

Create a problem set.

Returns:
new problem set

Definition at line 99 of file rpmps.c.

References rpmpsLink, and xcalloc().

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

rpmps rpmpsFree ( rpmps  ps  ) 

rpmpsi rpmpsFreeIterator ( rpmpsi  psi  ) 

Destroy problem set iterator.

Parameters:
psi problem set iterator
Returns:
problem set iterator (NULL)

Definition at line 67 of file rpmps.c.

References _free(), and rpmpsUnlink.

Referenced by rpmps_iternext(), rpmps_subscript(), rpmpsPrint(), rpmts_Check(), rpmts_Run(), 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 389 of file rpmps.c.

rpmpsi rpmpsInitIterator ( rpmps  ps  ) 

Initialize problem set iterator.

Parameters:
ps problem set
Returns:
problem set iterator

Definition at line 56 of file rpmps.c.

References rpmpsLink, and xcalloc().

Referenced by rpmps_iter(), rpmps_iternext(), rpmps_subscript(), rpmpsPrint(), rpmts_Check(), rpmts_Run(), and verifyDependencies().

rpmps rpmpsLink ( rpmps  ps,
const char *  msg 
)

Reference a problem set instance.

Parameters:
ps transaction set
msg 
Returns:
new transaction set reference

int rpmpsNextIterator ( rpmpsi  psi  ) 

Return next problem set iterator index.

Parameters:
psi problem set iterator
Returns:
iterator index, -1 on termination

Definition at line 76 of file rpmps.c.

References rpmpsNumProblems().

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

int rpmpsNumProblems ( rpmps  ps  ) 

Return number of problems in set.

Parameters:
ps problem set
Returns:
number of problems

Definition at line 48 of file rpmps.c.

Referenced by rpmcliInstallProblems(), rpmgiNext(), rpmps_length(), rpmpsNextIterator(), rpmpsProblem(), 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 349 of file rpmps.c.

References _free(), rpmProblemString(), rpmpsFreeIterator(), rpmpsInitIterator(), rpmpsNextIterator(), rpmpsProblem(), and sameProblem().

Referenced by rpmcliInstallProblems(), rpmgiNext(), and rpmps_print().

rpmProblem rpmpsProblem ( rpmpsi  psi  ) 

Return current problem from problem set.

Parameters:
psi problem set iterator
Returns:
current rpmProblem

Definition at line 90 of file rpmps.c.

References rpmpsNumProblems().

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

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 169 of file rpmps.c.

References XSTRCMP.

Referenced by rpmtsRun().

rpmps rpmpsUnlink ( rpmps  ps,
const char *  msg 
)

Unreference a problem set instance.

Parameters:
ps problem set
msg 
Returns:
problem set

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

Todo:
Remove debugging entry from the ABI.

Definition at line 35 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 22 of file rpmps.c.

References _rpmps_debug.


Variable Documentation

Definition at line 20 of file rpmps.c.


Generated on Sun Dec 21 08:38:18 2008 for rpm by  doxygen 1.5.6