[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/i586-linux-thread-multi/auto/Storable/ -> read_magic.al (source)

   1  # NOTE: Derived from ../../lib/Storable.pm.
   2  # Changes made here will be lost when autosplit is run again.
   3  # See AutoSplit.pm.
   4  package Storable;
   5  
   6  #line 131 "../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/read_magic.al)"
   7  sub read_magic {
   8      my($buf, $file) = @_;
   9      my %info;
  10  
  11      my $buflen = length($buf);
  12      my $magic;
  13      if ($buf =~ s/^(pst0|perl-store)//) {
  14      $magic = $1;
  15      $info{file} = $file || 1;
  16      }
  17      else {
  18      return undef if $file;
  19      $magic = "";
  20      }
  21  
  22      return undef unless length($buf);
  23  
  24      my $net_order;
  25      if ($magic eq "perl-store" && ord(substr($buf, 0, 1)) > 1) {
  26      $info{version} = -1;
  27      $net_order = 0;
  28      }
  29      else {
  30      $net_order = ord(substr($buf, 0, 1, ""));
  31      my $major = $net_order >> 1;
  32      return undef if $major > 4; # sanity (assuming we never go that high)
  33      $info{major} = $major;
  34      $net_order &= 0x01;
  35      if ($major > 1) {
  36          return undef unless length($buf);
  37          my $minor = ord(substr($buf, 0, 1, ""));
  38          $info{minor} = $minor;
  39          $info{version} = "$major.$minor";
  40          $info{version_nv} = sprintf "%d.%03d", $major, $minor;
  41      }
  42      else {
  43          $info{version} = $major;
  44      }
  45      }
  46      $info{version_nv} ||= $info{version};
  47      $info{netorder} = $net_order;
  48  
  49      unless ($net_order) {
  50      return undef unless length($buf);
  51      my $len = ord(substr($buf, 0, 1, ""));
  52      return undef unless length($buf) >= $len;
  53      return undef unless $len == 4 || $len == 8;  # sanity
  54      $info{byteorder} = substr($buf, 0, $len, "");
  55      $info{intsize} = ord(substr($buf, 0, 1, ""));
  56      $info{longsize} = ord(substr($buf, 0, 1, ""));
  57      $info{ptrsize} = ord(substr($buf, 0, 1, ""));
  58      if ($info{version_nv} >= 2.002) {
  59          return undef unless length($buf);
  60          $info{nvsize} = ord(substr($buf, 0, 1, ""));
  61      }
  62      }
  63      $info{hdrsize} = $buflen - length($buf);
  64  
  65      return \%info;
  66  }
  67  
  68  # end of Storable::read_magic
  69  1;


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1