rpmcache.c File Reference
`#include "system.h"`
`#include <fnmatch.h>`
`#include <fts.h>`
`#include <rpmio.h>`
`#include <rpmiotypes.h>`
`#include <poptIO.h>`
`#include <rpmtypes.h>`
`#include <rpmtag.h>`
`#include "rpmdb.h"`
`#include "rpmps.h"`
`#include "misc.h"`
`#include <rpmgi.h>`
`#include <rpmcli.h>`
`#include "debug.h"`
Include dependency graph for rpmcache.c:

Go to the source code of this file.

## Data Structures

struct | ftsglob_s
struct | Item_s

## Macros

#define | _RPMGI_INTERNAL

## Typedefs

typedef struct Item_s * | Item

## Functions

static Item | freeItem (Item item)
static Item | newItem (void)
static int | cmpItem (const void *a, const void *b)
static void | freeItems (void)
static int | ftsCachePrint (rpmts ts, FILE *fp)
static int | ftsCacheUpdate (rpmts ts)
static rpmRC | cacheStashLatest (rpmgi gi, Header h)
static const char * | ftsInfoStr (int fts_info)
static rpmRC | cacheWalkPathFilter (rpmgi gi)
static void | initGlobs (rpmts ts, const char **argv)
| Initialize fts and glob structures. More...
static void | freeGlobs (void)
int | main (int argc, char *argv[])

## Variables

const char * | __progname
static int | _debug = 0
static int | noCache = -1
static ARGV_t | ftsSet
const char * | bhpath
int | bhpathlen = 0
int | bhlvl = -1
static struct ftsglob_s * | bhglobs
static int | nbhglobs = 5
static int | indent = 2
static Item * | items = NULL
static int | nitems = 0
static const char * | ftsInfoStrings []
static rpmVSFlags | vsflags = 0
static struct poptOption | optionsTable []

## Macro Definition Documentation

#define _RPMGI_INTERNAL

Definition at line 24 of file rpmcache.c.

## Typedef Documentation

typedef struct Item_s * Item

## Function Documentation

static rpmRC cacheStashLatest | ( | rpmgi | gi,
|  | Header | h
| ) |  |

static

Definition at line 207 of file rpmcache.c.

References alloca(), cmpItem(), freeItem(), _ftsent::fts_accpath, _ftsent::fts_level, _ftsent::fts_name, _ftsent::fts_path, _ftsent::fts_statp, Item_s::h, headerLink(), indent, items, L, Item_s::mtime, newItem(), nitems, Item_s::path, rpmdsCompare(), rpmdsFree(), rpmdsThis(), rpmlog(), RPMLOG_DEBUG, RPMRC_NOTFOUND, RPMRC_OK, RPMSENSE_EQUAL, RPMSENSE_LESS, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, Item_s::size, Stat(), Item_s::this, xrealloc(), and xstrdup().

Referenced by main().

static rpmRC cacheWalkPathFilter | ( | rpmgi | gi | ) |

static

Definition at line 318 of file rpmcache.c.

References _debug, bhglobs, bhlvl, bhpath, bhpathlen, ftsglob_s::fnflags, fnmatch(), FTS_D, FTS_DC, FTS_DEFAULT, FTS_DNR, FTS_DOT, FTS_DP, FTS_ERR, FTS_F, _ftsent::fts_info, FTS_INIT, _ftsent::fts_level, _ftsent::fts_name, _ftsent::fts_namelen, FTS_NS, FTS_NSOK, _ftsent::fts_parent, _ftsent::fts_path, _ftsent::fts_pathlen, Fts_set(), FTS_SKIP, FTS_SL, FTS_SLNONE, FTS_W, ftsInfoStr(), indent, nbhglobs, ftsglob_s::patterns, and RPMRC_OK.

Referenced by main().

static int cmpItem | ( | const void * | a,
|  | const void * | b
| ) |  |

static

Definition at line 80 of file rpmcache.c.

References rpmdsN(), and Item_s::this.

Referenced by cacheStashLatest().

static void freeGlobs | ( | void |  | ) |

static

Definition at line 515 of file rpmcache.c.

References _free(), ftsSet, nbhglobs, and ftsglob_s::patterns.

Referenced by main().

static Item freeItem | ( | Item | item | ) |

inline static

Definition at line 63 of file rpmcache.c.

References _free(), Item_s::h, headerFree(), Item_s::path, rpmdsFree(), and Item_s::this.

Referenced by cacheStashLatest(), and freeItems().

static void freeItems | ( | void |  | ) |

static

Definition at line 87 of file rpmcache.c.

References _free(), freeItem(), and nitems.

Referenced by main().

static int ftsCachePrint | ( | rpmts | ts,
|  | FILE * | fp
| ) |  |

static

Definition at line 95 of file rpmcache.c.

References nitems, and Item_s::path.

Referenced by main().

static int ftsCacheUpdate | ( | rpmts | ts | ) |

static

Definition at line 115 of file rpmcache.c.

References _free(), alloca(), _HE_s::append, rpmDataType_u::argv, _HE_s::c, Item_s::h, headerGet(), headerPut(), Item_s::mtime, nitems, _HE_s::p, Item_s::path, RMIL_CMDLINE, RPM_STRING_ARRAY_TYPE, RPM_UINT32_TYPE, rpmdbAdd(), rpmDefineMacro(), rpmmiCount(), rpmmiFree(), RPMTAG_CACHECTIME, RPMTAG_CACHEPKGMTIME, RPMTAG_CACHEPKGPATH, RPMTAG_CACHEPKGSIZE, RPMTAG_SIGMD5, rpmtsCloseDB(), rpmtsGetRdb(), rpmtsGetTid(), rpmtsInitIterator(), rpmtsOpenDB(), rpmtsVSFlags(), RPMVSF_NOHDRCHK, Item_s::size, _HE_s::t, _HE_s::tag, rpmDataType_u::ui32p, and rpmDataType_u::ui8p.

Referenced by main().

static const char* ftsInfoStr | ( | int | fts_info | ) |

static

Definition at line 312 of file rpmcache.c.

References ftsInfoStrings.

Referenced by cacheWalkPathFilter().

static void initGlobs | ( | rpmts | ts,
|  | const char ** | argv
| ) |  |

static

Initialize fts and glob structures.

Parameters

  ts | transaction set
  argv | package names to match

Definition at line 445 of file rpmcache.c.

References _free(), bhpath, bhpathlen, ftsglob_s::fnflags, FNM_EXTMATCH, FNM_PATHNAME, FNM_PERIOD, ftsSet, Glob_pattern_p(), nbhglobs, ftsglob_s::patterns, rpmExpand(), rpmlog(), RPMLOG_DEBUG, stpcpy(), and xcalloc().

Referenced by main().

int main | ( | int | argc,
|  | char * | argv[]
| ) |  |

Definition at line 552 of file rpmcache.c.

References _, __progname, _free(), _RPMVSF_NODIGESTS, _RPMVSF_NOSIGNATURES, Access(), cacheStashLatest(), cacheWalkPathFilter(), EXIT_FAILURE, freeGlobs(), freeItems(), FTS_COMFOLLOW, FTS_LOGICAL, FTS_NOSTAT, ftsCachePrint(), ftsCacheUpdate(), ftsSet, giFlags, initGlobs(), noCache, optionsTable, rpmcliFini(), rpmcliInit(), rpmcliQueryFlags, RPMDBI_FTSWALK, rpmExpand(), rpmgiFree(), rpmgiNew(), rpmgiNext(), rpmgiSetArgs(), rpmioFtsOpts, rpmMkdirPath(), RPMRC_FAIL, RPMRC_OK, rpmtsCreate(), rpmtsFree(), rpmtsSetTid(), rpmtsSetVSFlags(), RPMVSF_NOHDRCHK, VERIFY_DIGEST, VERIFY_HDRCHK, VERIFY_SIGNATURE, vsflags, and W_OK.

static Item newItem | ( | void |  | ) |

inline static

Definition at line 75 of file rpmcache.c.

References xcalloc().

Referenced by cacheStashLatest().

## Variable Documentation

const char* __progname

Definition at line 6 of file rpmcache.c.

int _debug = 0

static

Definition at line 31 of file rpmcache.c.

Referenced by cacheWalkPathFilter().

struct ftsglob_s* bhglobs

static

Definition at line 47 of file rpmcache.c.

Referenced by cacheWalkPathFilter().

int bhlvl = -1

Definition at line 40 of file rpmcache.c.

Referenced by cacheWalkPathFilter().

const char* bhpath

Definition at line 38 of file rpmcache.c.

Referenced by cacheWalkPathFilter(), and initGlobs().

int bhpathlen = 0

Definition at line 39 of file rpmcache.c.

Referenced by cacheWalkPathFilter(), and initGlobs().

const char* ftsInfoStrings[]

static

Initial value:
= {
"UNKNOWN",
"D",
"DC",
"DEFAULT",
"DNR",
"DOT",
"DP",
"ERR",
"F",
"INIT",
"NS",
"NSOK",
"SL",
"SLNONE",
"W",
}

Definition at line 294 of file rpmcache.c.

Referenced by ftsInfoStr().

ARGV_t ftsSet

static

Definition at line 36 of file rpmcache.c.

Referenced by freeGlobs(), initGlobs(), main(), and recurseDir().

int indent = 2

static

Definition at line 50 of file rpmcache.c.

Referenced by cacheStashLatest(), and cacheWalkPathFilter().

Item* items = NULL

static

Definition at line 60 of file rpmcache.c.

Referenced by cacheStashLatest(), and rpmsxParse().

int nbhglobs = 5

static

Definition at line 48 of file rpmcache.c.

Referenced by cacheWalkPathFilter(), freeGlobs(), and initGlobs().

int nitems = 0

static

Definition at line 61 of file rpmcache.c.

Referenced by cacheStashLatest(), freeItems(), fts_build(), Fts_open(), ftsCachePrint(), and ftsCacheUpdate().

int noCache = -1

static

Definition at line 34 of file rpmcache.c.

Referenced by main().

struct poptOption optionsTable[]

static

Initial value:
= {
{ "nolegacy", '\0', POPT_BIT_SET, &vsflags, RPMVSF_NEEDPAYLOAD,
N_("don't verify header+payload signature"), NULL },
{ "cache", '\0', POPT_ARG_VAL, &noCache, 0,
N_("update cache database"), NULL },
{ "nocache", '\0', POPT_ARG_VAL, &noCache, -1,
N_("don't update cache database, only print package paths"), NULL },
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmioFtsPoptTable, 0,
N_("File tree walk options:"),
NULL },
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0,
N_("Common options for all rpm modes and executables:"),
NULL },
POPT_AUTOALIAS
POPT_AUTOHELP
POPT_TABLEEND
}

Definition at line 529 of file rpmcache.c.

Referenced by main().

rpmVSFlags vsflags = 0

static

Definition at line 527 of file rpmcache.c.

Referenced by headerCheck(), main(), rpmcliInstall(), rpmcliQuery(), rpmcliVerify(), rpmErase(), rpmReadPackageFile(), rpmRollback(), rpmts_new(), rpmts_SetVSFlags(), rpmtsRollback(), rpmtsRun(), and rpmtsSetVSFlags().