diff --git a/pym/cl_utils.py b/pym/cl_utils.py index e6bb4dc..39b133b 100644 --- a/pym/cl_utils.py +++ b/pym/cl_utils.py @@ -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) # В случае ошибки