From 8192500716e3d151c1fec3b523df447683fe9724 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 1 May 2015 21:38:39 +0200 Subject: path: add resolving desktop path to platform-specific paths win32 has a special function for this. I'm not sure about OSX - it seems ~/Desktop can be hardcoded, and the OSX GUI actually localizes the _displayed_ path in its UI. For Unix, there is not much to be done, or is there. --- osdep/path-macosx.m | 2 ++ osdep/path-unix.c | 2 ++ osdep/path-win.c | 12 ++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'osdep') diff --git a/osdep/path-macosx.m b/osdep/path-macosx.m index 618f2038c8..52e2a2c771 100644 --- a/osdep/path-macosx.m +++ b/osdep/path-macosx.m @@ -28,5 +28,7 @@ const char *mp_get_platform_path_osx(void *talloc_ctx, const char *type) [pool release]; return res; } + if (strcmp(type, "desktop") == 0) + return mp_path_join(talloc_ctx, bstr0(getenv("HOME")), bstr0("Desktop")); return NULL; } diff --git a/osdep/path-unix.c b/osdep/path-unix.c index c3b70d7e06..cea4235c15 100644 --- a/osdep/path-unix.c +++ b/osdep/path-unix.c @@ -60,5 +60,7 @@ const char *mp_get_platform_path_unix(void *talloc_ctx, const char *type) return old_home; if (strcmp(type, "global") == 0) return MPV_CONFDIR; + if (strcmp(type, "desktop") == 0) + return getenv("HOME"); return NULL; } diff --git a/osdep/path-win.c b/osdep/path-win.c index 26f7ffa62e..52cce6a61e 100644 --- a/osdep/path-win.c +++ b/osdep/path-win.c @@ -47,7 +47,7 @@ static char *mp_get_win_exe_subdir(void *talloc_ctx) return talloc_asprintf(talloc_ctx, "%s/mpv", mp_get_win_exe_dir(talloc_ctx)); } -static char *mp_get_win_app_dir(void *talloc_ctx) +static char *mp_get_win_shell_dir(void *talloc_ctx, int folder) { wchar_t w_appdir[MAX_PATH + 1] = {0}; @@ -55,7 +55,13 @@ static char *mp_get_win_app_dir(void *talloc_ctx) SHGFP_TYPE_CURRENT, w_appdir) != S_OK) return NULL; - return talloc_asprintf(talloc_ctx, "%s/mpv", mp_to_utf8(talloc_ctx, w_appdir)); + return mp_to_utf8(talloc_ctx, w_appdir); +} + +static char *mp_get_win_app_dir(void *talloc_ctx) +{ + char *path = mp_get_win_shell_dir(talloc_ctx, CSIDL_APPDATA); + return path ? mp_path_join(talloc_ctx, bstr0(path), bstr0("mpv")) : NULL; } const char *mp_get_platform_path_win(void *talloc_ctx, const char *type) @@ -67,5 +73,7 @@ const char *mp_get_platform_path_win(void *talloc_ctx, const char *type) // Not really true, but serves as a way to return a lowest-priority dir. if (strcmp(type, "global") == 0) return mp_get_win_exe_subdir(talloc_ctx); + if (strcmp(type, "desktop") == 0) + return mp_get_win_shell_dir(talloc_ctx, CSIDL_DESKTOPDIRECTORY); return NULL; } -- cgit v1.2.3