| #===----------------------------------------------------------------------===## | |
| # | |
| # The LLVM Compiler Infrastructure | |
| # | |
| # This file is dual licensed under the MIT and the University of Illinois Open | |
| # Source Licenses. See LICENSE.TXT for details. | |
| # | |
| #===----------------------------------------------------------------------===## | |
| """not.py is a utility for inverting the return code of commands. | |
| It acts similar to llvm/utils/not. | |
| ex: python /path/to/not.py ' echo hello | |
| echo $? // (prints 1) | |
| """ | |
| import distutils.spawn | |
| import subprocess | |
| import sys | |
| def main(): | |
| argv = list(sys.argv) | |
| del argv[0] | |
| if len(argv) > 0 and argv[0] == '--crash': | |
| del argv[0] | |
| expectCrash = True | |
| else: | |
| expectCrash = False | |
| if len(argv) == 0: | |
| return 1 | |
| prog = distutils.spawn.find_executable(argv[0]) | |
| if prog is None: | |
| sys.stderr.write('Failed to find program %s' % argv[0]) | |
| return 1 | |
| rc = subprocess.call(argv) | |
| if rc < 0: | |
| return 0 if expectCrash else 1 | |
| if expectCrash: | |
| return 1 | |
| return rc == 0 | |
| if __name__ == '__main__': | |
| exit(main()) |