diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-10-04 14:56:24 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-10-04 14:56:24 +0900 |
| commit | 70916d030cc6f29e34fe3c07afddc07c7fa7c29b (patch) | |
| tree | 7ed7a27a56091c5661102b4e1f9885c0de8f3477 | |
| parent | 0d9b91083b93ec0abd10031dcb5bb892551d5c66 (diff) | |
| download | mruby-70916d030cc6f29e34fe3c07afddc07c7fa7c29b.tar.gz mruby-70916d030cc6f29e34fe3c07afddc07c7fa7c29b.zip | |
script file name should not be in ARGV
| -rw-r--r-- | tools/mruby/mruby.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/tools/mruby/mruby.c b/tools/mruby/mruby.c index a45d86526..2ab9e845c 100644 --- a/tools/mruby/mruby.c +++ b/tools/mruby/mruby.c @@ -25,6 +25,7 @@ void mrb_show_copyright(mrb_state *); struct _args { FILE *rfp; char* cmdline; + int fname : 1; int mrbfile : 1; int check_syntax : 1; int verbose : 1; @@ -131,9 +132,14 @@ append_cmdline: if (args->rfp == NULL && args->cmdline == NULL) { if (*argv == NULL) args->rfp = stdin; - else if ((args->rfp = fopen(*argv, args->mrbfile ? "rb" : "r")) == NULL) { - printf("%s: Cannot open program file. (%s)\n", *origargv, *argv); - return 0; + else { + args->rfp = fopen(argv[0], args->mrbfile ? "rb" : "r"); + if (args->rfp == NULL) { + printf("%s: Cannot open program file. (%s)\n", *origargv, *argv); + return 0; + } + args->fname = 1; + argc--; argv++; } } args->argv = (char **)mrb_realloc(mrb, args->argv, sizeof(char*) * (argc + 1)); @@ -202,13 +208,13 @@ main(int argc, char **argv) if (args.check_syntax) c->no_exec = 1; - if (args.cmdline) { - mrbc_filename(mrb, c, "-e"); - v = mrb_load_string_cxt(mrb, (char*)args.cmdline, c); + if (args.rfp) { + mrbc_filename(mrb, c, args.cmdline ? args.cmdline : "-"); + v = mrb_load_file_cxt(mrb, args.rfp, c); } else { - mrbc_filename(mrb, c, args.argv[0]); - v = mrb_load_file_cxt(mrb, args.rfp, c); + mrbc_filename(mrb, c, "-e"); + v = mrb_load_string_cxt(mrb, args.cmdline, c); } mrbc_context_free(mrb, c); if (mrb->exc) { |
