Browse Source

* ABI/API change: add "VerIterator::TranslatedDescription()" method to make the life of the api user easier

debian/1.8.y
Michael Vogt 17 years ago
parent
commit
012b102ad1
  1. 1
      apt-pkg/cacheiterators.h
  2. 19
      apt-pkg/pkgcache.cc
  3. 8
      cmdline/apt-cache.cc

1
apt-pkg/cacheiterators.h

@ -129,6 +129,7 @@ class pkgCache::VerIterator
inline const char *Arch() const {return Ver->Arch == 0?0:Owner->StrP + Ver->Arch;};
inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + Ver->ParentPkg);};
inline DescIterator DescriptionList() const;
DescIterator TranslatedDescription() const;
inline DepIterator DependsList() const;
inline PrvIterator ProvidesList() const;
inline VerFileIterator FileList() const;

19
apt-pkg/pkgcache.cc

@ -26,6 +26,7 @@
#endif
#include <apt-pkg/pkgcache.h>
#include <apt-pkg/indexfile.h>
#include <apt-pkg/version.h>
#include <apt-pkg/error.h>
#include <apt-pkg/strutl.h>
@ -43,6 +44,7 @@
using std::string;
// Cache::Header::Header - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* Simply initialize the header */
@ -608,3 +610,20 @@ string pkgCache::PkgFileIterator::RelStr()
return Res;
}
/*}}}*/
// VerIterator::TranslatedDescription - Return the a DescIter for locale/*{{{*/
// ---------------------------------------------------------------------
/* return a DescIter for the current locale or the default if none is
* found
*/
pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const
{
pkgCache::DescIterator DescDefault = DescriptionList();
pkgCache::DescIterator Desc = DescDefault;
for (; Desc.end() == false; Desc++)
if (pkgIndexFile::LanguageCode() == Desc.LanguageCode())
break;
if (Desc.end() == true) Desc = DescDefault;
return Desc;
};
/*}}}*/

8
cmdline/apt-cache.cc

@ -1237,13 +1237,7 @@ bool DisplayRecord(pkgCache::VerIterator V)
// Show the right description
pkgRecords Recs(*GCache);
pkgCache::DescIterator DescDefault = V.DescriptionList();
pkgCache::DescIterator Desc = DescDefault;
for (; Desc.end() == false; Desc++)
if (pkgIndexFile::LanguageCode() == Desc.LanguageCode())
break;
if (Desc.end() == true) Desc = DescDefault;
pkgCache::DescIterator Desc = V.TranslatedDescription();
pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
cout << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc();

Loading…
Cancel
Save