mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* io.c (rb_open_file): encoding in mode string was ignored if perm is
specified. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
20d2ecafa3
commit
02f43f1bd9
3 changed files with 20 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
Tue Aug 19 01:32:37 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* io.c (rb_open_file): encoding in mode string was ignored if perm is
|
||||
specified.
|
||||
|
||||
Tue Aug 19 01:02:19 2008 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* io.c (rb_open_file): don't access argv[-1] by
|
||||
|
|
6
io.c
6
io.c
|
@ -4506,6 +4506,12 @@ rb_open_file(int argc, VALUE *argv, VALUE io)
|
|||
fmode = NIL_P(perm) ? 0666 : NUM2UINT(perm);
|
||||
|
||||
rb_file_sysopen_internal(io, RSTRING_PTR(fname), flags, fmode);
|
||||
|
||||
if (!FIXNUM_P(vmode)) {
|
||||
rb_io_t *fptr;
|
||||
GetOpenFile(io, fptr);
|
||||
rb_io_mode_enc(fptr, StringValueCStr(vmode));
|
||||
}
|
||||
}
|
||||
else {
|
||||
mode = NIL_P(vmode) ? "r" : StringValueCStr(vmode);
|
||||
|
|
|
@ -121,6 +121,15 @@ EOT
|
|||
}
|
||||
end
|
||||
|
||||
def test_open_w_enc_enc_perm
|
||||
with_tmpdir {
|
||||
open("tmp", "w:euc-jp:utf-8", 0600) {|f|
|
||||
assert_equal(Encoding::EUC_JP, f.external_encoding)
|
||||
assert_equal(Encoding::UTF_8, f.internal_encoding)
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def test_stdin
|
||||
assert_equal(Encoding.default_external, STDIN.external_encoding)
|
||||
assert_equal(nil, STDIN.internal_encoding)
|
||||
|
|
Loading…
Add table
Reference in a new issue