char *config_GetUserDir (vlc_userdir_t type) { switch (type) { case VLC_HOME_DIR: return config_GetShellDir (CSIDL_PERSONAL); case VLC_CONFIG_DIR: case VLC_DATA_DIR: case VLC_CACHE_DIR: return config_GetAppDir (); case VLC_DESKTOP_DIR: case VLC_DOWNLOAD_DIR: case VLC_TEMPLATES_DIR: case VLC_PUBLICSHARE_DIR: case VLC_DOCUMENTS_DIR: return config_GetUserDir(VLC_HOME_DIR); case VLC_MUSIC_DIR: return config_GetShellDir (CSIDL_MYMUSIC); case VLC_PICTURES_DIR: return config_GetShellDir (CSIDL_MYPICTURES); case VLC_VIDEOS_DIR: return config_GetShellDir (CSIDL_MYVIDEO); } vlc_assert_unreachable (); }
static char *config_GetAppDir (void) { #if !VLC_WINSTORE_APP /* if portable directory exists, use it */ TCHAR path[MAX_PATH]; if (GetModuleFileName (NULL, path, MAX_PATH)) { TCHAR *lastDir = _tcsrchr (path, '\\'); if (lastDir) { _tcscpy (lastDir + 1, TEXT("portable")); DWORD attrib = GetFileAttributes (path); if (attrib != INVALID_FILE_ATTRIBUTES && (attrib & FILE_ATTRIBUTE_DIRECTORY)) return FromT (path); } } #endif char *psz_dir; char *psz_parent = config_GetShellDir (CSIDL_APPDATA); if (psz_parent == NULL || asprintf (&psz_dir, "%s\\vlc", psz_parent) == -1) psz_dir = NULL; free (psz_parent); return psz_dir; }
static char *config_GetAppDir (void) { char *psz_dir; char *psz_parent = config_GetShellDir (CSIDL_APPDATA); if (psz_parent == NULL || asprintf (&psz_dir, "%s\\vlc", psz_parent) == -1) psz_dir = NULL; free (psz_parent); return psz_dir; }