summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/cache.sgml92
1 files changed, 61 insertions, 31 deletions
diff --git a/doc/cache.sgml b/doc/cache.sgml
index 43f8d4fff..dd8ca9277 100644
--- a/doc/cache.sgml
+++ b/doc/cache.sgml
@@ -4,7 +4,7 @@
<title>APT Cache File Format</title>
<author>Jason Gunthorpe <email>jgg@debian.org</email></author>
-<version>$Id: cache.sgml,v 1.1 1998/07/02 02:58:12 jgg Exp $</version>
+<version>$Id: cache.sgml,v 1.2 1998/07/05 05:43:09 jgg Exp $</version>
<abstract>
This document describes the complete implementation and format of the APT
@@ -19,7 +19,7 @@ structures used by the package library and the APT GUI.
</abstract>
<copyright>
-Copyright &copy; Jason Gunthorpe, 1997.
+Copyright &copy; Jason Gunthorpe, 1997-1998.
<p>
APT and this document are free software; you can redistribute them and/or
modify them under the terms of the GNU General Public License as published
@@ -81,7 +81,7 @@ effects.
Every item in every structure is stored as the index to that structure.
What this means is that once the files is mmaped every data access has to
go through a fixup stage to get a real memory pointer. This is done
-by taking the tndex, multiplying it by the type size and then adding
+by taking the index, multiplying it by the type size and then adding
it to the start address of the memory block. This sounds complex, but
in C it is a single array dereference. Because all items are aligned to
their size and indexs are stored as multiples of the size of the structure
@@ -133,7 +133,8 @@ This is the first item in the file.
unsigned short VersionSz;
unsigned short DependencySz;
unsigned short ProvidesSz;
-
+ unsigned short VerFileSz;
+
// Structure counts
unsigned long PackageCount;
unsigned long VersionCount;
@@ -144,11 +145,14 @@ This is the first item in the file.
unsigned long FileList; // PackageFile
unsigned long StringList; // StringItem
- // Pool structures
- unsigned long PoolStart[6];
- unsigned long PoolSize[6];
- unsigned long PoolAln[6];
-
+ // Allocation pools
+ struct
+ {
+ unsigned long ItemSize;
+ unsigned long Start;
+ unsigned long Count;
+ } Pools[7];
+
// Package name lookup
unsigned long HashTable[512]; // Package
};
@@ -173,6 +177,7 @@ be erased and rebuilt if it is true.
<tag>PackageFileSz
<tag>VersionSz
<tag>DependencySz
+<tag>VerFileSz
<tag>ProvidesSz<item>
*Sz contains the sizeof() that particular structure. It is used as an
extra consistancy check on the structure of the file.
@@ -198,15 +203,14 @@ This contains a list of all the unique strings (string item type strings) in
the cache. The parser reads this list into memory so it can match strings
against it.
-<tag>PoolStart
-<tag>PoolSize
-<tag>PoolAln<item>
+<tag>Pools<item>
The Pool structures manage the allocation pools that the generator uses.
-Start indicates the first byte of the pool, Size is the number of bytes
-remaining in the pool and Aln (alignment) is the structure size of the pool.
-An Aln of 0 indicates the slot is empty. There should be the same number of
-slots as there are structure types. The generator stores this information
-so future additions can make use of any unused pool blocks.
+Start indicates the first byte of the pool, Count is the number of objects
+remaining in the pool and ItemSize is the structure size (alignment factor)
+of the pool. An ItemSize of 0 indicates the pool is empty. There should be
+the same number of pools as there are structure types. The generator
+stores this information so future additions can make use of any unused pool
+blocks.
<tag>HashTable<item>
HashTable is a hash table that provides indexing for all of the packages.
@@ -260,7 +264,7 @@ the Header->HashTable.
// Unique ID for this pkg
unsigned short ID;
- unsigned short Flags;
+ unsigned long Flags;
};
</example>
@@ -349,7 +353,7 @@ Header.FileList
// Linked list
unsigned long NextFile; // PackageFile
unsigned short ID;
- unsigned short Flags;
+ unsigned long Flags;
time_t mtime; // Modification time
};
</example>
@@ -396,16 +400,15 @@ VerStr).
struct Version
{
unsigned long VerStr; // Stringtable
- unsigned long File; // PackageFile
unsigned long Section; // StringTable (StringItem)
// Lists
+ unsigned long FileList; // VerFile
unsigned long NextVer; // Version
unsigned long DependsList; // Dependency
unsigned long ParentPkg; // Package
unsigned long ProvidesList; // Provides
-
- unsigned long Offset;
+
unsigned long Size;
unsigned long InstalledSize;
unsigned short ID;
@@ -417,11 +420,11 @@ VerStr).
<tag>VerStr<item>
This is the complete version string.
-<tag>File<item>
-References the PackageFile that this version came out of. File can be used
-to determine what distribution the Version applies to. If File is 0 then
-this is a blank version. The structure should also have a 0 in all other
-fields excluding VerStr and Possibly NextVer.
+<tag>FileList<item>
+References the all the PackageFile's that this version came out of. FileList
+can be used to determine what distribution(s) the Version applies to. If
+FileList is 0 then this is a blank version. The structure should also have
+a 0 in all other fields excluding VerStr and Possibly NextVer.
<tag>Section<item>
This string indicates which section it is part of. The string should be
@@ -440,10 +443,6 @@ to determine the package.
<tag>ProvidesList<item>
Head of the linked list of Provides::NextPkgProv, forward provides.
-<tag>Offset<item>
-The byte offset of the first line of this item in the specified
-PackageFile
-
<tag>Size
<tag>InstalledSize<item>
The archive size for this version. For debian this is the size of the .deb
@@ -565,6 +564,37 @@ Next link in the singly linked list of provides for 'Version'.
</taglist>
<!-- }}} -->
+<!-- VerFile {{{ -->
+<!-- ===================================================================== -->
+<sect>VerFile
+<p>
+VerFile associates a version with a PackageFile, this allows a full
+description of all Versions in all files (and hence all sources) under
+consideration.
+
+<example>
+ struct pkgCache::VerFile
+ {
+ unsigned long File; // PackageFile
+ unsigned long NextFile; // PkgVerFile
+ unsigned long Offset;
+ unsigned short Size;
+ }
+</example>
+<taglist>
+<tag>File<item>
+The index of the package file that this version was found in.
+
+<tag>NextFile<item>
+The next step in the linked list.
+
+<tag>Offset
+<tag>Size<item>
+These describe the exact position in the package file for the section from
+this version.
+</taglist>
+
+ <!-- }}} -->
<!-- StringItem {{{ -->
<!-- ===================================================================== -->
<sect>StringItem