CGI-AuthRegister
view release on metacpan or search on metacpan
AuthRegister.pm view on Meta::CPAN
my @r = <F>; close(F);
return wantarray ? @r : join ('', @r);
}
########################################################################
# Section: Simple file locking using mkdir
# Exlusive locking using mkdir
# lock_mkdir($fname); # return 1=success ''=fail
sub lock_mkdir {
my $fname = shift; my $lockd = "$fname.lock"; my $locked;
# First, hopefully most usual case
if (!-e $lockd && ($locked = mkdir($lockd,0700))) { return $locked }
my $tryfor=10; #sec
$locked = ''; # flag
for (my $i=0; $i<2*$tryfor; ++$i) {
select(undef,undef,undef,0.5); # wait for 0.5 sec
!-e $lockd && ($locked = mkdir($lockd,0700));
if ($locked) { return $locked }
}
$Error.="393-ERR:Could not lock file ($fname)\n"; return $locked;
}
# Unlock using mkdir
# unlock_mkdir($fname); # return 1=success ''=fail or no lock
sub unlock_mkdir {
my $fname = shift; my $lockd = "$fname.lock";
if (!-e $lockd) { $Error.="400-ERR:No lock on ($fname)\n"; return '' }
if (-d $lockd) { return rmdir($lockd) }
if (-f $lockd or -l $lockd) { unlink($lockd) }
$Error.="AuthERR-1279:Unknown error"; return '';
( run in 0.520 second using v1.01-cache-2.11-cpan-49f99fa48dc )