not.cpp revision a5db79d5148d3972b90390f526fd35d707729c5a
1//===- not.cpp - The 'not' testing tool -----------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "llvm/Support/Path.h" 11#include "llvm/Support/Program.h" 12#include "llvm/Support/raw_ostream.h" 13using namespace llvm; 14 15int main(int argc, const char **argv) { 16 bool ExpectCrash = false; 17 18 ++argv; 19 --argc; 20 21 if (argc > 0 && StringRef(argv[0]) == "--crash") { 22 ++argv; 23 --argc; 24 ExpectCrash = true; 25 } 26 27 if (argc == 0) 28 return 1; 29 30 std::string Program = sys::FindProgramByName(argv[0]); 31 32 std::string ErrMsg; 33 int Result = sys::ExecuteAndWait(Program, argv, 0, 0, 0, 0, &ErrMsg); 34 if (Result < 0) { 35 errs() << "Error: " << ErrMsg << "\n"; 36 if (ExpectCrash) 37 return 0; 38 return 1; 39 } 40 41 if (ExpectCrash) 42 return 1; 43 44 return Result == 0; 45} 46