Pārlūkot izejas kodu

Fix 'Dictionary mismatch' error when very small dicts are used because the temporary file isn't written to disk before zstdcat gets executed

master
JustAnotherArchivist pirms 2 gadiem
vecāks
revīzija
c50a8fd796
1 mainītis faili ar 5 papildinājumiem un 1 dzēšanām
  1. +5
    -1
      zstdwarccat

+ 5
- 1
zstdwarccat Parādīt failu

@@ -47,10 +47,14 @@ if len(sys.argv) == 2:
d = get_dict(fp)
else:
d = get_dict(sys.stdin.buffer.raw)
with tempfile.NamedTemporaryFile() as dfp:
# The file must be written to the file system before zstdcat is executed. The most reliable way for that is to close the file. This requires manually deleting it at the end.
with tempfile.NamedTemporaryFile(delete = False) as dfp:
dfp.write(d)
try:
args = ['zstdcat', '-D', dfp.name]
if len(sys.argv) == 2:
args.append(sys.argv[1])
pzstd = subprocess.Popen(args)
pzstd.communicate()
finally:
os.remove(dfp.name)

Notiek ielāde…
Atcelt
Saglabāt