summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mirb/tools/mirb
diff options
context:
space:
mode:
authorYasuhiro Matsumoto <[email protected]>2015-09-11 11:12:03 +0900
committerYasuhiro Matsumoto <[email protected]>2015-09-11 11:12:03 +0900
commit8277e950eee4e8c6135eca281a7d5ca91077d2b4 (patch)
treeb8c78e65be2d634694eed3ae12f72b6076631fe1 /mrbgems/mruby-bin-mirb/tools/mirb
parent3ed8e7fbb24886619f6e7aa2e9be1d0dd0609feb (diff)
downloadmruby-8277e950eee4e8c6135eca281a7d5ca91077d2b4.tar.gz
mruby-8277e950eee4e8c6135eca281a7d5ca91077d2b4.zip
Support windows locale
Add mrb_utf8_from_locale, mrb_utf8_free, mrb_locale_from_utf8, mrb_locale_free. Just works for windows.
Diffstat (limited to 'mrbgems/mruby-bin-mirb/tools/mirb')
-rw-r--r--mrbgems/mruby-bin-mirb/tools/mirb/mirb.c10
1 files changed, 8 insertions, 2 deletions
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 */