summaryrefslogtreecommitdiffstats
path: root/maildir/maildircreate.c
diff options
context:
space:
mode:
authorSam Varshavchik2015-12-19 12:08:37 -0500
committerSam Varshavchik2015-12-19 12:08:37 -0500
commitfc74b7bc645d74c9fc87fa63345b6c6840c73bca (patch)
tree519885c20743c188918eb32e044ac2d7e609ab86 /maildir/maildircreate.c
parent08727afd05a6a6f5daa7f1fb293be038d43c4ef8 (diff)
downloadcourier-libs-fc74b7bc645d74c9fc87fa63345b6c6840c73bca.tar.bz2
maildrop: implement FLAGS
Diffstat (limited to 'maildir/maildircreate.c')
-rw-r--r--maildir/maildircreate.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/maildir/maildircreate.c b/maildir/maildircreate.c
index 5efc0af..b0c8e01 100644
--- a/maildir/maildircreate.c
+++ b/maildir/maildircreate.c
@@ -178,10 +178,26 @@ static int maildir_tmpcreate_fd_do(struct maildir_tmpcreate_info *info)
if (info->newname)
free(info->newname);
+ info->newname=NULL;
+
+ if (info->curname)
+ free(info->curname);
+ info->curname=NULL;
info->newname=malloc(strlen(info->tmpname)+strlen(ino_buf)+
strlen(dev_buf)+3);
+ if (info->newname)
+ {
+ info->curname=malloc(strlen(info->tmpname)+strlen(ino_buf)+
+ strlen(dev_buf)+3);
+ if (!info->curname)
+ {
+ free(info->newname);
+ info->newname=NULL;
+ }
+ }
+
if (!info->newname)
{
maildir_tmpcreate_free(info);
@@ -209,6 +225,9 @@ static int maildir_tmpcreate_fd_do(struct maildir_tmpcreate_info *info)
strcat(info->newname, hostname);
strcat(info->newname, len_buf);
+ strcpy(info->curname, info->newname);
+ memcpy(info->curname + strlen(maildir)+1, "cur", 3);
+
return fd;
}
@@ -221,6 +240,10 @@ void maildir_tmpcreate_free(struct maildir_tmpcreate_info *info)
if (info->newname)
free(info->newname);
info->newname=NULL;
+
+ if (info->curname)
+ free(info->curname);
+ info->curname=NULL;
}
int maildir_movetmpnew(const char *tmpname, const char *newname)