summaryrefslogtreecommitdiff
path: root/apt-pkg/cdrom.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2005-10-17 14:20:25 +0000
committerMichael Vogt <mvo@debian.org>2005-10-17 14:20:25 +0000
commitc511502fcec38680fff2f27aec75908e348e5905 (patch)
tree113bdb52474c1111110da47939342c9fd2994f1a /apt-pkg/cdrom.cc
parent3226f06e15d6c9816c26e87bb58f5589b84a467b (diff)
parent422eeaaadf17904bf2f08cdf9e8998bec645097c (diff)
* merged ddtp support
Patches applied: * michael.vogt@ubuntu.com--2005/apt--ddtp--0--base-0 tag of otavio@debian.org--2005/apt--ddtp--0.6--patch-14 * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-1 * fixed a problem when it comes to the cache rebuilding * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-2 * try harder to get the correct language code * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-3 * fix for output of the description and the debTranslationsIndex::Exists() * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-4 * made the translation downloading work * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-5 * FindInCache() uses the correct file now * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-6 * don't throw any more warnings * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-7 * merged with otavoi * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-8 * merged with otavios branch * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-9 * code cleanups (thanks matt!), moved UsePackage before the description list build in pkgcachegen to catch MMap errors early * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-10 * added a BUGS file with known problem, added apt-cdrom support for translated package descriptions * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-11 * updated with mainline * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-12 * added README.ddtp * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-13 * merged with apt--mvo * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-14 * added DDTP::URL-Remap. KILL THIS FEATURE once ddtp support is offical * michael.vogt@ubuntu.com--2005/apt--ddtp--0--patch-15 * remvoed the remap feature again, dosn't work anyway * otavio@debian.org--2005/apt--ddtp--0.6--base-0 tag of apt@packages.debian.org/apt--main--0--patch-71 * otavio@debian.org--2005/apt--ddtp--0.6--patch-1 Port DDTP to APT 0.6 branch * otavio@debian.org--2005/apt--ddtp--0.6--patch-2 Fix sintax error on apt-cache * otavio@debian.org--2005/apt--ddtp--0.6--patch-3 Remove a unused var. * otavio@debian.org--2005/apt--ddtp--0.6--patch-4 Fix problems due APT and structural changes. * otavio@debian.org--2005/apt--ddtp--0.6--patch-5 Fix problems due APT and structural changes. * otavio@debian.org--2005/apt--ddtp--0.6--patch-6 Sync with apt@packages.debian.org/apt--main--0--patch-74 * otavio@debian.org--2005/apt--ddtp--0.6--patch-7 Sync with apt@packages.debian.org/apt--main--0--patch-75 * otavio@debian.org--2005/apt--ddtp--0.6--patch-8 Sync with apt--main--0--patch-76 * otavio@debian.org--2005/apt--ddtp--0.6--patch-9 Remote a changelog entry added by mistake while merging. * otavio@debian.org--2005/apt--ddtp--0.6--patch-10 Sync with apt--main--0--patch-78 * otavio@debian.org--2005/apt--ddtp--0.6--patch-11 Revert fixes changes to move these to apt--fixes--0 branch. * otavio@debian.org--2005/apt--ddtp--0.6--patch-12 Another fix included here by mistake. Moving it to apt--fixes--0 branch. * otavio@debian.org--2005/apt--ddtp--0.6--patch-13 Merge last changes from apt--main--0. * otavio@debian.org--2005/apt--ddtp--0.6--patch-14 Add FindInCache method to skip the rebuild of cache every time. * otavio@debian.org--2005/apt--ddtp--0.6--patch-15 Merge changes did by Michael Vogt to solve some rebuilding mistakes. * otavio@debian.org--2005/apt--ddtp--0.6--patch-16 Does't show Description twice * otavio@debian.org--2005/apt--ddtp--0.6--patch-17 Merge last fixes did by Michael but preserve my version of apt-cache.cc fix. * otavio@debian.org--2005/apt--ddtp--0.6--patch-18 Revert changes did by mistake on translation files. * otavio@debian.org--2005/apt--ddtp--0.6--patch-19 Merge last changes did from upstream side. * otavio@debian.org--2005/apt--ddtp--0.6--patch-20 Sync with apt--main--0--patch-87
Diffstat (limited to 'apt-pkg/cdrom.cc')
-rw-r--r--apt-pkg/cdrom.cc47
1 files changed, 38 insertions, 9 deletions
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc
index ce1beb39b..b42c82dd0 100644
--- a/apt-pkg/cdrom.cc
+++ b/apt-pkg/cdrom.cc
@@ -30,12 +30,16 @@ using namespace std;
search that short circuits when it his a package file in the dir.
This speeds it up greatly as the majority of the size is in the
binary-* sub dirs. */
-bool pkgCdrom::FindPackages(string CD,vector<string> &List,
- vector<string> &SList, vector<string> &SigList,
+bool pkgCdrom::FindPackages(string CD,
+ vector<string> &List,
+ vector<string> &SList,
+ vector<string> &SigList,
+ vector<string> &TransList,
string &InfoDir, pkgCdromStatus *log,
unsigned int Depth)
{
static ino_t Inodes[9];
+ DIR *D;
// if we have a look we "pulse" now
if(log)
@@ -90,8 +94,28 @@ bool pkgCdrom::FindPackages(string CD,vector<string> &List,
if (_config->FindB("APT::CDROM::Thorough",false) == false)
return true;
}
+
+ // see if we find translatin indexes
+ if (stat("i18n",&Buf) == 0)
+ {
+ D = opendir("i18n");
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ if(strstr(Dir->d_name,"Translation") != NULL)
+ {
+ if (_config->FindB("Debug::aptcdrom",false) == true)
+ std::clog << "found translations: " << Dir->d_name << "\n";
+ string file = Dir->d_name;
+ if(file.substr(file.size()-3,file.size()) == ".gz")
+ file = file.substr(0,file.size()-3);
+ TransList.push_back(CD+"i18n/"+ file);
+ }
+ }
+ closedir(D);
+ }
+
- DIR *D = opendir(".");
+ D = opendir(".");
if (D == 0)
return _error->Errno("opendir","Unable to read %s",CD.c_str());
@@ -127,7 +151,7 @@ bool pkgCdrom::FindPackages(string CD,vector<string> &List,
Inodes[Depth] = Buf.st_ino;
// Descend
- if (FindPackages(CD + Dir->d_name,List,SList,SigList,InfoDir,log,Depth+1) == false)
+ if (FindPackages(CD + Dir->d_name,List,SList,SigList,TransList,InfoDir,log,Depth+1) == false)
break;
if (chdir(CD.c_str()) != 0)
@@ -612,9 +636,10 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
vector<string> List;
vector<string> SourceList;
vector<string> SigList;
+ vector<string> TransList;
string StartDir = SafeGetCWD();
string InfoDir;
- if (FindPackages(CDROM,List,SourceList, SigList,InfoDir,log) == false)
+ if (FindPackages(CDROM,List,SourceList, SigList,TransList,InfoDir,log) == false)
{
log->Update("\n");
return false;
@@ -642,11 +667,13 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
DropRepeats(List,"Packages");
DropRepeats(SourceList,"Sources");
DropRepeats(SigList,"Release.gpg");
+ DropRepeats(TransList,"");
if(log) {
msg.str("");
- ioprintf(msg, _("Found %i package indexes, %i source indexes and "
- "%i signatures\n"),
- List.size(), SourceList.size(), SigList.size());
+ ioprintf(msg, _("Found %i package indexes, %i source indexes, "
+ "%i translation indexes and %i signatures\n"),
+ List.size(), SourceList.size(), TransList.size(),
+ SigList.size());
log->Update(msg.str(), STEP_SCAN);
}
@@ -736,8 +763,10 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
// Copy the package files to the state directory
PackageCopy Copy;
SourceCopy SrcCopy;
+ TranslationsCopy TransCopy;
if (Copy.CopyPackages(CDROM,Name,List, log) == false ||
- SrcCopy.CopyPackages(CDROM,Name,SourceList, log) == false)
+ SrcCopy.CopyPackages(CDROM,Name,SourceList, log) == false ||
+ TransCopy.CopyTranslations(CDROM,Name,TransList, log) == false)
return false;
// reduce the List so that it takes less space in sources.list