mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-06 21:20:33 +02:00
utils: Have `substitute' restore the file's permission bits.
* guix/build/utils.scm (substitute): Restore FILE's mode before renaming TEMPLATE.
This commit is contained in:
@@ -159,7 +159,8 @@ as (PROC MATCH OUTPUT-PORT)."
|
||||
proc)))
|
||||
pattern+procs))
|
||||
(template (string-append file ".XXXXXX"))
|
||||
(out (mkstemp! template)))
|
||||
(out (mkstemp! template))
|
||||
(mode (stat:mode (stat file))))
|
||||
(with-throw-handler #t
|
||||
(lambda ()
|
||||
(call-with-input-file file
|
||||
@@ -168,18 +169,20 @@ as (PROC MATCH OUTPUT-PORT)."
|
||||
(if (eof-object? line)
|
||||
#t
|
||||
(begin
|
||||
(for-each (match-lambda
|
||||
((regexp . proc)
|
||||
(cond ((regexp-exec regexp line)
|
||||
=>
|
||||
(lambda (m)
|
||||
(proc m out)))
|
||||
(else
|
||||
(display line out)
|
||||
(newline out)))))
|
||||
rx+proc)
|
||||
(or (any (match-lambda
|
||||
((regexp . proc)
|
||||
(and=> (regexp-exec regexp line)
|
||||
(lambda (m)
|
||||
(proc m out)
|
||||
#t))))
|
||||
rx+proc)
|
||||
(begin
|
||||
(display line out)
|
||||
(newline out)
|
||||
#t))
|
||||
(loop (read-line in)))))))
|
||||
(close out)
|
||||
(chmod template mode)
|
||||
(rename-file template file))
|
||||
(lambda (key . args)
|
||||
(false-if-exception (delete-file template))))))
|
||||
|
||||
Reference in New Issue
Block a user