Hi,
Tonight I got a little bit into the code for the first time
and tried to add the Emails category results to
tracker_dbus_method_get_stats (), by merging the results of
tracker_exec_proc () for data and emails databases. I didn't
finish though, it's really late now so I'm just posting a
non-working patch hoping to hear some suggestion tomorrow.
Is there anything special with these rows that make up the
char *** result of tracker_exec_proc () or they're just string
arrays?
Marko
Index: src/trackerd/tracker-dbus-methods.c
===================================================================
--- src/trackerd/tracker-dbus-methods.c (revision 537)
+++ src/trackerd/tracker-dbus-methods.c (working copy)
@@ -403,7 +403,14 @@
tracker_dbus_method_get_stats (DBusRec *rec)
{
DBConnection *db_con;
- char ***res;
+ char ***res_data;
+ char ***res_emails;
+ char **res;
+ guint res_data_length = 0;
+ guint res_emails_length = 0;
+ guint res_length;
+ int i, j, k;
+ char **row;
g_return_if_fail (rec && rec->user_data);
@@ -411,12 +418,47 @@
tracker_log ("Executing GetStats Dbus Call");
- res = tracker_exec_proc (db_con, "GetStats", 0);
+ res_data = tracker_exec_proc (db_con, "GetStats", 0);
+ res_emails = tracker_exec_proc (db_con->emails, "GetStats", 0);
+
+ for (k = 0; (row = tracker_db_get_row (res_data, k)); k++) {
+ g_debug ("%s : %s", row[0], row[1]);
+ res_data_length++;
+ }
+
+ for (k = 0; (row = tracker_db_get_row (res_emails, k)); k++) {
+ g_debug ("%s : %s", row[0], row[1]);
+ res_emails_length++;
+ }
+
+ res_length = res_data_length + res_emails_length;
+
+ g_debug ("creating new res with size %u + %u = %u",
+ res_data_length, res_emails_length, res_length);
+
+ res = g_new0 (char *, res_length+1);
+ res[res_length] = NULL;
- tracker_dbus_reply_with_query_result (rec, res);
+ i = 0;
- tracker_db_free_result (res);
+ for (j = 0; (row = tracker_db_get_row (res_data, j)); ++i, ++j) {
+ res[i] = (gpointer) row;
+ }
+ for (j = 0; (row = tracker_db_get_row (res_emails, j)); ++i, ++j) {
+ res[i] = (gpointer) row;
+ }
+
+ g_debug ("i = %u", i);
+
+ tracker_db_free_result (res_data);
+ tracker_db_free_result (res_emails);
+
+ g_debug ("replying...");
+ tracker_dbus_reply_with_query_result (rec, (char ***) res);
+
+ g_debug ("freeing...");
+ tracker_db_free_result ((char ***) res);
}
Index: src/trackerd/tracker-utils.c
===================================================================
--- src/trackerd/tracker-utils.c (revision 537)
+++ src/trackerd/tracker-utils.c (working copy)
@@ -703,6 +703,7 @@
count = strftime (buffer, sizeof (buffer), "%FT%T%z", &loctime);
if (count > 0) {
+ //g_print ("** tracker_date_to_str(): %s", buffer);
return g_strdup (buffer);
} else {
return NULL;
_______________________________________________
tracker-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/tracker-list