From 88aa8632741d027d1d2e58f8073d4ec90845499d Mon Sep 17 00:00:00 2001 From: matz Date: Sat, 18 Oct 2008 10:32:26 +0000 Subject: * lib/tempfile.rb (Tempfile#initialize): now Tempfile.new takes keyword arguments to open(). [ruby-dev:36756] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/tempfile.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lib/tempfile.rb') diff --git a/lib/tempfile.rb b/lib/tempfile.rb index 7765026b47..601bb8d2f8 100644 --- a/lib/tempfile.rb +++ b/lib/tempfile.rb @@ -29,7 +29,12 @@ class Tempfile < DelegateClass(File) # Dir::tmpdir provided by 'tmpdir.rb'. # When $SAFE > 0 and the given tmpdir is tainted, it uses # /tmp. (Note that ENV values are tainted by default) - def initialize(basename, tmpdir=Dir::tmpdir) + def initialize(basename, *rest) + # I wish keyword argument settled soon. + if opts = Hash.try_convert(rest[-1]) + rest.pop + end + tmpdir = rest[0] || Dir::tmpdir if $SAFE > 0 and tmpdir.tainted? tmpdir = '/tmp' end @@ -56,7 +61,12 @@ class Tempfile < DelegateClass(File) @clean_proc = Tempfile.callback(@data) ObjectSpace.define_finalizer(self, @clean_proc) - @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600) + if opts.nil? + opts = [] + else + opts = [opts] + end + @tmpfile = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL, 0600, *opts) @tmpname = tmpname @@cleanlist << @tmpname @data[1] = @tmpfile -- cgit v1.2.3