On Tue, 2004-07-27 at 14:27, Ben Collins-Sussman wrote:
> 1. create a new branch from the 1.0.6 tag.
> 2. register a callback with DB_ENV->set_errcall() that just prints to
> stdout.
> 3. build a static 'svnadmin' from this branch for a couple of
> platforms (intel linux, OSX) against db4.2.
Hm, well, I tried the simplest possible patch I could come up with for
'svnadmin':
------------------------------------------------------
* svnadmin/main.c
(error_func): new func, print error to stdout.
(open_repos): register the error callback with BDB.
Index: subversion/svnadmin/main.c
===================================================================
--- subversion/svnadmin/main.c (revision 10429)
+++ subversion/svnadmin/main.c (working copy)
@@ -118,6 +118,12 @@
svn_handle_error (err, stderr, FALSE);
}
+/* Custom function for printing detailed BDB errors. */
+static void
+error_func (const char *errprefix, char *msg)
+{
+ printf ("BDB ERROR: %s : %s\n", errprefix, msg);
+}
/* Helper to open a repository and set a warning func (so we don't
* SEGFAULT when libsvn_fs's default handler gets run). */
@@ -128,6 +134,7 @@
{
SVN_ERR (svn_repos_open (repos, path, pool));
svn_fs_set_warning_func (svn_repos_fs (*repos), warning_func, NULL);
+ SVN_ERR (svn_fs_set_berkeley_errcall (svn_repos_fs (*repos), error_func));
return SVN_NO_ERROR;
}
-----------------------------------------------------
Unfortunately, I'm not getting any more detail with this patch. I
opened my 'nodes' table in emacs, and changed one byte within a skel
structure. Then I try to verify with the patched svnadmin:
$ svnadmin verify deadrepos
subversion/libsvn_fs_base/bdb/bdb-err.c:62: (apr_err=160029)
svn: Berkeley DB error while opening 'nodes' table for filesystem
deadrepos/db:
Invalid argument
Still no detail. >:-(
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Jul 27 22:06:09 2004