diff options
author | jstebbins <[email protected]> | 2015-04-19 14:38:38 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2015-04-19 14:38:38 +0000 |
commit | 76308dc3563db85da5a3daae74014637423cb249 (patch) | |
tree | c53612b2947e5eef6e896cbac8d6cb2340a99b72 /libhb/ports.c | |
parent | 2b0b91800b4e3461f0b9c1d8c3070968b1b9fe90 (diff) |
ports: add functions for looking up user config directory
These will be used by the CLI for loading custom user presets.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7105 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/ports.c')
-rw-r--r-- | libhb/ports.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libhb/ports.c b/libhb/ports.c index 048f478cf..c75a7c943 100644 --- a/libhb/ports.c +++ b/libhb/ports.c @@ -7,6 +7,10 @@ For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html */ +#ifdef SYS_MINGW +#define _WIN32_WINNT 0x600 +#endif + #ifdef USE_PTHREAD #ifdef SYS_LINUX #define _GNU_SOURCE @@ -50,6 +54,7 @@ #include <wchar.h> #include <mbctype.h> #include <locale.h> +#include <shlobj.h> #endif #ifdef SYS_SunOS @@ -493,6 +498,62 @@ int hb_platform_init() } /************************************************************************ + * Get app data config directory + ***********************************************************************/ +void hb_get_user_config_directory( char path[512] ) +{ + /* Create the base */ +#if defined( SYS_CYGWIN ) || defined( SYS_MINGW ) + WCHAR *wide_path; + SHGetKnownFolderPath(&FOLDERID_RoamingAppData, 0, NULL, &wide_path); + WideCharToMultiByte(CP_UTF8, 0, wide_path, -1, path, 512, NULL, NULL ); + path[511] = 0; +#elif defined( SYS_LINUX ) + char *p; + + if ((p = getenv("XDG_CONFIG_HOME")) != NULL) + { + strncpy(path, p, 511); + path[511] = 0; + } + else if ((p = getenv("HOME")) != NULL) + { + strncpy(path, p, 511); + path[511] = 0; + int len = strlen(path); + strncpy(path + len, "/.config", 511 - len - 1); + path[511] = 0; + } + else + { + hb_error("Failed to lookup user config directory!"); + path[0] = 0; + } +#elif defined( __APPLE__ ) + osx_get_user_config_directory(path); +#endif +} + +/************************************************************************ + * Get a user config filename for HB + ***********************************************************************/ +void hb_get_user_config_filename( char name[1024], char *fmt, ... ) +{ + va_list args; + + hb_get_user_config_directory( name ); +#if defined( SYS_CYGWIN ) || defined( SYS_MINGW ) + strcat( name, "\\" ); +#else + strcat( name, "/" ); +#endif + + va_start( args, fmt ); + vsnprintf( &name[strlen(name)], 1024 - strlen(name), fmt, args ); + va_end( args ); +} + +/************************************************************************ * Get a temporary directory for HB ***********************************************************************/ void hb_get_temporary_directory( char path[512] ) |