mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	segment7.net>. [ruby-core:06894] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			994 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			994 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#
 | 
						|
# tmpdir - retrieve temporary directory path
 | 
						|
#
 | 
						|
# $Id$
 | 
						|
#
 | 
						|
 | 
						|
class Dir
 | 
						|
 | 
						|
  @@systmpdir = '/tmp'
 | 
						|
 | 
						|
  begin
 | 
						|
    require 'Win32API'
 | 
						|
    max_pathlen = 260
 | 
						|
    windir = ' '*(max_pathlen+1)
 | 
						|
    begin
 | 
						|
      getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L')
 | 
						|
    rescue RuntimeError
 | 
						|
      getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L')
 | 
						|
    end
 | 
						|
    getdir.call(windir, windir.size)
 | 
						|
    windir = File.expand_path(windir.rstrip.untaint)
 | 
						|
    temp = File.join(windir, '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
 | 
						|
    end
 | 
						|
    File.expand_path(tmp)
 | 
						|
  end
 | 
						|
end
 |