rpm 5.3.7
|
00001 #ifndef H_RPMEVR 00002 #define H_RPMEVR 00003 00009 #ifdef __cplusplus 00010 extern "C" { 00011 #endif 00012 00015 /*@-exportlocal@*/ 00016 /*@unchecked@*/ 00017 extern int _rpmevr_debug; 00018 /*@=exportlocal@*/ 00019 00020 typedef /*@abstract@*/ struct EVR_s * EVR_t; 00021 00025 /*@-matchfields@*/ 00026 typedef enum evrFlags_e { 00027 #if defined(_RPMEVR_INTERNAL) 00028 RPMSENSE_ANY = 0, 00029 /*@-enummemuse@*/ 00030 RPMSENSE_SERIAL = (1 << 0), 00031 /*@=enummemuse@*/ 00032 #endif 00033 RPMSENSE_LESS = (1 << 1), 00034 RPMSENSE_GREATER = (1 << 2), 00035 RPMSENSE_EQUAL = (1 << 3), 00036 #if defined(_RPMEVR_INTERNAL) 00037 RPMSENSE_PROVIDES = (1 << 4), /* only used internally by builds */ 00038 RPMSENSE_CONFLICTS = (1 << 5), /* only used internally by builds */ 00039 #endif 00040 RPMSENSE_PREREQ = (1 << 6), 00041 #if defined(_RPMEVR_INTERNAL) 00042 RPMSENSE_OBSOLETES = (1 << 7), /* only used internally by builds */ 00043 RPMSENSE_INTERP = (1 << 8), 00044 RPMSENSE_SCRIPT_PRE = (1 << 9), 00045 RPMSENSE_SCRIPT_POST = (1 << 10), 00046 RPMSENSE_SCRIPT_PREUN = (1 << 11), 00047 RPMSENSE_SCRIPT_POSTUN = (1 << 12), 00048 RPMSENSE_SCRIPT_VERIFY = (1 << 13), 00049 RPMSENSE_FIND_REQUIRES = (1 << 14), 00050 RPMSENSE_FIND_PROVIDES = (1 << 15), 00052 RPMSENSE_TRIGGERIN = (1 << 16), 00053 RPMSENSE_TRIGGERUN = (1 << 17), 00054 RPMSENSE_TRIGGERPOSTUN = (1 << 18), 00055 RPMSENSE_MISSINGOK = (1 << 19), 00056 RPMSENSE_SCRIPT_PREP = (1 << 20), 00057 RPMSENSE_SCRIPT_BUILD = (1 << 21), 00058 RPMSENSE_SCRIPT_INSTALL = (1 << 22), 00059 RPMSENSE_SCRIPT_CLEAN = (1 << 23), 00060 RPMSENSE_RPMLIB = (1 << 24), 00061 RPMSENSE_TRIGGERPREIN = (1 << 25), 00062 RPMSENSE_KEYRING = (1 << 26), 00063 RPMSENSE_STRONG = (1 << 27), 00064 RPMSENSE_CONFIG = (1 << 28), 00065 RPMSENSE_PROBE = (1 << 29), 00066 RPMSENSE_PACKAGE = (1 << 30), 00067 RPMSENSE_SCRIPT_SANITYCHECK = (1 << 31) 00068 #endif 00069 } evrFlags; 00070 /*@=matchfields@*/ 00071 00072 typedef enum evrFlags_e rpmsenseFlags; 00073 00074 #define RPMSENSE_SENSEMASK 0x0e /* Mask to get senses, ie serial, */ 00075 /* less, greater, equal. */ 00076 #define RPMSENSE_NOTEQUAL (RPMSENSE_EQUAL ^ RPMSENSE_SENSEMASK) 00077 00078 #if defined(_RPMEVR_INTERNAL) 00079 00082 struct EVR_s { 00083 /*@owned@*/ 00084 const char * str; 00085 #ifndef DYING 00086 unsigned long Elong; 00087 #endif 00088 evrFlags Flags; 00089 const char * F[5]; 00090 #define RPMEVR_E 1 00091 #define RPMEVR_V 2 00092 #define RPMEVR_R 3 00093 #define RPMEVR_D 4 00094 }; 00095 00096 #define RPMSENSE_TRIGGER \ 00097 (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN) 00098 00099 #define _ALL_REQUIRES_MASK (\ 00100 RPMSENSE_INTERP | \ 00101 RPMSENSE_SCRIPT_PRE | \ 00102 RPMSENSE_SCRIPT_POST | \ 00103 RPMSENSE_SCRIPT_PREUN | \ 00104 RPMSENSE_SCRIPT_POSTUN | \ 00105 RPMSENSE_SCRIPT_VERIFY | \ 00106 RPMSENSE_FIND_REQUIRES | \ 00107 RPMSENSE_MISSINGOK | \ 00108 RPMSENSE_SCRIPT_PREP | \ 00109 RPMSENSE_SCRIPT_BUILD | \ 00110 RPMSENSE_SCRIPT_INSTALL | \ 00111 RPMSENSE_SCRIPT_CLEAN | \ 00112 RPMSENSE_RPMLIB | \ 00113 RPMSENSE_KEYRING | \ 00114 RPMSENSE_PACKAGE ) 00115 00116 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ) 00117 #define _INSTALL_ONLY_MASK \ 00118 _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING) 00119 #define _ERASE_ONLY_MASK \ 00120 _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN) 00121 00122 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK) 00123 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK) 00124 #endif /* _RPMEVR_INTERNAL */ 00125 00132 EVR_t rpmEVRnew(uint32_t Flags, int initialize) 00133 /*@*/; 00134 00140 /*@null@*/ 00141 EVR_t rpmEVRfree(/*@only@*/ EVR_t evr) 00142 /*@modifies evr @*/; 00143 00150 int rpmEVRcmp(const char *a, const char *b) 00151 /*@*/; 00152 00159 int rpmEVRparse(const char * evrstr, EVR_t evr) 00160 /*@modifies evrstr, evr @*/; 00161 00168 int rpmEVRcompare(const EVR_t a, const EVR_t b) 00169 /*@*/; 00170 00177 int rpmEVRoverlap(EVR_t a, EVR_t b) 00178 /*@*/; 00179 00186 extern int (*rpmvercmp)(const char *a, const char *b) 00187 /*@*/; 00188 00195 rpmsenseFlags rpmEVRflags(/*@null@*/const char *op, /*@null@*/const char **end) 00196 /*@modifies *end @*/; 00197 00198 #if defined(_RPMEVR_INTERNAL) 00199 00207 int rpmVersionCompare(Header A, Header B) 00208 /*@globals internalState @*/ 00209 /*@modifies internalState @*/; 00210 #endif 00211 00212 #ifdef __cplusplus 00213 } 00214 #endif 00215 00216 #endif /* H_RPMEVR */