[#21809] lib/test/unit/ui/tk/testrunner.rb — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

23 messages 2003/11/01
[#21815] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/01

永井@知能.九工大です.

[#21858] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/06

なかだです。

[#21859] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/06

永井@知能.九工大です.

[#21860] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/06

なかだです。

[#21861] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/07

永井@知能.九工大です.

[#21862] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/07

なかだです。

[#21946] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — "U.Nakamura" <usa@...>

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

14 messages 2003/11/18
[#21972] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/19

Siena. です。

[#22013] HTTP_PROXY — Tanaka Akira <akr@...17n.org>

ふと

19 messages 2003/11/24

[#22042] ENV["path"].tainted? — Tanaka Akira <akr@...17n.org>

ENV["path"] の値が

14 messages 2003/11/25
[#22043] Re: ENV["path"].tainted? — matz@... (Yukihiro Matsumoto) 2003/11/25

まつもと ゆきひろです

[#22071] Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

はじめまして。山本といいます。

119 messages 2003/11/28
[#22075] Re: Dir.glob と Shjift_JIS について — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/29

Siena. です。

[#22076] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/11/29

> 山本さんのパッチがうまく当たらず手パッチしたので、念のため何度か

[#22078] Re: Dir.glob と Shjift_JIS について — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/29

Siena. です。

[#22089] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/11/30

こんにちは、山本です。

[#22100] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/01

山本です。

[#22147] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/05

山本です。

[#22258] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/13

山本です。glob_helperをリファクタリングしてみました。

[#22263] Re: Dir.glob と Shjift_JIS について — nobu.nakada@... 2003/12/13

なかだです。

[#22267] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/13

山本です。

[#22441] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/27

山本です。

[#22442] Re: Dir.glob と Shjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/27

まつもと ゆきひろです

[#22443] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22444] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。パッチを送ります。

[#22445] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22446] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22447] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22449] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/29

山本です。

[#22451] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/29

まつもと ゆきひろです

[#22452] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

>すいません。パッチを出す時にはいつもどの時点のソースに対する

[#22453] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22454] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

>|すみません、1.8.1に対してです。

[#22455] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22456] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

こんにちは、山本です。

[#22457] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22470] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/31

山本です。

[#22471] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/01

山本です。

[#22476] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/02

山本です。[ruby-dev:22470]にバグがあったので修正しました。

[#22477] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/02

>山本です。[ruby-dev:22470]にバグがあったので修正しました。

[#22478] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2004/01/02

まつもと ゆきひろです

[#22151] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/05

山本です。

[ruby-dev:22092] Re: Dir.glob と Shjift_JIS について

From: siena@... (Siena. / SHINAGAWA, Norihide)
Date: 2003-11-30 14:48:39 UTC
List: ruby-dev #22092
Siena. です。

時間が取れなくて、パッチは試せていません。
こちらでの確認には少し時間がかかるかもしれません。

》これからマクロを整理しようと思うのですが、DJGPP や EMX の mblen は、
》どのような挙動をしますか?
》(Windows では mblen("ab", MB_CUR_MAX)が-1 を返すのですが・・・・)

文末に OS/2 with EMX での確認コードと実行結果を載せておきます。
一応、それについては正常に機能します。

ruby では、grep locale ruby-1.8.0/{.,*}/*.[ch] した範囲では
setlocale() されていないようですから、ロケールは "C" ですね。
で、これで気が付いたのですが、MB_CUR_MAX == 1 になり、非 ASCII 文字に
対する mblen() は常に失敗して -1 を返す、という事はないでしょうか。
読み間違いなら良いのですが。

それならばと、"ja", "ja_JP", "ja_JP.Shift_JIS", "ja_JP.CP932" 等で
setlocale() を試みたところ、全て失敗し、ロケールは "C" のままでした。
この結果から見ると、CharNext() が MB_CUR_MAX に頼っているので、
少なくとも EMX では実は正しく動かないような気がしてきました。うぬぬ。

mblen() (と、多分 EMX 依存の _nls_is_dbcs_lead()) を試すと
下記のようになります。とりあえずは、mblen() の第 2 引数を
大きめにとっておけば、変な文字列が来ない限りは動作しそうです。
指定値は、CP932 は DBCS ですから 2 バイトで十分そうですが、
他の環境も含めた一般的の MBCS まで考えるとどうなのでしょう。
やはり、ちゃんと setlocale() して、うちみたいな救えない
環境ではとりあえず個別に決め打ちで、とすべきでしょうか。

と。その前に。今まで setlocale() していなかったという事は。
もしかして、setlocale() すると ruby の他の部分で問題が起きたりしますか?


$ cat mblentest.c
/* vi:tabstop=4 */
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>    /* isprint() */
#include <sys/nls.h>  /* _nls_is_dbcs_lead() */

int main( void )
{
	int i, n = 3, chk_len;
	char* list[] = { "ab", "てすと", "てaすとb" };
	for( i = 0 ; i < n ; ++ i )
	{
		char* str = list[ i ];
		printf( "\n\"%s\"\n\n", str );
		while( *str != '\0' )
		{
			int c = (unsigned char) *str;
			int dbcs = _nls_is_dbcs_lead( c );
			printf( "[<%xh> '%c'] %-8s : dbcs? = %d : mblen = { ",
					c, ( isprint( c ) ? c : ' ' ), str, dbcs );
			for( chk_len = 1 ; chk_len <= 4 ; ++ chk_len )
				printf( "%d =>%- d, ", chk_len, mblen( str, chk_len ) );
			puts( "}" );
			str += ( ( dbcs && str[ 1 ] != '\0' ) ? 2 : 1 );
			/* str += mblen( str, 2 ); */   /* 2 bytes for DBCS chars */
		}
	}
	return 0;
}

$ gcc mblentest.c && ./mblentest

"ab"

[<61h> 'a'] ab       : dbcs? = 0 : mblen = { 1 => 1, 2 => 1, 3 => 1, 4 => 1, }
[<62h> 'b'] b        : dbcs? = 0 : mblen = { 1 => 1, 2 => 1, 3 => 1, 4 => 1, }

"てすと"

[<82h> ' '] てすと   : dbcs? = 1 : mblen = { 1 =>-1, 2 => 2, 3 => 2, 4 => 2, }
[<82h> ' '] すと     : dbcs? = 1 : mblen = { 1 =>-1, 2 => 2, 3 => 2, 4 => 2, }
[<82h> ' '] と       : dbcs? = 1 : mblen = { 1 =>-1, 2 => 2, 3 => 2, 4 => 2, }

"てaすとb"

[<82h> ' '] てaすとb : dbcs? = 1 : mblen = { 1 =>-1, 2 => 2, 3 => 2, 4 => 2, }
[<61h> 'a'] aすとb   : dbcs? = 0 : mblen = { 1 => 1, 2 => 1, 3 => 1, 4 => 1, }
[<82h> ' '] すとb    : dbcs? = 1 : mblen = { 1 =>-1, 2 => 2, 3 => 2, 4 => 2, }
[<82h> ' '] とb      : dbcs? = 1 : mblen = { 1 =>-1, 2 => 2, 3 => 2, 4 => 2, }
[<62h> 'b'] b        : dbcs? = 0 : mblen = { 1 => 1, 2 => 1, 3 => 1, 4 => 1, }

---
Siena. <mailto:siena@faculty.chiba-u.jp>

In This Thread