1c9b362f6SAndre Fischer#************************************************************** 2c9b362f6SAndre Fischer# 3c9b362f6SAndre Fischer# Licensed to the Apache Software Foundation (ASF) under one 4c9b362f6SAndre Fischer# or more contributor license agreements. See the NOTICE file 5c9b362f6SAndre Fischer# distributed with this work for additional information 6c9b362f6SAndre Fischer# regarding copyright ownership. The ASF licenses this file 7c9b362f6SAndre Fischer# to you under the Apache License, Version 2.0 (the 8c9b362f6SAndre Fischer# "License"); you may not use this file except in compliance 9c9b362f6SAndre Fischer# with the License. You may obtain a copy of the License at 10c9b362f6SAndre Fischer# 11c9b362f6SAndre Fischer# http://www.apache.org/licenses/LICENSE-2.0 12c9b362f6SAndre Fischer# 13c9b362f6SAndre Fischer# Unless required by applicable law or agreed to in writing, 14c9b362f6SAndre Fischer# software distributed under the License is distributed on an 15c9b362f6SAndre Fischer# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16c9b362f6SAndre Fischer# KIND, either express or implied. See the License for the 17c9b362f6SAndre Fischer# specific language governing permissions and limitations 18c9b362f6SAndre Fischer# under the License. 19c9b362f6SAndre Fischer# 20c9b362f6SAndre Fischer#************************************************************** 21c9b362f6SAndre Fischer 22c9b362f6SAndre Fischerpackage installer::patch::Version; 23c9b362f6SAndre Fischer 24c9b362f6SAndre Fischer 25c9b362f6SAndre Fischer=head1 NAME 26c9b362f6SAndre Fischer 27c9b362f6SAndre Fischer package installer::patch::Version - Functions for handling version numbers. 28c9b362f6SAndre Fischer 29c9b362f6SAndre Fischer=cut 30c9b362f6SAndre Fischer 31c9b362f6SAndre Fischer 32c9b362f6SAndre Fischer 33c9b362f6SAndre Fischer# We handle version numbers that consist of three parts: major, minor and micro version number. 34c9b362f6SAndre Fischermy $VersionPartCount = 3; 35c9b362f6SAndre Fischer 36c9b362f6SAndre Fischer 37c9b362f6SAndre Fischer 38*9f91b7e3SAndre Fischer=head2 StringToNumberArray($version_string) 39c9b362f6SAndre Fischer 40c9b362f6SAndre Fischer Convert a version string (where the individual parts are separated by '.') into an array of three numbers. 41c9b362f6SAndre Fischer Missing numbers are filled with 0. 42c9b362f6SAndre Fischer 43c9b362f6SAndre Fischer Returns an array with three elements (major, minor, micro). 44c9b362f6SAndre Fischer=cut 45c9b362f6SAndre Fischersub StringToNumberArray ($) 46c9b362f6SAndre Fischer{ 47c9b362f6SAndre Fischer my ($version_string) = @_; 48c9b362f6SAndre Fischer 49c9b362f6SAndre Fischer my @version_parts = split(/\./, $version_string); 50c9b362f6SAndre Fischer while (scalar @version_parts < $VersionPartCount) 51c9b362f6SAndre Fischer { 52c9b362f6SAndre Fischer push @version_parts, "0"; 53c9b362f6SAndre Fischer } 54c9b362f6SAndre Fischer return @version_parts; 55c9b362f6SAndre Fischer} 56c9b362f6SAndre Fischer 57c9b362f6SAndre Fischer 58c9b362f6SAndre Fischer 59c9b362f6SAndre Fischer 60*9f91b7e3SAndre Fischer=head2 ArrayToDirectoryName (@) 61c9b362f6SAndre Fischer 62c9b362f6SAndre Fischer Return a directory name (without any path) for the given array of version numbers. 63c9b362f6SAndre Fischer 64c9b362f6SAndre Fischer=cut 65c9b362f6SAndre Fischersub ArrayToDirectoryName (@) 66c9b362f6SAndre Fischer{ 67c9b362f6SAndre Fischer return "v-".join("-", @_); 68c9b362f6SAndre Fischer} 69c9b362f6SAndre Fischer 70c9b362f6SAndre Fischer 71c9b362f6SAndre Fischer 72*9f91b7e3SAndre Fischer=head2 ArrayToNoDotName (@) 73*9f91b7e3SAndre Fischer 74*9f91b7e3SAndre Fischer This symply creates a version array (A,B,C) into a version string 75*9f91b7e3SAndre Fischer "ABC" with no dots between major, minor and micro version number. 76*9f91b7e3SAndre Fischer 77*9f91b7e3SAndre Fischer=cut 78*9f91b7e3SAndre Fischersub ArrayToNoDotName (@) 79*9f91b7e3SAndre Fischer{ 80*9f91b7e3SAndre Fischer return join("", @_); 81*9f91b7e3SAndre Fischer} 82*9f91b7e3SAndre Fischer 83*9f91b7e3SAndre Fischer 84*9f91b7e3SAndre Fischer 85*9f91b7e3SAndre Fischer 86*9f91b7e3SAndre Fischer=head2 IsMajorVersion ($version_string) 87*9f91b7e3SAndre Fischer 88*9f91b7e3SAndre Fischer Return 1 if $version_string is a major version, ie. ?.0.0 89*9f91b7e3SAndre Fischer Return 0 otherwise. 90*9f91b7e3SAndre Fischer 91*9f91b7e3SAndre Fischer=cut 92*9f91b7e3SAndre Fischersub IsMajorVersion ($) 93*9f91b7e3SAndre Fischer{ 94*9f91b7e3SAndre Fischer my ($version_string) = @_; 95*9f91b7e3SAndre Fischer my @version = installer::patch::Version::StringToNumberArray($version_string); 96*9f91b7e3SAndre Fischer for (my $index=1; $index<$VersionPartCount; ++$index) 97*9f91b7e3SAndre Fischer { 98*9f91b7e3SAndre Fischer return 0 if $version[$index] ne "0"; 99*9f91b7e3SAndre Fischer } 100*9f91b7e3SAndre Fischer return 1; 101*9f91b7e3SAndre Fischer} 102*9f91b7e3SAndre Fischer 103c9b362f6SAndre Fischer 104c9b362f6SAndre Fischer 105c9b362f6SAndre Fischer1; 106