diff options
| author | Sam Varshavchik | 2015-12-19 12:08:37 -0500 |
|---|---|---|
| committer | Sam Varshavchik | 2015-12-19 12:08:37 -0500 |
| commit | fc74b7bc645d74c9fc87fa63345b6c6840c73bca (patch) | |
| tree | 519885c20743c188918eb32e044ac2d7e609ab86 /maildir | |
| parent | 08727afd05a6a6f5daa7f1fb293be038d43c4ef8 (diff) | |
| download | courier-libs-fc74b7bc645d74c9fc87fa63345b6c6840c73bca.tar.bz2 | |
maildrop: implement FLAGS
Diffstat (limited to 'maildir')
| -rw-r--r-- | maildir/maildircreate.c | 23 | ||||
| -rw-r--r-- | maildir/maildircreate.h | 1 |
2 files changed, 24 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) diff --git a/maildir/maildircreate.h b/maildir/maildircreate.h index 8539145..3881e77 100644 --- a/maildir/maildircreate.h +++ b/maildir/maildircreate.h @@ -28,6 +28,7 @@ struct maildir_tmpcreate_info { int doordie; /* Loop until we get it right. */ char *tmpname; /* On exit, filename in tmp */ char *newname; /* On exit, filename in new */ + char *curname; /* On exit, filename in cur */ }; #define maildir_tmpcreate_init(i) \ |
