rpm 5.3.7
|
00001 #ifndef H_HEADER_INTERNAL 00002 #define H_HEADER_INTERNAL 00003 00008 #include <rpmtag.h> 00009 #include <yarn.h> 00010 00011 #if !defined(__LCLINT__) 00012 #include <netinet/in.h> 00013 #endif /* __LCLINT__ */ 00014 00019 #define hdrchkTags(_ntags) ((_ntags) & 0xff000000) 00020 00024 #define hdrchkType(_type) ((_type) < 1 || (_type) > RPM_MAX_TYPE) 00025 00030 #define hdrchkData(_nbytes) ((_nbytes) & 0xc0000000) 00031 00035 /*@unchecked@*/ /*@observer@*/ 00036 extern int rpm_typeAlign[16]; 00037 #define hdrchkAlign(_type, _off) ((_off) & (rpm_typeAlign[_type]-1)) 00038 00042 #define hdrchkRange(_dl, _off) ((_off) < 0 || (_off) > (_dl)) 00043 00044 #define INDEX_MALLOC_SIZE 8 00045 00046 /* 00047 * Teach header.c about legacy tags. 00048 */ 00049 #define HEADER_OLDFILENAMES 1027 00050 #define HEADER_BASENAMES 1117 00051 00055 typedef /*@abstract@*/ struct entryInfo_s * entryInfo; 00056 struct entryInfo_s { 00057 rpmTag tag; 00058 rpmTagType type; 00059 rpmint32_t offset; 00060 rpmTagCount count; 00061 }; 00062 00063 #define REGION_TAG_TYPE RPM_BIN_TYPE 00064 #define REGION_TAG_COUNT sizeof(struct entryInfo_s) 00065 00066 #define ENTRY_IS_REGION(_e) \ 00067 (((_e)->info.tag >= HEADER_IMAGE) && ((_e)->info.tag < HEADER_REGIONS)) 00068 #define ENTRY_IN_REGION(_e) ((_e)->info.offset < 0) 00069 00073 typedef /*@abstract@*/ struct indexEntry_s * indexEntry; 00074 struct indexEntry_s { 00075 struct entryInfo_s info; 00076 /*@owned@*/ 00077 void * data; 00078 size_t length; 00079 size_t rdlen; 00080 }; 00081 00085 struct headerToken_s { 00086 struct rpmioItem_s _item; 00087 unsigned char magic[8]; 00088 /*@only@*/ /*@null@*/ 00089 void * blob; 00090 size_t bloblen; 00091 /*@only@*/ /*@null@*/ 00092 const char * origin; 00093 /*@only@*/ /*@null@*/ 00094 const char * baseurl; 00095 /*@only@*/ /*@null@*/ 00096 const char * digest; 00097 /*@only@*/ /*@null@*/ 00098 const char * parent; 00099 /*@null@*/ 00100 void * rpmdb; 00101 struct stat sb; 00102 rpmuint32_t instance; 00103 rpmuint32_t startoff; 00104 rpmuint32_t endoff; 00105 struct rpmop_s h_loadops; 00106 struct rpmop_s h_getops; 00107 /*@owned@*/ 00108 indexEntry index; 00109 size_t indexUsed; 00110 size_t indexAlloced; 00111 rpmuint32_t flags; 00112 #define HEADERFLAG_SORTED (1 << 0) 00113 #define HEADERFLAG_ALLOCATED (1 << 1) 00114 #define HEADERFLAG_LEGACY (1 << 2) 00115 #define HEADERFLAG_DEBUG (1 << 3) 00116 #define HEADERFLAG_SIGNATURE (1 << 4) 00117 #define HEADERFLAG_MAPPED (1 << 5) 00118 #define HEADERFLAG_RDONLY (1 << 6) 00119 #if defined(__LCLINT__) 00120 /*@refs@*/ 00121 int nrefs; 00122 #endif 00123 }; 00124 00125 #ifdef __cplusplus 00126 extern "C" { 00127 #endif 00128 00138 int headerVerifyInfo(rpmuint32_t il, rpmuint32_t dl, const void * pev, void * iv, int negate) 00139 /*@modifies *iv @*/; 00140 00141 #ifdef __cplusplus 00142 } 00143 #endif 00144 00145 #endif /* H_HEADER_INTERNAL */