[#18151] Regexp.last_match — WATANABE Tetsuya <llama@...01.gate01.com>
渡辺哲也です。
[#18186] [req] Marshal — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In article <1031498274.659939.18144.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1032189662.175916.22019.nullmailer@picachu.netlab.jp>,
[#18208] Re: [ruby-list:35875] Unsecure world writeabledir の警告 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
わたなべです。
[#18229] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
わたなべです。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
わたなべです。
[#18246] Re: missing/vsnprintf.c: printf("%+f", -0.0) — WATANABE Hirofumi <eban@...>
わたなべです。
At Tue, 10 Sep 2002 12:21:10 +0900,
[#18262] mswin32: EINVAL on Process.kill — Minero Aoki <aamine@...>
あおきです。
[#18274] $0 handling on DOSISH — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
岩月と申します。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[#18285] rubicon on EWS4800 — Koji Arai <JCA02266@...>
新井です。
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
なかだです。
In message <20020921.152641.11483667.JCA02266@nifty.ne.jp>
なかだです。
In article <200209211605.g8LG52p04564@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209211628.g8LGSxp04786@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209211739.g8LHdKp05495@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209220415.g8M4Fkp24392@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209260105.g8Q15PR08171@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <20020921.152641.11483667.JCA02266@nifty.ne.jp>,
なかだです。
In article <200209251737.g8PHbdR03024@sharui.nakada.kanuma.tochigi.jp>,
渡辺哲也です。
なかだです。
渡辺哲也です。
渡辺哲也です。
なかだです。
渡辺哲也です。
なかだです。
In article <200210020254.g922srH01700@sharui.nakada.kanuma.tochigi.jp>,
[#18314] class nest in module_eval — Minero Aoki <aamine@...>
あおきです。
[#18361] compile parse.y with -Wall — nobu.nakada@...
なかだです。
なかだです。
[#18371] Re: [ruby-cvs] ruby/lib/uri: * eval.c (ruby_run): should set toplevel visibility again here. — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#18374] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...>
わたなべです。
まつもと ゆきひろです
なかだです。
わたなべです。
いがらしです。少し前の話ですが。
わたなべです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#18391] pstore.rb can make a broken store — YANAGAWA Kazuhisa <kjana@...4lab.to>
# お願いされたから書いてみよう :-)
In article <20020926134339.C8DAE1EE12@milestones.dm4lab.to>,
[ruby-dev:18294] File.safe_unlink under non-DOSISH, Dir.makedirs, etc.
なかだです。
ftools.rbのsafe_unlinkですが、削除しようとするファイル自体のパー
ミッションが関係するのは、DOSISHなシステムだけなので、他の環境
では正しく動きません。
# MacOSもかな?
それと、[ruby-talk:50306]の「なんでDirのメソッドじゃないの?」と
いうのももっともな気がするので、Dirにも同じメソッドを持たせては
どうでしょうか。
あとついでにrmdir -p相当のFile.rmdirsとか。
Index: lib/ftools.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/ftools.rb,v
retrieving revision 1.8
diff -u -2 -p -w -r1.8 ftools.rb
--- lib/ftools.rb 20 Jun 2002 08:59:59 -0000 1.8
+++ lib/ftools.rb 16 Sep 2002 03:21:07 -0000
@@ -114,4 +114,6 @@ class << File
# unlink files safely
+ case RUBY_PLATFORM
+ when /mswin|mingw|bccwin|djgpp|os2|human/
def safe_unlink(*files)
verbose = if files[-1].is_a? String then false else files.pop end
@@ -125,5 +127,72 @@ class << File
end
+ def rmdirs(*dirs)
+ verbose = if dirs[-1].is_a? String then false else dirs.pop end
+ begin
+ $stderr.print dirs.join(" "), "\n" if verbose
+ chmod 0777, *dirs
+ dirs.each(&Dir.method(:rmdir))
+ rescue
+# STDERR.print "warning: Couldn't unlink #{files.join ' '}\n"
+ end
+ end
+ else
+ def safe_unlink(*files)
+ verbose = if files[-1].is_a? String then false else files.pop end
+ $stderr.print files.join(" "), "\n" if verbose
+ unlinked = 0
+ files.each do |file|
+ begin
+ unlinked += (type ||= File).unlink(file)
+ rescue Errno::EISDIR
+ type = Dir
+ redo
+ rescue Errno::EACCES
+ dir ||= dirname(file)
+ begin
+ unless (s = stat(dir)).writable?
+ chmod(s.mode | 0200, dir)
+ redo
+ end
+ rescue
+ end
+ rescue
+ end
+ end
+ unlinked
+ end
+
+ def rmdirs(*dirs)
+ verbose = if dirs[-1].is_a? String then false else dirs.pop end
+ $stderr.print dirs.join(" "), "\n" if verbose
+ unlinked = 0
+ dirs.each do |dir|
+ next unless FileTest.directory? dir
+ until dir == "." or dir == "/"
+ begin
+ unlinked += Dir.rmdir(dir)
+ rescue Errno::EACCES
+ parent = dirname(dir)
+ begin
+ unless (s = stat(parent)).writable?
+ chmod(s.mode | 0200, parent)
+ redo
+ end
+ rescue
+ break
+ end
+ rescue
+ break
+ end
+ dir = parent || dirname(dir)
+ parent = nil
+ end
+ end
+ unlinked
+ end
+ end
+
alias rm_f safe_unlink
+ alias rmpath rmdirs
def makedirs(*dirs)
@@ -164,3 +233,12 @@ class << File
end
+
+class << Dir
+ define_method(:makedirs, &File.method(:makedirs))
+ alias mkpath makedirs
+
+ define_method(:rmdirs, &File.method(:rmdirs))
+ alias rmpath rmdirs
+end
+
# vi:set sw=2:
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦