nar: 'write-file' can write to non-file ports.
* guix/nar.scm (write-contents): Use 'sendfile' only when P is a file port. * tests/nar.scm ("write-file supports non-file output ports"): New test.master
parent
86d07a5514
commit
a93e91ff48
|
@ -112,7 +112,8 @@
|
|||
(write-long-long size p)
|
||||
(call-with-binary-input-file file
|
||||
;; Use `sendfile' when available (Guile 2.0.8+).
|
||||
(if (compile-time-value (defined? 'sendfile))
|
||||
(if (and (compile-time-value (defined? 'sendfile))
|
||||
(file-port? p))
|
||||
(cut sendfile p <> size 0)
|
||||
(cut dump <> p size)))
|
||||
(write-padding size p))
|
||||
|
|
|
@ -183,6 +183,13 @@
|
|||
|
||||
(test-begin "nar")
|
||||
|
||||
(test-assert "write-file supports non-file output ports"
|
||||
(let ((input (string-append (dirname (search-path %load-path "guix.scm"))
|
||||
"/guix"))
|
||||
(output (%make-void-port "w")))
|
||||
(write-file input output)
|
||||
#t))
|
||||
|
||||
(test-assert "write-file + restore-file"
|
||||
(let* ((input (string-append (dirname (search-path %load-path "guix.scm"))
|
||||
"/guix"))
|
||||
|
|
Reference in New Issue