diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-22 07:03:16 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-22 07:03:16 +0900 |
| commit | e35e2fff3fa292a343a9e244b3f0357a576efe83 (patch) | |
| tree | bc0d51b753d199f587ee4e1c58698a3c592d33c5 | |
| parent | db6e8682654ec71d7aca7b3d03119e9440a7f5b1 (diff) | |
| parent | 6676bd61a796abfdb9154d52dfe48229ec31d702 (diff) | |
| download | mruby-e35e2fff3fa292a343a9e244b3f0357a576efe83.tar.gz mruby-e35e2fff3fa292a343a9e244b3f0357a576efe83.zip | |
Merge pull request #2103 from titouanc/global-zero-bytecode
Also set $0 for binary files
| -rw-r--r-- | mrbgems/mruby-bin-mruby/tools/mruby/mruby.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c index 01e38ef84..f60fd1974 100644 --- a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +++ b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c @@ -178,6 +178,7 @@ main(int argc, char **argv) mrb_value ARGV; mrbc_context *c; mrb_value v; + mrb_sym zero_sym; if (mrb == NULL) { fputs("Invalid mrb_state, exiting mruby\n", stderr); @@ -202,25 +203,31 @@ main(int argc, char **argv) c->dump_result = TRUE; if (args.check_syntax) c->no_exec = TRUE; + + /* Set $0 */ + zero_sym = mrb_intern_lit(mrb, "$0"); + if (args.rfp) { + char *cmdline; + cmdline = args.cmdline ? args.cmdline : "-"; + mrbc_filename(mrb, c, cmdline); + mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline)); + } + else { + mrbc_filename(mrb, c, "-e"); + mrb_gv_set(mrb, zero_sym, mrb_str_new_lit(mrb, "-e")); + } + + /* Load program */ if (args.mrbfile) { v = mrb_load_irep_file_cxt(mrb, args.rfp, c); } + else if (args.rfp) { + v = mrb_load_file_cxt(mrb, args.rfp, c); + } else { - mrb_sym zero_sym = mrb_intern_lit(mrb, "$0"); - - if (args.rfp) { - char *cmdline; - cmdline = args.cmdline ? args.cmdline : "-"; - mrbc_filename(mrb, c, cmdline); - mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline)); - v = mrb_load_file_cxt(mrb, args.rfp, c); - } - else { - mrbc_filename(mrb, c, "-e"); - mrb_gv_set(mrb, zero_sym, mrb_str_new_lit(mrb, "-e")); - v = mrb_load_string_cxt(mrb, args.cmdline, c); - } + v = mrb_load_string_cxt(mrb, args.cmdline, c); } + mrbc_context_free(mrb, c); if (mrb->exc) { if (!mrb_undef_p(v)) { |
