]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/deblistparser.cc
* merged from the auto-install branch
[apt.git] / apt-pkg / deb / deblistparser.cc
index 6e78ed42b80b71950d7fe0bdd7c6683f5ccb89fc..c2b26b5eb5322a8f4543a89bea742bf65004ef6c 100644 (file)
@@ -143,14 +143,16 @@ string debListParser::DescriptionLanguage()
                                                                         /*}}}*/
 // ListParser::Description - Return the description_md5 MD5SumValue    /*{{{*/
 // ---------------------------------------------------------------------
                                                                         /*}}}*/
 // ListParser::Description - Return the description_md5 MD5SumValue    /*{{{*/
 // ---------------------------------------------------------------------
-/* This is to return the md5 string to allow the check if is the right
-   description. If thisreturns a blank string then calculate the md5
-   value. */
+/* This is to return the md5 string to allow the check if it is the right
+   description. If no Description-md5 is found in the section it will be
+   calculated.
+ */
 MD5SumValue debListParser::Description_md5()
 {
    string value = Section.FindS("Description-md5");
 
 MD5SumValue debListParser::Description_md5()
 {
    string value = Section.FindS("Description-md5");
 
-   if (value.empty()) {
+   if (value.empty()) 
+   {
       MD5Summation md5;
       md5.Add((Description() + "\n").c_str());
       return md5.Result();
       MD5Summation md5;
       md5.Add((Description() + "\n").c_str());
       return md5.Result();
@@ -418,12 +420,12 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop,
       const char *End = I;
       for (; End > Start && isspace(End[-1]); End--);
       
       const char *End = I;
       for (; End > Start && isspace(End[-1]); End--);
       
-      Ver = string(Start,End-Start);
+      Ver.assign(Start,End-Start);
       I++;
    }
    else
    {
       I++;
    }
    else
    {
-      Ver = string();
+      Ver.clear();
       Op = pkgCache::Dep::NoOp;
    }
    
       Op = pkgCache::Dep::NoOp;
    }
    
@@ -545,11 +547,12 @@ bool debListParser::ParseProvides(pkgCache::VerIterator Ver)
       Start = ParseDepends(Start,Stop,Package,Version,Op);
       if (Start == 0)
         return _error->Error("Problem parsing Provides line");
       Start = ParseDepends(Start,Stop,Package,Version,Op);
       if (Start == 0)
         return _error->Error("Problem parsing Provides line");
-      if (Op != pkgCache::Dep::NoOp)
-        return _error->Error("Malformed provides line");
-
-      if (NewProvides(Ver,Package,Version) == false)
-        return false;
+      if (Op != pkgCache::Dep::NoOp) {
+        _error->Warning("Ignoring Provides line with DepCompareOp for package %s", Package.c_str());
+      } else {
+        if (NewProvides(Ver,Package,Version) == false)
+           return false;
+      }
 
       if (Start == Stop)
         break;
 
       if (Start == Stop)
         break;
@@ -605,13 +608,20 @@ bool debListParser::Step()
 // ---------------------------------------------------------------------
 /* */
 bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator FileI,
 // ---------------------------------------------------------------------
 /* */
 bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator FileI,
-                                   FileFd &File)
+                                   FileFd &File, string component)
 {
    pkgTagFile Tags(&File, File.Size() + 256); // XXX
    pkgTagSection Section;
    if (Tags.Step(Section) == false)
       return false;
 
 {
    pkgTagFile Tags(&File, File.Size() + 256); // XXX
    pkgTagSection Section;
    if (Tags.Step(Section) == false)
       return false;
 
+   //mvo: I don't think we need to fill that in (it's unused since apt-0.6)
+   //FileI->Architecture = WriteUniqString(Arch);
+   
+   // apt-secure does no longer download individual (per-section) Release
+   // file. to provide Component pinning we use the section name now
+   FileI->Component = WriteUniqString(component);
+
    const char *Start;
    const char *Stop;
    if (Section.Find("Suite",Start,Stop) == true)
    const char *Start;
    const char *Stop;
    if (Section.Find("Suite",Start,Stop) == true)
@@ -630,7 +640,7 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator FileI,
    if (Section.FindFlag("NotAutomatic",FileI->Flags,
                        pkgCache::Flag::NotAutomatic) == false)
       _error->Warning("Bad NotAutomatic flag");
    if (Section.FindFlag("NotAutomatic",FileI->Flags,
                        pkgCache::Flag::NotAutomatic) == false)
       _error->Warning("Bad NotAutomatic flag");
-   
+
    return !_error->PendingError();
 }
                                                                        /*}}}*/
    return !_error->PendingError();
 }
                                                                        /*}}}*/