* mu-msg: clearup error handling in mu_msg_move_to_maildir
This commit is contained in:
21
src/mu-msg.c
21
src/mu-msg.c
@ -732,23 +732,30 @@ mu_msg_is_readable (MuMsg *self)
|
|||||||
* that we got
|
* that we got
|
||||||
*/
|
*/
|
||||||
char*
|
char*
|
||||||
get_target_mdir (MuMsg *msg, const char *maildir)
|
get_target_mdir (MuMsg *msg, const char *maildir, GError **err)
|
||||||
{
|
{
|
||||||
char *rootmaildir, *rv;
|
char *rootmaildir, *rv;
|
||||||
|
|
||||||
|
if (!mu_msg_get_maildir(msg)) {
|
||||||
|
g_set_error (err, 0, MU_ERROR_GMIME,
|
||||||
|
"message misses maildir "
|
||||||
|
"field, so cannot be moved");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
rootmaildir = mu_maildir_get_maildir_from_path (mu_msg_get_path(msg));
|
rootmaildir = mu_maildir_get_maildir_from_path (mu_msg_get_path(msg));
|
||||||
if (!rootmaildir)
|
if (!rootmaildir)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!g_str_has_suffix (rootmaildir, mu_msg_get_maildir(msg))) {
|
if (!g_str_has_suffix (rootmaildir, mu_msg_get_maildir(msg))) {
|
||||||
g_warning ("path is %s, but maildir is %s",
|
g_set_error (err, 0, MU_ERROR_FILE,
|
||||||
mu_msg_get_path (msg), mu_msg_get_maildir(msg));
|
"path is %s, but maildir is %s",
|
||||||
|
mu_msg_get_path(msg), mu_msg_get_maildir(msg));
|
||||||
g_free (rootmaildir);
|
g_free (rootmaildir);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rootmaildir[strlen(rootmaildir) - strlen (mu_msg_get_maildir(msg))] = '\0';
|
rootmaildir[strlen(rootmaildir) - strlen (mu_msg_get_maildir(msg))] = '\0';
|
||||||
|
|
||||||
rv = g_strconcat (rootmaildir, maildir, NULL);
|
rv = g_strconcat (rootmaildir, maildir, NULL);
|
||||||
g_free (rootmaildir);
|
g_free (rootmaildir);
|
||||||
|
|
||||||
@ -773,11 +780,9 @@ mu_msg_move_to_maildir (MuMsg *self, const char *maildir,
|
|||||||
g_return_val_if_fail (self, FALSE);
|
g_return_val_if_fail (self, FALSE);
|
||||||
g_return_val_if_fail (maildir, FALSE); /* i.e. "/inbox" */
|
g_return_val_if_fail (maildir, FALSE); /* i.e. "/inbox" */
|
||||||
|
|
||||||
targetmdir = get_target_mdir (self, maildir);
|
targetmdir = get_target_mdir (self, maildir, err);
|
||||||
if (!targetmdir) {
|
if (!targetmdir)
|
||||||
g_set_error (err, 0, MU_ERROR, "could not determine target maildir");
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
newfullpath = mu_maildir_move_message (mu_msg_get_path (self),
|
newfullpath = mu_maildir_move_message (mu_msg_get_path (self),
|
||||||
targetmdir, flags,
|
targetmdir, flags,
|
||||||
|
|||||||
Reference in New Issue
Block a user