diff --git a/src/documentation/content/xdocs/poifs/fileformat.xml b/src/documentation/content/xdocs/poifs/fileformat.xml index 30451e81b..5aefd2859 100644 --- a/src/documentation/content/xdocs/poifs/fileformat.xml +++ b/src/documentation/content/xdocs/poifs/fileformat.xml @@ -54,6 +54,11 @@ with the extension ".doc", you would actually have a POIFS file system with a document file archived inside of that file system.

+

Note - this document is a good overview and explanation of + the file format, but for the very nitty-gritty details, + you should refer to + [MS-CFB].pdf + in the (now public) Microsoft Documentation.

Document Conventions

This document utilizes the numeric types as described by @@ -169,18 +174,22 @@ public int getShort (byte[] rec) 0x48 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.

-

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.

+

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.

+ blocks 236 through 362, and so on.

+

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).

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 diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 85e9519a1..14362608b 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 32903 - Correct XBAT chaining explanation in /poifs/fileformat.html 50829 - Support for getting the tables associated with a XSSFSheet 50299 - More XSSFColor updates for ARGB vs RGB 50581 - Use stax:stax-api instead of org.apache.geronimo.specs:geronimo-stax-api_1.0_spec