home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 November / Chip_2002-11_cd1.bin / zkuste / macos / Files / iCal.bin / iCal.dmg / iCal.pkg / Contents / Resources / VolumeCheck < prev   
Text File  |  2002-08-21  |  2KB  |  100 lines

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