1 #ifndef _RPMFI_INTERNAL_H
2 #define _RPMFI_INTERNAL_H
4 #include <rpm/header.h>
6 #include "lib/fsm.h" /* for FSM_t */
7 #include "lib/fprint.h"
10 * This limits maximum unique strings (user + group names) from packages to
11 * 65535, should be plenty but easy to bump if ever needed.
13 typedef uint16_t scidx_t;
14 typedef struct strcache_s *strcache;
16 #define RPMFIMAGIC 0x09697923
19 * A package filename set.
22 int i; /*!< Current file index. */
23 int j; /*!< Current directory index. */
25 Header h; /*!< Header for file info set (or NULL) */
27 const char ** bnl; /*!< Base name(s) (from header) */
28 const char ** dnl; /*!< Directory name(s) (from header) */
30 strcache flinkcache; /*!< File link cache */
31 scidx_t * flinks; /*!< Index to file link(s) cache */
32 scidx_t * flangs; /*!< Index to file lang(s) cache */
34 uint32_t * dil; /*!< Directory indice(s) (from header) */
35 const rpm_flag_t * fflags; /*!< File flag(s) (from header) */
36 const rpm_off_t * fsizes; /*!< File size(s) (from header) */
37 const rpm_time_t * fmtimes; /*!< File modification time(s) (from header) */
38 rpm_mode_t * fmodes; /*!< File mode(s) (from header) */
39 const rpm_rdev_t * frdevs; /*!< File rdev(s) (from header) */
40 const rpm_ino_t * finodes; /*!< File inodes(s) (from header) */
42 scidx_t *fuser; /*!< Index to file owner(s) cache */
43 scidx_t *fgroup; /*!< Index to file group(s) cache */
45 char * fstates; /*!< File state(s) (from header) */
47 const rpm_color_t * fcolors;/*!< File color bits (header) */
48 strcache fcapcache; /*!< File capabilities cache */
49 scidx_t * fcaps; /*!< Index to file cap(s) cache */
51 const char ** cdict; /*!< File class dictionary (header) */
52 rpm_count_t ncdict; /*!< No. of class entries. */
53 const uint32_t * fcdictx; /*!< File class dictionary index (header) */
55 const uint32_t * ddict; /*!< File depends dictionary (header) */
56 rpm_count_t nddict; /*!< No. of depends entries. */
57 const uint32_t * fddictx; /*!< File depends dictionary start (header) */
58 const uint32_t * fddictn; /*!< File depends dictionary count (header) */
59 const rpm_flag_t * vflags; /*!< File verify flag(s) (from header) */
61 rpm_count_t dc; /*!< No. of directories. */
62 rpm_count_t fc; /*!< No. of files. */
64 rpmfiFlags fiflags; /*!< file info set control flags */
65 headerGetFlags scareFlags; /*!< headerGet flags wrt scareMem */
67 struct fingerPrint_s * fps; /*!< File fingerprint(s). */
69 pgpHashAlgo digestalgo; /*!< File digest algorithm */
70 unsigned char * digests; /*!< File digests in binary. */
72 char * fn; /*!< File name buffer. */
75 rpm_loff_t archiveSize;
77 FSM_t fsm; /*!< File state machine data. */
78 rpm_off_t * replacedSizes; /*!< (TR_ADDED) */
80 int nrefs; /*!< Reference count. */
84 int rpmfiDIIndex(rpmfi fi, int dx);
87 const char * rpmfiBNIndex(rpmfi fi, int ix);
90 const char * rpmfiDNIndex(rpmfi fi, int jx);
93 const char * rpmfiFNIndex(rpmfi fi, int ix);
96 rpmVerifyAttrs rpmfiVFlagsIndex(rpmfi fi, int ix);
99 rpmfileState rpmfiFStateIndex(rpmfi fi, int ix);
102 const char * rpmfiFLinkIndex(rpmfi fi, int ix);
105 rpm_loff_t rpmfiFSizeIndex(rpmfi fi, int ix);
108 rpm_color_t rpmfiFColorIndex(rpmfi fi, int ix);
111 const char * rpmfiFClassIndex(rpmfi fi, int ix);
114 uint32_t rpmfiFDependsIndex(rpmfi fi, int ix, const uint32_t ** fddictp);
117 uint32_t rpmfiFNlinkIndex(rpmfi fi, int ix);
120 const char * rpmfiFLangsIndex(rpmfi fi, int ix);
123 rpmfileAttrs rpmfiFFlagsIndex(rpmfi fi, int ix);
126 rpm_mode_t rpmfiFModeIndex(rpmfi fi, int ix);
129 const unsigned char * rpmfiFDigestIndex(rpmfi fi, int ix, pgpHashAlgo *algo, size_t *len);
132 rpm_rdev_t rpmfiFRdevIndex(rpmfi fi, int ix);
135 rpm_ino_t rpmfiFInodeIndex(rpmfi fi, int ix);
138 rpm_time_t rpmfiFMtimeIndex(rpmfi fi, int ix);
141 const char * rpmfiFUserIndex(rpmfi fi, int ix);
144 const char * rpmfiFGroupIndex(rpmfi fi, int ix);
147 const char * rpmfiFCapsIndex(rpmfi fi, int ix);
150 struct fingerPrint_s *rpmfiFpsIndex(rpmfi fi, int ix);
153 void rpmfiSetFReplacedSize(rpmfi fi, rpm_loff_t newsize);
156 rpm_loff_t rpmfiFReplacedSize(rpmfi fi);
159 void rpmfiFpLookup(rpmfi fi, fingerPrintCache fpc);
161 /* XXX can't be internal as build code needs this */
162 FSM_t rpmfiFSM(rpmfi fi);
163 #endif /* _RPMFI_INTERNAL_H */