p_delete(tgt);
close (fd);
unlink (path);
- return (-1);
+ return -1;
}
return 0;
}
static int mh_read_dir (CONTEXT* ctx) {
- return (_mh_read_dir (ctx, NULL));
+ return _mh_read_dir (ctx, NULL);
}
/* read a maildir style mailbox */
* of the main folder path from which to read messages
*/
if (_mh_read_dir (ctx, "new") == -1 || _mh_read_dir (ctx, "cur") == -1)
- return (-1);
+ return -1;
return 0;
}
p_delete(&msg->path);
close (fd);
unlink (path);
- return (-1);
+ return -1;
}
return 0;
}
+static int maildir_open_message(MESSAGE *msg, CONTEXT *ctx, int msgno)
+{
+ HEADER *cur = ctx->hdrs[msgno];
+ char path[_POSIX_PATH_MAX];
+
+ snprintf (path, sizeof (path), "%s/%s", ctx->path, cur->path);
+ if ((msg->fp = fopen(path, "r")) == NULL
+ && errno == ENOENT && ctx->magic == M_MAILDIR) {
+ msg->fp = maildir_open_find_message (ctx->path, cur->path);
+ }
+
+ if (msg->fp == NULL) {
+ mutt_perror (path);
+ return -1;
+ }
+ return 0;
+}
/*
* Commit a message to a maildir folder.
if ((dirp = opendir (ctx->path)) == NULL) {
mutt_perror (ctx->path);
- return (-1);
+ return -1;
}
/* figure out what the next message number is */
(h->env && (h->env->refs_changed || h->env->irt_changed))) {
/* when doing attachment deletion/rethreading, fall back to the MH case. */
if (mh_rewrite_message (ctx, msgno) != 0)
- return (-1);
+ return -1;
}
else {
/* we just have to rename the file. */
char *p;
if ((p = strrchr (h->path, '/')) == NULL) {
- return (-1);
+ return -1;
}
p++;
m_strcpy(newpath, sizeof(newpath), p);
if (rename (oldpath, fullpath) != 0) {
mutt_perror ("rename");
- return (-1);
+ return -1;
}
m_strreplace(&h->path, partpath);
}
- return (0);
+ return 0;
}
static int mh_sync_mailbox (CONTEXT * ctx, int unused __attribute__ ((unused)), int *index_hint)
int i, j;
#ifdef USE_HCACHE
- void *hc = NULL;
+ hcache_t *hc = NULL;
#endif /* USE_HCACHE */
if (ctx->magic == M_MH)
#ifdef USE_HCACHE
if (ctx->magic == M_MAILDIR)
- mutt_hcache_close (hc);
+ mutt_hcache_close (&hc);
#endif /* USE_HCACHE */
if (ctx->magic == M_MH)
err:
#ifdef USE_HCACHE
if (ctx->magic == M_MAILDIR)
- mutt_hcache_close (hc);
+ mutt_hcache_close (&hc);
#endif /* USE_HCACHE */
return -1;
}
access,
maildir_read_dir,
maildir_open_new_message,
+ maildir_open_message,
NULL,
maildir_check_mailbox,
NULL,
access,
mh_read_dir,
mh_open_new_message,
+ maildir_open_message,
NULL,
mh_check_mailbox,
NULL,