[#35333] [Ruby 1.8 - Bug #221] (Open) Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Anonymous <redmine@...>

チケット #221 が報告されました。 (by Anonymous)

31 messages 2008/07/03
[#35521] [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Anonymous <redmine@...> 2008/07/15

チケット #221 が更新されました。 (by Anonymous)

[#35522] Re: [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — とみたまさひろ <tommy@...> 2008/07/15

とみたです。

[#35527] Re: [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — とみたまさひろ <tommy@...> 2008/07/16

とみたです。

[#35537] Re: [Ruby 1.8 - Bug #221] Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Urabe Shyouhei <shyouhei@...> 2008/07/16

卜部です。

[#35355] リリース前ToDoリスト — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

42 messages 2008/07/04
[#35365] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/04

なかだです。

[#35366] Re: リリース前ToDoリスト — Yukihiro Matsumoto <matz@...> 2008/07/04

まつもと ゆきひろです

[#35464] Re: リリース前ToDoリスト — Takao Kouji <kouji@...7.net> 2008/07/13

高尾宏治です。

[#35514] Re: リリース前ToDoリスト — Takao Kouji <kouji@...7.net> 2008/07/15

高尾宏治です。

[#35515] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/15

なかだです。

[#35519] Re: リリース前ToDoリスト — Takao Kouji <kouji@...7.net> 2008/07/15

高尾宏治です。

[#35523] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/16

なかだです。

[#35528] Re: リリース前ToDoリスト — "Shugo Maeda" <shugo@...> 2008/07/16

前田です。

[#35531] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/16

なかだです。

[#35532] Re: リリース前ToDoリスト — "Shugo Maeda" <shugo@...> 2008/07/16

前田です。

[#35534] Re: リリース前ToDoリスト — Nobuyoshi Nakada <nobu@...> 2008/07/16

なかだです。

[#35551] [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/16

高尾宏治です。

[#35553] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — "Keita Yamaguchi" <keita.yamaguchi@...> 2008/07/16

山口と申します。

[#35556] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/17

高尾宏治です。

[#35588] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/19

高尾宏治です。

[#35592] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/19

高尾宏治です。

[#35629] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — "M.Suzuki" <macobasi@...> 2008/07/22

GyRCJDMkcyRLJEEkTyEjGyhCTS5TdXp1a2kbJEIkRyQ5ISMbKEINCg0KGyRCO24kNyRGJF8kXiQ3

[#35639] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X — Takao Kouji <kouji@...7.net> 2008/07/23

高尾宏治です。

[#35372] patch for ruby-core:17472 — wanabe <s.wanabe@...>

ワナベと申します。

16 messages 2008/07/05
[#35378] Re: patch for ruby-core:17472 — Nobuyoshi Nakada <nobu@...> 2008/07/06

なかだです。

[#35404] ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...>

前田です。

54 messages 2008/07/09
[#35405] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/09

卜部です。

[#35413] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/09

前田です。

[#35415] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/09

卜部です。

[#35418] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/10

前田です。

[#35425] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/10

Shugo Maeda さんは書きました:

[#35427] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "GOTO Kentaro" <gotoken@...> 2008/07/10

どこにぶら下げるのがいいのかわからないので、単に意思表明ですが、

[#35429] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/10

卜部です。

[#35440] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Akinori MUSHA" <knu@...> 2008/07/11

At Fri, 11 Jul 2008 01:00:29 +0900,

[#35442] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/11

前田です。

[#35451] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/12

そういえばこの部分に言及するのを忘れていた

[#35454] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/12

前田です。

[#35455] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/12

卜部です。

[#35456] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/13

前田です。

[#35462] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Tanaka Akira <akr@...> 2008/07/13

In article <704d5db90807121803o5ea67361ucbf968f8a18a845d@mail.gmail.com>,

[#35465] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/13

Tanaka Akira さんは書きました:

[#35474] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/14

前田です。

[#35457] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/13

卜部です。

[#35472] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/14

前田です。

[#35473] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — Urabe Shyouhei <shyouhei@...> 2008/07/14

卜部です。

[#35475] Re: ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...> 2008/07/14

前田です。

[#35420] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — Tanaka Akira <akr@...>

In article <200807100931.m6A9V4vi014459@ci.ruby-lang.org>,

11 messages 2008/07/10
[#35421] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — wanabe <s.wanabe@...> 2008/07/10

ワナベです。

[#35422] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — "U.Nakamura" <usa@...> 2008/07/10

こんにちは、なかむら(う)です。

[#35423] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — wanabe <s.wanabe@...> 2008/07/10

ワナベです。

[#35458] make profiler for gc — authorNari <authornari@...>

nariです。

21 messages 2008/07/13
[#35461] Re: make profiler for gc — Tanaka Akira <akr@...> 2008/07/13

In article <1153cee60807122239t19f6ae05vc0c1995c77349377@mail.gmail.com>,

[#35468] Re: make profiler for gc — authorNari <authornari@...> 2008/07/13

nariです。

[#35597] [request]C APIの拡張 — "Goro Fuji" <g.psy.va@...>

藤と申します。

15 messages 2008/07/20

[#35620] non-locale filename encoding — Tanaka Akira <akr@...>

Dir の使いかたとして、ファイル名のエンコーディングが locale

18 messages 2008/07/21
[#35634] Re: non-locale filename encoding — "NARUSE, Yui" <naruse@...> 2008/07/22

成瀬です。

[#35635] Re: non-locale filename encoding — Tanaka Akira <akr@...> 2008/07/23

In article <48866F3F.80906@airemix.jp>,

[#35642] Re: non-locale filename encoding — "NARUSE, Yui" <naruse@...> 2008/07/23

成瀬です。

[#35643] Re: non-locale filename encoding — Tanaka Akira <akr@...> 2008/07/23

In article <488771FD.4020800@airemix.jp>,

[#35649] PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...>

遠藤です。

14 messages 2008/07/24
[#35650] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — Tanaka Akira <akr@...> 2008/07/24

In article <e0b1e5700807240845o4c09cfa5gae142c1dd0c74170@mail.gmail.com>,

[#35651] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...> 2008/07/24

2008/07/25 1:02 Tanaka Akira <akr@fsij.org>:

[#35654] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "NARUSE, Yui" <naruse@...> 2008/07/24

成瀬です。

[#35686] Re: PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...> 2008/07/29

遠藤です。

[ruby-dev:35661] Re: non-locale filename encoding

From: Tanaka Akira <akr@...>
Date: 2008-07-26 08:49:49 UTC
List: ruby-dev #35661
In article <488AC157.7090203@airemix.jp>,
  "NARUSE, Yui" <naruse@airemix.jp> writes:

> Windows で W 系 API が使われるのを前提として (今はまだ A 系)、
>
> Dir.foreach(".", :internal_encoding => "CP51932") do |fn|
>   p [fn, File.size(fn)] # Windows なのでパス自動変換
> end
>
> とかでしょうか。

ふむ、CP51932 ですか。使用頻度が低そうですね。
もっと普通の人が使いそうな例ってありますか?

しかし、やはり :internal_encoding を削除したほうがいいと思い
ます。

まず、unix で :internal_encoding を使って変換すると、ファイ
ル名としてのバイト列が壊れて、open 等の操作が出来なくなりま
す。以前、[ruby-dev:34933] で

| ファイル名で一番重要なのは、ファイルを同定できるという性質で
| はないでしょうか。ファイル名を読めるというのはその次にくる性
| 質だと思います。

と書きましたが、:internal_encoding を使うと、ファイルを同定
できなくなります。これは許し難い性質です。

また windows でも、指定するエンコーディングによって問題があっ
たりなかったりするということがあります。生のファイル名と指定
したエンコーディングとの変換で round trip するかどうかが問題
ですが、これは知っていないと判断が困難です。しかも、知らない
ひとが試行錯誤して調べてみようと思っても、:internal_encoding
を使うと、変換元の文字列を確認できませんから、試行錯誤するこ
と自体が困難です。

あと、変換に失敗したときにファイル名が失われる、という点もあ
ります。Dir#read 内で、readdir(3) に成功した後に変換を行うた
め、そこで例外が起きれば readdir が返したファイル名が失われ
ます。

このような問題を考えると :internal_encoding に相当することを
やりたければ、Dir 自体じゃなくて、Dir を使う側が
String#encode で行うというのがいいんじゃないでしょうか。

つまり、
  Dir.open(dir, :internal_encoding=>enc) {|d|
    d.read
  }
の代わりに、
  Dir.open(dir) {|d|
    d.read.encode(enc)
  }
とする、というわけです。

こうすれば、呼び出した側は、変換元の文字列を知ることができ、
変換で何が起こるのかを調べることが出来ます。また、変換に害が
あることを知って、変換せずにファイル名を使うようになれば、
unix でも windows でも動作するプログラムが書けるようになりま
す。

というわけで、パッチを書いてみました。

なお、Dir.open のところで (unix 上でも) パスを変換することが
あって、Dir.open 出来るべきものが出来ないことがあったので、
そこも削除してあります。

% svn diff --diff-cmd diff -x '-u -p'
Index: dir.c
===================================================================
--- dir.c	(revision 18220)
+++ dir.c	(working copy)
@@ -291,7 +291,6 @@ VALUE rb_cDir;
 struct dir_data {
     DIR *dir;
     char *path;
-    rb_encoding *intenc;
     rb_encoding *extenc;
 };
 
@@ -315,7 +314,6 @@ dir_s_alloc(VALUE klass)
 
     dirp->dir = NULL;
     dirp->path = NULL;
-    dirp->intenc = NULL;
     dirp->extenc = NULL;
 
     return obj;
@@ -332,66 +330,37 @@ dir_initialize(int argc, VALUE *argv, VA
 {
     struct dir_data *dp;
     static rb_encoding *fs_encoding;
-    rb_encoding  *intencoding, *extencoding;
+    rb_encoding  *extencoding;
     VALUE dirname, opt;
-    static VALUE sym_intenc, sym_extenc;
+    static VALUE sym_extenc;
 
-    if (!sym_intenc) {
-	sym_intenc = ID2SYM(rb_intern("internal_encoding"));
+    if (!sym_extenc) {
 	sym_extenc = ID2SYM(rb_intern("external_encoding"));
 	fs_encoding = rb_filesystem_encoding();
     }
 
-    intencoding = NULL;
     extencoding = fs_encoding;
     rb_scan_args(argc, argv, "11", &dirname, &opt);
 
     if (!NIL_P(opt)) {
-        VALUE v, extenc=Qnil, intenc=Qnil;
+        VALUE v, extenc=Qnil;
         opt = rb_convert_type(opt, T_HASH, "Hash", "to_hash");
 
-        v = rb_hash_aref(opt, sym_intenc);
-        if (!NIL_P(v)) intenc = v;
         v = rb_hash_aref(opt, sym_extenc);
         if (!NIL_P(v)) extenc = v;
 
 	if (!NIL_P(extenc)) {
 	    extencoding = rb_to_encoding(extenc);
-	    if (!NIL_P(intenc)) {
-		intencoding = rb_to_encoding(intenc);
-		if (extencoding == intencoding) {
-		    rb_warn("Ignoring internal encoding '%s': it is identical to external encoding '%s'",
-			    RSTRING_PTR(rb_inspect(intenc)),
-			    RSTRING_PTR(rb_inspect(extenc)));
-		    intencoding = NULL;
-		}
-	    }
-	}
-	else if (!NIL_P(intenc)) {
-	    rb_raise(rb_eArgError, "External encoding must be specified when internal encoding is given");
 	}
     }
 
     FilePathValue(dirname);
-    {
-	rb_encoding  *dirname_encoding = rb_enc_get(dirname);
-	if (rb_usascii_encoding() != dirname_encoding
-	    && rb_ascii8bit_encoding() != dirname_encoding
-#if defined __APPLE__
-	    && rb_utf8_encoding() != dirname_encoding
-#endif
-	    && extencoding != dirname_encoding) {
-	    if (!intencoding) intencoding = dirname_encoding;
-	    dirname = rb_str_transcode(dirname, rb_enc_from_encoding(extencoding));
-	}
-    }
 
     Data_Get_Struct(dir, struct dir_data, dp);
     if (dp->dir) closedir(dp->dir);
     if (dp->path) xfree(dp->path);
     dp->dir = NULL;
     dp->path = NULL;
-    dp->intenc = intencoding;
     dp->extenc = extencoding;
     dp->dir = opendir(RSTRING_PTR(dirname));
     if (dp->dir == NULL) {
@@ -457,9 +426,6 @@ static VALUE
 dir_enc_str(VALUE str, struct dir_data *dirp)
 {
     rb_enc_associate(str, dirp->extenc);
-    if (dirp->intenc) {
-        str = rb_str_transcode(str, rb_enc_from_encoding(dirp->intenc));
-    }
     return str;
 }
 
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread