1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
#ifndef _RPMFI_INTERNAL_H
#define _RPMFI_INTERNAL_H
#include <rpm/header.h>
#include <rpm/rpmfi.h>
#include <rpm/rpmstrpool.h>
#include "lib/fprint.h"
#define RPMFIMAGIC 0x09697923
/**
* A package filename set.
*/
struct rpmfi_s {
int i; /*!< Current file index. */
int j; /*!< Current directory index. */
Header h; /*!< Header for file info set (or NULL) */
rpmstrPool pool; /*!< String pool of this file info set */
rpmsid * bnid; /*!< Index to base name(s) (pool) */
rpmsid * dnid; /*!< Index to directory name(s) (pool) */
rpmsid * flinks; /*!< Index to file link(s) (pool) */
uint32_t * dil; /*!< Directory indice(s) (from header) */
rpm_flag_t * fflags; /*!< File flag(s) (from header) */
rpm_off_t * fsizes; /*!< File size(s) (from header) */
rpm_time_t * fmtimes; /*!< File modification time(s) (from header) */
rpm_mode_t * fmodes; /*!< File mode(s) (from header) */
rpm_rdev_t * frdevs; /*!< File rdev(s) (from header) */
rpm_ino_t * finodes; /*!< File inodes(s) (from header) */
rpmsid * fuser; /*!< Index to file owner(s) (misc pool) */
rpmsid * fgroup; /*!< Index to file group(s) (misc pool) */
rpmsid * flangs; /*!< Index to file lang(s) (misc pool) */
char * fstates; /*!< File state(s) (from header) */
rpm_color_t * fcolors; /*!< File color bits (header) */
char ** fcaps; /*!< File capability strings (header) */
char ** cdict; /*!< File class dictionary (header) */
rpm_count_t ncdict; /*!< No. of class entries. */
uint32_t * fcdictx; /*!< File class dictionary index (header) */
uint32_t * ddict; /*!< File depends dictionary (header) */
rpm_count_t nddict; /*!< No. of depends entries. */
uint32_t * fddictx; /*!< File depends dictionary start (header) */
uint32_t * fddictn; /*!< File depends dictionary count (header) */
rpm_flag_t * vflags; /*!< File verify flag(s) (from header) */
rpm_count_t dc; /*!< No. of directories. */
rpm_count_t fc; /*!< No. of files. */
rpmfiFlags fiflags; /*!< file info set control flags */
struct fingerPrint_s * fps; /*!< File fingerprint(s). */
int digestalgo; /*!< File digest algorithm */
unsigned char * digests; /*!< File digests in binary. */
char * fn; /*!< File name buffer. */
char ** apath;
rpm_off_t * replacedSizes; /*!< (TR_ADDED) */
int magic;
int nrefs; /*!< Reference count. */
};
#ifdef __cplusplus
extern "C" {
#endif
/** \ingroup rpmfi
* Create and load a file info set.
* @param pool shared string pool (or NULL for private pool)
* @param h header
* @param tagN unused
* @param flags Flags to control what information is loaded.
* @return new file info set
*/
RPM_GNUC_INTERNAL
rpmfi rpmfiNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags);
/** \ingroup rpmfi
* Return file info set string pool handle
* @param fi file info
* @return string pool handle (weak reference)
*/
RPM_GNUC_INTERNAL
rpmstrPool rpmfiPool(rpmfi fi);
/** \ingroup rpmfi
* Return current base name pool id from file info set.
* @param fi file info set
* @return current base name id, 0 on invalid
*/
RPM_GNUC_INTERNAL
rpmsid rpmfiBNId(rpmfi fi);
/** \ingroup rpmfi
* Return current directory name pool id from file info set.
* @param fi file info set
* @return current base name id, 0 on invalid
*/
RPM_GNUC_INTERNAL
rpmsid rpmfiDNId(rpmfi fi);
RPM_GNUC_INTERNAL
int rpmfiDIIndex(rpmfi fi, int dx);
RPM_GNUC_INTERNAL
rpmsid rpmfiBNIdIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpmsid rpmfiDNIdIndex(rpmfi fi, int jx);
RPM_GNUC_INTERNAL
const char * rpmfiBNIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiDNIndex(rpmfi fi, int jx);
RPM_GNUC_INTERNAL
char * rpmfiFNIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpmVerifyAttrs rpmfiVFlagsIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpmfileState rpmfiFStateIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiFLinkIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpm_loff_t rpmfiFSizeIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpm_color_t rpmfiFColorIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiFClassIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
uint32_t rpmfiFDependsIndex(rpmfi fi, int ix, const uint32_t ** fddictp);
RPM_GNUC_INTERNAL
uint32_t rpmfiFNlinkIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiFLangsIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpmfileAttrs rpmfiFFlagsIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpm_mode_t rpmfiFModeIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const unsigned char * rpmfiFDigestIndex(rpmfi fi, int ix, int *algo, size_t *len);
RPM_GNUC_INTERNAL
rpm_rdev_t rpmfiFRdevIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpm_ino_t rpmfiFInodeIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
rpm_time_t rpmfiFMtimeIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiFUserIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiFGroupIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
const char * rpmfiFCapsIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
struct fingerPrint_s *rpmfiFps(rpmfi fi);
RPM_GNUC_INTERNAL
rpmFileAction rpmfiDecideFateIndex(rpmfi ofi, int oix, rpmfi nfi, int nix,
int skipMissing);
RPM_GNUC_INTERNAL
int rpmfiCompareIndex(rpmfi afi, int aix, rpmfi bfi, int bix);
RPM_GNUC_INTERNAL
int rpmfiConfigConflictIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
void rpmfiSetFReplacedSizeIndex(rpmfi fi, int ix, rpm_loff_t newsize);
RPM_GNUC_INTERNAL
rpm_loff_t rpmfiFReplacedSizeIndex(rpmfi fi, int ix);
RPM_GNUC_INTERNAL
void rpmfiFpLookup(rpmfi fi, fingerPrintCache fpc);
#ifdef __cplusplus
}
#endif
#endif /* _RPMFI_INTERNAL_H */
|