Bugfix (Determining file type)

develop
Самоукин Алексей 14 years ago
parent abb0d66459
commit 8176c0fdf5

@ -53,35 +53,25 @@ class _error:
class typeFile:
"""Получение типа файла"""
__mgc = None
__cookie = None
def __init__(self,magic=0x410):
def __init__(self, flag=0x410):
# Загружаем libmagic.so
self.__mgc = ctypes.cdll.LoadLibrary("libmagic.so")
# Создаем новый cookie (требуется для
# работы с magic-последовательностями)
# 0x10 | 0x400 = MAGIC_MIME (константа
# декларируется в magic.h)
self.__cookie = self.__mgc.magic_open(magic)
# Загружаем в __cookie
# /etc/file/magic.mime (т.к. указано None)
self.__mgc.magic_load(self.__cookie, None)
self.lib = ctypes.cdll.LoadLibrary("libmagic.so")
self.lib.error.restype = ctypes.c_char_p
self.lib.magic_file.restype = ctypes.c_char_p
# 0x10 | 0x400 = MAGIC_MIME (константа, декларируется в magic.h)
self.magic = self.lib.magic_open(flag)
self.lib.magic_load(self.magic, None)
def __del__(self):
"""Закрываем __cookie"""
self.__mgc.magic_close(self.__cookie)
def getMType(self,filename):
"""информация о типе файла"""
result = self.__mgc.magic_file(self.__cookie,filename)
# magic_file возвращает указатель const char*,
# mimetype.value - это строка по указателю
mimetype = ctypes.c_char_p(result)
rez = mimetype.value
return rez
def isBinary(self,filename):
"""Закрываем magic"""
self.lib.magic_close(self.magic)
def getMType(self, filename):
"""Информация о типе файла"""
return self.lib.magic_file(self.magic, filename)
def isBinary(self, filename):
"""является ли файл бинарным"""
mime = self.getMType(filename)
# В случае ошибки

Loading…
Cancel
Save