diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:50:39 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:50:39 +0000 |
commit | c59667c189fa698c540c8bf42473ac00ec6fab62 (patch) | |
tree | 4ade92b1254459d78fad28cab46c7904d240647b /doc/cache.sgml | |
parent | 9ddf70302ae6999209807362e6c2ff4e066b9b32 (diff) |
Sync with changes to code
Author: jgg
Date: 1998-07-05 05:43:09 GMT
Sync with changes to code
Diffstat (limited to 'doc/cache.sgml')
-rw-r--r-- | doc/cache.sgml | 92 |
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 © Jason Gunthorpe, 1997. +Copyright © 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 |