rpm  4.15.1
rpmfiles.h
Go to the documentation of this file.
1 #ifndef _RPMFILES_H
2 #define _RPMFILES_H
3 
8 #include <sys/types.h>
9 #include <sys/stat.h>
10 #include <unistd.h>
11 
12 #include <rpm/rpmtypes.h>
13 #include <rpm/rpmpgp.h>
14 
22 typedef enum rpmFileTypes_e {
23  PIPE = 1,
24  CDEV = 2,
25  XDIR = 4,
26  BDEV = 6,
27  REG = 8,
28  LINK = 10,
29  SOCK = 12
30 } rpmFileTypes;
31 
35 typedef enum rpmfileState_e {
36  RPMFILE_STATE_MISSING = -1, /* used for unavailable data */
42 } rpmfileState;
43 
44 #define RPMFILE_IS_INSTALLED(_x) ((_x) == RPMFILE_STATE_NORMAL || (_x) == RPMFILE_STATE_NETSHARED)
45 
51  RPMFILE_CONFIG = (1 << 0),
52  RPMFILE_DOC = (1 << 1),
53  RPMFILE_ICON = (1 << 2),
54  RPMFILE_MISSINGOK = (1 << 3),
55  RPMFILE_NOREPLACE = (1 << 4),
56  RPMFILE_SPECFILE = (1 << 5),
57  RPMFILE_GHOST = (1 << 6),
58  RPMFILE_LICENSE = (1 << 7),
59  RPMFILE_README = (1 << 8),
60  /* bits 9-10 unused */
61  RPMFILE_PUBKEY = (1 << 11),
62  RPMFILE_ARTIFACT = (1 << 12),
63  RPMFILE_OPTIONAL = (1 << 13),
64 };
65 
67 
68 #define RPMFILE_ALL ~(RPMFILE_NONE)
69 
76  RPMVERIFY_MD5 = (1 << 0),
78  RPMVERIFY_FILESIZE = (1 << 1),
79  RPMVERIFY_LINKTO = (1 << 2),
80  RPMVERIFY_USER = (1 << 3),
81  RPMVERIFY_GROUP = (1 << 4),
82  RPMVERIFY_MTIME = (1 << 5),
83  RPMVERIFY_MODE = (1 << 6),
84  RPMVERIFY_RDEV = (1 << 7),
85  RPMVERIFY_CAPS = (1 << 8),
86  /* bits 9-14 unused, reserved for rpmVerifyAttrs */
87  RPMVERIFY_CONTEXTS = (1 << 15),
88  /* bits 16-22 used in rpmVerifyFlags */
89  /* bits 23-27 used in rpmQueryFlags */
91  RPMVERIFY_READFAIL = (1 << 29),
92  RPMVERIFY_LSTATFAIL = (1 << 30),
94 };
95 
97 
98 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
99 #define RPMVERIFY_FAILURES \
100  (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
101 
105 typedef enum rpmFileAction_e {
107  FA_CREATE = 1,
108  FA_COPYIN = 2,
110  FA_BACKUP = 4,
111  FA_SAVE = 5,
112  FA_SKIP = 6,
114  FA_ERASE = 8,
118  FA_TOUCH = 12,
119  /* bits 16-31 reserved */
120 } rpmFileAction;
121 
122 #define XFA_SKIPPING(_a) \
123  ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
124 
129  char * oldPath;
130  char * newPath;
131 };
132 
135  RPMFI_KEEPHEADER = (1 << 0),
136  RPMFI_NOFILECLASS = (1 << 1),
137  RPMFI_NOFILEDEPS = (1 << 2),
138  RPMFI_NOFILELANGS = (1 << 3),
139  RPMFI_NOFILEUSER = (1 << 4),
140  RPMFI_NOFILEGROUP = (1 << 5),
141  RPMFI_NOFILEMODES = (1 << 6),
142  RPMFI_NOFILESIZES = (1 << 7),
143  RPMFI_NOFILECAPS = (1 << 8),
145  RPMFI_NOFILEDIGESTS = (1 << 10),
146  RPMFI_NOFILEMTIMES = (1 << 11),
147  RPMFI_NOFILERDEVS = (1 << 12),
148  RPMFI_NOFILEINODES = (1 << 13),
149  RPMFI_NOFILESTATES = (1 << 14),
150  RPMFI_NOFILECOLORS = (1 << 15),
152  RPMFI_NOFILEFLAGS = (1 << 17),
154 };
155 
157 
158 #define RPMFI_FLAGS_ERASE \
159  (RPMFI_NOFILECLASS | RPMFI_NOFILELANGS | \
160  RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
161  RPMFI_NOFILEVERIFYFLAGS)
162 
163 #define RPMFI_FLAGS_INSTALL \
164  (RPMFI_NOFILECLASS | RPMFI_NOFILEVERIFYFLAGS)
165 
166 #define RPMFI_FLAGS_VERIFY \
167  (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
168  RPMFI_NOFILECOLORS)
169 
170 #define RPMFI_FLAGS_QUERY \
171  (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
172  RPMFI_NOFILECOLORS | RPMFI_NOFILEVERIFYFLAGS)
173 
174 #define RPMFI_FLAGS_FILETRIGGER \
175  (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
176  RPMFI_NOFILEUSER | RPMFI_NOFILEGROUP | RPMFI_NOFILEMODES | \
177  RPMFI_NOFILESIZES | RPMFI_NOFILECAPS | RPMFI_NOFILELINKTOS | \
178  RPMFI_NOFILEDIGESTS | RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
179  RPMFI_NOFILEINODES | RPMFI_NOFILECOLORS | \
180  RPMFI_NOFILEVERIFYFLAGS | RPMFI_NOFILEFLAGS)
181 
182 #define RPMFI_FLAGS_ONLY_FILENAMES \
183  (RPMFI_FLAGS_FILETRIGGER | RPMFI_NOFILESTATES)
184 
185 typedef enum rpmFileIter_e {
193 } rpmFileIter;
194 
195 #define RPMFILEITERMAX 6
196 
197 #ifdef __cplusplus
198 extern "C" {
199 #endif
200 
210 
217 
224 
231 
238 
247 int rpmfilesFindFN(rpmfiles files, const char * fn);
248 
257 int rpmfilesFindOFN(rpmfiles files, const char * fn);
258 
259 rpmfi rpmfilesIter(rpmfiles files, int itype);
260 
267 
274 
283 int rpmfilesCompare(rpmfiles afi, int aix, rpmfiles bfi, int bix);
284 
291 const char * rpmfilesBN(rpmfiles fi, int ix);
292 
304 const char * rpmfilesDN(rpmfiles fi, int jx);
305 
312 int rpmfilesDI(rpmfiles fi, int ix);
313 
320 char * rpmfilesFN(rpmfiles fi, int ix);
321 
328 int rpmfilesODI(rpmfiles fi, int ix);
329 
336 const char * rpmfilesOBN(rpmfiles fi, int ix);
337 
349 const char * rpmfilesODN(rpmfiles fi, int jx);
350 
357 char * rpmfilesOFN(rpmfiles fi, int ix);
358 
366 
374 
381 const char * rpmfilesFLink(rpmfiles fi, int ix);
382 
389 rpm_loff_t rpmfilesFSize(rpmfiles fi, int ix);
390 
398 
405 const char * rpmfilesFClass(rpmfiles fi, int ix);
406 
414 uint32_t rpmfilesFDepends(rpmfiles fi, int ix, const uint32_t ** fddictp);
415 
422 uint32_t rpmfilesFNlink(rpmfiles fi, int ix);
423 
432 uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int ** files);
433 
440 const char * rpmfilesFLangs(rpmfiles fi, int ix);
441 
449 
456 rpm_mode_t rpmfilesFMode(rpmfiles fi, int ix);
457 
466 const unsigned char * rpmfilesFDigest(rpmfiles fi, int ix, int *algo, size_t *len);
467 
475 const unsigned char * rpmfilesFSignature(rpmfiles fi, int ix, size_t *len);
476 
483 rpm_rdev_t rpmfilesFRdev(rpmfiles fi, int ix);
484 
491 rpm_ino_t rpmfilesFInode(rpmfiles fi, int ix);
492 
500 
507 const char * rpmfilesFUser(rpmfiles fi, int ix);
508 
515 const char * rpmfilesFGroup(rpmfiles fi, int ix);
516 
525 const char * rpmfilesFCaps(rpmfiles fi, int ix);
526 
535 int rpmfilesStat(rpmfiles fi, int ix, int flags, struct stat *sb);
536 
545 
546 #ifdef __cplusplus
547 }
548 #endif
549 
550 #endif /* _RPMFILES_H */
Definition: rpmfiles.h:23
rpm_color_t rpmfilesFColor(rpmfiles fi, int ix)
Return file color bits from file info set.
const char * rpmfilesFGroup(rpmfiles fi, int ix)
Return file group from file info set.
rpm_count_t rpmfilesDC(rpmfiles fi)
Return directory count from file info set.
const char * rpmfilesODN(rpmfiles fi, int jx)
Return original directory name from file info set.
rpmVerifyAttrs_e
Exported file verify attributes (ie RPMTAG_FILEVERIFYFLAGS) + bits used for reporting failures...
Definition: rpmfiles.h:74
char * oldPath
Definition: rpmfiles.h:129
rpm_time_t rpmfilesFMtime(rpmfiles fi, int ix)
Return file modify time from file info set.
uint16_t rpm_rdev_t
Definition: rpmtypes.h:54
rpm_ino_t rpmfilesFInode(rpmfiles fi, int ix)
Return file inode from file info set.
Definition: rpmfiles.h:26
uint32_t rpm_time_t
Definition: rpmtypes.h:52
const char * rpmfilesFCaps(rpmfiles fi, int ix)
Return textual representation of file capabilities from file info set.
rpm_rdev_t rpmfilesFRdev(rpmfiles fi, int ix)
Return file rdev from file info set.
rpmfi rpmfilesIter(rpmfiles files, int itype)
enum rpmFileAction_e rpmFileAction
File disposition(s) during package install/erase transaction.
char * newPath
Definition: rpmfiles.h:130
Definition: rpmfiles.h:25
Definition: rpmfiles.h:27
enum rpmFileTypes_e rpmFileTypes
File types.
enum rpmFileIter_e rpmFileIter
rpmFileTypes_e
File types.
Definition: rpmfiles.h:22
Definition: rpmfiles.h:29
const char * rpmfilesFLink(rpmfiles fi, int ix)
Return file linkto (i.e.
We pass these around as an array with a sentinel.
Definition: rpmfiles.h:128
Definition: rpmfiles.h:28
rpmfileState rpmfilesFState(rpmfiles fi, int ix)
Return file state from file info set.
int rpmfilesODI(rpmfiles fi, int ix)
Return original directory index from file info set.
int rpmfilesDI(rpmfiles fi, int ix)
Return directory index from file info set.
struct rpmfi_s * rpmfi
Definition: rpmtypes.h:66
uint32_t rpmFlags
Definition: rpmtypes.h:42
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:83
rpm_mode_t rpmfilesFMode(rpmfiles fi, int ix)
Return file mode from file info set.
uint32_t rpm_color_t
Definition: rpmtypes.h:38
uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int **files)
Return (calculated) file nlink count from file info set.
int rpmfilesStat(rpmfiles fi, int ix, int flags, struct stat *sb)
Map file stat(2) info.
rpmFlags rpmfiFlags
Definition: rpmfiles.h:156
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
enum rpmfileState_e rpmfileState
File States (when installed).
int rpmfilesDigestAlgo(rpmfiles fi)
Return digest algorithm of a file info set.
rpmfileAttrs_e
Exported File Attributes (ie RPMTAG_FILEFLAGS)
Definition: rpmfiles.h:49
uint32_t rpm_count_t
Definition: rpmtypes.h:29
int rpmfilesFindFN(rpmfiles files, const char *fn)
Return file index of the given file name or -1 if file is not in the rpmfi.
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
const char * rpmfilesDN(rpmfiles fi, int jx)
Return directory name from file info set.
const unsigned char * rpmfilesFSignature(rpmfiles fi, int ix, size_t *len)
Return file (binary) digest of file info set.
rpmfiles rpmfilesFree(rpmfiles fi)
Destroy a file info set.
const char * rpmfilesFUser(rpmfiles fi, int ix)
Return file owner from file info set.
char * rpmfilesFN(rpmfiles fi, int ix)
Return file name from file info set.
const char * rpmfilesBN(rpmfiles fi, int ix)
Return base name from file info set.
rpmFileAction_e
File disposition(s) during package install/erase transaction.
Definition: rpmfiles.h:105
rpmfileState_e
File States (when installed).
Definition: rpmfiles.h:35
const char * rpmfilesFLangs(rpmfiles fi, int ix)
Return file language(s) from file info set.
rpmfileAttrs rpmfilesFFlags(rpmfiles fi, int ix)
Return file flags from file info set.
rpmVerifyAttrs rpmfilesVFlags(rpmfiles fi, int ix)
Return file verify flags from file info set.
uint32_t rpmfilesFNlink(rpmfiles fi, int ix)
Return (calculated) file nlink count from file info set.
const char * rpmfilesOBN(rpmfiles fi, int ix)
Return original base name from file info set.
int rpmfilesFindOFN(rpmfiles files, const char *fn)
Return file index of the given original file name or -1 if file is not in the rpmfi.
rpmfiles rpmfilesNew(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags)
Create and load a file info set.
rpmVerifyAttrs rpmfilesVerify(rpmfiles fi, int ix, rpmVerifyAttrs omitMask)
Verify file attributes (including digest).
Definition: rpmfiles.h:24
rpmFileIter_e
Definition: rpmfiles.h:185
rpm_color_t rpmfilesColor(rpmfiles files)
Return union of all file color bits from file info set.
rpmFlags rpmfileAttrs
Definition: rpmfiles.h:66
uint16_t rpm_mode_t
Definition: rpmtypes.h:53
uint32_t rpm_ino_t
Definition: rpmtypes.h:56
rpmFlags rpmVerifyAttrs
Definition: rpmfiles.h:96
rpm_count_t rpmfilesFC(rpmfiles fi)
Return file count from file info set.
rpmfiFlags_e
Definition: rpmfiles.h:133
uint32_t rpmfilesFDepends(rpmfiles fi, int ix, const uint32_t **fddictp)
Return file depends dictionary from file info set.
char * rpmfilesOFN(rpmfiles fi, int ix)
Return original file name from file info set.
const unsigned char * rpmfilesFDigest(rpmfiles fi, int ix, int *algo, size_t *len)
Return file (binary) digest of file info set.
struct rpmfiles_s * rpmfiles
Definition: rpmtypes.h:67
rpm_loff_t rpmfilesFSize(rpmfiles fi, int ix)
Return file size from file info set.
uint64_t rpm_loff_t
Definition: rpmtypes.h:51
rpmfiles rpmfilesLink(rpmfiles fi)
Reference a file info set instance.
int rpmfilesCompare(rpmfiles afi, int aix, rpmfiles bfi, int bix)
Return file info comparison.
const char * rpmfilesFClass(rpmfiles fi, int ix)
Return file class from file info set.