From 456042c7c7e27877ee126ed8f9d928bae624a8a3 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 2 Jul 2008 09:23:13 +0000 Subject: merge revision(s) 17643: * lib/tmpdir.rb (@@systmpdir): prior LOCAL_APPDATA if possible, and should be clean. based on a patch from arton at [ruby-dev:35269] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@17801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/tmpdir.rb | 19 +++++++++++++------ version.h | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index eb00ea23d1..01dd67ebab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Jul 2 18:22:52 2008 Nobuyoshi Nakada + + * lib/tmpdir.rb (@@systmpdir): prior LOCAL_APPDATA if possible, and + should be clean. based on a patch from arton at [ruby-dev:35269] + Wed Jul 2 18:16:19 2008 Masaki Suketa * ext/win32ole/win32ole.c (date2time_str): fix the overflow in diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index 95ef08cfd6..2e82aa528e 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -12,16 +12,23 @@ class Dir begin require 'Win32API' + CSIDL_LOCAL_APPDATA = 0x001c max_pathlen = 260 windir = ' '*(max_pathlen+1) begin - getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L') + 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 - getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L') + 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 - len = getdir.call(windir, windir.size) - windir = File.expand_path(windir[0, len]) - temp = File.join(windir, 'temp') + temp = File.join(windir.untaint, 'temp') @@systmpdir = temp if File.directory?(temp) and File.writable?(temp) rescue LoadError end @@ -41,8 +48,8 @@ class Dir break end end + File.expand_path(tmp) end - File.expand_path(tmp) end # Dir.mktmpdir creates a temporary directory. diff --git a/version.h b/version.h index de370f4836..f3cb6ca7a9 100644 --- a/version.h +++ b/version.h @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2008-07-02" #define RUBY_VERSION_CODE 187 #define RUBY_RELEASE_CODE 20080702 -#define RUBY_PATCHLEVEL 41 +#define RUBY_PATCHLEVEL 42 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 -- cgit v1.2.3