diff --git a/libmuguile/mu-guile-msg.c b/libmuguile/mu-guile-msg.c index c9e4c347..b8370fcc 100644 --- a/libmuguile/mu-guile-msg.c +++ b/libmuguile/mu-guile-msg.c @@ -76,6 +76,41 @@ SCM_DEFINE (msg_make_from_file, "mu:msg:make-from-file", 1, 0, 0, #undef FUNC_NAME +SCM_DEFINE (msg_move, "mu:msg:move-to-maildir", 2, 0, 0, + (SCM MSG, SCM TARGETMDIR), + "Move message to another maildir TARGETMDIR. Note that this the " + "base-level Maildir, ie. /home/user/Maildir/archive, and must" + " _not_ include the 'cur' or 'new' part. mu_msg_move_to_maildir " + "will make sure that the copy is from new/ to new/ and cur/ to " + "cur/. Also note that the target maildir must be on the same " + "filesystem. Returns #t if it worked, #f otherwise.\n") +#define FUNC_NAME s_msg_move +{ + GError *err; + MuMsgWrapper *msgwrap; + gboolean rv; + + SCM_ASSERT (mu_guile_scm_is_msg(MSG), MSG, SCM_ARG1, FUNC_NAME); + SCM_ASSERT (scm_is_string (TARGETMDIR), TARGETMDIR, SCM_ARG2, FUNC_NAME); + + msgwrap = (MuMsgWrapper*) SCM_CDR(MSG); + + err = NULL; + rv = mu_msg_move_to_maildir (msgwrap->_msg, + scm_to_utf8_string (TARGETMDIR), &err); + if (!rv && err) { + mu_guile_g_error (FUNC_NAME, err); + g_error_free (err); + } + + return rv ? SCM_BOOL_T : SCM_BOOL_F; +} +#undef FUNC_NAME + + + + + static SCM scm_from_string_or_null (const char *str) { @@ -469,22 +504,22 @@ static void define_symbols (void) { /* message priority */ - scm_c_define ("high", scm_from_int(MU_MSG_PRIO_HIGH)); - scm_c_define ("low", scm_from_int(MU_MSG_PRIO_LOW)); - scm_c_define ("normal", scm_from_int(MU_MSG_PRIO_NORMAL)); + scm_c_define ("mu:high", scm_from_int(MU_MSG_PRIO_HIGH)); + scm_c_define ("mu:low", scm_from_int(MU_MSG_PRIO_LOW)); + scm_c_define ("mu:normal", scm_from_int(MU_MSG_PRIO_NORMAL)); /* message flags */ - scm_c_define ("new", scm_from_int(MU_MSG_FLAG_NEW)); - scm_c_define ("passed", scm_from_int(MU_MSG_FLAG_PASSED)); - scm_c_define ("replied", scm_from_int(MU_MSG_FLAG_REPLIED)); - scm_c_define ("seen", scm_from_int(MU_MSG_FLAG_SEEN)); - scm_c_define ("trashed", scm_from_int(MU_MSG_FLAG_TRASHED)); - scm_c_define ("draft", scm_from_int(MU_MSG_FLAG_DRAFT)); - scm_c_define ("flagged", scm_from_int(MU_MSG_FLAG_FLAGGED)); - scm_c_define ("unread", scm_from_int(MU_MSG_FLAG_UNREAD)); - scm_c_define ("signed", scm_from_int(MU_MSG_FLAG_SIGNED)); - scm_c_define ("encrypted", scm_from_int(MU_MSG_FLAG_ENCRYPTED)); - scm_c_define ("has-attach", scm_from_int(MU_MSG_FLAG_HAS_ATTACH)); + scm_c_define ("mu:new", scm_from_int(MU_MSG_FLAG_NEW)); + scm_c_define ("mu:passed", scm_from_int(MU_MSG_FLAG_PASSED)); + scm_c_define ("mu:replied", scm_from_int(MU_MSG_FLAG_REPLIED)); + scm_c_define ("mu:seen", scm_from_int(MU_MSG_FLAG_SEEN)); + scm_c_define ("mu:trashed", scm_from_int(MU_MSG_FLAG_TRASHED)); + scm_c_define ("mu:draft", scm_from_int(MU_MSG_FLAG_DRAFT)); + scm_c_define ("mu:flagged", scm_from_int(MU_MSG_FLAG_FLAGGED)); + scm_c_define ("mu:unread", scm_from_int(MU_MSG_FLAG_UNREAD)); + scm_c_define ("mu:signed", scm_from_int(MU_MSG_FLAG_SIGNED)); + scm_c_define ("mu:encrypted", scm_from_int(MU_MSG_FLAG_ENCRYPTED)); + scm_c_define ("mu:has-attach", scm_from_int(MU_MSG_FLAG_HAS_ATTACH)); }