# RPMTRANS.

## Files

file | depends.h
| Structures used for dependency checking.

file | psm.c
| Package state machine to handle a package from a transaction set.

file | psm.h
| Package state machine to handle a package from a transaction set.

file | rpmlib.h
file | rpmvercmp.c
file | transaction.c
file | fprint.h
| Identify a file name path by a unique "finger print".

## RPMTS

typedef psm_s * | PSM_t
typedef transactionFileInfo_s * | TFI_t
typedef rpmTransactionSet_s * | rpmTransactionSet
typedef enum rpmtransFlags_e | rpmtransFlags

enum

rpmtransFlags_e {
RPMTRANS_FLAG_NONE = 0, RPMTRANS_FLAG_TEST = (1 << 0), RPMTRANS_FLAG_BUILD_PROBS = (1 << 1), RPMTRANS_FLAG_NOSCRIPTS = (1 << 2),
RPMTRANS_FLAG_JUSTDB = (1 << 3), RPMTRANS_FLAG_NOTRIGGERS = (1 << 4), RPMTRANS_FLAG_NODOCS = (1 << 5), RPMTRANS_FLAG_ALLFILES = (1 << 6),
RPMTRANS_FLAG_KEEPOBSOLETE = (1 << 7), RPMTRANS_FLAG_MULTILIB = (1 << 8), RPMTRANS_FLAG_DIRSTASH = (1 << 9), RPMTRANS_FLAG_REPACKAGE = (1 << 10),
RPMTRANS_FLAG_PKGCOMMIT = (1 << 11), RPMTRANS_FLAG_PKGUNDO = (1 << 12), RPMTRANS_FLAG_COMMIT = (1 << 13), RPMTRANS_FLAG_UNDO = (1 << 14),
RPMTRANS_FLAG_REVERSE = (1 << 15), RPMTRANS_FLAG_NOTRIGGERPREIN = (1 << 16), RPMTRANS_FLAG_NOPRE = (1 << 17), RPMTRANS_FLAG_NOPOST = (1 << 18),
RPMTRANS_FLAG_NOTRIGGERIN = (1 << 19), RPMTRANS_FLAG_NOTRIGGERUN = (1 << 20), RPMTRANS_FLAG_NOPREUN = (1 << 21), RPMTRANS_FLAG_NOPOSTUN = (1 << 22),
RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23), RPMTRANS_FLAG_NOPAYLOAD = (1 << 24), RPMTRANS_FLAG_APPLYONLY = (1 << 25), RPMTRANS_FLAG_CHAINSAW = (1 << 26),
RPMTRANS_FLAG_NOMD5 = (1 << 27)
}

rpmTransactionSet | rpmtransCreateSet (rpmdb rpmdb, const char *rootDir)
int | rpmtransAddPackage (rpmTransactionSet ts, Header h, FD_t fd, const void *key, int upgrade, rpmRelocation *relocs)
void | rpmtransAvailablePackage (rpmTransactionSet ts, Header h, const void *key)
int | rpmtransRemovePackage (rpmTransactionSet ts, int dboffset)
rpmTransactionSet | rpmtransFree (rpmTransactionSet ts)
void | rpmtransSetScriptFd (rpmTransactionSet ts, FD_t fd)
int | rpmtransGetKeys (const rpmTransactionSet ts, const void ***ep, int *nep)
int | rpmdepCheck (rpmTransactionSet ts, rpmDependencyConflict *conflicts, int *numConflicts)
int | rpmdepOrder (rpmTransactionSet ts)
rpmDependencyConflict | rpmdepFreeConflicts (rpmDependencyConflict conflicts, int numConflicts)
int | rpmGetRpmlibProvides (const char ***provNames, int **provFlags, const char ***provVersions)
int | rpmvercmp (const char *a, const char *b)
int | rpmRangesOverlap (const char *AName, const char *AEVR, int AFlags, const char *BName, const char *BEVR, int BFlags)
int | rpmCheckRpmlibProvides (const char *keyName, const char *keyEVR, int keyFlags)
int | rpmRunTransactions (rpmTransactionSet ts, rpmCallbackFunction notify, rpmCallbackData notifyData, rpmProblemSet okProbs, rpmProblemSet *newProbs, rpmtransFlags transFlags, rpmprobFilterFlags ignoreSet)

## Typedef Documentation

typedef struct psm_s* PSM_t

| Package state machine data. Definition at line 1245 of file rpmlib.h. Referenced by handleOneTrigger(), markReplacedFiles(), psmStage(), rpmInstallSourcePackage(), rpmRunTransactions(), rpmVerifyScript(), runImmedTriggers(), runInstScript(), runScript(), and runTriggers().

typedef struct rpmTransactionSet_s* rpmTransactionSet

The RPM Transaction Set. Transaction sets are inherently unordered! RPM may reorder transaction sets to reduce errors. In general, installs/upgrades are done before strict removals, and prerequisite ordering is done on installs/upgrades.

Definition at line 1257 of file rpmlib.h.

Referenced by addRelation(), checkDependentConflicts(), checkDependentPackages(), checkPackageDeps(), checkPackageSet(), checkSpec(), cpio_doio(), freeFl(), fsmGetTs(), fsmMapAttrs(), fsmSetup(), fsmStage(), handleOneTrigger(), mapInitIterator(), markReplacedFiles(), psmStage(), relocateFileList(), removePackage(), rpmdepCheck(), rpmdepOrder(), rpmErase(), rpmInstallSourcePackage(), rpmRollback(), rpmRunTransactions(), rpmtransAddPackage(), rpmtransAvailablePackage(), rpmtransCreateSet(), rpmtransFree(), rpmtransGetKeys(), rpmtransRemovePackage(), rpmtransSetScriptFd(), rpmVerifyScript(), runImmedTriggers(), runScript(), runTriggers(), skipFiles(), tsGetAlp(), tsInitIterator(), tsNextIterator(), unsatisfiedDepend(), verifyDependencies(), and writeFile().

typedef enum rpmtransFlags_e rpmtransFlags

| Bit(s) to control rpmRunTransactions() operation. Referenced by decideFileFate(), handleInstInstalledFiles(), rpmErase(), rpmInstall(), and rpmRunTransactions().

typedef struct transactionFileInfo_s* TFI_t

Definition at line 1249 of file rpmlib.h.

Referenced by cpio_doio(), dnlInitIterator(), dnlNextIterator(), fiTypeString(), freeFi(), freeFl(), freePackage(), freeSpec(), fsmGetFi(), fsmMapAttrs(), fsmMapPath(), fsmMkdirs(), fsmSetup(), fsmStage(), genCpioListAndHeader(), generateDepends(), handleInstInstalledFiles(), handleOneTrigger(), handleOverlappedFiles(), handleRmvdInstalledFiles(), loadFi(), mapFind(), mapInitIterator(), mapNextIterator(), markReplacedFiles(), mergeFiles(), processPackageFiles(), processSourceFiles(), psmStage(), relocateFileList(), rpmInstallLoadMacros(), rpmInstallSourcePackage(), rpmRunTransactions(), rpmVerifyScript(), runImmedTriggers(), runInstScript(), runScript(), runTriggers(), saveHardLink(), skipFiles(), tsGetAlp(), tsNextIterator(), and writeFile().

## Enumeration Type Documentation

enum rpmtransFlags_e

Bit(s) to control rpmRunTransactions() operation.

Enumeration values:

  RPMTRANS_FLAG_NONE |
  RPMTRANS_FLAG_TEST | from --test

  RPMTRANS_FLAG_BUILD_PROBS

  Todo:
    Document.

  RPMTRANS_FLAG_NOSCRIPTS | from --noscripts
  RPMTRANS_FLAG_JUSTDB | from --justdb
  RPMTRANS_FLAG_NOTRIGGERS | from --notriggers
  RPMTRANS_FLAG_NODOCS | from --excludedocs
  RPMTRANS_FLAG_ALLFILES | from --allfiles

  RPMTRANS_FLAG_KEEPOBSOLETE

  Todo:
    Document.

  RPMTRANS_FLAG_MULTILIB

  Todo:
    Document.

  RPMTRANS_FLAG_DIRSTASH | from --dirstash
  RPMTRANS_FLAG_REPACKAGE | from --repackage
  RPMTRANS_FLAG_PKGCOMMIT |
  RPMTRANS_FLAG_PKGUNDO |
  RPMTRANS_FLAG_COMMIT |
  RPMTRANS_FLAG_UNDO |
  RPMTRANS_FLAG_REVERSE |
  RPMTRANS_FLAG_NOTRIGGERPREIN | from --notriggerprein
  RPMTRANS_FLAG_NOPRE | from --nopre
  RPMTRANS_FLAG_NOPOST | from --nopost
  RPMTRANS_FLAG_NOTRIGGERIN | from --notriggerin
  RPMTRANS_FLAG_NOTRIGGERUN | from --notriggerun
  RPMTRANS_FLAG_NOPREUN | from --nopreun
  RPMTRANS_FLAG_NOPOSTUN | from --nopostun
  RPMTRANS_FLAG_NOTRIGGERPOSTUN | from --notriggerpostun
  RPMTRANS_FLAG_NOPAYLOAD |
  RPMTRANS_FLAG_APPLYONLY |
  RPMTRANS_FLAG_CHAINSAW |
  RPMTRANS_FLAG_NOMD5 | from --nomd5

Definition at line 1394 of file rpmlib.h.

## Function Documentation

int rpmCheckRpmlibProvides | ( | const char * | keyName,
|  | const char * | keyEVR,
|  | int | keyFlags
| ) |

Check dependency against internal rpmlib feature provides.

Parameters:

  keyName | dependency name string
  keyEVR | dependency [epoch:]version[-release] string
  keyFlags | dependency logical range qualifiers

Returns:
  1 if dependency overlaps, 0 otherwise

Definition at line 57 of file rpmlibprov.c.

References rpmlibProvides_s::featureName, rpmlibProvides, and rpmRangesOverlap().

Referenced by unsatisfiedDepend().

int rpmdepCheck | ( | rpmTransactionSet | ts,
|  | rpmDependencyConflict * | conflicts,
|  | int * | numConflicts
| ) |

Check that all dependencies can be resolved.

Parameters:

  ts | transaction set

Return values:

  conflicts | dependency problems
  numConflicts | no. of dependency problems

Returns:
  0 on success

Definition at line 2256 of file depends.c.

References _cacheDependsRC, _free(), rpmTransactionSet_s::addedPackages, alMakeIndex(), rpmTransactionSet_s::availablePackages, checkDependentConflicts(), checkDependentPackages(), checkPackageDeps(), Header, headerNVR(), HFD_t, HGE_t, int_32, availableList_s::list, rpmTransactionSet_s::numRemovedPackages, problemsSet, rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rpmdb, rpmdbAppendIterator(), rpmdbCloseDBI(), rpmdbFreeIterator(), RPMDBI_DEPENDS, RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), rpmDependencyConflict, RPMMESS_DEBUG, rpmMessage, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_PROVIDENAME, rpmTagType, rpmTransactionSet, availableList_s::size, stpcpy(), xcalloc(), and xrealloc().

Referenced by checkSpec(), rpmErase(), rpmInstall(), rpmRollback(), rpmtransDepCheck(), and verifyDependencies().

rpmDependencyConflict rpmdepFreeConflicts | ( | rpmDependencyConflict | conflicts,
|  | int | numConflicts
| ) |

Destroy dependency conflicts storage.

Parameters:

  conflicts | dependency problems
  numConflicts | no. of dependency problems NULL always

Definition at line 936 of file depends.c.

References _free(), rpmDependencyConflict_s::byHeader, rpmDependencyConflict_s::byName, rpmDependencyConflict_s::byRelease, rpmDependencyConflict_s::byVersion, headerFree(), rpmDependencyConflict_s::needsName, rpmDependencyConflict_s::needsVersion, rpmDependencyConflict, and rpmDependencyConflict_s::suggestedPackages.

Referenced by checkSpec(), rpmErase(), rpmInstall(), rpmRollback(), rpmtransDepCheck(), and verifyDependencies().

int rpmdepOrder | ( | rpmTransactionSet | ts | ) |

Determine package order in a transaction set according to dependencies.

Order packages, returning error if circular dependencies cannot be eliminated by removing PreReq's from the loop(s). Only dependencies from added or removed packages are used to determine ordering using a topological sort (Knuth vol. 1, p. 262). Use rpmdepCheck() to verify that all dependencies can be resolved.

The final order ends up as installed packages followed by removed packages, with packages removed for upgrades immediately following the new package to be installed.

The operation would be easier if we could sort the addedPackages array in the transaction set, but we store indexes into the array in various places.

Parameters:

  ts | transaction set

Returns:
  0 if packages are successfully ordered, 1 otherwise

Definition at line 1914 of file depends.c.

References _, _free(), rpmTransactionSet_s::addedPackages, addQ(), addRelation(), alloca(), alMakeIndex(), rpmTransactionSet_s::availablePackages, isErasePreReq, isInstallPreReq, isLegacyPreReq, availableList_s::list, markLoop(), rpmTransactionSet_s::order, rpmTransactionSet_s::orderAlloced, rpmTransactionSet_s::orderCount, orderListIndexCmp(), RPMMESS_DEBUG, rpmMessage, RPMTRANS_FLAG_CHAINSAW, rpmTransactionSet, availableList_s::size, transactionElement, rpmTransactionSet_s::transFlags, availablePackage::tsi, tsortInfo_s::tsi_next, tsortInfo_s::tsi_pkg, tsortInfo_s::tsi_reqx, tsortInfo, transactionElement_s::type, transactionElement_s::u, xmalloc(), and zapRelation().

Referenced by rpmInstall(), rpmRollback(), and rpmtransOrder().

int rpmGetRpmlibProvides | ( | const char *** | provNames,
|  | int ** | provFlags,
|  | const char *** | provVersions
| ) |

Return copy of rpmlib internal provides.

Return values:

  address | of array of rpmlib internal provide names
  address | of array of rpmlib internal provide flags
  address | of array of rpmlib internal provide versions

Returns:
  no. of entries

Definition at line 73 of file rpmlibprov.c.

References _free(), rpmlibProvides_s::featureEVR, rpmlibProvides_s::featureFlags, rpmlibProvides_s::featureName, rpmlibProvides, and xcalloc().

int rpmRangesOverlap | ( | const char * | AName,
|  | const char * | AEVR,
|  | int | AFlags,
|  | const char * | BName,
|  | const char * | BEVR,
|  | int | BFlags
| ) |

Compare two versioned dependency ranges, looking for overlap.

Parameters:

  AName | 1st dependncy name string
  AEVR | 1st dependency [epoch:]version[-release] string
  AFlags | 1st dependency logical range qualifiers
  BName | 2nd dependncy name string
  BEVR | 2nd dependency [epoch:]version[-release] string
  BFlags | 2nd dependency logical range qualifiers

Returns:
  1 if dependencies overlap, 0 otherwise

Definition at line 529 of file depends.c.

References _, _free(), parseEVR(), printDepend(), RPMMESS_DEBUG, rpmMessage, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, rpmvercmp(), and xstrdup().

Referenced by alAllSatisfiesDepend(), headerMatchesDepFlags(), rangeMatchesDepFlags(), and rpmCheckRpmlibProvides().

int rpmRunTransactions | ( | rpmTransactionSet | ts,
|  | rpmCallbackFunction | notify,
|  | rpmCallbackData | notifyData,
|  | rpmProblemSet | okProbs,
|  | rpmProblemSet * | newProbs,
|  | rpmtransFlags | transFlags,
|  | rpmprobFilterFlags | ignoreSet
| ) |

Process all packages in transaction set.

Parameters:

  ts | transaction set
  notify | progress callback
  notifyData | progress callback private data
  okProbs | previously known problems (or NULL)

Return values:

  newProbs | address to return unfiltered problems (or NULL)

Parameters:

  transFlags | bits to control rpmRunTransactions()
  ignoreSet | bits to filter problem types

Returns:
  0 on success, -1 on error, >0 with newProbs set

Definition at line 1516 of file transaction.c.

References _free(), _noTransScripts, _noTransTriggers, transactionFileInfo_s::actions, rpmTransactionSet_s::addedPackages, adj_fs_blocks, transactionFileInfo_s::ap, archOkay(), diskspaceInfo::bavail, diskspaceInfo::bneeded, transactionFileInfo_s::bnl, diskspaceInfo::bsize, rpmTransactionSet_s::chrootDone, rpmTransactionSet_s::currDir, currentDirectory(), dbiFreeIndexSet(), dbiIndexRecordFileNumber(), dbiIndexRecordOffset(), dbiIndexSet, dbiIndexSetCount(), diskspaceInfo::dev, rpmTransactionSet_s::di, transactionFileInfo_s::dil, transactionFileInfo_s::dnl, ensureOlder(), transactionFileInfo_s::fc, rpmTransactionSet_s::filesystemCount, rpmTransactionSet_s::filesystems, fingerPrintCache, rpmTransactionSet_s::flEntries, rpmTransactionSet_s::flList, fpCacheCreate(), fpCacheFree(), fpEqual(), fpHashFunction(), fpLookupList(), transactionFileInfo_s::fps, freeFl(), availablePackage::h, transactionFileInfo_s::h, handleInstInstalledFiles(), handleOverlappedFiles(), handleRmvdInstalledFiles(), hashTable, Header, headerFree(), headerGetEntry(), headerLink(), htAddEntry(), htCreate(), htFree(), diskspaceInfo::iavail, rpmTransactionSet_s::id, rpmTransactionSet_s::ignoreSet, diskspaceInfo::ineeded, int_32, availableList_s::list, loadFi(), transactionFileInfo_s::magic, rpmTransactionSet_s::notify, NOTIFY, rpmTransactionSet_s::notifyData, rpmProblemSet_s::numProblems, rpmTransactionSet_s::numRemovedPackages, rpmTransactionSet_s::order, rpmTransactionSet_s::orderCount, osOkay(), rpmTransactionSet_s::probs, psAppend(), psCreate(), PSM_PKGERASE, PSM_PKGINSTALL, PSM_PKGSAVE, PSM_t, psmStage(), psTrim(), transactionFileInfo_s::record, relocateFileList(), rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rootDir, RPMCALLBACK_INST_CLOSE_FILE, RPMCALLBACK_INST_OPEN_FILE, RPMCALLBACK_TRANS_PROGRESS, RPMCALLBACK_TRANS_START, RPMCALLBACK_TRANS_STOP, rpmCallbackData, rpmCallbackFunction, rpmTransactionSet_s::rpmdb, rpmdbAppendIterator(), rpmdbFindFpList(), rpmdbFreeIterator(), RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), rpmdbSetIteratorRE(), rpmdbSync(), rpmGetFilesystemList(), RPMMIRE_DEFAULT, RPMPROB_BADARCH, RPMPROB_BADOS, RPMPROB_DISKNODES, RPMPROB_DISKSPACE, RPMPROB_FILTER_DISKSPACE, RPMPROB_FILTER_IGNOREARCH, RPMPROB_FILTER_IGNOREOS, RPMPROB_FILTER_OLDPACKAGE, RPMPROB_FILTER_REPLACENEWFILES, RPMPROB_FILTER_REPLACEOLDFILES, RPMPROB_FILTER_REPLACEPKG, RPMPROB_PKG_INSTALLED, rpmprobFilterFlags, rpmProblemSet, rpmRC, RPMRC_BADSIZE, RPMRC_OK, rpmReadPackageHeader(), RPMTAG_BASENAMES, RPMTAG_NAME, RPMTAG_RELEASE, RPMTAG_VERSION, RPMTRANS_FLAG_BUILD_PROBS, RPMTRANS_FLAG_DIRSTASH, RPMTRANS_FLAG_JUSTDB, RPMTRANS_FLAG_MULTILIB, RPMTRANS_FLAG_NOSCRIPTS, RPMTRANS_FLAG_NOTRIGGERS, RPMTRANS_FLAG_REPACKAGE, rpmTransactionSet, rpmtransFlags, sharedCmp(), availableList_s::size, skipFiles(), TFI_t, TFIMAGIC, rpmTransactionSet_s::transFlags, tsFreeIterator(), tsGetAlp(), tsGetOc(), tsInitIterator(), tsNextIterator(), transactionFileInfo_s::type, transactionElement_s::type, transactionElement_s::u, xcalloc(), XFA_SKIPPING, and xmalloc().

Referenced by rpmErase(), rpmInstall(), rpmRollback(), and rpmtransRun().

int rpmtransAddPackage | ( | rpmTransactionSet | ts,
|  | Header | h,
|  | FD_t | fd,
|  | const void * | key,
|  | int | upgrade,
|  | rpmRelocation * | relocs
| ) |

Add package to be installed to unordered transaction set.

If fd is NULL, the callback specified in rpmtransCreateSet() is used to open and close the file descriptor. If Header is NULL, the fd is always used, otherwise fd is only needed (and only opened) for actual package installation.

Parameters:

  ts | transaction set
  h | package header
  fd | package file handle
  key | package private data
  upgrade | is package being upgraded?
  relocs | package file relocations

Returns:
  0 on success, 1 on I/O error, 2 needs capabilities

Definition at line 797 of file depends.c.

References rpmTransactionSet_s::addedPackages, alAddPackage(), rpmTransactionSet_s::delta, FD_t, Header, headerIsEntry(), headerMatchesDepFlags(), headerNVR(), HFD_t, HGE_t, int_32, availableList_s::list, availablePackage::multiLib, rpmTransactionSet_s::numRemovedPackages, rpmTransactionSet_s::order, rpmTransactionSet_s::orderAlloced, rpmTransactionSet_s::orderCount, rpmTransactionSet_s::removedPackages, removePackage(), rpmTransactionSet_s::rpmdb, rpmdbFreeIterator(), rpmdbGetIteratorOffset(), rpmdbInitIterator(), rpmdbNextIterator(), rpmdbPruneIterator(), rpmRelocation, RPMTAG_MULTILIBS, RPMTAG_NAME, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_SOURCEPACKAGE, rpmTagType, rpmTransactionSet, rpmVersionCompare(), transactionElement_s::type, transactionElement_s::u, uint_32, and xrealloc().

Referenced by checkSpec(), rpmInstall(), rpmInstallSourcePackage(), rpmRollback(), rpmtransAdd(), and verifyDependencies().

void rpmtransAvailablePackage | ( | rpmTransactionSet | ts,
|  | Header | h,
|  | const void * | key
| ) |

Add package to universe of possible packages to install in transaction set.

Parameters:

  ts | transaction set
  h | header
  key | package private data

Definition at line 906 of file depends.c.

References alAddPackage(), rpmTransactionSet_s::availablePackages, Header, and rpmTransactionSet.

Referenced by rpmtransAdd().

rpmTransactionSet rpmtransCreateSet | ( | rpmdb | rpmdb,
|  | const char * | rootDir
| ) |

Create an empty transaction set.

Parameters:

  rpmdb | rpm database (may be NULL if database is not accessed)
  rootdir | path to top of install tree

Returns:
  transaction set

Definition at line 692 of file depends.c.

References alCreate(), alloca(), rpmdb, rpmTransactionSet, stpcpy(), xcalloc(), and xstrdup().

Referenced by checkSpec(), cpio_doio(), rpmErase(), rpmInstall(), rpmInstallSourcePackage(), rpmRollback(), rpmtransCreate(), rpmVerifyScript(), and verifyDependencies().

rpmTransactionSet rpmtransFree | ( | rpmTransactionSet | ts | ) |

Destroy transaction set.

Parameters:

  ts | transaction set

Returns:
  NULL always

Definition at line 917 of file depends.c.

References _free(), rpmTransactionSet_s::addedPackages, alFree(), rpmTransactionSet_s::availablePackages, rpmTransactionSet_s::currDir, rpmTransactionSet_s::di, fdFree, rpmTransactionSet_s::order, rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rootDir, rpmTransactionSet, and rpmTransactionSet_s::scriptFd.

Referenced by checkSpec(), cpio_doio(), rpmErase(), rpmInstall(), rpmInstallSourcePackage(), rpmRollback(), rpmtransDealloc(), rpmVerifyScript(), and verifyDependencies().

int rpmtransGetKeys | ( | const rpmTransactionSet | ts,
|  | const void *** | ep,
|  | int * | nep
| ) |

Retrieve keys from ordered transaction set.

Todo:
  Removed packages have no keys, returned as interleaved NULL pointers.

Parameters:

  ts | transaction set

Return values:

  ep | address of returned element array pointer (or NULL)
  nep | address of no. of returned elements (or NULL)

Returns:
  0 always

Definition at line 92 of file transaction.c.

References rpmTransactionSet_s::addedPackages, availableList_s::list, rpmTransactionSet_s::order, rpmTransactionSet_s::orderCount, rpmTransactionSet, transactionElement_s::type, transactionElement_s::u, and xmalloc().

Referenced by py_rpmtransGetKeys().

int rpmtransRemovePackage | ( | rpmTransactionSet | ts,
|  | int | dboffset
| ) |

Add package to be removed to unordered transaction set.

Parameters:

  ts | transaction set
  dboffset | rpm database instance

Returns:
  0 on success

Definition at line 912 of file depends.c.

References removePackage(), and rpmTransactionSet.

Referenced by rpmErase(), rpmRollback(), and rpmtransRemove().

void rpmtransSetScriptFd | ( | rpmTransactionSet | ts,
|  | FD_t | fd
| ) |

Save file handle to be used as stderr when running package scripts.

Parameters:

  ts | transaction set
  fd | file handle

Definition at line 87 of file transaction.c.

References FD_t, fdLink, rpmTransactionSet, and rpmTransactionSet_s::scriptFd.

Referenced by rpmtransSetAttr().

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

Segmented string compare for version and/or release.

Parameters:

  a | 1st string
  b | 2nd string

Returns:
  +1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 15 of file rpmvercmp.c.