diff --git a/collects/mzlib/tar.ss b/collects/mzlib/tar.ss index 2af5586..d5f6cda 100644 --- a/collects/mzlib/tar.ss +++ b/collects/mzlib/tar.ss @@ -1,5 +1,5 @@ (module tar mzscheme - (require (lib "deflate.ss") (lib "file.ss")) + (require (lib "deflate.ss") (lib "file.ss") (lib "etc.ss")) (define tar-block-size 512) (define tar-name-length 100) @@ -119,13 +119,13 @@ ;; tar-write : (listof relative-path) -> ;; writes a tar file to current-output-port (provide tar->output) - (define (tar->output files . out) - (parameterize ([current-output-port - (if (pair? out) (car out) (current-output-port))]) - (let* ([buf (new-block)] [entry (tar-one-entry buf)]) - (for-each entry files) - ;; two null blocks end-marker - (write-bytes buf) (write-bytes buf)))) + (define tar->output + (opt-lambda (files [out (current-output-port)]) + (parameterize ([current-output-port out]) + (let* ([buf (new-block)] [entry (tar-one-entry buf)]) + (for-each entry files) + ;; two null blocks end-marker + (write-bytes buf) (write-bytes buf))))) ;; tar : output-file paths -> (provide tar) diff --git a/collects/mzlib/zip.ss b/collects/mzlib/zip.ss index 1dbfd6a..e476eb6 100644 --- a/collects/mzlib/zip.ss +++ b/collects/mzlib/zip.ss @@ -1,7 +1,7 @@ ;; A modification of Dave Herman's zip module (module zip mzscheme - (require (lib "deflate.ss") (lib "file.ss")) + (require (lib "deflate.ss") (lib "file.ss") (lib "etc.ss")) ;; =========================================================================== ;; DATA DEFINITIONS @@ -246,19 +246,19 @@ ;; zip-write : (listof relative-path) -> ;; writes a zip file to current-output-port (provide zip->output) - (define (zip->output files . out) - (parameterize ([current-output-port - (if (pair? out) (car out) (current-output-port))]) - (let* ([seekable? (seekable-port? (current-output-port))] - [headers ; note: MzScheme's `map' is always left-to-right - (map (lambda (file) - (zip-one-entry (build-metadata file) seekable?)) - files)]) + (define zip->output + (opt-lambda (files [out (current-output-port)]) + (parameterize ([current-output-port out]) + (let* ([seekable? (seekable-port? (current-output-port))] + [headers ; note: MzScheme's `map' is always left-to-right + (map (lambda (file) + (zip-one-entry (build-metadata file) seekable?)) + files)]) + (when (zip-verbose) + (fprintf (current-error-port) "zip: writing headers...\n")) + (write-central-directory headers)) (when (zip-verbose) - (fprintf (current-error-port) "zip: writing headers...\n")) - (write-central-directory headers)) - (when (zip-verbose) - (fprintf (current-error-port) "zip: done.\n")))) + (fprintf (current-error-port) "zip: done.\n"))))) ;; zip : output-file paths -> (provide zip)