#include "directory.h"
#include "etc/spotlight/sparql_parser.h"
+#include <glib.h>
+
#define MAX_SL_RESULTS 20
struct slq_state_names {
static bool add_results(sl_array_t *array, slq_t *slq)
{
sl_filemeta_t *fm;
- uint64_t status = 0;
+ uint64_t status;
/* FileMeta */
fm = talloc_zero(array, sl_filemeta_t);
return false;
}
+ switch (slq->slq_state) {
+ case SLQ_STATE_RUNNING:
+ /*
+ * Wtf, why 35? Taken from an AFP capture.
+ */
+ status = 35;
+ break;
+
+ default:
+ status = 0;
+ break;
+ }
+
dalloc_add_copy(array, &status, uint64_t);
dalloc_add(array, slq->query_results->cnids, sl_cnids_t);
if (slq->query_results->num_results > 0) {
GAsyncResult *res,
gpointer user_data)
{
- bool ok;
GError *error = NULL;
slq_t *slq = user_data;
slq->slq_state = SLQ_STATE_RESULTS;
- ok = create_result_handle(slq);
- if (!ok) {
- LOG(log_error, logtype_sl, "create_result_handle error");
- slq->slq_state = SLQ_STATE_ERROR;
- return;
- }
-
tracker_sparql_cursor_next_async(slq->tracker_cursor,
slq->slq_obj->sl_ctx->cancellable,
tracker_cursor_cb,
uint64_t result;
gchar *sparql_query;
GError *error = NULL;
+ bool ok;
array = talloc_zero(reply, sl_array_t);
}
slq->slq_state = SLQ_STATE_RUNNING;
+
+ ok = create_result_handle(slq);
+ if (!ok) {
+ LOG(log_error, logtype_sl, "create_result_handle error");
+ slq->slq_state = SLQ_STATE_ERROR;
+ EC_FAIL;
+ }
+
slq_add(slq);
EC_CLEANUP:
LOG(log_error, logtype_sl, "error adding results");
EC_FAIL;
}
- if (slq->slq_state == SLQ_STATE_RESULTS
- || slq->slq_state == SLQ_STATE_FULL) {
+ if (slq->slq_state == SLQ_STATE_FULL) {
slq->slq_state = SLQ_STATE_RESULTS;
tracker_sparql_cursor_next_async(
/*
* Tracker uses glibs event dispatching, so we need a mainloop
*/
+#if ((GLIB_MAJOR_VERSION <= 2) && (GLIB_MINOR_VERSION < 36))
+ g_type_init();
+#endif
sl_ctx->mainloop = g_main_loop_new(NULL, false);
sl_ctx->cancellable = g_cancellable_new();