#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
-#include "llvm/Support/PathV1.h"
#include "llvm/Support/Program.h"
using namespace llvm;
return Colors[ColorNumber % NumColors];
}
-std::string llvm::createGraphFilename(const Twine &Name) {
- std::string ErrMsg;
- sys::Path Filename = sys::Path::GetTemporaryDirectory(&ErrMsg);
- if (Filename.isEmpty()) {
- errs() << "Error: " << ErrMsg << "\n";
- return "";
- }
- Filename.appendComponent((Name + ".dot").str());
- if (Filename.makeUnique(true,&ErrMsg)) {
- errs() << "Error: " << ErrMsg << "\n";
+std::string llvm::createGraphFilename(const Twine &Name, int &FD) {
+ FD = -1;
+ SmallString<128> Filename;
+ error_code EC = sys::fs::createTemporaryFile(Name, "dot", FD, Filename);
+ if (EC) {
+ errs() << "Error: " << EC.message() << "\n";
return "";
}
+
+ errs() << "Writing '" << Filename << "'... ";
return Filename.str();
}
if (!ExecGraphViewer(Graphviz, args, Filename, wait, ErrMsg))
return;
-#elif HAVE_XDOT_PY
+#elif HAVE_XDOT
std::vector<const char*> args;
- args.push_back(LLVM_PATH_XDOT_PY);
+ args.push_back(LLVM_PATH_XDOT);
args.push_back(Filename.c_str());
switch (program) {
args.push_back(0);
errs() << "Running 'xdot.py' program... ";
- if (!ExecGraphViewer(LLVM_PATH_XDOT_PY, args, Filename, wait, ErrMsg))
+ if (!ExecGraphViewer(LLVM_PATH_XDOT, args, Filename, wait, ErrMsg))
return;
#elif (HAVE_GV && (HAVE_DOT || HAVE_FDP || HAVE_NEATO || \
HAVE_TWOPI || HAVE_CIRCO))
- sys::Path PSFilename = sys::Path(Filename);
- PSFilename.appendSuffix("ps");
-
+ std::string PSFilename = Filename + ".ps";
std::string prog;
// Set default grapher
args.push_back(0);
ErrMsg.clear();
- if (!ExecGraphViewer(gv, args, PSFilename.str(), wait, ErrMsg))
+ if (!ExecGraphViewer(gv, args, PSFilename, wait, ErrMsg))
return;
#elif HAVE_DOTTY