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 | |
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
-rw-r--r-- | gtk/configure.ac | 2 | ||||
-rw-r--r-- | libhb/module.defs | 5 | ||||
-rw-r--r-- | libhb/module.rules | 5 | ||||
-rw-r--r-- | libhb/platform/macosx/config.m | 14 | ||||
-rw-r--r-- | libhb/ports.c | 61 | ||||
-rw-r--r-- | libhb/ports.h | 5 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 2 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme | 13 | ||||
-rw-r--r-- | test/module.defs | 4 |
9 files changed, 99 insertions, 12 deletions
diff --git a/gtk/configure.ac b/gtk/configure.ac index 21a0cac07..94e740dad 100644 --- a/gtk/configure.ac +++ b/gtk/configure.ac @@ -173,7 +173,7 @@ case $host in else HB_LIBS+=" -lpthreadGC2" fi - HB_LIBS+=" -lregex" + HB_LIBS+=" -lregex -luuid" ;; *) HB_LIBS+=" -ldl -lpthread" diff --git a/libhb/module.defs b/libhb/module.defs index 79222a2fa..445d66433 100644 --- a/libhb/module.defs +++ b/libhb/module.defs @@ -15,6 +15,7 @@ LIBHB.m4.out = $(patsubst $(LIBHB.src/)%.m4,$(LIBHB.build/)%,$(LIBHB.m4.in)) LIBHB.c = $(wildcard $(LIBHB.src/)*.c) LIBHB.c.o = $(patsubst $(SRC/)%.c,$(BUILD/)%.o,$(LIBHB.c)) +LIBHB.m.o = $(patsubst $(SRC/)%.m,$(BUILD/)%.o,$(LIBHB.m)) LIBHB.d = $(LIBHB.m4.out) $(LIBHB.h.out) \ $(foreach n,$(LIBHB.prerequisites),$($n.INSTALL.target) ) @@ -30,6 +31,7 @@ LIBHB.a = $(LIBHB.build/)$(call TARGET.archive,handbrake) LIBHB.out += $(LIBHB.m4.out) LIBHB.out += $(LIBHB.c.o) +LIBHB.out += $(LIBHB.m.o) LIBHB.out += $(LIBHB.h.out) LIBHB.out += $(LIBHB.a) @@ -50,6 +52,7 @@ ifeq ($(BUILD.system),cygwin) else ifeq ($(BUILD.system),darwin) LIBHB.GCC.D += SYS_DARWIN LIBHB.c += $(wildcard $(LIBHB.src/)platform/macosx/*.c) + LIBHB.m += $(wildcard $(LIBHB.src/)platform/macosx/*.m) else ifeq ($(BUILD.system),linux) LIBHB.GCC.D += SYS_LINUX _LARGEFILE_SOURCE _FILE_OFFSET_BITS=64 else ifeq ($(BUILD.system),mingw) @@ -168,7 +171,7 @@ else endif LIBHB.GCC.args.extra.dylib++ += -Wl,--out-implib,$(LIBHB.lib) -LIBHB.GCC.l += ws2_32 +LIBHB.GCC.l += ws2_32 uuid ifeq ($(HAS.dlfcn),1) LIBHB.GCC.l += dl endif diff --git a/libhb/module.rules b/libhb/module.rules index c92ababa2..65525cd07 100644 --- a/libhb/module.rules +++ b/libhb/module.rules @@ -3,13 +3,16 @@ $(eval $(call import.MODULE.rules,LIBHB)) libhb.build: $(LIBHB.a) $(LIBHB.a): | $(dir $(LIBHB.a)) -$(LIBHB.a): $(LIBHB.c.o) $(LIBHB.yasm.o) +$(LIBHB.a): $(LIBHB.c.o) $(LIBHB.m.o) $(LIBHB.yasm.o) $(AR.exe) rsu $@ $^ $(LIBHB.c.o): $(LIBHB.d) $(LIBHB.c.o): | $(dir $(LIBHB.c.o)) $(LIBHB.c.o): $(BUILD/)%.o: $(SRC/)%.c $(call LIBHB.GCC.C_O,$@,$<) +$(LIBHB.m.o): | $(dir $(LIBHB.m.o)) +$(LIBHB.m.o): $(BUILD/)%.o: $(SRC/)%.m + $(call LIBHB.GCC.C_O,$@,$<) $(LIBHB.m4.out): $(BUILD/)project/handbrake.m4 $(LIBHB.m4.out): | $(dir $(LIBHB.m4.out)) diff --git a/libhb/platform/macosx/config.m b/libhb/platform/macosx/config.m new file mode 100644 index 000000000..9fa86aaaf --- /dev/null +++ b/libhb/platform/macosx/config.m @@ -0,0 +1,14 @@ +#import <Foundation/Foundation.h> +/* #import <Cocoa/Cocoa.h> */ + +void osx_get_user_config_directory(char path[512]) +{ + @autoreleasepool { + NSArray *paths = NSSearchPathForDirectoriesInDomains( + NSApplicationSupportDirectory, NSUserDomainMask, YES); + NSString *dir = paths[0]; + strncpy(path, dir.UTF8String, 512); + path[511] = 0; + } +} + 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] ) diff --git a/libhb/ports.h b/libhb/ports.h index 649d3995f..42cdede6a 100644 --- a/libhb/ports.h +++ b/libhb/ports.h @@ -100,6 +100,11 @@ void hb_get_temporary_directory( char path[512] ); void hb_get_tempory_filename( hb_handle_t *, char name[1024], char * fmt, ... ); +#if defined( SYS_DARWIN ) +void osx_get_user_config_directory( char path[512] ); +#endif +void hb_get_user_config_directory( char path[512] ); +void hb_get_user_config_filename( char name[1024], char *fmt, ... ); /************************************************************************ * Threads ***********************************************************************/ diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index a9a07e89a..f5e289e2f 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -110,6 +110,7 @@ 27D6C77314B102DA00B785E4 /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C74014B102DA00B785E4 /* libxml2.a */; }; 3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */ = {isa = PBXBuildFile; fileRef = 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */; }; 46AB433515F98A2B009C0961 /* DockTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 46AB433415F98A2B009C0961 /* DockTextField.m */; }; + 6F0D69A91AD0683100A39DCA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F204014ADBC210021BE6D /* Foundation.framework */; }; A90A0CAF1988D57200DA65CE /* HBAudioTrackPreset.m in Sources */ = {isa = PBXBuildFile; fileRef = A90A0CAE1988D57200DA65CE /* HBAudioTrackPreset.m */; }; A91017B41A64440A00039BFB /* HBSubtitles.m in Sources */ = {isa = PBXBuildFile; fileRef = A91017B31A64440A00039BFB /* HBSubtitles.m */; }; A91726E7197291BC00D1AFEF /* HBChapterTitlesController.m in Sources */ = {isa = PBXBuildFile; fileRef = A91726E6197291BC00D1AFEF /* HBChapterTitlesController.m */; }; @@ -548,6 +549,7 @@ 27D6C76B14B102DA00B785E4 /* libtheora.a in Frameworks */, 27D6C76D14B102DA00B785E4 /* libvorbis.a in Frameworks */, 27D6C76F14B102DA00B785E4 /* libvorbisenc.a in Frameworks */, + 6F0D69A91AD0683100A39DCA /* Foundation.framework in Frameworks */, 22DD2C4B177B95DA00EF50D3 /* libvpx.a in Frameworks */, 27D6C77114B102DA00B785E4 /* libx264.a in Frameworks */, 27D6C77314B102DA00B785E4 /* libxml2.a in Frameworks */, diff --git a/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme b/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme index 689602912..04c6afb70 100644 --- a/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme +++ b/macosx/HandBrake.xcodeproj/xcshareddata/xcschemes/HandBrake [DEBUG].xcscheme @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme LastUpgradeVersion = "0630" - version = "1.3"> + version = "1.8"> <BuildAction parallelizeBuildables = "YES" buildImplicitDependencies = "YES"> @@ -38,7 +38,7 @@ </BuildAction> <TestAction selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" buildConfiguration = "debug"> <Testables> @@ -62,13 +62,12 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> - <BuildableProductRunnable - runnableDebuggingMode = "0"> + <BuildableProductRunnable> <BuildableReference BuildableIdentifier = "primary" - BlueprintIdentifier = "273F203814ADBC200021BE6D" - BuildableName = "HandBrake.app" - BlueprintName = "HandBrake" + BlueprintIdentifier = "273F1FFE14ADAE950021BE6D" + BuildableName = "HandBrakeCLI" + BlueprintName = "HandBrakeCLI" ReferencedContainer = "container:HandBrake.xcodeproj"> </BuildableReference> </BuildableProductRunnable> diff --git a/test/module.defs b/test/module.defs index 1f794e93a..5bc8f1ffd 100644 --- a/test/module.defs +++ b/test/module.defs @@ -44,7 +44,7 @@ BUILD.out += $(TEST.install.exe) TEST.GCC.I += $(LIBHB.GCC.I) ifeq ($(BUILD.system),darwin) - TEST.GCC.f += IOKit CoreServices AudioToolbox + TEST.GCC.f += IOKit CoreServices AudioToolbox Foundation TEST.GCC.l += iconv else ifeq ($(BUILD.system),linux) TEST.GCC.l += pthread dl m @@ -65,7 +65,7 @@ ifeq (1,$(HAS.pthread)) else TEST.GCC.l += pthreadGC2 endif - TEST.GCC.l += iconv ws2_32 regex + TEST.GCC.l += iconv ws2_32 regex uuid TEST.GCC.D += PTW32_STATIC_LIB TEST.GCC.args.extra.exe++ += -static endif # (1-mingw,$(BUILD.cross)-$(BUILD.system)) |