]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/debversion.cc
* remove all the remaining #pragma implementation
[apt.git] / apt-pkg / deb / debversion.cc
index aeee619296d19ee0df96eae0fd6b2b8d448ff077..ad45e9a44dbce7490d408f9f5cb510a595395486 100644 (file)
@@ -11,9 +11,6 @@
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
 #define APT_COMPATIBILITY 986
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
 #define APT_COMPATIBILITY 986
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/debversion.h"
-#endif
 
 #include <apt-pkg/debversion.h>
 #include <apt-pkg/pkgcache.h>
 
 #include <apt-pkg/debversion.h>
 #include <apt-pkg/pkgcache.h>
@@ -59,7 +56,7 @@ int debVersioningSystem::CmpFragment(const char *A,const char *AEnd,
    }
 
    /* Iterate over the whole string
    }
 
    /* Iterate over the whole string
-      What this does is to spilt the whole string into groups of
+      What this does is to split the whole string into groups of
       numeric and non numeric portions. For instance:
          a67bhgs89
       Has 4 portions 'a', '67', 'bhgs', '89'. A more normal:
       numeric and non numeric portions. For instance:
          a67bhgs89
       Has 4 portions 'a', '67', 'bhgs', '89'. A more normal:
@@ -140,6 +137,27 @@ int debVersioningSystem::DoCmpVersion(const char *A,const char *AEnd,
    if (rhs == BEnd)
       rhs = B;
    
    if (rhs == BEnd)
       rhs = B;
    
+   // Special case: a zero epoch is the same as no epoch,
+   // so remove it.
+   if (lhs != A)
+   {
+      for (; *A == '0'; ++A);
+      if (A == lhs)
+      {
+        ++A;
+        ++lhs;
+      }
+   }
+   if (rhs != B)
+   {
+      for (; *B == '0'; ++B);
+      if (B == rhs)
+      {
+        ++B;
+        ++rhs;
+      }
+   }
+
    // Compare the epoch
    int Res = CmpFragment(A,lhs,B,rhs);
    if (Res != 0)
    // Compare the epoch
    int Res = CmpFragment(A,lhs,B,rhs);
    if (Res != 0)