Index: src/trackerd/tracker-utils.h =================================================================== --- src/trackerd/tracker-utils.h (revision 537) +++ src/trackerd/tracker-utils.h (working copy) @@ -494,4 +494,6 @@ char* tracker_string_replace (const char *haystack, char *needle, char *replacement); +char *** tracker_concatenate_result (char ***lhs, char ***rhs); + #endif Index: src/trackerd/tracker-dbus-methods.c =================================================================== --- src/trackerd/tracker-dbus-methods.c (revision 537) +++ src/trackerd/tracker-dbus-methods.c (working copy) @@ -23,6 +23,7 @@ #include "tracker-dbus-methods.h" #include "tracker-metadata.h" #include "tracker-rdf-query.h" +#include "tracker-utils.h" void @@ -403,6 +404,8 @@ tracker_dbus_method_get_stats (DBusRec *rec) { DBConnection *db_con; + char ***res_data; + char ***res_emails; char ***res; g_return_if_fail (rec && rec->user_data); @@ -411,12 +414,17 @@ 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); + + res = tracker_concatenate_result (res_data, res_emails); + + tracker_db_free_result (res_data); + tracker_db_free_result (res_emails); + tracker_dbus_reply_with_query_result (rec, res); tracker_db_free_result (res); - } Index: src/trackerd/tracker-utils.c =================================================================== --- src/trackerd/tracker-utils.c (revision 537) +++ src/trackerd/tracker-utils.c (working copy) @@ -30,6 +30,7 @@ #include #include #include +#include "tracker-db-sqlite.h" #include "tracker-dbus.h" #include "tracker-utils.h" #include "tracker-indexer.h" @@ -3231,4 +3232,42 @@ } +/* concatenate results from tracker_exec_proc () */ +char *** +tracker_concatenate_result (char ***lhs, char ***rhs) +{ + char **res; + char **row, **new_row; + int res_length; + int i, j; + guint row_length; + g_return_val_if_fail (lhs && rhs, NULL); + + res_length = tracker_get_row_count (lhs) + tracker_get_row_count (rhs); + + res = g_new0 (char *, res_length+1); + res[res_length] = NULL; + + i = 0; + + for (j = 0; (row = tracker_db_get_row (lhs, j)); ++i, ++j) { + row_length = g_strv_length (row); + + new_row = g_strdupv (row); + new_row[row_length] = NULL; + + res[i] = (gpointer) new_row; + } + + for (j = 0; (row = tracker_db_get_row (rhs, j)); ++i, ++j) { + row_length = g_strv_length (row); + + new_row = g_strdupv (row); + new_row[row_length] = NULL; + + res[i] = (gpointer) new_row; + } + + return (char ***) res; +}