rpm  5.4.15
Macros | Functions | Variables
rpmrollback.c File Reference
#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmcb.h>
#include <argv.h>
#include <rpmtypes.h>
#include <rpmtag.h>
#include <pkgio.h>
#include <rpmdb.h>
#include <rpmds.h>
#include "manifest.h"
#include "misc.h"
#include <rpmgi.h>
#include <rpmcli.h>
#include <rpmrollback.h>
#include "debug.h"
Include dependency graph for rpmrollback.c:

Go to the source code of this file.

Macros

#define _RPMTE_INTERNAL   /* XXX findErases needs rpmte internals. */
 
#define _RPMTS_INTERNAL   /* XXX ts->teErase, ts->probs */
 
#define _RPMTS_PRINT
 
#define _RPMROLLBACK_INTERNAL
 
#define QVA_ISSET(_qvaflags, _FLAG)   ((_qvaflags) & (VERIFY_##_FLAG))
 
#define VSF_ISSET(_vsflags, _FLAG)   ((_vsflags) & (RPMVSF_##_FLAG))
 
#define VSF_SET(_vsflags, _FLAG)   (_vsflags) |= (RPMVSF_##_FLAG)
 
#define VSF_CLR(_vsflags, _FLAG)   (_vsflags) &= ~(RPMVSF_##_FLAG)
 

Functions

static int IDTintcmp (const void *a, const void *b)
 
IDTX IDTXfree (IDTX idtx)
 Destroy id index. More...
 
IDTX IDTXnew (void)
 Create id index. More...
 
IDTX IDTXgrow (IDTX idtx, int need)
 Insure that index has room for "need" elements. More...
 
IDTX IDTXsort (IDTX idtx)
 Sort tag (instance,value) pairs. More...
 
IDTX IDTXload (rpmts ts, rpmTag tag, rpmuint32_t rbtid)
 Load tag (instance,value) pairs from rpm databse, and return sorted id index. More...
 
IDTX IDTXglob (rpmts ts, const char *globstr, rpmTag tag, rpmuint32_t rbtid)
 Load tag (instance,value) pairs from packages, and return sorted id index. More...
 
static int cmpArgvStr (rpmts ts, const char *lname, const char **AV, int AC, const char *B)
 Search for string B in argv array AV. More...
 
static int findErases (rpmts ts, rpmte p, unsigned thistid, IDT ip, int niids)
 Find (and add to transaction set) all erase elements with matching blink. More...
 
int rpmRollback (rpmts ts, QVA_t ia, const char **argv)
 Rollback transactions, erasing new, reinstalling old, package(s). More...
 

Variables

static int reverse = -1
 

Macro Definition Documentation

#define _RPMROLLBACK_INTERNAL

Definition at line 27 of file rpmrollback.c.

#define _RPMTE_INTERNAL   /* XXX findErases needs rpmte internals. */

Definition at line 21 of file rpmrollback.c.

#define _RPMTS_INTERNAL   /* XXX ts->teErase, ts->probs */

Definition at line 22 of file rpmrollback.c.

#define _RPMTS_PRINT

Definition at line 23 of file rpmrollback.c.

#define QVA_ISSET (   _qvaflags,
  _FLAG 
)    ((_qvaflags) & (VERIFY_##_FLAG))

Definition at line 53 of file rpmrollback.c.

Referenced by rpmRollback().

#define VSF_CLR (   _vsflags,
  _FLAG 
)    (_vsflags) &= ~(RPMVSF_##_FLAG)

Definition at line 57 of file rpmrollback.c.

#define VSF_ISSET (   _vsflags,
  _FLAG 
)    ((_vsflags) & (RPMVSF_##_FLAG))

Definition at line 55 of file rpmrollback.c.

#define VSF_SET (   _vsflags,
  _FLAG 
)    (_vsflags) |= (RPMVSF_##_FLAG)

Definition at line 56 of file rpmrollback.c.

Referenced by rpmRollback().

Function Documentation

static int cmpArgvStr ( rpmts  ts,
const char *  lname,
const char **  AV,
int  AC,
const char *  B 
)
static

Search for string B in argv array AV.

Parameters
tstransaction set
lnametype of link
AVargv array
ACno. of args
Bstring
Returns
1 if found, 0 not found, -1 error

Definition at line 270 of file rpmrollback.c.

References i, RPMPROB_NOREPACKAGE, rpmpsAppend(), rpmpsFree(), and rpmtsProblems().

Referenced by findErases().

static int findErases ( rpmts  ts,
rpmte  p,
unsigned  thistid,
IDT  ip,
int  niids 
)
static

Find (and add to transaction set) all erase elements with matching blink.

In addition, recreate any added transaction element linkages.

XXX rp->h should have FLINK{HDRID,PKGID,NEVRA} populated. XXX ip->h should have BLINK{HDRID,PKGID,NEVRA} populated. XXX p = ts->teInstall is added transaction element from rp->h.

Parameters
tstransaction set (ts->teInstall set to last added pkg)
pmost recently added install element (NULL skips linking)
thistidcurrent transaction id
ipcurrently installed package(s) to be erased
niidsno. of currently installed package(s)
Returns
-1 on error, otherwise no. of erase elemnts added

< End of chain marker.

Definition at line 315 of file rpmrollback.c.

References _free(), alloca(), rpmDataType_u::argv, _HE_s::c, cmpArgvStr(), D_, headerGet(), _HE_s::p, rpmlog(), RPMLOG_DEBUG, RPMTAG_BLINKHDRID, RPMTAG_BLINKNEVRA, RPMTAG_BLINKPKGID, RPMTE_CHAIN_END, rpmteChain(), rpmtsAddEraseElement(), and _HE_s::tag.

Referenced by rpmRollback().

static int IDTintcmp ( const void *  a,
const void *  b 
)
static

Definition at line 66 of file rpmrollback.c.

Referenced by IDTXsort().

IDTX IDTXfree ( IDTX  idtx)

Destroy id index.

Parameters
idtxid index
Returns
NULL always

Definition at line 74 of file rpmrollback.c.

References _free(), headerFree(), and i.

Referenced by rpmRollback(), rpmts_IDTXglob(), and rpmts_IDTXload().

IDTX IDTXglob ( rpmts  ts,
const char *  globstr,
rpmTag  tag,
rpmuint32_t  rbtid 
)

Load tag (instance,value) pairs from packages, and return sorted id index.

Parameters
tstransaction set
globstrglob expression
tagrpm tag
rbtidrollback goal
Returns
id index

Definition at line 172 of file rpmrollback.c.

References _, _free(), alloca(), Fclose(), Ferror(), Fopen(), Fstrerror(), headerFree(), headerGet(), headerGetOrigin(), headerIsEntry(), headerLink(), i, IDTXgrow(), IDTXsort(), _HE_s::p, rpmDataType_u::ptr, rpmgiEscapeSpaces(), rpmGlob(), rpmlog(), RPMLOG_ERR, RPMRC_NOKEY, RPMRC_NOTTRUSTED, RPMRC_OK, rpmReadPackageFile(), RPMTAG_ARCH, RPMTAG_SOURCERPM, _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by rpmRollback(), and rpmts_IDTXglob().

IDTX IDTXgrow ( IDTX  idtx,
int  need 
)

Insure that index has room for "need" elements.

Parameters
idtxid index
needadditional no. of elements needed
Returns
id index (with room for "need" elements)

Definition at line 99 of file rpmrollback.c.

References IDTXnew(), and xrealloc.

Referenced by IDTXglob(), and IDTXload().

IDTX IDTXload ( rpmts  ts,
rpmTag  tag,
rpmuint32_t  rbtid 
)

Load tag (instance,value) pairs from rpm databse, and return sorted id index.

Parameters
tstransaction set
tagrpm tag
rbtidrollback goal
Returns
id index

Definition at line 123 of file rpmrollback.c.

References _free(), alloca(), headerGet(), headerLink(), IDTXgrow(), IDTXsort(), _HE_s::p, rpmDataType_u::ptr, rpmmiAddPattern(), rpmmiFree(), rpmmiInstance(), rpmmiNext(), RPMMIRE_DEFAULT, RPMTAG_NAME, rpmtsInitIterator(), _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by rpmRollback(), and rpmts_IDTXload().

IDTX IDTXnew ( void  )

Create id index.

Returns
new id index

Definition at line 91 of file rpmrollback.c.

References xcalloc().

Referenced by IDTXgrow().

IDTX IDTXsort ( IDTX  idtx)

Sort tag (instance,value) pairs.

Parameters
idtxid index
Returns
id index

Definition at line 116 of file rpmrollback.c.

References IDTintcmp().

Referenced by IDTXglob(), and IDTXload().

int rpmRollback ( rpmts  ts,
QVA_t  ia,
const char **  argv 
)

Variable Documentation

int reverse = -1
static

Definition at line 62 of file rpmrollback.c.