DoctorD90 icon

VersChk.tcl

DoctorD90 | PRO | 04/22/13 11:17:15 AM UTC | 0 ⭐ | 6280 👁️ | Never ⏰ | []
TCL |

2.18 KB

|

None

|

0 👍

/

0 👎

### VersChk.tcl 1.5.0 mQARWRMG 
 
#REQUIREMENTS
# PBinSrc.tcl fMrtKqyq
 
#LICENSE
# Copyright © 2013 Alberto Dietze "DoctorD90"
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Full GPLv3 Text: http://www.gnu.org/licenses/gpl.txt
 
#PATERNITY
#Coder: DoctorD90
#Network: irc.OnlineGamesNet.net
#Chan: #eHito
#Mail: [email protected]
 
#PURPOSE
#Compare 2 versions number made up of theorically infinity numbers, and know if 2nd is newer/older/equal than 1st basing
#to used proc.
 
#USAGE
#Split versions numbers in lists of
#elements (ex. 1.0.0 -> [split "1.0.0" "."]).
#To know if 2nd is newer than 1st use [vers_newer v1st v2nd]. If it is, it returns 1.
#To know if 2nd is older than 1st use [vers_older v1st v2nd]. If it is, it returns 1.
#To know if 2nd is equal than 1st use [vers_equer v1st v2nd]. If it is, it returns 1.
 
 
### DON'T EDIT ANYTHING BELOW ###
 
proc vers_newer {v1 v2} {
  return [vers_chker $v1 $v2]
}
 
proc vers_older {v1 v2} {
  return [vers_chker $v2 $v1]
}
 
proc vers_equer {v1 v2} {
  set s 0
  if {![vers_chker $v1 $v2] && ![vers_chker $v2 $v1]} {
    set s 1
  }
  return $s
}
 
proc vers_chker {v1 v2} {
  set l1 [llength $v1]
  set l2 [llength $v2]
  if {$l1 > $l2} {
    set l $l1
    while {$l != $l2} {
      lappend v2 0
      incr l2
    }
  } else {
    set l $l2
    while {$l != $l1} {
      lappend v1 0
      incr l1
    }
  }
  set s 0
  set n 0
  while {!$s && $l > $n} {
    if {[lindex $v2 $n] > [lindex $v1 $n]} { set s 1 }
    incr n
  }
  return $s
}
 
###
putlog "VersChk.tcl LOADED"

Comments