On 01/07/2011 11:33 AM, cmpil...@apache.org wrote:
Author: cmpilato
Date: Fri Jan  7 19:33:28 2011
New Revision: 1056468

URL: http://svn.apache.org/viewvc?rev=1056468&view=rev
Log:
Clean up an old bit of API nastiness which prevented implementations
of the svn_fs_get_locks_callback_t callback from performing additional
FS operations in BDB-backed repositories.  Having svn_fs_get_locks2()
already revved for 1.7 makes this a good time to fix this old bug.

+  SVN_ERR(svn_io_open_uniquely_named(&(args.spool_file), NULL, NULL, NULL,
+                                     NULL, svn_io_file_del_on_close,
+                                     pool, pool));
+  SVN_ERR(svn_fs_base__retry_txn(fs, txn_body_get_locks,&args, FALSE, pool));
+
+  /* Rewind the spool file, then re-read it, calling GET_LOCKS_FUNC(). */
+  svn_io_file_seek(args.spool_file, APR_SET,&offset, pool);

Need to handle the error here?

+      /* Read the extra newline that follows the skel. */
+      len = 1;
+      SVN_ERR(svn_stream_read(stream,&c,&len));
+      if (c != '\n')
+        return svn_error_create(SVN_ERR_MALFORMED_FILE, NULL, NULL);
+
+      /* Parse the skel into a lock, and notify the caller. */
+      lock_skel = svn_skel__parse(skel_buf, skel_len, iterpool);
+      SVN_ERR(svn_fs_base__parse_lock_skel(&lock, lock_skel, iterpool));
+      get_locks_func(get_locks_baton, lock, iterpool);

And here too, since svn_fs_get_locks_callback_t has an svn_error_t * return type.

Blair

Reply via email to