forked from OSchip/llvm-project
Resolve any bundle paths we are given when the specified executable is a bundle.
llvm-svn: 167175
This commit is contained in:
parent
4cb8cdab5e
commit
48baf7a788
|
@ -31,6 +31,8 @@
|
|||
#include "DNBDataRef.h"
|
||||
#include "DNBThreadResumeActions.h"
|
||||
#include "DNBTimer.h"
|
||||
#include "CFBundle.h"
|
||||
|
||||
|
||||
typedef STD_SHARED_PTR(MachProcess) MachProcessSP;
|
||||
typedef std::map<nub_process_t, MachProcessSP> ProcessMap;
|
||||
|
@ -2097,6 +2099,21 @@ DNBResolveExecutablePath (const char *path, char *resolved_path, size_t resolved
|
|||
|
||||
if (result.empty())
|
||||
result = path;
|
||||
|
||||
struct stat path_stat;
|
||||
if (::stat(path, &path_stat) == 0)
|
||||
{
|
||||
if ((path_stat.st_mode & S_IFMT) == S_IFDIR)
|
||||
{
|
||||
CFBundle bundle (path);
|
||||
CFReleaser<CFURLRef> url(bundle.CopyExecutableURL ());
|
||||
if (url.get())
|
||||
{
|
||||
if (::CFURLGetFileSystemRepresentation (url.get(), true, (UInt8*)resolved_path, resolved_path_size))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (realpath(path, max_path))
|
||||
{
|
||||
|
|
|
@ -85,3 +85,13 @@ CFBundle::GetIdentifier () const
|
|||
return ::CFBundleGetIdentifier (bundle);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
CFURLRef
|
||||
CFBundle::CopyExecutableURL () const
|
||||
{
|
||||
CFBundleRef bundle = get();
|
||||
if (bundle != NULL)
|
||||
return CFBundleCopyExecutableURL(bundle);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -25,11 +25,17 @@ public:
|
|||
CFBundle(const char *path = NULL);
|
||||
CFBundle(const CFBundle& rhs);
|
||||
CFBundle& operator=(const CFBundle& rhs);
|
||||
virtual ~CFBundle();
|
||||
virtual
|
||||
~CFBundle();
|
||||
bool
|
||||
SetPath (const char *path);
|
||||
|
||||
bool SetPath (const char *path);
|
||||
CFStringRef GetIdentifier () const;
|
||||
CFStringRef
|
||||
GetIdentifier () const;
|
||||
|
||||
CFURLRef
|
||||
CopyExecutableURL () const;
|
||||
|
||||
protected:
|
||||
CFReleaser<CFURLRef> m_bundle_url;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue