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 --- ChangeLog | 5 +++++ lib/tempfile.rb | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0d431b2dda..a98a63971b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Oct 18 04:08:18 2008 Yukihiro Matsumoto + + * lib/tempfile.rb (Tempfile#initialize): now Tempfile.new takes + keyword arguments to open(). [ruby-dev:36756] + Tue Oct 14 17:10:10 2008 Martin Duerst * tool/transcode-tblgen.rb: added set_valid_byte_pattern 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