diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-11-15 10:49:40 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-11-15 10:49:40 +0900 |
| commit | 04a2c58e949843dcab9650c5a5ed2f2490bf0837 (patch) | |
| tree | 53cd9e8810b8f618f31da977985627b7d73a08ed /mrbgems/mruby-bin-mruby | |
| parent | d8f9a30ef37b5ac53b7e54123c870e069f5c88c7 (diff) | |
| download | mruby-04a2c58e949843dcab9650c5a5ed2f2490bf0837.tar.gz mruby-04a2c58e949843dcab9650c5a5ed2f2490bf0837.zip | |
add new function mrb_load_irep_file_cxt() and simplifies mruby.c
Diffstat (limited to 'mrbgems/mruby-bin-mruby')
| -rw-r--r-- | mrbgems/mruby-bin-mruby/tools/mruby/mruby.c | 47 |
1 files changed, 17 insertions, 30 deletions
diff --git a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c index e286ce1f2..c2ba43002 100644 --- a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +++ b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c @@ -178,6 +178,8 @@ main(int argc, char **argv) int i; struct _args args; mrb_value ARGV; + mrbc_context *c; + mrb_value v; if (mrb == NULL) { fputs("Invalid mrb_state, exiting mruby\n", stderr); @@ -197,30 +199,16 @@ main(int argc, char **argv) } mrb_define_global_const(mrb, "ARGV", ARGV); + c = mrbc_context_new(mrb); + if (args.verbose) + c->dump_result = 1; + if (args.check_syntax) + c->no_exec = 1; if (args.mrbfile) { - mrb_irep *irep = mrb_read_irep_file(mrb, args.rfp); - if (!irep) { - fprintf(stderr, "failed to load mrb file: %s\n", args.cmdline); - } - else if (!args.check_syntax) { - mrb_context_run(mrb, mrb_proc_new(mrb, irep), mrb_top_self(mrb), 0); - mrb_irep_decref(mrb, irep); - n = 0; - if (mrb->exc) { - mrb_print_error(mrb); - n = -1; - } - } + v = mrb_load_irep_file_cxt(mrb, args.rfp, c); } else { - mrbc_context *c = mrbc_context_new(mrb); mrb_sym zero_sym = mrb_intern2(mrb, "$0", 2); - mrb_value v; - - if (args.verbose) - c->dump_result = 1; - if (args.check_syntax) - c->no_exec = 1; if (args.rfp) { char *cmdline; @@ -234,17 +222,16 @@ main(int argc, char **argv) mrb_gv_set(mrb, zero_sym, mrb_str_new(mrb, "-e", 2)); v = mrb_load_string_cxt(mrb, args.cmdline, c); } - - mrbc_context_free(mrb, c); - if (mrb->exc) { - if (!mrb_undef_p(v)) { - mrb_print_error(mrb); - } - n = -1; - } - else if (args.check_syntax) { - printf("Syntax OK\n"); + } + mrbc_context_free(mrb, c); + if (mrb->exc) { + if (!mrb_undef_p(v)) { + mrb_print_error(mrb); } + n = -1; + } + else if (args.check_syntax) { + printf("Syntax OK\n"); } cleanup(mrb, &args); |
