projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merge OPS that do not need to be split anymore.
[apps/madmutt.git]
/
mh.c
diff --git
a/mh.c
b/mh.c
index
63c7bd7
..
f40bbd1
100644
(file)
--- a/
mh.c
+++ b/
mh.c
@@
-13,14
+13,10
@@
* mailboxes.
*/
* mailboxes.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
+#include <utime.h>
-#include <lib-lib/mem.h>
-#include <lib-lib/str.h>
-#include <lib-lib/macros.h>
-#include <lib-lib/file.h>
+#include <lib-ui/curses.h>
#include "mutt.h"
#include "mx.h"
#include "mutt.h"
#include "mx.h"
@@
-32,26
+28,6
@@
#include "thread.h"
#include "hcache.h"
#include "thread.h"
#include "hcache.h"
-#include "lib/debug.h"
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <limits.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <errno.h>
-#include <string.h>
-#include <utime.h>
-
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
struct maildir {
HEADER *h;
char *canon_fname;
struct maildir {
HEADER *h;
char *canon_fname;
@@
-142,7
+118,7
@@
static void mh_read_sequences (struct mh_sequences *mhs, const char *path)
int line = 1;
char *buff = NULL;
char *t;
int line = 1;
char *buff = NULL;
char *t;
- size_t sz = 0;
+ s
s
ize_t sz = 0;
short f;
int first, last;
short f;
int first, last;
@@
-265,7
+241,7
@@
static void mhs_write_one_sequence (FILE * fp, struct mh_sequences *mhs,
/* XXX - we don't currently remove deleted messages from sequences we don't know. Should we? */
/* XXX - we don't currently remove deleted messages from sequences we don't know. Should we? */
-void mh_update_sequences (CONTEXT * ctx)
+
static
void mh_update_sequences (CONTEXT * ctx)
{
FILE *ofp, *nfp;
{
FILE *ofp, *nfp;
@@
-273,7
+249,7
@@
void mh_update_sequences (CONTEXT * ctx)
char *tmpfname;
char *buff = NULL;
char *p;
char *tmpfname;
char *buff = NULL;
char *p;
- size_t s;
+ s
s
ize_t s;
int l = 0;
int i;
int l = 0;
int i;
@@
-384,7
+360,7
@@
static void mh_sequences_add_one (CONTEXT * ctx, int n, short unseen,
char *buff = NULL;
int line;
char *buff = NULL;
int line;
- size_t sz;
+ s
s
ize_t sz;
if (mh_mkstemp (ctx, &nfp, &tmpfname) == -1)
return;
if (mh_mkstemp (ctx, &nfp, &tmpfname) == -1)
return;
@@
-463,7
+439,7
@@
static void maildir_free_entry (struct maildir **md)
p_delete(&(*md)->canon_fname);
if ((*md)->h)
p_delete(&(*md)->canon_fname);
if ((*md)->h)
-
mutt_free_header
(&(*md)->h);
+
header_delete
(&(*md)->h);
p_delete(md);
}
p_delete(md);
}
@@
-567,7
+543,7
@@
static HEADER *maildir_parse_message (int magic, const char *fname,
if ((f = fopen (fname, "r")) != NULL) {
if (!h)
if ((f = fopen (fname, "r")) != NULL) {
if (!h)
- h =
mutt_new_header
();
+ h =
header_new
();
h->env = mutt_read_rfc822_header (f, h, 0, 0);
fstat (fileno (f), &st);
h->env = mutt_read_rfc822_header (f, h, 0, 0);
fstat (fileno (f), &st);
@@
-610,7
+586,7
@@
static HEADER *maildir_parse_message (int magic, const char *fname,
static int maildir_parse_entry (CONTEXT * ctx, struct maildir ***last,
const char *subdir, const char *fname,
static int maildir_parse_entry (CONTEXT * ctx, struct maildir ***last,
const char *subdir, const char *fname,
- int *count, int is_old, ino_t inode)
+ int *count, int is_old, ino_t inode
__attribute__ ((unused))
)
{
struct maildir *entry;
HEADER *h = NULL;
{
struct maildir *entry;
HEADER *h = NULL;
@@
-624,7
+600,7
@@
static int maildir_parse_entry (CONTEXT * ctx, struct maildir ***last,
if (ctx->magic == M_MH)
h = maildir_parse_message (ctx->magic, buf, is_old, NULL);
else {
if (ctx->magic == M_MH)
h = maildir_parse_message (ctx->magic, buf, is_old, NULL);
else {
- h =
mutt_new_header
();
+ h =
header_new
();
h->old = is_old;
maildir_parse_flags (h, buf);
}
h->old = is_old;
maildir_parse_flags (h, buf);
}
@@
-697,7
+673,6
@@
static int maildir_parse_dir (CONTEXT * ctx, struct maildir ***last,
/* FOO - really ignore the return value? */
/* FOO - really ignore the return value? */
- debug_print (2, ("parsing %s\n", de->d_name));
maildir_parse_entry (ctx, last, subdir, de->d_name, count, is_old,
#if HAVE_DIRENT_D_INO
de->d_ino
maildir_parse_entry (ctx, last, subdir, de->d_name, count, is_old,
#if HAVE_DIRENT_D_INO
de->d_ino
@@
-717,12
+692,7
@@
static int maildir_add_to_context (CONTEXT * ctx, struct maildir *md)
while (md) {
while (md) {
- debug_print (2, ("considering %s\n", NONULL (md->canon_fname)));
-
if (md->h) {
if (md->h) {
- debug_print (2, ("flags: %s%s%s%s%s\n", md->h->flagged ? "f" : "",
- md->h->deleted ? "D" : "", md->h->replied ? "r" : "",
- md->h->old ? "O" : "", md->h->read ? "R" : ""));
if (ctx->msgcount == ctx->hdrmax)
mx_alloc_memory (ctx);
if (ctx->msgcount == ctx->hdrmax)
mx_alloc_memory (ctx);
@@
-755,11
+725,9
@@
static int maildir_move_to_context (CONTEXT * ctx, struct maildir **md)
}
#ifdef USE_HCACHE
}
#ifdef USE_HCACHE
-static size_t maildir_hcache_keylen (const char *fn)
+static s
s
ize_t maildir_hcache_keylen (const char *fn)
{
{
- const char *p = strchr (fn, ':');
-
- return p ? (size_t) (p - fn) : m_strlen(fn);
+ return m_strchrnul(fn, ':') - fn;
}
#endif
}
#endif
@@
-767,7
+735,7
@@
static size_t maildir_hcache_keylen (const char *fn)
* This function does the second parsing pass for a maildir-style
* folder.
*/
* This function does the second parsing pass for a maildir-style
* folder.
*/
-void maildir_delayed_parsing (CONTEXT * ctx, struct maildir *md)
+
static
void maildir_delayed_parsing (CONTEXT * ctx, struct maildir *md)
{
struct maildir *p;
char fn[_POSIX_PATH_MAX];
{
struct maildir *p;
char fn[_POSIX_PATH_MAX];
@@
-819,7
+787,7
@@
void maildir_delayed_parsing (CONTEXT * ctx, struct maildir *md)
#endif
}
else
#endif
}
else
-
mutt_free_header
(&p->h);
+
header_delete
(&p->h);
#ifdef USE_HCACHE
p_delete(&data);
#endif
#ifdef USE_HCACHE
p_delete(&data);
#endif
@@
-887,17
+855,17
@@
static int maildir_read_dir (CONTEXT * ctx)
* Open a new (temporary) message in an MH folder.
*/
* Open a new (temporary) message in an MH folder.
*/
-static int mh_open_new_message (MESSAGE * msg, CONTEXT * dest, HEADER * hdr)
+static int mh_open_new_message (MESSAGE * msg, CONTEXT * dest, HEADER * hdr
__attribute__ ((unused))
)
{
return mh_mkstemp (dest, &msg->fp, &msg->path);
}
{
return mh_mkstemp (dest, &msg->fp, &msg->path);
}
-int ch_compar (const void *a, const void *b)
+
static
int ch_compar (const void *a, const void *b)
{
return (int) (*((const char *) a) - *((const char *) b));
}
{
return (int) (*((const char *) a) - *((const char *) b));
}
-static void maildir_flags (char *dest, size_t destlen, HEADER * hdr)
+static void maildir_flags (char *dest, s
s
ize_t destlen, HEADER * hdr)
{
*dest = '\0';
{
*dest = '\0';
@@
-964,17
+932,13
@@
static int maildir_open_new_message (MESSAGE * msg, CONTEXT * dest, HEADER * hdr
dest->path, subdir, (long) time (NULL),
(unsigned int) getpid (), Counter++, NONULL (Hostname), suffix);
dest->path, subdir, (long) time (NULL),
(unsigned int) getpid (), Counter++, NONULL (Hostname), suffix);
- debug_print (2, ("trying %s.\n", path));
-
umask (Umask);
if ((fd = open (path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) {
if (errno != EEXIST) {
mutt_perror (path);
return -1;
}
umask (Umask);
if ((fd = open (path, O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) {
if (errno != EEXIST) {
mutt_perror (path);
return -1;
}
- }
- else {
- debug_print (2, ("success.\n"));
+ } else {
msg->path = m_strdup(path);
break;
}
msg->path = m_strdup(path);
break;
}
@@
-1041,8
+1005,6
@@
static int maildir_commit_message (MESSAGE * msg, CONTEXT * ctx, HEADER * hdr)
NONULL (Hostname), suffix);
snprintf (full, _POSIX_PATH_MAX, "%s/%s", ctx->path, path);
NONULL (Hostname), suffix);
snprintf (full, _POSIX_PATH_MAX, "%s/%s", ctx->path, path);
- debug_print (2, ("renaming %s to %s.\n", msg->path, full));
-
if (safe_rename (msg->path, full) == 0) {
if (hdr)
m_strreplace(&hdr->path, path);
if (safe_rename (msg->path, full) == 0) {
if (hdr)
m_strreplace(&hdr->path, path);
@@
-1222,7
+1184,7
@@
static int mh_rewrite_message (CONTEXT * ctx, int msgno)
h->lines = old_hdr_lines;
}
h->lines = old_hdr_lines;
}
-
mutt_free_body
(&h->content->parts);
+
body_list_wipe
(&h->content->parts);
return rc;
}
return rc;
}
@@
-1259,7
+1221,6
@@
static int maildir_sync_message (CONTEXT * ctx, int msgno)
char *p;
if ((p = strrchr (h->path, '/')) == NULL) {
char *p;
if ((p = strrchr (h->path, '/')) == NULL) {
- debug_print (1, ("%s: unable to find subdir!\n", h->path));
return (-1);
}
p++;
return (-1);
}
p++;
@@
-1293,7
+1254,7
@@
static int maildir_sync_message (CONTEXT * ctx, int msgno)
return (0);
}
return (0);
}
-static int mh_sync_mailbox (CONTEXT * ctx, int unused, int *index_hint)
+static int mh_sync_mailbox (CONTEXT * ctx, int unused
__attribute__ ((unused))
, int *index_hint)
{
char path[_POSIX_PATH_MAX], tmp[_POSIX_PATH_MAX];
int i, j;
{
char path[_POSIX_PATH_MAX], tmp[_POSIX_PATH_MAX];
int i, j;
@@
-1386,7
+1347,7
@@
err:
return -1;
}
return -1;
}
-static char *maildir_canon_filename (char *dest, const char *src, size_t l)
+static char *maildir_canon_filename (char *dest, const char *src, s
s
ize_t l)
{
char *t, *u;
{
char *t, *u;
@@
-1468,7
+1429,7
@@
static void maildir_update_flags (CONTEXT * ctx, HEADER * o, HEADER * n)
* either subdirectory differently, as mail could be copied directly into
* the cur directory from another agent.
*/
* either subdirectory differently, as mail could be copied directly into
* the cur directory from another agent.
*/
-static int maildir_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
+static int maildir_check_mailbox (CONTEXT * ctx, int *index_hint, int unused
__attribute__ ((unused))
)
{
struct stat st_new; /* status of the "new" subdirectory */
struct stat st_cur; /* status of the "cur" subdirectory */
{
struct stat st_new; /* status of the "new" subdirectory */
struct stat st_cur; /* status of the "cur" subdirectory */
@@
-1555,7
+1516,7
@@
static int maildir_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
ctx->hdrs[i]->trash = p->h->trash;
/* this is a duplicate of an existing header, so remove it */
ctx->hdrs[i]->trash = p->h->trash;
/* this is a duplicate of an existing header, so remove it */
-
mutt_free_header
(&p->h);
+
header_delete
(&p->h);
}
/* This message was not in the list of messages we just scanned.
* Check to see if we have enough information to know if the
}
/* This message was not in the list of messages we just scanned.
* Check to see if we have enough information to know if the
@@
-1605,7
+1566,7
@@
static int maildir_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
*
*/
*
*/
-static int mh_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
+static int mh_check_mailbox (CONTEXT * ctx, int *index_hint, int unused
__attribute__ ((unused))
)
{
char buf[_POSIX_PATH_MAX];
struct stat st, st_cur;
{
char buf[_POSIX_PATH_MAX];
struct stat st, st_cur;
@@
-1674,7
+1635,7
@@
static int mh_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
if (!ctx->hdrs[i]->changed)
maildir_update_flags (ctx, ctx->hdrs[i], p->h);
if (!ctx->hdrs[i]->changed)
maildir_update_flags (ctx, ctx->hdrs[i], p->h);
-
mutt_free_header
(&p->h);
+
header_delete
(&p->h);
}
else /* message has disappeared */
occult = 1;
}
else /* message has disappeared */
occult = 1;
@@
-1703,8
+1664,8
@@
static int mh_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
* then again, it's called rarely.
*/
* then again, it's called rarely.
*/
-FILE *_maildir_open_find_message (const char *folder, const char *unique,
- const char *subfolder)
+
static
FILE *_maildir_open_find_message (const char *folder, const char *unique,
+
const char *subfolder)
{
char dir[_POSIX_PATH_MAX];
char tunique[_POSIX_PATH_MAX];
{
char dir[_POSIX_PATH_MAX];
char tunique[_POSIX_PATH_MAX];
@@
-1788,7
+1749,7
@@
static int maildir_check_empty (const char *path)
DIR *dp;
struct dirent *de;
int r = 1; /* assume empty until we find a message */
DIR *dp;
struct dirent *de;
int r = 1; /* assume empty until we find a message */
- char realpath[_POSIX_PATH_MAX];
+ char
f
realpath[_POSIX_PATH_MAX];
int iter = 0;
/* Strategy here is to look for any file not beginning with a period */
int iter = 0;
/* Strategy here is to look for any file not beginning with a period */
@@
-1797,9
+1758,9
@@
static int maildir_check_empty (const char *path)
/* we do "cur" on the first iteration since its more likely that we'll
* find old messages without having to scan both subdirs
*/
/* we do "cur" on the first iteration since its more likely that we'll
* find old messages without having to scan both subdirs
*/
- snprintf (
realpath, sizeof (
realpath), "%s/%s", path,
+ snprintf (
frealpath, sizeof (f
realpath), "%s/%s", path,
iter == 0 ? "cur" : "new");
iter == 0 ? "cur" : "new");
- if ((dp = opendir (realpath)) == NULL)
+ if ((dp = opendir (
f
realpath)) == NULL)
return -1;
while ((de = readdir (dp))) {
if (*de->d_name != '.') {
return -1;
while ((de = readdir (dp))) {
if (*de->d_name != '.') {
@@
-1820,7
+1781,7
@@
static int maildir_check_empty (const char *path)
* 0 if there are messages in the mailbox
* -1 on error
*/
* 0 if there are messages in the mailbox
* -1 on error
*/
-int mh_check_empty (const char *path)
+
static
int mh_check_empty (const char *path)
{
DIR *dp;
struct dirent *de;
{
DIR *dp;
struct dirent *de;