Bug #179 [ruby-dev:35151]
confusion about treating filesystem encoding
| Status : | Closed | Start : | ||
| Priority : | Low | Due date : | ||
| Assigned to : | - | % Done : | 100% |
|
| Category : | - | |||
| Target version : | - | |||
| ruby -v : |
Description
こんにちは、なかむら(う)です。
# ぶら下げどころが決め切れなかった
先日成瀬さんが入れてくださったfilesystem encoding対応ですが、
rb_encoding*とencoding indexを混同しています。
rb_encoding*の比較が有効なのかどうか確信がなかったので、encoding
indexで統一してみました。
# rb_encoding*の比較が有効ならそっちに揃えた方がシンプルにな
# るとは思います。
rb_utf8_encindex()はなんでないんだろう?
Index: io.c
===================================================================
--- io.c (revision 17396)
+++ io.c (working copy)
@@ -4107,16 +4107,16 @@ rb_open_file(int argc, VALUE *argv, VALU
static int fs_encoding;
int fname_encoding = rb_enc_get_index(fname);
if (!fs_encoding)
- fs_encoding = rb_filesystem_encoding();
- if (rb_usascii_encoding() != fname_encoding
- && rb_ascii8bit_encoding() != fname_encoding
+ fs_encoding = rb_enc_to_index(rb_filesystem_encoding());
+ if (rb_usascii_encindex() != fname_encoding
+ && rb_ascii8bit_encindex() != fname_encoding
#if defined __APPLE__
- && rb_utf8_encoding() != fname_encoding
+ && rb_enc_to_index(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);
+ fs_enc = rb_enc_from_encoding(rb_enc_from_index(fs_encoding));
fname = rb_str_transcode(fname, fs_enc);
}
}
それでは。
--
U.Nakamura <usa@garbagecollect.jp>
Associated revisions
- io.c (rb_open_file): fs_encoding and fname_encoding is
rb_encoding *.
fixed
[ruby-dev:35151]
History
06/18/2008 03:17 PM - Yui NARUSE
- Status changed from Open to Closed
- % Done changed from 0 to 100
Applied in changeset r17403.
06/19/2008 01:38 AM - Yui NARUSE
成瀬です。 U.Nakamura wrote: > rb_utf8_encindex()はなんでないんだろう? そういえばこの理由ですが、単に現時点で UTF-8 の index を扱うコードが Ruby 本体にないからです。 逆にいえば、US-ASCII や ASCII-8BIT があるのは、 string.c とかでそういうコードがあるから。 -- NARUSE, Yui <naruse@airemix.jp>