123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- Subject: Retain python 2 compatibility, factoring out the conversion functions
- Origin: FILE5_30-37-g8a942980 <https://github.com/file/file/commit/FILE5_30-37-g8a942980>
- Upstream-Author: Christos Zoulas <christos@zoulas.com>
- Date: Tue Apr 4 20:48:40 2017 +0000
- Bug-Debian: https://bugs.debian.org/902796
- --- a/python/magic.py
- +++ b/python/magic.py
- @@ -117,30 +117,43 @@
- """
- _close(self._magic_t)
-
- + @staticmethod
- + def __tostr(s):
- + if s is None:
- + return None
- + if isinstance(s, str):
- + return s
- + try: # keep Python 2 compatibility
- + return str(s, 'utf-8')
- + except TypeError:
- + return str(s)
- +
- + @staticmethod
- + def __tobytes(b):
- + if b is None:
- + return None
- + if isinstance(b, bytes):
- + return b
- + try: # keep Python 2 compatibility
- + return bytes(b, 'utf-8')
- + except TypeError:
- + return bytes(b)
- +
- def file(self, filename):
- """
- Returns a textual description of the contents of the argument passed
- as a filename or None if an error occurred and the MAGIC_ERROR flag
- - is set. A call to errno() will return the numeric error code.
- + is set. A call to errno() will return the numeric error code.
- """
- - if isinstance(filename, bytes):
- - bi = filename
- - else:
- - try: # keep Python 2 compatibility
- - bi = bytes(filename, 'utf-8')
- - except TypeError:
- - bi = bytes(filename)
- - r = _file(self._magic_t, bi)
- - if isinstance(r, str):
- - return r
- - else:
- - return str(r, 'utf-8')
- + return Magic.__tostr(_file(self._magic_t, Magic.__tobytes(filename)))
-
- def descriptor(self, fd):
- """
- - Like the file method, but the argument is a file descriptor.
- + Returns a textual description of the contents of the argument passed
- + as a file descriptor or None if an error occurred and the MAGIC_ERROR
- + flag is set. A call to errno() will return the numeric error code.
- """
- - return _descriptor(self._magic_t, fd)
- + return Magic.__tostr(_descriptor(self._magic_t, fd))
-
- def buffer(self, buf):
- """
- @@ -148,22 +161,14 @@
- as a buffer or None if an error occurred and the MAGIC_ERROR flag
- is set. A call to errno() will return the numeric error code.
- """
- - r = _buffer(self._magic_t, buf, len(buf))
- - if isinstance(r, str):
- - return r
- - else:
- - return str(r, 'utf-8')
- + return Magic.__tostr(_buffer(self._magic_t, buf, len(buf)))
-
- def error(self):
- """
- Returns a textual explanation of the last error or None
- if there was no error.
- """
- - e = _error(self._magic_t)
- - if isinstance(e, str):
- - return e
- - else:
- - return str(e, 'utf-8')
- + return Magic.__tostr(_error(self._magic_t))
-
- def setflags(self, flags):
- """
- @@ -184,35 +189,38 @@
-
- Returns 0 on success and -1 on failure.
- """
- - return _load(self._magic_t, filename)
- + return _load(self._magic_t, Magic.__tobytes(filename))
-
- def compile(self, dbs):
- """
- Compile entries in the colon separated list of database files
- passed as argument or the default database file if no argument.
- - Returns 0 on success and -1 on failure.
- The compiled files created are named from the basename(1) of each file
- argument with ".mgc" appended to it.
- +
- + Returns 0 on success and -1 on failure.
- """
- - return _compile(self._magic_t, dbs)
- + return _compile(self._magic_t, Magic.__tobytes(dbs))
-
- def check(self, dbs):
- """
- Check the validity of entries in the colon separated list of
- database files passed as argument or the default database file
- if no argument.
- +
- Returns 0 on success and -1 on failure.
- """
- - return _check(self._magic_t, dbs)
- + return _check(self._magic_t, Magic.__tobytes(dbs))
-
- def list(self, dbs):
- """
- Check the validity of entries in the colon separated list of
- database files passed as argument or the default database file
- if no argument.
- +
- Returns 0 on success and -1 on failure.
- """
- - return _list(self._magic_t, dbs)
- + return _list(self._magic_t, Magic.__tobytes(dbs))
-
- def errno(self):
- """
|