summaryrefslogtreecommitdiff
path: root/mail/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/util.c')
-rw-r--r--mail/util.c53
1 files changed, 24 insertions, 29 deletions
diff --git a/mail/util.c b/mail/util.c
index 0475e9efd..f5471e77b 100644
--- a/mail/util.c
+++ b/mail/util.c
@@ -467,35 +467,21 @@ char *
util_folder_path (const char *name)
{
char *folder;
- char *tmp;
- char *p;
+ int rc;
if (mailvar_get (&folder, "folder", mailvar_type_string, 1))
return NULL;
if (!name)
return NULL;
- if (name[0] == '+')
- name++;
- if (folder[0] != '/' && folder[0] != '~')
- {
- char *home = mu_get_homedir ();
- tmp = mu_alloc (strlen (home) + 1 +
- strlen (folder) + 1 +
- strlen (name) + 1);
- sprintf (tmp, "%s/%s/%s", home, folder, name);
- }
- else
+ rc = mu_mailbox_expand_name (name, &folder);
+ if (rc)
{
- tmp = mu_alloc (strlen (folder) + 1 +
- strlen (name) + 1);
- sprintf (tmp, "%s/%s", folder, name);
+ mu_diag_funcall (MU_DIAG_ERROR, "mailbox_expand_name", name, rc);
+ return NULL;
}
- p = util_fullpath (tmp);
- free (tmp);
-
- return p;
+ return folder;
}
char *
@@ -659,6 +645,8 @@ char *
util_outfolder_name (char *str)
{
char *outfolder;
+ char *exp;
+ int rc;
if (!str)
return NULL;
@@ -667,26 +655,33 @@ util_outfolder_name (char *str)
{
case '/':
case '~':
- str = util_fullpath (str);
- break;
-
case '+':
- str = util_folder_path (str);
+ rc = mu_mailbox_expand_name (str, &exp);
+ if (rc)
+ {
+ mu_diag_funcall (MU_DIAG_ERROR, "mu_mailbox_expand_name", str, rc);
+ return NULL;
+ }
break;
default:
if (mailvar_get (&outfolder, "outfolder", mailvar_type_string, 0) == 0)
{
- char *ns = NULL;
- mu_asprintf (&ns, "%s/%s", outfolder, str);
- str = util_fullpath (ns);
- free (ns);
+ char *s = mu_make_file_name (outfolder, str);
+ rc = mu_mailbox_expand_name (s, &exp);
+ if (rc)
+ {
+ mu_diag_funcall (MU_DIAG_ERROR, "mu_mailbox_expand_name", s, rc);
+ free (s);
+ return NULL;
+ }
+ free (s);
}
break;
}
- return mu_strdup (str);
+ return exp;
}
/* Save an outgoing message. The SAVEFILE argument overrides the setting

Return to:

Send suggestions and report system problems to the System administrator.