rpm  5.4.10
header_internal.h
Go to the documentation of this file.
1 #ifndef H_HEADER_INTERNAL
2 #define H_HEADER_INTERNAL
3 
8 #include <rpmtag.h>
9 #include <yarn.h>
10 
11 #if !defined(__LCLINT__)
12 #include <netinet/in.h>
13 #endif /* __LCLINT__ */
14 
19 #define hdrchkTags(_ntags) ((_ntags) & 0xff000000)
20 
24 #define hdrchkType(_type) ((_type) < 1 || (_type) > RPM_MAX_TYPE)
25 
30 #define hdrchkData(_nbytes) ((_nbytes) & 0xc0000000)
31 
35 /*@unchecked@*/ /*@observer@*/
36 extern int rpm_typeAlign[16];
37 #define hdrchkAlign(_type, _off) ((_off) & (rpm_typeAlign[_type]-1))
38 
42 #define hdrchkRange(_dl, _off) ((_off) < 0 || (_off) > (_dl))
43 
44 #define INDEX_MALLOC_SIZE 8
45 
46 /*
47  * Teach header.c about legacy tags.
48  */
49 #define HEADER_OLDFILENAMES 1027
50 #define HEADER_BASENAMES 1117
51 
55 typedef /*@abstract@*/ struct entryInfo_s * entryInfo;
56 struct entryInfo_s {
61 };
62 
63 #define REGION_TAG_TYPE RPM_BIN_TYPE
64 #define REGION_TAG_COUNT sizeof(struct entryInfo_s)
65 
66 #define ENTRY_IS_REGION(_e) \
67  (((_e)->info.tag >= HEADER_IMAGE) && ((_e)->info.tag < HEADER_REGIONS))
68 #define ENTRY_IN_REGION(_e) ((_e)->info.offset < 0)
69 
73 typedef /*@abstract@*/ struct indexEntry_s * indexEntry;
74 struct indexEntry_s {
75  struct entryInfo_s info;
76 /*@owned@*/
77  void * data;
78  size_t length;
79  size_t rdlen;
80 };
81 
85 struct headerToken_s {
86  struct rpmioItem_s _item;
87  unsigned char magic[8];
88 /*@only@*/ /*@null@*/
89  void * blob;
90  size_t bloblen;
91 /*@only@*/ /*@null@*/
92  const char * origin;
93 /*@only@*/ /*@null@*/
94  const char * baseurl;
95 /*@only@*/ /*@null@*/
96  const char * digest;
97 /*@only@*/ /*@null@*/
98  const char * parent;
99 /*@null@*/
100  void * rpmdb;
101  struct stat sb;
105  struct rpmop_s h_loadops;
106  struct rpmop_s h_getops;
107 /*@owned@*/
108  indexEntry index;
109  size_t indexUsed;
110  size_t indexAlloced;
112 #define HEADERFLAG_SORTED (1 << 0)
113 #define HEADERFLAG_ALLOCATED (1 << 1)
114 #define HEADERFLAG_LEGACY (1 << 2)
115 #define HEADERFLAG_DEBUG (1 << 3)
116 #define HEADERFLAG_SIGNATURE (1 << 4)
117 #define HEADERFLAG_MAPPED (1 << 5)
118 #define HEADERFLAG_RDONLY (1 << 6)
119 #if defined(__LCLINT__)
120 /*@refs@*/
121  int nrefs;
122 #endif
123 };
124 
125 #ifdef __cplusplus
126 extern "C" {
127 #endif
128 
138 int headerVerifyInfo(rpmuint32_t il, rpmuint32_t dl, const void * pev, void * iv, int negate)
139  /*@modifies *iv @*/;
140 
141 #ifdef __cplusplus
142 }
143 #endif
144 
145 #endif /* H_HEADER_INTERNAL */
const char * origin
const char * digest
rpmTagType type
The Header data structure.
int headerVerifyInfo(rpmuint32_t il, rpmuint32_t dl, const void *pev, void *iv, int negate)
Perform simple sanity and range checks on header tag(s).
int rpm_typeAlign[16]
Sanity check on data alignment for data type.
rpmTagCount count
unsigned int rpmuint32_t
Definition: rpmiotypes.h:25
struct entryInfo_s * entryInfo
Description of tag data.
enum rpmTagType_e rpmTagType
Definition: rpmtag.h:46
Cumulative statistics for an operation.
Definition: rpmsw.h:33
rpmuint32_t instance
int rpmint32_t
Definition: rpmiotypes.h:30
rpmuint32_t endoff
rpmuint32_t startoff
rpmuint32_t flags
indexEntry index
struct indexEntry_s * indexEntry
A single tag from a Header.
rpmint32_t offset
const char * parent
const char * baseurl
enum rpmTag_e rpmTag
Definition: rpmtag.h:471
rpmuint32_t rpmTagCount
Definition: rpmtag.h:54