Difference between revisions of "ZIM file format"
Line 40: | Line 40: | ||
length in byte, all types are littlendian | length in byte, all types are littlendian | ||
=== article entry === | |||
{|{{Prettytable}} | {|{{Prettytable}} | ||
! Field Name !! Type !! Offset !! Length !! Description | ! Field Name !! Type !! Offset !! Length !! Description | ||
|- | |- | ||
| | | redirectFlag || boolean || 0 || 1 || 0 for article | ||
|- | |- | ||
| | | mime || integer || 1 || 1 || mime type code | ||
|- | |- | ||
| | | empty || || 2 || 1 || was compression flag, this is now in the cluster header | ||
|- | |- | ||
| | | namespace || char || 3 || 1 || | ||
|- | |- | ||
| | | cluster number || integer || 4 || 4 || | ||
|- | |- | ||
| | | blob number || integer || 8 || 4 || | ||
|- | |- | ||
| | | extraLen || integer || 12 || 2 || length of extra bytes (title and parameter) | ||
|- | |- | ||
| | |} | ||
=== redirect entry === | |||
{|{{Prettytable}} | |||
! Field Name !! Type !! Offset !! Length !! Description | |||
|- | |||
| redirectFlag || boolean || 0 || 1 || 1 for redirect | |||
|- | |||
| mime || integer || 1 || 1 || unused for redirects | |||
|- | |||
| empty || || 2 || 1 || was compression flag, this is now in the cluster header | |||
|- | |||
| namespace || char || 3 || 1 || | |||
|- | |- | ||
| | | redirect index || integer || 4 || 4 || | ||
|- | |- | ||
| extraLen || integer || | | extraLen || integer || 8 || 2 || length of extra bytes (title and parameter) | ||
|- | |- | ||
|} | |} |
Revision as of 10:58, 4 April 2009
The ZIM file format is based on the Zeno File Format. It starts with a header, which is described here:
Header
length in byte, all types are littlendian
Field Name | Type | Offset | Length | Description |
---|---|---|---|---|
magicNumber | integer | 0 | 4 | Magic number to recognise the file format, must be 72173914 |
version | integer | 4 | 4 | ZIM=4, version of the file format |
uuid | integer | 8 | 16 | unique id of this zim file |
count | integer | 24 | 4 | total number of articles |
indexPtrPos | integer | 28 | 8 | position of the directory pointerlist |
clusterCount | integer | 36 | 4 | number of data clusters |
clusterPtrPos | integer | 40 | 8 | position of the cluster pointer list |
mainPage | integer | 48 | 4 | article index of main page or 0xffffffff if no main page |
layoutPage | integer | 52 | 4 | article index of layout page or 0xffffffffff if no layout page |
Each article in the zim file has a directory entry. Since the directory entry has a variable size, we have a index pointerlist, which is a list of 4-byte offsets, which points to the directory entries.
Index pointer list
The index pointer list is a list of 8 byte offsets to the directory entries. Since directory entries has variable size, this is needed for random access.
Cluster pointer list
The cluster pointer list is a list of 8 byte offsets to the data clusters.
Directory entries
length in byte, all types are littlendian
article entry
Field Name | Type | Offset | Length | Description |
---|---|---|---|---|
redirectFlag | boolean | 0 | 1 | 0 for article |
mime | integer | 1 | 1 | mime type code |
empty | 2 | 1 | was compression flag, this is now in the cluster header | |
namespace | char | 3 | 1 | |
cluster number | integer | 4 | 4 | |
blob number | integer | 8 | 4 | |
extraLen | integer | 12 | 2 | length of extra bytes (title and parameter) |
redirect entry
Field Name | Type | Offset | Length | Description |
---|---|---|---|---|
redirectFlag | boolean | 0 | 1 | 1 for redirect |
mime | integer | 1 | 1 | unused for redirects |
empty | 2 | 1 | was compression flag, this is now in the cluster header | |
namespace | char | 3 | 1 | |
redirect index | integer | 4 | 4 | |
extraLen | integer | 8 | 2 | length of extra bytes (title and parameter) |
Clusters
Data
Mime types
Namespaces
Namespaces seperate different types of data stored in the ZIM File Format.
They can be distinguished by prepending the article namespace before the article name in the URL path, eg. http://localhost/A/Articlename.
Namespace | Description |
---|---|
- | template data |
A | articles |
I | images, files - see Image Handling |
J | images, text - see Image Handling |
U | categories, text - see Category Handling |
V | categories, article list - see Category Handling |
W | deprecated - see Zeno File Format |
X | fulltext index |
Y | deprecated - see Zeno File Format |
Z | deprecated - see Zeno File Format |