Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

# fprint.h File Reference

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

`#include "rpmhash.h"`
`#include "header.h"`

Go to the source code of this file.

## Defines
#define | fpFree(a) free((void *)(a).baseName)
#define | FP_ENTRY_EQUAL(a, b) (((a)->dev == (b)->dev) && ((a)->ino == (b)->ino))
#define | FP_EQUAL(a, b)
## Typedefs
typedef fprintCache_s * | fingerPrintCache
typedef fingerPrint_s | fingerPrint
## Functions
int | rpmdbFindFpList (rpmdb db, fingerPrint *fpList, dbiIndexSet *matchList, int numItems)
fingerPrintCache | fpCacheCreate (int sizeHint)
| Create finger print cache.
void | fpCacheFree (fingerPrintCache cache)
| Destroy finger print cache.
fingerPrint | fpLookup (fingerPrintCache cache, const char *dirName, const char *baseName, int scareMemory)
| Return finger print of a file path.
unsigned int | fpHashFunction (const void *key)
| Return hash value for a finger print.
int | fpEqual (const void *key1, const void *key2)
| Compare two finger print entries.
void | fpLookupList (fingerPrintCache cache, const char **dirNames, const char **baseNames, const int *dirIndexes, int fileCount, fingerPrint *fpList)
| Return finger prints of an array of file paths.
void | fpLookupHeader (fingerPrintCache cache, Header h, fingerPrint *fpList)
| Return finger prints of all file names in header.

## Detailed Description

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

Definition in file fprint.h.

## Define Documentation

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

| Definition at line 58 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)) \
            ) \
        )
Definition at line 61 of file fprint.h. Referenced by fpEqual(), handleOverlappedFiles(), rpmdbFindByFile(), and rpmdbFindFpList().

#define fpFree | ( | a |  | ) | free((void *)(a).baseName)

| Definition at line 55 of file fprint.h.

## Typedef Documentation

typedef struct fingerPrint_s fingerPrint

| Todo: Convert to pointer and make abstract. Definition at line 19 of file fprint.h.

typedef struct fprintCache_s* fingerPrintCache

| Definition at line 14 of file fprint.h.

## Function Documentation

fingerPrintCache fpCacheCreate | ( | int | sizeHint | ) |

  | Create finger print cache. Parameters:
  | sizeHint | number of elements expected
Returns: pointer to initialized fingerprint cache Definition at line 13 of file fprint.c. References hashEqualityString(), hashFunctionString(), fprintCache_s::ht, htCreate(), and xmalloc(). Referenced by rpmdbFindByFile(), rpmdbFindFpList(), and rpmRunTransactions().

void fpCacheFree | ( | fingerPrintCache | cache | ) |

  | Destroy finger print cache. Parameters:
  | cache | pointer to fingerprint cache
Definition at line 23 of file fprint.c. References fprintCache_s::ht, and htFree(). Referenced by rpmdbFindByFile(), rpmdbFindFpList(), and rpmRunTransactions().

int fpEqual | ( | const void * | key1,
|  | const void * | key2
| ) |

  | Compare two finger print entries. exactly equivalent to FP_EQUAL macro. Parameters:
  | key1 | finger print 1
  | key2 | finger print 2
Returns: result of comparing key1 and key2 Definition at line 209 of file fprint.c. References FP_EQUAL. Referenced by rpmRunTransactions().

unsigned int fpHashFunction | ( | const void * | key | ) |

  | Return hash value for a finger print. Hash based on dev and inode only! Parameters:
  | key | pointer to finger print entry
Returns: hash value Definition at line 191 of file fprint.c. References fingerPrint_s::baseName, fprintCacheEntry_s::dev, fingerPrint_s::entry, and fprintCacheEntry_s::ino. Referenced by rpmRunTransactions().

fingerPrint fpLookup | ( | fingerPrintCache | cache,
|  | const char * | dirName,
|  | const char * | baseName,
|  | int | scareMemory
| ) |

  | Return finger print of a file path. Parameters:
  | cache | pointer to fingerprint cache
  | dirName | leading directory name of file path
  | baseName | base name of file path
  | scareMemory |
Returns: pointer to the finger print associated with a file path. Definition at line 185 of file fprint.c. References doLookup(). Referenced by rpmdbFindByFile().

void fpLookupHeader | ( | fingerPrintCache | cache,
|  | Header | h,
|  | fingerPrint * | fpList
| ) |

  | Return finger prints of all file names in header. Warning: : scareMemory is assumed! Parameters:
  | cache | pointer to fingerprint cache
  | h | package header
  Return values:
  | fpList | pointer to array of finger prints
Definition at line 247 of file fprint.c. References fpLookupList(), RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, and RPMTAG_DIRNAMES.

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

  | Return finger prints of an array of file paths. Warning: : scareMemory is assumed! Parameters:
  | cache | pointer to fingerprint cache
  | dirNames | directory names
  | baseNames | file base names
  | dirIndexes | index into dirNames for each baseNames
  | fileCount | number of file entries
  Return values:
  | fpList | pointer to array of finger prints
Definition at line 227 of file fprint.c. References doLookup(). Referenced by fpLookupHeader(), rpmdbFindFpList(), and rpmRunTransactions().