Ignore:
Timestamp:
Jan 21, 2018, 12:10:09 AM (6 years ago)
Author:
coas-nagasima
Message:

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

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  
    22#include <stdlib.h>
    33#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>
    99
    1010#ifdef MRB_DISABLE_STDIO
     
    189189    return n;
    190190  }
    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);
    197233      mrb_utf8_free(utf8);
    198234    }
    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    }
    244250  }
    245251  cleanup(mrb, &args);
Note: See TracChangeset for help on using the changeset viewer.