home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2005 December (Special)
/
PCWorld_2005-12_Special_cd.bin
/
Bezpecnost
/
lsti
/
lsti.exe
/
framework-2.5.exe
/
read_magic.al
< prev
next >
Wrap
Text File
|
2005-01-27
|
1KB
|
44 lines
# NOTE: Derived from ../../lib/Storable.pm.
# Changes made here will be lost when autosplit is run again.
# See AutoSplit.pm.
package Storable;
#line 113 "../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/read_magic.al)"
sub read_magic {
my $header = shift;
return unless defined $header and length $header > 11;
my $result;
if ($header =~ s/^perl-store//) {
die "Can't deal with version 0 headers";
} elsif ($header =~ s/^pst0//) {
$result->{file} = 1;
}
# Assume it's a string.
my ($major, $minor, $bytelen) = unpack "C3", $header;
my $net_order = $major & 1;
$major >>= 1;
@$result{qw(major minor netorder)} = ($major, $minor, $net_order);
return $result if $net_order;
# I assume that it is rare to find v1 files, so this is an intentionally
# inefficient way of doing it, to make the rest of the code constant.
if ($major < 2) {
delete $result->{minor};
$header = '.' . $header;
$bytelen = $minor;
}
@$result{qw(byteorder intsize longsize ptrsize)} =
unpack "x3 A$bytelen C3", $header;
if ($major >= 2 and $minor >= 2) {
$result->{nvsize} = unpack "x6 x$bytelen C", $header;
}
$result;
}
# end of Storable::read_magic
1;