これらの大本の問題は、cloopfs の記録形式にある。各ブロックへの index が header の直後にあるのがいけないのである。この index の大きさは、処理するファイルの大きさがわからない限り、未確定である。それゆえ、この領域を確保するのに mkuzip は stat() を使い、create_compressed_fs() は malloc で全てを一時的に保持するなどとやっているのである。 それに加えて、バージョン番号を保持していない。こちらも、かなり致命的な欠陥である。どこで、見かけたかは覚えていないが、既にこの形式が三番目のものであるらしい。悪いがβ版の物にしか見えない。拡張性を持たせたいのであらば、バージョン番号は必須である。余談ではあるが、TCP/IP にも各パケット毎にバージョン番号は記録されている。 さて、以上の考察を参考に変更すると、 [header][bl