And add comment to m_mailpath() that its return value needs freeing.
+/* Return value must be free(3)'d. */
char *
m_mailpath (char *folder)
{
char *
m_mailpath (char *folder)
{
int defolder = 0, interactive = -1;
char *cp, *folder = NULL, newfolder[BUFSIZ];
char buf[BUFSIZ], **argp, **arguments;
int defolder = 0, interactive = -1;
char *cp, *folder = NULL, newfolder[BUFSIZ];
char buf[BUFSIZ], **argp, **arguments;
if (nmh_init(argv[0], 1)) { return 1; }
if (nmh_init(argv[0], 1)) { return 1; }
folder = getfolder (1);
defolder++;
}
folder = getfolder (1);
defolder++;
}
- if (strcmp (m_mailpath (folder), pwd ()) == 0)
+ fp = m_mailpath(folder);
+ if (!strcmp(fp, pwd()))
adios (NULL, "sorry, you can't remove the current working directory");
adios (NULL, "sorry, you can't remove the current working directory");
if (interactive == -1)
interactive = defolder;
if (interactive == -1)
interactive = defolder;
rmf (char *folder)
{
int i, others;
rmf (char *folder)
{
int i, others;
char *maildir;
char cur[BUFSIZ];
struct dirent *dp;
char *maildir;
char cur[BUFSIZ];
struct dirent *dp;
/* FALLTHRU */
case NOTOK:
/* FALLTHRU */
case NOTOK:
- snprintf (cur, sizeof(cur), "atr-%s-%s",
- current, m_mailpath (folder));
+ fp = m_mailpath(folder);
+ snprintf (cur, sizeof(cur), "atr-%s-%s", current, fp);
+ free(fp);
if (!context_del (cur)) {
printf ("[+%s de-referenced]\n", folder);
return OK;
if (!context_del (cur)) {
printf ("[+%s de-referenced]\n", folder);
return OK;