]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/configuration.cc
* merged from apt--mvo
[apt.git] / apt-pkg / contrib / configuration.cc
index 4b2c0fbb51977e53bdd21eb4f9ddd01e6c9ab03b..3109fd7a58649b1775ec97d01d8807df5d40cb14 100644 (file)
@@ -15,9 +15,6 @@
    ##################################################################### */
                                                                        /*}}}*/
 // Include files                                                       /*{{{*/
    ##################################################################### */
                                                                        /*}}}*/
 // Include files                                                       /*{{{*/
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/configuration.h"
-#endif
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/strutl.h>
@@ -110,7 +107,7 @@ Configuration::Item *Configuration::Lookup(Item *Head,const char *S,
       return 0;
    
    I = new Item;
       return 0;
    
    I = new Item;
-   I->Tag = string(S,Len);
+   I->Tag.assign(S,Len);
    I->Next = *Last;
    I->Parent = Head;
    *Last = I;
    I->Next = *Last;
    I->Parent = Head;
    *Last = I;
@@ -161,7 +158,7 @@ string Configuration::Find(const char *Name,const char *Default) const
    if (Itm == 0 || Itm->Value.empty() == true)
    {
       if (Default == 0)
    if (Itm == 0 || Itm->Value.empty() == true)
    {
       if (Default == 0)
-        return string();
+        return "";
       else
         return Default;
    }
       else
         return Default;
    }
@@ -180,7 +177,7 @@ string Configuration::FindFile(const char *Name,const char *Default) const
    if (Itm == 0 || Itm->Value.empty() == true)
    {
       if (Default == 0)
    if (Itm == 0 || Itm->Value.empty() == true)
    {
       if (Default == 0)
-        return string();
+        return "";
       else
         return Default;
    }
       else
         return Default;
    }
@@ -294,7 +291,7 @@ string Configuration::FindAny(const char *Name,const char *Default) const
 // Configuration::CndSet - Conditinal Set a value                      /*{{{*/
 // ---------------------------------------------------------------------
 /* This will not overwrite */
 // Configuration::CndSet - Conditinal Set a value                      /*{{{*/
 // ---------------------------------------------------------------------
 /* This will not overwrite */
-void Configuration::CndSet(const char *Name,string Value)
+void Configuration::CndSet(const char *Name,const string &Value)
 {
    Item *Itm = Lookup(Name,true);
    if (Itm == 0)
 {
    Item *Itm = Lookup(Name,true);
    if (Itm == 0)
@@ -306,7 +303,7 @@ void Configuration::CndSet(const char *Name,string Value)
 // Configuration::Set - Set a value                                    /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // Configuration::Set - Set a value                                    /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-void Configuration::Set(const char *Name,string Value)
+void Configuration::Set(const char *Name,const string &Value)
 {
    Item *Itm = Lookup(Name,true);
    if (Itm == 0)
 {
    Item *Itm = Lookup(Name,true);
    if (Itm == 0)
@@ -330,7 +327,7 @@ void Configuration::Set(const char *Name,int Value)
 // Configuration::Clear - Clear an single value from a list            /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // Configuration::Clear - Clear an single value from a list            /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-void Configuration::Clear(string Name, int Value)
+void Configuration::Clear(const string Name, int Value)
 {
    char S[300];
    snprintf(S,sizeof(S),"%i",Value);
 {
    char S[300];
    snprintf(S,sizeof(S),"%i",Value);
@@ -340,7 +337,7 @@ void Configuration::Clear(string Name, int Value)
 // Configuration::Clear - Clear an single value from a list            /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // Configuration::Clear - Clear an single value from a list            /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-void Configuration::Clear(string Name, string Value)
+void Configuration::Clear(const string Name, string Value)
 {
    Item *Top = Lookup(Name.c_str(),false);
    if (Top == 0 || Top->Child == 0)
 {
    Item *Top = Lookup(Name.c_str(),false);
    if (Top == 0 || Top->Child == 0)
@@ -374,11 +371,10 @@ void Configuration::Clear(string Name, string Value)
 void Configuration::Clear(string Name)
 {
    Item *Top = Lookup(Name.c_str(),false);
 void Configuration::Clear(string Name)
 {
    Item *Top = Lookup(Name.c_str(),false);
-   if (Top == 0) {
-      cout << "config item: " << Name << " not found" << endl;
+   if (Top == 0) 
       return;
       return;
-   }
-   Top->Value = string();
+
+   Top->Value.clear();
    Item *Stop = Top;
    Top = Top->Child;
    Stop->Child = 0;
    Item *Stop = Top;
    Top = Top->Child;
    Stop->Child = 0;
@@ -426,6 +422,7 @@ bool Configuration::ExistsAny(const char *Name) const
    string key = Name;
 
    if (key.size() > 2 && key.end()[-2] == '/')
    string key = Name;
 
    if (key.size() > 2 && key.end()[-2] == '/')
+   {
       if (key.find_first_of("fdbi",key.size()-1) < key.size())
       {
          key.resize(key.size() - 2);
       if (key.find_first_of("fdbi",key.size()-1) < key.size())
       {
          key.resize(key.size() - 2);
@@ -436,7 +433,7 @@ bool Configuration::ExistsAny(const char *Name) const
       {
          _error->Warning(_("Unrecognized type abbreviation: '%c'"), key.end()[-3]);
       }
       {
          _error->Warning(_("Unrecognized type abbreviation: '%c'"), key.end()[-3]);
       }
-
+   }
    return Exists(Name);
 }
                                                                        /*}}}*/
    return Exists(Name);
 }
                                                                        /*}}}*/
@@ -486,7 +483,7 @@ string Configuration::Item::FullTag(const Item *Stop) const
    sections like 'zone "foo.org" { .. };' This causes each section to be
    added in with a tag like "zone::foo.org" instead of being split 
    tag/value. AsSectional enables Sectional parsing.*/
    sections like 'zone "foo.org" { .. };' This causes each section to be
    added in with a tag like "zone::foo.org" instead of being split 
    tag/value. AsSectional enables Sectional parsing.*/
-bool ReadConfigFile(Configuration &Conf,string FName,bool AsSectional,
+bool ReadConfigFile(Configuration &Conf,const string &FName,bool AsSectional,
                    unsigned Depth)
 {   
    // Open the stream for reading
                    unsigned Depth)
 {   
    // Open the stream for reading
@@ -510,7 +507,7 @@ bool ReadConfigFile(Configuration &Conf,string FName,bool AsSectional,
       CurLine++;
       // This should be made to work instead, but this is better than looping
       if (F.fail() && !F.eof())
       CurLine++;
       // This should be made to work instead, but this is better than looping
       if (F.fail() && !F.eof())
-         return _error->Error(_("Line %d too long (max %d)"), CurLine, sizeof(Buffer));
+         return _error->Error(_("Line %d too long (max %u)"), CurLine, sizeof(Buffer));
 
       _strtabexpand(Buffer,sizeof(Buffer));
       _strstrip(Buffer);
 
       _strtabexpand(Buffer,sizeof(Buffer));
       _strstrip(Buffer);
@@ -712,13 +709,13 @@ bool ReadConfigFile(Configuration &Conf,string FName,bool AsSectional,
            }
            
            // Empty the buffer
            }
            
            // Empty the buffer
-           LineBuffer = string();
+           LineBuffer.clear();
            
            // Move up a tag, but only if there is no bit to parse
            if (TermChar == '}')
            {
               if (StackPos == 0)
            
            // Move up a tag, but only if there is no bit to parse
            if (TermChar == '}')
            {
               if (StackPos == 0)
-                 ParentTag = string();
+                 ParentTag.clear();
               else
                  ParentTag = Stack[--StackPos];
            }
               else
                  ParentTag = Stack[--StackPos];
            }
@@ -743,8 +740,8 @@ bool ReadConfigFile(Configuration &Conf,string FName,bool AsSectional,
 // ReadConfigDir - Read a directory of config files                    /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // ReadConfigDir - Read a directory of config files                    /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool ReadConfigDir(Configuration &Conf,string Dir,bool AsSectional,
-                   unsigned Depth)
+bool ReadConfigDir(Configuration &Conf,const string &Dir,bool AsSectional,
+                  unsigned Depth)
 {   
    DIR *D = opendir(Dir.c_str());
    if (D == 0)
 {   
    DIR *D = opendir(Dir.c_str());
    if (D == 0)