# upgrade.c File Reference

`#include <stdio.h>`
`#include <stdlib.h>`
`#include <unistd.h>`
`#include <fcntl.h>`
`#include <string.h>`
`#include <glob.h>`
`#include <dirent.h>`
`#include <rpmlib.h>`
`#include "hash.h"`
`#include "upgrade.h"`

Go to the source code of this file.

## Defines

#define | MAXPKGS 1024
#define | USEDEBUG 0
#define | DEBUG(x)

## Functions

int | pkgCompare (void *first, void *second)
static void | compareFileList (int availFileCount, char **availBaseNames, char **availDirNames, int *availDirIndexes, int instFileCount, char **instBaseNames, char **instDirNames, int *instDirIndexes, struct hash_table *ht)
static void | addLostFiles (rpmdb db, struct pkgSet *psp, struct hash_table *ht)
static int | findPackagesWithObsoletes (rpmdb db, struct pkgSet *psp)
static void | errorFunction (void)
static int | findUpgradePackages (rpmdb db, struct pkgSet *psp, struct hash_table *ht)
static int | removeMovedFilesAlreadyHandled (struct pkgSet *psp, struct hash_table *ht)
static int | findPackagesWithRelocatedFiles (struct pkgSet *psp, struct hash_table *ht)
static int | unmarkPackagesAlreadyInstalled (rpmdb db, struct pkgSet *psp)
static void | emptyErrorCallback (void)
int | ugFindUpgradePackages (struct pkgSet *psp, char *installRoot)

## Detailed Description

Definition in file upgrade.c.

## Define Documentation

#define DEBUG | ( | x |  | ) |

Value:

    {   \
         if (USEDEBUG)   \
             printf x; \
         }

Definition at line 23 of file upgrade.c.

#define MAXPKGS 1024

| Definition at line 19 of file upgrade.c.

#define USEDEBUG 0

| Definition at line 21 of file upgrade.c.

## Function Documentation

static void addLostFiles | ( | rpmdb | db,
|  | struct pkgSet * | psp,
|  | struct hash_table * | ht
| ) | `[static]`

| Definition at line 105 of file upgrade.c. References compareFileList(), headerGetEntry(), headerGetEntryMinMemory(), packageInfo::name, pkgCompare(), rpmdbFreeIterator(), RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, and RPMTAG_NAME. Referenced by ugFindUpgradePackages().

static void compareFileList | ( | int | availFileCount,
|  | char ** | availBaseNames,
|  | char ** | availDirNames,
|  | int * | availDirIndexes,
|  | int | instFileCount,
|  | char ** | instBaseNames,
|  | char ** | instDirNames,
|  | int * | instDirIndexes,
|  | struct hash_table * | ht
| ) | `[static]`

| Definition at line 56 of file upgrade.c. References DEBUG, and htAddToTable(). Referenced by addLostFiles(), and findUpgradePackages().

static void emptyErrorCallback | ( | void |  | ) | `[static]`

| Definition at line 462 of file upgrade.c. Referenced by ugFindUpgradePackages().

static void errorFunction | ( | void |  | ) | `[static]`

| Definition at line 185 of file upgrade.c. Referenced by findUpgradePackages(), and unmarkPackagesAlreadyInstalled().

static int findPackagesWithObsoletes | ( | rpmdb | db,
|  | struct pkgSet * | psp
| ) | `[static]`

| Definition at line 153 of file upgrade.c. References headerGetEntryMinMemory(), rpmdbCountPackages(), RPMTAG_OBSOLETENAME, and packageInfo::selected. Referenced by ugFindUpgradePackages().

static int findPackagesWithRelocatedFiles | ( | struct pkgSet * | psp,
|  | struct hash_table * | ht
| ) | `[static]`

| Definition at line 346 of file upgrade.c. References DEBUG, headerGetEntry(), headerGetEntryMinMemory(), htInTable(), htRemoveFromTable(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_FILEMODES, and RPMTAG_NAME. Referenced by ugFindUpgradePackages().

static int findUpgradePackages | ( | rpmdb | db,
|  | struct pkgSet * | psp,
|  | struct hash_table * | ht
| ) | `[static]`

| Definition at line 189 of file upgrade.c. References compareFileList(), DEBUG, errorFunction(), headerGetEntry(), headerGetEntryMinMemory(), rpmdbFreeIterator(), rpmdbInitIterator(), rpmdbNextIterator(), rpmErrorSetCallback, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_NAME, and rpmVersionCompare(). Referenced by ugFindUpgradePackages().

int pkgCompare | ( | void * | first,
|  | void * | second
| ) |

| Definition at line 42 of file upgrade.c. References xstrcasecmp(). Referenced by addLostFiles().

static int removeMovedFilesAlreadyHandled | ( | struct pkgSet * | psp,
|  | struct hash_table * | ht
| ) | `[static]`

| Definition at line 296 of file upgrade.c. References DEBUG, headerGetEntry(), headerGetEntryMinMemory(), htInTable(), htRemoveFromTable(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, and RPMTAG_NAME. Referenced by ugFindUpgradePackages().

int ugFindUpgradePackages | ( | struct pkgSet * | psp,
|  | char * | installRoot
| ) |

Definition at line 465 of file upgrade.c.

References addLostFiles(), emptyErrorCallback(), findPackagesWithObsoletes(), findPackagesWithRelocatedFiles(), findUpgradePackages(), htFreeHashTable(), htNewTable(), removeMovedFilesAlreadyHandled(), rpmdbClose(), rpmdbOpen(), rpmErrorSetCallback, RPMMESS_FATALERROR, RPMMESS_NORMAL, rpmSetVerbosity, and unmarkPackagesAlreadyInstalled().

Referenced by findUpgradeSet().

static int unmarkPackagesAlreadyInstalled | ( | rpmdb | db,
|  | struct pkgSet * | psp
| ) | `[static]`

| Definition at line 418 of file upgrade.c. References DEBUG, errorFunction(), headerGetEntry(), rpmdbFreeIterator(), rpmdbInitIterator(), rpmdbNextIterator(), rpmErrorSetCallback, RPMTAG_NAME, and rpmVersionCompare(). Referenced by ugFindUpgradePackages().