]> git.saurik.com Git - apt.git/blobdiff - ftparchive/override.cc
Merge remote-tracking branch 'donkult/debian/sid' into debian/sid
[apt.git] / ftparchive / override.cc
index 6f40bc865258c5d272407b7d19c15872d937ff4e..b4cd49b6c9dd50353670f363c04963ede56bd750 100644 (file)
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
-#include "override.h"
-    
-#include <apti18n.h>
+#include <config.h>
+
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/error.h>
 
 #include <stdio.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/error.h>
 
 #include <stdio.h>
-    
+#include <ctype.h>
+#include <string.h>
+#include <utility>
+
 #include "override.h"
 #include "override.h"
+
+#include <apti18n.h>
                                                                        /*}}}*/
 
 // Override::ReadOverride - Read the override file                     /*{{{*/
 // ---------------------------------------------------------------------
 /* This parses the override file and reads it into the map */
                                                                        /*}}}*/
 
 // Override::ReadOverride - Read the override file                     /*{{{*/
 // ---------------------------------------------------------------------
 /* This parses the override file and reads it into the map */
-bool Override::ReadOverride(string File,bool Source)
+bool Override::ReadOverride(string const &File,bool const &Source)
 {
    if (File.empty() == true)
       return true;
 {
    if (File.empty() == true)
       return true;
@@ -34,7 +38,7 @@ bool Override::ReadOverride(string File,bool Source)
       return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
    
    char Line[500];
       return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
    
    char Line[500];
-   unsigned long Counter = 0;
+   unsigned long long Counter = 0;
    while (fgets(Line,sizeof(Line),F) != 0)
    {
       Counter++;
    while (fgets(Line,sizeof(Line),F) != 0)
    {
       Counter++;
@@ -48,48 +52,44 @@ bool Override::ReadOverride(string File,bool Source)
       // Strip space leading up to the package name, skip blank lines
       char *Pkg = Line;
       for (; isspace(*Pkg) && *Pkg != 0;Pkg++);
       // Strip space leading up to the package name, skip blank lines
       char *Pkg = Line;
       for (; isspace(*Pkg) && *Pkg != 0;Pkg++);
-      if (Pkg == 0)
+      if (*Pkg == 0)
         continue;
 
         continue;
 
+#define APT_FIND_NEXT_FIELD \
+      for (End++; isspace(*End) != 0 && *End != 0; ++End) \
+        /* skip spaces */ ; \
+      Start = End; \
+      for (; isspace(*End) == 0 && *End != 0; ++End) \
+        /* find end of word */ ;
+
+#define APT_WARNING_MALFORMED_LINE(FIELD) \
+      if (*End == 0) \
+      { \
+        _error->Warning(_("Malformed override %s line %llu (%s)"),File.c_str(), \
+                        Counter, FIELD ); \
+        continue; \
+      } \
+      *End = 0;
+
       // Find the package and zero..
       // Find the package and zero..
-      char *Start = Pkg;
+      char *Start;
       char *End = Pkg;
       for (; isspace(*End) == 0 && *End != 0; End++);
       char *End = Pkg;
       for (; isspace(*End) == 0 && *End != 0; End++);
-      if (*End == 0)
-      {
-        _error->Warning(_("Malformed override %s line %lu #1"),File.c_str(),
-                        Counter);
-        continue;
-      }      
-      *End = 0;
+      APT_WARNING_MALFORMED_LINE("pkgname");
+
+      APT_FIND_NEXT_FIELD;
 
       // Find the priority
       if (Source == false)
       {
 
       // Find the priority
       if (Source == false)
       {
-        for (End++; isspace(*End) != 0 && *End != 0; End++);
-        Start = End;
-        for (; isspace(*End) == 0 && *End != 0; End++);
-        if (*End == 0)
-        {
-           _error->Warning(_("Malformed override %s line %lu #2"),File.c_str(),
-                           Counter);
-           continue;
-        }
-        *End = 0;
+        APT_WARNING_MALFORMED_LINE("priority");
         Itm.Priority = Start;
         Itm.Priority = Start;
+
+        APT_FIND_NEXT_FIELD;
       }
       }
-      
+
       // Find the Section
       // Find the Section
-      for (End++; isspace(*End) != 0 && *End != 0; End++);
-      Start = End;
-      for (; isspace(*End) == 0 && *End != 0; End++);
-      if (*End == 0)
-      {
-        _error->Warning(_("Malformed override %s line %lu #3"),File.c_str(),
-                        Counter);
-        continue;
-      }      
-      *End = 0;
+      APT_WARNING_MALFORMED_LINE("section");
       Itm.FieldOverride["Section"] = Start;
 
       // Source override files only have the two columns
       Itm.FieldOverride["Section"] = Start;
 
       // Source override files only have the two columns
@@ -98,7 +98,7 @@ bool Override::ReadOverride(string File,bool Source)
         Mapping[Pkg] = Itm;
         continue;
       }
         Mapping[Pkg] = Itm;
         continue;
       }
-      
+
       // Find the =>
       for (End++; isspace(*End) != 0 && *End != 0; End++);
       if (*End != 0)
       // Find the =>
       for (End++; isspace(*End) != 0 && *End != 0; End++);
       if (*End != 0)
@@ -132,7 +132,7 @@ bool Override::ReadOverride(string File,bool Source)
 // Override::ReadExtraOverride - Read the extra override file          /*{{{*/
 // ---------------------------------------------------------------------
 /* This parses the extra override file and reads it into the map */
 // Override::ReadExtraOverride - Read the extra override file          /*{{{*/
 // ---------------------------------------------------------------------
 /* This parses the extra override file and reads it into the map */
-bool Override::ReadExtraOverride(string File,bool Source)
+bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/)
 {
    if (File.empty() == true)
       return true;
 {
    if (File.empty() == true)
       return true;
@@ -142,7 +142,7 @@ bool Override::ReadExtraOverride(string File,bool Source)
       return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
   
    char Line[500];
       return _error->Errno("fopen",_("Unable to open %s"),File.c_str());
   
    char Line[500];
-   unsigned long Counter = 0;
+   unsigned long long Counter = 0;
    while (fgets(Line,sizeof(Line),F) != 0)
    {
       Counter++;
    while (fgets(Line,sizeof(Line),F) != 0)
    {
       Counter++;
@@ -163,7 +163,7 @@ bool Override::ReadExtraOverride(string File,bool Source)
       for (; isspace(*End) == 0 && *End != 0; End++);
       if (*End == 0)
       {
       for (; isspace(*End) == 0 && *End != 0; End++);
       if (*End == 0)
       {
-        _error->Warning(_("Malformed override %s line %lu #1"),File.c_str(),
+        _error->Warning(_("Malformed override %s line %llu #1"),File.c_str(),
                         Counter);
         continue;
       }      
                         Counter);
         continue;
       }      
@@ -175,7 +175,7 @@ bool Override::ReadExtraOverride(string File,bool Source)
       for (; isspace(*End) == 0 && *End != 0; End++);
       if (*End == 0)
       {
       for (; isspace(*End) == 0 && *End != 0; End++);
       if (*End == 0)
       {
-        _error->Warning(_("Malformed override %s line %lu #2"),File.c_str(),
+        _error->Warning(_("Malformed override %s line %llu #2"),File.c_str(),
                         Counter);
         continue;
       }
                         Counter);
         continue;
       }
@@ -188,7 +188,7 @@ bool Override::ReadExtraOverride(string File,bool Source)
       for (; isspace(*(End-1)) && End > Value; End--);
       if (End == Value)
       {
       for (; isspace(*(End-1)) && End > Value; End--);
       if (End == Value)
       {
-        _error->Warning(_("Malformed override %s line %lu #3"),File.c_str(),
+        _error->Warning(_("Malformed override %s line %llu #3"),File.c_str(),
                         Counter);
         continue;
       }      
                         Counter);
         continue;
       }      
@@ -204,14 +204,14 @@ bool Override::ReadExtraOverride(string File,bool Source)
 }
                                                                        /*}}}*/
 
 }
                                                                        /*}}}*/
 
-// Override::GetItem - Get a architecture specific item        /*{{{*/
+// Override::GetItem - Get a architecture specific item                        /*{{{*/
 // ---------------------------------------------------------------------
 /* Returns a override item for the given package and the given architecture.
  * Treats "all" special
  */
 // ---------------------------------------------------------------------
 /* Returns a override item for the given package and the given architecture.
  * Treats "all" special
  */
-Override::Item* Override::GetItem(string Package, string Architecture)
+Override::Item* Override::GetItem(string const &Package, string const &Architecture)
 {
 {
-   map<string,Item>::iterator I = Mapping.find(Package);
+   map<string,Item>::const_iterator I = Mapping.find(Package);
    map<string,Item>::iterator J = Mapping.find(Package + "/" + Architecture);
 
    if (I == Mapping.end() && J == Mapping.end())
    map<string,Item>::iterator J = Mapping.find(Package + "/" + Architecture);
 
    if (I == Mapping.end() && J == Mapping.end())
@@ -230,15 +230,15 @@ Override::Item* Override::GetItem(string Package, string Architecture)
         if (R->Priority != "") result->Priority = R->Priority;
         if (R->OldMaint != "") result->OldMaint = R->OldMaint;
         if (R->NewMaint != "") result->NewMaint = R->NewMaint;
         if (R->Priority != "") result->Priority = R->Priority;
         if (R->OldMaint != "") result->OldMaint = R->OldMaint;
         if (R->NewMaint != "") result->NewMaint = R->NewMaint;
-        for (map<string,string>::iterator foI = R->FieldOverride.begin();
-             foI != R->FieldOverride.end(); foI++)
+        for (map<string,string>::const_iterator foI = R->FieldOverride.begin();
+             foI != R->FieldOverride.end(); ++foI)
          {
            result->FieldOverride[foI->first] = foI->second;
         }
          {
            result->FieldOverride[foI->first] = foI->second;
         }
-      } 
-   } 
+      }
+   }
    return result;
    return result;
-};
+}
 
 
 // Override::Item::SwapMaint - Swap the maintainer field if necessary  /*{{{*/
 
 
 // Override::Item::SwapMaint - Swap the maintainer field if necessary  /*{{{*/
@@ -247,7 +247,7 @@ Override::Item* Override::GetItem(string Package, string Architecture)
    there is a rule but it does not match then the empty string is returned,
    also if there was no rewrite rule the empty string is returned. Failed
    indicates if there was some kind of problem while rewriting. */
    there is a rule but it does not match then the empty string is returned,
    also if there was no rewrite rule the empty string is returned. Failed
    indicates if there was some kind of problem while rewriting. */
-string Override::Item::SwapMaint(string Orig,bool &Failed)
+string Override::Item::SwapMaint(string const &Orig,bool &Failed)
 {
    Failed = false;
    
 {
    Failed = false;
    
@@ -262,13 +262,13 @@ string Override::Item::SwapMaint(string Orig,bool &Failed)
       override file. Thus it persists.*/
 #if 1
    // Break OldMaint up into little bits on double slash boundaries.
       override file. Thus it persists.*/
 #if 1
    // Break OldMaint up into little bits on double slash boundaries.
-   string::iterator End = OldMaint.begin();
+   string::const_iterator End = OldMaint.begin();
    while (1)
    {
    while (1)
    {
-      string::iterator Start = End;      
+      string::const_iterator Start = End;      
       for (; End < OldMaint.end() &&
           (End + 3 >= OldMaint.end() || End[0] != ' ' || 
       for (; End < OldMaint.end() &&
           (End + 3 >= OldMaint.end() || End[0] != ' ' || 
-           End[1] != '/' || End[2] != '/'); End++);
+           End[1] != '/' || End[2] != '/'); ++End);
       if (stringcasecmp(Start,End,Orig.begin(),Orig.end()) == 0)
         return NewMaint;
       
       if (stringcasecmp(Start,End,Orig.begin(),Orig.end()) == 0)
         return NewMaint;
       
@@ -276,7 +276,7 @@ string Override::Item::SwapMaint(string Orig,bool &Failed)
         break;
 
       // Skip the divider and white space
         break;
 
       // Skip the divider and white space
-      for (; End < OldMaint.end() && (*End == '/' || *End == ' '); End++);
+      for (; End < OldMaint.end() && (*End == '/' || *End == ' '); ++End);
    }
 #else
    if (stringcasecmp(OldMaint.begin(),OldMaint.end(),Orig.begin(),Orig.end()) == 0)
    }
 #else
    if (stringcasecmp(OldMaint.begin(),OldMaint.end(),Orig.begin(),Orig.end()) == 0)