diff --git a/src/trackerd/trackerd.c b/src/trackerd/trackerd.c index a85fcf2..3299b7d 100644 --- a/src/trackerd/trackerd.c +++ b/src/trackerd/trackerd.c @@ -1066,6 +1066,14 @@ process_files_thread (void) tracker->dir_list = NULL; } + g_slist_foreach (tracker->crawl_directory_list, (GFunc) schedule_dir_check, db_con); + + if (tracker->crawl_directory_list) { + g_slist_foreach (tracker->crawl_directory_list, (GFunc) g_free, NULL); + g_slist_free (tracker->crawl_directory_list); + tracker->crawl_directory_list = NULL; + } + g_slist_foreach (tracker->watch_directory_roots_list, (GFunc) schedule_dir_check, db_con); if (tracker->dir_list) { @@ -2003,6 +2007,30 @@ sanity_check_option_values () } if (tracker->crawl_directory_list) { + GSList * cur, * crawl_dirs; + + crawl_dirs = NULL; + + /* check for crawling dirs not being subdirs of watched + * dirs */ + for (cur = tracker->crawl_directory_list; cur; cur = g_slist_next (cur)) { + GSList * tmp = NULL; + + for (tmp = tracker->watch_directory_roots_list; tmp; tmp = g_slist_next (tmp)) { + if (g_str_has_prefix ((const gchar *) cur->data, (const gchar *) tmp->data)) { + break; + } + } + + if (! tmp) + crawl_dirs = g_slist_prepend (crawl_dirs, g_strdup (cur->data)); + } + + /* clean up temps */ + g_slist_foreach (tracker->crawl_directory_list, (GFunc) g_free, NULL); + g_slist_free (tracker->crawl_directory_list); + + tracker->crawl_directory_list = crawl_dirs; tracker_log ("Setting crawl directory roots to:"); for (l = tracker->crawl_directory_list; l; l=l->next) {