• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

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_debug;
00021 
00024 extern int _rpmds_nopromote;
00025 
00029 typedef enum rpmsenseFlags_e {
00030     RPMSENSE_ANY        = 0,
00031     RPMSENSE_LESS       = (1 << 1),
00032     RPMSENSE_GREATER    = (1 << 2),
00033     RPMSENSE_EQUAL      = (1 << 3),
00034     RPMSENSE_PROVIDES   = (1 << 4), /* only used internally by builds */
00035     RPMSENSE_CONFLICTS  = (1 << 5), /* only used internally by builds */
00036     RPMSENSE_PREREQ     = (1 << 6), /* legacy prereq dependency */
00037     RPMSENSE_OBSOLETES  = (1 << 7), /* only used internally by builds */
00038     RPMSENSE_INTERP     = (1 << 8),     
00039     RPMSENSE_SCRIPT_PRE = (1 << 9),     
00040     RPMSENSE_SCRIPT_POST = (1 << 10),   
00041     RPMSENSE_SCRIPT_PREUN = (1 << 11),  
00042     RPMSENSE_SCRIPT_POSTUN = (1 << 12), 
00043     RPMSENSE_SCRIPT_VERIFY = (1 << 13), 
00044     RPMSENSE_FIND_REQUIRES = (1 << 14), 
00045     RPMSENSE_FIND_PROVIDES = (1 << 15), 
00047     RPMSENSE_TRIGGERIN  = (1 << 16),    
00048     RPMSENSE_TRIGGERUN  = (1 << 17),    
00049     RPMSENSE_TRIGGERPOSTUN = (1 << 18), 
00050     RPMSENSE_MISSINGOK  = (1 << 19),    
00051     RPMSENSE_SCRIPT_PREP = (1 << 20),   
00052     RPMSENSE_SCRIPT_BUILD = (1 << 21),  
00053     RPMSENSE_SCRIPT_INSTALL = (1 << 22),
00054     RPMSENSE_SCRIPT_CLEAN = (1 << 23),  
00055     RPMSENSE_RPMLIB = (1 << 24),        
00056     RPMSENSE_TRIGGERPREIN = (1 << 25),  
00057     RPMSENSE_KEYRING    = (1 << 26),
00058     RPMSENSE_PATCHES    = (1 << 27),
00059     RPMSENSE_CONFIG     = (1 << 28)
00060 } rpmsenseFlags;
00061 
00062 #define RPMSENSE_SENSEMASK      15       /* Mask to get senses, ie serial, */
00063                                          /* less, greater, equal.          */
00064 
00065 #define RPMSENSE_TRIGGER        \
00066         (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00067 
00068 #define _ALL_REQUIRES_MASK      (\
00069     RPMSENSE_INTERP | \
00070     RPMSENSE_SCRIPT_PRE | \
00071     RPMSENSE_SCRIPT_POST | \
00072     RPMSENSE_SCRIPT_PREUN | \
00073     RPMSENSE_SCRIPT_POSTUN | \
00074     RPMSENSE_SCRIPT_VERIFY | \
00075     RPMSENSE_FIND_REQUIRES | \
00076     RPMSENSE_SCRIPT_PREP | \
00077     RPMSENSE_SCRIPT_BUILD | \
00078     RPMSENSE_SCRIPT_INSTALL | \
00079     RPMSENSE_SCRIPT_CLEAN | \
00080     RPMSENSE_RPMLIB | \
00081     RPMSENSE_KEYRING | \
00082     RPMSENSE_PREREQ)
00083 
00084 #define _notpre(_x)             ((_x) & ~RPMSENSE_PREREQ)
00085 #define _INSTALL_ONLY_MASK \
00086     _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING)
00087 #define _ERASE_ONLY_MASK  \
00088     _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00089 
00090 #define isLegacyPreReq(_x)  (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
00091 #define isInstallPreReq(_x)     ((_x) & _INSTALL_ONLY_MASK)
00092 #define isErasePreReq(_x)       ((_x) & _ERASE_ONLY_MASK)
00093 
00100 rpmds rpmdsUnlink (rpmds ds, const char * msg);
00107 rpmds rpmdsLink (rpmds ds, const char * msg);
00108 
00114 rpmds rpmdsFree(rpmds ds);
00122 rpmds rpmdsNew(Header h, rpmTag tagN, int flags);
00123 
00130 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
00131 
00139 rpmds rpmdsThis(Header h, rpmTag tagN, rpmsenseFlags Flags);
00140 
00149 rpmds rpmdsSingle(rpmTag tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
00150 
00156 int rpmdsCount(const rpmds ds);
00157 
00163 int rpmdsIx(const rpmds ds);
00164 
00171 int rpmdsSetIx(rpmds ds, int ix);
00172 
00178 const char * rpmdsDNEVR(const rpmds ds);
00179 
00185 const char * rpmdsN(const rpmds ds);
00186 
00192 const char * rpmdsEVR(const rpmds ds);
00193 
00199 rpmsenseFlags rpmdsFlags(const rpmds ds);
00200 
00206 rpmTag rpmdsTagN(const rpmds ds);
00207 
00213 time_t rpmdsBT(const rpmds ds);
00214 
00221 time_t rpmdsSetBT(const rpmds ds, time_t BT);
00222 
00236 int rpmdsNoPromote(const rpmds ds);
00237 
00244 int rpmdsSetNoPromote(rpmds ds, int nopromote);
00245 
00251 rpm_color_t rpmdsColor(const rpmds ds);
00252 
00259 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
00260 
00266 int32_t rpmdsRefs(const rpmds ds);
00267 
00274 int32_t rpmdsSetRefs(const rpmds ds, int32_t refs);
00275 
00282 /* FIX: rpmMessage annotation is a lie */
00283 void rpmdsNotify(rpmds ds, const char * where, int rc);
00284 
00290 int rpmdsNext(rpmds ds);
00291 
00297 rpmds rpmdsInit(rpmds ds);
00298 
00305 int rpmdsFind(rpmds ds, const rpmds ods);
00306 
00313 int rpmdsMerge(rpmds * dsp, rpmds ods);
00314 
00323 int rpmdsSearch(rpmds ds, rpmds ods);
00324 
00325 
00332 int rpmdsCompare(const rpmds A, const rpmds B);
00333 
00342 void rpmdsProblem(rpmps ps, const char * pkgNEVR, const rpmds ds,
00343                 const fnpyKey * suggestedKeys,
00344                 int adding);
00345 
00353 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
00354 
00362 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
00363 
00370 int rpmdsRpmlib(rpmds * dsp, void * tblp);
00371 
00372 #ifdef __cplusplus
00373 }
00374 #endif
00375 
00376 #endif  /* H_RPMDS */

Generated on Mon Aug 9 2010 13:55:27 for rpm by  doxygen 1.7.1