]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/configuration.cc
add a helper to easily get a vector of strings from the configuration
[apt.git] / apt-pkg / contrib / configuration.cc
index 7326b84ea227d0ca0fdfed16c43df39df164ec4c..b83ece3e47935d0f1213ea872e8a3bc6c092fcde 100644 (file)
@@ -182,9 +182,9 @@ string Configuration::FindFile(const char *Name,const char *Default) const
    if (Itm == 0 || Itm->Value.empty() == true)
    {
       if (Default == 0)
-        return "";
+        return rootDir;
       else
-        return Default;
+        return rootDir + Default;
    }
    
    string val = Itm->Value;
@@ -223,6 +223,25 @@ string Configuration::FindDir(const char *Name,const char *Default) const
    return Res;
 }
                                                                        /*}}}*/
+// Configuration::FindVector - Find a vector of values                 /*{{{*/
+// ---------------------------------------------------------------------
+/* Returns a vector of config values under the given item */
+vector<string> Configuration::FindVector(const char *Name) const
+{
+   vector<string> Vec;
+   const Item *Top = Lookup(Name);
+   if (Top == NULL)
+      return Vec;
+
+   Item *I = Top->Child;
+   while(I != NULL)
+   {
+      Vec.push_back(I->Value);
+      I = I->Next;
+   }
+   return Vec;
+}
+                                                                       /*}}}*/
 // Configuration::FindI - Find an integer value                                /*{{{*/
 // ---------------------------------------------------------------------
 /* */
@@ -521,6 +540,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool AsSectional,
          F.getline(Buffer,sizeof(Buffer) / 2);
 
          Input += Buffer;
+         delete[] Buffer;
        }
       while (F.fail() && !F.eof());
 
@@ -582,7 +602,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool AsSectional,
         if (InQuote == true)
            continue;
         
-        if (*I == '/' && I + 1 != End && I[1] == '/')
+        if ((*I == '/' && I + 1 != End && I[1] == '/') || *I == '#')
          {
            End = I;
            break;