Subversion Repositories gelsvn

Rev

Rev 107 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 107 Rev 259
1
package WinVersionTranslator;
1
package WinVersionTranslator;
2
 
2
 
3
# ************************************************************
3
# ************************************************************
4
# Description   : Translate the version value for Windows.
4
# Description   : Translate the version value for Windows.
5
#                 Windows can not handle letters in the version
5
#                 Windows can not handle letters in the version
6
#                 and truncates anything after \d+\.\d+.  We
6
#                 and truncates anything after \d+\.\d+.  We
7
#                 will convert letters to numbers, retain
7
#                 will convert letters to numbers, retain
8
#                 trailing numbers and everything else will be
8
#                 trailing numbers and everything else will be
9
#                 converted to a zero.
9
#                 converted to a zero.
10
#
10
#
11
#                 ex. 1.4.3  => 1.403
11
#                 ex. 1.4.3  => 1.403
12
#                     1.4a.5 => 1.4005
12
#                     1.4a.5 => 1.4005
13
#                     1.4b.4 => 1.4104
13
#                     1.4b.4 => 1.4104
14
#
14
#
15
# Author        : Chad Elliott
15
# Author        : Chad Elliott
16
# Create Date   : 10/7/2004
16
# Create Date   : 10/7/2004
17
# ************************************************************
17
# ************************************************************
18
 
18
 
19
# ************************************************************
19
# ************************************************************
20
# Pragmas
20
# Pragmas
21
# ************************************************************
21
# ************************************************************
22
 
22
 
23
use strict;
23
use strict;
24
 
24
 
25
# ************************************************************
25
# ************************************************************
26
# Subroutine Section
26
# Subroutine Section
27
# ************************************************************
27
# ************************************************************
28
 
28
 
29
sub translate {
29
sub translate {
30
  my($version) = shift;
30
  my($version) = shift;
31
  if ($version =~ /^(\d+\.\d+)([^\d].*)$/) {
31
  if ($version =~ /^(\d+\.\d+)([^\d].*)$/) {
32
    $version = $1;
32
    $version = $1;
33
    my($post) = $2;
33
    my($post) = $2;
34
    my($length) = length($post);
34
    my($length) = length($post);
35
 
35
 
36
    for(my $i = 0; $i < $length; ++$i) {
36
    for(my $i = 0; $i < $length; ++$i) {
37
      my($ch) = substr($post, $i, 1);
37
      my($ch) = substr($post, $i, 1);
38
      if ($ch =~ /[a-z]/i) {
38
      if ($ch =~ /[a-z]/i) {
39
        my($digit) = ord(lc($ch)) - ord('a');
39
        my($digit) = ord(lc($ch)) - ord('a');
40
        $version .= $digit;
40
        $version .= $digit;
41
      }
41
      }
42
      elsif ($ch =~ /\d/) {
42
      elsif ($ch =~ /\d/) {
43
        $version .= $ch;
43
        $version .= $ch;
44
      }
44
      }
45
      else {
45
      else {
46
        $version .= '0';
46
        $version .= '0';
47
      }
47
      }
48
    }
48
    }
49
 
49
 
50
    if ($version =~ /(\d+)\.(\d+)/) {
50
    if ($version =~ /(\d+)\.(\d+)/) {
51
      my($major) = $1;
51
      my($major) = $1;
52
      my($minor) = $2;
52
      my($minor) = $2;
53
      $minor =~ s/^\d+\.//;
53
      $minor =~ s/^\d+\.//;
54
      while($minor > 65535) {
54
      while($minor > 65535) {
55
        $minor = substr($minor, 0, length($minor) - 1);
55
        $minor = substr($minor, 0, length($minor) - 1);
56
      }
56
      }
57
      $version = $major . '.' . $minor;
57
      $version = $major . '.' . $minor;
58
    }
58
    }
59
  }
59
  }
60
  return $version;
60
  return $version;
61
}
61
}
62
 
62
 
63
1;
63
1;
64
 
64