summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mruby
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-11-15 10:49:40 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-11-15 10:49:40 +0900
commit04a2c58e949843dcab9650c5a5ed2f2490bf0837 (patch)
tree53cd9e8810b8f618f31da977985627b7d73a08ed /mrbgems/mruby-bin-mruby
parentd8f9a30ef37b5ac53b7e54123c870e069f5c88c7 (diff)
downloadmruby-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.c47
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);