From: WATANABE Hirofumi Date: 1998-08-24T18:57:37+09:00 Subject: [ruby-dev:3463] Re: [BUG?] open()'s command line interpretation わたなべです. Shin-ichro Hara writes: :1) open("|test/test.rb 'foo'") -> コマンドはみつかる :2) open("|test.rb 'foo'") -> みつからない :3) open("|test/test.rb foo" -> みつからない : :のですが、こんなものでしょうか。えーと、3) はみつかるのが正しいのでは :ないかな? ' のようなメタ文字が含まれる場合は sh 経由になるので見つかる けど, 3) は最終的に dln_find_1() でチェックされます. これの処理がちょっと厳しすぎるのが原因ですね. もっとゆるく / や \ が含まれていれば ok ぐらいでいいんじゃな いかな? --- dln.c.orig Wed Jul 29 18:50:28 1998 +++ dln.c Mon Aug 24 18:46:44 1998 @@ -1564,10 +1564,6 @@ #ifndef __MACOS__ - if (fname[0] == '/') return fname; - if (strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0) - return fname; + if (strchr(fname, '/')) return fname; #if defined(MSDOS) || defined(NT) || defined(__human68k__) - if (fname[0] == '\\') return fname; + if (strchr(fname, '\\')) return fname; if (strlen(fname) > 2 && fname[1] == ':') return fname; - if (strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0) - return fname; #endif