69 lines
2.3 KiB
Plaintext
69 lines
2.3 KiB
Plaintext
|
From f0adf3e6811aafde00dba8ba236609869a973769 Mon Sep 17 00:00:00 2001
|
||
|
From: Christos Zoulas <christos@zoulas.com>
|
||
|
Date: Thu, 29 Oct 2015 19:23:42 +0000
|
||
|
Subject: [PATCH] PR/489: Avoid evaluating things twice.
|
||
|
|
||
|
---
|
||
|
python/magic.py | 35 +++++++++++++++++++----------------
|
||
|
1 file changed, 19 insertions(+), 16 deletions(-)
|
||
|
|
||
|
diff --git a/python/magic.py b/python/magic.py
|
||
|
index a17e8da..2c1c012 100644
|
||
|
--- a/python/magic.py
|
||
|
+++ b/python/magic.py
|
||
|
@@ -118,14 +118,15 @@ def file(self, filename):
|
||
|
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.
|
||
|
"""
|
||
|
- try: # attempt python3 approach first
|
||
|
- if isinstance(filename, bytes):
|
||
|
- bi = filename
|
||
|
- else:
|
||
|
- bi = bytes(filename, 'utf-8')
|
||
|
- return str(_file(self._magic_t, bi), 'utf-8')
|
||
|
- except:
|
||
|
- return _file(self._magic_t, filename.encode('utf-8'))
|
||
|
+ if isinstance(filename, bytes):
|
||
|
+ bi = filename
|
||
|
+ else:
|
||
|
+ bi = bytes(filename, 'utf-8')
|
||
|
+ r = _file(self._magic_t, bi)
|
||
|
+ if isinstance(r, str):
|
||
|
+ return r
|
||
|
+ else:
|
||
|
+ return str(r, 'utf-8')
|
||
|
|
||
|
def descriptor(self, fd):
|
||
|
"""
|
||
|
@@ -139,20 +140,22 @@ def buffer(self, buf):
|
||
|
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.
|
||
|
"""
|
||
|
- try: # attempt python3 approach first
|
||
|
- return str(_buffer(self._magic_t, buf, len(buf)), 'utf-8')
|
||
|
- except:
|
||
|
- return _buffer(self._magic_t, buf, len(buf))
|
||
|
+ r = _buffer(self._magic_t, buf, len(buf))
|
||
|
+ if isinstance(r, str):
|
||
|
+ return r
|
||
|
+ else:
|
||
|
+ return str(r, 'utf-8')
|
||
|
|
||
|
def error(self):
|
||
|
"""
|
||
|
Returns a textual explanation of the last error or None
|
||
|
if there was no error.
|
||
|
"""
|
||
|
- try: # attempt python3 approach first
|
||
|
- return str(_error(self._magic_t), 'utf-8')
|
||
|
- except:
|
||
|
- return _error(self._magic_t)
|
||
|
+ e = _error(self._magic_t)
|
||
|
+ if isinstance(e, str):
|
||
|
+ return e
|
||
|
+ else:
|
||
|
+ return str(e, 'utf-8')
|
||
|
|
||
|
def setflags(self, flags):
|
||
|
"""
|