X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fps-to-png.scm;h=f20ca61b41a471c0b7646c9248915fdf1138670f;hb=9e877e5aea3fb6cf6e7873d1e8797672cda450f5;hp=e890eaa746f52df2b5be0cd7a5d71f66e1e9be96;hpb=e54464202c43ce23cd5667a2e42aca0905efb44e;p=lilypond.git diff --git a/scm/ps-to-png.scm b/scm/ps-to-png.scm index e890eaa746..f20ca61b41 100644 --- a/scm/ps-to-png.scm +++ b/scm/ps-to-png.scm @@ -52,7 +52,10 @@ '("pnmtopng")))) (define (scale-down-image factor file) - (let* ((old (string-append file ".old")) + (let* ((port-tmp1 (make-tmpfile)) + (tmp1-name (port-filename port-tmp1)) + (port-tmp2 (make-tmpfile)) + (tmp2-name (port-filename port-tmp2)) ;; Netpbm commands (pngtopnm, pnmscale, pnmtopng) ;; outputs only standard output instead of a file. ;; So we need pipe and redirection. @@ -61,14 +64,22 @@ (cmd (ly:format "~a \"~a\" | ~a -reduce ~a | ~a -compression 9 > \"~a\"" - (search-pngtopam) old + (search-pngtopam) tmp1-name (search-pamscale) factor (search-pnmtopng) - file))) + tmp2-name))) - (rename-file file old) + (close-port port-tmp1) + (close-port port-tmp2) + (ly:debug (_ "Copying `~a' to `~a'...") file tmp1-name) + (copy-binary-file file tmp1-name) (ly:system-with-shell cmd) - (delete-file old))) + (ly:debug (_ "Copying `~a' to `~a'...") tmp2-name file) + (copy-binary-file tmp2-name file) + (ly:debug (_ "Deleting `~a'...") tmp1-name) + (delete-file tmp1-name) + (ly:debug (_ "Deleting `~a'...") tmp2-name) + (delete-file tmp2-name))) (define-public (ps-page-count ps-name) (let* ((byte-count 10240)