Только для архивов, не имеющих собственного сжатия, которые лежат внутри сжималки, не умеющей много файлов. Т. е. zip.rar не рассматриваем на вложенность (это просто rar, в котором лежит просто файл), а tar.xz рассматриваем, потому что xz, gz и т. д. не имеют файловых имён внутри (сжимают тупо монолитный поток данных), а .tar не имеет сжатия (просто тела файлов с перечнем имён).
Т. е. в общем случае рассматриваем одну систему хранения файлов (архиватор) внутри одного алгоритма сжатия (компрессор). И ровно одну, без матрёшек. Например:
Арх. Компр.
RAR RAR -- собственные форматы RAR на то и другое, файл .rar
ZIP ZIP -- собственные форматы ZIP на то и другое, файл .zip
TAR GZ -- сочетание TAR и GZ, файл .tar.gz или .tgz
TAR raw -- голый несжатый TAR, файл .tar
raw GZ -- внутри только один файл, сжатый GZ, файл .gz
TAR XZ -- сочетание TAR и XZ, файл .tar.xz или .txz
и так далее. Tar внутри rar, zip и т. д. уже не рассматриваем на предмет содержимого, отдаём как просто файл.
Думаю, GNU GPL на это навесить будет нормально, только номер версии можно ещё прикинуть. Опять же, там будет много копипасты с линуксовых библиотек, так что...
Ладно, лиха беда начало. Я хотел на выходных позадрачивать синхронизацию потоков и я это сделал :) Правда, получился очень сильно не один уикэнд и адский ад в плане удержания в голове всех взаимодействий, включая все предусмотренные возможности конфликтного доступа и (надеюсь) отсутствие непредусмотренных. С одной стороны, в этом хорошо если я сам через год разберусь меньше чем за целый день, с другой, там вроде всё работает, остаётся копипастить и подключать другие алгоритмы в те же "разъёмы".
В духовном плане нынешнее состояние дел является наследником того самого "велосипеда", потому что тоже пока ничего там нет, кроме враппера к unrar и dummy-доступа к директориям как к виртуальным архивам. Но только в плане общей идеи, потому что у него даже цель другая, не говоря уже о структуре. Технически между ними общего только компилятор и язык :) Больших усилий для того, чтобы забыть тот срам и не делать ничего даже отдалённо подобного -- мне не понадобилось, потому что мне от него страшно и тошно, и вспоминать как раз активно не хочется. Впрочем, тут я в другую сторону шарахнулся, если у меня последовательность выполнения логического условия ИЛИ и операция-запятая вместе предотвращают гонку состояний -- это уже тоже перебор :(
Смотрите, критикуйте, спрашивайте, тестируйте, жалуйтесь. Я сделал то, что мне было важно попрактиковать -- а именно многопоточность при сложном сочетании различных факторов взаимодействия. Могу рассказать, почему там-то и там-то так, а не иначе, и как оно ухитряется вроде бы наконец-то работать. Тьфу-тьфу. Надеюсь, для РАРов этим уже можно пользоваться, не рискуя словить факап и нажравшись вместо своих данных какого-то гэ.
Потом я расскажу, что мне высказал человек, которому я первому это показал :) Но потом :)