LINUX.ORG.RU

gzip & C


0

0

Имею в буфере html страницу запакованную gzip. Надо распаковать. Сейчас сохраняю ее в файл. Потом gzopen....

А можно ли как-нить обойтись без файлов? Т.е. сделать ungzip из памяти в память?


может fifo проще всего использовать..

dilmah ★★★★★
()

to Nefer

from zlib.h

#define ZLIB_VERSION "1.1.4"

The 'zlib' compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data. This version of the library supports only one compression method (deflation) but other algorithms will be added later and will have the same stream interface.

The library also supports reading and writing FILES in gzip (.gz)format with an interface similar to that of stdio.

Или я что-то не то читаю?

to dilmah А можно подробнее?

Octopus
() автор топика

> А можно подробнее?

я имел в виду что создатели Юникс в своей безграничной мудрости придумали фифо, они же пайпы. Их можно делать командаим mknode или mkfifo. Ну или системным вызовом. Тогда делаешь два пайпа, запускаешь gzip которому делаешь вместо stdin и stdout эти два пайпа, в один пайп пишешь ему сжатый код, из другого пайпа читаешь разжатый. То есть ты все равно работаешь как с файлами с этими пайпами, но они в памяти работают. Вроде так.

Это отличается от того если бы у тебя временный файл был на tmpfs/mfs только тем что ты можешь получать потихоньку результат до того как расжался весь файл. Ну и конечно zlib все равно быстрее должно быть.

dilmah ★★★★★
()

тебе нужно на основе своего буфера создать внутренню структуру для работы zlib .. после этого прогнать ее через deflate и получить результат .. посмотри zlib.h для подробностей .. я пишу на память ..

удачи!

lg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.