camel_folder_get_full_name (folder));
if (expression)
- uids = camel_folder_search_by_expression (folder, expression, error);
+ uids = camel_folder_search_by_expression (folder, expression, cancellable, error);
else
uids = camel_folder_get_uids (folder);
((obj), CAMEL_TYPE_FOLDER_SEARCH, CamelFolderSearchPrivate))
struct _CamelFolderSearchPrivate {
+ GCancellable *cancellable;
GError **error;
CamelFolderThread *threads;
}
/**
- * camel_folder_search_execute_expression:
- * @search:
- * @expr:
- * @error: return location for a #GError, or %NULL
- *
- * Execute the search expression @expr, returning an array of
- * all matches as a GPtrArray of uid's of matching messages.
- *
- * Note that any settings such as set_body_index(), set_folder(),
- * and so on are reset to %NULL once the search has completed.
- *
- * TODO: The interface should probably return summary items instead
- * (since they are much more useful to any client).
- *
- * Returns: A GPtrArray of strings of all matching messages.
- * This must only be freed by camel_folder_search_free_result.
- **/
-GPtrArray *
-camel_folder_search_execute_expression (CamelFolderSearch *search,
- const gchar *expr,
- GError **error)
-{
- CamelSExpResult *r;
- GPtrArray *matches;
- gint i;
- GHashTable *results;
- CamelFolderSearchPrivate *p;
-
- g_return_val_if_fail (search != NULL, NULL);
-
- p = search->priv;
- p->error = error;
-
- /* only re-parse if the search has changed */
- if (search->last_search == NULL
- || strcmp (search->last_search, expr)) {
- camel_sexp_input_text (search->sexp, expr, strlen (expr));
- if (camel_sexp_parse (search->sexp) == -1) {
- g_set_error (
- error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
- _("Cannot parse search expression: %s:\n%s"),
- camel_sexp_error (search->sexp), expr);
- return NULL;
- }
-
- g_free (search->last_search);
- search->last_search = g_strdup (expr);
- }
- r = camel_sexp_eval (search->sexp);
- if (r == NULL) {
- g_set_error (
- error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
- _("Error executing search expression: %s:\n%s"),
- camel_sexp_error (search->sexp), expr);
- return NULL;
- }
-
- matches = g_ptr_array_new ();
-
- /* now create a folder summary to return?? */
- if (r->type == CAMEL_SEXP_RES_ARRAY_PTR) {
- d(printf("got result ...\n"));
- if (search->summary) {
- /* reorder result in summary order */
- results = g_hash_table_new (g_str_hash, g_str_equal);
- for (i = 0; i < r->value.ptrarray->len; i++) {
- d(printf("adding match: %s\n", (gchar *)g_ptr_array_index(r->value.ptrarray, i)));
- g_hash_table_insert (results, g_ptr_array_index (r->value.ptrarray, i), GINT_TO_POINTER (1));
- }
- for (i = 0; i < search->summary->len; i++) {
- gchar *uid = g_ptr_array_index (search->summary, i);
- if (g_hash_table_lookup (results, uid)) {
- g_ptr_array_add (matches, (gpointer) camel_pstring_strdup (uid));
- }
- }
- g_hash_table_destroy (results);
- } else {
- for (i = 0; i < r->value.ptrarray->len; i++) {
- d(printf("adding match: %s\n", (gchar *)g_ptr_array_index(r->value.ptrarray, i)));
- g_ptr_array_add (matches, (gpointer) camel_pstring_strdup (g_ptr_array_index (r->value.ptrarray, i)));
- }
- }
- } else {
- g_warning("Search returned an invalid result type");
- }
-
- camel_sexp_result_free (search->sexp, r);
-
- if (p->threads)
- camel_folder_thread_messages_unref (p->threads);
- if (p->threads_hash)
- g_hash_table_destroy (p->threads_hash);
-
- p->threads = NULL;
- p->threads_hash = NULL;
- search->folder = NULL;
- search->summary = NULL;
- search->current = NULL;
- search->body_index = NULL;
-
- return matches;
-}
-
-/**
* camel_folder_search_count:
* @search:
* @expr:
+ * @cancellable: a #GCancellable
* @error: return location for a #GError, or %NULL
*
* Run a search. Search must have had Folder already set on it, and
guint32
camel_folder_search_count (CamelFolderSearch *search,
const gchar *expr,
+ GCancellable *cancellable,
GError **error)
{
CamelSExpResult *r;
g_assert (search->folder);
+ p->cancellable = cancellable;
p->error = error;
/* We route body-contains search and thread based search through memory and not via db. */
if (search->summary)
camel_folder_free_summary (search->folder, search->summary);
+ p->cancellable = NULL;
+ p->error = NULL;
p->threads = NULL;
p->threads_hash = NULL;
search->folder = NULL;
* @search:
* @expr:
* @uids: to search against, NULL for all uid's.
+ * @cancellable: a #GCancellable
* @error: return location for a #GError, or %NULL
*
* Run a search. Search must have had Folder already set on it, and
camel_folder_search_search (CamelFolderSearch *search,
const gchar *expr,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
CamelSExpResult *r;
g_assert (search->folder);
+ p->cancellable = cancellable;
p->error = error;
/* We route body-contains / thread based search and uid search through memory and not via db. */
if (search->summary)
camel_folder_free_summary (search->folder, search->summary);
+ p->cancellable = NULL;
+ p->error = NULL;
p->threads = NULL;
p->threads_hash = NULL;
search->folder = NULL;
camel_folder_summary_prepare_fetch_all (search->folder->summary, search->priv->error);
}
- for (i = 0; i < v->len; i++) {
+ for (i = 0; i < v->len && !g_cancellable_is_cancelled (search->priv->cancellable); i++) {
const gchar *uid;
search->current = camel_folder_summary_get (search->folder->summary, v->pdata[i]);
if (!search || !search->folder || !search->current)
return NULL;
- /* FIXME Pass a GCancellable */
return camel_folder_get_message_sync (
- search->folder, search->current->uid, NULL, NULL);
+ search->folder, search->current->uid, search->priv->cancellable, NULL);
}
static CamelSExpResult *
static gboolean
match_words_1message (CamelDataWrapper *object,
struct _camel_search_words *words,
- guint32 *mask)
+ guint32 *mask,
+ GCancellable *cancellable)
{
CamelDataWrapper *containee;
gint truth = FALSE;
for (i = 0; i < parts && truth == FALSE; i++) {
CamelDataWrapper *part = (CamelDataWrapper *) camel_multipart_get_part (CAMEL_MULTIPART (containee), i);
if (part)
- truth = match_words_1message (part, words, mask);
+ truth = match_words_1message (part, words, mask, cancellable);
}
} else if (CAMEL_IS_MIME_MESSAGE (containee)) {
/* for messages we only look at its contents */
- truth = match_words_1message ((CamelDataWrapper *) containee, words, mask);
+ truth = match_words_1message ((CamelDataWrapper *) containee, words, mask, cancellable);
} else if (camel_content_type_is(CAMEL_DATA_WRAPPER (containee)->mime_type, "text", "*")) {
/* for all other text parts, we look inside, otherwise we dont care */
CamelStream *stream;
stream = camel_stream_mem_new_with_byte_array (byte_array);
/* FIXME The match should be part of a stream op */
- /* FIXME Pass a GCancellable and GError here. */
camel_data_wrapper_decode_to_stream_sync (
- containee, stream, NULL, NULL);
+ containee, stream, cancellable, NULL);
camel_stream_write (stream, "", 1, NULL, NULL);
for (i = 0; i < words->len; i++) {
/* FIXME: This is horridly slow, and should use a real search algorithm */
msg = camel_folder_get_message_sync (folder, uid, cancellable, error);
if (msg) {
mask = 0;
- truth = match_words_1message ((CamelDataWrapper *) msg, words, &mask);
+ truth = match_words_1message ((CamelDataWrapper *) msg, words, &mask, cancellable);
g_object_unref (msg);
}
truth = match_message_index (search->body_index, camel_message_info_uid (search->current), words->words[j]->word, error);
} else {
/* TODO: cache current message incase of multiple body search terms */
- /* FIXME Pass a GCancellable */
- truth = match_words_message (search->folder, camel_message_info_uid (search->current), words, NULL, error);
+ truth = match_words_message (search->folder, camel_message_info_uid (search->current), words, search->priv->cancellable, error);
}
camel_search_words_free (words);
}
if ((words->type & CAMEL_SEARCH_WORD_COMPLEX) == 0 && search->body_index) {
matches = match_words_index (search, words, error);
} else {
- /* FIXME Pass a GCancellable */
- matches = match_words_messages (search, words, NULL, error);
+ matches = match_words_messages (search, words, search->priv->cancellable, error);
}
for (j = 0; j < matches->len; j++) {
g_hash_table_insert (ht, matches->pdata[j], matches->pdata[j]);
GPtrArray *v = search->summary_set ? search->summary_set : search->summary;
CamelMimeMessage *message;
- for (i = 0; i < v->len; i++) {
+ for (i = 0; i < v->len && !g_cancellable_is_cancelled (search->priv->cancellable); i++) {
gchar *uid = g_ptr_array_index (v, i);
- /* FIXME Pass a GCancellable */
message = camel_folder_get_message_sync (
- search->folder, uid, NULL, NULL);
+ search->folder, uid, search->priv->cancellable, NULL);
if (message) {
if (camel_search_message_body_contains ((CamelDataWrapper *) message, &pattern)) {
g_ptr_array_add (r->value.ptrarray, uid);
void camel_folder_search_set_folder (CamelFolderSearch *search, CamelFolder *folder);
void camel_folder_search_set_summary (CamelFolderSearch *search, GPtrArray *summary);
void camel_folder_search_set_body_index (CamelFolderSearch *search, CamelIndex *body_index);
-/* this interface is deprecated */
-GPtrArray *camel_folder_search_execute_expression (CamelFolderSearch *search, const gchar *expr, GError **error);
-GPtrArray *camel_folder_search_search (CamelFolderSearch *search, const gchar *expr, GPtrArray *uids, GError **error);
-guint32 camel_folder_search_count (CamelFolderSearch *search, const gchar *expr, GError **error);
+GPtrArray *camel_folder_search_search (CamelFolderSearch *search, const gchar *expr, GPtrArray *uids, GCancellable *cancellable, GError **error);
+guint32 camel_folder_search_count (CamelFolderSearch *search, const gchar *expr, GCancellable *cancellable, GError **error);
void camel_folder_search_free_result (CamelFolderSearch *search, GPtrArray *);
time_t camel_folder_search_util_add_months (time_t t, gint months);
* camel_folder_search_by_expression:
* @folder: a #CamelFolder
* @expr: a search expression
+ * @cancellable: a #GCancellable
* @error: return location for a #GError, or %NULL
*
* Searches the folder for messages matching the given search expression.
GPtrArray *
camel_folder_search_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelFolderClass *class;
/* NOTE: that it is upto the callee to CAMEL_FOLDER_REC_LOCK */
- matches = class->search_by_expression (folder, expression, error);
+ matches = class->search_by_expression (folder, expression, cancellable, error);
CAMEL_CHECK_GERROR (folder, search_by_expression, matches != NULL, error);
return matches;
* camel_folder_count_by_expression:
* @folder: a #CamelFolder
* @expression: a search expression
+ * @cancellable: a #GCancellable
* @error: return location for a #GError, or %NULL
*
* Searches the folder for count of messages matching the given search expression.
guint32
camel_folder_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelFolderClass *class;
/* NOTE: that it is upto the callee to CAMEL_FOLDER_REC_LOCK */
- return class->count_by_expression (folder, expression, error);
+ return class->count_by_expression (folder, expression, cancellable, error);
}
/**
* @folder: a #CamelFolder
* @expr: search expression
* @uids: array of uid's to match against.
+ * @cancellable: a #GCancellable
* @error: return location for a #GError, or %NULL
*
* Search a subset of uid's for an expression match.
camel_folder_search_by_uids (CamelFolder *folder,
const gchar *expr,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
CamelFolderClass *class;
/* NOTE: that it is upto the callee to CAMEL_FOLDER_REC_LOCK */
- matches = class->search_by_uids (folder, expr, uids, error);
+ matches = class->search_by_uids (folder, expr, uids, cancellable, error);
CAMEL_CHECK_GERROR (folder, search_by_uids, matches != NULL, error);
return matches;
gboolean (*has_search_capability)(CamelFolder *folder);
GPtrArray * (*search_by_expression) (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error);
GPtrArray * (*search_by_uids) (CamelFolder *folder,
const gchar *expression,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error);
void (*search_free) (CamelFolder *folder,
GPtrArray *result);
gboolean (*is_frozen) (CamelFolder *folder);
guint32 (*count_by_expression) (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error);
GPtrArray * (*get_uncached_uids) (CamelFolder *folder,
GPtrArray *uids,
GPtrArray * camel_folder_search_by_expression
(CamelFolder *folder,
const gchar *expr,
+ GCancellable *cancellable,
GError **error);
GPtrArray * camel_folder_search_by_uids (CamelFolder *folder,
const gchar *expr,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error);
void camel_folder_search_free (CamelFolder *folder,
GPtrArray *result);
guint32 camel_folder_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error);
CamelMessageInfo *
camel_folder_get_message_info (CamelFolder *folder,
camel_folder_get_full_name (folder));
if (expression)
- uids = camel_folder_search_by_expression (folder, expression, NULL);
+ uids = camel_folder_search_by_expression (folder, expression, cancellable, NULL);
else
uids = camel_folder_get_uids (folder);
/* Find newly added that match */
if (changes->uid_added->len > 0) {
dd (printf (" Searching for added matches '%s'\n", vf->expression));
- matches_added = camel_folder_search_by_uids (sub, vf->expression, changes->uid_added, NULL);
+ matches_added = camel_folder_search_by_uids (sub, vf->expression, changes->uid_added, cancellable, NULL);
}
/* TODO:
}
if (changed->len)
- matches_changed = camel_folder_search_by_uids (sub, vf->expression, changed, NULL);
+ matches_changed = camel_folder_search_by_uids (sub, vf->expression, changed, cancellable, NULL);
if (always_changed && always_changed->len)
- present = camel_folder_search_by_uids (sub, vf->expression, always_changed, NULL);
+ present = camel_folder_search_by_uids (sub, vf->expression, always_changed, cancellable, NULL);
}
camel_vee_folder_lock (vf, CAMEL_VEE_FOLDER_SUMMARY_LOCK);
static GPtrArray *
vee_folder_search_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
GList *node;
}
node = p->folders;
- while (node) {
+ while (node && !g_cancellable_is_cancelled (cancellable)) {
CamelFolder *f = node->data;
gint i;
gchar hash[8];
/* make sure we only search each folder once - for unmatched folder to work right */
if (g_hash_table_lookup (searched, f) == NULL) {
camel_vee_folder_hash_folder (f, hash);
- matches = camel_folder_search_by_expression (f, expr, NULL);
+ matches = camel_folder_search_by_expression (f, expr, cancellable, NULL);
if (matches) {
for (i = 0; i < matches->len; i++) {
gchar *uid = matches->pdata[i], *vuid;
vee_folder_search_by_uids (CamelFolder *folder,
const gchar *expression,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
GList *node;
expr = g_strdup_printf ("(and %s %s)", vf->expression ? vf->expression : "", expression);
node = p->folders;
- while (node) {
+ while (node && !g_cancellable_is_cancelled (cancellable)) {
CamelFolder *f = node->data;
gint i;
gchar hash[8];
g_ptr_array_add (folder_uids, uid + 8);
}
if (folder_uids->len > 0) {
- matches = camel_folder_search_by_uids (f, expr, folder_uids, error);
+ matches = camel_folder_search_by_uids (f, expr, folder_uids, cancellable, error);
if (matches) {
for (i = 0; i < matches->len; i++) {
gchar *uid = matches->pdata[i], *vuid;
static guint32
vee_folder_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
GList *node;
expr = g_strdup (expression);
node = p->folders;
- while (node) {
+ while (node && !g_cancellable_is_cancelled (cancellable)) {
CamelFolder *f = node->data;
/* make sure we only search each folder once - for unmatched folder to work right */
if (g_hash_table_lookup (searched, f) == NULL) {
- count += camel_folder_count_by_expression (f, expr, NULL);
+ count += camel_folder_count_by_expression (f, expr, cancellable, NULL);
g_hash_table_insert (searched, f, f);
}
node = g_list_next (node);
/* We take this to mean the results have not been cached.
* XXX: It will also trigger if the result set is empty. */
match == NULL) {
- match = camel_folder_search_by_expression (source, vee_folder->expression, error);
+ match = camel_folder_search_by_expression (source, vee_folder->expression, NULL, error);
if (match == NULL) /* Search failed */
return 0;
rebuilded = TRUE;
GError **error);
/* searching */
-static GPtrArray *imap_search_by_expression (CamelFolder *folder, const gchar *expression, GError **error);
-static guint32 imap_count_by_expression (CamelFolder *folder, const gchar *expression, GError **error);
-static GPtrArray *imap_search_by_uids (CamelFolder *folder, const gchar *expression, GPtrArray *uids, GError **error);
+static GPtrArray *imap_search_by_expression (CamelFolder *folder, const gchar *expression, GCancellable *cancellable, GError **error);
+static guint32 imap_count_by_expression (CamelFolder *folder, const gchar *expression, GCancellable *cancellable, GError **error);
+static GPtrArray *imap_search_by_uids (CamelFolder *folder, const gchar *expression, GPtrArray *uids, GCancellable *cancellable, GError **error);
static void imap_search_free (CamelFolder *folder, GPtrArray *uids);
static void imap_thaw (CamelFolder *folder);
static GPtrArray *
imap_search_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
CAMEL_IMAP_FOLDER_LOCK (folder, search_lock);
camel_folder_search_set_folder (imap_folder->search, folder);
- matches = camel_folder_search_search (imap_folder->search, expression, NULL, error);
+ matches = camel_folder_search_search (imap_folder->search, expression, NULL, cancellable, error);
CAMEL_IMAP_FOLDER_UNLOCK (folder, search_lock);
static guint32
imap_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
CAMEL_IMAP_FOLDER_LOCK (folder, search_lock);
camel_folder_search_set_folder (imap_folder->search, folder);
- matches = camel_folder_search_count (imap_folder->search, expression, error);
+ matches = camel_folder_search_count (imap_folder->search, expression, cancellable, error);
CAMEL_IMAP_FOLDER_UNLOCK (folder, search_lock);
imap_search_by_uids (CamelFolder *folder,
const gchar *expression,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
CAMEL_IMAP_FOLDER_LOCK (folder, search_lock);
camel_folder_search_set_folder (imap_folder->search, folder);
- matches = camel_folder_search_search (imap_folder->search, expression, uids, error);
+ matches = camel_folder_search_search (imap_folder->search, expression, uids, cancellable, error);
CAMEL_IMAP_FOLDER_UNLOCK (folder, search_lock);
imapx_search_by_uids (CamelFolder *folder,
const gchar *expression,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
CamelIMAPXFolder *ifolder = CAMEL_IMAPX_FOLDER (folder);
g_mutex_lock (ifolder->search_lock);
camel_folder_search_set_folder (ifolder->search, folder);
- matches = camel_folder_search_search (ifolder->search, expression, uids, error);
+ matches = camel_folder_search_search (ifolder->search, expression, uids, cancellable, error);
g_mutex_unlock (ifolder->search_lock);
static guint32
imapx_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelIMAPXFolder *ifolder = CAMEL_IMAPX_FOLDER (folder);
g_mutex_lock (ifolder->search_lock);
camel_folder_search_set_folder (ifolder->search, folder);
- matches = camel_folder_search_count (ifolder->search, expression, error);
+ matches = camel_folder_search_count (ifolder->search, expression, cancellable, error);
g_mutex_unlock (ifolder->search_lock);
static GPtrArray *
imapx_search_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelIMAPXFolder *ifolder = CAMEL_IMAPX_FOLDER (folder);
g_mutex_lock (ifolder->search_lock);
camel_folder_search_set_folder (ifolder->search, folder);
- matches = camel_folder_search_search (ifolder->search, expression, NULL, error);
+ matches = camel_folder_search_search (ifolder->search, expression, NULL, cancellable, error);
g_mutex_unlock (ifolder->search_lock);
static GPtrArray *
local_folder_search_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelLocalFolder *local_folder = CAMEL_LOCAL_FOLDER (folder);
camel_folder_search_set_body_index (local_folder->search, local_folder->index);
else
camel_folder_search_set_body_index (local_folder->search, NULL);
- matches = camel_folder_search_search (local_folder->search, expression, NULL, error);
+ matches = camel_folder_search_search (local_folder->search, expression, NULL, cancellable, error);
CAMEL_LOCAL_FOLDER_UNLOCK (folder, search_lock);
local_folder_search_by_uids (CamelFolder *folder,
const gchar *expression,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
CamelLocalFolder *local_folder = CAMEL_LOCAL_FOLDER (folder);
camel_folder_search_set_body_index (local_folder->search, local_folder->index);
else
camel_folder_search_set_body_index (local_folder->search, NULL);
- matches = camel_folder_search_search (local_folder->search, expression, uids, error);
+ matches = camel_folder_search_search (local_folder->search, expression, uids, cancellable, error);
CAMEL_LOCAL_FOLDER_UNLOCK (folder, search_lock);
static guint32
local_folder_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelLocalFolder *local_folder = CAMEL_LOCAL_FOLDER (folder);
camel_folder_search_set_body_index (local_folder->search, local_folder->index);
else
camel_folder_search_set_body_index (local_folder->search, NULL);
- matches = camel_folder_search_count (local_folder->search, expression, error);
+ matches = camel_folder_search_count (local_folder->search, expression, cancellable, error);
CAMEL_LOCAL_FOLDER_UNLOCK (folder, search_lock);
static GPtrArray *
nntp_folder_search_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (folder);
nntp_folder->search = camel_folder_search_new ();
camel_folder_search_set_folder (nntp_folder->search, folder);
- matches = camel_folder_search_search (nntp_folder->search, expression, NULL, error);
+ matches = camel_folder_search_search (nntp_folder->search, expression, NULL, cancellable, error);
CAMEL_NNTP_FOLDER_UNLOCK (nntp_folder, search_lock);
static guint32
nntp_folder_count_by_expression (CamelFolder *folder,
const gchar *expression,
+ GCancellable *cancellable,
GError **error)
{
CamelNNTPFolder *nntp_folder = CAMEL_NNTP_FOLDER (folder);
nntp_folder->search = camel_folder_search_new ();
camel_folder_search_set_folder (nntp_folder->search, folder);
- count = camel_folder_search_count (nntp_folder->search, expression, error);
+ count = camel_folder_search_count (nntp_folder->search, expression, cancellable, error);
CAMEL_NNTP_FOLDER_UNLOCK (nntp_folder, search_lock);
nntp_folder_search_by_uids (CamelFolder *folder,
const gchar *expression,
GPtrArray *uids,
+ GCancellable *cancellable,
GError **error)
{
CamelNNTPFolder *nntp_folder = (CamelNNTPFolder *) folder;
nntp_folder->search = camel_folder_search_new ();
camel_folder_search_set_folder (nntp_folder->search, folder);
- matches = camel_folder_search_search (nntp_folder->search, expression, uids, error);
+ matches = camel_folder_search_search (nntp_folder->search, expression, uids, cancellable, error);
CAMEL_NNTP_FOLDER_UNLOCK (folder, search_lock);
gint i;
GError *error = NULL;
- uids = camel_folder_search_by_expression (folder, expr, &error);
+ uids = camel_folder_search_by_expression (folder, expr, NULL, &error);
check (uids != NULL);
check_msg (uids->len == expected, "search %s expected %d got %d", expr, expected, uids->len);
check_msg (error == NULL, "%s", error->message);
sub = g_strdup_printf ("(match-all (header-contains \"subject\" \"message %08x subject\"))", id+i);
push ("searching for message %d\n\tusing: %s", id+i, sub);
- res = camel_folder_search_by_expression (info->folder, sub, &error);
+ res = camel_folder_search_by_expression (info->folder, sub, NULL, &error);
check_msg (error == NULL, "%s", error->message);
check_msg (res->len == 1, "res->len = %d", res->len);
g_clear_error (&error);
LIBEBOOK_REVISION=1
LIBEBOOK_AGE=3
-LIBCAMEL_CURRENT=33
+LIBCAMEL_CURRENT=34
LIBCAMEL_REVISION=0
LIBCAMEL_AGE=0