Go to the documentation of this file.00001 #ifndef H_RPMDS
00002 #define H_RPMDS
00003
00009 #include <time.h>
00010
00011 #include <rpm/rpmtypes.h>
00012 #include <rpm/rpmps.h>
00013
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017
00020 extern int _rpmds_nopromote;
00021
00025 enum rpmsenseFlags_e {
00026 RPMSENSE_ANY = 0,
00027 RPMSENSE_LESS = (1 << 1),
00028 RPMSENSE_GREATER = (1 << 2),
00029 RPMSENSE_EQUAL = (1 << 3),
00030
00031 RPMSENSE_POSTTRANS = (1 << 5),
00032 RPMSENSE_PREREQ = (1 << 6),
00033 RPMSENSE_PRETRANS = (1 << 7),
00034 RPMSENSE_INTERP = (1 << 8),
00035 RPMSENSE_SCRIPT_PRE = (1 << 9),
00036 RPMSENSE_SCRIPT_POST = (1 << 10),
00037 RPMSENSE_SCRIPT_PREUN = (1 << 11),
00038 RPMSENSE_SCRIPT_POSTUN = (1 << 12),
00039 RPMSENSE_SCRIPT_VERIFY = (1 << 13),
00040 RPMSENSE_FIND_REQUIRES = (1 << 14),
00041 RPMSENSE_FIND_PROVIDES = (1 << 15),
00043 RPMSENSE_TRIGGERIN = (1 << 16),
00044 RPMSENSE_TRIGGERUN = (1 << 17),
00045 RPMSENSE_TRIGGERPOSTUN = (1 << 18),
00046 RPMSENSE_MISSINGOK = (1 << 19),
00047
00048 RPMSENSE_RPMLIB = (1 << 24),
00049 RPMSENSE_TRIGGERPREIN = (1 << 25),
00050 RPMSENSE_KEYRING = (1 << 26),
00051
00052 RPMSENSE_CONFIG = (1 << 28)
00053 };
00054
00055 typedef rpmFlags rpmsenseFlags;
00056
00057 #define RPMSENSE_SENSEMASK 15
00058
00059
00060 #define RPMSENSE_TRIGGER \
00061 (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00062
00063 #define _ALL_REQUIRES_MASK (\
00064 RPMSENSE_INTERP | \
00065 RPMSENSE_SCRIPT_PRE | \
00066 RPMSENSE_SCRIPT_POST | \
00067 RPMSENSE_SCRIPT_PREUN | \
00068 RPMSENSE_SCRIPT_POSTUN | \
00069 RPMSENSE_SCRIPT_VERIFY | \
00070 RPMSENSE_FIND_REQUIRES | \
00071 RPMSENSE_RPMLIB | \
00072 RPMSENSE_KEYRING | \
00073 RPMSENSE_PRETRANS | \
00074 RPMSENSE_POSTTRANS | \
00075 RPMSENSE_PREREQ)
00076
00077 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
00078 #define _INSTALL_ONLY_MASK \
00079 _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS)
00080 #define _ERASE_ONLY_MASK \
00081 _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00082
00083 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
00084 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
00085 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
00086
00092 rpmds rpmdsLink(rpmds ds);
00093
00099 rpmds rpmdsFree(rpmds ds);
00107 rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags);
00108
00115 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
00116
00124 rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
00125
00134 rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
00135
00141 rpmds rpmdsCurrent(rpmds ds);
00142
00148 int rpmdsCount(const rpmds ds);
00149
00155 int rpmdsIx(const rpmds ds);
00156
00163 int rpmdsSetIx(rpmds ds, int ix);
00164
00170 const char * rpmdsDNEVR(const rpmds ds);
00171
00177 const char * rpmdsN(const rpmds ds);
00178
00184 const char * rpmdsEVR(const rpmds ds);
00185
00191 rpmsenseFlags rpmdsFlags(const rpmds ds);
00192
00198 rpmTagVal rpmdsTagN(const rpmds ds);
00199
00206 unsigned int rpmdsInstance(rpmds ds);
00207
00221 int rpmdsNoPromote(const rpmds ds);
00222
00229 int rpmdsSetNoPromote(rpmds ds, int nopromote);
00230
00236 rpm_color_t rpmdsColor(const rpmds ds);
00237
00244 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
00245
00252
00253 void rpmdsNotify(rpmds ds, const char * where, int rc);
00254
00260 int rpmdsNext(rpmds ds);
00261
00267 rpmds rpmdsInit(rpmds ds);
00268
00275 int rpmdsFind(rpmds ds, const rpmds ods);
00276
00283 int rpmdsMerge(rpmds * dsp, rpmds ods);
00284
00293 int rpmdsSearch(rpmds ds, rpmds ods);
00294
00301 int rpmdsCompare(const rpmds A, const rpmds B);
00302
00310 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
00311
00319 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
00320
00327 int rpmdsRpmlib(rpmds * dsp, const void * tblp);
00328
00329 #ifdef __cplusplus
00330 }
00331 #endif
00332
00333 #endif