[glib] Use CSIDL_LOCAL_APPDATA on Windows



commit 9d80c361418f94c609840ec9f83741aede7e482c
Author: Tor Lillqvist <tml iki fi>
Date:   Thu Oct 14 22:47:25 2010 +0300

    Use CSIDL_LOCAL_APPDATA on Windows
    
    Make g_get_user_data_dir() return the CSIDL_LOCAL_APPDATA folder on
    Windows, and not CSIDL_PERSONAL. On Windows 7, that corresponds to the
    subfolders AppData\Local vs. Documents under the profile ("home")
    folder. This matches what Qt does, for instance, and has been widely
    requested.
    
    Also make g_get_user_config_dir() return this and not the (roaming)
    CSIDL_APPDATA folder. The reason for this change is that it would be
    surprising and hard to justify if g_get_user_data_dir() returned the
    local application data folder while g_get_user_config_dir() would
    return the roaming one. Nothing in the function names or the XDG specs
    suggests that any roaming vs. local dichotomy would be involved.
    
    Document the new semantics and the fact that these two functions now
    return the same directory on Windows.
    
    Note that in reality, code that really truly wants to support Windows
    as well as possible probably will not use these GLib functions anyway,
    but Win32 APIs directly to be sure what it is doing...
    
    Should hopefully satisfy complaints in bug #620710 and related bugs.

 glib/gutils.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/glib/gutils.c b/glib/gutils.c
index 49bbadb..4395a52 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -2065,8 +2065,10 @@ g_set_application_name (const gchar *application_name)
  * XDG Base Directory Specification</ulink>.
  * In this case the directory retrieved will be XDG_DATA_HOME.
  *
- * On Windows is the virtual folder that represents the My Documents
- * desktop item. See documentation for CSIDL_PERSONAL.
+ * On Windows this is the folder to use for local (as opposed to
+ * roaming) application data. See documentation for
+ * CSIDL_LOCAL_APPDATA. Note that on Windows it thus is the same as
+ * what g_get_user_config_dir() returns.
  *
  * Return value: a string owned by GLib that must not be modified 
  *               or freed.
@@ -2082,7 +2084,7 @@ g_get_user_data_dir (void)
   if (!g_user_data_dir)
     {
 #ifdef G_OS_WIN32
-      data_dir = get_special_folder (CSIDL_PERSONAL);
+      data_dir = get_special_folder (CSIDL_LOCAL_APPDATA);
 #else
       data_dir = (gchar *) g_getenv ("XDG_DATA_HOME");
 
@@ -2119,7 +2121,7 @@ g_init_user_config_dir (void)
   if (!g_user_config_dir)
     {
 #ifdef G_OS_WIN32
-      config_dir = get_special_folder (CSIDL_APPDATA);
+      config_dir = get_special_folder (CSIDL_LOCAL_APPDATA);
 #else
       config_dir = (gchar *) g_getenv ("XDG_CONFIG_HOME");
 
@@ -2151,10 +2153,10 @@ g_init_user_config_dir (void)
  * XDG Base Directory Specification</ulink>.
  * In this case the directory retrieved will be XDG_CONFIG_HOME.
  *
- * On Windows is the directory that serves as a common repository for
- * application-specific data. A typical path is
- * C:\Documents and Settings\username\Application. See documentation for
- * CSIDL_APPDATA.
+ * On Windows this is the folder to use for local (as opposed to
+ * roaming) application data. See documentation for
+ * CSIDL_LOCAL_APPDATA. Note that on Windows it thus is the same as
+ * what g_get_user_data_dir() returns.
  *
  * Return value: a string owned by GLib that must not be modified 
  *               or freed.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]