#|-------------------- 1.3 |# "./lzma.meta" 381 ((egg "lzma.egg") (files "lzma.scm" "lzma.meta" "lzma.setup" "tests/run.scm") (doc-from-wiki) (documentation "lzma.html") (license "BSD") (category data) ; See http://tokyocabinet.sourceforge.net/misc/lzmalib-0.0.1.tar.gz for the lzmalib sources (author "Alaric Snell-Pym") (synopsis "A wrapper for the liblzma library, providing the excellent LZMA compression algorithm")) #|-------------------- 1.3 |# "./lzma.scm" 1283 (module lzma (compress decompress) (import scheme) (import chicken) (import foreign) (use lolevel) (foreign-declare "#include ") (foreign-declare "static int lzma_return_buffer_len;") (define-foreign-variable lzma-return-buffer-len int "lzma_return_buffer_len") (define _decompress (foreign-lambda* c-pointer ((blob inblob) (int inlen)) "C_return (lzma_decompress(inblob, inlen, &lzma_return_buffer_len));")) (define _compress (foreign-lambda* c-pointer ((blob inblob) (int inlen)) "C_return (lzma_compress(inblob, inlen, &lzma_return_buffer_len));")) (define _free (foreign-lambda void "lzma_free" c-pointer)) (define (decompress inblob) (let ((ptr (_decompress inblob (blob-size inblob)))) (if (null-pointer? ptr) #f (let ((outblob (make-blob lzma-return-buffer-len))) (begin (move-memory! ptr outblob lzma-return-buffer-len) (_free ptr) outblob))))) (define (compress inblob) (let ((ptr (_compress inblob (blob-size inblob)))) (if (null-pointer? ptr) #f (let ((outblob (make-blob lzma-return-buffer-len))) (begin (move-memory! ptr outblob lzma-return-buffer-len) (_free ptr) outblob)))))) #|-------------------- 1.3 |# "./lzma.setup" 296 (compile -s -O2 -d1 lzma.scm -llzma -j lzma) (compile -c -O2 -d1 lzma.scm -llzma -unit lzma) (compile -s -O2 -d1 lzma.import.scm) ; (install-extension 'lzma '("lzma.o" "lzma.so" "lzma.import.so") '((version 1.3) (static "lzma.o") ;; for static linking (documentation "lzma.html")))