# lib/rpminstall.c File Reference

`#include "system.h"`
`#include <rpmcli.h>`
`#include "manifest.h"`
`#include "misc.h"`
`#include "debug.h"`

Go to the source code of this file.

## Data Structures

struct | rpmEIU

## Typedefs

typedef const char * | str_t

## Functions

static void | printHash (const unsigned long amount, const unsigned long total)
void * | rpmShowProgress (const void *arg, const rpmCallbackType what, const unsigned long amount, const unsigned long total, const void *pkgKey, void *data)
| The rpm CLI generic transaction callback.
int | rpmInstall (const char *rootdir, const char **fileArgv, rpmtransFlags transFlags, rpmInstallInterfaceFlags interfaceFlags, rpmprobFilterFlags probFilter, rpmRelocation *relocations)
| Install/upgrade/freshen binary rpm package.
int | rpmErase (const char *rootdir, const char **argv, rpmtransFlags transFlags, rpmEraseInterfaceFlags interfaceFlags)
| Erase binary rpm package.
int | rpmInstallSource (const char *rootdir, const char *arg, const char **specFile, char **cookie)
| Install source rpm package.
static int | IDTintcmp (const void *a, const void *b)
IDTX | IDTXfree (IDTX idtx)
| Destroy id index.
IDTX | IDTXnew (void)
| Create id index.
IDTX | IDTXgrow (IDTX idtx, int need)
| Insure that index has room for "need" elements.
IDTX | IDTXsort (IDTX idtx)
| Sort tag (instance,value) pairs.
IDTX | IDTXload (rpmdb db, rpmTag tag)
| Load tag (instance,value) pairs from rpm databse, and return sorted id index.
IDTX | IDTXglob (const char *globstr, rpmTag tag)
| Load tag (instance,value) pairs from packages, and return sorted id index.
int | rpmRollback (struct rpmInstallArguments_s *ia, const char **argv)
| Rollback transactions, erasing new, reinstalling old, package(s).

## Variables

static int | hashesPrinted = 0
int | packagesTotal = 0
static int | progressTotal = 0
static int | progressCurrent = 0
static int | reverse = -1

## Detailed Description

Definition in file rpminstall.c.

## Typedef Documentation

typedef const char* str_t

Definition at line 176 of file rpminstall.c.

## Function Documentation

static int IDTintcmp | ( | const void * | a,
|  | const void * | b |
| ) |  |  | `[static]`

Definition at line 724 of file rpminstall.c.

References IDT_s::n, IDT_s::u32, and IDT_s::val.

Referenced by IDTXsort().

IDTX IDTXfree | ( | IDTX | idtx | ) |

Destroy id index.

Parameters:

  | idtx | id index

Returns:
  NULL always

Definition at line 738 of file rpminstall.c.

References _free(), IDT_s::h, headerFree(), IDTindex_s::idt, and IDTindex_s::nidt.

Referenced by rpmRollback().

IDTX IDTXglob | ( | const char * | globstr,
|  | rpmTag | tag |
| ) |  |  |

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

Parameters:

  | db | glob expression
  | tag | rpm tag

Returns:
  id index

Definition at line 831 of file rpminstall.c.

References _, _free(), Fclose(), rpmEIU::fd, Ferror(), Fopen(), Fstrerror(), IDT_s::h, rpmEIU::h, headerFree(), headerGetEntry(), headerLink(), headerNVR(), IDTindex_s::idt, IDTXgrow(), IDTXsort(), IDT_s::instance, rpmEIU::isSource, IDT_s::key, IDT_s::n, IDTindex_s::nidt, IDT_s::r, RPMERR_OPEN, rpmError, rpmGlob(), rpmEIU::rpmrc, RPMRC_OK, rpmReadPackageHeader(), IDT_s::u32, IDT_s::v, IDT_s::val, and xstrdup().

Referenced by rpmRollback().

IDTX IDTXgrow | ( | IDTX | idtx,
|  | int | need |
| ) |  |  |

Insure that index has room for "need" elements.

Parameters:

  | idtx | id index
  | need | additional no. of elements needed

Returns:
  id index (with room for "need" elements)

Definition at line 762 of file rpminstall.c.

References IDTindex_s::alloced, IDTindex_s::delta, IDTindex_s::idt, IDTXnew(), IDTindex_s::nidt, IDTindex_s::size, and xrealloc().

Referenced by IDTXglob(), and IDTXload().

IDTX IDTXload | ( | rpmdb | db,
|  | rpmTag | tag |
| ) |  |  |

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

Parameters:

  | db | rpm database
  | tag | rpm tag

Returns:
  id index

Definition at line 786 of file rpminstall.c.

References rpmEIU::db, IDT_s::h, rpmEIU::h, headerGetEntry(), headerLink(), headerNVR(), IDTindex_s::idt, IDTXgrow(), IDTXsort(), IDT_s::instance, IDT_s::key, IDT_s::n, IDTindex_s::nidt, IDT_s::r, RPM_INT32_TYPE, RPM_NULL_TYPE, rpmdbFreeIterator(), rpmdbGetIteratorOffset(), rpmdbInitIterator(), rpmdbNextIterator(), IDT_s::u32, IDT_s::v, and IDT_s::val.

Referenced by rpmRollback().

IDTX IDTXnew | ( | void |  | ) |

Create id index.

Returns:
  new id index

Definition at line 754 of file rpminstall.c.

References xcalloc().

Referenced by IDTXgrow().

IDTX IDTXsort | ( | IDTX | idtx | ) |

Sort tag (instance,value) pairs.

Parameters:

  | idtx | id index

Returns:
  id index

Definition at line 779 of file rpminstall.c.

References IDTindex_s::idt, IDTintcmp(), IDTindex_s::nidt, and IDTindex_s::size.

Referenced by IDTXglob(), and IDTXload().

static void printHash | ( | const unsigned long | amount,
|  | const unsigned long | total |
| ) |  |  | `[static]`

Definition at line 33 of file rpminstall.c.

References hashesPrinted, progressCurrent, and progressTotal.

Referenced by rpmShowProgress().

void* rpmShowProgress | ( | const void * | arg,
|  | const rpmCallbackType | what,
|  | const unsigned long | amount,
|  | const unsigned long | total,
|  | const void * | pkgKey,
|  | void * | data |
| ) |  |  |

The rpm CLI generic transaction callback.

Deprecated:
  Transaction callback arguments need to change, so don't rely on this routine in the rpmcli API.

Parameters:

  | arg | per-callback private data (e.g. an rpm header)
  | what | callback identifier
  | amount | per-callback progress info
  | total | per-callback progress info
  | pkgkey | opaque header key (e.g. file name or PyObject)
  | data | private data (e.g. rpmInstallInterfaceFlags)

Returns:
  per-callback data (e.g. an opened FD_t)

Definition at line 75 of file rpminstall.c.

References _, _free(), Fclose(), fdFree, fdLink, Fopen(), hashesPrinted, headerSprintf(), INSTALL_HASH, INSTALL_LABEL, INSTALL_PERCENT, packagesTotal, printHash(), progressCurrent, progressTotal, RPMCALLBACK_INST_CLOSE_FILE, RPMCALLBACK_INST_OPEN_FILE, RPMCALLBACK_INST_PROGRESS, RPMCALLBACK_INST_START, RPMCALLBACK_TRANS_PROGRESS, RPMCALLBACK_TRANS_START, RPMCALLBACK_TRANS_STOP, RPMCALLBACK_UNINST_PROGRESS, RPMCALLBACK_UNINST_START, RPMCALLBACK_UNINST_STOP, rpmHeaderFormats, and rpmTagTable.

Referenced by rpmInstall(), and rpmRollback().

## Variable Documentation

int hashesPrinted = 0`[static]`

Definition at line 22 of file rpminstall.c.

Referenced by printHash(), and rpmShowProgress().

int packagesTotal = 0

Definition at line 25 of file rpminstall.c.

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

int progressCurrent = 0`[static]`

Definition at line 29 of file rpminstall.c.

Referenced by printHash(), and rpmShowProgress().

int progressTotal = 0`[static]`

Definition at line 27 of file rpminstall.c.

Referenced by printHash(), and rpmShowProgress().

int reverse = -1`[static]`

Definition at line 720 of file rpminstall.c.