rpm  4.10.0
rpmds.h
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     /* bit 4 unused */
00031     RPMSENSE_POSTTRANS  = (1 << 5),     
00032     RPMSENSE_PREREQ     = (1 << 6),     /* legacy prereq dependency */
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     /* bits 20-23 unused */
00048     RPMSENSE_RPMLIB = (1 << 24),        
00049     RPMSENSE_TRIGGERPREIN = (1 << 25),  
00050     RPMSENSE_KEYRING    = (1 << 26),
00051     /* bit 27 unused */
00052     RPMSENSE_CONFIG     = (1 << 28)
00053 };
00054 
00055 typedef rpmFlags rpmsenseFlags;
00056 
00057 #define RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
00058                                          /* less, greater, equal.          */
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 /* FIX: rpmMessage annotation is a lie */
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 
00320 int rpmdsMatchesDep (const Header h, int ix, const rpmds req, int nopromote);
00321 
00329 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
00330 
00337 int rpmdsRpmlib(rpmds * dsp, const void * tblp);
00338 
00339 #ifdef __cplusplus
00340 }
00341 #endif
00342 
00343 #endif  /* H_RPMDS */