diff options
author | Mathieu Othacehe <m.othacehe@gmail.com> | 2019-10-10 17:32:24 +0200 |
---|---|---|
committer | Mathieu Othacehe <m.othacehe@gmail.com> | 2019-10-10 17:32:24 +0200 |
commit | 4d14902b9402a83db444d8d6818d0a4f438ce8c4 (patch) | |
tree | 85f05a0540ebcd4a1f192096c36271a287eb9fe8 /guix/scripts/download.scm | |
parent | 647cfcf68184e8558fcea751ef6d95b6e5d86ae1 (diff) | |
parent | 6c50e1dc0625f89884cff40b22627091efa37708 (diff) |
Merge branch 'master' into core-updates
Diffstat (limited to 'guix/scripts/download.scm')
-rw-r--r-- | guix/scripts/download.scm | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index d8fe71ce12..22cd75ea0b 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -33,6 +33,7 @@ #:use-module (web uri) #:use-module (ice-9 match) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-14) #:use-module (srfi srfi-26) #:use-module (srfi srfi-37) #:use-module (rnrs bytevectors) @@ -54,9 +55,23 @@ (url-fetch url file #:mirrors %mirrors))) file)) +(define (ensure-valid-store-file-name name) + "Replace any character not allowed in a stror name by an underscore." + + (define valid + ;; according to nix/libstore/store-api.cc + (string->char-set (string-append "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" "+-._?="))) + (string-map (lambda (c) + (if (char-set-contains? valid c) c #\_)) + name)) + + (define* (download-to-store* url #:key (verify-certificate? #t)) (with-store store (download-to-store store url + (ensure-valid-store-file-name (basename url)) #:verify-certificate? verify-certificate?))) (define %default-options |