Switch to side-by-side view

--- a/src/rcldb/rcldb.cpp
+++ b/src/rcldb/rcldb.cpp
@@ -1,5 +1,5 @@
 #ifndef lint
-static char rcsid[] = "@(#$Id: rcldb.cpp,v 1.41 2005-11-25 09:12:25 dockes Exp $ (C) 2004 J.F.Dockes";
+static char rcsid[] = "@(#$Id: rcldb.cpp,v 1.42 2005-11-30 09:46:25 dockes Exp $ (C) 2004 J.F.Dockes";
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
@@ -101,16 +101,18 @@
     try {
 	switch (mode) {
 	case DbUpd:
-	    ndb->wdb = 
-		Xapian::WritableDatabase(dir, Xapian::DB_CREATE_OR_OPEN);
-	    LOGDEB(("Rcl::Db::open: lastdocid: %d\n", 
-		    ndb->wdb.get_lastdocid()));
-	    ndb->updated.resize(ndb->wdb.get_lastdocid() + 1);
-	    for (unsigned int i = 0; i < ndb->updated.size(); i++)
-		ndb->updated[i] = false;
-	    ndb->iswritable = true;
-	    break;
-	case DbTrunc:
+	case DbTrunc: 
+	    {
+		int action = (mode == DbUpd) ? Xapian::DB_CREATE_OR_OPEN :
+		    Xapian::DB_CREATE_OR_OVERWRITE;
+		ndb->wdb = Xapian::WritableDatabase(dir, action);
+		LOGDEB(("Rcl::Db::open: lastdocid: %d\n", 
+			ndb->wdb.get_lastdocid()));
+		ndb->updated.resize(ndb->wdb.get_lastdocid() + 1);
+		for (unsigned int i = 0; i < ndb->updated.size(); i++)
+		    ndb->updated[i] = false;
+		ndb->iswritable = true;
+	    }
 	    break;
 	case DbRO:
 	default: