diff options
author | Mathieu Lirzin <mthl@gnu.org> | 2016-12-20 19:03:52 +0100 |
---|---|---|
committer | Mathieu Lirzin <mthl@gnu.org> | 2016-12-28 18:18:37 +0100 |
commit | 16aec469d45a9339f117cd6427aebe8d7b80e5bc (patch) | |
tree | 7e60b6f3521803e2fc27208e542afc235ad19b32 /src/cuirass/utils.scm | |
parent | a6807cb29c1013851f62a0e32adc1b3dee66b270 (diff) | |
download | cuirass-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.scm | 19 |
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)))))) |