X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/90ff41f8a6fdd304ac645f8279464462ca36fccd..80976dd5452a9cfbe0c4f6229c729711ba685a5f:/apt-pkg/indexfile.cc?ds=sidebyside

diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc
index fad38772b..89615cb41 100644
--- a/apt-pkg/indexfile.cc
+++ b/apt-pkg/indexfile.cc
@@ -8,15 +8,20 @@
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/indexfile.h"
-#endif
+#include<config.h>
 
-#include <apt-pkg/configuration.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/error.h>
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
+#include <apt-pkg/srcrecords.h>
+#include <apt-pkg/macros.h>
 
+#include <string>
+#include <vector>
 #include <clocale>
+#include <cstring>
 									/*}}}*/
 
 // Global list of Item supported
@@ -30,7 +35,8 @@ unsigned long pkgIndexFile::Type::GlobalListLen = 0;
 pkgIndexFile::Type::Type()
 {
    ItmList[GlobalListLen] = this;
-   GlobalListLen++;   
+   GlobalListLen++;
+   Label = NULL;
 }
 									/*}}}*/
 // Type::GetType - Locate the type by name				/*{{{*/
@@ -44,13 +50,12 @@ pkgIndexFile::Type *pkgIndexFile::Type::GetType(const char *Type)
    return 0;
 }
 									/*}}}*/
-    
 // IndexFile::ArchiveInfo - Stub					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-string pkgIndexFile::ArchiveInfo(pkgCache::VerIterator Ver) const
+std::string pkgIndexFile::ArchiveInfo(pkgCache::VerIterator /*Ver*/) const
 {
-   return string();
+   return std::string();
 }
 									/*}}}*/
 // IndexFile::FindInCache - Stub					/*{{{*/
@@ -64,34 +69,26 @@ pkgCache::PkgFileIterator pkgIndexFile::FindInCache(pkgCache &Cache) const
 // IndexFile::SourceIndex - Stub					/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &Record,
-				pkgSrcRecords::File const &File) const
+std::string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &/*Record*/,
+				pkgSrcRecords::File const &/*File*/) const
 {
-   return string();
+   return std::string();
 }
 									/*}}}*/
-// IndexFile::TranslationsAvailable - Check if will use Translation    /*{{{*/
+// IndexFile::TranslationsAvailable - Check if will use Translation	/*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool pkgIndexFile::TranslationsAvailable()
-{
-  const string Translation = _config->Find("APT::Acquire::Translation", "environment");
-  
-  if (Translation.compare("none") != 0)
-    return CheckLanguageCode(LanguageCode().c_str());
-  else
-    return false;
+bool pkgIndexFile::TranslationsAvailable() {
+	return (APT::Configuration::getLanguages().empty() != true);
 }
 									/*}}}*/
-// IndexFile::CheckLanguageCode - Check the Language Code   	        /*{{{*/
+// IndexFile::CheckLanguageCode - Check the Language Code		/*{{{*/
 // ---------------------------------------------------------------------
-/* */
-/* common cases: de_DE, de_DE@euro, de_DE.UTF-8, de_DE.UTF-8@euro,
-                 de_DE.ISO8859-1, tig_ER
-                 more in /etc/gdm/locale.conf 
-*/
-
-bool pkgIndexFile::CheckLanguageCode(const char *Lang)
+/* No intern need for this method anymore as the check for correctness
+   is already done in getLanguages(). Note also that this check is
+   rather bad (doesn't take three character like ast into account).
+   TODO: Remove method with next API break */
+APT_DEPRECATED bool pkgIndexFile::CheckLanguageCode(const char *Lang)
 {
   if (strlen(Lang) == 2 || (strlen(Lang) == 5 && Lang[2] == '_'))
     return true;
@@ -102,31 +99,14 @@ bool pkgIndexFile::CheckLanguageCode(const char *Lang)
   return false;
 }
 									/*}}}*/
-// IndexFile::LanguageCode - Return the Language Code            	/*{{{*/
+// IndexFile::LanguageCode - Return the Language Code			/*{{{*/
 // ---------------------------------------------------------------------
-/* return the language code */
-string pkgIndexFile::LanguageCode()
-{
-  const string Translation = _config->Find("APT::Acquire::Translation", "environment");
-
-  if (Translation.compare("environment") == 0) 
-  {
-     string lang = std::setlocale(LC_MESSAGES,NULL);
-
-     // we have a mapping of the language codes that contains all the language
-     // codes that need the country code as well 
-     // (like pt_BR, pt_PT, sv_SE, zh_*, en_*)
-     char *need_full_langcode[] = { "pt","sv","zh","en", NULL };
-     for(char **s = need_full_langcode;*s != NULL; s++)
-	if(lang.find(*s) == 0)
-	   return lang.substr(0,5);
-     
-     if(lang.size() > 2)
-	return lang.substr(0,2);
-     else
-	return lang;
-  }
-  else 
-     return Translation;
+/* As we have now possibly more than one LanguageCode this method is
+   supersided by a) private classmembers or b) getLanguages().
+   TODO: Remove method with next API break */
+APT_DEPRECATED std::string pkgIndexFile::LanguageCode() {
+	if (TranslationsAvailable() == false)
+		return "";
+	return APT::Configuration::getLanguages()[0];
 }
 									/*}}}*/