/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* Test vfolder. */ #include #include #include #include #include #include #include #include #include #include #include #include static void dump_message_content(CamelDataWrapper *object) { CamelDataWrapper *containee; CamelStream *stream; int parts, i; int len; int left; char buffer[128]; printf("Dumping message ..."); containee = camel_medium_get_content_object(CAMEL_MEDIUM(object)); if (containee) { char *type = gmime_content_field_get_mime_type(containee->mime_type); printf("type = %s\n", type); if (CAMEL_IS_MULTIPART(containee)) { parts = camel_multipart_get_number (CAMEL_MULTIPART(containee)); printf("multipart message, scanning contents %d parts ...\n", parts); for (i=0;i 0) { fwrite(buffer, len, 1, stdout); } printf("\n"); } else { g_warning("cannot get stream for message?"); } } g_free(type); } else { printf("no containee?\n"); } } static char * auth_callback(char *prompt, gboolean secret, CamelService *service, char *item, CamelException *ex) { printf ("auth_callback called: %s\n", prompt); return NULL; } int main (int argc, char**argv) { CamelSession *session; CamelException *ex; CamelStore *store; gchar *store_url = "vfolder:"; CamelFolder *folder; GList *n, *matches; gtk_init (&argc, &argv); camel_init (); ex = camel_exception_new (); session = camel_session_new (auth_callback); camel_provider_load (session, "../camel/providers/vee/.libs/libcamelvee.so.0", ex); if (camel_exception_get_id (ex)) { printf ("Exceptions suck: %s\n", camel_exception_get_description (ex)); return 1; } store = camel_session_get_store (session, store_url, ex); if (camel_exception_get_id (ex)) { printf ("Exception caught in camel_session_get_store\n" "Full description : %s\n", camel_exception_get_description (ex)); return -1; } printf("get folder\n"); folder = camel_store_get_folder (store, "gnome_email?(match-all (header-contains \"subject\" \"gnome\"))", ex); if (camel_exception_get_id (ex)) { printf ("Exception caught in camel_store_get_folder\n" "Full description : %s\n", camel_exception_get_description (ex)); return -1; } /* setup searched folders */ { CamelFolder *subfolder; CamelStore *substore; substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Inbox", ex); subfolder = camel_store_get_folder(substore, "mbox", ex); camel_folder_open (subfolder, FOLDER_OPEN_READ, ex); camel_vee_folder_add_folder(folder, subfolder); if (camel_exception_get_id (ex)) { printf ("Exception caught in camel_store_get_folder\n" "Full description : %s\n", camel_exception_get_description (ex)); return -1; } substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Outbox", ex); subfolder = camel_store_get_folder(substore, "mbox", ex); camel_folder_open (subfolder, FOLDER_OPEN_READ, ex); camel_vee_folder_add_folder(folder, subfolder); if (camel_exception_get_id (ex)) { printf ("Exception caught in camel_store_get_folder\n" "Full description : %s\n", camel_exception_get_description (ex)); return -1; } } printf("open folder\n"); camel_folder_open (folder, FOLDER_OPEN_READ, ex); if (camel_exception_get_id (ex)) { printf ("Exception caught when trying to open the folder\n" "Full description : %s\n", camel_exception_get_description (ex)); return -1; } printf("vfolder's uid's:\n"); n = camel_folder_get_uid_list(folder, ex); while (n) { CamelMimeMessage *m; printf("uid: %s\n", (char *) n->data); m = camel_folder_get_message_by_uid(folder, n->data, ex); if (m) { dump_message_content(m); gtk_object_unref(m); } n = g_list_next(n); } camel_folder_close (folder, TRUE, ex); gtk_object_unref((GtkObject *)folder); return 0; }