rpm 5.3.7
Defines | Functions | Variables

lib/transaction.c File Reference

#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmlog.h>
#include <rpmmacro.h>
#include <rpmsx.h>
#include <rpmtypes.h>
#include <rpmtag.h>
#include <pkgio.h>
#include "fprint.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"
Include dependency graph for transaction.c:

Go to the source code of this file.

Defines

#define _FPRINT_INTERNAL
#define _RPMDB_INTERNAL
#define _RPMFI_INTERNAL
#define _RPMTE_INTERNAL
#define _RPMTS_INTERNAL
#define _RPMSQ_INTERNAL
#define _RPMPSM_INTERNAL
#define ISROOT(_d)   (((_d)[0] == '/' && (_d)[1] == '\0') ? "" : (_d))
#define FPSDEBUG(_debug, _list)   if ((_debug) || _fps_debug) fprintf _list

Functions

static int handleInstInstalledFile (const rpmts ts, rpmte p, rpmfi fi, Header otherHeader, rpmfi otherFi, int beingRemoved)
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 rpmtsSkipFiles (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 int cmpArgvStr (const char **AV, const char *B)
 Search for string B in argv array AV.
static int rpmtsMarkLinkedFailed (rpmts ts, rpmte p)
 Mark all erasure elements linked to installed element p as failed.
static rpmmi rpmtsFindBaseNamesInDB (rpmts ts, uint32_t fileCount)
static int rpmtsCheckInstalledFiles (rpmts ts, uint32_t fileCount, hashTable ht, fingerPrintCache fpc)
static rpmps rpmtsSanityCheck (rpmts ts, uint32_t *tfcp)
static int rpmtsRunScript (rpmts ts, rpmTag stag)
static void rpmtsAddFingerprints (rpmts ts, uint32_t fileCount, hashTable ht, fingerPrintCache fpc)
static int rpmtsSetup (rpmts ts, rpmprobFilterFlags ignoreSet, rpmsx *sxp)
static int rpmtsFinish (rpmts ts, rpmsx sx)
static int rpmtsPrepare (rpmts ts, rpmsx sx, uint32_t fileCount, uint32_t *nrmvdp)
static int rpmtsProcess (rpmts ts, rpmprobFilterFlags ignoreSet, int rollbackFailures)
static int rpmtsRepackage (rpmts ts, uint32_t numRemoved)
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.
int _rpmtsRun (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)

Variables

int _fps_debug = 0
int(* rpmtsRun )(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet) = _rpmtsRun
 Process all package elements in a transaction set.

Detailed Description

Definition in file transaction.c.


Define Documentation

#define _FPRINT_INTERNAL

Definition at line 17 of file transaction.c.

#define _RPMDB_INTERNAL

Definition at line 20 of file transaction.c.

#define _RPMFI_INTERNAL

Definition at line 24 of file transaction.c.

#define _RPMPSM_INTERNAL

Definition at line 34 of file transaction.c.

#define _RPMSQ_INTERNAL

Definition at line 33 of file transaction.c.

#define _RPMTE_INTERNAL

Definition at line 28 of file transaction.c.

#define _RPMTS_INTERNAL

Definition at line 30 of file transaction.c.

#define FPSDEBUG (   _debug,
  _list 
)    if ((_debug) || _fps_debug) fprintf _list
#define ISROOT (   _d)    (((_d)[0] == '/' && (_d)[1] == '\0') ? "" : (_d))

Definition at line 181 of file transaction.c.


Function Documentation

static rpmRC _processFailedPackage ( rpmts  ts,
rpmte  p 
) [static]

Force add a failed package into the rpmdb.

Parameters:
tscurrent transaction set
pfailed rpmte.
Returns:
RPMRC_OK, or RPMRC_FAIL

Definition at line 1869 of file transaction.c.

References FPSDEBUG, PSM_RPMDB_ADD, rpmpsmFree(), rpmpsmNew(), rpmpsmStage(), RPMRC_OK, rpmteType(), and TR_ADDED.

Referenced by rpmtsRollback().

int _rpmtsRun ( rpmts  ts,
rpmps  okProbs,
rpmprobFilterFlags  ignoreSet 
)
static int cmpArgvStr ( const char **  AV,
const char *  B 
) [static]

Search for string B in argv array AV.

Parameters:
AVargv array
Bstring
Returns:
1 if found, 0 otherwise

Definition at line 796 of file transaction.c.

Referenced by rpmtsMarkLinkedFailed().

static int ensureOlder ( rpmts  ts,
const rpmte  p,
const Header  h 
) [static]

Ensure that current package is newer than installed package.

Parameters:
tstransaction set
pcurrent transaction element
hinstalled header
Returns:
0 if not newer, 1 if okay

Definition at line 472 of file transaction.c.

References _free(), _rpmds_nopromote, alloca(), FPSDEBUG, headerGet(), _HE_s::p, rpmDataType_u::ptr, rpmdsFree(), rpmdsNVRMatchesDep(), rpmdsSingle(), RPMPROB_OLDPACKAGE, rpmpsAppend(), rpmpsFree(), RPMSENSE_EQUAL, RPMSENSE_LESS, rpmteD(), rpmteE(), rpmteKey(), rpmteN(), rpmteNEVR(), rpmteR(), rpmteV(), rpmtsProblems(), stpcpy(), rpmDataType_u::str, and _HE_s::tag.

Referenced by rpmtsSanityCheck().

static int handleInstInstalledFile ( const rpmts  ts,
rpmte  p,
rpmfi  fi,
Header  otherHeader,
rpmfi  otherFi,
int  beingRemoved 
) [static]
static void handleOverlappedFiles ( const rpmts  ts,
const rpmte  p,
rpmfi  fi 
) [static]
static void rpmtsAddFingerprints ( rpmts  ts,
uint32_t  fileCount,
hashTable  ht,
fingerPrintCache  fpc 
) [static]
static int rpmtsCheckInstalledFiles ( rpmts  ts,
uint32_t  fileCount,
hashTable  ht,
fingerPrintCache  fpc 
) [static]
static rpmmi rpmtsFindBaseNamesInDB ( rpmts  ts,
uint32_t  fileCount 
) [static]
static int rpmtsFinish ( rpmts  ts,
rpmsx  sx 
) [static]

Definition at line 1391 of file transaction.c.

References FPSDEBUG, RPMTRANS_FLAG_NOCONTEXTS, and rpmtsFlags().

Referenced by _rpmtsRun().

static rpmfi rpmtsiFi ( const rpmtsi  tsi) [static]

Return transaction element's file info.

Todo:
Take a rpmfi refcount here.
Parameters:
tsitransaction element iterator
Returns:
transaction element file info

Definition at line 771 of file transaction.c.

References rpmtsElement().

Referenced by rpmtsAddFingerprints(), rpmtsPrepare(), rpmtsProcess(), rpmtsRepackage(), rpmtsRunScript(), and rpmtsSanityCheck().

static int rpmtsMarkLinkedFailed ( rpmts  ts,
rpmte  p 
) [static]

Mark all erasure elements linked to installed element p as failed.

Parameters:
tstransaction set
pfailed install transaction element
Returns:
0 always

Definition at line 815 of file transaction.c.

References cmpArgvStr(), rpmtsiFree(), rpmtsiInit(), rpmtsiNext(), and TR_REMOVED.

Referenced by rpmtsProcess().

static int rpmtsPrepare ( rpmts  ts,
rpmsx  sx,
uint32_t  fileCount,
uint32_t *  nrmvdp 
) [static]
static int rpmtsProcess ( rpmts  ts,
rpmprobFilterFlags  ignoreSet,
int  rollbackFailures 
) [static]
static int rpmtsRepackage ( rpmts  ts,
uint32_t  numRemoved 
) [static]
static int rpmtsRunScript ( rpmts  ts,
rpmTag  stag 
) [static]
static rpmps rpmtsSanityCheck ( rpmts  ts,
uint32_t *  tfcp 
) [static]
static int rpmtsSetup ( rpmts  ts,
rpmprobFilterFlags  ignoreSet,
rpmsx *  sxp 
) [static]
static void rpmtsSkipFiles ( const rpmts  ts,
rpmfi  fi 
) [static]

Variable Documentation

int _fps_debug = 0

Definition at line 184 of file transaction.c.