summaryrefslogtreecommitdiff
path: root/src/cuirass/utils.scm
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2016-12-20 19:03:52 +0100
committerMathieu Lirzin <mthl@gnu.org>2016-12-28 18:18:37 +0100
commit16aec469d45a9339f117cd6427aebe8d7b80e5bc (patch)
tree7e60b6f3521803e2fc27208e542afc235ad19b32 /src/cuirass/utils.scm
parenta6807cb29c1013851f62a0e32adc1b3dee66b270 (diff)
downloadcuirass-16aec469d45a9339f117cd6427aebe8d7b80e5bc.tar
cuirass-16aec469d45a9339f117cd6427aebe8d7b80e5bc.tar.gz
repo: Add <repo> record datatype.
* src/cuirass/utils.scm (call-with-temporary-directory): New procedure. * src/cuirass/repo.scm: Use it. New file. * tests/repo.scm: New tests. * Makefile.am (dist_pkgmodule_DATA, TESTS): Add them.
Diffstat (limited to 'src/cuirass/utils.scm')
-rw-r--r--src/cuirass/utils.scm19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cuirass/utils.scm b/src/cuirass/utils.scm
index 56b9c6a..bcd5e12 100644
--- a/src/cuirass/utils.scm
+++ b/src/cuirass/utils.scm
@@ -25,6 +25,7 @@
alist?
mkdir-p
make-user-module
+ call-with-temporary-directory
;; Macros.
λ*
with-directory-excursion))
@@ -81,3 +82,21 @@
(module-use! module (resolve-interface iface)))
modules)
module))
+
+
+;;;
+;;; Temporary files.
+;;;
+
+(define (call-with-temporary-directory proc)
+ "Call PROC with a name of a temporary directory; close the directory and
+delete it when leaving the dynamic extent of this call."
+ (let* ((parent (or (getenv "TMPDIR") "/tmp"))
+ (tmp-dir (string-append parent "/" (basename (tmpnam)))))
+ (mkdir-p tmp-dir)
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (proc tmp-dir))
+ (lambda ()
+ (false-if-exception (rmdir tmp-dir))))))