rpmfi.c File Reference
RPMFI File Info API.

Routines to handle file info tag sets. More...

`#include "system.h"`
`#include <rpmio.h>`
`#include <rpmiotypes.h>`
`#include <rpmlog.h>`
`#include <rpmurl.h>`
`#include <rpmmacro.h>`
`#include <ugid.h>`
`#include <rpmdav.h>`
`#include <rpmtypes.h>`
`#include <rpmtag.h>`
`#include "fsm.h"`
`#include "legacy.h"`
`#include "rpmds.h"`
`#include "rpmte.h"`
`#include "rpmts.h"`
`#include <rpmcli.h>`
`#include "debug.h"`
Include dependency graph for rpmfi.c:

Go to the source code of this file.

## Data Structures

struct | rpmRelocation_s

## Macros

#define | _RPMAV_INTERNAL /* XXX avOpendir */
#define | _IOSM_INTERNAL
#define | _RPMFI_INTERNAL
#define | _RPMTE_INTERNAL /* relocations */
#define | alloca_strdup(_s) strcpy(alloca(strlen(_s)+1), (_s))
#define | _fdupestring(_h, _tag, _data)
#define | _fdupedata(_h, _tag, _data)

## Functions

static char * | stripTrailingChar (char *s, char c)
| Remove occurences of trailing character from string. More...
int | rpmfiFC (rpmfi fi)
| Return file count from file info set. More...
int | rpmfiDC (rpmfi fi)
| Return directory count from file info set. More...
int | rpmfiFX (rpmfi fi)
| Return current file index from file info set. More...
int | rpmfiSetFX (rpmfi fi, int fx)
| Set current file index in file info set. More...
int | rpmfiDX (rpmfi fi)
| Return current directory index from file info set. More...
int | rpmfiSetDX (rpmfi fi, int dx)
| Set current directory index in file info set. More...
int | rpmfiIsSource (rpmfi fi)
| Return source rpm marker from file info set. More...
const char * | rpmfiBN (rpmfi fi)
| Return current base name from file info set. More...
const char * | rpmfiDN (rpmfi fi)
| Return current directory name from file info set. More...
const char * | rpmfiFN (rpmfi fi)
| Return current file name from file info set. More...
size_t | rpmfiFNMaxLen (rpmfi fi)
| Return maximum file name length from file info set. More...
rpmuint32_t | rpmfiFFlags (rpmfi fi)
| Return current file flags from file info set. More...
rpmuint32_t | rpmfiSetFFlags (rpmfi fi, rpmuint32_t FFlags)
| Set current file flags in file info set. More...
rpmuint32_t | rpmfiVFlags (rpmfi fi)
| Return current file verify flags from file info set. More...
rpmuint32_t | rpmfiSetVFlags (rpmfi fi, rpmuint32_t VFlags)
| Set current file verify flags in file info set. More...
rpmuint16_t | rpmfiFMode (rpmfi fi)
| Return current file mode from file info set. More...
rpmfileState | rpmfiFState (rpmfi fi)
| Return current file state from file info set. More...
rpmfileState | rpmfiSetFState (rpmfi fi, rpmfileState fstate)
| Set current file state in file info set. More...
const unsigned char * | rpmfiDigest (rpmfi fi, int *algop, size_t *lenp)
| Return current file (binary) digest from file info set. More...
const char * | rpmfiFLink (rpmfi fi)
| Return current file linkto (i.e. More...
rpmuint32_t | rpmfiFSize (rpmfi fi)
| Return current file size from file info set. More...
rpmuint16_t | rpmfiFRdev (rpmfi fi)
| Return current file rdev from file info set. More...
rpmuint32_t | rpmfiFInode (rpmfi fi)
| Return current file inode from file info set. More...
rpmuint32_t | rpmfiColor (rpmfi fi)
| Return union of all file color bits from file info set. More...
rpmuint32_t | rpmfiFColor (rpmfi fi)
| Return current file color bits from file info set. More...
const char * | rpmfiFClass (rpmfi fi)
| Return current file class from file info set. More...
const char * | rpmfiFContext (rpmfi fi)
| Return current file security context from file info set. More...
rpmuint32_t | rpmfiFDepends (rpmfi fi, const rpmuint32_t **fddictp)
| Return current file depends dictionary from file info set. More...
rpmuint32_t | rpmfiFNlink (rpmfi fi)
| Return (calculated) current file nlink count from file info set. More...
rpmuint32_t | rpmfiFMtime (rpmfi fi)
| Return current file modify time from file info set. More...
const char * | rpmfiFUser (rpmfi fi)
| Return current file owner from file info set. More...
const char * | rpmfiFGroup (rpmfi fi)
| Return current file group from file info set. More...
void * | rpmfiExclude (const rpmfi fi)
| Return file info exclude patterns. More...
int | rpmfiNExclude (const rpmfi fi)
| Return no. More...
void * | rpmfiInclude (const rpmfi fi)
| Return file info include patterns. More...
int | rpmfiNInclude (const rpmfi fi)
| Return no. More...
int | rpmfiNext (rpmfi fi)
| Return next file iterator index. More...
rpmfi | rpmfiInit (rpmfi fi, int fx)
| Initialize file iterator index. More...
int | rpmfiNextD (rpmfi fi)
| Return next directory iterator index. More...
rpmfi | rpmfiInitD (rpmfi fi, int dx)
| Initialize directory iterator index. More...
static const char * | rpmfiFtstring (rpmFileTypes ft)
| Identify a file type. More...
static rpmFileTypes | rpmfiWhatis (rpmuint16_t mode)
| Return file type from mode_t. More...
int | rpmfiCompare (const rpmfi afi, const rpmfi bfi)
| Return file info comparison. More...
int | rpmfiDecideFate (const rpmfi ofi, rpmfi nfi, int skipMissing)
| Return file disposition. More...
const char * | rpmfiTypeString (rpmfi fi)
| Return formatted string representation of package disposition. More...
static Header | relocateFileList (const rpmts ts, rpmfi fi, Header origH, iosmFileAction *actions)
| Relocate files in header. More...
int | rpmfiSetHeader (rpmfi fi, Header h)
| Link a header to a file info set. More...
static void | rpmfiFini (void *_fi)
static rpmfi | rpmfiGetPool (rpmioPool pool)
static unsigned char | nibble (char c)
| Convert hex to binary nibble. More...
rpmfi | rpmfiNew (const void *_ts, Header h, rpmTag tagN, int flags)
| Create and load a file info set. More...
int | rpmfiAddRelocation (rpmRelocation *relp, int *nrelp, const char *oldPath, const char *newPath)
| Add relocation element to array. More...
rpmRelocation | rpmfiFreeRelocations (rpmRelocation relocs)
| Free relocation array. More...
rpmRelocation | rpmfiDupeRelocations (rpmRelocation relocs, int *nrelocsp)
| Duplicate a relocation array. More...
int | rpmfiFStat (rpmfi fi, struct stat *st)
| Return current stat(2) data from file info set. More...
int | rpmfiStat (rpmfi fi, const char *path, struct stat *st)
| Return lstat(2) data of path from file info set. More...
DIR * | rpmfiOpendir (rpmfi fi, const char *name)
| Return directory stream onto file info set. More...
void | rpmfiBuildFClasses (Header h, const char ***fclassp, rpmuint32_t *fcp)
| Retrieve file classes from header. More...
void | rpmfiBuildFContexts (Header h, const char ***fcontextp, rpmuint32_t *fcp)
| Retrieve file security contexts from header. More...
void | rpmfiBuildFSContexts (Header h, const char ***fcontextp, rpmuint32_t *fcp)
| Retrieve file security contexts from file system. More...
void | rpmfiBuildREContexts (Header h, const char ***fcontextp, rpmuint32_t *fcp)
| Retrieve file security contexts from policy RE's. More...
void | rpmfiBuildFDeps (Header h, rpmTag tagN, const char ***fdepsp, rpmuint32_t *fcp)
| Retrieve per-file dependencies from header. More...

## Variables

int | _rpmfi_debug = 0
rpmioPool | _rpmfiPool

## Detailed Description

Routines to handle file info tag sets.

Definition in file rpmfi.c.

## Macro Definition Documentation

#define _fdupedata | ( |  | _h,
|  |  | _tag,
|  |  | _data
| ) |  |

Value:
he->tag = _tag; \
xx = headerGet((_h), he, 0); \
_data = he->p.ptr;

Definition at line 1328 of file rpmfi.c.

Referenced by rpmfiNew().

#define _fdupestring | ( |  | _h,
|  |  | _tag,
|  |  | _data
| ) |  |

Value:
he->tag = _tag; \
xx = headerGet((_h), he, 0); \
_data = he->p.str;

Definition at line 1323 of file rpmfi.c.

Referenced by rpmfiNew().

#define _IOSM_INTERNAL

Definition at line 21 of file rpmfi.c.

#define _RPMAV_INTERNAL /* XXX avOpendir */

Definition at line 15 of file rpmfi.c.

#define _RPMFI_INTERNAL

Definition at line 22 of file rpmfi.c.

#define _RPMTE_INTERNAL /* relocations */

Definition at line 28 of file rpmfi.c.

#define alloca_strdup | ( |  | _s | ) | strcpy(alloca(strlen(_s)+1), (_s))

Definition at line 711 of file rpmfi.c.

Referenced by relocateFileList().

## Function Documentation

static unsigned char nibble | ( | char | c | ) |

inline static

Convert hex to binary nibble.

Parameters

  c | hex character

Returns
  binary nibble

Definition at line 1311 of file rpmfi.c.

Referenced by rpmfiNew().

static Header relocateFileList | ( | const rpmts | ts,
|  | rpmfi | fi,
|  | Header | origH,
|  | iosmFileAction * | actions
| ) |  |

static

Relocate files in header.

Todo:
  multilib file dispositions need to be checked.

Parameters

  ts | transaction set
  fi | transaction element file info
  origH | package header
  actions | file dispositions

Returns
  header with relocated files

Definition at line 723 of file rpmfi.c.

References _free(), alloca(), alloca_strdup, rpmDataType_u::argv, _HE_s::c, D_, FA_SKIPNSTATE, headerGet(), headerIsEntry(), headerLink(), headerMod(), headerPut(), rpmRelocation_s::newPath, rpmRelocation_s::oldPath, _HE_s::p, rpmDataType_u::ptr, RPM_STRING_ARRAY_TYPE, RPM_UINT32_TYPE, rpmCleanPath(), rpmExpandNumeric(), rpmfiFtstring(), rpmfiWhatis(), rpmlog(), RPMLOG_DEBUG, RPMPROB_BADRELOCATE, RPMPROB_FILTER_FORCERELOCATE, rpmpsAppend(), rpmpsFree(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_FILECOLORS, RPMTAG_FILEFLAGS, RPMTAG_FILEMODES, RPMTAG_INSTPREFIXES, RPMTAG_ORIGBASENAMES, RPMTAG_ORIGDIRINDEXES, RPMTAG_ORIGDIRNAMES, RPMTAG_PREFIXES, rpmteKey(), rpmteNEVR(), rpmtsFilterFlags(), rpmtsProblems(), rpmtsRelocateElement(), stpcpy(), stripTrailingChar(), _HE_s::t, _HE_s::tag, rpmDataType_u::ui16p, rpmDataType_u::ui32p, XDIR, xmalloc(), and xrealloc().

Referenced by rpmfiNew().

int rpmfiAddRelocation | ( | rpmRelocation * | relp,
|  | int * | nrelp,
|  | const char * | oldPath,
|  | const char * | newPath
| ) |  |

Add relocation element to array.

Return values

  *relocations | relocation array
  *nrelocations | no. of elements

Parameters

  oldPath | old path
  newPath | new path

Returns
  0 on success

Definition at line 1654 of file rpmfi.c.

References xrealloc(), and xstrdup().

Referenced by installArgCallback(), and main().

const char* rpmfiBN | ( | rpmfi | fi | ) |

Return current base name from file info set.

Parameters

  fi | file info set

Returns
  current base name, NULL on invalid

Definition at line 128 of file rpmfi.c.

Referenced by arSetup(), handleInstInstalledFiles(), rpmalAdd(), rpmfi_BN(), and skipFiles().

void rpmfiBuildFClasses | ( | Header | h,
|  | const char *** | fclassp,
|  | rpmuint32_t * | fcp
| ) |  |

Retrieve file classes from header.

This function is used to retrieve file classes from the header.

Parameters

  h | header

Return values

  *fclassp | array of file classes
  *fcp | number of files

Definition at line 1806 of file rpmfi.c.

References _free(), rpmfiFC(), rpmfiFClass(), rpmfiFree(), rpmfiInit(), rpmfiNew(), rpmfiNext(), RPMTAG_BASENAMES, stpcpy(), and xmalloc().

Referenced by fileclassTag().

void rpmfiBuildFContexts | ( | Header | h,
|  | const char *** | fcontextp,
|  | rpmuint32_t * | fcp
| ) |  |

Retrieve file security contexts from header.

This function is used to retrieve file contexts from the header.

Parameters

  h | header

Return values

  *fcontextp | array of file contexts
  *fcp | number of files

Definition at line 1858 of file rpmfi.c.

References _free(), rpmfiFC(), rpmfiFContext(), rpmfiFree(), rpmfiInit(), rpmfiNew(), rpmfiNext(), RPMTAG_BASENAMES, stpcpy(), and xmalloc().

Referenced by filecontextsTag().

void rpmfiBuildFDeps | ( | Header | h,
|  | rpmTag | tagN,
|  | const char *** | fdepsp,
|  | rpmuint32_t * | fcp
| ) |  |

Retrieve per-file dependencies from header.

This function is used to retrieve per-file dependencies from the header.

Parameters

  h | header
  tagN | RPMTAG_PROVIDENAME | RPMTAG_REQUIRENAME

Return values

  *fdepsp | array of file dependencies
  *fcp | number of files

Definition at line 2063 of file rpmfi.c.

References _free(), rpmdsDNEVR(), rpmdsFree(), rpmdsNew(), rpmdsNext(), rpmdsSetIx(), rpmfiFC(), rpmfiFDepends(), rpmfiFree(), rpmfiInit(), rpmfiNew(), rpmfiNext(), RPMTAG_BASENAMES, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, stpcpy(), and xmalloc().

Referenced by fileprovideTag(), and filerequireTag().

void rpmfiBuildFSContexts | ( | Header | h,
|  | const char *** | fcontextp,
|  | rpmuint32_t * | fcp
| ) |  |

Retrieve file security contexts from file system.

This function is used to retrieve file contexts from the file system.

Parameters

  h | header

Return values

  *fcontextp | array of file contexts
  *fcp | number of files

Definition at line 1910 of file rpmfi.c.

References _free(), alloca(), freecon, lgetfilecon, rpmfiFC(), rpmfiFN(), rpmfiFree(), rpmfiInit(), rpmfiNew(), rpmfiNext(), RPMTAG_BASENAMES, xmalloc(), and xrealloc().

Referenced by fscontextsTag().

void rpmfiBuildREContexts | ( | Header | h,
|  | const char *** | fcontextp,
|  | rpmuint32_t * | fcp
| ) |  |

Retrieve file security contexts from policy RE's.

This function is used to retrieve file contexts from policy RE's.

Parameters

  h | header

Return values

  *fcontextp | array of file contexts
  *fcp | number of files

Definition at line 1978 of file rpmfi.c.

References _free(), alloca(), freecon, matchpathcon, matchpathcon_fini, matchpathcon_init, rpmfiFC(), rpmfiFMode(), rpmfiFN(), rpmfiFree(), rpmfiInit(), rpmfiNew(), rpmfiNext(), rpmGetPath(), RPMTAG_BASENAMES, xmalloc(), and xrealloc().

Referenced by recontextsTag().

rpmuint32_t rpmfiColor | ( | rpmfi | fi | ) |

Return union of all file color bits from file info set.

Parameters

  fi | file info set

Returns
  current color

Definition at line 319 of file rpmfi.c.

int rpmfiCompare | ( | const rpmfi | afi,
|  | const rpmfi | bfi
| ) |  |

Return file info comparison.

Parameters

  afi | 1st file info
  bfi | 2nd file info

Returns
  0 if identical

Definition at line 571 of file rpmfi.c.

References LINK, REG, rpmfiDigest(), rpmfiFLink(), rpmfiFMode(), and rpmfiWhatis().

Referenced by handleInstInstalledFiles(), and handleOverlappedFiles().

int rpmfiDC | ( | rpmfi | fi | ) |

Return directory count from file info set.

Parameters

  fi | file info set

Returns
  current directory count

Definition at line 79 of file rpmfi.c.

Referenced by rpmalAdd(), rpmalDel(), rpmfi_DC(), and skipFiles().

int rpmfiDecideFate | ( | const rpmfi | ofi,
|  | rpmfi | nfi,
|  | int | skipMissing
| ) |  |

Return file disposition.

Parameters

  ofi | old file info
  nfi | new file info
  skipMissing | OK to skip missing files?

Returns
  file dispostion

Definition at line 605 of file rpmfi.c.

References D_, dodigest(), FA_ALTNAME, FA_CREATE, FA_SAVE, FA_SKIP, LINK, Lstat(), Readlink(), REG, rpmfiDigest(), rpmfiFFlags(), rpmfiFLink(), rpmfiFMode(), rpmfiFN(), RPMFILE_MISSINGOK, RPMFILE_NOREPLACE, RPMFILE_SPARSE, rpmfiWhatis(), rpmlog(), RPMLOG_DEBUG, and XDIR.

Referenced by handleInstInstalledFiles().

const unsigned char* rpmfiDigest | ( | rpmfi | fi,
|  | int * | algop,
|  | size_t * | lenp
| ) |  |

Return current file (binary) digest from file info set.

Parameters

  fi | file info set

Return values

  *algop | digest algorithm
  *lenp | digest length (in bytes)

Returns
  current file digest, NULL on invalid

Definition at line 258 of file rpmfi.c.

Referenced by handleOverlappedFiles(), rpmfi_Digest(), rpmfiCompare(), rpmfiDecideFate(), rpmVerifyFile(), and showQueryPackage().

const char* rpmfiDN | ( | rpmfi | fi | ) |

Return current directory name from file info set.

Parameters

  fi | file info set

Returns
  current directory, NULL on invalid

Definition at line 139 of file rpmfi.c.

Referenced by handleInstInstalledFiles(), rpmalAdd(), rpmalDel(), rpmfi_DN(), and skipFiles().

rpmRelocation rpmfiDupeRelocations | ( | rpmRelocation | relocs,
|  | int * | nrelocsp
| ) |  |

Duplicate a relocation array.

Parameters

  relocs | relocation array

Return values

  *nrelocsp | no. of elements

Returns
  duplicate relocation array

Definition at line 1679 of file rpmfi.c.

References rpmRelocation_s::newPath, rpmRelocation_s::oldPath, xmalloc(), and xstrdup().

Referenced by addTE().

int rpmfiDX | ( | rpmfi | fi | ) |

Return current directory index from file info set.

Parameters

  fi | file info set

Returns
  current directory index

Definition at line 107 of file rpmfi.c.

Referenced by rpmalAdd(), rpmfi_DX(), and skipFiles().

int rpmfiFC | ( | rpmfi | fi | ) |

Return file count from file info set.

Parameters

  fi | file info set

Returns
  current file count

Definition at line 74 of file rpmfi.c.

Referenced by handleOverlappedFiles(), mapFind(), markReplacedFiles(), pkgUnpackagedSubdirs(), postPopulateInstallHeader(), rpmalAdd(), rpmalDel(), rpmfcGenerateDepends(), rpmfi_FC(), rpmfi_length(), rpmfiBuildFClasses(), rpmfiBuildFContexts(), rpmfiBuildFDeps(), rpmfiBuildFSContexts(), rpmfiBuildREContexts(), rpmpsmStage(), rpmteColorDS(), rpmtsCheckDSIProblems(), rpmtsRun(), and showQueryPackage().

const char* rpmfiFClass | ( | rpmfi | fi | ) |

Return current file class from file info set.

Parameters

  fi | file info set

Returns
  current file class, 0 on invalid

Definition at line 341 of file rpmfi.c.

Referenced by rpmfi_FClass(), and rpmfiBuildFClasses().

rpmuint32_t rpmfiFColor | ( | rpmfi | fi | ) |

Return current file color bits from file info set.

Parameters

  fi | file info set

Returns
  current file color

Definition at line 329 of file rpmfi.c.

Referenced by handleInstInstalledFiles(), handleOverlappedFiles(), rpmalAdd(), rpmfi_FColor(), rpmteColorDS(), and skipFiles().

const char* rpmfiFContext | ( | rpmfi | fi | ) |

Return current file security context from file info set.

Parameters

  fi | file info set

Returns
  current file context, 0 on invalid

Definition at line 353 of file rpmfi.c.

Referenced by rpmfiBuildFContexts().

rpmuint32_t rpmfiFDepends | ( | rpmfi | fi,
|  | const rpmuint32_t ** | fddictp
| ) |  |

Return current file depends dictionary from file info set.

Parameters

  fi | file info set

Return values

  *fddictp | file depends dictionary array (or NULL)

Returns
  no. of file depends entries, 0 on invalid

Definition at line 364 of file rpmfi.c.

Referenced by rpmfiBuildFDeps(), and rpmteColorDS().

rpmuint32_t rpmfiFFlags | ( | rpmfi | fi | ) |

Return current file flags from file info set.

Parameters

  fi | file info set

Returns
  current file flags, 0 on invalid

Definition at line 175 of file rpmfi.c.

Referenced by handleInstInstalledFiles(), handleOverlappedFiles(), rpmfcGenerateDepends(), rpmfi_FFlags(), rpmfi_iternext(), rpmfiDecideFate(), rpmtsRun(), rpmVerifyFile(), showQueryPackage(), skipFiles(), and verifyHeader().

const char* rpmfiFGroup | ( | rpmfi | fi | ) |

Return current file group from file info set.

Parameters

  fi | file info set

Returns
  current file group, NULL on invalid

Definition at line 428 of file rpmfi.c.

Referenced by rpmfi_FGroup(), rpmfi_iternext(), rpmVerifyFile(), and showQueryPackage().

static void rpmfiFini | ( | void * | _fi | ) |

static

Definition at line 1221 of file rpmfi.c.

References _fi, _free(), freeFSM(), headerFree(), and mireFreeAll().

Referenced by rpmfiGetPool().

rpmuint32_t rpmfiFInode | ( | rpmfi | fi | ) |

Return current file inode from file info set.

Parameters

  fi | file info set

Returns
  current file inode, 0 on invalid

Definition at line 308 of file rpmfi.c.

Referenced by rpmfi_iternext().

const char* rpmfiFLink | ( | rpmfi | fi | ) |

Return current file linkto (i.e.

symlink(2) target) from file info set.

Parameters

  fi | file info set

Returns
  current file linkto, NULL on invalid

Definition at line 275 of file rpmfi.c.

Referenced by rpmfi_FLink(), rpmfiCompare(), rpmfiDecideFate(), rpmVerifyFile(), and showQueryPackage().

rpmuint16_t rpmfiFMode | ( | rpmfi | fi | ) |

Return current file mode from file info set.

Parameters

  fi | file info set

Returns
  current file mode, 0 on invalid

Definition at line 223 of file rpmfi.c.

Referenced by fiIntersect(), handleInstInstalledFiles(), handleOverlappedFiles(), packagedDir(), rpmfcGenerateDepends(), rpmfi_FMode(), rpmfi_iternext(), rpmfiBuildREContexts(), rpmfiCompare(), rpmfiDecideFate(), rpmVerifyFile(), showQueryPackage(), and skipFiles().

rpmuint32_t rpmfiFMtime | ( | rpmfi | fi | ) |

Return current file modify time from file info set.

Parameters

  fi | file info set

Returns
  current file modify time, 0 on invalid

Definition at line 405 of file rpmfi.c.

Referenced by rpmfi_FMtime(), rpmfi_iternext(), rpmVerifyFile(), and showQueryPackage().

const char* rpmfiFN | ( | rpmfi | fi | ) |

Return current file name from file info set.

Parameters

  fi | file info set

Returns
  current file name

Definition at line 150 of file rpmfi.c.

References stpcpy(), urlPath(), and xmalloc().

Referenced by checkUnpackagedFiles(), fiIntersect(), handleInstInstalledFiles(), handleOverlappedFiles(), packagedDir(), pkgUnpackagedSubdirs(), rpmfcGenerateDepends(), rpmfcGenerateDependsHelper(), rpmfi_FN(), rpmfi_iternext(), rpmfi_print(), rpmfi_subscript(), rpmfiBuildFSContexts(), rpmfiBuildREContexts(), rpmfiDecideFate(), rpmfiOpendir(), rpmfiStat(), rpmtsCheck(), rpmtsRun(), rpmVerifyFile(), showQueryPackage(), and verifyHeader().

rpmuint32_t rpmfiFNlink | ( | rpmfi | fi | ) |

Return (calculated) current file nlink count from file info set.

Parameters

  fi | file info set

Returns
  current file nlink count, 0 on invalid

Definition at line 385 of file rpmfi.c.

Referenced by rpmfi_iternext(), rpmfiFStat(), and showQueryPackage().

size_t rpmfiFNMaxLen | ( | rpmfi | fi | ) |

Return maximum file name length from file info set.

Parameters

  fi | file info set

Returns
  maximum file name length (not including '\0')

Definition at line 168 of file rpmfi.c.

Referenced by pkgUnpackagedSubdirs().

rpmuint16_t rpmfiFRdev | ( | rpmfi | fi | ) |

Return current file rdev from file info set.

Parameters

  fi | file info set

Returns
  current file rdev, 0 on invalid

Definition at line 297 of file rpmfi.c.

Referenced by rpmfi_FRdev(), rpmfi_iternext(), rpmVerifyFile(), and showQueryPackage().

rpmRelocation rpmfiFreeRelocations | ( | rpmRelocation | relocs | ) |

Free relocation array.

Parameters

  relocs | relocation array

Returns
  NULL always

Definition at line 1666 of file rpmfi.c.

References _free(), rpmRelocation_s::newPath, and rpmRelocation_s::oldPath.

Referenced by delTE(), and main().

rpmuint32_t rpmfiFSize | ( | rpmfi | fi | ) |

Return current file size from file info set.

Parameters

  fi | file info set

Returns
  current file size, 0 on invalid

Definition at line 286 of file rpmfi.c.

Referenced by handleInstInstalledFiles(), handleOverlappedFiles(), rpmfi_FSize(), rpmfi_iternext(), rpmVerifyFile(), and showQueryPackage().

int rpmfiFStat | ( | rpmfi | fi,
|  | struct stat * | st
| ) |  |

Return current stat(2) data from file info set.

Parameters

  fi | file info set

Return values

  *st | stat(2) data

Returns
  -1 on error, 0 on success

Definition at line 1704 of file rpmfi.c.

References gnameToGid(), rpmfiFNlink(), and unameToUid().

Referenced by rpmfiStat().

rpmfileState rpmfiFState | ( | rpmfi | fi | ) |

Return current file state from file info set.

Parameters

  fi | file info set

Returns
  current file state, 0 on invalid

Definition at line 234 of file rpmfi.c.

References RPMFILE_STATE_MISSING.

Referenced by handleOverlappedFiles(), rpmfi_FState(), rpmfi_iternext(), rpmVerifyFile(), and showQueryPackage().

static const char* rpmfiFtstring | ( | rpmFileTypes | ft | ) |

static

Identify a file type.

Parameters

  ft | file type

Returns
  string to identify a file type

Definition at line 536 of file rpmfi.c.

References BDEV, CDEV, LINK, PIPE, REG, SOCK, and XDIR.

Referenced by relocateFileList().

const char* rpmfiFUser | ( | rpmfi | fi | ) |

Return current file owner from file info set.

Parameters

  fi | file info set

Returns
  current file owner, NULL on invalid

Definition at line 416 of file rpmfi.c.

Referenced by rpmfi_FUser(), rpmfi_iternext(), rpmVerifyFile(), and showQueryPackage().

int rpmfiFX | ( | rpmfi | fi | ) |

Return current file index from file info set.

Parameters

  fi | file info set

Returns
  current file index

Definition at line 90 of file rpmfi.c.

Referenced by rpmfi_FX().

static rpmfi rpmfiGetPool | ( | rpmioPool | pool | ) |

static

Definition at line 1292 of file rpmfi.c.

References _rpmfi_debug, _rpmfiPool, rpmfiFini(), rpmioGetPool(), and rpmioNewPool().

Referenced by rpmfiNew().

rpmfi rpmfiInit | ( | rpmfi | fi,
|  | int | fx
| ) |  |

Initialize file iterator index.

Parameters

  fi | file info set
  fx | file iterator index

Returns
  file info set

Definition at line 482 of file rpmfi.c.

Referenced by arSetup(), checkUnpackagedFiles(), dnlInitIterator(), fiIntersect(), handleInstInstalledFiles(), handleOverlappedFiles(), packagedDir(), pkgUnpackagedSubdirs(), rpmalAdd(), rpmfcGenerateDepends(), rpmfcGenerateDependsHelper(), rpmfi_iternext(), rpmfi_print(), rpmfiBuildFClasses(), rpmfiBuildFContexts(), rpmfiBuildFDeps(), rpmfiBuildFSContexts(), rpmfiBuildREContexts(), rpmfiOpendir(), rpmfiStat(), rpmteColorDS(), rpmtsCheck(), rpmtsRun(), showQueryPackage(), skipFiles(), and verifyHeader().

rpmfi rpmfiInitD | ( | rpmfi | fi,
|  | int | dx
| ) |  |

Initialize directory iterator index.

Parameters

  fi | file info set
  dx | directory iterator index

Returns
  file info set, NULL if dx is out of range

Definition at line 516 of file rpmfi.c.

Referenced by skipFiles().

int rpmfiIsSource | ( | rpmfi | fi | ) |

Return source rpm marker from file info set.

Parameters

  fi | file info set

Returns
  source rpm?

Definition at line 123 of file rpmfi.c.

rpmfi rpmfiNew | ( | const void * | _ts,
|  | Header | h,
|  | rpmTag | tagN,
|  | int | flags
| ) |  |

Create and load a file info set.

Parameters

  _ts | transaction set (NULL skips path relocation)
  h | header
  tagN | RPMTAG_BASENAMES
  flags | scareMem(0x1), nofilter(0x2)

Returns
  new file info set

Definition at line 1333 of file rpmfi.c.

References _fdupedata, _fdupestring, _free(), _rpmfi_debug, alloca(), rpmDataType_u::argv, argvFree(), _HE_s::c, FA_UNKNOWN, headerFree(), headerGet(), headerIsEntry(), headerLink(), headerMacrosLoad(), headerMacrosUnload(), headerSprintf(), IOSM_MAP_GID, IOSM_MAP_MODE, IOSM_MAP_PATH, IOSM_MAP_UID, newFSM(), rpmRelocation_s::newPath, nibble(), _HE_s::p, PGPHASHALGO_CRC32, PGPHASHALGO_ERROR, PGPHASHALGO_MD2, PGPHASHALGO_MD5, PGPHASHALGO_RIPEMD128, PGPHASHALGO_RIPEMD160, PGPHASHALGO_RIPEMD256, PGPHASHALGO_RIPEMD320, PGPHASHALGO_SHA1, PGPHASHALGO_SHA224, PGPHASHALGO_SHA256, PGPHASHALGO_SHA384, PGPHASHALGO_SHA512, rpmDataType_u::ptr, relocateFileList(), rpmfiGetPool(), RPMFILE_ICON, RPMFILE_PATCH, RPMFILE_SOURCE, RPMFILE_SPECFILE, rpmfiLink(), rpmGenPath(), rpmGetPath(), rpmHeaderFormats, RPMTAG_ARCH, RPMTAG_ARCHIVESIZE, RPMTAG_BASENAMES, RPMTAG_CLASSDICT, RPMTAG_DEPENDSDICT, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_FILECLASS, RPMTAG_FILECOLORS, RPMTAG_FILECONTEXTS, RPMTAG_FILEDEPENDSN, RPMTAG_FILEDEPENDSX, RPMTAG_FILEDIGESTALGO, RPMTAG_FILEDIGESTALGOS, RPMTAG_FILEDIGESTS, RPMTAG_FILEFLAGS, RPMTAG_FILEGROUPNAME, RPMTAG_FILEINODES, RPMTAG_FILELANGS, RPMTAG_FILELINKTOS, RPMTAG_FILEMODES, RPMTAG_FILEMTIMES, RPMTAG_FILERDEVS, RPMTAG_FILESIZES, RPMTAG_FILESTATES, RPMTAG_FILEUSERNAME, RPMTAG_FILEVERIFYFLAGS, RPMTAG_OLDFILENAMES, RPMTAG_ORIGBASENAMES, RPMTAG_POSTTRANS, RPMTAG_POSTTRANSPROG, RPMTAG_PRETRANS, RPMTAG_PRETRANSPROG, RPMTAG_REMOVETID, RPMTAG_RPMVERSION, RPMTAG_SOURCERPM, RPMTAG_VERIFYSCRIPT, RPMTAG_VERIFYSCRIPTPROG, rpmteType(), rpmtsRelocateElement(), rpmtsRootDir(), stpcpy(), _HE_s::tag, TR_ADDED, rpmDataType_u::ui32p, xcalloc(), xmalloc(), xrealloc(), and xstrdup().

Referenced by addTE(), checkDuplicateFiles(), checkUnpackagedFiles(), genCpioListAndHeader(), handleInstInstalledFiles(), hdr_fiFromHeader(), packagedDir(), pkgUnpackagedSubdirs(), rpmfi_init(), rpmfiBuildFClasses(), rpmfiBuildFContexts(), rpmfiBuildFDeps(), rpmfiBuildFSContexts(), rpmfiBuildREContexts(), rpmInstallSourcePackage(), rpmtsRun(), showQueryPackage(), and showVerifyPackage().

int rpmfiNext | ( | rpmfi | fi | ) |

Return next file iterator index.

Parameters

  fi | file info set

Returns
  file iterator index, -1 on termination

Definition at line 460 of file rpmfi.c.

References _rpmfi_debug.

Referenced by arSetup(), checkUnpackagedFiles(), dnlInitIterator(), fiIntersect(), handleInstInstalledFiles(), handleOverlappedFiles(), packagedDir(), pkgUnpackagedSubdirs(), rpmalAdd(), rpmfcGenerateDepends(), rpmfcGenerateDependsHelper(), rpmfi_iternext(), rpmfi_print(), rpmfiBuildFClasses(), rpmfiBuildFContexts(), rpmfiBuildFDeps(), rpmfiBuildFSContexts(), rpmfiBuildREContexts(), rpmfiOpendir(), rpmfiStat(), rpmteColorDS(), rpmtsCheck(), rpmtsRun(), showQueryPackage(), skipFiles(), and verifyHeader().

int rpmfiNextD | ( | rpmfi | fi | ) |

Return next directory iterator index.

Parameters

  fi | file info set

Returns
  directory iterator index, -1 on termination

Definition at line 496 of file rpmfi.c.

References _rpmfi_debug.

Referenced by skipFiles().

DIR* rpmfiOpendir | ( | rpmfi | fi,
|  | const char * | name
| ) |  |

Return directory stream onto file info set.

Parameters

  fi | file info set
  name | directory path

Returns
  NULL on error

Definition at line 1762 of file rpmfi.c.

References _free(), _rpmfi_debug, argvAdd(), argvFree(), avOpendir(), name, rpmfiFN(), rpmfiInit(), rpmfiNext(), and xcalloc().

int rpmfiSetDX | ( | rpmfi | fi,
|  | int | dx
| ) |  |

Set current directory index in file info set.

Parameters

  fi | file info set
  dx | new directory index

Returns
  current directory index

Definition at line 112 of file rpmfi.c.

Referenced by rpmalAdd(), and rpmalDel().

rpmuint32_t rpmfiSetFFlags | ( | rpmfi | fi,
|  | rpmuint32_t | FFlags
| ) |  |

Set current file flags in file info set.

Parameters

  fi | file info set
  FFlags | new file flags

Returns
  previous file flags, 0 on invalid

Definition at line 186 of file rpmfi.c.

Referenced by rpmtsRun().

rpmfileState rpmfiSetFState | ( | rpmfi | fi,
|  | rpmfileState | fstate
| ) |  |

Set current file state in file info set.

Parameters

  fi | file info set
  fstate | new file state

Returns
  previous file state, 0 on invalid

Definition at line 245 of file rpmfi.c.

int rpmfiSetFX | ( | rpmfi | fi,
|  | int | fx
| ) |  |

Set current file index in file info set.

Parameters

  fi | file info set
  fx | new file index

Returns
  current file index

Definition at line 95 of file rpmfi.c.

Referenced by handleInstInstalledFiles(), handleOverlappedFiles(), and rpmfi_subscript().

int rpmfiSetHeader | ( | rpmfi | fi,
|  | Header | h
| ) |  |

Link a header to a file info set.

Parameters

  fi | file info set
  h | header

Returns
  0 always

Definition at line 1209 of file rpmfi.c.

References headerFree(), and headerLink().

Referenced by showVerifyPackage().

rpmuint32_t rpmfiSetVFlags | ( | rpmfi | fi,
|  | rpmuint32_t | VFlags
| ) |  |

Set current file verify flags in file info set.

Parameters

  fi | file info set
  VFlags | new file verify flags

Returns
  previous file verify flags, 0 on invalid

Definition at line 210 of file rpmfi.c.

int rpmfiStat | ( | rpmfi | fi,
|  | const char * | path,
|  | struct stat * | st
| ) |  |

Return lstat(2) data of path from file info set.

Parameters

  fi | file info set
  path | file path

Return values

  *st | stat(2) data

Returns
  -1 on error, 0 on success

Definition at line 1731 of file rpmfi.c.

References _rpmfi_debug, rpmfiFN(), rpmfiFStat(), rpmfiInit(), and rpmfiNext().

const char* rpmfiTypeString | ( | rpmfi | fi | ) |

Return formatted string representation of package disposition.

Parameters

  fi | file info set

Returns
  formatted string

Definition at line 701 of file rpmfi.c.

References rpmteType(), TR_ADDED, and TR_REMOVED.

Referenced by fsmStage().

rpmuint32_t rpmfiVFlags | ( | rpmfi | fi | ) |

Return current file verify flags from file info set.

Parameters

  fi | file info set

Returns
  current file verify flags, 0 on invalid

Definition at line 199 of file rpmfi.c.

Referenced by rpmfi_iternext(), rpmfi_VFlags(), and rpmVerifyFile().

static rpmFileTypes rpmfiWhatis | ( | rpmuint16_t | mode | ) |

static

Return file type from mode_t.

Parameters

  mode | file mode bits (from header)

Returns
  file type

Definition at line 557 of file rpmfi.c.

References BDEV, CDEV, LINK, PIPE, REG, S_ISLNK, S_ISSOCK, SOCK, and XDIR.

Referenced by relocateFileList(), rpmfiCompare(), and rpmfiDecideFate().

static char* stripTrailingChar | ( | char * | s,
|  | char | c
| ) |  |

static

Remove occurences of trailing character from string.

Parameters

  s | string
  c | character to strip

Returns
  string

Definition at line 63 of file rpmfi.c.

Referenced by relocateFileList().

## Variable Documentation

int _rpmfi_debug = 0

Definition at line 54 of file rpmfi.c.

Referenced by rpmfi_alloc(), rpmfi_Debug(), rpmfi_free(), rpmfi_init(), rpmfi_new(), rpmfiGetPool(), rpmfiNew(), rpmfiNext(), rpmfiNextD(), rpmfiOpendir(), and rpmfiStat().

rpmioPool _rpmfiPool

Definition at line 1290 of file rpmfi.c.

Referenced by rpmfiGetPool().