diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-04-21 22:40:23 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-04-21 22:40:40 +0200 |
commit | 861693f3e71fed8663a3ef9c336c3f3345e1e039 (patch) | |
tree | 5f798b6915114f4658bcbd764ada7a84e4fd6238 /guix/utils.scm | |
parent | 6c365eca6dafca37f0ac34d55221bcf197df49a3 (diff) | |
download | gnu-guix-861693f3e71fed8663a3ef9c336c3f3345e1e039.tar gnu-guix-861693f3e71fed8663a3ef9c336c3f3345e1e039.tar.gz |
Factorize `download-and-store'.
* guix/download.scm (download-to-store): New procedure.
* guix/scripts/download.scm (fetch-and-store): Remove.
(guix-download): Use `download-to-store' instead.
* guix/ui.scm (call-with-temporary-output-file): Move to...
* guix/utils.scm (call-with-temporary-output-file): ... here.
Diffstat (limited to 'guix/utils.scm')
-rw-r--r-- | guix/utils.scm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/guix/utils.scm b/guix/utils.scm index f13e585e2b..ad1c463be8 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -60,6 +60,7 @@ version-compare version>? package-name->name+version + call-with-temporary-output-file fold2)) @@ -464,6 +465,21 @@ introduce the version part." ((head tail ...) (loop tail (cons head prefix)))))) +(define (call-with-temporary-output-file proc) + "Call PROC with a name of a temporary file and open output port to that +file; close the file and delete it when leaving the dynamic extent of this +call." + (let* ((template (string-copy "guix-file.XXXXXX")) + (out (mkstemp! template))) + (dynamic-wind + (lambda () + #t) + (lambda () + (proc template out)) + (lambda () + (false-if-exception (close out)) + (false-if-exception (delete-file template)))))) + (define fold2 (case-lambda ((proc seed1 seed2 lst) |