void dbox_attachment_save_write_metadata(struct mail_save_context *ctx, string_t *str) { const ARRAY_TYPE(mail_attachment_extref) *extrefs; extrefs = index_attachment_save_get_extrefs(ctx); if (extrefs == NULL || array_count(extrefs) == 0) return; str_append_c(str, DBOX_METADATA_EXT_REF); index_attachment_append_extrefs(str, extrefs); str_append_c(str, '\n'); }
void dbox_attachment_save_write_metadata(struct mail_save_context *ctx, string_t *str) { const ARRAY_TYPE(mail_attachment_extref) *extrefs; const struct mail_attachment_extref *extref; bool add_space = FALSE; unsigned int startpos; extrefs = index_attachment_save_get_extrefs(ctx); if (extrefs == NULL || array_count(extrefs) == 0) return; str_append_c(str, DBOX_METADATA_EXT_REF); array_foreach(extrefs, extref) { if (!add_space) add_space = TRUE; else str_append_c(str, ' '); str_printfa(str, "%"PRIuUOFF_T" %"PRIuUOFF_T" ", extref->start_offset, extref->size); startpos = str_len(str); if (extref->base64_have_crlf) str_append_c(str, DBOX_ATTACHMENT_DECODE_OPTION_CRLF); if (extref->base64_blocks_per_line > 0) { str_printfa(str, "%c%u", DBOX_ATTACHMENT_DECODE_OPTION_BASE64, extref->base64_blocks_per_line * 4); } if (startpos == str_len(str)) { /* make it clear there are no options */ str_append_c(str, DBOX_ATTACHMENT_DECODE_OPTION_NONE); } str_append_c(str, ' '); str_append(str, extref->path); } str_append_c(str, '\n'); }