projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Completing the .cvsignore list(s).
[mmh]
/
uip
/
dropsbr.c
diff --git
a/uip/dropsbr.c
b/uip/dropsbr.c
index
857263a
..
2b3d020
100644
(file)
--- a/
uip/dropsbr.c
+++ b/
uip/dropsbr.c
@@
-3,20
+3,19
@@
* dropsbr.c -- create/read/manipulate mail drops
*
* $Id$
* dropsbr.c -- create/read/manipulate mail drops
*
* $Id$
+ *
+ * This code is Copyright (c) 2002, by the authors of nmh. See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
*/
#include <h/nmh.h>
*/
#include <h/nmh.h>
+#include <h/utils.h>
-#ifndef MMDFONLY
-# include <h/mh.h>
-# include <h/dropsbr.h>
-# include <zotnet/mts/mts.h>
-# include <zotnet/tws/tws.h>
-#else
-# include "dropsbr.h"
-# include "strings.h"
-# include "mmdfonly.h"
-#endif
+#include <h/mh.h>
+#include <h/dropsbr.h>
+#include <h/mts.h>
+#include <h/tws.h>
#ifdef HAVE_ERRNO_H
# include <errno.h>
#ifdef HAVE_ERRNO_H
# include <errno.h>
@@
-31,14
+30,12
@@
#include <fcntl.h>
#include <fcntl.h>
-extern int errno;
-
/*
* static prototypes
*/
static int mbx_chk_mbox (int);
static int mbx_chk_mmdf (int);
/*
* static prototypes
*/
static int mbx_chk_mbox (int);
static int mbx_chk_mmdf (int);
-static int map_open (char *, int *, int);
+static int map_open (char *, int);
/*
/*
@@
-222,14
+219,8
@@
mbx_read (FILE *fp, long pos, struct drop **drops, int noisy)
if (dp >= ep) {
register int curlen = dp - pp;
if (dp >= ep) {
register int curlen = dp - pp;
- cp = (struct drop *) realloc ((char *) pp,
+ cp = (struct drop *) mh_xrealloc ((char *) pp,
(size_t) (len += MAXFOLDER) * sizeof(*pp));
(size_t) (len += MAXFOLDER) * sizeof(*pp));
- if (cp == NULL) {
- if (noisy)
- admonish (NULL, "unable to allocate drop storage");
- free ((char *) pp);
- return 0;
- }
dp = cp + curlen, ep = (pp = cp) + len - 1;
}
}
dp = cp + curlen, ep = (pp = cp) + len - 1;
}
}
@@
-408,8
+399,7
@@
mbx_copy (char *mailbox, int mbx_style, int md, int fd,
strncpy(tmpbuffer, buffer, sizeof(tmpbuffer));
ep = "nobody@nowhere";
tp = dctime(dlocaltimenow());
strncpy(tmpbuffer, buffer, sizeof(tmpbuffer));
ep = "nobody@nowhere";
tp = dctime(dlocaltimenow());
- snprintf (buffer, sizeof(buffer), "From %s %s", ep, tp);
- strcat (buffer, tmpbuffer);
+ snprintf (buffer, sizeof(buffer), "From %s %s%s", ep, tp, tmpbuffer);
}
}
}
}
@@
-566,14
+556,20
@@
map_write (char *mailbox, int md, int id, long last, off_t start,
register struct drop *dp;
struct drop d1, d2, *rp;
register FILE *fp;
register struct drop *dp;
struct drop d1, d2, *rp;
register FILE *fp;
+ struct stat st;
- if ((fd = map_open (file = map_name (mailbox), &clear, md)) == NOTOK)
+ if ((fd = map_open (file = map_name (mailbox), md)) == NOTOK)
return NOTOK;
return NOTOK;
+ if ((fstat (fd, &st) == OK) && (st.st_size > 0))
+ clear = 0;
+ else
+ clear = 1;
+
if (!clear && map_chk (file, fd, &d1, pos, noisy)) {
unlink (file);
mbx_close (file, fd);
if (!clear && map_chk (file, fd, &d1, pos, noisy)) {
unlink (file);
mbx_close (file, fd);
- if ((fd = map_open (file, &clear, md)) == NOTOK)
+ if ((fd = map_open (file, md)) == NOTOK)
return NOTOK;
clear++;
}
return NOTOK;
clear++;
}
@@
-595,6
+591,7
@@
map_write (char *mailbox, int md, int id, long last, off_t start,
return NOTOK;
case OK:
return NOTOK;
case OK:
+ fclose (fp);
break;
default:
break;
default:
@@
-612,6
+609,7
@@
map_write (char *mailbox, int md, int id, long last, off_t start,
}
}
free ((char *) rp);
}
}
free ((char *) rp);
+ fclose (fp);
break;
}
}
break;
}
}
@@
-652,7
+650,7
@@
map_write (char *mailbox, int md, int id, long last, off_t start,
static int
static int
-map_open (char *file, int *clear, int md)
+map_open (char *file, int md)
{
mode_t mode;
struct stat st;
{
mode_t mode;
struct stat st;