summaryrefslogtreecommitdiff
path: root/lib/tempfile.rb
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-11 08:28:29 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-09-11 08:28:29 +0000
commit55717aa69b82231d4fcacf2197a63e00348b3b41 (patch)
treec440c415702767c1d119fa8ed4895ab335225260 /lib/tempfile.rb
parentd2a68669da4b31f70d99888ef87286c6cc901afb (diff)
* lib/tempfile.rb (Tempfile::make_tmpname): Allow to specify a
suffix for a temporary file name. * lib/tempfile.rb (Tempfile::make_tmpname): Make temporary file names less predictable by including a random string. [inspired by: akr] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/tempfile.rb')
-rw-r--r--lib/tempfile.rb22
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/tempfile.rb b/lib/tempfile.rb
index 6a2d560..5eb294e 100644
--- a/lib/tempfile.rb
+++ b/lib/tempfile.rb
@@ -15,9 +15,15 @@ class Tempfile < DelegateClass(File)
@@cleanlist = []
@@lock = Mutex.new
- # Creates a temporary file of mode 0600 in the temporary directory
- # whose name is basename.pid.n and opens with mode "w+". A Tempfile
- # object works just like a File object.
+ # Creates a temporary file of mode 0600 in the temporary directory,
+ # opens it with mode "w+", and returns a Tempfile object which
+ # represents the created temporary file. A Tempfile object can be
+ # treated just like a normal File object.
+ #
+ # The basename parameter is used to determine the name of a
+ # temporary file. If an Array is given, the first element is used
+ # as prefix string and the second as suffix string, respectively.
+ # Otherwise it is treated as prefix string.
#
# If tmpdir is omitted, the temporary directory is determined by
# Dir::tmpdir provided by 'tmpdir.rb'.
@@ -65,7 +71,15 @@ class Tempfile < DelegateClass(File)
end
def make_tmpname(basename, n)
- sprintf('%s.%d.%d', basename, $$, n)
+ case basename
+ when Array
+ prefix, suffix = *basename
+ else
+ prefix, suffix = basename, ''
+ end
+
+ t = Time.now.strftime("%Y%m%d")
+ path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}-#{n}#{suffix}"
end
private :make_tmpname