1 #ifndef _RPMFI_INTERNAL_H
2 #define _RPMFI_INTERNAL_H
4 #include <rpm/header.h>
6 #include <rpm/rpmstrpool.h>
7 #include "lib/fprint.h"
9 #define RPMFIMAGIC 0x09697923
12 * A package filename set.
15 int i; /*!< Current file index. */
16 int j; /*!< Current directory index. */
18 Header h; /*!< Header for file info set (or NULL) */
19 rpmstrPool pool; /*!< String pool of this file info set */
21 rpmsid * bnid; /*!< Index to base name(s) (pool) */
22 rpmsid * dnid; /*!< Index to directory name(s) (pool) */
24 rpmsid * flinks; /*!< Index to file link(s) (pool) */
26 uint32_t * dil; /*!< Directory indice(s) (from header) */
27 rpm_flag_t * fflags; /*!< File flag(s) (from header) */
28 rpm_off_t * fsizes; /*!< File size(s) (from header) */
29 rpm_time_t * fmtimes; /*!< File modification time(s) (from header) */
30 rpm_mode_t * fmodes; /*!< File mode(s) (from header) */
31 rpm_rdev_t * frdevs; /*!< File rdev(s) (from header) */
32 rpm_ino_t * finodes; /*!< File inodes(s) (from header) */
34 rpmsid * fuser; /*!< Index to file owner(s) (misc pool) */
35 rpmsid * fgroup; /*!< Index to file group(s) (misc pool) */
36 rpmsid * flangs; /*!< Index to file lang(s) (misc pool) */
38 char * fstates; /*!< File state(s) (from header) */
40 rpm_color_t * fcolors; /*!< File color bits (header) */
41 char ** fcaps; /*!< File capability strings (header) */
43 char ** cdict; /*!< File class dictionary (header) */
44 rpm_count_t ncdict; /*!< No. of class entries. */
45 uint32_t * fcdictx; /*!< File class dictionary index (header) */
47 uint32_t * ddict; /*!< File depends dictionary (header) */
48 rpm_count_t nddict; /*!< No. of depends entries. */
49 uint32_t * fddictx; /*!< File depends dictionary start (header) */
50 uint32_t * fddictn; /*!< File depends dictionary count (header) */
51 rpm_flag_t * vflags; /*!< File verify flag(s) (from header) */
53 rpm_count_t dc; /*!< No. of directories. */
54 rpm_count_t fc; /*!< No. of files. */
56 rpmfiFlags fiflags; /*!< file info set control flags */
58 struct fingerPrint_s * fps; /*!< File fingerprint(s). */
60 int digestalgo; /*!< File digest algorithm */
61 unsigned char * digests; /*!< File digests in binary. */
63 char * fn; /*!< File name buffer. */
66 rpm_off_t * replacedSizes; /*!< (TR_ADDED) */
68 int nrefs; /*!< Reference count. */
76 * Create and load a file info set.
77 * @param pool shared string pool (or NULL for private pool)
80 * @param flags Flags to control what information is loaded.
81 * @return new file info set
84 rpmfi rpmfiNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags);
87 * Return file info set string pool handle
89 * @return string pool handle (weak reference)
92 rpmstrPool rpmfiPool(rpmfi fi);
95 * Return current base name pool id from file info set.
96 * @param fi file info set
97 * @return current base name id, 0 on invalid
100 rpmsid rpmfiBNId(rpmfi fi);
103 * Return current directory name pool id from file info set.
104 * @param fi file info set
105 * @return current base name id, 0 on invalid
108 rpmsid rpmfiDNId(rpmfi fi);
111 int rpmfiDIIndex(rpmfi fi, int dx);
114 rpmsid rpmfiBNIdIndex(rpmfi fi, int ix);
117 rpmsid rpmfiDNIdIndex(rpmfi fi, int jx);
120 const char * rpmfiBNIndex(rpmfi fi, int ix);
123 const char * rpmfiDNIndex(rpmfi fi, int jx);
126 char * rpmfiFNIndex(rpmfi fi, int ix);
129 rpmVerifyAttrs rpmfiVFlagsIndex(rpmfi fi, int ix);
132 rpmfileState rpmfiFStateIndex(rpmfi fi, int ix);
135 const char * rpmfiFLinkIndex(rpmfi fi, int ix);
138 rpm_loff_t rpmfiFSizeIndex(rpmfi fi, int ix);
141 rpm_color_t rpmfiFColorIndex(rpmfi fi, int ix);
144 const char * rpmfiFClassIndex(rpmfi fi, int ix);
147 uint32_t rpmfiFDependsIndex(rpmfi fi, int ix, const uint32_t ** fddictp);
150 uint32_t rpmfiFNlinkIndex(rpmfi fi, int ix);
153 const char * rpmfiFLangsIndex(rpmfi fi, int ix);
156 rpmfileAttrs rpmfiFFlagsIndex(rpmfi fi, int ix);
159 rpm_mode_t rpmfiFModeIndex(rpmfi fi, int ix);
162 const unsigned char * rpmfiFDigestIndex(rpmfi fi, int ix, int *algo, size_t *len);
165 rpm_rdev_t rpmfiFRdevIndex(rpmfi fi, int ix);
168 rpm_ino_t rpmfiFInodeIndex(rpmfi fi, int ix);
171 rpm_time_t rpmfiFMtimeIndex(rpmfi fi, int ix);
174 const char * rpmfiFUserIndex(rpmfi fi, int ix);
177 const char * rpmfiFGroupIndex(rpmfi fi, int ix);
180 const char * rpmfiFCapsIndex(rpmfi fi, int ix);
183 struct fingerPrint_s *rpmfiFps(rpmfi fi);
186 rpmFileAction rpmfiDecideFateIndex(rpmfi ofi, int oix, rpmfi nfi, int nix,
190 int rpmfiCompareIndex(rpmfi afi, int aix, rpmfi bfi, int bix);
193 int rpmfiConfigConflictIndex(rpmfi fi, int ix);
196 void rpmfiSetFReplacedSizeIndex(rpmfi fi, int ix, rpm_loff_t newsize);
199 rpm_loff_t rpmfiFReplacedSizeIndex(rpmfi fi, int ix);
202 void rpmfiFpLookup(rpmfi fi, fingerPrintCache fpc);
208 #endif /* _RPMFI_INTERNAL_H */