home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2002 July / APC0702D1.iso / ntload / mac / files / iphoto.bin / iPhoto1.1.1.dmg / iPhoto.pkg / Contents / Resources / VolumeCheck < prev   
Encoding:
Text File  |  2002-04-19  |  1.6 KB  |  92 lines

  1. #!/usr/bin/perl
  2.  
  3. my $SYSTEM_VERS = "$ARGV[0]"."/System/Library/CoreServices/SystemVersion.plist";
  4. my $EXIT_VALUE = 0;
  5.  
  6. DO_CHECKS: {
  7.     if( ! -e "$SYSTEM_VERS" ) {
  8.         $EXIT_VALUE = (( 1 << 5 ) | 16 );
  9.         last;
  10.     }
  11.  
  12.     if(CheckVersion("$SYSTEM_VERS", "10.1.2", "ProductVersion", "<")) {
  13.         $EXIT_VALUE = (( 1 << 5 ) | 16 );
  14.         last;
  15.     }
  16. }
  17.  
  18. exit($EXIT_VALUE);
  19.  
  20. ###
  21.  
  22. sub CheckVersion
  23. {
  24.     my $path            = $_[0];
  25.     my $version         = $_[1];
  26.     my $keyName         = $_[2];
  27.     my $operator        = $_[3];
  28.  
  29.     if (! -e $path) {
  30.         return 0;
  31.     }
  32.  
  33.     if (!$operator) {
  34.         $operator = "==";
  35.     }
  36.  
  37.     my $oldSeperator = $/;
  38.     $/ = \0;
  39.  
  40.     open( PLIST, "$path") || do {
  41.         return 0;
  42.     };
  43.  
  44.     $plistData = <PLIST>;
  45.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  46.  
  47.     @items = split(/<key>/, $plistData);
  48.  
  49.     shift @items;
  50.     foreach $item (@items) {
  51.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  52.         $versiondata{ $1 } = $2;
  53.     }
  54.  
  55.     close(PLIST);
  56.  
  57.     $/ = $oldSeperator;
  58.  
  59.     @theVersionArray = split(/\./, $versiondata{$keyName});
  60.     for ($i = 0; $i < 3; $i++) {
  61.         if(!$theVersionArray[$i]) {
  62.             $theVersionArray[$i] = '0';
  63.         }
  64.     }
  65.  
  66.     @versionArray = split(/\./, $version);
  67.     
  68.     my $actualVersion;
  69.  
  70.     for ($i = 0; $i < 3; $i++) {
  71.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  72.  
  73.             $actualVersion = $theVersionArray[$i];
  74.             $version = $versionArray[$i];
  75.  
  76.             last;
  77.         }
  78.     }
  79.  
  80.     my $expression = '$actualVersion ' . $operator . ' $version';
  81.     if( eval ($expression) )
  82.     {
  83.         return 1;
  84.     }
  85.     else
  86.     {
  87.         return 0;
  88.     }
  89.  
  90. }
  91.  
  92.