mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 10:55:58 +08:00
shlex.join is available in Python 3.8, which is the LLVM Project's minimum version. https://docs.python.org/3/library/shlex.html#shlex.join
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import binascii
|
|
import subprocess
|
|
|
|
|
|
def get_command_output(command):
|
|
try:
|
|
return subprocess.check_output(
|
|
command, shell=True, universal_newlines=True
|
|
).rstrip()
|
|
except subprocess.CalledProcessError as e:
|
|
return e.output
|
|
|
|
|
|
def bitcast_to_string(b: bytes) -> str:
|
|
"""
|
|
Take a bytes object and return a string. The returned string contains the
|
|
exact same bytes as the input object. (latin1 <-> unicode transformation is
|
|
an identity operation for the first 256 code points).
|
|
"""
|
|
return b.decode("latin1")
|
|
|
|
|
|
def bitcast_to_bytes(s: str) -> bytes:
|
|
"""
|
|
Take a string and return a bytes object. The returned object contains the
|
|
exact same bytes as the input string. (latin1 <-> unicode transformation isi
|
|
an identity operation for the first 256 code points).
|
|
"""
|
|
return s.encode("latin1")
|
|
|
|
|
|
def unhexlify(hexstr):
|
|
"""Hex-decode a string. The result is always a string."""
|
|
return bitcast_to_string(binascii.unhexlify(hexstr))
|
|
|
|
|
|
def hexlify(data):
|
|
"""Hex-encode string data. The result if always a string."""
|
|
return bitcast_to_string(binascii.hexlify(bitcast_to_bytes(data)))
|