Commit c8f8f839 authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

initialize ARGV when program is specified by -e

parent b9a806f7
...@@ -47,12 +47,12 @@ static int ...@@ -47,12 +47,12 @@ static int
parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args) parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
{ {
char **origargv = argv; char **origargv = argv;
int nomore_flags = 0;
memset(args, 0, sizeof(*args)); memset(args, 0, sizeof(*args));
for (argc--,argv++; argc > 0; argc--,argv++) { for (argc--,argv++; argc > 0; argc--,argv++) {
if (!nomore_flags && **argv == '-') { if (argv[0][0] != '-') break;
if (strlen(*argv) <= 1) if (strlen(*argv) <= 1)
return -1; return -1;
...@@ -103,19 +103,15 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args) ...@@ -103,19 +103,15 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
return 0; return 0;
} }
} }
else if (args->rfp == NULL) {
if ((args->rfp = fopen(*argv, args->mrbfile ? "rb" : "r")) == NULL) {
if (args->rfp == NULL && args->cmdline == NULL && (args->rfp = fopen(*argv, args->mrbfile ? "rb" : "r")) == NULL) {
printf("%s: Cannot open program file. (%s)\n", *origargv, *argv); printf("%s: Cannot open program file. (%s)\n", *origargv, *argv);
return 0; return 0;
} }
nomore_flags = 1; args->argv = mrb_realloc(mrb, args->argv, sizeof(char*) * (argc + 1));
} memcpy(args->argv, argv, (argc+1) * sizeof(char*));
else { args->argc = argc;
args->argv = mrb_realloc(mrb, args->argv, sizeof(char*) * (args->argc + 1));
args->argv[args->argc] = *argv;
args->argc++;
}
}
return 0; return 0;
} }
...@@ -137,7 +133,6 @@ main(int argc, char **argv) ...@@ -137,7 +133,6 @@ main(int argc, char **argv)
mrb_state *mrb = mrb_open(); mrb_state *mrb = mrb_open();
int n = -1; int n = -1;
int i; int i;
char* value;
struct _args args; struct _args args;
struct mrb_parser_state *p; struct mrb_parser_state *p;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment