浏览代码

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 2 年前
父节点
当前提交
c50a8fd796
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. +5
    -1
      zstdwarccat

+ 5
- 1
zstdwarccat 查看文件

@@ -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)

正在加载...
取消
保存