Преамбула:
Capture One умеет (не знаю когда, имел дело только с результатом) писать такие вот .eip-файлы.
Каждый такой .eip - это нежатый ZIP-файл (от ZIP - только контейнер) в котором лежит файлик 0.RAW (вместо RAW - реальное расширение, .IIQ или .NEF или еще чего) и немножко служебных файлов самой C1.
FastRawViewer и RawDigger ходят в эти файлы с помощью libarchive: archive_read_open_fd()/archive_read_next_header(), находят 0.EXT, аллоцируют буфер и читают туда через archive_read_data().
Когда мы затем читаем эти RAW-файлы целиком - ну тратится лишней памяти (на размер RAW), но пережить можно. Однако если из файла читается только превьюшка - аллоцировать буфер на целый файл и читать этот целый файл - ужасно обидно.
Соответственно, вопрос:
А не встречал ли кто 'low level' библиотеки для доступа к ZIP-файлам? Ну то есть мне надо считать оглавление и смещения/размеры данных в файле (и, для гарантии, вид сжатия), а дальше - для нежатых ZIP-ов я бы сделал себе mmap() нужного куска и не читал бы с диска лишнего.