]> git.deb.at Git - deb/packages.git/blobdiff - lib/Deb/Versions.pm
Deb::Versions: Fix a bug introduces by ~ handling
[deb/packages.git] / lib / Deb / Versions.pm
index 984cbfb0b5ddb1775f2cc05055db9d2e6b38ab67..fcc8e31170a754b170047073b31aefde6c18b592 100644 (file)
@@ -111,7 +111,7 @@ sub _cmp_part {
     my ( $v1, $v2 ) = @_;
     my $r;
 
-    while ( $v1 && $v2 ) {
+    while ( $v1 || $v2 ) {
        $v1 =~ s/^(\D*)//o;
        my $sp1 = $1;
        $v2 =~ s/^(\D*)//o;
@@ -138,13 +138,13 @@ sub _cmp_part {
 
 sub _lcmp {
     my ( $v1, $v2 ) = @_;
-    
-    for ( my $i = 0; $i < length( $v1 ); $i++ ) {
+   
+    for ( my $i = 0; $i <= length( $v1 ); $i++ ) {
        my ( $n1, $n2 ) = ( ord( substr( $v1, $i, 1 ) ), 
                            ord( substr( $v2, $i, 1 ) ) );
-       $n1 += 256 if $n1 < 65; # letters sort earlier than non-letters
+       $n1 += 256 if $n1 && $n1 < 65; # letters sort earlier than non-letters
        $n1 = -1 if $n1 == 126; # '~' sorts earlier than everything else
-       $n2 += 256 if $n2 < 65;
+       $n2 += 256 if $n2 && $n2 < 65;
        $n2 = -1 if $n2 == 126;
        if ( my $r = ($n1 <=> $n2) ) {
            return $r;
@@ -154,12 +154,14 @@ sub _lcmp {
 }
 
 our @SUITES_SORT = qw( woody oldstable sarge stable stable-proposed-updates
-                      etch testing testing-proposed-updates sid unstable
-                      experimental warty hoary hoary-backports breezy
-                      breezy-backports dapper );
-our @ARCHIVE_SORT = qw( security updates volatile backports );
+                      etch etch-m68k testing testing-proposed-updates lenny
+                      sid unstable experimental
+                      warty hoary breezy breezy dapper edgy feisty gutsy );
+our @ARCHIVE_SORT = qw( non-US security updates volatile backports );
+our @PRIORITY_SORT = qw( required important standard optional extra );
 my $i = 1000;
 our %suites_sort = map { $_ => ($i-=10) } @SUITES_SORT;
+our %priority_sort = map { $_ => $i-- } @PRIORITY_SORT;
 $i = 0;
 our %archive_sort = map { $_ => $i++ } @ARCHIVE_SORT;
 
@@ -182,6 +184,14 @@ sub suites_sort {
     return sort { suites_cmp( $b, $a ) } @_;
 }
 
+sub priority_cmp {
+    return ($priority_sort{$_[0]} <=> $priority_sort{$_[1]});
+}
+
+sub priority_sort {
+    return sort { priority_cmp( $b, $a ) } @_;
+}
+
 
 1;
 __END__