Fix up Rubinius specific library specs.
[rbx.git] / lib / tmpdir.rb
blob7deda9463eecb5577177d9e5a0296e021ac6b456
2 # tmpdir - retrieve temporary directory path
4 # $Id: tmpdir.rb 11708 2007-02-12 23:01:19Z shyouhei $
7 class Dir
9   @@systmpdir = '/tmp'
11   begin
12     require 'Win32API'
13     max_pathlen = 260
14     windir = ' '*(max_pathlen+1)
15     begin
16       getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L')
17     rescue RuntimeError
18       getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L')
19     end
20     len = getdir.call(windir, windir.size)
21     windir = File.expand_path(windir[0, len])
22     temp = File.join(windir, 'temp')
23     @@systmpdir = temp if File.directory?(temp) and File.writable?(temp)
24   rescue LoadError
25   end
27   ##
28   # Returns the operating system's temporary file path.
30   def Dir::tmpdir
31     tmp = '.'
32     if $SAFE > 0
33       tmp = @@systmpdir
34     else
35       for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'],
36                   ENV['USERPROFILE'], @@systmpdir, '/tmp']
37         if dir and File.directory?(dir) and File.writable?(dir)
38           tmp = dir
39           break
40         end
41       end
42     end
43     File.expand_path(tmp)
44   end
45 end