diff options
Diffstat (limited to 'Source/cmFindProgramCommand.cxx')
-rw-r--r-- | Source/cmFindProgramCommand.cxx | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/Source/cmFindProgramCommand.cxx b/Source/cmFindProgramCommand.cxx index 00f5419c2e..909b333ff7 100644 --- a/Source/cmFindProgramCommand.cxx +++ b/Source/cmFindProgramCommand.cxx @@ -81,7 +81,7 @@ bool cmFindProgramCommand result.c_str(), this->VariableDocumentation.c_str(), cmCacheManager::FILEPATH); - + return true; } this->Makefile->AddCacheDefinition(this->VariableName.c_str(), @@ -117,21 +117,21 @@ std::string cmFindProgramCommand for(std::vector<std::string>::const_iterator name = names.begin(); name != names.end() ; ++name) { - + std::string appName = *name + std::string(".app"); - std::string appPath = cmSystemTools::FindDirectory(appName.c_str(), - this->SearchPaths, + std::string appPath = cmSystemTools::FindDirectory(appName.c_str(), + this->SearchPaths, true); if ( !appPath.empty() ) { std::string executable = GetBundleExecutable(appPath); - if (!executable.empty()) + if (!executable.empty()) { return cmSystemTools::CollapseFullPath(executable.c_str()); } - } - } + } + } // Couldn't find app bundle return ""; @@ -142,44 +142,44 @@ std::string cmFindProgramCommand::GetBundleExecutable(std::string bundlePath) std::string executable = ""; (void)bundlePath; #if defined(__APPLE__) - // Started with an example on developer.apple.com about finding bundles + // Started with an example on developer.apple.com about finding bundles // and modified from that. - + // Get a CFString of the app bundle path // XXX - Is it safe to assume everything is in UTF8? - CFStringRef bundlePathCFS = - CFStringCreateWithCString(kCFAllocatorDefault , + CFStringRef bundlePathCFS = + CFStringCreateWithCString(kCFAllocatorDefault , bundlePath.c_str(), kCFStringEncodingUTF8 ); - + // Make a CFURLRef from the CFString representation of the // bundle’s path. - CFURLRef bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, + CFURLRef bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, bundlePathCFS, kCFURLPOSIXPathStyle, true ); - + // Make a bundle instance using the URLRef. CFBundleRef appBundle = CFBundleCreate( kCFAllocatorDefault, bundleURL ); - + // returned executableURL is relative to <appbundle>/Contents/MacOS/ CFURLRef executableURL = CFBundleCopyExecutableURL(appBundle); - + if (executableURL != NULL) { const int MAX_OSX_PATH_SIZE = 1024; char buffer[MAX_OSX_PATH_SIZE]; - + // Convert the CFString to a C string - CFStringGetCString( CFURLGetString(executableURL), buffer, + CFStringGetCString( CFURLGetString(executableURL), buffer, MAX_OSX_PATH_SIZE, kCFStringEncodingUTF8 ); - + // And finally to a c++ string executable = bundlePath + "/Contents/MacOS/" + std::string(buffer); // Only release CFURLRef if it's not null CFRelease( executableURL ); } - // Any CF objects returned from functions with "create" or + // Any CF objects returned from functions with "create" or // "copy" in their names must be released by us! CFRelease( bundlePathCFS ); CFRelease( bundleURL ); |