diff options
author | Roel Janssen <roel@gnu.org> | 2017-03-21 12:15:14 +0100 |
---|---|---|
committer | Roel Janssen <roel@gnu.org> | 2017-03-21 12:15:14 +0100 |
commit | a4f542341511f33ece18d16b68118214da8143ec (patch) | |
tree | 224ebae78a9ce91ccde0b261d72921d446ea75de /guix | |
parent | 193420a80319ed72db511b2d3d3cec62fc941d17 (diff) |
download: Handle username and password properties for FTP URIs.
* guix/build/download.scm (ftp-fetch): Process username and password from a URI.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/build/download.scm | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/guix/build/download.scm b/guix/build/download.scm index 36c815c167..c5dddf83de 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -241,7 +241,18 @@ and 'guix publish', something like (define* (ftp-fetch uri file #:key timeout) "Fetch data from URI and write it to FILE. Return FILE on success. Bail out if the connection could not be established in less than TIMEOUT seconds." - (let* ((conn (ftp-open (uri-host uri) #:timeout timeout)) + (let* ((userinfo (string-split (uri-userinfo uri) #\:)) + (conn (match userinfo + (("") + (ftp-open (uri-host uri) #:timeout timeout)) + (((? string? user)) + (ftp-open (uri-host uri) #:timeout timeout + #:username user)) + (((? string? user) (? string? pass)) + (ftp-open (uri-host uri) #:timeout timeout + #:username user + #:password pass)) + (_ (ftp-open (uri-host uri) #:timeout timeout)))) (size (false-if-exception (ftp-size conn (uri-path uri)))) (in (ftp-retr conn (basename (uri-path uri)) (dirname (uri-path uri))))) |