From aba27fbc03e26cf04ed7d9204968317e69112640 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 14 Feb 2003 21:44:28 +0000 Subject: Added a (get-size ) function to fix bug #38073. (search_get_size): 2003-02-14 Jeffrey Stedfast * camel-folder-search.c: Added a (get-size ) function to fix bug #38073. (search_get_size): Implemented. svn path=/trunk/; revision=19915 --- camel/ChangeLog | 6 ++++++ camel/camel-folder-search.c | 24 +++++++++++++++++++++++- camel/camel-folder-search.h | 3 +++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/camel/ChangeLog b/camel/ChangeLog index e95b59616e..8e4640fb72 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,9 @@ +2003-02-14 Jeffrey Stedfast + + * camel-folder-search.c: Added a (get-size ) function to fix bug + #38073. + (search_get_size): Implemented. + 2003-02-14 Jeffrey Stedfast * camel-url-scanner.c (url_scanner_table_init): Mark chars with diff --git a/camel/camel-folder-search.c b/camel/camel-folder-search.c index 92b73e6f59..ef6dfc8564 100644 --- a/camel/camel-folder-search.c +++ b/camel/camel-folder-search.c @@ -70,6 +70,7 @@ static ESExpResult *search_system_flag(struct _ESExp *f, int argc, struct _ESExp static ESExpResult *search_get_sent_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); static ESExpResult *search_get_received_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); static ESExpResult *search_get_current_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); +static ESExpResult *search_get_size(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); static ESExpResult *search_uid(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); static ESExpResult *search_dummy(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search); @@ -100,6 +101,7 @@ camel_folder_search_class_init (CamelFolderSearchClass *klass) klass->get_sent_date = search_get_sent_date; klass->get_received_date = search_get_received_date; klass->get_current_date = search_get_current_date; + klass->get_size = search_get_size; klass->uid = search_uid; } @@ -199,6 +201,7 @@ struct { { "get-sent-date", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_sent_date), 1 }, { "get-received-date", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_received_date), 1 }, { "get-current-date", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_current_date), 1 }, + { "get-size", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, get_size), 1 }, { "uid", CAMEL_STRUCT_OFFSET(CamelFolderSearchClass, uid), 1 }, }; @@ -241,7 +244,7 @@ camel_folder_search_construct (CamelFolderSearch *search) CamelFolderSearch * camel_folder_search_new (void) { - CamelFolderSearch *new = CAMEL_FOLDER_SEARCH ( camel_object_new (camel_folder_search_get_type ())); + CamelFolderSearch *new = CAMEL_FOLDER_SEARCH (camel_object_new (camel_folder_search_get_type ())); camel_folder_search_construct(new); return new; @@ -1123,6 +1126,25 @@ search_get_current_date(struct _ESExp *f, int argc, struct _ESExpResult **argv, return r; } +static ESExpResult * +search_get_size (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s) +{ + ESExpResult *r; + + r(printf("executing get-size\n")); + + /* are we inside a match-all? */ + if (s->current) { + r = e_sexp_result_new (f, ESEXP_RES_INT); + r->value.number = s->current->size / 1024; + } else { + r = e_sexp_result_new (f, ESEXP_RES_ARRAY_PTR); + r->value.ptrarray = g_ptr_array_new (); + } + + return r; +} + static ESExpResult * search_uid(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *search) { diff --git a/camel/camel-folder-search.h b/camel/camel-folder-search.h index 701178b0b4..128e97aae9 100644 --- a/camel/camel-folder-search.h +++ b/camel/camel-folder-search.h @@ -108,6 +108,9 @@ struct _CamelFolderSearchClass { /* (get-current-date) Retrieve 'now' as a time_t */ ESExpResult * (*get_current_date)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); + /* (get-size) Retrieve message size as an int (in kilobytes) */ + ESExpResult * (*get_size)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); + /* (uid "uid" ...) True if the uid is in the list */ ESExpResult * (*uid)(struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFolderSearch *s); }; -- cgit