X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flily-guile.cc;h=b2017c27af3de9817b19fb7d86c22db0a54fa0fc;hb=0cf97b5cdceecbba937f43ac827f4065aad5001e;hp=e63015501e0285ad19fe4020e07dc62b39dc6beb;hpb=2ce92736c41626020d20ddce3320c38177f74360;p=lilypond.git diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index e63015501e..b2017c27af 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -19,19 +19,28 @@ #include "file-path.hh" #include "debug.hh" +SCM +ly_ch_C_to_scm (char const*c) +{ + // this all really sucks, guile should take char const* arguments! + return gh_str02scm ((char*)c); +} - +SCM +ly_ch_C_eval_scm (char const*c) +{ + // this all really sucks, guile should take char const* arguments! + return gh_eval_str ((char*)c); +} /* scm_m_quote doesn't use any env, but needs one for a good signature in GUILE. - - Why there is no gh_quote () in GUILE beats me. */ SCM ly_quote_scm (SCM s) { - return scm_cons2 (scm_i_quote, s, SCM_EOL); + return scm_m_quote (scm_cons2 (SCM_EOL, s, SCM_EOL) ,SCM_EOL); // apparently env arg is ignored. } /* @@ -44,7 +53,7 @@ ly_quote_scm (SCM s) SCM ly_symbol (String name) { - return gh_car (scm_intern (name.ch_C(), name.length_i())); + return gh_car (scm_intern ((char*)name.ch_C(), name.length_i())); } String @@ -56,14 +65,13 @@ symbol_to_string (SCM s) SCM ly_set_scm (String name, SCM val) { - return scm_sysintern (name.ch_C(), val); + return scm_sysintern ((char*)name.ch_C(), val); } -/** +/** Read a file, and shove it down GUILE. GUILE also has file read functions, but you can't fiddle with the path of those. - */ void read_lily_scm_file (String fn) @@ -71,9 +79,9 @@ read_lily_scm_file (String fn) String s = global_path.find (fn); if (s == "") { - String e = _f ("Can not find file `%s\'", fn); + String e = _f ("Can't find file: `%s'", fn); e += " "; - e += _f ("(Load path is `%s\'", global_path.str ()); + e += _f ("(load path: `%s')", global_path.str ()); error (e); } else @@ -82,11 +90,31 @@ read_lily_scm_file (String fn) Simple_file_storage f(s); - gh_eval_str ((char *) f.ch_C()); - *mlog << ']' << flush; + ly_ch_C_eval_scm ((char *) f.ch_C()); + *mlog << "]" << flush; } +SCM +ly_gulp_file (SCM name) +{ + String fn (ly_scm2string (name)); + String s = global_path.find (fn); + if (s == "") + { + String e = _f ("Can't find file: `%s'", fn); + e += " "; + e += _f ("(load path: `%s')", global_path.str ()); + error (e); + } + else + *mlog << '[' << s; + + + Simple_file_storage f(s); + return ly_ch_C_to_scm (f.ch_C()); +} + void ly_display_scm (SCM s) { @@ -136,10 +164,10 @@ ly_warning (SCM str) void init_functions () { - scm_make_gsubr ("ly-warn", 1, 0, 0, ly_warning); + scm_make_gsubr ("ly-warn", 1, 0, 0, (SCM(*)(...))ly_warning); + scm_make_gsubr ("ly-gulp-file", 1,0, 0, (SCM(*)(...))ly_gulp_file); } - extern void init_symbols (); void