static CamelMessageInfo * imapx_message_info_clone (CamelFolderSummary *s, const CamelMessageInfo *mi) { CamelIMAPXMessageInfo *to; CamelFolderSummaryClass *folder_summary_class; const CamelIMAPXMessageInfo *from = (const CamelIMAPXMessageInfo *) mi; folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS ( camel_imapx_summary_parent_class); to = (CamelIMAPXMessageInfo *) folder_summary_class->message_info_clone (s, mi); if (from->server_user_flags) { CamelIMAPXMessageInfo *xfrom = (CamelIMAPXMessageInfo *) from; camel_flag_list_copy (&to->server_user_flags, &xfrom->server_user_flags); } to->server_flags = from->server_flags; /* FIXME: parent clone should do this */ to->info.content = camel_folder_summary_content_info_new (s); return (CamelMessageInfo *) to; }
static int imap4_header_load (CamelFolderSummary *summary) { CamelIMAP4Summary *imap4_summary = (CamelIMAP4Summary *) summary; if (CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->summary_header_load (summary) == -1) return -1; imap4_summary->version = g_ntohl(get_unaligned_u32(summary->filepos)); summary->filepos += 4; if (imap4_summary->version > CAMEL_IMAP4_SUMMARY_VERSION) { g_warning ("Unknown IMAP4 summary version\n"); errno = EINVAL; return -1; } if (imap4_summary->version == 2) { /* check that we have Mailing-List info */ int have_mlist; have_mlist = g_ntohl(get_unaligned_u32(summary->filepos)); summary->filepos += 4; if (have_mlist) summary->flags |= CAMEL_IMAP4_SUMMARY_HAVE_MLIST; else summary->flags ^= CAMEL_IMAP4_SUMMARY_HAVE_MLIST; } imap4_summary->uidvalidity = g_ntohl(get_unaligned_u32(summary->filepos)); summary->filepos += 4; return 0; }
static void ews_message_info_free (CamelFolderSummary *s, CamelMessageInfo *mi) { CamelEwsMessageInfo *emi = (gpointer) mi; g_free (emi->change_key); CAMEL_FOLDER_SUMMARY_CLASS (camel_ews_summary_parent_class)->message_info_free (s, mi); }
static void imapx_message_info_free (CamelFolderSummary *summary, CamelMessageInfo *mi) { CamelIMAPXMessageInfo *xinfo = (CamelIMAPXMessageInfo *) mi; camel_flag_list_free (&xinfo->server_user_flags); CAMEL_FOLDER_SUMMARY_CLASS (camel_imapx_summary_parent_class)->message_info_free (summary, mi); }
static gboolean mbox_info_set_user_tag (CamelMessageInfo *mi, const gchar *name, const gchar *value) { gint res; res = CAMEL_FOLDER_SUMMARY_CLASS (camel_mbox_summary_parent_class)->info_set_user_tag (mi, name, value); if (res) ((CamelLocalMessageInfo *) mi)->info.flags |= CAMEL_MESSAGE_FOLDER_FLAGGED; return res; }
static void camel_spool_summary_class_init(CamelSpoolSummaryClass *klass) { CamelLocalSummaryClass *lklass = (CamelLocalSummaryClass *)klass; CamelMboxSummaryClass *mklass = (CamelMboxSummaryClass *)klass; camel_spool_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS(camel_mbox_summary_get_type()); lklass->load = spool_summary_load; lklass->check = spool_summary_check; mklass->sync_full = spool_summary_sync_full; }
static CamelMessageInfo * gw_message_info_clone (CamelFolderSummary *s, const CamelMessageInfo *mi) { CamelGroupwiseMessageInfo *to; const CamelGroupwiseMessageInfo *from = (const CamelGroupwiseMessageInfo *)mi; to = (CamelGroupwiseMessageInfo *)CAMEL_FOLDER_SUMMARY_CLASS (camel_groupwise_summary_parent_class)->message_info_clone (s, mi); to->server_flags = from->server_flags; /* FIXME: parent clone should do this */ to->info.content = camel_folder_summary_content_info_new (s); return (CamelMessageInfo *)to; }
static gboolean mbox_info_set_flags (CamelMessageInfo *mi, guint32 flags, guint32 set) { /* Basically, if anything could change the Status line, presume it does */ if (((CamelMboxSummary *) mi->summary)->xstatus && (flags & (CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_FLAGGED | CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_DELETED))) { flags |= CAMEL_MESSAGE_FOLDER_XEVCHANGE | CAMEL_MESSAGE_FOLDER_FLAGGED; set |= CAMEL_MESSAGE_FOLDER_XEVCHANGE | CAMEL_MESSAGE_FOLDER_FLAGGED; } return CAMEL_FOLDER_SUMMARY_CLASS (camel_mbox_summary_parent_class)-> info_set_flags (mi, flags, set); }
static int imap4_header_save (CamelFolderSummary *summary, FILE *fout) { CamelIMAP4Summary *imap4_summary = (CamelIMAP4Summary *) summary; if (CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->summary_header_save (summary, fout) == -1) return -1; if (camel_file_util_encode_fixed_int32 (fout, CAMEL_IMAP4_SUMMARY_VERSION) == -1) return -1; if (camel_file_util_encode_fixed_int32 (fout, imap4_summary->uidvalidity) == -1) return -1; return 0; }
static void camel_groupwise_summary_class_init (CamelGroupwiseSummaryClass *klass) { CamelFolderSummaryClass *cfs_class = (CamelFolderSummaryClass *) klass; camel_groupwise_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type())); cfs_class->message_info_clone = gw_message_info_clone ; cfs_class->summary_header_load = gw_summary_header_load; cfs_class->summary_header_save = gw_summary_header_save; cfs_class->message_info_load = gw_message_info_load; cfs_class->message_info_save = gw_message_info_save; cfs_class->content_info_load = gw_content_info_load; cfs_class->content_info_save = gw_content_info_save; cfs_class->info_set_flags = gw_info_set_flags; }
static CamelMessageInfo * ews_message_info_clone (CamelFolderSummary *s, const CamelMessageInfo *mi) { CamelEwsMessageInfo *to; const CamelEwsMessageInfo *from = (const CamelEwsMessageInfo *) mi; to = (CamelEwsMessageInfo *) CAMEL_FOLDER_SUMMARY_CLASS (camel_ews_summary_parent_class)->message_info_clone (s, mi); to->server_flags = from->server_flags; to->item_type = from->item_type; to->change_key = g_strdup (from->change_key); /* FIXME: parent clone should do this */ to->info.content = camel_folder_summary_content_info_new (s); return (CamelMessageInfo *) to; }
static gboolean vee_info_set_flags (CamelMessageInfo *mi, guint32 flags, guint32 set) { gint res = FALSE; CamelVeeFolder *vf = CAMEL_VEE_FOLDER (camel_folder_summary_get_folder (mi->summary)); if (camel_debug("vfolderexp")) printf ( "Expression for vfolder '%s' is '%s'\n", camel_folder_get_full_name (CAMEL_FOLDER (vf)), g_strescape (vf->expression, "")); /* first update original message info... */ if (mi->uid) { CamelMessageInfo *rmi = camel_folder_summary_get (((CamelVeeMessageInfo *) mi)->orig_summary, mi->uid + 8); HANDLE_NULL_INFO (FALSE); /* ignore changes done in the folder itself, * unless it's a vTrash or vJunk folder */ if (!CAMEL_IS_VTRASH_FOLDER (vf)) camel_vee_folder_ignore_next_changed_event (vf, camel_folder_summary_get_folder (rmi->summary)); camel_folder_freeze (camel_folder_summary_get_folder (rmi->summary)); res = camel_message_info_set_flags (rmi, flags, set); ((CamelVeeMessageInfo *) mi)->old_flags = camel_message_info_flags (rmi); camel_folder_thaw (camel_folder_summary_get_folder (rmi->summary)); camel_message_info_free (rmi); } if (res) CAMEL_FOLDER_SUMMARY_CLASS (camel_vee_summary_parent_class)->info_set_flags (mi, flags, set); return res; }