FTN-JAM
view release on metacpan or search on metacpan
lib/FTN/JAM.pm view on Meta::CPAN
=cut
sub LockMB {
if ( $#_ != 1 ) {
croak "Wrong number of arguments for FTN::JAM::LockMB";
}
my $handleref = $_[0];
my $timeout = $_[1];
if ( $$handleref{locked} ) {
return 1;
}
if ( flock( $$handleref{jhr}, 6 ) ) {
$$handleref{locked} = 1;
return 1;
}
for ( my $i = 0 ; $i < $timeout ; $i++ ) {
sleep(1);
if ( flock( $$handleref{jhr}, 6 ) ) {
$$handleref{locked} = 1;
return 1;
}
}
$Errnum = $FTN::JAM::Errnum::BASE_NOT_LOCKED;
return;
}
=head2 UnlockMB
Syntax: FTN::JAM::UnlockMB($handle)
=cut
sub UnlockMB {
my ($handleref) = @_ or croak 'UnlockMB requires a reference to a file hash as a parameter.';
if ( $$handleref{locked} ) {
flock( $$handleref{jhr}, 8 );
delete $$handleref{locked};
}
return 1;
}
=head2 ReadMBHeader
Syntax: $success = FTN::JAM::ReadMBHeader($handle,\%header)
=cut
lib/FTN/JAM.pm view on Meta::CPAN
if ( !defined( $$headerref{DateCreated} ) ) {
$$headerref{DateCreated} = 0;
}
if ( !defined( $$headerref{ModCounter} ) ) { $$headerref{ModCounter} = 0; }
if ( !defined( $$headerref{ActiveMsgs} ) ) { $$headerref{ActiveMsgs} = 0; }
if ( !defined( $$headerref{PasswordCRC} ) ) {
$$headerref{PasswordCRC} = 0;
}
if ( !defined( $$headerref{BaseMsgNum} ) ) { $$headerref{BaseMsgNum} = 0; }
if ( !$$handleref{locked} ) {
$Errnum = $FTN::JAM::Errnum::BASE_NOT_LOCKED;
return;
}
$$headerref{Signature} = "JAM";
$$headerref{ModCounter}++;
if ( !seek( $$handleref{jhr}, 0, 0 ) ) {
$Errnum = $FTN::JAM::Errnum::IO_ERROR;
return;
lib/FTN/JAM.pm view on Meta::CPAN
if ( !defined( $$headerref{Attributes2} ) ) {
$$headerref{Attributes2} = 0;
}
if ( !defined( $$headerref{TxtOffset} ) ) { $$headerref{TxtOffset} = 0; }
if ( !defined( $$headerref{TxtLen} ) ) { $$headerref{TxtLen} = 0; }
if ( !defined( $$headerref{PasswordCRC} ) ) {
$$headerref{PasswordCRC} = 0xffffffff;
}
if ( !defined( $$headerref{Cost} ) ) { $$headerref{Cost} = 0; }
if ( !$$handleref{locked} ) {
$Errnum = $FTN::JAM::Errnum::BASE_NOT_LOCKED;
return;
}
my $buf;
my @data;
my %mbheader;
if ( !ReadMBHeader( $handleref, \%mbheader ) ) {
return;
lib/FTN/JAM.pm view on Meta::CPAN
if ( !defined( $$headerref{Attributes2} ) ) {
$$headerref{Attributes2} = 0;
}
if ( !defined( $$headerref{TxtOffset} ) ) { $$headerref{TxtOffset} = 0; }
if ( !defined( $$headerref{TxtLen} ) ) { $$headerref{TxtLen} = 0; }
if ( !defined( $$headerref{PasswordCRC} ) ) {
$$headerref{PasswordCRC} = 0xffffffff;
}
if ( !defined( $$headerref{Cost} ) ) { $$headerref{Cost} = 0; }
if ( !$$handleref{locked} ) {
$Errnum = $FTN::JAM::Errnum::BASE_NOT_LOCKED;
return;
}
my $buf;
my @data;
if ( !ReadMBHeader( $handleref, \%mbheader ) ) {
return;
}
( run in 0.803 second using v1.01-cache-2.11-cpan-49f99fa48dc )