Dears, I'm a Beagle fan: http://guiodic.wordpress.com/category/gnulinux/guide-pratiche-gnulinux/beagle-guide-pratiche-gnulinux-gnulinux/
I discovered that *beaglefs* has a bug because new beagle syntax. Attached there is a good hit.c file based on 1.0.4 version by opensuse. Sorry, I'm unable to use 'diff' and 'patch' properly. Changement is simple: beagle_query_add_text (query, "type:File OR type:IMLog"); /* CHANGHE */ /* beagle_query_add_text (query, "type:IMLog"); */ /* DELETE OR COMMENT THIS LINE*/ Thank you.
/* * beaglefs/hit.c - Query hit processing engine * * Robert Love <r...@novell.com> * * Copyright (C) 2006 Robert Love * * Licensed under the terms of the GNU GPL v2 */ #include <string.h> #include <beagle/beagle.h> #include <glib.h> #include "hit.h" #include "inode.h" #include "dir.h" static char *query_text; static GMainLoop *hit_main_loop; /* * beagle_hit_set_query - Set the query used by the filesystem to 'query'. * A copy of 'query' is made and must be freed via g_free(). */ void beagle_hit_set_query (const char *query) { g_return_if_fail (query); query_text = g_strdup (query); } /* * hit_to_new_inode - create a new beaglefs inode object via beagle_inode_new() * and initialize its default values via a BeagleHit object. * * Returns the newly allocated inode object, which must be freed via a call to * beagle_inode_free(). */ static beagle_inode_t * hit_to_new_inode (BeagleHit *hit) { BeagleTimestamp *hit_time; beagle_inode_t *inode; time_t timestamp; g_return_val_if_fail (hit, NULL); hit_time = beagle_hit_get_timestamp (hit); if (!beagle_timestamp_to_unix_time (hit_time, ×tamp)) time (×tamp); /* current time is better than nothing */ inode = beagle_inode_new (beagle_hit_get_uri (hit), timestamp, beagle_hit_get_mime_type (hit), beagle_hit_get_type (hit), beagle_hit_get_source (hit), beagle_hit_get_score (hit)); return inode; } /* * hits_added_cb - Our callback for the libbeagle "hits-added" signal. For * each hit, create a new inode object and add it to the filesystem. */ static void hits_added_cb (G_GNUC_UNUSED BeagleQuery *query, BeagleHitsAddedResponse *response) { GSList *hits, *elt; hits = beagle_hits_added_response_get_hits (response); for (elt = hits; elt; elt = g_slist_next (elt)) { beagle_inode_t *inode; inode = hit_to_new_inode (BEAGLE_HIT (elt->data)); beagle_dir_write_lock (); beagle_dir_add_inode (inode); beagle_dir_write_unlock(); } } /* * hits_subtracted_cb - Our callback for the libbeagle "hits-subtracted" * signal. For each hit, remove the corresponding inode from the filesystem. */ static void hits_subtracted_cb (G_GNUC_UNUSED BeagleQuery *query, BeagleHitsSubtractedResponse *response) { GSList *hits, *elt; hits = beagle_hits_subtracted_response_get_uris (response); for (elt = hits; elt; elt = g_slist_next (elt)) { const char *name; name = strrchr (elt->data, G_DIR_SEPARATOR); beagle_dir_write_lock (); beagle_dir_remove_inode_by_name (name); beagle_dir_write_unlock (); } } static void * hit_thread_start (G_GNUC_UNUSED void *ignored) { BeagleClient *client; BeagleQuery *query; BeagleRequest *request; client = beagle_client_new (NULL); if (!client) g_critical ("Failed to instantiate a BeagleClient."); hit_main_loop = g_main_loop_new (NULL, FALSE); query = beagle_query_new (); request = BEAGLE_REQUEST (query); beagle_query_add_text (query, query_text); beagle_query_add_text (query, "type:File OR type:IMLog"); /* CHANGHE */ /* beagle_query_add_text (query, "type:IMLog"); */ /* DELETE THIS */ g_signal_connect (query, "hits-added", G_CALLBACK (hits_added_cb), client); g_signal_connect (query, "hits-subtracted", G_CALLBACK (hits_subtracted_cb), client); if (!beagle_client_send_request_async (client, request, NULL)) g_critical ("Failed to send BeagleQuery to Beagle."); g_main_loop_run (hit_main_loop); g_object_unref (query); g_object_unref (client); g_main_loop_unref (hit_main_loop); g_free (query_text); return NULL; } /* * beagle_hit_init - Initialize the hit engine. */ void beagle_hit_init (void) { g_thread_init (NULL); g_type_init (); if (!g_thread_create (hit_thread_start, NULL, FALSE, NULL)) g_critical ("Failed to launch hit engine thread."); } /* * beagle_hit_destroy - Force a return from the main loop, destroying the hit * engine thread. */ void beagle_hit_destroy (void) { g_main_loop_quit (hit_main_loop); }
_______________________________________________ Dashboard-hackers mailing list Dashboard-hackers@gnome.org http://mail.gnome.org/mailman/listinfo/dashboard-hackers