# #
# File: shared/Posting/Write.pm #
# #
-# Authors: André Malo <nd@o3media.de>, 2001-04-08 #
+# Authors: André Malo <nd@o3media.de> #
# #
# Description: Save a posting #
# #
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
#
# Version check
#
-$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+# last modified:
+# $Date$ (GMT)
+# by $Author$
+#
+sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
################################################################################
#
);
save_file ($param -> {forumFile}, $forum) or return $error{forumWrite};
- release_file ($param -> {messagePath}.$tid.'.xml');
+ new Lock ($param -> {messagePath}.$tid.'.xml') -> release;
return (0, $thread, $mid, $tid);
}
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};
}
# 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;