python: rename skipdata_opt to skipdata_setup & handle callback properly
diff --git a/bindings/python/capstone/__init__.py b/bindings/python/capstone/__init__.py
index 1e1dbe3..b69633e 100644
--- a/bindings/python/capstone/__init__.py
+++ b/bindings/python/capstone/__init__.py
@@ -1 +1 @@
-from capstone import Cs, CsError, cs_disasm_quick, cs_disasm_lite, cs_version, cs_support, version_bind, debug, CS_API_MAJOR, CS_API_MINOR, CS_ARCH_ARM, CS_ARCH_ARM64, CS_ARCH_MIPS, CS_ARCH_X86, CS_ARCH_PPC, CS_ARCH_SPARC, CS_ARCH_SYSZ, CS_ARCH_ALL, CS_MODE_LITTLE_ENDIAN, CS_MODE_ARM, CS_MODE_THUMB, CS_OPT_SYNTAX, CS_OPT_SYNTAX_DEFAULT, CS_OPT_SYNTAX_INTEL, CS_OPT_SYNTAX_ATT, CS_OPT_SYNTAX_NOREGNAME, CS_OPT_DETAIL, CS_OPT_ON, CS_OPT_OFF, CS_MODE_16, CS_MODE_32, CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_MODE_MICRO, CS_MODE_N64, CS_MODE_V9, CS_SUPPORT_DIET, CS_SUPPORT_X86_REDUCE
+from capstone import Cs, CsError, cs_disasm_quick, cs_disasm_lite, cs_version, cs_support, version_bind, debug, CS_API_MAJOR, CS_API_MINOR, CS_ARCH_ARM, CS_ARCH_ARM64, CS_ARCH_MIPS, CS_ARCH_X86, CS_ARCH_PPC, CS_ARCH_SPARC, CS_ARCH_SYSZ, CS_ARCH_ALL, CS_MODE_LITTLE_ENDIAN, CS_MODE_ARM, CS_MODE_THUMB, CS_OPT_SYNTAX, CS_OPT_SYNTAX_DEFAULT, CS_OPT_SYNTAX_INTEL, CS_OPT_SYNTAX_ATT, CS_OPT_SYNTAX_NOREGNAME, CS_OPT_DETAIL, CS_OPT_ON, CS_OPT_OFF, CS_MODE_16, CS_MODE_32, CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_MODE_MICRO, CS_MODE_N64, CS_MODE_V9, CS_SUPPORT_DIET, CS_SUPPORT_X86_REDUCE, CS_SKIPDATA_CALLBACK
diff --git a/bindings/python/capstone/capstone.py b/bindings/python/capstone/capstone.py
index 0af589b..973e0e1 100644
--- a/bindings/python/capstone/capstone.py
+++ b/bindings/python/capstone/capstone.py
@@ -60,6 +60,8 @@
 
     'CS_SUPPORT_DIET',
     'CS_SUPPORT_X86_REDUCE',
+
+    'CS_SKIPDATA_CALLBACK'
 ]
 
 # Capstone C interface
@@ -210,12 +212,12 @@
     )
 
 # callback for SKIPDATA option
-SKIPDATA_CB = ctypes.CFUNCTYPE(ctypes.c_size_t, ctypes.c_size_t, ctypes.c_void_p)
+CS_SKIPDATA_CALLBACK = ctypes.CFUNCTYPE(ctypes.c_size_t, ctypes.c_size_t, ctypes.c_void_p)
 
 class _cs_opt_skipdata(ctypes.Structure):
     _fields_ = (
         ('mnemonic', ctypes.c_char_p),
-        ('callback', SKIPDATA_CB),
+        ('callback', CS_SKIPDATA_CALLBACK),
         ('user_data', ctypes.c_void_p),
     )
 
@@ -661,18 +663,16 @@
 
     # setter: modify "data" instruction's mnemonic for SKIPDATA
     @syntax.setter
-    def skipdata_opt(self, opt):
+    def skipdata_setup(self, opt):
         _skipdata_opt = _cs_opt_skipdata()
         _mnem, _cb, _ud = opt
         _skipdata_opt.mnemonic = _mnem
-        _skipdata_opt.callback = ctypes.cast(_cb, SKIPDATA_CB)
-        #_skipdata_opt.callback = _cb
-        _skipdata_opt.user_data = _ud
+        _skipdata_opt.callback = ctypes.cast(_cb, CS_SKIPDATA_CALLBACK)
+        _skipdata_opt.user_data = ctypes.cast(_ud, ctypes.c_void_p)
         status = _cs.cs_option(self.csh, CS_OPT_SKIPDATA_SETUP, ctypes.cast(ctypes.byref(_skipdata_opt), ctypes.c_void_p))
         if status != CS_ERR_OK:
             raise CsError(status)
 
-        # save the "data" instruction mnem
         self._skipdata_opt = _skipdata_opt
 
 
diff --git a/bindings/python/test_skipdata.py b/bindings/python/test_skipdata.py
index 6d7fcd0..f8e9f3f 100755
--- a/bindings/python/test_skipdata.py
+++ b/bindings/python/test_skipdata.py
@@ -30,6 +30,12 @@
         print
 
 
+# Sample callback for SKIPDATA option
+def testcb(offset, userdata):
+    # always skip 2 bytes of data
+    return 2
+
+
 ### Test class Cs
 def test_class():
     for (arch, mode, code, comment, syntax) in all_tests:
@@ -47,7 +53,10 @@
             md.skipdata = True
             # To rename "data" instruction's mnemonic to "db", uncomment the line below
             # This example ignores SKIPDATA's callback (first None) & user_data (second None)
-            # md.skipdata_opt = ("db", None, None)
+            # md.skipdata_setup = ("db", None, None)
+
+            # To customize the callback, uncomment the line below.
+            # md.skipdata_setup = (".db", CS_SKIPDATA_CALLBACK(testcb), None)
 
             for insn in md.disasm(code, 0x1000):
                 #bytes = binascii.hexlify(insn.bytes)