diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
commit | d0233291bc8a5068e52c69c210e5979e5324b5bc (patch) | |
tree | 7d9459449c33792c63eeb7baa071e76352e0baab /trunk/lib/tmpdir.rb | |
parent | 0dc342de848a642ecce8db697b8fecd83a63e117 (diff) | |
parent | 72eaacaa15256ab95c3b52ea386f88586fb9da40 (diff) |
re-adding tag v1_9_0_4 as an alias of trunk@18848v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/lib/tmpdir.rb')
-rw-r--r-- | trunk/lib/tmpdir.rb | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/trunk/lib/tmpdir.rb b/trunk/lib/tmpdir.rb deleted file mode 100644 index 2e82aa528e..0000000000 --- a/trunk/lib/tmpdir.rb +++ /dev/null @@ -1,137 +0,0 @@ -# -# tmpdir - retrieve temporary directory path -# -# $Id$ -# - -require 'fileutils' - -class Dir - - @@systmpdir = '/tmp' - - begin - require 'Win32API' - CSIDL_LOCAL_APPDATA = 0x001c - max_pathlen = 260 - windir = ' '*(max_pathlen+1) - begin - getdir = Win32API.new('shell32', 'SHGetFolderPath', 'LLLLP', 'L') - raise RuntimeError if getdir.call(0, CSIDL_LOCAL_APPDATA, 0, 0, windir) != 0 - windir = File.expand_path(windir.rstrip) - rescue RuntimeError - begin - getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L') - rescue RuntimeError - getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L') - end - len = getdir.call(windir, windir.size) - windir = File.expand_path(windir[0, len]) - end - temp = File.join(windir.untaint, 'temp') - @@systmpdir = temp if File.directory?(temp) and File.writable?(temp) - rescue LoadError - end - - ## - # Returns the operating system's temporary file path. - - def Dir::tmpdir - tmp = '.' - if $SAFE > 0 - tmp = @@systmpdir - else - for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], - ENV['USERPROFILE'], @@systmpdir, '/tmp'] - if dir and File.directory?(dir) and File.writable?(dir) - tmp = dir - break - end - end - File.expand_path(tmp) - end - end - - # Dir.mktmpdir creates a temporary directory. - # - # The directory is created with 0700 permission. - # - # 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| dir 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 - # using FileUtils.remove_entry_secure before Dir.mktmpdir returns. - # The value of the block is returned. - # - # Dir.mktmpdir {|dir| - # # use the directory... - # open("#{dir}/foo", "w") { ... } - # } - # - # If a block is not given, - # The path of the directory is returned. - # In this case, Dir.mktmpdir doesn't remove the directory. - # - # dir = Dir.mktmpdir - # begin - # # use the directory... - # open("#{dir}/foo", "w") { ... } - # ensure - # # remove the directory. - # FileUtils.remove_entry_secure dir - # end - # - 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 - n += 1 - retry - end - - if block_given? - begin - yield path - ensure - FileUtils.remove_entry_secure path - end - else - path - end - end -end |