llvm-project
c745c549 - [LLVM] Prefer octal to hex for printf (#157884)

Commit
99 days ago
[LLVM] Prefer octal to hex for printf (#157884) Hex escapes of the form \xff are not universally supported in the printf implementations on the platforms that LLVM runs on (although they apparently are in the shell builtins). Octal escapes are required to be supported by POSIX. This patch converts all hex escapes to octal escapes for compatibility reasons. This came up when trying to turn on lit's internal shell by default for llvm/. We started using /usr/bin/printf instead of the shell builtin on MacOS, which does not support hex escapes. I used the following python script to automate most of the conversion with a few manual touchups needed: ```py import sys def process_line(to_process: str): output = "" i = 0 while i < len(to_process): if to_process[i:i+2] == '\\x': hex_string = to_process[i+2:i+4] number = int(hex_string, 16) output += "\\" octal_string = oct(number)[2:] if len(octal_string) == 1: octal_string = "00" + octal_string elif len(octal_string) == 2: octal_string = "0" + octal_string assert(len(octal_string) == 3) output += octal_string i += 4 else: output += to_process[i] i += 1 return output with open(sys.argv[1]) as input_file: lines = input_file.readlines() for i, _ in enumerate(lines): lines[i] = process_line(lines[i]) with open(sys.argv[1], 'w') as output_file: output_file.writelines(lines) ```
Parents
Loading