[#30920] [REQ] Regexp#match! — Minero Aoki <aamine@...>

あおきです。

19 messages 2001/08/16

[#30945] file exist check method? — "Inoue" <inoue@...>

井上です。

98 messages 2001/08/17
[#30947] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/17

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

[#30949] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/17

新井です。

[#30950] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/17

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

[#30951] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/17

新井です。

[#30953] Re: file exist check method? — nobu.nakada@... 2001/08/17

なかだです。

[#30954] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/17

新井です。

[#30955] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/17

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

[#30956] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/17

新井です。

[#30958] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/18

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

[#30962] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/18

新井です。

[#30963] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/18

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

[#30965] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/18

新井です。

[#30969] Re: file exist check method? — nobu.nakada@... 2001/08/18

なかだです。

[#30970] Re: file exist check method? — Koji Arai <JCA02266@...> 2001/08/18

新井です。

[#30981] Re: file exist check method? — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/08/18

もりきゅうです。長文ごめんなさい。

[#30983] Re: file exist check method? — IWATSUKI Hiroyuki <don@...> 2001/08/18

岩月と申します。そろそろ寝なくては。

[#30988] Re: file exist check method? — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/08/19

もりきゅうです。

[#30989] Re: file exist check method? — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/08/19

もりきゅうです。

[#30997] Re: file exist check method? — nobu.nakada@... 2001/08/19

なかだです。

[#31020] Re: file exist check method? — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/08/20

もりきゅうです。

[#31022] Re: file exist check method? — maili31s@... (SugHimsi == SUGIHARA Hiroshi) 2001/08/20

すぎむし。

[#31024] Re: file exist check method? — nobu.nakada@... 2001/08/20

なかだです。

[#31025] File#join — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/08/20

もりきゅうです。subject 変えました。

[#31029] Re: File#join — Kazuhiro NISHIYAMA <zn@...> 2001/08/21

In <200108201823.AA00825@yoshida.nifty.ne.jp>

[#31079] Re: File#join — "K.Umakoshi" <pegacorn@...> 2001/08/22

File#join とか File#split とか使った事ないんですが…

[#31062] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/21

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

[#31065] Re: file exist check method? — nobu.nakada@... 2001/08/22

なかだです。

[#31067] Re: file exist check method? — Kazuhiro Yoshida <moriq.kazuhiro@...> 2001/08/22

もりきゅうです。

[#31068] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/22

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

[#31073] Re: file exist check method? — nobu.nakada@... 2001/08/22

なかだです。

[#31082] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/22

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

[#31087] Re: file exist check method? — nobu.nakada@... 2001/08/23

なかだです。

[#31094] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/23

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

[#31096] Re: file exist check method? — "U.Nakamura" <usa@...> 2001/08/23

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

[#31005] インストールしました — 嶋崎 正貴 <hayashih@...>

嶋崎と申します

15 messages 2001/08/20

[#31144] create_process または Win での外部コマンド実行 — Take_tk <ggb03124@...>

Windows で外部コマンドを実行するにはどういう方法があるのでしょうか?。

33 messages 2001/08/29
[#31145] Re: create_process または Win での外部コマンド実行 — "U.Nakamura" <usa@...> 2001/08/29

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

[#31152] Re: create_process または Win での外部コマンド実行 — nobu.nakada@... 2001/08/29

なかだです。

[#31153] Re: create_process または Win での外部コマンド実行 — Take_tk <ggb03124@...> 2001/08/29

たけ(tk)です。

[ruby-list:31067] Re: file exist check method?

From: Kazuhiro Yoshida <moriq.kazuhiro@...>
Date: 2001-08-22 06:59:47 UTC
List: ruby-list #31067
もりきゅうです。

nobu.nakada@nifty.ne.jp wrote:
>   ですね。それとgccや1.6のためのパッチ。

なかむら(う)さんにも私信でいただきました。
ありがとうございます。
RAA DOSish update しました。

以下私信の返信。

"U.Nakamura" <usa@osb.att.ne.jp> wrote:
> 1. DOSish.split("C:foo") #=> [".", "C:foo"] となるが、これは
>    意図された挙動ですか?

全く考えていませんでした。^^;

>    ["C:", "foo"] になって欲しい気がするのですけど。

そうですねぇ。
"C:foo" の意味付けが必要ですね。
"C:foo" は "C:/foo" とは違うし。
ドライブレターのみをパスとみなせるかどうか..。

特に Dir.chdir での扱いが特異ですよね。

=begin
C:\>cd c:\usr
C:\usr>cd c:src
C:\usr\src>
=end

p Dir.pwd		#=> "D:/ruby-dev/bin"
p Dir.chdir('c:\\usr')	#=> 0
p Dir.pwd		#=> "c:/usr"
p Dir.chdir('c:src')	#=> 0
p Dir.pwd		#=> "c:/usr/src"
p Dir.chdir('d:')	#=> 0
p Dir.pwd		#=> "D:/RUBY-DEV/BIN"
p Dir.chdir('d:\\')	#=> 0
p Dir.pwd		#=> "d:/"
p Dir.chdir('c:kana')	#=> 0
p Dir.pwd		#=> "c:/usr/src/kana"

Dir.chdir と File.join とを対応付けるとすると

p Dir.pwd		#=> "D:/ruby-dev/bin"
p Dir.chdir('c:\\usr')	#=> 0
p DOSish.join("c:/usr", "c:src")	#=> "c:/usr/src"
p DOSish.join("c:/usr/src", "d:")	#=> "D:/RUBY-DEV/BIN"

これは

def DOSish.join(*args)
  pwd = Dir.pwd
  args.flatten.each do |i|
    path = i.to_s
    Dir.chdir(path)
  end
  ret = Dir.pwd
  Dir.chdir(pwd)
  ret
end

と書けるのかな。ruby-list:31003 のドライブ対応仕様。
この実装はいつも絶対ディレクトリを返すのがいまいち。

def DOSish.join(*args)
  pwd = Dir.pwd
  args.flatten.each do |i|
    path = i.to_s
    Dir.chdir(path)
  end
  absolute = Dir.pwd
  Dir.chdir(pwd)
  relative = absolute.sub(/^#{pwd}\/?/, '')
  relative
end

例外が飛んだらどうしよう。nil を返しましょうか。

def DOSish.join(*args)
  begin
    pwd = Dir.pwd
    args.flatten.each do |i|
      path = i.to_s
      Dir.chdir(path)
    end
    absolute = Dir.pwd
    Dir.chdir(pwd)
    relative = absolute.sub(/^#{pwd}\/?/, '')
    relative
  rescue
    nil
  end
end

こんな感じ。
存在しないパスだと join できないのはやりすぎだなあ。^^;
これと同じ結果を返すように文字列処理すればいいのか。
ドライブレターを真面目に扱おうとすると面倒ですねぇ。

あと,File.split と File.join とを対応付けるとすると

現状で

p DOSish.join("C:/", "foo")	#=> "C:/foo"
p DOSish.join("C:", "foo")	#=> "C:/foo"

こうなってるのを

p DOSish.join("C:/", "foo")	#=> "C:/foo"
p DOSish.join("C:", "foo")	#=> "C:foo"

とすべきかどうか。ドライブレターのみとルートディレクトリを
明確に区別するってことですね。

また,File.expand_path も

現状で

Dir.chdir('c:/usr')
p File.expand_path('c:src')	#=> "c:/usr/c:src"

こうなってるのを

Dir.chdir('c:/usr')
p File.expand_path('c:src')	#=> "c:/usr/src"

こうすべきでしょう。DOSish.expand_path を用意しようかな。

結局,"C:foo" は絶対ディレクトリでないし,パスセパレータが
挟まってるわけでもない。"C:" と "foo" に分けられるとなると,

  File.split, File.join, File.expand_path, Dir.chdir

が互いに矛盾しないように仕様を決めないといけませんね。

  DOSish.split("C:foo") #=> [".", "C:foo"]

は現状では,まあそれなりに矛盾のない仕様ではないかと。

> 2. 1.6系だとコンパイルが通らなかったので、パッチをつけときま
>    す。user32.libの話も含んでます。

ありがとうございます。取り込みます。

----
YOSHIDA Kazuhiro  moriq@moriq.com  http://www.moriq.com/

In This Thread