rpm  5.4.14
Data Structures | Macros | Typedefs | Functions
fprint.h File Reference

Identify a file name path by a unique "finger print". More...

#include "rpmhash.h"
Include dependency graph for fprint.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  fingerPrint_s
 Associates a trailing sub-directory and final base name with an existing directory finger print. More...
 

Macros

#define FP_ENTRY_EQUAL(a, b)   (((a)->dev == (b)->dev) && ((a)->ino == (b)->ino))
 
#define FP_EQUAL(a, b)
 

Typedefs

typedef struct fprintCache_s * fingerPrintCache
 
typedef struct fingerPrint_s fingerPrint
 

Functions

fingerPrintCache fpCacheCreate (int sizeHint)
 Create finger print cache. More...
 
fingerPrintCache fpCacheFree (fingerPrintCache cache)
 Destroy finger print cache. More...
 
fingerPrint fpLookup (fingerPrintCache cache, const char *dirName, const char *baseName, int scareMem)
 Return finger print of a file path. More...
 
uint32_t fpHashFunction (uint32_t h, const void *data, size_t size)
 Return hash value for a finger print. More...
 
int fpEqual (const void *key1, const void *key2)
 Compare two finger print entries. More...
 
void fpLookupList (fingerPrintCache cache, const char **dirNames, const char **baseNames, const rpmuint32_t *dirIndexes, rpmuint32_t fileCount, fingerPrint *fpList)
 Return finger prints of an array of file paths. More...
 
void fpLookupSubdir (hashTable symlinks, hashTable fphash, fingerPrintCache fpc, void *_p, int filenr)
 Check file for to be installed symlinks in their path, correct their fingerprint and add it to newht. More...
 

Detailed Description

Identify a file name path by a unique "finger print".

Definition in file fprint.h.

Macro Definition Documentation

#define FP_ENTRY_EQUAL (   a,
  b 
)    (((a)->dev == (b)->dev) && ((a)->ino == (b)->ino))

Definition at line 62 of file fprint.h.

#define FP_EQUAL (   a,
  b 
)
Value:
( \
FP_ENTRY_EQUAL((a).entry, (b).entry) && \
!strcmp((a).baseName, (b).baseName) && ( \
((a).subDir == (b).subDir) || \
((a).subDir && (b).subDir && !strcmp((a).subDir, (b).subDir)) \
) \
)
return strcmp(ame->name, bme->name)
#define FP_ENTRY_EQUAL(a, b)
Definition: fprint.h:62
char * b
Definition: macro.c:746

Definition at line 66 of file fprint.h.

Referenced by fpEqual().

Typedef Documentation

typedef struct fingerPrint_s fingerPrint
Todo:
Convert to pointer and make abstract.

Definition at line 18 of file fprint.h.

typedef struct fprintCache_s* fingerPrintCache

Definition at line 13 of file fprint.h.

Function Documentation

fingerPrintCache fpCacheCreate ( int  sizeHint)

Create finger print cache.

Parameters
sizeHintnumber of elements expected
Returns
pointer to initialized fingerprint cache

Definition at line 21 of file fprint.c.

References assert(), htCreate(), NULL, and xmalloc.

Referenced by rpmtsPrepare().

fingerPrintCache fpCacheFree ( fingerPrintCache  cache)

Destroy finger print cache.

Parameters
cachepointer to fingerprint cache
Returns
NULL always

Definition at line 31 of file fprint.c.

References htFree(), and NULL.

Referenced by rpmtsPrepare().

int fpEqual ( const void key1,
const void key2 
)

Compare two finger print entries.

This routine is exactly equivalent to the FP_EQUAL macro.

Parameters
key1finger print 1
key2finger print 2
Returns
result of comparing key1 and key2

Definition at line 212 of file fprint.c.

References FP_EQUAL.

Referenced by rpmtsAddFingerprints(), and rpmtsPrepare().

uint32_t fpHashFunction ( uint32_t  h,
const void data,
size_t  size 
)

Return hash value for a finger print.

Hash based on dev and inode only!

Parameters
hhash initial value
*datafinger print entry
sizesize of fingerprint entry
Returns
hash value
fingerPrint fpLookup ( fingerPrintCache  cache,
const char *  dirName,
const char *  baseName,
int  scareMem 
)

Return finger print of a file path.

Parameters
cachepointer to fingerprint cache
dirNameleading directory name of file path
baseNamebase name of file path
scareMem
Returns
pointer to the finger print associated with a file path.

Definition at line 190 of file fprint.c.

References doLookup().

Referenced by fpLookupSubdir(), and rpmtsCheckInstalledFiles().

void fpLookupList ( fingerPrintCache  cache,
const char **  dirNames,
const char **  baseNames,
const rpmuint32_t dirIndexes,
rpmuint32_t  fileCount,
fingerPrint fpList 
)

Return finger prints of an array of file paths.

Warning
: scareMem is assumed!
Parameters
cachepointer to fingerprint cache
dirNamesdirectory names
baseNamesfile base names
dirIndexesindex into dirNames for each baseNames
fileCountnumber of file entries
Return values
*fpListarray of finger prints

Definition at line 230 of file fprint.c.

References fingerPrint_s::baseName, doLookup(), fingerPrint_s::entry, i, fingerPrint_s::subDir, and unsigned.

Referenced by rpmfiFpLookup().

void fpLookupSubdir ( hashTable  symlinks,
hashTable  fphash,
fingerPrintCache  fpc,
void _p,
int  filenr 
)

Check file for to be installed symlinks in their path, correct their fingerprint and add it to newht.

Parameters
hthash table containing all files fingerprints
newhthash table to add the corrected fingerprints
fpcfingerprint cache
_ptransaction element
filenrthe number of the file we are dealing with

Definition at line 299 of file fprint.c.

References _free(), assert(), fingerPrint_s::baseName, exit, fi, fpLookup(), htAddEntry(), htGetEntry(), i, ns, NULL, p, recs, rpmGetPath(), s, se, t, te, void, xmalloc, and xstrdup().

Referenced by rpmtsAddFingerprints().