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

Reply via email to