]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/cacheset.cc
be sure that the RFC1123StrToTime method is run in a LANG=C environment
[apt.git] / apt-pkg / cacheset.cc
index c0b06ba323c58b17d5dde95c9bcdf1c7b704c53d..43ade4b4e7eb2cd27f8e5d0210e72c597572d0b7 100644 (file)
@@ -76,6 +76,39 @@ PackageSet PackageSet::FromRegEx(pkgCacheFile &Cache, std::string pattern, std::
        return pkgset;
 }
                                                                        /*}}}*/
+// GroupedFromCommandLine - Return all versions specified on commandline/*{{{*/
+std::map<unsigned short, PackageSet> PackageSet::GroupedFromCommandLine(
+               pkgCacheFile &Cache, const char **cmdline,
+               std::list<PackageSet::Modifier> const &mods,
+               unsigned short const &fallback, std::ostream &out) {
+       std::map<unsigned short, PackageSet> pkgsets;
+       for (const char **I = cmdline; *I != 0; ++I) {
+               unsigned short modID = fallback;
+               std::string str = *I;
+               for (std::list<PackageSet::Modifier>::const_iterator mod = mods.begin();
+                    mod != mods.end(); ++mod) {
+                       size_t const alength = strlen(mod->Alias);
+                       switch(mod->Pos) {
+                       case PackageSet::Modifier::POSTFIX:
+                               if (str.compare(str.length() - alength, alength,
+                                   mod->Alias, 0, alength) != 0)
+                                       continue;
+                               str.erase(str.length() - alength);
+                               modID = mod->ID;
+                               break;
+                       case PackageSet::Modifier::PREFIX:
+                               continue;
+                       case PackageSet::Modifier::NONE:
+                               continue;
+                       }
+                       break;
+               }
+               PackageSet pset = PackageSet::FromString(Cache, str, out);
+               pkgsets[modID].insert(pset.begin(), pset.end());
+       }
+       return pkgsets;
+}
+                                                                       /*}}}*/
 // FromCommandLine - Return all packages specified on commandline      /*{{{*/
 PackageSet PackageSet::FromCommandLine(pkgCacheFile &Cache, const char **cmdline, std::ostream &out) {
        PackageSet pkgset;