rpm  4.18.2
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 
21 typedef enum rpmFileTypes_e {
22  PIPE = 1,
23  CDEV = 2,
24  XDIR = 4,
25  BDEV = 6,
26  REG = 8,
27  LINK = 10,
28  SOCK = 12
29 } rpmFileTypes;
30 
34 typedef enum rpmfileState_e {
35  RPMFILE_STATE_MISSING = -1, /* used for unavailable data */
41 } rpmfileState;
42 
43 #define RPMFILE_IS_INSTALLED(_x) ((_x) == RPMFILE_STATE_NORMAL || (_x) == RPMFILE_STATE_NETSHARED)
44 
50  RPMFILE_CONFIG = (1 << 0),
51  RPMFILE_DOC = (1 << 1),
52  RPMFILE_ICON = (1 << 2),
53  RPMFILE_MISSINGOK = (1 << 3),
54  RPMFILE_NOREPLACE = (1 << 4),
55  RPMFILE_SPECFILE = (1 << 5),
56  RPMFILE_GHOST = (1 << 6),
57  RPMFILE_LICENSE = (1 << 7),
58  RPMFILE_README = (1 << 8),
59  /* bits 9-10 unused */
60  RPMFILE_PUBKEY = (1 << 11),
61  RPMFILE_ARTIFACT = (1 << 12),
62 };
63 
65 
66 #define RPMFILE_ALL ~(RPMFILE_NONE)
67 
74  RPMVERIFY_MD5 = (1 << 0),
76  RPMVERIFY_FILESIZE = (1 << 1),
77  RPMVERIFY_LINKTO = (1 << 2),
78  RPMVERIFY_USER = (1 << 3),
79  RPMVERIFY_GROUP = (1 << 4),
80  RPMVERIFY_MTIME = (1 << 5),
81  RPMVERIFY_MODE = (1 << 6),
82  RPMVERIFY_RDEV = (1 << 7),
83  RPMVERIFY_CAPS = (1 << 8),
84  /* bits 9-14 unused, reserved for rpmVerifyAttrs */
85  RPMVERIFY_CONTEXTS = (1 << 15),
86  /* bits 16-22 used in rpmVerifyFlags */
87  /* bits 23-27 used in rpmQueryFlags */
89  RPMVERIFY_READFAIL = (1 << 29),
90  RPMVERIFY_LSTATFAIL = (1 << 30),
92 };
93 
95 
96 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
97 #define RPMVERIFY_FAILURES \
98  (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
99 
103 typedef enum rpmFileAction_e {
105  FA_CREATE = 1,
106  FA_COPYIN = 2,
108  FA_BACKUP = 4,
109  FA_SAVE = 5,
110  FA_SKIP = 6,
112  FA_ERASE = 8,
116  FA_TOUCH = 12,
117  /* bits 16-31 reserved */
118 } rpmFileAction;
119 
120 #define XFA_SKIPPING(_a) \
121  ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
122 
123 #define XFA_CREATING(_a) \
124  ((_a) == FA_CREATE || (_a) == FA_BACKUP || (_a) == FA_SAVE || (_a) == FA_ALTNAME)
125 
130  char * oldPath;
131  char * newPath;
132 };
133 
136  RPMFI_KEEPHEADER = (1 << 0),
137  RPMFI_NOFILECLASS = (1 << 1),
138  RPMFI_NOFILEDEPS = (1 << 2),
139  RPMFI_NOFILELANGS = (1 << 3),
140  RPMFI_NOFILEUSER = (1 << 4),
141  RPMFI_NOFILEGROUP = (1 << 5),
142  RPMFI_NOFILEMODES = (1 << 6),
143  RPMFI_NOFILESIZES = (1 << 7),
144  RPMFI_NOFILECAPS = (1 << 8),
146  RPMFI_NOFILEDIGESTS = (1 << 10),
147  RPMFI_NOFILEMTIMES = (1 << 11),
148  RPMFI_NOFILERDEVS = (1 << 12),
149  RPMFI_NOFILEINODES = (1 << 13),
150  RPMFI_NOFILESTATES = (1 << 14),
151  RPMFI_NOFILECOLORS = (1 << 15),
153  RPMFI_NOFILEFLAGS = (1 << 17),
156 };
157 
159 
160 #define RPMFI_FLAGS_ERASE \
161  (RPMFI_NOFILECLASS | RPMFI_NOFILELANGS | \
162  RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
163  RPMFI_NOFILESIGNATURES | RPMFI_NOVERITYSIGNATURES | \
164  RPMFI_NOFILEVERIFYFLAGS)
165 
166 #define RPMFI_FLAGS_INSTALL \
167  (RPMFI_NOFILECLASS | RPMFI_NOFILEVERIFYFLAGS)
168 
169 #define RPMFI_FLAGS_VERIFY \
170  (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
171  RPMFI_NOFILECOLORS)
172 
173 #define RPMFI_FLAGS_QUERY \
174  (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
175  RPMFI_NOFILECOLORS | RPMFI_NOFILEVERIFYFLAGS)
176 
177 #define RPMFI_FLAGS_FILETRIGGER \
178  (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
179  RPMFI_NOFILEUSER | RPMFI_NOFILEGROUP | RPMFI_NOFILEMODES | \
180  RPMFI_NOFILESIZES | RPMFI_NOFILECAPS | RPMFI_NOFILELINKTOS | \
181  RPMFI_NOFILEDIGESTS | RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
182  RPMFI_NOFILEINODES | RPMFI_NOFILECOLORS | \
183  RPMFI_NOFILESIGNATURES | RPMFI_NOVERITYSIGNATURES | \
184  RPMFI_NOFILEVERIFYFLAGS | RPMFI_NOFILEFLAGS)
185 
186 #define RPMFI_FLAGS_ONLY_FILENAMES \
187  (RPMFI_FLAGS_FILETRIGGER | RPMFI_NOFILESTATES)
188 
189 typedef enum rpmFileIter_e {
197 } rpmFileIter;
198 
199 #define RPMFILEITERMAX 6
200 
201 #ifdef __cplusplus
202 extern "C" {
203 #endif
204 
213 rpmfiles rpmfilesNew(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags);
214 
221 
228 
235 
242 
251 int rpmfilesFindFN(rpmfiles files, const char * fn);
252 
261 int rpmfilesFindOFN(rpmfiles files, const char * fn);
262 
263 rpmfi rpmfilesIter(rpmfiles files, int itype);
264 
271 
278 
287 int rpmfilesCompare(rpmfiles afi, int aix, rpmfiles bfi, int bix);
288 
295 const char * rpmfilesBN(rpmfiles fi, int ix);
296 
308 const char * rpmfilesDN(rpmfiles fi, int jx);
309 
316 int rpmfilesDI(rpmfiles fi, int ix);
317 
324 char * rpmfilesFN(rpmfiles fi, int ix);
325 
332 int rpmfilesODI(rpmfiles fi, int ix);
333 
340 const char * rpmfilesOBN(rpmfiles fi, int ix);
341 
353 const char * rpmfilesODN(rpmfiles fi, int jx);
354 
361 char * rpmfilesOFN(rpmfiles fi, int ix);
362 
369 rpmVerifyAttrs rpmfilesVFlags(rpmfiles fi, int ix);
370 
378 
385 const char * rpmfilesFLink(rpmfiles fi, int ix);
386 
393 rpm_loff_t rpmfilesFSize(rpmfiles fi, int ix);
394 
402 
409 const char * rpmfilesFClass(rpmfiles fi, int ix);
410 
418 uint32_t rpmfilesFDepends(rpmfiles fi, int ix, const uint32_t ** fddictp);
419 
426 uint32_t rpmfilesFNlink(rpmfiles fi, int ix);
427 
436 uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int ** files);
437 
444 const char * rpmfilesFLangs(rpmfiles fi, int ix);
445 
452 rpmfileAttrs rpmfilesFFlags(rpmfiles fi, int ix);
453 
460 rpm_mode_t rpmfilesFMode(rpmfiles fi, int ix);
461 
470 const unsigned char * rpmfilesFDigest(rpmfiles fi, int ix, int *algo, size_t *len);
471 
479 const unsigned char * rpmfilesFSignature(rpmfiles fi, int ix, size_t *len);
480 
489 const unsigned char * rpmfilesVSignature(rpmfiles fi, int ix, size_t *len,
490  uint16_t *algo);
491 
498 rpm_rdev_t rpmfilesFRdev(rpmfiles fi, int ix);
499 
506 rpm_ino_t rpmfilesFInode(rpmfiles fi, int ix);
507 
515 
522 const char * rpmfilesFUser(rpmfiles fi, int ix);
523 
530 const char * rpmfilesFGroup(rpmfiles fi, int ix);
531 
540 const char * rpmfilesFCaps(rpmfiles fi, int ix);
541 
550 int rpmfilesStat(rpmfiles fi, int ix, int flags, struct stat *sb);
551 
559 rpmVerifyAttrs rpmfilesVerify(rpmfiles fi, int ix, rpmVerifyAttrs omitMask);
560 
561 #ifdef __cplusplus
562 }
563 #endif
564 
565 #endif /* _RPMFILES_H */
Definition: rpmfiles.h:22
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:72
char * oldPath
Definition: rpmfiles.h:130
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:25
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:131
Definition: rpmfiles.h:24
Definition: rpmfiles.h:26
Typedefs for RPM abstract data types.
enum rpmFileTypes_e rpmFileTypes
File types.
enum rpmFileIter_e rpmFileIter
rpmFileTypes_e
File types.
Definition: rpmfiles.h:21
Definition: rpmfiles.h:28
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:129
Definition: rpmfiles.h:27
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:84
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:158
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.
const unsigned char * rpmfilesVSignature(rpmfiles fi, int ix, size_t *len, uint16_t *algo)
Return file verity signature (binary)
rpmfileAttrs_e
Exported File Attributes (ie RPMTAG_FILEFLAGS)
Definition: rpmfiles.h:48
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:103
rpmfileState_e
File States (when installed).
Definition: rpmfiles.h:34
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:23
rpmFileIter_e
Definition: rpmfiles.h:189
rpm_color_t rpmfilesColor(rpmfiles files)
Return union of all file color bits from file info set.
rpmFlags rpmfileAttrs
Definition: rpmfiles.h:64
uint16_t rpm_mode_t
Definition: rpmtypes.h:53
uint32_t rpm_ino_t
Definition: rpmtypes.h:56
rpmFlags rpmVerifyAttrs
Definition: rpmfiles.h:94
rpm_count_t rpmfilesFC(rpmfiles fi)
Return file count from file info set.
rpmfiFlags_e
Definition: rpmfiles.h:134
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.