diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-01-08 03:57:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-08 03:57:54 +0100 |
commit | 2a366b674aa572e7cbdef257c5597cf62c9a6f5f (patch) | |
tree | 4e140723fa3e46081e89c836db93bddd8cec9025 /src/nvim/os/stdpaths.c | |
parent | ca7a5c0ce7d499e9e792f9e2f5b16e821d07adb1 (diff) | |
parent | ae1ba2b2fbee9c22e6791218203ff64bebe6b4f5 (diff) | |
download | rneovim-2a366b674aa572e7cbdef257c5597cf62c9a6f5f.tar.gz rneovim-2a366b674aa572e7cbdef257c5597cf62c9a6f5f.tar.bz2 rneovim-2a366b674aa572e7cbdef257c5597cf62c9a6f5f.zip |
Merge #5909 from justinmk/win32-xdg
Windows: fix XDG fallback paths
Diffstat (limited to 'src/nvim/os/stdpaths.c')
-rw-r--r-- | src/nvim/os/stdpaths.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/nvim/os/stdpaths.c b/src/nvim/os/stdpaths.c index 10b3f4c091..afb9bdec31 100644 --- a/src/nvim/os/stdpaths.c +++ b/src/nvim/os/stdpaths.c @@ -16,20 +16,29 @@ static const char *xdg_env_vars[] = { [kXDGDataDirs] = "XDG_DATA_DIRS", }; +#ifdef WIN32 +static const char *const xdg_defaults_env_vars[] = { + [kXDGConfigHome] = "LOCALAPPDATA", + [kXDGDataHome] = "LOCALAPPDATA", + [kXDGCacheHome] = "TEMP", + [kXDGRuntimeDir] = NULL, + [kXDGConfigDirs] = NULL, + [kXDGDataDirs] = NULL, +}; +#endif + /// Defaults for XDGVarType values /// /// Used in case environment variables contain nothing. Need to be expanded. static const char *const xdg_defaults[] = { #ifdef WIN32 - // Windows - [kXDGConfigHome] = "$LOCALAPPDATA", - [kXDGDataHome] = "$LOCALAPPDATA", - [kXDGCacheHome] = "$TEMP", + [kXDGConfigHome] = "~\\AppData\\Local", + [kXDGDataHome] = "~\\AppData\\Local", + [kXDGCacheHome] = "~\\AppData\\Local\\Temp", [kXDGRuntimeDir] = NULL, [kXDGConfigDirs] = NULL, [kXDGDataDirs] = NULL, #else - // Linux, BSD, CYGWIN, Apple [kXDGConfigHome] = "~/.config", [kXDGDataHome] = "~/.local/share", [kXDGCacheHome] = "~/.cache", @@ -50,7 +59,14 @@ char *stdpaths_get_xdg_var(const XDGVarType idx) const char *const env = xdg_env_vars[idx]; const char *const fallback = xdg_defaults[idx]; - const char *const env_val = os_getenv(env); + const char *env_val = os_getenv(env); + +#ifdef WIN32 + if (env_val == NULL) { + env_val = os_getenv(xdg_defaults_env_vars[idx]); + } +#endif + char *ret = NULL; if (env_val != NULL) { ret = xstrdup(env_val); |