summaryrefslogtreecommitdiffstats
path: root/libhb/ports.c
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2015-04-19 14:38:38 +0000
committerjstebbins <[email protected]>2015-04-19 14:38:38 +0000
commit76308dc3563db85da5a3daae74014637423cb249 (patch)
treec53612b2947e5eef6e896cbac8d6cb2340a99b72 /libhb/ports.c
parent2b0b91800b4e3461f0b9c1d8c3070968b1b9fe90 (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.c61
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] )