From: daz Date: 2003-07-27T00:05:38+09:00 Subject: New tmpdir.rb in CVS /lib 'ello, Could we know why the change from using GetTempPath in the new tmpdir.rb A) Access permissions ? B) Problem under Terminal Server ? C) No Unicode support ? D) tmpdir should be personal to user ? E) tmpdir should be common to all users on system ? F) Not available on all Win32 versions. G) Don't worry, just testing. H) Similar to G), but we 'screwed-up' for the very first time ;-) I) Other ? # Thu Jul 24 01:32:04 2003 WATANABE Hirofumi # # * lib/tmpdir.rb (tmpdir): new method. remove TMPDIR. # use GetSystemWindowsDirectory(GetSystemDirectory), not GetTempPath. http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/~checkout~/ruby/lib/tmpdir.rb?rev=1.4 Here is a (mutilated) section with my results: @@systmpdir = '/tmp' require 'Win32API' max_pathlen = 260 windir = ' '*(max_pathlen+1) begin getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L') rescue RuntimeError => e p ' RuntimeError expected here (Win98se)' p e getdir = Win32API.new('kernel32', 'GetSystemDirectory', '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) puts '-' * 50 p [temp, @@systmpdir] puts File.directory?(temp) puts File.writable?(temp) " RuntimeError expected here (Win98se)" # -------------------------------------------------- ["C:/WINDOWS/SYSTEM/temp", "/tmp"] false false Apps should never store into C:\WINDOWS\SYSTEM (and no \temp dir in there). So GetSystemDirectory is not good. GetSystemWindowsDirectory The GetSystemWindowsDirectory function retrieves the path of the shared Windows directory on a multi-user system. This function is provided primarily for compatibility. Why do you want the Windows directory ? ... and if you do ... windir = File.expand_path(ENV['WINDIR']) temp = File.join(windir, 'temp') @@systmpdir = temp if File.directory?(temp) and File.writable?(temp) p [temp, @@systmpdir] ["C:/WINDOWS/temp", "C:/WINDOWS/temp"] I see %WINDIR%\temp as a dir for Windows OS and, perhaps, MS apps to use. Thanks, daz (Feel free to ignore this)