;; hmmm. what's the best failure option?
(throw 'ly-file-failed)))))
-(define-public (sanitize-command-option str)
- "Kill dubious shell quoting."
-
- (string-append
- "\""
- (regexp-substitute/global #f "[^-_ 0-9,.a-zA-Z'\"\\]" str 'pre 'post)
- "\""))
+;; ly:system can't handle pipe and redirection.
+;; This procedure can handle them by using shell.
+(define-public (ly:system-with-shell command)
+ (let ((s (if (eq? PLATFORM 'windows)
+ ;; MinGW (except Cygwin): Use COMSPEC (cmd.exe)
+ ;; FIXME: Command window is displayed briefly
+ (list (or (getenv "COMSPEC")
+ "cmd.exe")
+ "/c")
+ ;; POSIX (also Cygwin): Use /bin/sh
+ (list "/bin/sh"
+ "-c")))
+ (c (list (if (eq? PLATFORM 'windows)
+ ;; MinGW hack: Double quotes can not be used here.
+ ;; So we remove them.
+ ;; FIXME: The filename that contains space
+ ;; can't be handled.
+ (string-join (string-split command #\") "")
+ ;; Other environments (also Cygwin):
+ ;; Double quotes can be used. Pass through.
+ command
+ ))))
+ (ly:system (append s c))))
(define-public (search-executable names)
(define (helper path lst)
(module-remove! output-module x))
missing-stencil-list))
-(define (filter-out pred? lst)
- (filter (lambda (x) (not (pred? x))) lst))
-
(define-public (font-name-split font-name)
"Return @code{(FONT-NAME . DESIGN-SIZE)} from @var{font-name} string
or @code{#f}."
(let* ((font-list (ly:paper-fonts paper))
(pango-fonts (filter ly:pango-font? font-list))
- (other-fonts (filter-out ly:pango-font? font-list))
+ (other-fonts (remove ly:pango-font? font-list))
(other-font-names (map ly:font-name other-fonts))
(pango-only-fonts
- (filter-out (lambda (x)
- (member (pango-font-name x) other-font-names))
- pango-fonts)))
+ (remove (lambda (x)
+ (member (pango-font-name x) other-font-names))
+ pango-fonts)))
(define (font-load-command font)
(let* ((font-name (ly:font-name font))