6 * File info set iterator API.
9 #include <rpm/rpmtypes.h>
10 #include <rpm/rpmfiles.h>
11 #include <rpm/rpmarchive.h>
19 * Reference a file info set iterator instance.
20 * @param fi file info set iterator
21 * @return new file info set iterator reference
23 rpmfi rpmfiLink (rpmfi fi);
26 * Return file count from file info set iterator.
27 * @param fi file info set iterator
28 * @return current file count
30 rpm_count_t rpmfiFC(rpmfi fi);
33 * Return current file index from file info set iterator.
34 * @param fi file info set iterator
35 * @return current file index
37 int rpmfiFX(rpmfi fi);
40 * Set current file index in file info set iterator.
41 * @param fi file info set iterator
42 * @param fx new file index
43 * @return current file index
45 int rpmfiSetFX(rpmfi fi, int fx);
48 * Return directory count from file info set iterator.
49 * @param fi file info set iterator
50 * @return current directory count
52 rpm_count_t rpmfiDC(rpmfi fi);
55 * Return current directory index from file info set iterator.
56 * @param fi file info set iterator
57 * @return current directory index
59 int rpmfiDX(rpmfi fi);
62 * Set current directory index in file info set iterator.
63 * @param fi file info set iterator
64 * @param dx new directory index
65 * @return current directory index
67 int rpmfiSetDX(rpmfi fi, int dx);
70 * Return current base name from file info set iterator.
71 * @param fi file info set iterator
72 * @return current base name, NULL on invalid
74 const char * rpmfiBN(rpmfi fi);
77 * Return current directory name from file info set iterator.
78 * @param fi file info set iterator
79 * @return current directory, NULL on invalid
81 const char * rpmfiDN(rpmfi fi);
84 * Return current file name from file info set iterator.
85 * @param fi file info set iterator
86 * @return current file name
88 const char * rpmfiFN(rpmfi fi);
91 * Return file index of the given file name or -1 if file is not in the rpmfi.
92 * The file name may have "." prefixed but is then interpreted as a global
93 * path without the prefixing "."
94 * @param fi file info set iterator
96 * @return file index or -1
98 int rpmfiFindFN(rpmfi fi, const char * fn);
101 * Return current original base name from file info set iterator.
102 * @param fi file info set iterator
103 * @return current base name, NULL on invalid
105 const char * rpmfiOBN(rpmfi fi);
108 * Return current original directory name from file info set iterator.
109 * @param fi file info set iterator
110 * @return current directory, NULL on invalid
112 const char * rpmfiODN(rpmfi fi);
115 * Return current original file name from file info set iterator.
116 * @param fi file info set iterator
117 * @return current file name
119 const char * rpmfiOFN(rpmfi fi);
122 * Return file index of the given original file name or -1 if file is not
123 * in the rpmfi. The file name may have "." prefixed but is then interpreted
124 * as a global path without the prefixing "."
125 * @param fi file info set iterator
126 * @param fn file name
127 * @return file index or -1
129 int rpmfiFindOFN(rpmfi fi, const char * fn);
132 * Return current file flags from file info set iterator.
133 * @param fi file info set iterator
134 * @return current file flags, 0 on invalid
136 rpmfileAttrs rpmfiFFlags(rpmfi fi);
139 * Return current file verify flags from file info set iterator.
140 * @param fi file info set iterator
141 * @return current file verify flags, 0 on invalid
143 rpmVerifyAttrs rpmfiVFlags(rpmfi fi);
146 * Return current file mode from file info set iterator.
147 * @param fi file info set iterator
148 * @return current file mode, 0 on invalid
150 rpm_mode_t rpmfiFMode(rpmfi fi);
153 * Return current file state from file info set iterator.
154 * @param fi file info set iterator
155 * @return current file state, 0 on invalid
157 rpmfileState rpmfiFState(rpmfi fi);
160 * Return digest algorithm of a file info set iterator.
161 * @param fi file info set iterator
162 * @return digest algorithm of file info set iterator, 0 on invalid
164 int rpmfiDigestAlgo(rpmfi fi);
167 * Return current file (binary) digest of file info set iterator.
168 * @param fi file info set iterator
169 * @retval algo digest hash algorithm used (pass NULL to ignore)
170 * @retval diglen digest hash length (pass NULL to ignore)
171 * @return current file digest, NULL on invalid
173 const unsigned char * rpmfiFDigest(rpmfi fi, int *algo, size_t *diglen);
176 * Return current file (hex) digest of file info set iterator.
177 * The file info set iterator stores file digests in binary format to conserve
178 * memory, this converts the binary data back to hex presentation used in
180 * @param fi file info set iterator
181 * @retval algo digest hash algorithm used (pass NULL to ignore)
182 * @return current file digest (malloc'ed), NULL on invalid
184 char * rpmfiFDigestHex(rpmfi fi, int *algo);
187 * Return current file (binary) signature of file info set iterator.
188 * @param fi file info set iterator
189 * @retval siglen signature length (pass NULL to ignore)
190 * @return current file signature, NULL on invalid
192 const unsigned char * rpmfiFSignature(rpmfi fi, size_t *siglen);
195 * Return current file linkto (i.e. symlink(2) target) from file info set iterator.
196 * @param fi file info set iterator
197 * @return current file linkto, NULL on invalid
199 const char * rpmfiFLink(rpmfi fi);
202 * Return current file size from file info set iterator.
203 * @param fi file info set iterator
204 * @return current file size, 0 on invalid
206 rpm_loff_t rpmfiFSize(rpmfi fi);
209 * Return current file rdev from file info set iterator.
210 * @param fi file info set iterator
211 * @return current file rdev, 0 on invalid
213 rpm_rdev_t rpmfiFRdev(rpmfi fi);
216 * Return current file inode from file info set iterator.
217 * @param fi file info set iterator
218 * @return current file inode, 0 on invalid
220 rpm_ino_t rpmfiFInode(rpmfi fi);
223 * Return union of all file color bits from file info set iterator.
224 * @param fi file info set iterator
225 * @return current color
227 rpm_color_t rpmfiColor(rpmfi fi);
230 * Return current file color bits from file info set iterator.
231 * @param fi file info set iterator
232 * @return current file color
234 rpm_color_t rpmfiFColor(rpmfi fi);
237 * Return current file class from file info set iterator.
238 * @param fi file info set iterator
239 * @return current file class, 0 on invalid
241 const char * rpmfiFClass(rpmfi fi);
244 * Return current file depends dictionary from file info set iterator.
245 * @param fi file info set iterator
246 * @retval *fddictp file depends dictionary array (or NULL)
247 * @return no. of file depends entries, 0 on invalid
249 uint32_t rpmfiFDepends(rpmfi fi,
250 const uint32_t ** fddictp);
253 * Return (calculated) current file nlink count from file info set iterator.
254 * @param fi file info set iterator
255 * @return current file nlink count, 0 on invalid
257 uint32_t rpmfiFNlink(rpmfi fi);
261 * Return (calculated) current file nlink count from file info set iterator.
262 * @param fi file info set iterator
263 * @param files returns array of file ids hardlinked including ix,
264 NULL for nlink count == 1
265 * @return current file nlink count, 0 on invalid
267 uint32_t rpmfiFLinks(rpmfi fi, const int ** files);
270 * Return current file modify time from file info set iterator.
271 * @param fi file info set iterator
272 * @return current file modify time, 0 on invalid
274 rpm_time_t rpmfiFMtime(rpmfi fi);
277 * Return current file owner from file info set iterator.
278 * @param fi file info set iterator
279 * @return current file owner, NULL on invalid
281 const char * rpmfiFUser(rpmfi fi);
284 * Return current file group from file info set iterator.
285 * @param fi file info set iterator
286 * @return current file group, NULL on invalid
288 const char * rpmfiFGroup(rpmfi fi);
291 * Return textual representation of current file capabilities
292 * from file info set iterator. See cap_from_text(3) for details.
293 * @param fi file info set iterator
294 * @return file capability description, "" for no capabilities
295 * and NULL on invalid
297 const char * rpmfiFCaps(rpmfi fi);
300 * Return current file language(s) from file info set iterator.
301 * @param fi file info set iterator
302 * @return current file language(s), NULL on invalid
304 const char * rpmfiFLangs(rpmfi fi);
307 * Map file stat(2) info.
308 * @param fi file info iterator
310 * @retval sb mapped stat(2) data
312 int rpmfiStat(rpmfi fi, int flags, struct stat *sb);
315 * Return next file iterator index.
316 * @param fi file info set iterator
317 * @return file iterator index, -1 on termination
319 int rpmfiNext(rpmfi fi);
322 * Initialize file iterator index.
323 * @param fi file info set iterator
324 * @param fx file iterator index
325 * @return file info set iterator
327 rpmfi rpmfiInit(rpmfi fi, int fx);
330 * Return next directory iterator index.
331 * @param fi file info set iterator
332 * @return directory iterator index, -1 on termination
334 int rpmfiNextD(rpmfi fi);
337 * Initialize directory iterator index.
338 * @param fi file info set iterator
339 * @param dx directory iterator index
340 * @return file info set iterator, NULL if dx is out of range
342 rpmfi rpmfiInitD(rpmfi fi, int dx);
345 * Destroy a file info set iterator.
346 * @param fi file info set iterator
347 * @return NULL always
349 rpmfi rpmfiFree(rpmfi fi);
352 * Create and load a file info set iterator.
353 * @param pool shared string pool (or NULL for private pool)
356 * @param flags Flags to control what information is loaded.
357 * @return new file info set iterator
359 rpmfi rpmfiNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags);
362 * Create and load a file info set iterator.
366 * @param flags Flags to control what information is loaded.
367 * @return new file info set iterator
369 rpmfi rpmfiNew(const rpmts ts, Header h, rpmTagVal tagN, rpmfiFlags flags);
372 * Return file type from mode_t.
373 * @param mode file mode bits (from header)
376 rpmFileTypes rpmfiWhatis(rpm_mode_t mode);
379 * Return file info comparison.
380 * @param afi 1st file info
381 * @param bfi 2nd file info
382 * @return 0 if identical
384 int rpmfiCompare(const rpmfi afi, const rpmfi bfi);
387 * Verify file attributes (including digest).
388 * @param fi file info iterator
389 * @param omitMask bit(s) to disable verify checks
390 * @return bit(s) to indicate failure (ie 0 for passed verify)
392 rpmVerifyAttrs rpmfiVerify(rpmfi fi, rpmVerifyAttrs omitMask);