]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/aptconfiguration.cc
* apt-pkg/aptconfiguration.cc:
[apt.git] / apt-pkg / aptconfiguration.cc
index e8c8e73d0b042919e408beb77f9f91d355323daf..cc77eea6faa6be7881fed2dec06110e12d34c63a 100644 (file)
@@ -53,7 +53,7 @@ const Configuration::getCompressionTypes(bool const &Cached) {
        // load the order setting into our vector
        std::vector<std::string> const order = _config->FindVector("Acquire::CompressionTypes::Order");
        for (std::vector<std::string>::const_iterator o = order.begin();
-            o != order.end(); o++) {
+            o != order.end(); ++o) {
                if ((*o).empty() == true)
                        continue;
                // ignore types we have no method ready to use
@@ -140,7 +140,7 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All,
                for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) {
                        string const name = Ent->d_name;
                        size_t const foundDash = name.rfind("-");
-                       size_t const foundUnderscore = name.rfind("_");
+                       size_t const foundUnderscore = name.rfind("_", foundDash);
                        if (foundDash == string::npos || foundUnderscore == string::npos ||
                            foundDash <= foundUnderscore ||
                            name.substr(foundUnderscore+1, foundDash-(foundUnderscore+1)) != "Translation")
@@ -151,7 +151,7 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All,
                        // Skip unusual files, like backups or that alike
                        string::const_iterator s = c.begin();
                        for (;s != c.end(); ++s) {
-                               if (isalpha(*s) == 0)
+                               if (isalpha(*s) == 0 && *s != '_')
                                        break;
                        }
                        if (s != c.end())
@@ -232,6 +232,8 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All,
                        codes = environment;
                } else if (forceLang != "none")
                        codes.push_back(forceLang);
+               else //if (forceLang == "none")
+                       builtin.clear();
                allCodes = codes;
                for (std::vector<string>::const_iterator b = builtin.begin();
                     b != builtin.end(); ++b)
@@ -274,7 +276,7 @@ std::vector<std::string> const Configuration::getLanguages(bool const &All,
        // then needed and ensure the codes are not listed twice.
        bool noneSeen = false;
        for (std::vector<string>::const_iterator l = lang.begin();
-            l != lang.end(); l++) {
+            l != lang.end(); ++l) {
                if (*l == "environment") {
                        for (std::vector<string>::const_iterator e = environment.begin();
                             e != environment.end(); ++e) {
@@ -333,7 +335,7 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache
                FILE *dpkg = popen(dpkgcall.c_str(), "r");
                char buf[1024];
                if(dpkg != NULL) {
-                       if (fgets(buf, sizeof(buf), dpkg) != NULL) {
+                       while (fgets(buf, sizeof(buf), dpkg) != NULL) {
                                char* arch = strtok(buf, " ");
                                while (arch != NULL) {
                                        for (; isspace(*arch) != 0; ++arch);
@@ -352,7 +354,7 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache
 
        if (archs.empty() == true ||
            std::find(archs.begin(), archs.end(), arch) == archs.end())
-               archs.push_back(arch);
+               archs.insert(archs.begin(), arch);
 
        // erase duplicates and empty strings
        for (std::vector<string>::reverse_iterator a = archs.rbegin();