summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-09 22:20:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-09 22:20:12 +0000
commit536e266e58e6fda550e781d7a88317fdfe149cfa (patch)
tree5f8b7d80d8817989496ab5eb36cd1c64815de0be /ruby.c
parent5ddcc93a3f9ffaeed5a78aa0fa7a847880102600 (diff)
* 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.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/ruby.c b/ruby.c
index 155ef5fbfa..61e8dcc443 100644
--- a/ruby.c
+++ b/ruby.c
@@ -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);