Hi, * Derek Martin wrote: > On Thu, Jul 02, 2009 at 08:10:21AM +0000, Jörg Sommer wrote: > > So, create the directory yourself to ensure it's there and yours. > > > > % cat rename-test.c > > #include <stdio.h> > > #include <sys/stat.h> > > > > int main(void) > > { > > mkdir("mdir-mutt-delete", 0) /* this is a temporary directory to > > ensure rename doesn't replace an > > existing directory */ > > > > || rename("mdir", "mdir-mutt-delete"); > > > > return 0; > > } This an example to outline a proposed solution, I know, but how about mkdtemp()? Hard-coded temporary file/directory names beg for trouble. > There are several problems with this. If the directory exists when > you do the mkdir, it fails with no clear course of action to take to > fix the failure; that seems like clearly a bug to me. Also, if some > process puts a file in mdir-mutt-delete before you rename it, the > rename will fail. In either case, Mutt didn't do what you told it to > do (remove the maildir when it's empty). You can't code stuff that > works sometimes in applications that other people are going to use... I think you also get strange semantics if a messages is delivered/appended to 'mdir' between the mkdir() and rename() calls? Both calls would succeed but you would fail to remove 'mdir-mutt-delete'. Rocco
Attachment:
pgpxqDLt1HPOD.pgp
Description: PGP signature