# NOTE: Derived from ../../lib/Storable.pm.
# Changes made here will be lost when autosplit is run again.
# See AutoSplit.pm.
package Storable;

#line 108 "../../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;
