mirror of
https://github.com/bitcoinj/bitcoinj.git
synced 2025-02-24 14:50:57 +01:00
This commit contains rather hard to review diffs to the protobuf test datasets in .txt format. To aid the review, this Python script can be used to convert the data from the old to the new format: ``` import sys file = open(sys.argv[1]) outfile = open(sys.argv[1] + ".lite", "w") line = file.readline() lines = [] def sortAndPrint(group, removeLastLB=False, removeFirstLB=False): group.sort() if removeFirstLB and group[0] == "\n": group.remove("\n") for i in range(len(group)): if i == len(group) - 1 and removeLastLB: group[i] = group[i].rstrip() print(group[i], end="", file=outfile) def sign32neg(value): if 0x80000000 <= value <= 0xFFFFFFFF: value &= 0x7FFFFFFF value = int(value) value = ~value value ^= 0x7FFFFFFF return value def processPath(path): parts = path.rstrip().split(":") number = int(parts[1].lstrip()) if number >= 0x80000000: number = sign32neg(number) return parts[0] + ": " + str(number) + "\n" groupcount = 0 while len(line) > 0: if line.startswith("type:"): if len(lines): sortAndPrint(lines, removeFirstLB=groupcount==0) groupcount += 1 lines.clear() lines.append(line) elif line.find("deterministic_key {") != -1: structure = line innerlines = [] line = file.readline() while not line.startswith('}'): if line.find("path") != -1: # preserve order of paths pathlines = processPath(line) line = file.readline() if line.startswith('}'): innerlines.append(pathlines) continue while line.find("path") != -1: pathlines += processPath(line) line = file.readline() innerlines.append(pathlines) if line.startswith('}'): continue if line.startswith(" sigsRequiredToSpend"): line = line.replace("sigsRequiredToSpend", "sigs_required_to_spend") innerlines.append(line) line = file.readline() innerlines.sort() for l in innerlines: structure += l structure += line.rstrip() + "\n" lines.append(structure) elif line.find("path") != -1: # preserve order of paths accountpathlines = processPath(line) line = file.readline() while line.find("path") != -1: accountpathlines += processPath(line) line = file.readline() lines.append(accountpathlines) lines.append(line) else: lines.append(line) line = file.readline() print(file=outfile) sortAndPrint(lines, removeLastLB=True) file.close() outfile.close() ``` |
||
---|---|---|
.. | ||
main | ||
test |