[Xfce4-commits] <midori:master> Change db_ helpers in main.c into direct sqlite3_ calls

Christian Dywan noreply at xfce.org
Fri Jan 15 07:08:03 CET 2010


Updating branch refs/heads/master
         to 86d060f25099d4b9600e8b81a627f34f29da273e (commit)
       from de141078b2343e74f85a4f6ee7d88e28fc7062e5 (commit)

commit 86d060f25099d4b9600e8b81a627f34f29da273e
Author: Christian Dywan <christian at twotoasts.de>
Date:   Fri Jan 15 06:47:16 2010 +0100

    Change db_ helpers in main.c into direct sqlite3_ calls
    
    This means 1 function call instead of 2 or 3 calls for each
    query and should reduce some overhead.

 midori/main.c |  173 ++++++++++++++++----------------------------------------
 1 files changed, 50 insertions(+), 123 deletions(-)

diff --git a/midori/main.c b/midori/main.c
index 52b0347..2880f70 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -54,15 +54,6 @@
     #define BOOKMARK_FILE "bookmarks.xbel"
 #endif
 
-#define MIDORI_HISTORY_ERROR g_quark_from_string("MIDORI_HISTORY_ERROR")
-
-typedef enum
-{
-    MIDORI_HISTORY_ERROR_DB_OPEN,    /* Error opening the database file */
-    MIDORI_HISTORY_ERROR_EXEC_SQL,   /* Error executing SQL statement */
-
-} MidoriHistoryError;
-
 static gchar*
 build_config_filename (const gchar* filename)
 {
@@ -361,69 +352,6 @@ search_engines_save_to_file (KatzeArray*  search_engines,
 }
 
 #if HAVE_SQLITE
-/* Open database 'dbname' */
-static sqlite3*
-db_open (const char* dbname,
-         GError**    error)
-{
-    sqlite3* db;
-
-    if (sqlite3_open (dbname, &db))
-    {
-        if (error)
-        {
-            *error = g_error_new (MIDORI_HISTORY_ERROR,
-                                  MIDORI_HISTORY_ERROR_DB_OPEN,
-                                  _("Failed to open database: %s\n"),
-                                  sqlite3_errmsg (db));
-        }
-        sqlite3_close (db);
-        return NULL;
-    }
-    return (db);
-}
-
-/* Close database 'db' */
-static void
-db_close (sqlite3* db)
-{
-    sqlite3_close (db);
-}
-
-/* Execute an SQL statement and run 'callback' on the result data */
-static gboolean
-db_exec_callback (sqlite3*    db,
-                  const char* sqlcmd,
-                  int         (*callback)(void*, int, char**, char**),
-                  void*       cbarg,
-                  GError**    error)
-{
-    char* errmsg;
-
-    if (sqlite3_exec (db, sqlcmd, callback, cbarg, &errmsg) != SQLITE_OK)
-    {
-        if (error)
-        {
-            *error = g_error_new (MIDORI_HISTORY_ERROR,
-                                  MIDORI_HISTORY_ERROR_EXEC_SQL,
-                                  _("Failed to execute database statement: %s\n"),
-                                  errmsg);
-        }
-        sqlite3_free (errmsg);
-        return FALSE;
-    }
-    return TRUE;
-}
-
-/* Execute a SQL statement */
-static gboolean
-db_exec (sqlite3*    db,
-         const char* sqlcmd,
-         GError**    error)
-{
-    return (db_exec_callback (db, sqlcmd, NULL, NULL, error));
-}
-
 /* sqlite method for retrieving the date/ time */
 static int
 gettimestr (void*  data,
@@ -446,8 +374,7 @@ midori_history_remove_item_cb (KatzeArray* history,
                                sqlite3*    db)
 {
     gchar* sqlcmd;
-    gboolean success = TRUE;
-    GError* error = NULL;
+    char* errmsg = NULL;
 
     g_return_if_fail (KATZE_IS_ITEM (item));
 
@@ -457,12 +384,10 @@ midori_history_remove_item_cb (KatzeArray* history,
         katze_item_get_uri (item),
         katze_item_get_name (item),
         katze_item_get_added (item));
-    success = db_exec (db, sqlcmd, &error);
-    if (!success)
+    if (sqlite3_exec (db, sqlcmd, NULL, NULL, &errmsg) != SQLITE_OK)
     {
-        g_printerr (_("Failed to remove history item: %s\n"), error->message);
-        g_error_free (error);
-        return ;
+        g_printerr (_("Failed to remove history item: %s\n"), errmsg);
+        sqlite3_free (errmsg);
     }
     sqlite3_free (sqlcmd);
 }
@@ -478,14 +403,14 @@ static void
 midori_history_clear_cb (KatzeArray* history,
                          sqlite3*    db)
 {
-    GError* error = NULL;
+    char* errmsg = NULL;
 
     g_return_if_fail (KATZE_IS_ARRAY (history));
 
-    if (!db_exec (db, "DELETE FROM history", &error))
+    if (sqlite3_exec (db, "DELETE FROM history", NULL, NULL, &errmsg) != SQLITE_OK)
     {
-        g_printerr (_("Failed to clear history: %s\n"), error->message);
-        g_error_free (error);
+        g_printerr (_("Failed to clear history: %s\n"), errmsg);
+        sqlite3_free (errmsg);
     }
 }
 
@@ -495,22 +420,19 @@ midori_history_notify_item_cb (KatzeItem*  item,
                                sqlite3*    db)
 {
     gchar* sqlcmd;
-    gboolean success = TRUE;
-    GError* error = NULL;
+    char* errmsg = NULL;
 
     sqlcmd = sqlite3_mprintf ("UPDATE history SET title='%q' WHERE "
                               "uri='%q' AND date=%llu",
                               katze_item_get_name (item),
                               katze_item_get_uri (item),
                               katze_item_get_added (item));
-    success = db_exec (db, sqlcmd, &error);
-    sqlite3_free (sqlcmd);
-    if (!success)
+    if (sqlite3_exec (db, sqlcmd, NULL, NULL, &errmsg) != SQLITE_OK)
     {
-        g_printerr (_("Failed to update history item: %s\n"), error->message);
-        g_error_free (error);
-        return ;
+        g_printerr (_("Failed to update history item: %s\n"), errmsg);
+        sqlite3_free (errmsg);
     }
+    sqlite3_free (sqlcmd);
 }
 
 static void
@@ -519,8 +441,8 @@ midori_history_add_item_cb (KatzeArray* array,
                             sqlite3*    db)
 {
     gchar* sqlcmd;
-    gboolean success = TRUE;
-    GError* error = NULL;
+    int success;
+    char* errmsg = NULL;
 
     g_return_if_fail (KATZE_IS_ITEM (item));
 
@@ -538,11 +460,11 @@ midori_history_add_item_cb (KatzeArray* array,
     /* New item, set added to the current date/ time */
     if (!katze_item_get_added (item))
     {
-        if (!db_exec_callback (db, "SELECT date('now')",
-                               gettimestr, item, &error))
+        if (sqlite3_exec (db, "SELECT date('now')",
+                          gettimestr, item, &errmsg) != SQLITE_OK)
         {
-            g_printerr (_("Failed to get current time: %s\n"), error->message);
-            g_error_free (error);
+            g_printerr (_("Failed to get current time: %s\n"), errmsg);
+            sqlite3_free (errmsg);
             return;
         }
     }
@@ -553,12 +475,12 @@ midori_history_add_item_cb (KatzeArray* array,
                               katze_item_get_name (item),
                               katze_item_get_added (item),
                               katze_item_get_added (KATZE_ITEM (array)));
-    success = db_exec (db, sqlcmd, &error);
+    success = sqlite3_exec (db, sqlcmd, NULL, NULL, &errmsg);
     sqlite3_free (sqlcmd);
-    if (!success)
+    if (success != SQLITE_OK)
     {
-        g_printerr (_("Failed to add history item: %s\n"), error->message);
-        g_error_free (error);
+        g_printerr (_("Failed to add history item: %s\n"), errmsg);
+        sqlite3_free (errmsg);
         return ;
     }
 
@@ -624,7 +546,7 @@ midori_history_add_items (void*  data,
 static sqlite3*
 midori_history_initialize (KatzeArray*  array,
                            const gchar* filename,
-                           GError**     error)
+                           char**       errmsg)
 {
     sqlite3* db;
     KatzeItem* item;
@@ -633,19 +555,26 @@ midori_history_initialize (KatzeArray*  array,
 
     has_day = FALSE;
 
-    if ((db = db_open (filename, error)) == NULL)
-        return db;
+    if (sqlite3_open (filename, &db) != SQLITE_OK)
+    {
+        if (errmsg)
+            *errmsg = g_strdup_printf (_("Failed to open database: %s\n"),
+                                       sqlite3_errmsg (db));
+        sqlite3_close (db);
+        return NULL;
+    }
 
-    if (!db_exec (db,
+    if (sqlite3_exec (db,
                   "CREATE TABLE IF NOT EXISTS "
                   "history(uri text, title text, date integer, day integer)",
-                  error))
+                  NULL, NULL, errmsg) != SQLITE_OK)
         return NULL;
 
-    if (!db_exec (db, "SELECT day FROM history LIMIT 1", error))
+    if (sqlite3_exec (db, "SELECT day FROM history LIMIT 1", NULL, NULL,
+                      errmsg) != SQLITE_OK)
         return NULL;
 
-    if (!has_day && !db_exec (db,
+    if (!has_day && sqlite3_exec (db,
                       "BEGIN TRANSACTION;"
                       "CREATE TEMPORARY TABLE backup (uri text, title text, date integer);"
                       "INSERT INTO backup SELECT uri,title,date FROM history;"
@@ -657,15 +586,15 @@ midori_history_initialize (KatzeArray*  array,
                       "FROM backup;"
                       "DROP TABLE backup;"
                       "COMMIT;",
-                      error))
+                      NULL, NULL, errmsg) != SQLITE_OK)
         return NULL;
 
-    if (!db_exec_callback (db,
+    if (sqlite3_exec (db,
                            "SELECT uri, title, date, day FROM history "
                            "ORDER BY date ASC",
                            midori_history_add_items,
                            array,
-                           error))
+                           errmsg) != SQLITE_OK)
         return NULL;
 
     i = 0;
@@ -686,23 +615,20 @@ midori_history_terminate (sqlite3* db,
                           gint     max_history_age)
 {
     gchar* sqlcmd;
-    gboolean success = TRUE;
-    GError* error = NULL;
+    char* errmsg = NULL;
 
     sqlcmd = g_strdup_printf (
         "DELETE FROM history WHERE "
         "(julianday(date('now')) - julianday(date(date,'unixepoch')))"
         " >= %d", max_history_age);
-    db_exec (db, sqlcmd, &error);
-    if (!success)
+    if (sqlite3_exec (db, sqlcmd, NULL, NULL, &errmsg) != SQLITE_OK)
     {
         /* i18n: Couldn't remove items that are older than n days */
-        g_printerr (_("Failed to remove old history items: %s\n"), error->message);
-        g_error_free (error);
-        return ;
+        g_printerr (_("Failed to remove old history items: %s\n"), errmsg);
+        sqlite3_free (errmsg);
     }
     g_free (sqlcmd);
-    db_close (db);
+    sqlite3_close (db);
 }
 #endif
 
@@ -1686,6 +1612,7 @@ main (int    argc,
     KatzeItem* item;
     gchar* uri_ready;
     #if HAVE_SQLITE
+    gchar* errmsg;
     sqlite3* db;
     gint max_history_age;
     #endif
@@ -1995,12 +1922,12 @@ main (int    argc,
     #if HAVE_SQLITE
     katze_assign (config_file, build_config_filename ("history.db"));
 
-    error = NULL;
-    if ((db = midori_history_initialize (history, config_file, &error)) == NULL)
+    errmsg = NULL;
+    if ((db = midori_history_initialize (history, config_file, &errmsg)) == NULL)
     {
         g_string_append_printf (error_messages,
-            _("The history couldn't be loaded: %s\n"), error->message);
-        g_error_free (error);
+            _("The history couldn't be loaded: %s\n"), errmsg);
+        g_free (errmsg);
     }
     #endif
 



More information about the Xfce4-commits mailing list