diff options
Diffstat (limited to 'utils/not/not.cpp')
-rw-r--r-- | utils/not/not.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/utils/not/not.cpp b/utils/not/not.cpp index a5c7183bd2c9b..23062fb323d7f 100644 --- a/utils/not/not.cpp +++ b/utils/not/not.cpp @@ -6,6 +6,11 @@ // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// +// Usage: +// not cmd +// Will return true if cmd doesn't crash and returns false. +// not --crash cmd +// Will return true if cmd crashes (e.g. for testing crash reporting). #include "llvm/Support/Path.h" #include "llvm/Support/Program.h" @@ -27,10 +32,15 @@ int main(int argc, const char **argv) { if (argc == 0) return 1; - std::string Program = sys::FindProgramByName(argv[0]); + auto Program = sys::findProgramByName(argv[0]); + if (!Program) { + errs() << "Error: Unable to find `" << argv[0] + << "' in PATH: " << Program.getError().message() << "\n"; + return 1; + } std::string ErrMsg; - int Result = sys::ExecuteAndWait(Program, argv, nullptr, nullptr, 0, 0, + int Result = sys::ExecuteAndWait(*Program, argv, nullptr, nullptr, 0, 0, &ErrMsg); #ifdef _WIN32 // Handle abort() in msvcrt -- It has exit code as 3. abort(), aka |