]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/backend-library.scm
Web-es: Spanish macros for Acknowledgements
[lilypond.git] / scm / backend-library.scm
index 2d03394134eda3730b451feb6299a3cc2f298a8d..240096cad23f45479834688407c875af95993755 100644 (file)
           ;; hmmm.  what's the best failure option?
           (throw 'ly-file-failed)))))
 
+;; 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)
     (if (null? (cdr 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}."
@@ -295,12 +316,12 @@ definition."
 
   (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))