ruby-changes:9862
From: yugui <ko1@a...>
Date: Fri, 9 Jan 2009 11:19:37 +0900 (JST)
Subject: [ruby-changes:9862] Ruby:r21403 (ruby_1_9_1): merges r21336 from trunk into ruby_1_9_1.
yugui 2009-01-09 11:18:59 +0900 (Fri, 09 Jan 2009) New Revision: 21403 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21403 Log: merges r21336 from trunk into ruby_1_9_1. * win32/win32.c (init_env): use user profile folder than personal folder. Modified files: branches/ruby_1_9_1/ChangeLog branches/ruby_1_9_1/win32/win32.c Index: ruby_1_9_1/ChangeLog =================================================================== --- ruby_1_9_1/ChangeLog (revision 21402) +++ ruby_1_9_1/ChangeLog (revision 21403) @@ -1,3 +1,8 @@ +Mon Jan 5 12:52:08 2009 Nobuyoshi Nakada <nobu@r...> + + * win32/win32.c (init_env): use user profile folder than personal + folder. + Mon Jan 5 17:59:43 2009 Nobuyoshi Nakada <nobu@r...> * configure.in (cygwin): needs properly implemented nl_langinfo(). Index: ruby_1_9_1/win32/win32.c =================================================================== --- ruby_1_9_1/win32/win32.c (revision 21402) +++ ruby_1_9_1/win32/win32.c (revision 21403) @@ -360,13 +360,31 @@ return p; } +#ifndef CSIDL_PROFILE +#define CSIDL_PROFILE 40 +#endif + +static BOOL +get_special_folder(int n, char *env) +{ + LPITEMIDLIST pidl; + LPMALLOC alloc; + BOOL f = FALSE; + if (SHGetSpecialFolderLocation(NULL, n, &pidl) == 0) { + f = SHGetPathFromIDList(pidl, env); + SHGetMalloc(&alloc); + alloc->lpVtbl->Free(alloc, pidl); + alloc->lpVtbl->Release(alloc); + } + return f; +} + static void init_env(void) { char env[_MAX_PATH]; DWORD len; BOOL f; - LPITEMIDLIST pidl; if (!GetEnvironmentVariable("HOME", env, sizeof(env))) { f = FALSE; @@ -380,13 +398,12 @@ else if (GetEnvironmentVariable("USERPROFILE", env, sizeof(env))) { f = TRUE; } - else if (SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == 0) { - LPMALLOC alloc; - f = SHGetPathFromIDList(pidl, env); - SHGetMalloc(&alloc); - alloc->lpVtbl->Free(alloc, pidl); - alloc->lpVtbl->Release(alloc); + else if (get_special_folder(CSIDL_PROFILE, env)) { + f = TRUE; } + else if (get_special_folder(CSIDL_PERSONAL, env)) { + f = TRUE; + } if (f) { char *p = translate_char(env, '\\', '/'); if (p - env == 2 && env[1] == ':') { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/