Index: texmf/scripts/texlive/tlmgr.pl =================================================================== --- texmf/scripts/texlive/tlmgr.pl (revision 10512) +++ texmf/scripts/texlive/tlmgr.pl (working copy) @@ -661,7 +661,7 @@ next; } my $mediarev = $mediatlp->revision; - if ($rev < $mediarev) { + if (revless ($rev, $mediarev)) { $nrupdated++; if ($opt_list) { print "$pkg: local: $rev, source: $mediarev\n"; @@ -740,7 +740,7 @@ print "update: $pkg done\n"; } } - } elsif ($rev > $mediarev) { + } elsif (revless ($mediarev, $rev)) { print "$pkg: revision in $location is less then local revision, not updating!\n"; next; } Index: texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl =================================================================== --- texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl (revision 10512) +++ texmf/scripts/texlive/tlmgrgui/tlmgrgui-real.pl (working copy) @@ -26,7 +26,7 @@ use TeXLive::TLMedia; use TeXLive::TLPDB; use TeXLive::TLConfig; -use TeXLive::TLUtils qw(setup_programs platform_desc win32); +use TeXLive::TLUtils qw(setup_programs platform_desc win32 revless); use Getopt::Long qw(:config no_autoabbrev require_order); use Tk; @@ -583,7 +583,7 @@ } else { $urev = 0; } - if ($urev > $lrev) { + if (revless ($lrev, $urev)) { if ($lp =~ m/\./) { push @archret, $lp; } else { Index: tlpkg/TeXLive/TLUtils.pm =================================================================== --- tlpkg/TeXLive/TLUtils.pm (revision 10512) +++ tlpkg/TeXLive/TLUtils.pm (working copy) @@ -66,6 +66,7 @@ TeXLive::TLUtils::conv_to_win_path($path); TeXLive::TLUtils::give_ctan_mirror($path); TeXLive::TLUtils::tlmd5($path); + TeXLive::TLUtils::revless($rev1, $rev2); =head1 DESCRIPTION @@ -115,9 +116,10 @@ &welcome_paths &give_ctan_mirror &tlmd5 + &revless ); @EXPORT = qw(setup_programs download_file info log debug ddebug tlwarn - process_logging_options win32); + process_logging_options win32 revless); } @@ -1692,6 +1694,34 @@ } } +=pod + +=item C + +Returns true if the first revision is less or equal than the second. + +=cut + + +sub revless { + my ($a, $b) = @_; + # format of a revision number: + # NNNN[.RRRR] + # NNNN and RRRR are integers (variable number of digits, but at least one + # for NNNN) + # + my ($arev, undef, $arrr) = ($a =~ m/^([0-9]+)(\.([0-9]+))?$/); + my ($brev, undef, $brrr) = ($b =~ m/^([0-9]+)(\.([0-9]+))?$/); + $arrr || ($arrr = 0); + $brrr || ($brrr = 0); + return 1 if ($arev < $brev); + return 0 if ($arev > $brev); + # so now $arev == $brev + return 1 if ($arrr < $brrr); + # in all other cases return 0 + return 0; +} + ############################################# # # Taken from Text::ParseWords