]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/backend-library.scm
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / scm / backend-library.scm
index b1cc5f5c4b192a3351077f0f6d9333bc71ff1cf3..8eec32028835b13a9cb9b199850e1e7939540636 100644 (file)
           ;; 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)
@@ -82,6 +98,7 @@
                    "-r1200"
                    (if (ly:bigpdfs) "-dSubsetFonts=false")
                    "-sDEVICE=pdfwrite"
+                   "-dAutoRotatePages=/None"
                    (string-append "-sOutputFile="
                                   (string-join
                                    (string-split pdf-name #\%)
      (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}."
@@ -303,12 +317,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))