mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 e25feba67b
			
		
	
	
		e25feba67b
		
	
	
	
	
		
			
			[ruby-dev:28041] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9695 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
 |