summaryrefslogtreecommitdiff
path: root/lib/tmpdir.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-21 12:15:34 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-21 12:15:34 +0000
commit3c91f332c546c767b849354da5ec38710f7eab47 (patch)
tree9a804269becd18f9c30cc312511c99fff2704e6b /lib/tmpdir.rb
parent7ddb8fc76b8fb2aca90c383bfae3a508a3af128f (diff)
* lib/tmpdir.rb (Dir.mktmpdir): make directory suffix specifiable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/tmpdir.rb')
-rw-r--r--lib/tmpdir.rb33
1 files changed, 28 insertions, 5 deletions
diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb
index 485054746f..76656a589e 100644
--- a/lib/tmpdir.rb
+++ b/lib/tmpdir.rb
@@ -48,14 +48,23 @@ class Dir
# Dir.mktmpdir creates a temporary directory.
#
# The directory is created with 0700 permission.
- # The name of the directory is prefixed
- # with <i>prefix</i> argument.
- # If <i>prefix</i> is not given,
- # the prefix "d" is used.
+ #
+ # The prefix and suffix of the name of the directory is specified by
+ # the optional first argument, <i>prefix_suffix</i>.
+ # - If it is not specified or nil, "d" is used as the prefix and no suffix is used.
+ # - If it is a string, it is used as the prefix and no suffix is used.
+ # - If it is an array, first element is used as the prefix and second element is used as a suffix.
+ #
+ # Dir.mktmpdir {|dir| dir is ".../d..." }
+ # Dir.mktmpdir("foo") {|dir| dir is ".../foo..." }
+ # Dir.mktmpdir(["foo", "bar"]) {|dir| path is ".../foo...bar" }
#
# The directory is created under Dir.tmpdir or
# the optional second argument <i>tmpdir</i> if non-nil value is given.
#
+ # Dir.mktmpdir {|dir| dir is "#{Dir.tmpdir}/d..." }
+ # Dir.mktmpdir(nil, "/var/tmp") {|dir| dir is "/var/tmp/d..." }
+ #
# If a block is given,
# it is yielded with the path of the directory.
# The directory and its contents are removed
@@ -80,13 +89,27 @@ class Dir
# FileUtils.remove_entry_secure dir
# end
#
- def Dir.mktmpdir(prefix="d", tmpdir=nil)
+ def Dir.mktmpdir(prefix_suffix=nil, tmpdir=nil)
+ case prefix_suffix
+ when nil
+ prefix = "d"
+ suffix = ""
+ when String
+ prefix = prefix_suffix
+ suffix = ""
+ when Array
+ prefix = prefix_suffix[0]
+ suffix = prefix_suffix[1]
+ else
+ raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
+ end
tmpdir ||= Dir.tmpdir
t = Time.now.strftime("%Y%m%d")
n = nil
begin
path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
path << "-#{n}" if n
+ path << suffix
Dir.mkdir(path, 0700)
rescue Errno::EEXIST
n ||= 0