00001 #ifndef __RPMVERSION_H__
00002 #define __RPMVERSION_H__
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 extern uint32_t rpmlibVersion(void)
00062 ;
00063 extern uint32_t rpmlibTimestamp(void)
00064 ;
00065 extern uint32_t rpmlibVendor(void)
00066 ;
00067
00068
00069 #define RPMLIB_VERSION RPMLIB_VERSION_ENCODE(5,0,r,3,0,_)
00070 #define RPMLIB_TIMESTAMP RPMLIB_TIMESTAMP_ENCODE(2008,3,3,0,0)
00071 #define RPMLIB_VENDOR RPMLIB_VENDOR_ENCODE('R','P','M','5')
00072
00073
00074 #define RPMLIB_VERSION_ENCODE(major,minor,type,micro,revision,snap) \
00075 ( RPMLIB_BITFIELD_SET(31,27,(major)) \
00076 | RPMLIB_BITFIELD_SET(26,21,(minor)) \
00077 | RPMLIB_BITFIELD_SET(20,18,RPMLIB_VERSION_ENCODE_T(type)) \
00078 | RPMLIB_BITFIELD_SET(17,10,(micro)) \
00079 | RPMLIB_BITFIELD_SET(9,1,(revision)) \
00080 | RPMLIB_BITFIELD_SET(0,0,RPMLIB_VERSION_ENCODE_S(snap)))
00081 #define RPMLIB_VERSION_ENCODE_T(type) RPMLIB_VERSION_ENCODE_T_##type
00082 #define RPMLIB_VERSION_ENCODE_T__ 0
00083 #define RPMLIB_VERSION_ENCODE_T_a 1
00084 #define RPMLIB_VERSION_ENCODE_T_b 2
00085 #define RPMLIB_VERSION_ENCODE_T_c 3
00086 #define RPMLIB_VERSION_ENCODE_T_r 4
00087 #define RPMLIB_VERSION_ENCODE_S(snap) RPMLIB_VERSION_ENCODE_S_##snap
00088 #define RPMLIB_VERSION_ENCODE_S__ 0
00089 #define RPMLIB_VERSION_ENCODE_S_s 1
00090
00091
00092 #define RPMLIB_TIMESTAMP_ENCODE(year,month,date,hour,minute) \
00093 ( RPMLIB_BITFIELD_SET(31,20,(year)) \
00094 | RPMLIB_BITFIELD_SET(19,16,(month)) \
00095 | RPMLIB_BITFIELD_SET(15,11,(date)) \
00096 | RPMLIB_BITFIELD_SET(10,6,(hour)) \
00097 | RPMLIB_BITFIELD_SET(5,0,(minute)))
00098
00099
00100 #define RPMLIB_VENDOR_ENCODE(c1,c2,c3,c4) \
00101 ( RPMLIB_BITFIELD_SET(31,24,(c1)) \
00102 | RPMLIB_BITFIELD_SET(23,16,(c2)) \
00103 | RPMLIB_BITFIELD_SET(15,8,(c3)) \
00104 | RPMLIB_BITFIELD_SET(7,0,(c4)))
00105
00106
00107 #define RPMLIB_VERSION_LT(major,minor,type,micro,revision,snap) \
00108 (RPMLIB_VERSION < RPMLIB_VERSION_ENCODE((major),(minor),(type),(micro),(revision),(snap)))
00109 #define RPMLIB_VERSION_LE(major,minor,type,micro,revision,snap) \
00110 (RPMLIB_VERSION <= RPMLIB_VERSION_ENCODE((major),(minor),(type),(micro),(revision),(snap)))
00111 #define RPMLIB_VERSION_EQ(major,minor,type,micro,revision,snap) \
00112 (RPMLIB_VERSION == RPMLIB_VERSION_ENCODE((major),(minor),(type),(micro),(revision),(snap)))
00113 #define RPMLIB_VERSION_GE(major,minor,type,micro,revision,snap) \
00114 (RPMLIB_VERSION >= RPMLIB_VERSION_ENCODE((major),(minor),(type),(micro),(revision),(snap)))
00115 #define RPMLIB_VERSION_GT(major,minor,type,micro,revision,snap) \
00116 (RPMLIB_VERSION > RPMLIB_VERSION_ENCODE((major),(minor),(type),(micro),(revision),(snap)))
00117
00118
00119 #define RPMLIB_TIMESTAMP_LT(year,month,date,hour,minute) \
00120 (RPMLIB_TIMESTAMP < RPMLIB_TIMESTAMP_ENCODE((year),(month),(date),(hour),(minute)))
00121 #define RPMLIB_TIMESTAMP_LE(major,minor,type,micro,revision) \
00122 (RPMLIB_TIMESTAMP <= RPMLIB_TIMESTAMP_ENCODE((year),(month),(date),(hour),(minute)))
00123 #define RPMLIB_TIMESTAMP_EQ(major,minor,type,micro,revision) \
00124 (RPMLIB_TIMESTAMP == RPMLIB_TIMESTAMP_ENCODE((year),(month),(date),(hour),(minute)))
00125 #define RPMLIB_TIMESTAMP_GE(major,minor,type,micro,revision) \
00126 (RPMLIB_TIMESTAMP >= RPMLIB_TIMESTAMP_ENCODE((year),(month),(date),(hour),(minute)))
00127 #define RPMLIB_TIMESTAMP_GT(major,minor,type,micro,revision) \
00128 (RPMLIB_TIMESTAMP > RPMLIB_TIMESTAMP_ENCODE((year),(month),(date),(hour),(minute)))
00129
00130
00131 #define RPMLIB_VENDOR_EQ(c1,c2,c3,c4) \
00132 (RPMLIB_VENDOR == RPMLIB_VENDOR_ENCODE((c1),(c2),(c3),(c4)))
00133
00134
00135 #define RPMLIB_BITFIELD_SET(l,r,n) \
00136 (((n) & ((1<<(((l)-(r))+1))-1) ) << (r))
00137
00138 #ifdef __cplusplus
00139 }
00140 #endif
00141
00142 #endif