]>
git.p6c8.net - selfforum.git/blob - selfforum-cgi/shared/Lock/Unlink.pm
d7bd6ecbb782e9d6a2f0e16f5fe66c7779eeef55
3 ################################################################################
5 # File: shared/Lock/Unlink.pm #
7 # Authors: Andre Malo <nd@o3media.de>, 2001-05-25 #
9 # Description: Locking and Filehandle class #
10 # using the atomic behavior of unlinkig files #
12 ################################################################################
21 ################################################################################
25 $VERSION = do { my @r =(q
$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x
$#r, @r };
27 ### sub _simple_lock ###########################################################
32 # Params: $filename - file to lock
35 # Return: success (boolean)
40 unlink $fh -> filename
and return 1;
45 ### sub _simple_unlock #########################################################
50 # Params: $filename - lockfile name
53 # Return: success (boolean)
56 my ($self, $filename) = @_;
59 sysopen (LF
, $filename, O_WRONLY
| O_CREAT
| O_TRUNC
)
63 # not able to create lock file, hmmm...
68 ### sub _reftime ###############################################################
70 # determine reference time for violent unlock
74 # Return: time or zero, if no reference file found
78 my ($time, $reffile) = 0;
80 if (-f
($reffile = $self -> filename
)) {
81 $time = (stat $reffile)[9];}
83 elsif (-f
($reffile = $self -> lockfile
)) {
84 $time = (stat $reffile)[9];}
89 ### sub masterlocked ###########################################################
91 # check on master lock status of the file
95 # Return: status (boolean)
97 sub masterlocked
{not -f
shift -> masterlock
}
99 ### sub excl_announced #########################################################
101 # check on exclusive lock announced status of the file
105 # Return: status (boolean)
107 sub excl_announced
{not -f
shift -> lockfile
}
109 ### sub exsh_announced #########################################################
111 # check on exclusive shared lock status of the file
115 # Return: status (boolean)
117 sub exsh_announced
{not -f
shift -> exshlock
}
119 # keep 'require' happy
124 ### end of Lock::Unlink ########################################################
patrick-canterino.de