# NOTE: Derived from ../../lib/Storable.pm.
# Changes made here will be lost when autosplit is run again.
# See AutoSplit.pm.
package Storable;
#line 131 "../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/read_magic.al)"
sub read_magic {
my($buf, $file) = @_;
my %info;
my $buflen = length($buf);
my $magic;
if ($buf =~ s/^(pst0|perl-store)//) {
$magic = $1;
$info{file} = $file || 1;
}
else {
return undef if $file;
$magic = "";
}
return undef unless length($buf);
my $net_order;
if ($magic eq "perl-store" && ord(substr($buf, 0, 1)) > 1) {
$info{version} = -1;
$net_order = 0;
}
else {
$net_order = ord(substr($buf, 0, 1, ""));
my $major = $net_order >> 1;
return undef if $major > 4; # sanity (assuming we never go that high)
$info{major} = $major;
$net_order &= 0x01;
if ($major > 1) {
return undef unless length($buf);
my $minor = ord(substr($buf, 0, 1, ""));
$info{minor} = $minor;
$info{version} = "$major.$minor";
$info{version_nv} = sprintf "%d.%03d", $major, $minor;
}
else {
$info{version} = $major;
}
}
$info{version_nv} ||= $info{version};
$info{netorder} = $net_order;
unless ($net_order) {
return undef unless length($buf);
my $len = ord(substr($buf, 0, 1, ""));
return undef unless length($buf) >= $len;
return undef unless $len == 4 || $len == 8; # sanity
$info{byteorder} = substr($buf, 0, $len, "");
$info{intsize} = ord(substr($buf, 0, 1, ""));
$info{longsize} = ord(substr($buf, 0, 1, ""));
$info{ptrsize} = ord(substr($buf, 0, 1, ""));
if ($info{version_nv} >= 2.002) {
return undef unless length($buf);
$info{nvsize} = ord(substr($buf, 0, 1, ""));
}
}
$info{hdrsize} = $buflen - length($buf);
return \%info;
}
# end of Storable::read_magic
1;
Copyright 2K16 - 2K18 Indonesian Hacker Rulez