Hiroyuki Ikezoe
ikezo****@users*****
Sun Dec 3 19:59:07 JST 2006
Index: kazehakase/module/search/kz-search-hyper-estraier.c diff -u kazehakase/module/search/kz-search-hyper-estraier.c:1.4 kazehakase/module/search/kz-search-hyper-estraier.c:1.5 --- kazehakase/module/search/kz-search-hyper-estraier.c:1.4 Sun Dec 3 19:24:15 2006 +++ kazehakase/module/search/kz-search-hyper-estraier.c Sun Dec 3 19:59:07 2006 @@ -55,6 +55,7 @@ typedef struct _KzSearchHyperEstraierPrivate KzSearchHyperEstraierPrivate; struct _KzSearchHyperEstraierPrivate { + ESTDB *db; }; typedef struct _KzSearchHyperEstraierClass KzSearchHyperEstraierClass; @@ -87,7 +88,7 @@ /* KzSearch Class */ static gchar *get_search_result_html (KzSearch *search, const gchar *text); static KzBookmark *get_search_result_bookmark (KzSearch *search, const gchar *text); -static gboolean register_document (KzSearch *search, const gchar *uri); +static gboolean register_document (KzSearch *search, const gchar *uri, const gchar *title, GTime mtime); static gboolean unregister_document (KzSearch *search, const gchar *uri); static gboolean update_index (KzSearch *search); static gboolean purge_index (KzSearch *search); @@ -175,8 +176,11 @@ static void -kz_search_hyper_estraier_init (KzSearchHyperEstraier *est) +kz_search_hyper_estraier_init (KzSearchHyperEstraier *search) { + KzSearchHyperEstraierPrivate *priv = KZ_SEARCH_HYPER_ESTRAIER_GET_PRIVATE(search); + + priv->db = NULL; } static GObject * @@ -202,6 +206,17 @@ static void dispose (GObject *object) { + KzSearchHyperEstraierPrivate *priv = KZ_SEARCH_HYPER_ESTRAIER_GET_PRIVATE(object); + + if (priv->db) + { + int ecode, ret; + ret = est_db_close(priv->db, &ecode); + if (!ret) + g_warning("error: %s", est_err_msg(ecode)); + } + priv->db = NULL; + if (G_OBJECT_CLASS(parent_class)->dispose) G_OBJECT_CLASS(parent_class)->dispose(object); } @@ -400,8 +415,10 @@ } gboolean -register_document (KzSearch *search, const gchar *uri) +register_document (KzSearch *search, const gchar *uri, const gchar *title, GTime mtime) { + /* cbdatesrtwww(time, 0); */ + g_idle_add (_update_index, (gpointer)uri); return TRUE; @@ -434,7 +451,6 @@ g_warning("error: %s", est_err_msg(ecode)); } - return (success != 0) ? TRUE : FALSE; } @@ -447,77 +463,36 @@ static gboolean purge_index (KzSearch *search) { - const gchar *estpurge = "estcmd purge "; - gchar *command; - gint argc; - gchar **argv = NULL; - GSpawnFlags flags; - GPid pid; - - /* purge index */ - flags = G_SPAWN_SEARCH_PATH | - G_SPAWN_STDOUT_TO_DEV_NULL; - command = g_strconcat(estpurge, - g_get_home_dir(), - HISTORY_INDEX, - NULL); - - g_shell_parse_argv(command, - &argc, - &argv, - NULL); - flags = G_SPAWN_SEARCH_PATH | - G_SPAWN_STDOUT_TO_DEV_NULL; - - g_spawn_async(NULL, - argv, - NULL, - flags, - NULL, - NULL, - &pid, - NULL); - - g_strfreev(argv); - g_free(command); - + /* Is this function needed? */ + /* not implemented */ return FALSE; } static GPid optimize_index (KzSearch *search) { - const gchar *estoptimize = "estcmd optimize "; - gchar *command; - gint argc; - gchar **argv = NULL; - GSpawnFlags flags; - GPid pid; - - /* optimize index process */ - command = g_strconcat(estoptimize, - g_get_home_dir(), HISTORY_INDEX, - NULL); + ESTDB *db; + int ret, ecode; + gchar *dbname; - g_shell_parse_argv(command, - &argc, - &argv, - NULL); - flags = G_SPAWN_SEARCH_PATH | - G_SPAWN_STDOUT_TO_DEV_NULL; - - g_spawn_async(NULL, - argv, - NULL, - flags, - NULL, - NULL, - &pid, - NULL); - g_strfreev(argv); - g_free(command); + dbname = g_strdup_printf("%s%s", g_get_home_dir(), HISTORY_INDEX); + db = est_db_open(dbname, ESTDBREADER, &ecode); + g_free(dbname); + if (!db) + { + g_warning("error: %s", est_err_msg(ecode)); + return FALSE; + } - return pid; + est_db_optimize(db, 0); + + ret = est_db_close(db, &ecode); + if (!ret) + { + g_warning("error: %s", est_err_msg(ecode)); + } +#warning FIXME! return GSource or something. + return 0; } static KzBookmark *