X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/d6629cdc9b1eb95d4c7b2f6c55a102bd0df38d31..8d6d5106a6f1bcba010877d55932a8d8dcfa88bd:/src/src/transports/tf_maildir.c diff --git a/src/src/transports/tf_maildir.c b/src/src/transports/tf_maildir.c index 2eaea4be0..0fbb77243 100644 --- a/src/src/transports/tf_maildir.c +++ b/src/src/transports/tf_maildir.c @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/transports/tf_maildir.c,v 1.9 2006/04/27 08:53:24 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2006 */ +/* Copyright (c) University of Cambridge 1995 - 2014 */ /* See the file NOTICE for conditions of use and distribution. */ /* Functions in support of the use of maildirsize files for handling quotas in @@ -48,7 +46,7 @@ BOOL maildir_ensure_directories(uschar *path, address_item *addr, { 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); @@ -62,16 +60,16 @@ loop so that code can be shared. */ 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; } @@ -169,7 +167,7 @@ if (maildirfolder_create_regex != NULL) } 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 " @@ -214,7 +212,7 @@ uschar buffer[256]; sprintf(CS buffer, "%d 1\n", size); len = Ustrlen(buffer); (void)lseek(fd, 0, SEEK_END); -(void)write(fd, buffer, len); +len = write(fd, buffer, len); DEBUG(D_transport) debug_printf("added '%.*s' to maildirsize file\n", len-1, buffer); } @@ -392,7 +390,7 @@ the same thing. */ 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; @@ -556,10 +554,10 @@ else FALSE); (void)gettimeofday(&tv, NULL); - tempname = string_sprintf("%s/tmp/%lu.H%luP%lu.%s", path, tv.tv_sec, - tv.tv_usec, getpid(), primary_hostname); + tempname = string_sprintf("%s/tmp/" TIME_T_FMT ".H%luP%lu.%s", + path, tv.tv_sec, tv.tv_usec, (long unsigned) 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", @@ -584,7 +582,7 @@ else "a later subdirectory modification\n"); (void)Uunlink(filename); (void)close(fd); - fd = -1; + fd = -2; } }