Skip to content

Commit 49653b8

Browse files
committed
Quit mruby -v immediately if no program is given for Ruby compatibility
1 parent 5eb08a0 commit 49653b8

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

mrbgems/mruby-bin-mruby/bintest/mruby.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ def hoge
128128
assert_mruby("", /\A.*: Cannot open library file: .*\n\z/, false, %w[-r _no_exists_])
129129
end
130130

131+
assert('mruby -v option') do
132+
ver_re = /\Amruby \d+\.\d+\.\d+ \(\d+-\d+-\d+\)\n/
133+
assert_mruby(/#{ver_re}\z/, "", true, %w[-v])
134+
assert_mruby(/#{ver_re}^[^\n]*NODE.*\n:end\n\z/m, "", true, %w[-v -e p(:end)])
135+
end
136+
131137
assert('mruby --verbose option') do
132138
assert_mruby(/\A[^\n]*NODE.*\n:end\n\z/m, "", true, %w[--verbose -e p(:end)])
133139
end

mrbgems/mruby-bin-mruby/tools/mruby/mruby.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ struct _args {
1414
mrb_bool mrbfile : 1;
1515
mrb_bool check_syntax : 1;
1616
mrb_bool verbose : 1;
17+
mrb_bool version : 1;
1718
mrb_bool debug : 1;
1819
int argc;
1920
char **argv;
@@ -180,7 +181,10 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
180181
}
181182
}
182183
else if (strcmp(opt, "v") == 0) {
183-
if (!args->verbose) mrb_show_version(mrb);
184+
if (!args->verbose) {
185+
mrb_show_version(mrb);
186+
args->version = TRUE;
187+
}
184188
args->verbose = TRUE;
185189
}
186190
else if (strcmp(opt, "version") == 0) {
@@ -203,7 +207,10 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
203207

204208
argc = opts->argc; argv = opts->argv;
205209
if (args->cmdline == NULL) {
206-
if (*argv == NULL) args->rfp = stdin;
210+
if (*argv == NULL) {
211+
if (args->version) exit(EXIT_SUCCESS);
212+
args->rfp = stdin;
213+
}
207214
else {
208215
args->rfp = strcmp(argv[0], "-") == 0 ?
209216
stdin : fopen(argv[0], args->mrbfile ? "rb" : "r");

0 commit comments

Comments
 (0)