[GraphWriter] Attempt to open .dot files with xdg-open/open first

Most desktop environments let the users specify his preferred application per
file type. On mac/linux we can use open/xdg-open for that and should try this
first before starting a heuristic search for various programs.

Differential Revision: http://reviews.llvm.org/D6534

llvm-svn: 234031
This commit is contained in:
Matthias Braun 2015-04-03 17:22:36 +00:00
parent eaa9266ec5
commit e376d16f95
1 changed files with 23 additions and 0 deletions

View File

@ -140,6 +140,29 @@ bool llvm::DisplayGraph(StringRef FilenameRef, bool wait,
std::string ViewerPath;
GraphSession S;
#ifdef __APPLE__
if (S.TryFindProgram("open", ViewerPath)) {
std::vector<const char *> args;
args.push_back(ViewerPath.c_str());
if (wait)
args.push_back("-W");
args.push_back(Filename.c_str());
args.push_back(nullptr);
errs() << "Trying 'open' program... ";
if (!ExecGraphViewer(ViewerPath, args, Filename, wait, ErrMsg))
return false;
}
#endif
if (S.TryFindProgram("xdg-open", ViewerPath)) {
std::vector<const char *> args;
args.push_back(ViewerPath.c_str());
args.push_back(Filename.c_str());
args.push_back(nullptr);
errs() << "Trying 'xdg-open' program... ";
if (!ExecGraphViewer(ViewerPath, args, Filename, wait, ErrMsg))
return false;
}
// Graphviz
if (S.TryFindProgram("Graphviz", ViewerPath)) {
std::vector<const char *> args;