diff options
Diffstat (limited to 'cython/lockdown.pxi')
-rw-r--r-- | cython/lockdown.pxi | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/cython/lockdown.pxi b/cython/lockdown.pxi index a904d12..8463738 100644 --- a/cython/lockdown.pxi +++ b/cython/lockdown.pxi @@ -41,6 +41,8 @@ cdef extern from "libimobiledevice/lockdown.h": lockdownd_error_t lockdownd_deactivate(lockdownd_client_t client) lockdownd_error_t lockdownd_enter_recovery(lockdownd_client_t client) lockdownd_error_t lockdownd_goodbye(lockdownd_client_t client) + lockdownd_error_t lockdownd_get_sync_data_classes(lockdownd_client_t client, char ***classes, int *count) + lockdownd_error_t lockdownd_data_classes_free(char **classes) cdef class LockdownError(BaseError): def __init__(self, *args, **kwargs): @@ -245,6 +247,27 @@ cdef class LockdownClient(PropertyListService): cpdef goodbye(self): self.handle_error(lockdownd_goodbye(self._c_client)) + cpdef list get_sync_data_classes(self): + cdef: + char **classes = NULL + int count = 0 + list result = [] + bytes data_class + + try: + self.handle_error(lockdownd_get_sync_data_classes(self._c_client, &classes, &count)) + + for i from 0 <= i < count: + data_class = classes[i] + result.append(data_class) + + return result + except Exception, e: + raise + finally: + if classes != NULL: + lockdownd_data_classes_free(classes) + cdef inline int16_t _send(self, plist.plist_t node): return lockdownd_send(self._c_client, node) |