git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2008-12-29 02:56:23 +00:00
Родитель 1ebed6c614
Коммит a928613a31
2 изменённых файлов: 21 добавлений и 22 удалений

22
file.c
Просмотреть файл

@ -107,6 +107,7 @@ rb_get_path_check(VALUE obj, int check)
tmp = rb_check_string_type(obj);
if (!NIL_P(tmp)) goto exit;
CONST_ID(to_path, "to_path");
if (rb_respond_to(obj, to_path)) {
tmp = rb_funcall(obj, to_path, 0, 0);
@ -119,27 +120,6 @@ rb_get_path_check(VALUE obj, int check)
if (check && obj != tmp) {
rb_check_safe_obj(tmp);
}
#if defined _WIN32 || defined __APPLE__
{
static rb_encoding *fs_encoding;
rb_encoding *fname_encoding = rb_enc_get(tmp);
if (!fs_encoding)
fs_encoding = rb_filesystem_encoding();
if (rb_usascii_encoding() != fname_encoding
&& rb_ascii8bit_encoding() != fname_encoding
#if defined __APPLE__
&& rb_utf8_encoding() != fname_encoding
#endif
&& fs_encoding != fname_encoding) {
static VALUE fs_enc;
if (!fs_enc)
fs_enc = rb_enc_from_encoding(fs_encoding);
tmp = rb_str_encode(tmp, fs_enc, 0, Qnil);
}
}
#endif
return rb_str_new4(tmp);
}

21
io.c
Просмотреть файл

@ -4885,7 +4885,26 @@ rb_scan_open_args(int argc, VALUE *argv,
opt = pop_last_hash(&argc, argv);
rb_scan_args(argc, argv, "12", &fname, &vmode, &vperm);
FilePathValue(fname);
#if defined _WIN32 || defined __APPLE__
{
static rb_encoding *fs_encoding;
rb_encoding *fname_encoding = rb_enc_get(fname);
if (!fs_encoding)
fs_encoding = rb_filesystem_encoding();
if (rb_usascii_encoding() != fname_encoding
&& rb_ascii8bit_encoding() != fname_encoding
#if defined __APPLE__
&& rb_utf8_encoding() != fname_encoding
#endif
&& fs_encoding != fname_encoding) {
static VALUE fs_enc;
if (!fs_enc)
fs_enc = rb_enc_from_encoding(fs_encoding);
fname = rb_str_encode(fname, fs_enc, 0, Qnil);
}
}
#endif
rb_io_extract_modeenc(&vmode, &vperm, opt, &oflags, &fmode, convconfig_p);
perm = NIL_P(vperm) ? 0666 : NUM2UINT(vperm);