summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/stubs.scm
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2020-11-28 09:51:15 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2021-05-11 00:30:12 +0200
commitc4479afbd1159b921e1b9c3155e992e32806b712 (patch)
treed13da0e91c6271edee5087032752c14ef288c13b /src/scm/webid-oidc/stubs.scm
parent814ab9feab59c499d3221971b0524972b0d161a4 (diff)
Use a web cache on the file system
Diffstat (limited to 'src/scm/webid-oidc/stubs.scm')
-rw-r--r--src/scm/webid-oidc/stubs.scm20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/scm/webid-oidc/stubs.scm b/src/scm/webid-oidc/stubs.scm
index 4ed9000..ee24724 100644
--- a/src/scm/webid-oidc/stubs.scm
+++ b/src/scm/webid-oidc/stubs.scm
@@ -120,3 +120,23 @@
(define fixed:scm->json scm->json)
(export (fixed:scm->json . scm->json))
+
+(define (mkdir-p name)
+ (catch 'system-error
+ (lambda ()
+ (mkdir name))
+ (lambda (key subr message args rest)
+ (case (car rest)
+ ((17) ;; file exists
+ #t)
+ ((2) ;; parent does not exist
+ (let ((parent (dirname name)))
+ (unless (equal? parent name)
+ (mkdir-p parent))
+ (mkdir name)))
+ (else
+ (throw key subr message args rest))))))
+
+(define-public (call-with-output-file* filename . args)
+ (mkdir-p (dirname filename))
+ (apply call-with-output-file filename args))