return string;
}
+
static GList*
add_hit (GList *list, TnyHeader *header, TnyFolder *folder)
{
hit = g_slice_new0 (ModestSearchHit);
furl = tny_folder_get_url_string (folder);
+ printf ("DEBUG: %s: folder URL=%s\n", __FUNCTION__, furl);
+ if (!furl) {
+ g_warning ("%s: tny_folder_get_url_string(): returned NULL for folder. Folder name=%s\n", __FUNCTION__, tny_folder_get_name (folder));
+ }
+
+ /* Make sure that we use the short UID instead of the long UID,
+ * and/or find out what UID form is used when finding, in camel_data_cache_get().
+ * so we can find what we get. Philip is working on this.
+ */
uid = tny_header_get_uid (header);
+ if (!furl) {
+ g_warning ("%s: tny_header_get_uid(): returned NULL for message with subject=%s\n", __FUNCTION__, tny_header_get_subject (header));
+ }
+
msg_url = g_strdup_printf ("%s/%s", furl, uid);
+ g_free (furl);
+
subject = tny_header_get_subject (header);
sender = tny_header_get_from (header);
-
+
flags = tny_header_get_flags (header);
hit->msgid = msg_url;
hit->subject = g_strdup_or_null (subject);
hit->sender = g_strdup_or_null (sender);
- hit->folder = furl;
+ hit->folder = g_strdup_or_null (tny_folder_get_name (folder));
hit->msize = tny_header_get_message_size (header);
hit->has_attachment = flags & TNY_HEADER_FLAG_ATTACHMENTS;
hit->is_unread = ! (flags & TNY_HEADER_FLAG_SEEN);
hit->timestamp = tny_header_get_date_received (header);
-
+
return g_list_prepend (list, hit);
}
*nread = _nread;
return TRUE;
-
-
}
#ifdef MODEST_HAVE_OGS
gboolean res;
- if (! tny_mime_part_content_type_is (part, "text/ *") ||
+ if (! tny_mime_part_content_type_is (part, "text/*") ||
! (is_html = tny_mime_part_content_type_is (part, "text/html"))) {
+ g_debug ("%s: No text or html MIME part found.\n", __FUNCTION__);
return FALSE;
}
while ((res = read_chunk (stream, buffer, len, &nread))) {
+ /* search->text_searcher was instantiated in modest_search_folder(). */
+
if (is_html) {
found = ogs_text_searcher_search_html (search->text_searcher,
}
ogs_text_searcher_reset (search->text_searcher);
+
+ /* debug stuff:
+ if (!found) {
+ buffer[len -1] = 0;
+ printf ("DEBUG: %s: query %s was not found in message text: %s\n",
+ __FUNCTION__, search->query, buffer);
+
+ } else {
+ printf ("DEBUG: %s: found.\n", __FUNCTION__);
+ }
+ */
return found;
}
-#endif /*MODEST_HAVE_OGS*/
+
+#else
static gboolean
search_mime_part_strcmp (TnyMimePart *part, ModestSearch *search)
TnyStream *stream;
char buffer[8193];
char *chunk[2];
- gsize len;
- gssize nread;
+ gssize len;
+ gsize nread;
gboolean found;
gboolean res;
- if (! tny_mime_part_content_type_is (part, "text/ *")) {
+ if (! tny_mime_part_content_type_is (part, "text/*")) {
+ g_debug ("%s: No text MIME part found.\n", __FUNCTION__);
return FALSE;
}
g_object_unref (stream);
return found;
}
+#endif /*MODEST_HAVE_OGS*/
static gboolean
search_string (const char *what,
modest_search_folder (TnyFolder *folder, ModestSearch *search)
{
GList *retval = NULL;
- TnyIterator *iter;
- TnyList *list;
- gboolean (*part_search_func) (TnyMimePart *part, ModestSearch *search);
-
- part_search_func = search_mime_part_strcmp;
-
+ TnyIterator *iter = NULL;
+ TnyList *list = NULL;
+
#ifdef MODEST_HAVE_OGS
if (search->flags & MODEST_SEARCH_USE_OGS) {
ogs_text_searcher_parse_query (text_searcher, search->query);
search->text_searcher = text_searcher;
}
-
- part_search_func = search_mime_part_ogs;
}
#endif
list = tny_simple_list_new ();
- tny_folder_get_headers (folder, list, FALSE, NULL);
+ GError *error = NULL;
+ tny_folder_get_headers (folder, list, FALSE /* don't refresh */, &error);
+ if (error) {
+ g_warning ("%s: tny_folder_get_headers() failed with error=%s.\n",
+ __FUNCTION__, error->message);
+ g_error_free (error);
+ error = NULL;
+ }
iter = tny_list_create_iterator (list);
}
if (!found && search->flags & MODEST_SEARCH_SENDER) {
- const char *str = tny_header_get_from (cur);
+ char *str = g_strdup (tny_header_get_from (cur));
- if ((found = search_string (search->from, str, search))) {
+ if ((found = search_string (search->from, (const gchar *) str, search))) {
retval = add_hit (retval, cur, folder);
}
+ g_free (str);
}
if (!found && search->flags & MODEST_SEARCH_RECIPIENT) {
msg = tny_folder_get_msg (folder, cur, &err);
if (err != NULL || msg == NULL) {
- g_warning ("Could not get message\n");
+ g_warning ("%s: Could not get message.\n", __FUNCTION__);
g_error_free (err);
if (msg) {
parts = tny_simple_list_new ();
tny_mime_part_get_parts (TNY_MIME_PART (msg), parts);
+
+ if (tny_list_get_length(parts) == 0) {
+ gchar *url_string = tny_msg_get_url_string (msg);
+ g_debug ("DEBUG: %s: tny_mime_part_get_parts(msg) returned an empty list for message url=%s",
+ __FUNCTION__, url_string);
+ g_free (url_string);
+ }
piter = tny_list_create_iterator (parts);
while (!found && !tny_iterator_is_done (piter)) {
TnyMimePart *pcur = (TnyMimePart *) tny_iterator_get_current (piter);
- if ((found = part_search_func (pcur, search))) {
+ #ifdef MODEST_HAVE_OGS
+ found = search_mime_part_ogs (pcur, search);
+ #else
+ found = search_mime_part_strcmp (pcur, search);
+ #endif
+
+ if (found) {
retval = add_hit (retval, cur, folder);
}
GList *res;
folder = TNY_FOLDER (tny_iterator_get_current (iter));
+ /* g_debug ("DEBUG: %s: searching folder %s.",
+ __FUNCTION__, tny_folder_get_name (folder)); */
res = modest_search_folder (folder, search);
account = TNY_ACCOUNT (tny_iterator_get_current (iter));
- g_debug ("Searching account %s",
- tny_account_get_name (account));
+ /* g_debug ("DEBUG: %s: Searching account %s",
+ __FUNCTION__, tny_account_get_name (account)); */
res = modest_search_account (account, search);
if (res != NULL) {