|
Packit |
14c646 |
use strict;
|
|
Packit |
14c646 |
use warnings;
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
use Config;
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
my $template;
|
|
Packit |
14c646 |
{ # keep all the code in an external template to keep it easy to update
|
|
Packit |
14c646 |
local $/;
|
|
Packit |
14c646 |
open my $FROM, '<', '__Storable__.pm' or die $!;
|
|
Packit |
14c646 |
$template = <$FROM>;
|
|
Packit |
14c646 |
close $FROM or die $!;
|
|
Packit |
14c646 |
}
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
sub CAN_FLOCK {
|
|
Packit |
14c646 |
return
|
|
Packit |
14c646 |
$Config{'d_flock'} ||
|
|
Packit |
14c646 |
$Config{'d_fcntl_can_lock'} ||
|
|
Packit |
14c646 |
$Config{'d_lockf'}
|
|
Packit |
14c646 |
? 1 : 0;
|
|
Packit |
14c646 |
}
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
my $CAN_FLOCK = CAN_FLOCK();
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
# populate the sub and preserve it if used outside
|
|
Packit |
14c646 |
$template =~ s{^sub CAN_FLOCK;.*$}{sub CAN_FLOCK { ${CAN_FLOCK} } # computed by Storable.pm.PL}m;
|
|
Packit |
14c646 |
# alternatively we could remove the sub
|
|
Packit |
14c646 |
#$template =~ s{^sub CAN_FLOCK;.*$}{}m;
|
|
Packit |
14c646 |
# replace local function calls to hardcoded value
|
|
Packit |
14c646 |
$template =~ s{&CAN_FLOCK}{${CAN_FLOCK}}g;
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
{
|
|
Packit |
14c646 |
open my $OUT, '>', 'Storable.pm' or die $!;
|
|
Packit |
14c646 |
print {$OUT} $template or die $!;
|
|
Packit |
14c646 |
close $OUT or die $!;
|
|
Packit |
14c646 |
}
|