- string FileName = IndexFile("Packages");
- pkgCache::PkgFileIterator File = Cache.FileBegin();
- for (; File.end() == false; ++File)
- {
- if (File.FileName() == NULL || FileName != File.FileName())
- continue;
-
- struct stat St;
- if (stat(File.FileName(),&St) != 0)
- {
- if (_config->FindB("Debug::pkgCacheGen", false))
- std::clog << "PackagesIndex::FindInCache - stat failed on " << File.FileName() << std::endl;
- return pkgCache::PkgFileIterator(Cache);
- }
- if ((unsigned)St.st_size != File->Size || St.st_mtime != File->mtime)
- {
- if (_config->FindB("Debug::pkgCacheGen", false))
- std::clog << "PackagesIndex::FindInCache - size (" << St.st_size << " <> " << File->Size
- << ") or mtime (" << St.st_mtime << " <> " << File->mtime
- << ") doesn't match for " << File.FileName() << std::endl;
- return pkgCache::PkgFileIterator(Cache);
- }
- return File;
- }
-
- return File;
-}
- /*}}}*/
-
-// TranslationsIndex::debTranslationsIndex - Contructor /*{{{*/
-// ---------------------------------------------------------------------
-/* */
-debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section,
- char const * const Translation) :
- pkgIndexFile(true), URI(URI), Dist(Dist), Section(Section),
- Language(Translation)
-{}
- /*}}}*/
-// TranslationIndex::Trans* - Return the URI to the translation files /*{{{*/
-// ---------------------------------------------------------------------
-/* */
-inline string debTranslationsIndex::IndexFile(const char *Type) const
-{
- string s =_config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
- string sgzip = s + ".gz";
- if (!FileExists(s) && FileExists(sgzip))
- return sgzip;
- else
- return s;
-}
-string debTranslationsIndex::IndexURI(const char *Type) const
-{
- string Res;
- if (Dist[Dist.size() - 1] == '/')
- {
- if (Dist != "/")
- Res = URI + Dist;
- else
- Res = URI;
- }
- else
- Res = URI + "dists/" + Dist + '/' + Section +
- "/i18n/Translation-";
-
- Res += Type;
- return Res;
-}
- /*}}}*/
-// TranslationsIndex::GetIndexes - Fetch the index files /*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool debTranslationsIndex::GetIndexes(pkgAcquire *Owner) const
-{
- string const TranslationFile = string("Translation-").append(Language);
- new pkgAcqIndexTrans(Owner, IndexURI(Language),
- Info(TranslationFile.c_str()),
- TranslationFile);
-
- return true;
-}
- /*}}}*/
-// TranslationsIndex::Describe - Give a descriptive path to the index /*{{{*/
-// ---------------------------------------------------------------------
-/* This should help the user find the index in the sources.list and
- in the filesystem for problem solving */
-string debTranslationsIndex::Describe(bool Short) const
-{
- char S[300];
- if (Short == true)
- snprintf(S,sizeof(S),"%s",Info(TranslationFile().c_str()).c_str());
- else
- snprintf(S,sizeof(S),"%s (%s)",Info(TranslationFile().c_str()).c_str(),
- IndexFile(Language).c_str());
- return S;