Gauche-tar is a Gauche module which provides reading or writing Tar files written by Gauche only.
Download: Gauche-tar-1.1.2.tgz (2019-5-4)
(use tar) (use gauche.collection) ;;; ;;; Tar iteration using generator. ;;; (let* ((tar (open-input-tar "../testdata/ztestdataposix.tar")) (tar-next (tar->generator tar))) (describe tar) (unwind-protect (begin (format #t "~S" (tar-next)) (format #t "~S" (tar-next))) (close-input-tar tar))) (let* ((tar (open-input-tar "../testdata/ztestdataposix.tar")) (tar-next (tar->generator tar))) (unwind-protect (generator-for-each (^x (format #t "~a\n" (~ x 'name))) tar-next) (format #t "is closed? ~S\n" (~ tar 'is-closed?)) (format #t "is generate? ~S\n" (~ tar 'in-generation?)) (close-input-tar tar))) ;;; ;;; Extract data from tar to buffer. ;;; (let* ((tar (open-input-tar "../testdata/ztestdataposix.tar")) (tar-next (tar->generator tar)) (out (open-output-string))) (unwind-protect (generator-for-each (^x (if (#/archive\.c/ (~ x 'name)) (extract x out))) tar-next) (format #t "output to buffer [~a]\n" (get-output-string out)) (close-input-tar tar))) ;;; ;;; Read tar-gzip. ;;; (let ((tar-gz (open-input-tar-gz "posix-build.tar.gz"))) (guard (exc ((tar-error? exc) (format #t "~a ~a\n" (tar-error-message exc) (tar-error-debug-info exc)))) (map (^x (format #t "~S" x)) tar-gz)))