Исправлена работа с sys-apps/file-5.37

legacy27 3.6.5.2
Mike Hiretsky 5 years ago
parent ea1e153f6e
commit 8c181b5bf0

@ -460,12 +460,13 @@ class typeFile(object):
self.magicObject = type_file(MAGIC_NONE)
self.magicObject.load()
self.magicObject.setflags(magic)
self.magic = magic
def __del__(self):
"""Закрываем magic"""
self.magicObject.close()
def getMTypeBuf(self, buf):
def getMTypeBuf_(self, buf):
try:
ret = self.magicObject.buffer(buf)
except UnicodeDecodeError:
@ -475,6 +476,42 @@ class typeFile(object):
return None
return ret
def getMTypeBuf(self, buf):
#buftype = typeFile(magic=0).getMTypeBuf
self.magicObject.setflags(self.magic & (~(self.magic&0x4)))
rdtype = self.getMTypeBuf_(buf)
if not self.magic & 0x4:
return rdtype
if "LZ4" in rdtype:
arch_cmd = '/usr/bin/lz4'
elif "XZ" in rdtype:
arch_cmd = '/usr/bin/xz'
elif "bzip2" in rdtype:
arch_cmd = '/usr/bin/bzip2'
elif "gzip" in rdtype:
arch_cmd = '/bin/gzip'
elif "Zstandard" in rdtype:
arch_cmd = '/usr/bin/zstd'
else:
return rdtype
self.magicObject.setflags(self.magic)
with open(os.devnull, 'w') as DEVNULL:
gz = Popen([arch_cmd, "-dc"], stdout=PIPE, stderr=DEVNULL,
stdin=PIPE, close_fds=True)
try:
return "{} ({})".format(
self.getMTypeBuf_(gz.communicate(input=buf)[0]),
rdtype)
finally:
try:
gz.terminate()
except OSError:
pass
def getMType(self, filename):
"""Информация о типе файла"""
try:

Loading…
Cancel
Save