Browse Source

Fix content detection with libmagic when dealing with stdin... prefers using a dedicated file

master
nemunaire 2 years ago
parent
commit
e6e622df94
  1. 13
      archive.py

13
archive.py

@ -58,16 +58,17 @@ def hash_archive(cnt, dest=None, imposed_hash=None):
def _guess_mime(data):
fd, path = tempfile.mkstemp()
with os.fdopen(fd, 'wb') as fp:
fp.write(data.encode() if isinstance(data, str) else data)
with subprocess.Popen(["file",
"--brief",
"--mime-type",
"-"], env={"LANG": 'C'}, stdin=subprocess.PIPE, stdout=subprocess.PIPE) as p:
try:
p.stdin.write(data.encode() if isinstance(data, str) else data)
p.stdin.close()
except BrokenPipeError:
pass
path], env={"LANG": 'C'}, stdout=subprocess.PIPE) as p:
p.wait()
os.unlink(path)
if p.returncode == 0:
return p.stdout.read().decode('utf-8', 'replace').strip()

Loading…
Cancel
Save