Rev 1023: Wrap svn_ra_get_locks. in file:///data/jelmer/bzr-svn/pyrex/

Jelmer Vernooij jelmer at samba.org
Fri Mar 21 15:16:25 GMT 2008


At file:///data/jelmer/bzr-svn/pyrex/

------------------------------------------------------------
revno: 1023
revision-id: jelmer at samba.org-20080321151624-7xtzwi8wrryu6qq3
parent: jelmer at samba.org-20080321130920-zk7tetjssf6slxia
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Fri 2008-03-21 16:16:24 +0100
message:
  Wrap svn_ra_get_locks.
modified:
  ra.pyx                         ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
=== modified file 'ra.pyx'
--- a/ra.pyx	2008-03-21 13:01:35 +0000
+++ b/ra.pyx	2008-03-21 15:16:24 +0000
@@ -182,6 +182,11 @@
                                  char *path,
                                  apr_pool_t *pool)
 
+    svn_error_t *svn_ra_get_locks(svn_ra_session_t *session,
+                              apr_hash_t **locks,
+                              char *path,
+                              apr_pool_t *pool)
+
     svn_error_t *svn_ra_check_path(svn_ra_session_t *session,
                                    char *path,
                                    long revision,
@@ -212,6 +217,8 @@
                 lock_baton,
                 apr_pool_t *pool)
 
+cdef pyify_lock(svn_lock_t *lock):
+    return None # FIXME
 
 cdef svn_error_t *py_lock_func (baton, char *path, int do_lock, 
                                 svn_lock_t *lock, svn_error_t *ra_err, 
@@ -219,8 +226,7 @@
     py_ra_err = None
     if ra_err != NULL:
         py_ra_err = SubversionException(ra_err.apr_err, ra_err.message)
-    # FIXME: Pass lock
-    baton(path, do_lock, py_ra_err)
+    baton(path, do_lock, pyify_lock(lock), py_ra_err)
 
 cdef void py_progress_func(apr_off_t progress, apr_off_t total, void *baton, apr_pool_t *pool) except *:
     fn = <object>baton
@@ -841,6 +847,24 @@
                      py_lock_func, lock_func, temp_pool))
         apr_pool_destroy(temp_pool)
 
+    def get_locks(self, path):
+        cdef apr_pool_t *temp_pool
+        cdef apr_hash_t *hash_locks
+        cdef apr_hash_index_t *idx
+        cdef char *key
+        cdef long klen
+        cdef svn_lock_t *lock
+        temp_pool = Pool(self.pool)
+        check_error(svn_ra_get_locks(self.ra, &hash_locks, path, temp_pool))
+        ret = {}
+        idx = apr_hash_first(temp_pool, hash_locks)
+        while idx:
+            apr_hash_this(idx, <void **>&key, &klen, <void **>&lock)
+            ret[key] = pyify_lock(lock)
+            idx = apr_hash_next(idx)
+        apr_pool_destroy(temp_pool)
+        return ret
+
     def __dealloc__(self):
         if self.pool != NULL:
             apr_pool_destroy(self.pool)
@@ -859,6 +883,7 @@
 cdef class Auth:
     cdef svn_auth_baton_t *auth_baton
     cdef apr_pool_t *pool
+    cdef providers
     def __init__(self, providers=[]):
         cdef apr_array_header_t *c_providers    
         cdef AuthProvider provider




More information about the bazaar-commits mailing list