[Xfce4-commits] <postler:master> Return search value from search_statement() for binding

Christian Dywan noreply at xfce.org
Mon Jul 11 23:14:07 CEST 2011


Updating branch refs/heads/master
         to b4ad25410ee6ae930b3af2e5d1fe093e5471ce75 (commit)
       from 2a3f1090e3a522f006d7ec19788dcd9898138a29 (commit)

commit b4ad25410ee6ae930b3af2e5d1fe093e5471ce75
Author: Christian Dywan <christian at twotoasts.de>
Date:   Mon Jul 11 22:51:11 2011 +0200

    Return search value from search_statement() for binding
    
    If the prepared statement is to be used, the function can't
    bind the value by itself.

 postler/postler-index.vala |   21 +++++++++++----------
 1 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/postler/postler-index.vala b/postler/postler-index.vala
index a8852cb..b5d7b25 100644
--- a/postler/postler-index.vala
+++ b/postler/postler-index.vala
@@ -230,7 +230,7 @@ namespace Postler {
         const string[] any_fields = { "subject", "sender", "excerpt" };
         static GLib.HashTable<string,string>? dates = null;
 
-        void search_statement (string folder, string sql,
+        string? search_statement (string folder, string sql,
             ref Sqlite.Statement statement) throws GLib.Error {
 
             /* file:// or search:field/value */
@@ -302,15 +302,12 @@ namespace Postler {
                     cond.append (") AND uri NOT LIKE '%/Trash/%' AND uri NOT LIKE '%/Junk/%'");
                     if (database.prepare_v2 (sql.replace ("$CASE", cond.str),
                                              -1, out statement) != Sqlite.OK)
-                        throw new GLib.FileError.FAILED (_("Failed to list messages: %s"), database.errmsg ());
-                    return;
+                        throw new GLib.FileError.FAILED (_("Failed to search messages: %s"), database.errmsg ());
+                    return null;
                 }
-                if (statement.bind_text (2, "%%%s%%".printf (parts[1]), -1) != Sqlite.OK)
-                    throw new GLib.FileError.FAILED (_("Failed to list messages: %s"), database.errmsg ());
-                return;
+                return "%%%s%%".printf (parts[1]);
             }
-            if (statement.bind_text (2, folder, -1) != Sqlite.OK)
-                throw new GLib.FileError.FAILED (_("Failed to list messages: %s"), database.errmsg ());
+            return folder;
         }
 
         public int64[] unread_messages (string folder) throws GLib.Error {
@@ -325,9 +322,11 @@ namespace Postler {
                     throw new GLib.FileError.FAILED (_("Failed to count unread messages: %s"), database.errmsg ());
             }
             Sqlite.Statement? temporary_statement = null;
-            search_statement (folder, sql, ref temporary_statement);
+            string? search_value = search_statement (folder, sql, ref temporary_statement);
             unowned Sqlite.Statement statement = temporary_statement != null
                                                ? temporary_statement : statement_unread;
+            if (search_value != null && statement.bind_text (2, search_value, -1) != Sqlite.OK)
+                throw new GLib.FileError.FAILED (_("Failed to count messages: %s"), database.errmsg ());
             int result = Sqlite.ERROR;
             bool success = row_or_done ((result = statement.step ()));
             if (!success) {
@@ -421,9 +420,11 @@ namespace Postler {
             }
 
             Sqlite.Statement? temporary_statement = null;
-            search_statement (folder, sql, ref temporary_statement);
+            string? search_value = search_statement (folder, sql, ref temporary_statement);
             unowned Sqlite.Statement statement = temporary_statement != null
                                                ? temporary_statement : statement_list;
+            if (search_value != null && statement.bind_text (2, search_value, -1) != Sqlite.OK)
+                throw new GLib.FileError.FAILED (_("Failed to count messages: %s"), database.errmsg ());
             int result = Sqlite.ERROR;
             bool success = row_or_done (((result = statement.step ())));
             if (!success) {



More information about the Xfce4-commits mailing list