-/* $Cambridge: exim/src/src/transports/tf_maildir.c,v 1.10 2007/01/08 10:50:20 ph10 Exp $ */
-
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2007 */
+/* Copyright (c) University of Cambridge 1995 - 2009 */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions in support of the use of maildirsize files for handling quotas in
{
int i;
struct stat statbuf;
-char *subdirs[] = { "/tmp", "/new", "/cur" };
+const char *subdirs[] = { "/tmp", "/new", "/cur" };
DEBUG(D_transport)
debug_printf("ensuring maildir directories exist in %s\n", path);
for (i = 0; i < 4; i++)
{
int j;
- uschar *dir, *mdir;
+ const uschar *dir, *mdir;
if (i == 0)
{
- mdir = US"";
+ mdir = CUS"";
dir = path;
}
else
{
- mdir = US subdirs[i-1];
+ mdir = CUS subdirs[i-1];
dir = mdir + 1;
}
}
else
{
- int fd = Uopen(fname, O_WRONLY|O_APPEND|O_CREAT, 0);
+ int fd = Uopen(fname, O_WRONLY|O_APPEND|O_CREAT, 0600);
if (fd < 0)
{
addr->message = string_sprintf("appendfile: failed to create "
filename = string_sprintf("%s/maildirsize", path);
DEBUG(D_transport) debug_printf("looking for maildirsize in %s\n", path);
-fd = Uopen(filename, O_RDWR|O_APPEND, 0);
+fd = Uopen(filename, O_RDWR|O_APPEND, ob->mode ? ob->mode : 0600);
if (fd < 0)
{
if (errno != ENOENT) return -1;
tempname = string_sprintf("%s/tmp/%lu.H%luP%lu.%s", path, tv.tv_sec,
tv.tv_usec, getpid(), primary_hostname);
- fd = Uopen(tempname, O_RDWR|O_CREAT|O_EXCL, 0600);
+ fd = Uopen(tempname, O_RDWR|O_CREAT|O_EXCL, ob->mode ? ob->mode : 0600);
if (fd >= 0)
{
(void)sprintf(CS buffer, OFF_T_FMT "S,%dC\n" OFF_T_FMT " %d\n",
"a later subdirectory modification\n");
(void)Uunlink(filename);
(void)close(fd);
- fd = -1;
+ fd = -2;
}
}