make our ruby tolerant of different shebangs (#191)

This commit is contained in:
Max Howell 2022-10-17 15:55:08 -04:00 committed by GitHub
parent cf07590f11
commit a2cb71e1d4
2 changed files with 24 additions and 0 deletions

View file

@ -18,7 +18,9 @@ build:
gnu.org/gettext: ^0.21 gnu.org/gettext: ^0.21
tea.xyz/gx/cc: c99 tea.xyz/gx/cc: c99
tea.xyz/gx/make: '*' tea.xyz/gx/make: '*'
git-scm.org: 2
script: | script: |
git apply props/tolerant-shebang.diff
./configure --prefix="{{prefix}}" ./configure --prefix="{{prefix}}"
make --jobs {{hw.concurrency}} install make --jobs {{hw.concurrency}} install

View file

@ -0,0 +1,22 @@
diff --git a/ruby.c b/ruby.c
index d7ba181..e2a80df 100644
--- a/ruby.c
+++ b/ruby.c
@@ -2281,7 +2281,7 @@ load_file_internal(VALUE argp_v)
RSTRING_GETMEM(line, str, len);
if (len > 2 && str[0] == '#' && str[1] == '!') {
if (line_start == 1) warn_cr_in_shebang(str, len);
- if ((p = strstr(str+2, ruby_engine)) != 0) {
+ if ((p = strstr(str+2, ruby_engine)) != 0 && !getenv("TEA_PREFIX")) {
goto start_read;
}
}
@@ -2295,7 +2295,7 @@ load_file_internal(VALUE argp_v)
if (c == INT2FIX('!') && !NIL_P(line = rb_io_gets(f))) {
RSTRING_GETMEM(line, str, len);
warn_cr_in_shebang(str, len);
- if ((p = strstr(str, ruby_engine)) == 0) {
+ if ((p = strstr(str, ruby_engine)) == 0 && !getenv("TEA_PREFIX")) {
/* not ruby script, assume -x flag */
goto search_shebang;
}