Go to the documentation of this file.00001 #ifndef H_RPMEVR
00002 #define H_RPMEVR
00003
00009 #ifdef __cplusplus
00010 extern "C" {
00011 #endif
00012
00015
00016
00017 extern int _rpmevr_debug;
00018
00019
00020 typedef struct EVR_s * EVR_t;
00021
00025
00026 typedef enum evrFlags_e {
00027 #if defined(_RPMEVR_INTERNAL)
00028 RPMSENSE_ANY = 0,
00029
00030 RPMSENSE_SERIAL = (1 << 0),
00031
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),
00038 RPMSENSE_CONFLICTS = (1 << 5),
00039 #endif
00040 RPMSENSE_PREREQ = (1 << 6),
00041 #if defined(_RPMEVR_INTERNAL)
00042 RPMSENSE_OBSOLETES = (1 << 7),
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
00071
00072 typedef enum evrFlags_e rpmsenseFlags;
00073
00074 #define RPMSENSE_SENSEMASK 0x0e
00075
00076 #define RPMSENSE_NOTEQUAL (RPMSENSE_EQUAL ^ RPMSENSE_SENSEMASK)
00077
00078 #if defined(_RPMEVR_INTERNAL)
00079
00082 struct EVR_s {
00083 const char * str;
00084
00085 const char * E;
00086 unsigned long Elong;
00087
00088 const char * V;
00089
00090 const char * R;
00091 evrFlags Flags;
00092 };
00093
00094 #define RPMSENSE_TRIGGER \
00095 (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
00096
00097 #define _ALL_REQUIRES_MASK (\
00098 RPMSENSE_INTERP | \
00099 RPMSENSE_SCRIPT_PRE | \
00100 RPMSENSE_SCRIPT_POST | \
00101 RPMSENSE_SCRIPT_PREUN | \
00102 RPMSENSE_SCRIPT_POSTUN | \
00103 RPMSENSE_SCRIPT_VERIFY | \
00104 RPMSENSE_FIND_REQUIRES | \
00105 RPMSENSE_MISSINGOK | \
00106 RPMSENSE_SCRIPT_PREP | \
00107 RPMSENSE_SCRIPT_BUILD | \
00108 RPMSENSE_SCRIPT_INSTALL | \
00109 RPMSENSE_SCRIPT_CLEAN | \
00110 RPMSENSE_RPMLIB | \
00111 RPMSENSE_KEYRING | \
00112 RPMSENSE_PACKAGE )
00113
00114 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
00115 #define _INSTALL_ONLY_MASK \
00116 _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING)
00117 #define _ERASE_ONLY_MASK \
00118 _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
00119
00120 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
00121 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
00122 #endif
00123
00130 int rpmEVRcmp(const char *a, const char *b)
00131 ;
00132
00139 int rpmEVRparse(const char * evrstr, EVR_t evr)
00140 ;
00141
00148 int rpmEVRcompare(const EVR_t a, const EVR_t b)
00149 ;
00150
00157 extern int (*rpmvercmp)(const char *a, const char *b)
00158 ;
00159
00166 rpmsenseFlags rpmEVRflags(const char *op, const char **end)
00167 ;
00168
00169 #ifdef __cplusplus
00170 }
00171 #endif
00172
00173 #endif