X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/489e7846289d4fb66eb4b9fab0fed4af719b98ee..e4c8bdafb631e419bdfdad87b6d80e17470044c4:/selfforum-cgi/shared/Posting/Write.pm?ds=inline diff --git a/selfforum-cgi/shared/Posting/Write.pm b/selfforum-cgi/shared/Posting/Write.pm index 507cd81..5670251 100644 --- a/selfforum-cgi/shared/Posting/Write.pm +++ b/selfforum-cgi/shared/Posting/Write.pm @@ -11,14 +11,15 @@ package Posting::Write; ################################################################################ use strict; -use vars qw(%error @EXPORT); +use vars qw( + %error + @EXPORT + $VERSION +); use Encode::Plain; $Encode::Plain::utf8 = 1; use Encode::Posting; -use Lock qw( - :WRITE - release_file -); +use Lock; use Posting::_lib qw( get_message_node get_message_header @@ -39,6 +40,12 @@ use XML::DOM; noParent => '4 could not find parent message' ); +################################################################################ +# +# Version check +# +$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; + ################################################################################ # # Export @@ -116,8 +123,8 @@ sub write_new_thread ($) { ); save_file ($param -> {forumFile}, $forum) or return $error{forumWrite}; - release_file ($param -> {messagePath}.$tid.'.xml'); - return (0, $thread, $mid); + new Lock ($param -> {messagePath}.$tid.'.xml') -> release; + return (0, $thread, $mid, $tid); } ### sub write_reply_posting ($) ################################################ @@ -135,25 +142,24 @@ sub write_reply_posting ($) { my $mid = 'm'.($param -> {lastMessage} + 1); my $tid = 't'.($param -> {thread}); - my $tfile = $param -> {messagePath}.$tid.'.xml'; + my $tfile = new Lock ($param -> {messagePath}.$tid.'.xml'); - unless (write_lock_file ($tfile)) { - violent_unlock_file ($tfile); + unless ($tfile->lock(LH_EXCL)) { return $error{threadFile}; } else { - my $xml = parse_xml_file ($tfile); + my $xml = parse_xml_file ($tfile->filename); unless ($xml) { - violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); + $tfile -> unlock; return $error{threadFile}; } my $mnode = get_message_node ($xml, $tid, 'm'.$param -> {parentMessage}); unless (defined $mnode) { - violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); + $tfile -> unlock; return $error{noParent}; } @@ -192,12 +198,12 @@ sub write_reply_posting ($) { # save thread file # - unless (save_file ($tfile, \($xml -> toString))) { - violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); + unless (save_file ($tfile->filename, \($xml -> toString))) { + $tfile -> unlock; return $error{threadWrite}; } - violent_unlock_file ($tfile) unless (write_unlock_file ($tfile)); + $tfile -> unlock; $thread = $xml; @@ -228,14 +234,14 @@ sub write_reply_posting ($) { $param -> {parsedThreads}, { dtd => $param -> {dtd}, lastMessage => $mid, - lastThread => $tid + lastThread => 't'.$param -> {lastThread} } ); save_file ($param -> {forumFile}, $forum) or return $error{forumWrite}; } - return (0, $thread, $mid); + return (0, $thread, $mid, $tid); } # keep 'require' happy