summaryrefslogtreecommitdiff
path: root/lib/tempfile.rb
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-02-09 10:56:24 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-02-09 10:56:24 +0000
commitb814252d728cb08f159da1777feca4f8e9362327 (patch)
treede6617897dbf6bce78045e3fa2ea84ea2422f166 /lib/tempfile.rb
parent1bbcd202e4dab0894bc5ed68ce4ea84dc916980f (diff)
1.1b7 pre
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@67 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/tempfile.rb')
-rw-r--r--lib/tempfile.rb23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/tempfile.rb b/lib/tempfile.rb
index 78b770c5a4..9d986e7691 100644
--- a/lib/tempfile.rb
+++ b/lib/tempfile.rb
@@ -15,6 +15,19 @@ require 'final'
class Tempfile < SimpleDelegator
Max_try = 10
+ def Tempfile.callback(path)
+ lambda{
+ print "removing ", path, "..."
+ if File.exist?(path)
+ File.unlink(path)
+ end
+ if File.exist?(path + '.lock')
+ File.unlink(path + '.lock')
+ end
+ print "done\n"
+ }
+ end
+
def initialize(basename, tmpdir = '/tmp')
umask = File.umask(0177)
begin
@@ -33,14 +46,7 @@ class Tempfile < SimpleDelegator
n += 1
end
- @clean_files = proc {|id|
- if File.exist?(@tmpname)
- File.unlink(@tmpname)
- end
- if File.exist?(@tmpname + '.lock')
- File.unlink(@tmpname + '.lock')
- end
- }
+ @clean_files = Tempfile.callback(@tmpname)
ObjectSpace.define_finalizer(self, @clean_files)
@tmpfile = File.open(@tmpname, 'w+')
@@ -75,6 +81,7 @@ if __FILE__ == $0
f = Tempfile.new("foo")
f.print("foo\n")
f.close
+ f = nil
f.open
p f.gets # => "foo\n"
f.close(true)