]> git.saurik.com Git - apt.git/commitdiff
Sync with changes to code
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:50:39 +0000 (16:50 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:50:39 +0000 (16:50 +0000)
Author: jgg
Date: 1998-07-05 05:43:09 GMT
Sync with changes to code

doc/cache.sgml

index 43f8d4fffefce19a1ab662bc1679996ac8f2e695..dd8ca9277c2cb866af60abf981a2830241dfe5b1 100644 (file)
@@ -4,7 +4,7 @@
 <title>APT Cache File Format</title>
 
 <author>Jason Gunthorpe <email>jgg@debian.org</email></author>
 <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
 
 <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>
 </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
 <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
 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
 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 VersionSz;
       unsigned short DependencySz;
       unsigned short ProvidesSz;
-
+      unsigned short VerFileSz;
+      
       // Structure counts
       unsigned long PackageCount;
       unsigned long VersionCount;
       // 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
       
       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
    };
       // 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>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.
 <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.
 
 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.
 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.
 
 <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;
 
       // Unique ID for this pkg
       unsigned short ID;
-      unsigned short Flags;
+      unsigned long Flags;
    };
 </example>   
 
    };
 </example>   
 
@@ -349,7 +353,7 @@ Header.FileList
       // Linked list
       unsigned long NextFile;        // PackageFile
       unsigned short ID;
       // Linked list
       unsigned long NextFile;        // PackageFile
       unsigned short ID;
-      unsigned short Flags;
+      unsigned long Flags;
       time_t mtime;                  // Modification time
    };
 </example>   
       time_t mtime;                  // Modification time
    };
 </example>   
@@ -396,16 +400,15 @@ VerStr).
    struct Version
    {
       unsigned long VerStr;            // Stringtable
    struct Version
    {
       unsigned long VerStr;            // Stringtable
-      unsigned long File;              // PackageFile
       unsigned long Section;           // StringTable (StringItem)
       
       // Lists
       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 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;
       unsigned long Size;
       unsigned long InstalledSize;
       unsigned short ID;
@@ -417,11 +420,11 @@ VerStr).
 <tag>VerStr<item>
 This is the complete version string.
 
 <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
 
 <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>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
 <tag>Size
 <tag>InstalledSize<item>
 The archive size for this version. For debian this is the size of the .deb
@@ -562,6 +561,37 @@ Next link in the singly linked list of provides (based off package)
 <tag>NextPkgProv<item>
 Next link in the singly linked list of provides for 'Version'.
 
 <tag>NextPkgProv<item>
 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>
 
                                                                   <!-- }}} -->
 </taglist>
 
                                                                   <!-- }}} -->