00001 #ifndef H_RPMFI
00002 #define H_RPMFI
00003
00009 #include <rpm/rpmtypes.h>
00010 #include <rpm/rpmvf.h>
00011 #include <rpm/rpmpgp.h>
00012
00013 #ifdef __cplusplus
00014 extern "C" {
00015 #endif
00016
00024 typedef enum rpmFileTypes_e {
00025 PIPE = 1,
00026 CDEV = 2,
00027 XDIR = 4,
00028 BDEV = 6,
00029 REG = 8,
00030 LINK = 10,
00031 SOCK = 12
00032 } rpmFileTypes;
00033
00037 typedef enum rpmfileState_e {
00038 RPMFILE_STATE_MISSING = -1,
00039 RPMFILE_STATE_NORMAL = 0,
00040 RPMFILE_STATE_REPLACED = 1,
00041 RPMFILE_STATE_NOTINSTALLED = 2,
00042 RPMFILE_STATE_NETSHARED = 3,
00043 RPMFILE_STATE_WRONGCOLOR = 4
00044 } rpmfileState;
00045
00049 enum rpmfileAttrs_e {
00050 RPMFILE_NONE = 0,
00051 RPMFILE_CONFIG = (1 << 0),
00052 RPMFILE_DOC = (1 << 1),
00053 RPMFILE_ICON = (1 << 2),
00054 RPMFILE_MISSINGOK = (1 << 3),
00055 RPMFILE_NOREPLACE = (1 << 4),
00056 RPMFILE_SPECFILE = (1 << 5),
00057 RPMFILE_GHOST = (1 << 6),
00058 RPMFILE_LICENSE = (1 << 7),
00059 RPMFILE_README = (1 << 8),
00060 RPMFILE_EXCLUDE = (1 << 9),
00061 RPMFILE_UNPATCHED = (1 << 10),
00062 RPMFILE_PUBKEY = (1 << 11),
00063 };
00064
00065 typedef rpmFlags rpmfileAttrs;
00066
00067 #define RPMFILE_ALL ~(RPMFILE_NONE)
00068
00072 typedef enum rpmFileAction_e {
00073 FA_UNKNOWN = 0,
00074 FA_CREATE,
00075 FA_COPYIN,
00076 FA_COPYOUT,
00077 FA_BACKUP,
00078 FA_SAVE,
00079 FA_SKIP,
00080 FA_ALTNAME,
00081 FA_ERASE,
00082 FA_SKIPNSTATE,
00083 FA_SKIPNETSHARED,
00084 FA_SKIPCOLOR
00085 } rpmFileAction;
00086
00087 #define XFA_SKIPPING(_a) \
00088 ((_a) == FA_SKIP || (_a) == FA_SKIPNSTATE || (_a) == FA_SKIPNETSHARED || (_a) == FA_SKIPCOLOR)
00089
00093 struct rpmRelocation_s {
00094 char * oldPath;
00095 char * newPath;
00096 };
00097
00103 rpmfi rpmfiLink (rpmfi fi);
00104
00110 rpm_count_t rpmfiFC(rpmfi fi);
00111
00117 int rpmfiFX(rpmfi fi);
00118
00125 int rpmfiSetFX(rpmfi fi, int fx);
00126
00132 rpm_count_t rpmfiDC(rpmfi fi);
00133
00139 int rpmfiDX(rpmfi fi);
00140
00147 int rpmfiSetDX(rpmfi fi, int dx);
00148
00154 const char * rpmfiBN(rpmfi fi);
00155
00161 const char * rpmfiDN(rpmfi fi);
00162
00168 const char * rpmfiFN(rpmfi fi);
00169
00175 rpmfileAttrs rpmfiFFlags(rpmfi fi);
00176
00182 rpmVerifyAttrs rpmfiVFlags(rpmfi fi);
00183
00189 rpm_mode_t rpmfiFMode(rpmfi fi);
00190
00196 rpmfileState rpmfiFState(rpmfi fi);
00197
00203 int rpmfiDigestAlgo(rpmfi fi);
00204
00212 const unsigned char * rpmfiFDigest(rpmfi fi, int *algo, size_t *diglen);
00213
00223 char * rpmfiFDigestHex(rpmfi fi, int *algo);
00224
00231 const unsigned char * rpmfiMD5(rpmfi fi) RPM_GNUC_DEPRECATED;
00232
00238 const char * rpmfiFLink(rpmfi fi);
00239
00245 rpm_loff_t rpmfiFSize(rpmfi fi);
00246
00252 rpm_rdev_t rpmfiFRdev(rpmfi fi);
00253
00259 rpm_ino_t rpmfiFInode(rpmfi fi);
00260
00266 rpm_color_t rpmfiColor(rpmfi fi);
00267
00273 rpm_color_t rpmfiFColor(rpmfi fi);
00274
00280 const char * rpmfiFClass(rpmfi fi);
00281
00288 uint32_t rpmfiFDepends(rpmfi fi,
00289 const uint32_t ** fddictp);
00290
00296 uint32_t rpmfiFNlink(rpmfi fi);
00297
00303 rpm_time_t rpmfiFMtime(rpmfi fi);
00304
00310 const char * rpmfiFUser(rpmfi fi);
00311
00317 const char * rpmfiFGroup(rpmfi fi);
00318
00326 const char * rpmfiFCaps(rpmfi fi);
00327
00333 const char * rpmfiFLangs(rpmfi fi);
00334
00340 int rpmfiNext(rpmfi fi);
00341
00348 rpmfi rpmfiInit(rpmfi fi, int fx);
00349
00355 int rpmfiNextD(rpmfi fi);
00356
00363 rpmfi rpmfiInitD(rpmfi fi, int dx);
00364
00370 rpmfi rpmfiFree(rpmfi fi);
00371
00372 enum rpmfiFlags_e {
00373 RPMFI_NOHEADER = 0,
00374 RPMFI_KEEPHEADER = (1 << 0),
00375 RPMFI_NOFILECLASS = (1 << 1),
00376 RPMFI_NOFILEDEPS = (1 << 2),
00377 RPMFI_NOFILELANGS = (1 << 3),
00378 RPMFI_NOFILEUSER = (1 << 4),
00379 RPMFI_NOFILEGROUP = (1 << 5),
00380 RPMFI_NOFILEMODES = (1 << 6),
00381 RPMFI_NOFILESIZES = (1 << 7),
00382 RPMFI_NOFILECAPS = (1 << 8),
00383 RPMFI_NOFILELINKTOS = (1 << 9),
00384 RPMFI_NOFILEDIGESTS = (1 << 10),
00385 RPMFI_NOFILEMTIMES = (1 << 11),
00386 RPMFI_NOFILERDEVS = (1 << 12),
00387 RPMFI_NOFILEINODES = (1 << 13),
00388 RPMFI_NOFILESTATES = (1 << 14),
00389 RPMFI_NOFILECOLORS = (1 << 15),
00390 RPMFI_NOFILEVERIFYFLAGS = (1 << 16),
00391 RPMFI_NOFILEFLAGS = (1 << 17),
00392 RPMFI_ISBUILD = (1 << 30),
00393 RPMFI_ISSOURCE = (1 << 31),
00394 };
00395
00396 typedef rpmFlags rpmfiFlags;
00397
00398 #define RPMFI_FLAGS_ERASE \
00399 (RPMFI_NOFILECLASS | RPMFI_NOFILELANGS | \
00400 RPMFI_NOFILEMTIMES | RPMFI_NOFILERDEVS | RPMFI_NOFILEINODES | \
00401 RPMFI_NOFILEVERIFYFLAGS)
00402
00403 #define RPMFI_FLAGS_INSTALL \
00404 (RPMFI_NOFILECLASS | RPMFI_NOFILEVERIFYFLAGS)
00405
00406 #define RPMFI_FLAGS_VERIFY \
00407 (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
00408 RPMFI_NOFILECOLORS)
00409
00410 #define RPMFI_FLAGS_QUERY \
00411 (RPMFI_NOFILECLASS | RPMFI_NOFILEDEPS | RPMFI_NOFILELANGS | \
00412 RPMFI_NOFILECOLORS | RPMFI_NOFILEVERIFYFLAGS)
00413
00422 rpmfi rpmfiNew(const rpmts ts, Header h, rpmTagVal tagN, rpmfiFlags flags);
00423
00429 rpmFileTypes rpmfiWhatis(rpm_mode_t mode);
00430
00437 int rpmfiCompare(const rpmfi afi, const rpmfi bfi);
00438
00446 rpmFileAction rpmfiDecideFate(const rpmfi ofi, rpmfi nfi, int skipMissing);
00447
00453 int rpmfiConfigConflict(const rpmfi fi);
00454
00455 #ifdef __cplusplus
00456 }
00457 #endif
00458
00459 #endif