summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--magic.py21
-rw-r--r--setup.py1
2 files changed, 15 insertions, 7 deletions
diff --git a/magic.py b/magic.py
index ab1fd63..c3ece14 100644
--- a/magic.py
+++ b/magic.py
@@ -162,13 +162,21 @@ if not libmagic or not libmagic._name:
magic_t = ctypes.c_void_p
-def errorcheck(result, func, args):
- err = magic_error(args[0])
- if err is not None:
+def errorcheck_null(result, func, args):
+ if result is None:
+ err = magic_error(args[0])
raise MagicException(err)
else:
return result
+def errorcheck_negative_one(result, func, args):
+ if result is -1:
+ err = magic_error(args[0])
+ raise MagicException(err)
+ else:
+ return result
+
+
def coerce_filename(filename):
if filename is None:
return None
@@ -193,7 +201,7 @@ magic_errno.argtypes = [magic_t]
_magic_file = libmagic.magic_file
_magic_file.restype = c_char_p
_magic_file.argtypes = [magic_t, c_char_p]
-_magic_file.errcheck = errorcheck
+_magic_file.errcheck = errorcheck_null
def magic_file(cookie, filename):
return _magic_file(cookie, coerce_filename(filename))
@@ -201,8 +209,7 @@ def magic_file(cookie, filename):
_magic_buffer = libmagic.magic_buffer
_magic_buffer.restype = c_char_p
_magic_buffer.argtypes = [magic_t, c_void_p, c_size_t]
-_magic_buffer.errcheck = errorcheck
-
+_magic_buffer.errcheck = errorcheck_null
def magic_buffer(cookie, buf):
return _magic_buffer(cookie, buf, len(buf))
@@ -211,7 +218,7 @@ def magic_buffer(cookie, buf):
_magic_load = libmagic.magic_load
_magic_load.restype = c_int
_magic_load.argtypes = [magic_t, c_char_p]
-_magic_load.errcheck = errorcheck
+_magic_load.errcheck = errorcheck_negative_one
def magic_load(cookie, filename):
return _magic_load(cookie, coerce_filename(filename))
diff --git a/setup.py b/setup.py
index 856e77b..ff9a984 100644
--- a/setup.py
+++ b/setup.py
@@ -14,4 +14,5 @@ supports both textual and MIME-type output.
""",
keywords="mime magic file",
license="PSF",
+ test_suite='test'
)