#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmlog.h>
#include <rpmmacro.h>
#include "fprint.h"
#include <rpmtypes.h>
#include <rpmtag.h>
#include <pkgio.h>
#include <rpmdb.h>
#include "legacy.h"
#include <rpmfi.h>
#include "fsm.h"
#include "rpmte.h"
#include "rpmts.h"
#include "psm.h"
#include "rpmds.h"
#include "rpmlock.h"
#include "misc.h"
#include <rpmcli.h>
#include <rpmrollback.h>
#include "debug.h"
Go to the source code of this file.
Defines | |
#define | _RPMDB_INTERNAL |
#define | _RPMFI_INTERNAL |
#define | _RPMTE_INTERNAL |
#define | _RPMTS_INTERNAL |
#define | _RPMSQ_INTERNAL |
#define | ISROOT(_d) (((_d)[0] == '/' && (_d)[1] == '\0') ? "" : (_d)) |
Functions | |
static int | sharedCmp (const void *one, const void *two) |
static int | handleInstInstalledFiles (const rpmts ts, rpmte p, rpmfi fi, sharedFileInfo shared, int sharedCount, int reportConflicts) |
handleInstInstalledFiles. | |
static int | handleRmvdInstalledFiles (const rpmts ts, rpmfi fi, sharedFileInfo shared, int sharedCount) |
static int | fpsCompare (const void *one, const void *two) |
static int | findFps (const struct fingerPrint_s *fiFps, const struct fingerPrint_s *otherFps, int otherFc) |
static void | handleOverlappedFiles (const rpmts ts, const rpmte p, rpmfi fi) |
Update disk space needs on each partition for this package's files. | |
static int | ensureOlder (rpmts ts, const rpmte p, const Header h) |
Ensure that current package is newer than installed package. | |
static void | skipFiles (const rpmts ts, rpmfi fi) |
Skip any files that do not match install policies. | |
static rpmfi | rpmtsiFi (const rpmtsi tsi) |
Return transaction element's file info. | |
static rpmRC | _processFailedPackage (rpmts ts, rpmte p) |
Force add a failed package into the rpmdb. | |
rpmRC | rpmtsRollback (rpmts rbts, rpmprobFilterFlags ignoreSet, int running, rpmte rbte) |
Rollback a failed transaction. | |
static int | cmpArgvStr (const char **AV, const char *B) |
Search for string B in argv array AV. | |
static int | markLinkedFailed (rpmts ts, rpmte p) |
Mark all erasure elements linked to installed element p as failed. | |
int | rpmtsRun (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet) |
Process all package elements in a transaction set. | |
Variables | |
int | _fps_debug = 0 |
static int | _linear_fps_search = 0 |
Definition in file transaction.c.
#define _RPMDB_INTERNAL |
Definition at line 17 of file transaction.c.
#define _RPMFI_INTERNAL |
Definition at line 21 of file transaction.c.
#define _RPMSQ_INTERNAL |
Definition at line 30 of file transaction.c.
#define _RPMTE_INTERNAL |
Definition at line 25 of file transaction.c.
#define _RPMTS_INTERNAL |
Definition at line 27 of file transaction.c.
#define ISROOT | ( | _d ) | (((_d)[0] == '/' && (_d)[1] == '\0') ? "" : (_d)) |
Definition at line 305 of file transaction.c.
Force add a failed package into the rpmdb.
ts | current transaction set |
p | failed rpmte. |
Definition at line 950 of file transaction.c.
References PSM_RPMDB_ADD, rpmpsmFree(), rpmpsmNew(), rpmpsmStage(), RPMRC_OK, rpmteType(), rpmpsm_s::stepName, and TR_ADDED.
Referenced by rpmtsRollback().
static int cmpArgvStr | ( | const char ** | AV, |
const char * | B | ||
) | [static] |
Search for string B in argv array AV.
AV | argv array |
B | string |
Definition at line 1107 of file transaction.c.
Referenced by markLinkedFailed().
Ensure that current package is newer than installed package.
ts | transaction set |
p | current transaction element |
h | installed header |
Definition at line 627 of file transaction.c.
References _free(), _rpmds_nopromote, alloca(), headerGet(), _HE_s::p, rpmDataType_u::ptr, rpmdsFree(), rpmdsNVRMatchesDep(), rpmdsSingle(), RPMPROB_OLDPACKAGE, rpmpsAppend(), rpmpsFree(), RPMSENSE_EQUAL, RPMSENSE_LESS, rpmteE(), rpmteKey(), rpmteN(), rpmteNEVR(), rpmteR(), rpmteV(), rpmtsProblems(), stpcpy(), rpmDataType_u::str, and _HE_s::tag.
Referenced by rpmtsRun().
static int findFps | ( | const struct fingerPrint_s * | fiFps, |
const struct fingerPrint_s * | otherFps, | ||
int | otherFc | ||
) | [static] |
Definition at line 349 of file transaction.c.
References _linear_fps_search, FP_EQUAL, and fpsCompare().
Referenced by handleOverlappedFiles().
static int fpsCompare | ( | const void * | one, |
const void * | two | ||
) | [static] |
Definition at line 310 of file transaction.c.
References alloca(), fingerPrint_s::baseName, fprintCacheEntry_s::dirName, fingerPrint_s::entry, stpcpy(), and fingerPrint_s::subDir.
Referenced by findFps().
static int handleInstInstalledFiles | ( | const rpmts | ts, |
rpmte | p, | ||
rpmfi | fi, | ||
sharedFileInfo | shared, | ||
int | sharedCount, | ||
int | reportConflicts | ||
) | [static] |
handleInstInstalledFiles.
ts | transaction set |
p | current transaction element |
fi | file info set |
shared | shared file info |
sharedCount | no. of shared elements |
reportConflicts |
XXX only ts->{probs,rpmdb} modified
Definition at line 95 of file transaction.c.
References _free(), alloca(), FA_CREATE, FA_SKIPCOLOR, headerGet(), IOSM_SBIT_CHECK, iosmFileActionSkipped(), _HE_s::p, RPMDBI_PACKAGES, rpmfiBN(), rpmfiCompare(), rpmfiDecideFate(), rpmfiDN(), rpmfiFColor(), rpmfiFFlags(), rpmfiFMode(), rpmfiFN(), rpmfiFree(), rpmfiFSize(), rpmfiInit(), RPMFILE_CONFIG, RPMFILE_GHOST, RPMFILE_STATE_NORMAL, rpmfiNew(), rpmfiNext(), rpmfiSetFX(), rpmmiFree(), rpmmiNext(), RPMPROB_FILE_CONFLICT, rpmpsAppend(), rpmpsFree(), rpmteColor(), rpmteKey(), rpmteNEVRA(), RPMTRANS_FLAG_ALLFILES, rpmtsColor(), rpmtsFlags(), rpmtsInitIterator(), rpmtsPrefColor(), rpmtsProblems(), rpmDataType_u::str, _HE_s::tag, xcalloc(), and xrealloc().
Referenced by rpmtsRun().
Update disk space needs on each partition for this package's files.
Definition at line 397 of file transaction.c.
References _free(), fprintCacheEntry_s::dev, dodigest(), fingerPrint_s::entry, FA_ALTNAME, FA_BACKUP, FA_CREATE, FA_ERASE, FA_SKIP, FA_SKIPCOLOR, FA_UNKNOWN, findFps(), htGetEntry(), iosmFileActionSkipped(), recs, rpmfiCompare(), rpmfiDigest(), rpmfiFC(), rpmfiFColor(), rpmfiFFlags(), rpmfiFMode(), rpmfiFN(), rpmfiFSize(), rpmfiFState(), rpmfiInit(), RPMFILE_CONFIG, RPMFILE_EXISTS, RPMFILE_NOREPLACE, RPMFILE_SPARSE, RPMFILE_STATE_NORMAL, rpmfiNext(), rpmfiSetFX(), RPMPROB_FILTER_REPLACENEWFILES, RPMPROB_NEW_FILE_CONFLICT, rpmpsAppend(), rpmpsFree(), rpmteKey(), rpmteNEVR(), rpmteType(), rpmtsColor(), rpmtsFilterFlags(), rpmtsPrefColor(), rpmtsProblems(), rpmtsUpdateDSI(), TR_ADDED, TR_REMOVED, and xcalloc().
Referenced by rpmtsRun().
static int handleRmvdInstalledFiles | ( | const rpmts | ts, |
rpmfi | fi, | ||
sharedFileInfo | shared, | ||
int | sharedCount | ||
) | [static] |
Definition at line 263 of file transaction.c.
References _free(), alloca(), FA_SKIP, headerGet(), _HE_s::p, rpmDataType_u::ptr, RPMDBI_PACKAGES, RPMFILE_STATE_NORMAL, rpmmiFree(), rpmmiNext(), rpmtsInitIterator(), and _HE_s::tag.
Referenced by rpmtsRun().
Mark all erasure elements linked to installed element p as failed.
ts | transaction set |
p | failed install transaction element |
Definition at line 1127 of file transaction.c.
References cmpArgvStr(), rpmtsiFree(), rpmtsiInit(), rpmtsiNext(), and TR_REMOVED.
Referenced by rpmtsRun().
Return transaction element's file info.
tsi | transaction element iterator |
Definition at line 924 of file transaction.c.
References rpmtsElement().
Referenced by rpmtsRun().
static int sharedCmp | ( | const void * | one, |
const void * | two | ||
) | [static] |
Definition at line 69 of file transaction.c.
Referenced by rpmtsRun().
Skip any files that do not match install policies.
ts | transaction set |
fi | file info set |
Definition at line 690 of file transaction.c.
References _free(), alloca(), argvFree(), argvSplit(), D_, dc, FA_SKIPCOLOR, FA_SKIPNETSHARED, FA_SKIPNSTATE, iosmFileActionSkipped(), lang, rpmExpand(), rpmExpandNumeric(), rpmfiBN(), rpmfiDC(), rpmfiDN(), rpmfiDX(), rpmfiFColor(), rpmfiFFlags(), rpmfiFMode(), rpmfiInit(), rpmfiInitD(), RPMFILE_CONFIG, RPMFILE_DOC, rpmfiNext(), rpmfiNextD(), rpmlog(), RPMLOG_DEBUG, RPMTRANS_FLAG_NOCONFIGS, RPMTRANS_FLAG_NODOCS, rpmtsColor(), and rpmtsFlags().
Referenced by rpmtsRun().
int _fps_debug = 0 |
Definition at line 308 of file transaction.c.
int _linear_fps_search = 0 [static] |
Definition at line 347 of file transaction.c.
Referenced by findFps().