summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/libcxx/utils/not.py
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2021-01-02 20:29:13 +0000
committerpatrick <patrick@openbsd.org>2021-01-02 20:29:13 +0000
commit46035553bfdd96e63c94e32da0210227ec2e3cf1 (patch)
treeb191f708fb9a2995ba745b2f31cdeeaee4872b7f /gnu/llvm/libcxx/utils/not.py
parentMove Makefiles for libc++ and libc++abi to gnu/lib in preparation for an (diff)
downloadwireguard-openbsd-46035553bfdd96e63c94e32da0210227ec2e3cf1.tar.xz
wireguard-openbsd-46035553bfdd96e63c94e32da0210227ec2e3cf1.zip
Import libc++ 10.0.1 release.
Diffstat (limited to 'gnu/llvm/libcxx/utils/not.py')
-rw-r--r--gnu/llvm/libcxx/utils/not.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/gnu/llvm/libcxx/utils/not.py b/gnu/llvm/libcxx/utils/not.py
new file mode 100644
index 00000000000..2efc8e3cca0
--- /dev/null
+++ b/gnu/llvm/libcxx/utils/not.py
@@ -0,0 +1,51 @@
+#===----------------------------------------------------------------------===##
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===----------------------------------------------------------------------===##
+
+"""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 subprocess
+import sys
+
+def which_cannot_find_program(prog):
+ # Allow for import errors on distutils.spawn
+ try:
+ import distutils.spawn
+ prog = distutils.spawn.find_executable(prog[0])
+ if prog is None:
+ sys.stderr.write('Failed to find program %s' % prog[0])
+ return True
+ return False
+ except:
+ return False
+
+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
+ if which_cannot_find_program(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())