Make header struct really opaque outside header.c

- the low-level stuff in signature.c and package.c need entryInfo_s
  and indexEntry_s but not the header itself
- also move the other defines which have no use outside header.c there
This commit is contained in:
Panu Matilainen 2009-12-22 13:25:48 +02:00
parent a14d06482a
commit cef9afbf2a
2 changed files with 26 additions and 28 deletions

View File

@ -68,11 +68,37 @@ static const int typeSizes[16] = {
0
};
typedef enum headerFlags_e {
HEADERFLAG_SORTED = (1 << 0), /*!< Are header entries sorted? */
HEADERFLAG_ALLOCATED = (1 << 1), /*!< Is 1st header region allocated? */
HEADERFLAG_LEGACY = (1 << 2), /*!< Header came from legacy source? */
HEADERFLAG_DEBUG = (1 << 3), /*!< Debug this header? */
} headerFlags;
/** \ingroup header
* The Header data structure.
*/
struct headerToken_s {
void * blob; /*!< Header region blob. */
indexEntry index; /*!< Array of tags. */
int indexUsed; /*!< Current size of tag array. */
int indexAlloced; /*!< Allocated size of tag array. */
unsigned int instance; /*!< Rpmdb instance (offset) */
headerFlags flags;
int nrefs; /*!< Reference count. */
};
/** \ingroup header
* Maximum no. of bytes permitted in a header.
*/
static const size_t headerMaxbytes = (32*1024*1024);
#define INDEX_MALLOC_SIZE 8
#define ENTRY_IS_REGION(_e) \
(((_e)->info.tag >= HEADER_IMAGE) && ((_e)->info.tag < HEADER_REGIONS))
#define ENTRY_IN_REGION(_e) ((_e)->info.offset < 0)
/** \ingroup header
* HEADER_EXT_TAG format function prototype.
* This is allowed to fail, which indicates the tag doesn't exist.

View File

@ -5,12 +5,8 @@
* \file lib/header_internal.h
*/
#include <netinet/in.h>
#include <rpm/header.h>
#define INDEX_MALLOC_SIZE 8
/** \ingroup header
* Description of tag data.
*/
@ -25,10 +21,6 @@ struct entryInfo_s {
#define REGION_TAG_TYPE RPM_BIN_TYPE
#define REGION_TAG_COUNT sizeof(struct entryInfo_s)
#define ENTRY_IS_REGION(_e) \
(((_e)->info.tag >= HEADER_IMAGE) && ((_e)->info.tag < HEADER_REGIONS))
#define ENTRY_IN_REGION(_e) ((_e)->info.offset < 0)
/** \ingroup header
* A single tag from a Header.
*/
@ -40,26 +32,6 @@ struct indexEntry_s {
int rdlen; /*!< No. bytes of data in region. */
};
typedef enum headerFlags_e {
HEADERFLAG_SORTED = (1 << 0), /*!< Are header entries sorted? */
HEADERFLAG_ALLOCATED = (1 << 1), /*!< Is 1st header region allocated? */
HEADERFLAG_LEGACY = (1 << 2), /*!< Header came from legacy source? */
HEADERFLAG_DEBUG = (1 << 3), /*!< Debug this header? */
} headerFlags;
/** \ingroup header
* The Header data structure.
*/
struct headerToken_s {
void * blob; /*!< Header region blob. */
indexEntry index; /*!< Array of tags. */
int indexUsed; /*!< Current size of tag array. */
int indexAlloced; /*!< Allocated size of tag array. */
unsigned int instance; /*!< Rpmdb instance (offset) */
headerFlags flags;
int nrefs; /*!< Reference count. */
};
/**
* Sanity check on no. of tags.
* This check imposes a limit of 65K tags, more than enough.