diff -r 30113bfbe723 -r b3afb9f1e801 lib/vdomain/set.cc --- a/lib/vdomain/set.cc Sun Jan 20 00:12:17 2008 +0100 +++ b/lib/vdomain/set.cc Sun Jan 20 00:22:09 2008 +0100 @@ -18,8 +18,7 @@ #include "vdomain.h" #include "misc/maildir.h" -response vdomain::set(const vpwentry* vpw, bool onlyadd, - mystring maildir) +response vdomain::set(const vpwentry* vpw, bool onlyadd) { if(!vpw) RETURN(err, "Internal error: no vpwentry"); @@ -27,14 +26,13 @@ RETURN(bad, "Virtual user or alias name contains invalid characters"); if(!validate_password(vpw->pass)) RETURN(bad, "Password field contains invalid characters"); - if(!!maildir && !make_maildir(maildir.c_str())) - RETURN(err, "Can't create the mail directory '" + maildir + "'"); + if(mkdirp(vpw->directory, 0700) == -1) + RETURN(err, "Can't create the user directory '" + vpw->directory + "'"); + if(vpw->has_mailbox && !make_maildir(vpw->directory)) + RETURN(err, "Can't create the mail directory '" + vpw->directory + "'"); if(!table()->put(vpw, onlyadd)) { - if(!!maildir) - delete_directory(maildir.c_str()); + delete_directory(vpw->directory); RETURN(err, "Can't add the user to the password file"); } - RETURN(ok, !maildir - ? "Alias added successfully" - : "User added successfully"); + RETURN(ok, "User added successfully"); }