Hi Christian,
zimlib has already a own iostream implementation so there is no limitation
there. But I see the problem with file systems, which may limit the file size.
I am willing to implement whatever solution we prefer. Larger changes in
zimlib is not an issue, which should affect our decision. I want to have the
best possible solution - not the easies to implement.
The old zeno implementation as well as early implementations of zimlib had a
feature to support multiple files. Instead of opening a single zim (or zeno)
file it was able to open all zim files in one directory.
The last german wikipedia DVD had separate files for text and images as well as
a separate DVDs for images with higher resolution. Just by copying the files
into one directory it was possible to access all content from all zeno files.
I removed the feature for better portability. There is no standard feature to
read all files in one directory.
Your suggestions 2 and 3 imply, that the creator of the zim file needs to
address the problem. He has to split the content. Of course the zimwriter can
help by automatically split the file. But handling zim files will get more
difficult. The user has to know, which files belong together and if he downloads
zim files, he has to download multiple files. It implies, that we must extend
the specification to limit the file size to 2G. I don't like that. I don't want
to limit it per spec.
The solution 1 has really the advantage, that the user can download a single
zim file and split himself when needed. There is even a unix/linux-tool to
split files into pieces named split (isn't it nice how intuitive unix really is
;-) ).
It is quite easy to extend the iostream to support multiple files, so that it
internally join the files into one zim file. We just have to think about the
interface, how to tell zimlib which files to join.
As you suggested a naming convention is one possible solution. We may even use
the schema from split. So if you split foo.zim into parts, the parts are named
foo.zimaa, foo.zimab, foo.zimac and so on. If you tell zimlib to open file
foo.zim and it is not found, it looks for the parts until it do not find any
more.
The user can split the files as needed and join then back using cat. Very easy.
Tommi