home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 February / Chip_2004-02_cd1.bin / opsys / macos / batt / batt.dmg / BatteryUpdate.pkg / Contents / Resources / VolumeCheck < prev   
Encoding:
Text File  |  2003-11-20  |  2.2 KB  |  106 lines

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