[Collab-qa-commits] r1241 - in udd: . sql

lucas at alioth.debian.org lucas at alioth.debian.org
Mon Sep 8 08:51:46 UTC 2008


Author: lucas
Date: 2008-09-08 08:51:45 +0000 (Mon, 08 Sep 2008)
New Revision: 1241

Added:
   udd/sql/debvercmp.sql
Removed:
   udd/debvercmp.sql
Log:
move debvercmp to sql/

Deleted: udd/debvercmp.sql
===================================================================
--- udd/debvercmp.sql	2008-09-08 07:08:43 UTC (rev 1240)
+++ udd/debvercmp.sql	2008-09-08 08:51:45 UTC (rev 1241)
@@ -1,103 +0,0 @@
-CREATE OR REPLACE FUNCTION debvercmp(v1 text, v2 text) RETURNS text AS $$
-   sub parseversion
-   {
-       my $ver = shift;
-       my %verhash;
-       if ($ver =~ /:/)
-       {
-      $ver =~ /^(\d+):(.+)/ or die "bad version number '$ver'";
-      $verhash{epoch} = $1;
-      $ver = $2;
-       }
-       else
-       {
-      $verhash{epoch} = 0;
-       }
-       if ($ver =~ /(.+)-(.+)$/)
-       {
-      $verhash{version} = $1;
-      $verhash{revision} = $2;
-       }
-       else
-       {
-      $verhash{version} = $ver;
-      $verhash{revision} = 0;
-       }
-       return %verhash;
-   }
-
-   sub verrevcmp
-   {
-
-        sub order{
-        my ($x) = @_;
-        ##define order(x) ((x) == '~' ? -1 \
-        #           : cisdigit((x)) ? 0 \
-        #           : !(x) ? 0 \
-        #           : cisalpha((x)) ? (x) \
-        #           : (x) + 256)
-        # This comparison is out of dpkg's order to avoid
-        # comparing things to undef and triggering warnings.
-        if (not defined $x) {
-             return 0;
-        }
-        elsif ($x eq '~') {
-             return -1;
-        }
-        elsif ($x =~ /^\d$/) {
-             return 0;
-        }
-        elsif ($x =~ /^[A-Z]$/i) {
-             return ord($x);
-        }
-        else {
-             return ord($x) + 256;
-        }
-        }
-
-        sub next_elem(\@){
-        my $a = shift;
-        return @{$a} ? shift @{$a} : undef;
-        }
-        my ($val, $ref) = @_;
-        $val = "" if not defined $val;
-        $ref = "" if not defined $ref;
-        my @val = split //,$val;
-        my @ref = split //,$ref;
-        my $vc = next_elem @val;
-        my $rc = next_elem @ref;
-        while (defined $vc or defined $rc) {
-        my $first_diff = 0;
-        while ((defined $vc and $vc !~ /^\d$/) or
-          (defined $rc and $rc !~ /^\d$/)) {
-             my $vo = order($vc); my $ro = order($rc);
-             # Unlike dpkg's verrevcmp, we only return 1 or -1 here.
-             return (($vo - $ro > 0) ? 1 : -1) if $vo != $ro;
-             $vc = next_elem @val; $rc = next_elem @ref;
-        }
-        while (defined $vc and $vc eq '0') {
-             $vc = next_elem @val;
-        }
-        while (defined $rc and $rc eq '0') {
-             $rc = next_elem @ref;
-        }
-        while (defined $vc and $vc =~ /^\d$/ and
-          defined $rc and $rc =~ /^\d$/) {
-             $first_diff = ord($vc) - ord($rc) if !$first_diff;
-             $vc = next_elem @val; $rc = next_elem @ref;
-        }
-        return 1 if defined $vc and $vc =~ /^\d$/;
-        return -1 if defined $rc and $rc =~ /^\d$/;
-        return $first_diff if $first_diff;
-        }
-        return 0;
-   }
-    my %version = parseversion $_[0];
-    my %refversion = parseversion $_[1];
-    return 1 if $version{epoch} > $refversion{epoch};
-    return -1 if $version{epoch} < $refversion{epoch};
-    my $r = verrevcmp($version{version}, $refversion{version});
-    return $r if $r;
-    return verrevcmp($version{revision}, $refversion{revision});
-$$ LANGUAGE plperl;
-

Copied: udd/sql/debvercmp.sql (from rev 1217, udd/debvercmp.sql)
===================================================================
--- udd/sql/debvercmp.sql	                        (rev 0)
+++ udd/sql/debvercmp.sql	2008-09-08 08:51:45 UTC (rev 1241)
@@ -0,0 +1,105 @@
+CREATE LANGUAGE plperl;
+
+CREATE OR REPLACE FUNCTION debvercmp(v1 text, v2 text) RETURNS text AS $$
+   sub parseversion
+   {
+       my $ver = shift;
+       my %verhash;
+       if ($ver =~ /:/)
+       {
+      $ver =~ /^(\d+):(.+)/ or die "bad version number '$ver'";
+      $verhash{epoch} = $1;
+      $ver = $2;
+       }
+       else
+       {
+      $verhash{epoch} = 0;
+       }
+       if ($ver =~ /(.+)-(.+)$/)
+       {
+      $verhash{version} = $1;
+      $verhash{revision} = $2;
+       }
+       else
+       {
+      $verhash{version} = $ver;
+      $verhash{revision} = 0;
+       }
+       return %verhash;
+   }
+
+   sub verrevcmp
+   {
+
+        sub order{
+        my ($x) = @_;
+        ##define order(x) ((x) == '~' ? -1 \
+        #           : cisdigit((x)) ? 0 \
+        #           : !(x) ? 0 \
+        #           : cisalpha((x)) ? (x) \
+        #           : (x) + 256)
+        # This comparison is out of dpkg's order to avoid
+        # comparing things to undef and triggering warnings.
+        if (not defined $x) {
+             return 0;
+        }
+        elsif ($x eq '~') {
+             return -1;
+        }
+        elsif ($x =~ /^\d$/) {
+             return 0;
+        }
+        elsif ($x =~ /^[A-Z]$/i) {
+             return ord($x);
+        }
+        else {
+             return ord($x) + 256;
+        }
+        }
+
+        sub next_elem(\@){
+        my $a = shift;
+        return @{$a} ? shift @{$a} : undef;
+        }
+        my ($val, $ref) = @_;
+        $val = "" if not defined $val;
+        $ref = "" if not defined $ref;
+        my @val = split //,$val;
+        my @ref = split //,$ref;
+        my $vc = next_elem @val;
+        my $rc = next_elem @ref;
+        while (defined $vc or defined $rc) {
+        my $first_diff = 0;
+        while ((defined $vc and $vc !~ /^\d$/) or
+          (defined $rc and $rc !~ /^\d$/)) {
+             my $vo = order($vc); my $ro = order($rc);
+             # Unlike dpkg's verrevcmp, we only return 1 or -1 here.
+             return (($vo - $ro > 0) ? 1 : -1) if $vo != $ro;
+             $vc = next_elem @val; $rc = next_elem @ref;
+        }
+        while (defined $vc and $vc eq '0') {
+             $vc = next_elem @val;
+        }
+        while (defined $rc and $rc eq '0') {
+             $rc = next_elem @ref;
+        }
+        while (defined $vc and $vc =~ /^\d$/ and
+          defined $rc and $rc =~ /^\d$/) {
+             $first_diff = ord($vc) - ord($rc) if !$first_diff;
+             $vc = next_elem @val; $rc = next_elem @ref;
+        }
+        return 1 if defined $vc and $vc =~ /^\d$/;
+        return -1 if defined $rc and $rc =~ /^\d$/;
+        return $first_diff if $first_diff;
+        }
+        return 0;
+   }
+    my %version = parseversion $_[0];
+    my %refversion = parseversion $_[1];
+    return 1 if $version{epoch} > $refversion{epoch};
+    return -1 if $version{epoch} < $refversion{epoch};
+    my $r = verrevcmp($version{version}, $refversion{version});
+    return $r if $r;
+    return verrevcmp($version{revision}, $refversion{revision});
+$$ LANGUAGE plperl;
+




More information about the Collab-qa-commits mailing list