- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-1.3.0
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
r321 r331 2 2 #include <stdlib.h> 3 3 #include <string.h> 4 #include "mruby.h"5 #include "mruby/array.h"6 #include "mruby/compile.h"7 #include "mruby/dump.h"8 #include "mruby/variable.h"4 #include <mruby.h> 5 #include <mruby/array.h> 6 #include <mruby/compile.h> 7 #include <mruby/dump.h> 8 #include <mruby/variable.h> 9 9 10 10 #ifdef MRB_DISABLE_STDIO … … 189 189 return n; 190 190 } 191 192 ARGV = mrb_ary_new_capa(mrb, args.argc); 193 for (i = 0; i < args.argc; i++) { 194 char* utf8 = mrb_utf8_from_locale(args.argv[i], -1); 195 if (utf8) { 196 mrb_ary_push(mrb, ARGV, mrb_str_new_cstr(mrb, utf8)); 191 else { 192 int ai = mrb_gc_arena_save(mrb); 193 ARGV = mrb_ary_new_capa(mrb, args.argc); 194 for (i = 0; i < args.argc; i++) { 195 char* utf8 = mrb_utf8_from_locale(args.argv[i], -1); 196 if (utf8) { 197 mrb_ary_push(mrb, ARGV, mrb_str_new_cstr(mrb, utf8)); 198 mrb_utf8_free(utf8); 199 } 200 } 201 mrb_define_global_const(mrb, "ARGV", ARGV); 202 203 c = mrbc_context_new(mrb); 204 if (args.verbose) 205 c->dump_result = TRUE; 206 if (args.check_syntax) 207 c->no_exec = TRUE; 208 209 /* Set $0 */ 210 zero_sym = mrb_intern_lit(mrb, "$0"); 211 if (args.rfp) { 212 const char *cmdline; 213 cmdline = args.cmdline ? args.cmdline : "-"; 214 mrbc_filename(mrb, c, cmdline); 215 mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline)); 216 } 217 else { 218 mrbc_filename(mrb, c, "-e"); 219 mrb_gv_set(mrb, zero_sym, mrb_str_new_lit(mrb, "-e")); 220 } 221 222 /* Load program */ 223 if (args.mrbfile) { 224 v = mrb_load_irep_file_cxt(mrb, args.rfp, c); 225 } 226 else if (args.rfp) { 227 v = mrb_load_file_cxt(mrb, args.rfp, c); 228 } 229 else { 230 char* utf8 = mrb_utf8_from_locale(args.cmdline, -1); 231 if (!utf8) abort(); 232 v = mrb_load_string_cxt(mrb, utf8, c); 197 233 mrb_utf8_free(utf8); 198 234 } 199 } 200 mrb_define_global_const(mrb, "ARGV", ARGV); 201 202 c = mrbc_context_new(mrb); 203 if (args.verbose) 204 c->dump_result = TRUE; 205 if (args.check_syntax) 206 c->no_exec = TRUE; 207 208 /* Set $0 */ 209 zero_sym = mrb_intern_lit(mrb, "$0"); 210 if (args.rfp) { 211 const char *cmdline; 212 cmdline = args.cmdline ? args.cmdline : "-"; 213 mrbc_filename(mrb, c, cmdline); 214 mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline)); 215 } 216 else { 217 mrbc_filename(mrb, c, "-e"); 218 mrb_gv_set(mrb, zero_sym, mrb_str_new_lit(mrb, "-e")); 219 } 220 221 /* Load program */ 222 if (args.mrbfile) { 223 v = mrb_load_irep_file_cxt(mrb, args.rfp, c); 224 } 225 else if (args.rfp) { 226 v = mrb_load_file_cxt(mrb, args.rfp, c); 227 } 228 else { 229 char* utf8 = mrb_utf8_from_locale(args.cmdline, -1); 230 if (!utf8) abort(); 231 v = mrb_load_string_cxt(mrb, utf8, c); 232 mrb_utf8_free(utf8); 233 } 234 235 mrbc_context_free(mrb, c); 236 if (mrb->exc) { 237 if (!mrb_undef_p(v)) { 238 mrb_print_error(mrb); 239 } 240 n = -1; 241 } 242 else if (args.check_syntax) { 243 printf("Syntax OK\n"); 235 236 mrb_gc_arena_restore(mrb, ai); 237 mrbc_context_free(mrb, c); 238 if (mrb->exc) { 239 if (mrb_undef_p(v)) { 240 mrb_p(mrb, mrb_obj_value(mrb->exc)); 241 } 242 else { 243 mrb_print_error(mrb); 244 } 245 n = -1; 246 } 247 else if (args.check_syntax) { 248 printf("Syntax OK\n"); 249 } 244 250 } 245 251 cleanup(mrb, &args);
Note:
See TracChangeset
for help on using the changeset viewer.