diff options
Diffstat (limited to 'magic.py')
| -rw-r--r-- | magic.py | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -192,7 +192,18 @@ def errorcheck_negative_one(result, func, args): def coerce_filename(filename): if filename is None: return None - return filename.encode(sys.getfilesystemencoding()) + + # ctypes will implicitly convert unicode strings to bytes with + # .encode('ascii'). A more useful default here is + # getfilesystemencoding(). We need to leave byte-str unchanged. + is_unicode = (sys.version_info.major <= 2 and + isinstance(filename, unicode)) or \ + (sys.version_info.major >= 3 and + isinstance(filename, str)) + if is_unicode: + return filename.encode(sys.getfilesystemencoding()) + else: + return filename magic_open = libmagic.magic_open magic_open.restype = magic_t |
