[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]