/* Scheme code to execute before parsing, after .scm init.
This is where -e arguments are appended to. */
-string init_scheme_code_string;
-string init_scheme_variables;
+string init_scheme_code_string_global;
+string init_scheme_variables_global;
/* Generate preview of first system. */
bool make_preview = false;
{_i ("FILE"), "output", 'o', _i ("write output to FILE (suffix will be added)")},
{0, "preview", 'p', _i ("generate a preview of the first system")},
{0, "relocate", 0, _i ("relocate using directory of lilypond program")},
- {0, "safe-mode", 's', _i ("disallow unsafe Scheme and PostScript\n"
- "operations")},
{0, "version", 'v', _i ("show version number and exit")},
{0, "verbose", 'V', _i ("be verbose")},
{0, "warranty", 'w', _i ("show warranty and copyright")},
|| output_backend_global == "texstr");
is_pango_format_global = !is_TeX_format_global;
+ init_scheme_variables_global = "(list " + init_scheme_variables_global + ")";
+ init_scheme_code_global = "(begin " + init_scheme_code_global + ")";
ly_c_init_guile ();
call_constructors ();
init_freetype ();
ly_reset_all_fonts ();
- if (!init_scheme_variables.empty ()
- || !init_scheme_code_string.empty ())
- {
- init_scheme_variables = "(map (lambda (x) (ly:set-option (car x) (cdr x))) (list "
- + init_scheme_variables + "))";
-
- init_scheme_code_string
- = "(begin #t "
- + init_scheme_variables
- + init_scheme_code_string
- + ")";
-
- char const *str0 = init_scheme_code_string.c_str ();
-
- if (be_verbose_global)
- progress_indication (_f ("Evaluating %s", str0));
- scm_c_eval_string ((char *) str0);
- }
/* We accept multiple independent music files on the command line to
reduce compile time when processing lots of small files.
val = arg.substr (eq + 1, arg.length () - 1);
}
- init_scheme_variables
+ init_scheme_variables_global
+= "(cons \'" + key + " " + val + ")\n";
}
break;
case 'j':
jail_spec = option_parser->optional_argument_str0_;
break;
+
case 'e':
- init_scheme_code_string += option_parser->optional_argument_str0_;
+ init_scheme_code_string_global += option_parser->optional_argument_str0_ + string (" ");
break;
case 'w':
warranty ();
case 'V':
be_verbose_global = true;
break;
- case 's':
- init_scheme_variables
- += "(cons \'safe #t)\n";
- break;
case 'p':
make_preview = true;
break;
return SCM_UNSPECIFIED;
}
+LY_DEFINE (ly_command_line_options, "ly:command-line-options", 0, 0, 0, (),
+ "The Scheme specified on command-line with @samp{-d}.")
+{
+ return ly_string2scm (init_scheme_variables_global);
+}
+
+LY_DEFINE (ly_command_line_code, "ly:command-line-code", 0, 0, 0, (),
+ "The Scheme specified on command-line with @samp{-e}.")
+{
+ return ly_string2scm (init_scheme_code_string_global);
+}
+
LY_DEFINE (ly_command_line_verbose_p, "ly:command-line-verbose?", 0, 0, 0, (),
"Was be_verbose_global set?")
{
;; Abbrv-PWR!
(defmacro-public _i (x) x)
+(read-enable 'positions)
+(debug-enable 'debug)
+
+
(define (define-scheme-options)
(for-each (lambda (x)
(ly:add-option (car x) (cadr x) (caddr x)))
(show-available-fonts #f
"List font names available.")
(verbose ,(ly:command-line-verbose?) "value for the --verbose flag")
- )))
+ ))
+
+ (map
+ (lambda (x)
+ (ly:set-option (car x) (cdr x)))
+ (eval-string (ly:command-line-options))))
;; need to do this in the beginning. Other parts of the
;;
(define-scheme-options)
+
+
(debug-set! stack 0)
(if (defined? 'set-debug-cell-accesses!)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; other files.
-(for-each ly:load
- ;; load-from-path
- '("lily-library.scm"
+
+(define
+ init-scheme-files
+ '("lily-library.scm"
"file-cache.scm"
"define-event-classes.scm"
"define-music-types.scm"
"safe-lily.scm"))
+
+
+(for-each ly:load init-scheme-files)
+
+
(set! type-p-name-alist
`(
(,boolean-or-symbol? . "boolean or symbol")
(define-public (lilypond-main files)
"Entry point for LilyPond."
-
+
(define (no-files-handler)
(ly:usage)
(exit 2))
+ (eval-string (ly:command-line-code))
+
(if (ly:get-option 'gui)
(gui-main files))
(if (string-or-symbol? (ly:get-option 'log-file))
(ly:stderr-redirect (format "~a.log" (ly:get-option 'log-file)) "w"))
+
(let ((failed (lilypond-all files)))
(if (pair? failed)
(exit 0)))))
(define-public (lilypond-all files)
-
+
(if (ly:get-option 'show-available-fonts)
(begin
(if (ly:get-option 'dump-profile)
(dump-profile "lily-run-total" '(0 0) (profile-measurements)))
-
+
failed))
(define (lilypond-file handler file-name)