Hello,

Attached patch adds support for xz compressed files. Interface is similar to 
gzio: grub_xzio_open() and grub_xzfile_open(). Files: xzio.h and xzio.c

Decompression algorithm is imported (no source code changes) from 
http://tukaani.org/xz/embedded.html and is located in lib/xzembed directory
(files xz_* except xz_wrap.h which is a glue header)

XZ embedded supports only crc32 integration check so if You want to test it
use  `xz --check=crc32` to compress,  It also supports BCJ filters (not enabled 
with this patch) so it is possible to get extra few % compression ratio with 
executables.

known issues:
- decoder dictionary size is hardcoded, discovery at runtime would be better
  (it's on my TODO list)
- grub_file_seek() will break reading (not a big deal, xz streams are not
 seekable afterall, if needed should be possible to implement but will cause 
read performance penatly)


Suggestions and comments are welcome :-)


-- 
Szymon K. Janc
szy...@janc.net.pl // GG: 1383435

Attachment: xzio.diff.bz2
Description: application/bzip

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to