]> git.sesse.net Git - vlc/blobdiff - src/config/dirs.c
Update _WIN32_IE to IE 5.01
[vlc] / src / config / dirs.c
index a4ae46fe63bc70afe50f50ec4b000774249e1349..c8cfc822d1fded55ee43757ff99d67dc94871c3e 100644 (file)
 #include <vlc_common.h>
 
 #if defined( WIN32 )
-# define _WIN32_IE IE5
+# ifndef _WIN32_IE
+#  define _WIN32_IE 0x0501
+# endif
 # include <w32api.h>
+#ifndef UNDER_CE
 # include <direct.h>
+#endif
 # include <shlobj.h>
 #else
 # include <unistd.h>
 #include <assert.h>
 #include <limits.h>
 
-/**
- * config_GetDataDir: find directory where shared data is installed
- *
- * @return a string (always succeeds).
- */
-const char *config_GetDataDir( void )
-{
-#if defined (WIN32) || defined(__APPLE__) || defined (SYS_BEOS)
-    static char path[PATH_MAX] = "";
-
-    if( *path == '\0' )
-    {
-        snprintf( path, sizeof( path ), "%s/share",
-                  vlc_global()->psz_vlcpath );
-        path[sizeof( path ) - 1] = '\0';
-    }
-    return path;
+#if defined( WIN32 )
+# define DIR_SHARE ""
 #else
-    return DATA_PATH;
+# define DIR_SHARE "share"
 #endif
-}
+
 
 /**
- * Determines the system configuration directory.
+ * config_GetDataDir: find directory where shared data is installed
  *
  * @return a string (always succeeds).
  */
-const char *config_GetConfDir( void )
+const char *config_GetDataDir( void )
 {
 #if defined (WIN32) || defined(__APPLE__) || defined (SYS_BEOS)
     static char path[PATH_MAX] = "";
 
     if( *path == '\0' )
     {
-        snprintf( path, sizeof( path ), "%s"DIR_SEP"share", /* FIXME: Duh? */
-                  vlc_global()->psz_vlcpath );
+        snprintf( path, sizeof( path ), "%s" DIR_SEP DIR_SHARE, psz_vlcpath );
         path[sizeof( path ) - 1] = '\0';
     }
     return path;
 #else
-    return SYSCONFDIR;
+    return DATA_PATH;
 #endif
 }
 
-static const char *GetDir( bool b_appdata )
+static const char *GetDir( bool b_appdata, bool b_common_appdata )
 {
     /* FIXME: a full memory page here - quite a waste... */
     static char homedir[PATH_MAX] = "";
@@ -99,22 +87,30 @@ static const char *GetDir( bool b_appdata )
     wchar_t wdir[MAX_PATH];
 
 # if defined (UNDER_CE)
+    /*There are some errors in cegcc headers*/
+#undef SHGetSpecialFolderPath
+    BOOL WINAPI SHGetSpecialFolderPath(HWND,LPWSTR,int,BOOL);
     if( SHGetSpecialFolderPath( NULL, wdir, CSIDL_APPDATA, 1 ) )
 # else
     /* Get the "Application Data" folder for the current user */
     if( S_OK == SHGetFolderPathW( NULL,
-              (b_appdata ? CSIDL_APPDATA : CSIDL_PROFILE) | CSIDL_FLAG_CREATE,
+              ( b_appdata ? CSIDL_APPDATA :
+               ( b_common_appdata ? CSIDL_COMMON_APPDATA: CSIDL_PERSONAL ) )
+              | CSIDL_FLAG_CREATE,
                                   NULL, SHGFP_TYPE_CURRENT, wdir ) )
 # endif
     {
         static char appdir[PATH_MAX] = "";
+        static char comappdir[PATH_MAX] = "";
         WideCharToMultiByte (CP_UTF8, 0, wdir, -1,
-                             b_appdata ? appdir : homedir, PATH_MAX,
-                             NULL, NULL);
-        return b_appdata ? appdir : homedir;
+                             b_appdata ? appdir :
+                             (b_common_appdata ? comappdir :homedir),
+                              PATH_MAX, NULL, NULL);
+        return b_appdata ? appdir : (b_common_appdata ? comappdir :homedir);
     }
 #else
     (void)b_appdata;
+    (void)b_common_appdata;
 #endif
 
 #ifdef LIBVLC_USE_PTHREAD
@@ -151,19 +147,43 @@ static const char *GetDir( bool b_appdata )
     return homedir;
 }
 
+/**
+ * Determines the system configuration directory.
+ *
+ * @return a string (always succeeds).
+ */
+const char *config_GetConfDir( void )
+{
+#if defined (WIN32)
+    return GetDir( false, true );
+#elif defined(__APPLE__) || defined (SYS_BEOS)
+    static char path[PATH_MAX] = "";
+
+    if( *path == '\0' )
+    {
+        snprintf( path, sizeof( path ), "%s"DIR_SEP DIR_SHARE, /* FIXME: Duh? */
+                  psz_vlcpath );
+        path[sizeof( path ) - 1] = '\0';
+    }
+    return path;
+#else
+    return SYSCONFDIR;
+#endif
+}
+
 /**
  * Get the user's home directory
  */
 const char *config_GetHomeDir( void )
 {
-    return GetDir (false);
+    return GetDir (false, false);
 }
 
 static char *config_GetFooDir (const char *xdg_name, const char *xdg_default)
 {
     char *psz_dir;
 #if defined(WIN32) || defined(__APPLE__) || defined(SYS_BEOS)
-    const char *psz_parent = GetDir (true);
+    const char *psz_parent = GetDir (true, false);
 
     if( asprintf( &psz_dir, "%s" DIR_SEP CONFIG_DIR, psz_parent ) == -1 )
         psz_dir = NULL;
@@ -215,5 +235,15 @@ char *config_GetUserDataDir( void )
  */
 char *config_GetCacheDir( void )
 {
+#if defined(__APPLE__)
+    char *psz_dir;
+    const char *psz_parent = GetDir (true, false);
+
+    if( asprintf( &psz_dir, "%s" DIR_SEP CACHES_DIR, psz_parent ) == -1 )
+        psz_dir = NULL;
+
+    return psz_dir;
+#else
     return config_GetFooDir ("CACHE", ".cache");
+#endif
 }