]> source.dussan.org Git - poi.git/commitdiff
Fix bug #32903 - Correct XBAT chaining explanation in /poifs/fileformat.html
authorNick Burch <nick@apache.org>
Fri, 25 Feb 2011 22:12:54 +0000 (22:12 +0000)
committerNick Burch <nick@apache.org>
Fri, 25 Feb 2011 22:12:54 +0000 (22:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1074718 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/poifs/fileformat.xml
src/documentation/content/xdocs/status.xml

index 30451e81b5025cd5e043ce1429ecb0d5b480edaf..5aefd2859dddfd77402b4c6712235764a646bd03 100644 (file)
            with the extension &quot;.doc&quot;, you would actually
            have a POIFS file system with a document file archived
            inside of that file system.</p>
+        <p>Note - this document is a good overview and explanation of
+           the file format, but for the very nitty-gritty details,
+           you should refer to 
+           <link href="http://msdn.microsoft.com/en-us/library/dd942138%28v=prot.13%29.aspx">[MS-CFB].pdf</link>
+           in the (now public) Microsoft Documentation.</p>
       </section>
       <section><title>Document Conventions</title>
         <p>This document utilizes the numeric types as described by
@@ -169,18 +174,22 @@ public int getShort (byte[] rec)
                <em>0x48</em> of the header, there is an int value that
                specifies how many XBAT blocks there are. The XBAT
                blocks begin at the specified index into the array of
-               blocks making up the POIFS file system, and continue in
-               sequence for the specified count of XBAT blocks.</p>
-            <p>Each XBAT block contains the indices of up to 128 BAT
+               blocks making up the POIFS file system, and are chained
+               for the specified count of XBAT blocks.</p>
+            <p>Each XBAT block contains the indices of up to 127 BAT
                blocks, so the document size can be expanded by another
-               8MB for each XBAT block. The BAT blocks indexed by an
+               ~8MB for each XBAT block. The BAT blocks indexed by an
                XBAT block are appended to the end of the list of BAT
                blocks enumerated in the header block. Thus the BAT
                blocks enumerated in the header block are BAT blocks 0
                through 108, the BAT blocks enumerated in the first
-               XBAT block are BAT blocks 109 through 236, the BAT
+               XBAT block are BAT blocks 109 through 235, the BAT
                blocks enumerated in the second XBAT block are BAT
-               blocks 237 through 364, and so on.</p>
+               blocks 236 through 362, and so on.</p>
+             <p>While a normal BAT block holds 128 entries, each XBAT
+               only references 127 BAT blocks. The last, 128th entry
+               in an XBAT is the offset to the next XBAT block in the
+               chain (or -1 if this is the last XBAT).</p>
            <p>Through the use of XBAT blocks, the limit on the
               overall document size is that imposed by the 4-byte
               block indices; if the indices are unsigned ints, the
index 85e9519a1b7648f0a6861e1c1a88eba047b67fcd..14362608b931766a48e656a10cd0c68d1d2b04e1 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta1" date="2010-??-??">
+           <action dev="poi-developers" type="add">32903 - Correct XBAT chaining explanation in /poifs/fileformat.html</action>
            <action dev="poi-developers" type="add">50829 - Support for getting the tables associated with a XSSFSheet</action>
            <action dev="poi-developers" type="fix">50299 - More XSSFColor updates for ARGB vs RGB</action>
            <action dev="poi-developers" type="fix">50581 - Use stax:stax-api instead of org.apache.geronimo.specs:geronimo-stax-api_1.0_spec</action>