[ruby-dev:3463] Re: [BUG?] open()'s command line interpretation

From: WATANABE Hirofumi <watanabe@...>
Date: 1998-08-24 09:57:37 UTC
List: ruby-dev #3463
わたなべです.

Shin-ichro Hara <sinara@blade.nagaokaut.ac.jp> 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

In This Thread