diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-11-09 22:20:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-11-09 22:20:12 +0000 |
commit | 536e266e58e6fda550e781d7a88317fdfe149cfa (patch) | |
tree | 5f8b7d80d8817989496ab5eb36cd1c64815de0be /ruby.c | |
parent | 5ddcc93a3f9ffaeed5a78aa0fa7a847880102600 (diff) | |
download | ruby-536e266e58e6fda550e781d7a88317fdfe149cfa.tar.gz |
* cygwin/GNUmakefile.in (scriptbin): make executable file from
scripts with stub.
* ruby.c (load_file_internal): assume xflag for exe file as well
as no-shebang file.
* tool/rbinstall.rb: install script programs.
* win32/mkexports.rb (Exports#initialize): alias ruby_sysinit for
stub.
* win32/stub.c: stub for scripts. [EXPERIMENTAL]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -1506,6 +1506,7 @@ load_file_internal(VALUE arg) NODE *tree = 0; rb_encoding *enc; ID set_encoding; + int xflag = 0; if (!fname) rb_load_fail(fname); @@ -1517,8 +1518,10 @@ load_file_internal(VALUE arg) #if defined DOSISH || defined __CYGWIN__ { const char *ext = strrchr(fname, '.'); - if (ext && STRCASECMP(ext, ".exe") == 0) + if (ext && STRCASECMP(ext, ".exe") == 0) { mode |= O_BINARY; + xflag = 1; + } } #endif if ((fd = open(fname, mode)) < 0) { @@ -1540,7 +1543,7 @@ load_file_internal(VALUE arg) enc = rb_ascii8bit_encoding(); rb_funcall(f, set_encoding, 1, rb_enc_from_encoding(enc)); - if (opt->xflag) { + if (xflag || opt->xflag) { search_shebang: forbid_setid("-x"); opt->xflag = FALSE; @@ -1852,7 +1855,7 @@ ruby_set_argv(int argc, char **argv) #endif rb_ary_clear(av); for (i = 0; i < argc; i++) { - VALUE arg = rb_external_str_new(argv[i], strlen(argv[i])); + VALUE arg = rb_external_str_new_cstr(argv[i]); OBJ_FREEZE(arg); rb_ary_push(av, arg); |