* mu-guile-message.c: use mu_msg_part_save_temp, rename some symbols

This commit is contained in:
djcb 2012-01-15 14:37:30 +02:00
parent 3b07a328a5
commit 799e3e150a
1 changed files with 46 additions and 57 deletions

View File

@ -359,7 +359,7 @@ SCM_DEFINE_PUBLIC (get_contacts, "mu:get-contacts", 2, 0, 0,
struct _AttInfo {
SCM attlist;
gboolean files_only;
gboolean attachments_only;
};
typedef struct _AttInfo AttInfo;
@ -371,7 +371,8 @@ each_part (MuMsg *msg, MuMsgPart *part, AttInfo *attinfo)
if (!part->type)
return;
if (attinfo->files_only && !part->file_name)
if (attinfo->attachments_only &&
!mu_msg_part_looks_like_attachment (part, TRUE))
return;
mime_type = g_strdup_printf ("%s/%s", part->type, part->subtype);
@ -401,20 +402,20 @@ each_part (MuMsg *msg, MuMsgPart *part, AttInfo *attinfo)
SCM_DEFINE_PUBLIC (get_parts, "mu:get-parts", 1, 1, 0,
(SCM MSG, SCM FILES_ONLY),
"Get the list of mime-parts for MSG. If FILES_ONLY is #t, only"
"get parts that file names. The resulting list has elements "
"which are list of the form (index name mime-type size).\n")
(SCM MSG, SCM ATTS_ONLY),
"Get the list of mime-parts for MSG. If ATTS_ONLY is #t, only"
"get parts that are (look like) attachments. The resulting list has "
"elements which are list of the form (index name mime-type size).\n")
#define FUNC_NAME s_get_parts
{
MuMsgWrapper *msgwrap;
AttInfo attinfo;
SCM_ASSERT (mu_guile_scm_is_msg(MSG), MSG, SCM_ARG1, FUNC_NAME);
SCM_ASSERT (scm_is_bool(FILES_ONLY), FILES_ONLY,SCM_ARG2, FUNC_NAME);
SCM_ASSERT (scm_is_bool(ATTS_ONLY), ATTS_ONLY, SCM_ARG2, FUNC_NAME);
attinfo.attlist = SCM_EOL; /* empty list */
attinfo.files_only = FILES_ONLY == SCM_BOOL_T ? TRUE : FALSE;
attinfo.attlist = SCM_EOL; /* empty list */
attinfo.attachments_only = ATTS_ONLY == SCM_BOOL_T ? TRUE : FALSE;
msgwrap = (MuMsgWrapper*) SCM_CDR(MSG);
mu_msg_part_foreach (msgwrap->_msg,
@ -436,10 +437,9 @@ SCM_DEFINE_PUBLIC (save_part, "mu:save-part", 2, 0, 0,
#define FUNC_NAME s_save_part
{
GError *err;
gchar *filepath, *msgpath;
gchar *attachpath, *msgpath;
unsigned index;
MuMsg *msg;
gboolean rv;
SCM rv_scm;
SCM_ASSERT (scm_is_string(MSGPATH), MSGPATH, SCM_ARG1, FUNC_NAME);
@ -456,30 +456,19 @@ SCM_DEFINE_PUBLIC (save_part, "mu:save-part", 2, 0, 0,
goto leave;
}
filepath = mu_msg_part_filepath_cache (msg, index);
if (!filepath) {
rv_scm = mu_guile_error (FUNC_NAME, 0, "could not get filepath",
SCM_UNSPECIFIED);
attachpath = mu_msg_part_save_temp (msg, index, &err);
if (!attachpath) {
rv_scm = mu_guile_g_error (FUNC_NAME, err);
goto leave;
}
rv = mu_msg_part_save (msg, filepath, index, FALSE, TRUE, &err);
if (!rv) {
rv_scm = err ? mu_guile_g_error (FUNC_NAME, err) :
mu_guile_error (FUNC_NAME, 0, "could not save part",
SCM_UNSPECIFIED);
goto leave;
}
rv_scm = mu_guile_scm_from_str (filepath);
rv_scm = mu_guile_scm_from_str (attachpath);
leave:
mu_msg_unref (msg);
g_clear_error (&err);
g_free (filepath);
free (msgpath);
g_free (attachpath);
return rv_scm;
}
#undef FUNC_NAME
@ -519,38 +508,38 @@ static struct {
unsigned val;
} SYMPAIRS[] = {
{ "mu:high", MU_MSG_PRIO_HIGH },
{ "mu:low", MU_MSG_PRIO_LOW },
{ "mu:normal", MU_MSG_PRIO_NORMAL },
{ "mu:prio:high", MU_MSG_PRIO_HIGH },
{ "mu:prio:low", MU_MSG_PRIO_LOW },
{ "mu:prio:normal", MU_MSG_PRIO_NORMAL },
{ "mu:new", MU_FLAG_NEW },
{ "mu:passed", MU_FLAG_PASSED },
{ "mu:replied", MU_FLAG_REPLIED },
{ "mu:seen", MU_FLAG_SEEN },
{ "mu:trashed", MU_FLAG_TRASHED },
{ "mu:draft", MU_FLAG_DRAFT },
{ "mu:flagged", MU_FLAG_FLAGGED },
{ "mu:signed", MU_FLAG_SIGNED },
{ "mu:encrypted", MU_FLAG_ENCRYPTED },
{ "mu:has-attach", MU_FLAG_HAS_ATTACH },
{ "mu:unread", MU_FLAG_UNREAD },
{ "mu:flag:new", MU_FLAG_NEW },
{ "mu:flag:passed", MU_FLAG_PASSED },
{ "mu:flag:replied", MU_FLAG_REPLIED },
{ "mu:flag:seen", MU_FLAG_SEEN },
{ "mu:flag:trashed", MU_FLAG_TRASHED },
{ "mu:flag:draft", MU_FLAG_DRAFT },
{ "mu:flag:flagged", MU_FLAG_FLAGGED },
{ "mu:flag:signed", MU_FLAG_SIGNED },
{ "mu:flag:encrypted", MU_FLAG_ENCRYPTED },
{ "mu:flag:has-attach", MU_FLAG_HAS_ATTACH },
{ "mu:flag:unread", MU_FLAG_UNREAD },
{ "mu:bcc", MU_MSG_FIELD_ID_BCC },
{ "mu:body-html", MU_MSG_FIELD_ID_BODY_HTML },
{ "mu:body-txt", MU_MSG_FIELD_ID_BODY_TEXT },
{ "mu:cc", MU_MSG_FIELD_ID_CC },
{ "mu:date", MU_MSG_FIELD_ID_DATE },
{ "mu:flags", MU_MSG_FIELD_ID_FLAGS },
{ "mu:from", MU_MSG_FIELD_ID_FROM },
{ "mu:maildir", MU_MSG_FIELD_ID_MAILDIR },
{ "mu:message-id", MU_MSG_FIELD_ID_MSGID },
{ "mu:path", MU_MSG_FIELD_ID_PATH },
{ "mu:prio", MU_MSG_FIELD_ID_PRIO },
{ "mu:refs", MU_MSG_FIELD_ID_REFS },
{ "mu:size", MU_MSG_FIELD_ID_SIZE },
{ "mu:subject", MU_MSG_FIELD_ID_SUBJECT },
{ "mu:tags", MU_MSG_FIELD_ID_TAGS },
{ "mu:to", MU_MSG_FIELD_ID_TO },
{ "mu:field:bcc", MU_MSG_FIELD_ID_BCC },
{ "mu:field:body-html", MU_MSG_FIELD_ID_BODY_HTML },
{ "mu:field:body-txt", MU_MSG_FIELD_ID_BODY_TEXT },
{ "mu:field:cc", MU_MSG_FIELD_ID_CC },
{ "mu:field:date", MU_MSG_FIELD_ID_DATE },
{ "mu:field:flags", MU_MSG_FIELD_ID_FLAGS },
{ "mu:field:from", MU_MSG_FIELD_ID_FROM },
{ "mu:field:maildir", MU_MSG_FIELD_ID_MAILDIR },
{ "mu:field:message-id",MU_MSG_FIELD_ID_MSGID },
{ "mu:field:path", MU_MSG_FIELD_ID_PATH },
{ "mu:field:prio", MU_MSG_FIELD_ID_PRIO },
{ "mu:field:refs", MU_MSG_FIELD_ID_REFS },
{ "mu:field:size", MU_MSG_FIELD_ID_SIZE },
{ "mu:field:subject", MU_MSG_FIELD_ID_SUBJECT },
{ "mu:field:tags", MU_MSG_FIELD_ID_TAGS },
{ "mu:field:to", MU_MSG_FIELD_ID_TO },
};