rpm  4.17.0
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
31 
35 typedef enum rpmfileState_e {
36  RPMFILE_STATE_MISSING = -1, /* used for unavailable data */
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 };
64 
66 
67 #define RPMFILE_ALL ~(RPMFILE_NONE)
68 
75  RPMVERIFY_MD5 = (1 << 0),
77  RPMVERIFY_FILESIZE = (1 << 1),
78  RPMVERIFY_LINKTO = (1 << 2),
79  RPMVERIFY_USER = (1 << 3),
80  RPMVERIFY_GROUP = (1 << 4),
81  RPMVERIFY_MTIME = (1 << 5),
82  RPMVERIFY_MODE = (1 << 6),
83  RPMVERIFY_RDEV = (1 << 7),
84  RPMVERIFY_CAPS = (1 << 8),
85  /* bits 9-14 unused, reserved for rpmVerifyAttrs */
86  RPMVERIFY_CONTEXTS = (1 << 15),
87  /* bits 16-22 used in rpmVerifyFlags */
88  /* bits 23-27 used in rpmQueryFlags */
90  RPMVERIFY_READFAIL = (1 << 29),
91  RPMVERIFY_LSTATFAIL = (1 << 30),
92  RPMVERIFY_LGETFILECONFAIL = (1 << 31)
93 };
94 
96 
97 #define RPMVERIFY_ALL ~(RPMVERIFY_NONE)
98 #define RPMVERIFY_FAILURES \
99  (RPMVERIFY_LSTATFAIL|RPMVERIFY_READFAIL|RPMVERIFY_READLINKFAIL|RPMVERIFY_LGETFILECONFAIL)
100 
104 typedef enum rpmFileAction_e {
106  FA_CREATE = 1,
107  FA_COPYIN = 2,
109  FA_BACKUP = 4,
110  FA_SAVE = 5,
111  FA_SKIP = 6,
113  FA_ERASE = 8,
117  FA_TOUCH = 12,
118  /* bits 16-31 reserved */
120 
121 #define XFA_SKIPPING(_a) \
122  ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
123 
124 #define XFA_CREATING(_a) \
125  ((_a) == FA_CREATE || (_a) == FA_BACKUP || (_a) == FA_SAVE || (_a) == FA_ALTNAME)
126 
131  char * oldPath;
132  char * newPath;
133 };
134 
137  RPMFI_KEEPHEADER = (1 << 0),
138  RPMFI_NOFILECLASS = (1 << 1),
139  RPMFI_NOFILEDEPS = (1 << 2),
140  RPMFI_NOFILELANGS = (1 << 3),
141  RPMFI_NOFILEUSER = (1 << 4),
142  RPMFI_NOFILEGROUP = (1 << 5),
143  RPMFI_NOFILEMODES = (1 << 6),
144  RPMFI_NOFILESIZES = (1 << 7),
145  RPMFI_NOFILECAPS = (1 << 8),
147  RPMFI_NOFILEDIGESTS = (1 << 10),
148  RPMFI_NOFILEMTIMES = (1 << 11),
149  RPMFI_NOFILERDEVS = (1 << 12),
150  RPMFI_NOFILEINODES = (1 << 13),
151  RPMFI_NOFILESTATES = (1 << 14),
152  RPMFI_NOFILECOLORS = (1 << 15),
154  RPMFI_NOFILEFLAGS = (1 << 17),
157 };
158 
160 
161 #define RPMFI_FLAGS_ERASE \
162  (RPMFI_NOFILECLASS | RPMFI_NOFILELANGS | \
163  RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | \
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_NOFILEVERIFYFLAGS | RPMFI_NOFILEFLAGS)
184 
185 #define RPMFI_FLAGS_ONLY_FILENAMES \
186  (RPMFI_FLAGS_FILETRIGGER | RPMFI_NOFILESTATES)
187 
188 typedef enum rpmFileIter_e {
197 
198 #define RPMFILEITERMAX 6
199 
200 #ifdef __cplusplus
201 extern "C" {
202 #endif
203 
213 
220 
227 
234 
241 
250 int rpmfilesFindFN(rpmfiles files, const char * fn);
251 
260 int rpmfilesFindOFN(rpmfiles files, const char * fn);
261 
262 rpmfi rpmfilesIter(rpmfiles files, int itype);
263 
270 
277 
286 int rpmfilesCompare(rpmfiles afi, int aix, rpmfiles bfi, int bix);
287 
294 const char * rpmfilesBN(rpmfiles fi, int ix);
295 
307 const char * rpmfilesDN(rpmfiles fi, int jx);
308 
315 int rpmfilesDI(rpmfiles fi, int ix);
316 
323 char * rpmfilesFN(rpmfiles fi, int ix);
324 
331 int rpmfilesODI(rpmfiles fi, int ix);
332 
339 const char * rpmfilesOBN(rpmfiles fi, int ix);
340 
352 const char * rpmfilesODN(rpmfiles fi, int jx);
353 
360 char * rpmfilesOFN(rpmfiles fi, int ix);
361 
369 
377 
384 const char * rpmfilesFLink(rpmfiles fi, int ix);
385 
393 
401 
408 const char * rpmfilesFClass(rpmfiles fi, int ix);
409 
417 uint32_t rpmfilesFDepends(rpmfiles fi, int ix, const uint32_t ** fddictp);
418 
425 uint32_t rpmfilesFNlink(rpmfiles fi, int ix);
426 
435 uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int ** files);
436 
443 const char * rpmfilesFLangs(rpmfiles fi, int ix);
444 
452 
460 
469 const unsigned char * rpmfilesFDigest(rpmfiles fi, int ix, int *algo, size_t *len);
470 
478 const unsigned char * rpmfilesFSignature(rpmfiles fi, int ix, size_t *len);
479 
488 const unsigned char * rpmfilesVSignature(rpmfiles fi, int ix, size_t *len,
489  uint16_t *algo);
490 
498 
506 
514 
521 const char * rpmfilesFUser(rpmfiles fi, int ix);
522 
529 const char * rpmfilesFGroup(rpmfiles fi, int ix);
530 
539 const char * rpmfilesFCaps(rpmfiles fi, int ix);
540 
549 int rpmfilesStat(rpmfiles fi, int ix, int flags, struct stat *sb);
550 
559 
560 #ifdef __cplusplus
561 }
562 #endif
563 
564 #endif /* _RPMFILES_H */
int rpmfilesStat(rpmfiles fi, int ix, int flags, struct stat *sb)
Map file stat(2) info.
rpm_count_t rpmfilesDC(rpmfiles fi)
Return directory count from file info set.
rpmVerifyAttrs rpmfilesVFlags(rpmfiles fi, int ix)
Return file verify flags from file info set.
char * rpmfilesFN(rpmfiles fi, int ix)
Return file name from file info set.
const char * rpmfilesFUser(rpmfiles fi, int ix)
Return file owner from file info set.
enum rpmFileTypes_e rpmFileTypes
File types.
const char * rpmfilesFGroup(rpmfiles fi, int ix)
Return file group from file info set.
rpm_mode_t rpmfilesFMode(rpmfiles fi, int ix)
Return file mode from file info set.
rpm_ino_t rpmfilesFInode(rpmfiles fi, int ix)
Return file inode from file info set.
int rpmfilesFindFN(rpmfiles files, const char *fn)
Return file index of the given file name or -1 if file is not in the rpmfi.
rpmfiles rpmfilesLink(rpmfiles fi)
Reference a file info set instance.
rpmfiles rpmfilesNew(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags)
Create and load a file info set.
const char * rpmfilesFLink(rpmfiles fi, int ix)
Return file linkto (i.e.
const char * rpmfilesODN(rpmfiles fi, int jx)
Return original directory name from file info set.
const char * rpmfilesFClass(rpmfiles fi, int ix)
Return file class from file info set.
const char * rpmfilesFCaps(rpmfiles fi, int ix)
Return textual representation of file capabilities from file info set.
rpmfileState rpmfilesFState(rpmfiles fi, int ix)
Return file state from file info set.
const unsigned char * rpmfilesFSignature(rpmfiles fi, int ix, size_t *len)
Return file (binary) digest of file info set.
uint32_t rpmfilesFLinks(rpmfiles fi, int ix, const int **files)
Return (calculated) file nlink count from file info set.
rpm_color_t rpmfilesFColor(rpmfiles fi, int ix)
Return file color bits from file info set.
rpmfileAttrs rpmfilesFFlags(rpmfiles fi, int ix)
Return file flags from file info set.
enum rpmFileAction_e rpmFileAction
File disposition(s) during package install/erase transaction.
rpm_rdev_t rpmfilesFRdev(rpmfiles fi, int ix)
Return file rdev 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.
int rpmfilesDI(rpmfiles fi, int ix)
Return directory index from file info set.
rpmFileAction_e
File disposition(s) during package install/erase transaction.
Definition: rpmfiles.h:104
int rpmfilesCompare(rpmfiles afi, int aix, rpmfiles bfi, int bix)
Return file info comparison.
int rpmfilesDigestAlgo(rpmfiles fi)
Return digest algorithm of a file info set.
rpmVerifyAttrs rpmfilesVerify(rpmfiles fi, int ix, rpmVerifyAttrs omitMask)
Verify file attributes (including digest).
rpm_loff_t rpmfilesFSize(rpmfiles fi, int ix)
Return file size 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 rpmfilesFree(rpmfiles fi)
Destroy a file info set.
int rpmfilesODI(rpmfiles fi, int ix)
Return original directory index from file info set.
const char * rpmfilesFLangs(rpmfiles fi, int ix)
Return file language(s) from file info set.
const unsigned char * rpmfilesVSignature(rpmfiles fi, int ix, size_t *len, uint16_t *algo)
Return file verity signature (binary)
char * rpmfilesOFN(rpmfiles fi, int ix)
Return original file name from file info set.
rpmFileTypes_e
File types.
Definition: rpmfiles.h:22
rpm_count_t rpmfilesFC(rpmfiles fi)
Return file count from file info set.
uint32_t rpmfilesFNlink(rpmfiles fi, int ix)
Return (calculated) file nlink count from file info set.
const char * rpmfilesBN(rpmfiles fi, int ix)
Return base name from file info set.
uint32_t rpmfilesFDepends(rpmfiles fi, int ix, const uint32_t **fddictp)
Return file depends dictionary from file info set.
const char * rpmfilesOBN(rpmfiles fi, int ix)
Return original base name from file info set.
rpm_time_t rpmfilesFMtime(rpmfiles fi, int ix)
Return file modify time from file info set.
const char * rpmfilesDN(rpmfiles fi, int jx)
Return directory name from file info set.
rpm_color_t rpmfilesColor(rpmfiles files)
Return union of all file color bits from file info set.
@ FA_BACKUP
Definition: rpmfiles.h:109
@ FA_CREATE
Definition: rpmfiles.h:106
@ FA_UNKNOWN
Definition: rpmfiles.h:105
@ FA_COPYIN
Definition: rpmfiles.h:107
@ FA_SKIPNSTATE
Definition: rpmfiles.h:114
@ FA_SAVE
Definition: rpmfiles.h:110
@ FA_COPYOUT
Definition: rpmfiles.h:108
@ FA_SKIP
Definition: rpmfiles.h:111
@ FA_SKIPCOLOR
Definition: rpmfiles.h:116
@ FA_ALTNAME
Definition: rpmfiles.h:112
@ FA_TOUCH
Definition: rpmfiles.h:117
@ FA_ERASE
Definition: rpmfiles.h:113
@ FA_SKIPNETSHARED
Definition: rpmfiles.h:115
@ XDIR
Definition: rpmfiles.h:25
@ CDEV
Definition: rpmfiles.h:24
@ SOCK
Definition: rpmfiles.h:29
@ PIPE
Definition: rpmfiles.h:23
@ REG
Definition: rpmfiles.h:27
@ BDEV
Definition: rpmfiles.h:26
@ LINK
Definition: rpmfiles.h:28
uint32_t rpm_ino_t
Definition: rpmtypes.h:56
uint32_t rpm_count_t
Definition: rpmtypes.h:29
struct rpmfi_s * rpmfi
Definition: rpmtypes.h:66
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
struct rpmfiles_s * rpmfiles
Definition: rpmtypes.h:67
uint32_t rpmFlags
Definition: rpmtypes.h:42
uint32_t rpm_color_t
Definition: rpmtypes.h:38
uint16_t rpm_mode_t
Definition: rpmtypes.h:53
uint64_t rpm_loff_t
Definition: rpmtypes.h:51
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
uint32_t rpm_time_t
Definition: rpmtypes.h:52
uint16_t rpm_rdev_t
Definition: rpmtypes.h:54
rpmVerifyAttrs_e
Exported file verify attributes (ie RPMTAG_FILEVERIFYFLAGS) + bits used for reporting failures.
Definition: rpmfiles.h:73
@ RPMVERIFY_CAPS
Definition: rpmfiles.h:84
@ RPMVERIFY_MTIME
Definition: rpmfiles.h:81
@ RPMVERIFY_MD5
Definition: rpmfiles.h:75
@ RPMVERIFY_LGETFILECONFAIL
Definition: rpmfiles.h:92
@ RPMVERIFY_CONTEXTS
Definition: rpmfiles.h:86
@ RPMVERIFY_RDEV
Definition: rpmfiles.h:83
@ RPMVERIFY_MODE
Definition: rpmfiles.h:82
@ RPMVERIFY_GROUP
Definition: rpmfiles.h:80
@ RPMVERIFY_USER
Definition: rpmfiles.h:79
@ RPMVERIFY_FILESIZE
Definition: rpmfiles.h:77
@ RPMVERIFY_NONE
Definition: rpmfiles.h:74
@ RPMVERIFY_READFAIL
Definition: rpmfiles.h:90
@ RPMVERIFY_READLINKFAIL
Definition: rpmfiles.h:89
@ RPMVERIFY_LSTATFAIL
Definition: rpmfiles.h:91
@ RPMVERIFY_FILEDIGEST
Definition: rpmfiles.h:76
@ RPMVERIFY_LINKTO
Definition: rpmfiles.h:78
rpmFileIter_e
Definition: rpmfiles.h:188
@ RPMFI_ITER_READ_ARCHIVE_CONTENT_FIRST
Definition: rpmfiles.h:193
@ RPMFI_ITER_WRITE_ARCHIVE
Definition: rpmfiles.h:191
@ RPMFI_ITER_READ_ARCHIVE_OMIT_HARDLINKS
Definition: rpmfiles.h:194
@ RPMFI_ITER_FWD
Definition: rpmfiles.h:189
@ RPMFI_ITER_INTERVAL
Definition: rpmfiles.h:195
@ RPMFI_ITER_READ_ARCHIVE
Definition: rpmfiles.h:192
@ RPMFI_ITER_BACK
Definition: rpmfiles.h:190
rpmfiFlags_e
Definition: rpmfiles.h:135
@ RPMFI_NOVERITYSIGNATURES
Definition: rpmfiles.h:156
@ RPMFI_NOFILELANGS
Definition: rpmfiles.h:140
@ RPMFI_NOFILEMTIMES
Definition: rpmfiles.h:148
@ RPMFI_NOFILEVERIFYFLAGS
Definition: rpmfiles.h:153
@ RPMFI_NOFILEDIGESTS
Definition: rpmfiles.h:147
@ RPMFI_NOFILERDEVS
Definition: rpmfiles.h:149
@ RPMFI_NOFILEFLAGS
Definition: rpmfiles.h:154
@ RPMFI_NOFILEINODES
Definition: rpmfiles.h:150
@ RPMFI_NOFILESTATES
Definition: rpmfiles.h:151
@ RPMFI_NOFILELINKTOS
Definition: rpmfiles.h:146
@ RPMFI_NOFILECAPS
Definition: rpmfiles.h:145
@ RPMFI_NOFILEMODES
Definition: rpmfiles.h:143
@ RPMFI_NOHEADER
Definition: rpmfiles.h:136
@ RPMFI_NOFILESIGNATURES
Definition: rpmfiles.h:155
@ RPMFI_KEEPHEADER
Definition: rpmfiles.h:137
@ RPMFI_NOFILESIZES
Definition: rpmfiles.h:144
@ RPMFI_NOFILECOLORS
Definition: rpmfiles.h:152
@ RPMFI_NOFILEUSER
Definition: rpmfiles.h:141
@ RPMFI_NOFILEGROUP
Definition: rpmfiles.h:142
@ RPMFI_NOFILEDEPS
Definition: rpmfiles.h:139
@ RPMFI_NOFILECLASS
Definition: rpmfiles.h:138
enum rpmFileIter_e rpmFileIter
rpmfileAttrs_e
Exported File Attributes (ie RPMTAG_FILEFLAGS)
Definition: rpmfiles.h:49
@ RPMFILE_ARTIFACT
Definition: rpmfiles.h:62
@ RPMFILE_MISSINGOK
Definition: rpmfiles.h:54
@ RPMFILE_ICON
Definition: rpmfiles.h:53
@ RPMFILE_DOC
Definition: rpmfiles.h:52
@ RPMFILE_GHOST
Definition: rpmfiles.h:57
@ RPMFILE_SPECFILE
Definition: rpmfiles.h:56
@ RPMFILE_CONFIG
Definition: rpmfiles.h:51
@ RPMFILE_LICENSE
Definition: rpmfiles.h:58
@ RPMFILE_NONE
Definition: rpmfiles.h:50
@ RPMFILE_NOREPLACE
Definition: rpmfiles.h:55
@ RPMFILE_PUBKEY
Definition: rpmfiles.h:61
@ RPMFILE_README
Definition: rpmfiles.h:59
enum rpmfileState_e rpmfileState
File States (when installed).
rpmfileState_e
File States (when installed).
Definition: rpmfiles.h:35
@ RPMFILE_STATE_NORMAL
Definition: rpmfiles.h:37
@ RPMFILE_STATE_REPLACED
Definition: rpmfiles.h:38
@ RPMFILE_STATE_NOTINSTALLED
Definition: rpmfiles.h:39
@ RPMFILE_STATE_NETSHARED
Definition: rpmfiles.h:40
@ RPMFILE_STATE_MISSING
Definition: rpmfiles.h:36
@ RPMFILE_STATE_WRONGCOLOR
Definition: rpmfiles.h:41
rpmFlags rpmfileAttrs
Definition: rpmfiles.h:65
rpmFlags rpmVerifyAttrs
Definition: rpmfiles.h:95
rpmFlags rpmfiFlags
Definition: rpmfiles.h:159
rpmfi rpmfilesIter(rpmfiles files, int itype)
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:84
We pass these around as an array with a sentinel.
Definition: rpmfiles.h:130
char * oldPath
Definition: rpmfiles.h:131
char * newPath
Definition: rpmfiles.h:132