rpm
5.2.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
rpmdb
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) < RPM_MIN_TYPE || (_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
{
57
rpmTag
tag
;
58
rpmTagType
type
;
59
rpmint32_t
offset
;
60
rpmTagCount
count
;
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
/*@null@*/
98
void
*
rpmdb
;
99
struct
stat
sb
;
100
rpmuint32_t
instance
;
101
rpmuint32_t
startoff
;
102
rpmuint32_t
endoff
;
103
struct
rpmop_s
h_loadops
;
104
struct
rpmop_s
h_getops
;
105
/*@owned@*/
106
indexEntry
index
;
107
size_t
indexUsed
;
108
size_t
indexAlloced
;
109
rpmuint32_t
flags
;
110
#define HEADERFLAG_SORTED (1 << 0)
111
#define HEADERFLAG_ALLOCATED (1 << 1)
112
#define HEADERFLAG_LEGACY (1 << 2)
113
#define HEADERFLAG_DEBUG (1 << 3)
114
#define HEADERFLAG_SIGNATURE (1 << 4)
115
#define HEADERFLAG_MAPPED (1 << 5)
116
#define HEADERFLAG_RDONLY (1 << 6)
117
#if defined(__LCLINT__)
118
/*@refs@*/
119
int
nrefs;
120
#endif
121
};
122
123
#ifdef __cplusplus
124
extern
"C"
{
125
#endif
126
136
int
headerVerifyInfo
(
rpmuint32_t
il,
rpmuint32_t
dl,
const
void
* pev,
void
* iv,
int
negate)
137
/*@modifies *iv @*/
;
138
144
/*@-type@*/
/* FIX: cast? */
145
/*@unused@*/
static
inline
146
int
headerUsageCount
(
Header
h)
147
/*@globals fileSystem, internalState @*/
148
/*@modifies fileSystem, internalState @*/
149
{
150
int
nrefs = 0;
151
yarnPossess(h->
_item
.
use
);
152
nrefs = (int)yarnPeekLock(h->
_item
.
use
);
153
yarnRelease(h->
_item
.
use
);
154
return
nrefs;
155
}
156
/*@=type@*/
157
158
#ifdef __cplusplus
159
}
160
#endif
161
162
#endif
/* H_HEADER_INTERNAL */
Generated on Tue Sep 24 2013 23:28:37 for rpm by
1.8.3.1