gtranslator r3647 - in trunk/src: . translation-memory/berkeley
- From: icq svn gnome org
- To: svn-commits-list gnome org
- Subject: gtranslator r3647 - in trunk/src: . translation-memory/berkeley
- Date: Mon, 22 Sep 2008 09:40:52 +0000 (UTC)
Author: icq
Date: Mon Sep 22 09:40:52 2008
New Revision: 3647
URL: http://svn.gnome.org/viewvc/gtranslator?rev=3647&view=rev
Log:
2008-08-04 Ignacio Casal Quinteiro <nacho resa gmail com>
* translation-memory/berkeley/db-base.c
(gtranslator_db_base_init),
(gtranslator_db_base_finalize),
(gtranslator_db_base_create_dabatase),
(gtranslator_db_base_show_error):
Added recovery mode. Not sure if this works.
Modified:
trunk/src/ChangeLog
trunk/src/translation-memory/berkeley/db-base.c
Modified: trunk/src/translation-memory/berkeley/db-base.c
==============================================================================
--- trunk/src/translation-memory/berkeley/db-base.c (original)
+++ trunk/src/translation-memory/berkeley/db-base.c Mon Sep 22 09:40:52 2008
@@ -43,6 +43,7 @@
struct _GtranslatorDbBasePrivate
{
DB *db;
+ gchar *path;
};
static gchar *
@@ -81,9 +82,11 @@
}
static void
-gtranslator_db_base_init (GtranslatorDbBase *panel)
+gtranslator_db_base_init (GtranslatorDbBase *base)
{
- panel->priv = GTR_DB_BASE_GET_PRIVATE (panel);
+ base->priv = GTR_DB_BASE_GET_PRIVATE (base);
+
+ base->priv->path = NULL;
}
static void
@@ -95,6 +98,8 @@
if ((err = base->priv->db->close(base->priv->db, 0)) != 0)
gtranslator_db_base_show_error (base, err);
+ g_free (base->priv->path);
+
G_OBJECT_CLASS (gtranslator_db_base_parent_class)->finalize (object);
}
@@ -115,7 +120,6 @@
{
gint error;
gchar *db_dir;
- gchar *fullname;
g_return_if_fail (GTR_IS_DB_BASE (base));
@@ -127,19 +131,17 @@
}
db_dir = get_db_base_directory ();
- fullname = g_build_filename (db_dir, filename, NULL);
+ base->priv->path = g_build_filename (db_dir, filename, NULL);
g_free (db_dir);
error = base->priv->db->open (base->priv->db,
NULL,
- fullname,
+ base->priv->path,
NULL,
type,
DB_CREATE,
0);
- g_free (fullname);
-
if (error != 0)
{
gtranslator_db_base_show_error (base, error);
@@ -152,14 +154,36 @@
int error)
{
gchar *err = NULL;
+ DB_ENV *env;
+ gint e;
- if (error != DB_NOTFOUND)
+ switch (error)
{
- err = g_strdup_printf (_("There was an error in database: %s"),
- db_strerror (error));
-
- g_warning (err);
- g_free (err);
+ case DB_NOTFOUND:
+ break;
+ case DB_RUNRECOVERY:
+ g_warning (_("Running recovery..."));
+
+ env = base->priv->db->get_env (base->priv->db);
+ e = env->open (env, base->priv->path,
+ DB_RECOVER_FATAL, 0);
+
+ if (e != 0)
+ {
+ err = g_strdup_printf (_("There was an error recovering the database: %s"),
+ db_strerror (e));
+
+ g_warning (err);
+ g_free (err);
+ }
+ break;
+ default:
+ err = g_strdup_printf (_("There was an error in database: %s"),
+ db_strerror (error));
+
+ g_warning (err);
+ g_free (err);
+ break;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]