• dearblue's avatar
    Allow to mixed and specify `*.rb` and `*.mrb` in `bin/mruby` · a045b6b8
    dearblue authored
    It is not decides by the extension.
    In order to be recognized as a `.mrb` file, the following three points must be satisfied:
    - File starts with "RITE"
    - At least `sizeof(struct rite_binary_header)` bytes can be read
    - `NUL` is included in the first 64 bytes of the file
    If these are not met, it is judged as a text file and it is processed as a Ruby script.
    
    The `bin/mruby -b` switch is still available which treats the given file as a `.mrb` file.
    
    New `MRB_API` function:
    - `include/mruby/compile.h` and `mrbgems/mruby-compiler/core/parse.y`
      - `mrb_load_detect_file_cxt()` (remove with `MRB_DISABLE_STDIO`)
    
    NOTE:
    - Even script files now always open in binary mode for `bin/mruby`.
      The `\r\n` is handled by the `nextc()` function already, so there is no problem even on Windows.
    - The `nextc0()` function in `mrbgems/mruby-compiler/core/parse.y` can now specify a string buffer and a file pointer at the same time.
      In this case, get it from the string buffer first.
    
    This patch includes modifies by comment of https://github.com/mruby/mruby/pull/5157.
    a045b6b8
y.tab.c 516 KB