summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mirb
diff options
context:
space:
mode:
authorAsmod4n <[email protected]>2015-09-17 13:24:17 +0200
committerAsmod4n <[email protected]>2015-09-17 13:24:17 +0200
commite6d9b450bab46f218e6bee2c95114b733660951a (patch)
treee6e296d99ad3780e769a5bae0d71bb5a6de75c9a /mrbgems/mruby-bin-mirb
parent13a2cc3e5d27c33db7f4cf06ece4c44a79c79c53 (diff)
parent070e04ea22d832c323e56ff75242f08ca3022fa8 (diff)
downloadmruby-e6d9b450bab46f218e6bee2c95114b733660951a.tar.gz
mruby-e6d9b450bab46f218e6bee2c95114b733660951a.zip
Merge remote-tracking branch 'mruby/master'
Diffstat (limited to 'mrbgems/mruby-bin-mirb')
-rw-r--r--mrbgems/mruby-bin-mirb/mrbgem.rake16
-rw-r--r--mrbgems/mruby-bin-mirb/tools/mirb/mirb.c10
2 files changed, 20 insertions, 6 deletions
diff --git a/mrbgems/mruby-bin-mirb/mrbgem.rake b/mrbgems/mruby-bin-mirb/mrbgem.rake
index 98df38499..a74871d81 100644
--- a/mrbgems/mruby-bin-mirb/mrbgem.rake
+++ b/mrbgems/mruby-bin-mirb/mrbgem.rake
@@ -6,20 +6,28 @@ MRuby::Gem::Specification.new('mruby-bin-mirb') do |spec|
if spec.build.cc.search_header_path 'readline/readline.h'
spec.cc.defines << "ENABLE_READLINE"
if spec.build.cc.search_header_path 'termcap.h'
- if MRUBY_BUILD_HOST_IS_CYGWIN then
- spec.linker.libraries << 'ncurses'
- else
- spec.linker.libraries << 'termcap'
+ if MRUBY_BUILD_HOST_IS_CYGWIN || MRUBY_BUILD_HOST_IS_OPENBSD
+ if spec.build.cc.search_header_path 'termcap.h'
+ if MRUBY_BUILD_HOST_IS_CYGWIN then
+ spec.linker.libraries << 'ncurses'
+ else
+ spec.linker.libraries << 'termcap'
+ end
+ end
end
end
if RUBY_PLATFORM.include?('netbsd')
spec.linker.libraries << 'edit'
else
spec.linker.libraries << 'readline'
+ if spec.build.cc.search_header_path 'curses.h'
+ spec.linker.libraries << 'ncurses'
+ end
end
elsif spec.build.cc.search_header_path 'linenoise.h'
spec.cc.defines << "ENABLE_LINENOISE"
end
spec.bins = %w(mirb)
+ spec.add_dependency('mruby-compiler', :core => 'mruby-compiler')
end
diff --git a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
index 0f3649a35..37fda352c 100644
--- a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
+++ b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
@@ -366,6 +366,8 @@ main(int argc, char **argv)
ai = mrb_gc_arena_save(mrb);
while (TRUE) {
+ char *utf8;
+
#ifndef ENABLE_READLINE
print_cmdline(code_block_open);
@@ -415,17 +417,21 @@ main(int argc, char **argv)
strcpy(ruby_code, last_code_line);
}
+ utf8 = mrb_utf8_from_locale(ruby_code, -1);
+ if (!utf8) abort();
+
/* parse code */
parser = mrb_parser_new(mrb);
if (parser == NULL) {
fputs("create parser state error\n", stderr);
break;
}
- parser->s = ruby_code;
- parser->send = ruby_code + strlen(ruby_code);
+ parser->s = utf8;
+ parser->send = utf8 + strlen(utf8);
parser->lineno = cxt->lineno;
mrb_parser_parse(parser, cxt);
code_block_open = is_code_block_open(parser);
+ mrb_utf8_free(utf8);
if (code_block_open) {
/* no evaluation of code */