]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/UserInfo.pm
plans for 2.0
[ikiwiki.git] / IkiWiki / UserInfo.pm
index 115a263ce09481d073837f878aa64ab347019f11..02c27991c585a7d31053c030f19ebae54fa4840b 100644 (file)
@@ -15,12 +15,19 @@ sub userinfo_retrieve () { #{{{
 sub userinfo_store ($) { #{{{
        my $userinfo=shift;
        
+       my $newfile="$config{wikistatedir}/userdb.new";
        my $oldmask=umask(077);
-       my $ret=Storable::lock_store($userinfo, "$config{wikistatedir}/userdb");
+       my $ret=Storable::lock_store($userinfo, $newfile);
        umask($oldmask);
+       if (defined $ret && $ret) {
+               if (! rename($newfile, "$config{wikistatedir}/userdb")) {
+                       unlink($newfile);
+                       $ret=undef;
+               }
+       }
        return $ret;
 } #}}}
-       
+
 sub userinfo_get ($$) { #{{{
        my $user=shift;
        my $field=shift;