diff options
26 files changed, 1214 insertions, 558 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index c48443eff..7bcdf285b 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -1369,9 +1369,20 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ { HashString ExpectedIndexHash; const indexRecords::checkSum *Record = MetaIndexParser->Lookup((*Target)->MetaKey); + bool compressedAvailable = false; if (Record == NULL) { - if (verify == true && (*Target)->IsOptional() == false) + if ((*Target)->IsOptional() == true) + { + std::vector<std::string> types = APT::Configuration::getCompressionTypes(); + for (std::vector<std::string>::const_iterator t = types.begin(); t != types.end(); ++t) + if (MetaIndexParser->Exists(string((*Target)->MetaKey).append(".").append(*t)) == true) + { + compressedAvailable = true; + break; + } + } + else if (verify == true) { Status = StatAuthError; strprintf(ErrorText, _("Unable to find expected entry '%s' in Release file (Wrong sources.list entry or malformed file)"), (*Target)->MetaKey.c_str()); @@ -1400,7 +1411,7 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ if ((*Target)->IsSubIndex() == true) new pkgAcqSubIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, ExpectedIndexHash); - else if (transInRelease == false || MetaIndexParser->Exists((*Target)->MetaKey) == true) + else if (transInRelease == false || Record != NULL || compressedAvailable == true) { if (_config->FindB("Acquire::PDiffs",true) == true && transInRelease == true && MetaIndexParser->Exists(string((*Target)->MetaKey).append(".diff/Index")) == true) diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc index 122e2c809..d457781c3 100644 --- a/apt-pkg/contrib/error.cc +++ b/apt-pkg/contrib/error.cc @@ -67,9 +67,10 @@ bool GlobalError::NAME (const char *Function, const char *Description,...) { \ int const errsv = errno; \ while (true) { \ va_start(args,Description); \ - if (InsertErrno(TYPE, Function, Description, args, errsv, msgSize) == false) \ - break; \ + bool const retry = InsertErrno(TYPE, Function, Description, args, errsv, msgSize); \ va_end(args); \ + if (retry == false) \ + break; \ } \ return false; \ } @@ -88,9 +89,10 @@ bool GlobalError::InsertErrno(MsgType const &type, const char *Function, int const errsv = errno; while (true) { va_start(args,Description); - if (InsertErrno(type, Function, Description, args, errsv, msgSize) == false) - break; + bool const retry = InsertErrno(type, Function, Description, args, errsv, msgSize); va_end(args); + if (retry == false) + break; } return false; } diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 0b6e07f75..f24df65fc 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1599,7 +1599,11 @@ unsigned long long FileFd::Size() char ignore[1000]; unsigned long long read = 0; do { - Read(ignore, sizeof(ignore), &read); + if (Read(ignore, sizeof(ignore), &read) == false) + { + Seek(oldSeek); + return 0; + } } while(read != 0); size = Tell(); Seek(oldSeek); @@ -1616,10 +1620,16 @@ unsigned long long FileFd::Size() * bits of the file */ // FIXME: Size for gz-files is limited by 32bit… no largefile support if (lseek(iFd, -4, SEEK_END) < 0) - return FileFdErrno("lseek","Unable to seek to end of gzipped file"); - size = 0L; + { + FileFdErrno("lseek","Unable to seek to end of gzipped file"); + return 0; + } + size = 0; if (read(iFd, &size, 4) != 4) - return FileFdErrno("read","Unable to read original size of gzipped file"); + { + FileFdErrno("read","Unable to read original size of gzipped file"); + return 0; + } #ifdef WORDS_BIGENDIAN uint32_t tmp_size = size; @@ -1629,7 +1639,10 @@ unsigned long long FileFd::Size() #endif if (lseek(iFd, oldPos, SEEK_SET) < 0) - return FileFdErrno("lseek","Unable to seek in gzipped file"); + { + FileFdErrno("lseek","Unable to seek in gzipped file"); + return 0; + } return size; } diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 588ab68c4..b0bd6b184 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -295,7 +295,7 @@ bool pkgDPkgPM::SendPkgsInfo(FILE * const F, unsigned int const &Version) if (CurVer.end() == true && (I->Op == Item::Remove || I->Op == Item::Purge)) CurVer = FindNowVersion(I->Pkg); - else if (CurVer.end() == true) + if (CurVer.end() == true) { if (Version <= 2) fprintf(F, "- "); diff --git a/buildlib/configure.mak b/buildlib/configure.mak index 68d0535b4..7052e4c56 100644 --- a/buildlib/configure.mak +++ b/buildlib/configure.mak @@ -2,7 +2,7 @@ # This make fragment is included by the toplevel make to handle configure # and setup. It defines a target called startup that when run will init -# the build directory, generate configure from configure.in, create aclocal +# the build directory, generate configure from configure.ac, create aclocal # and has rules to run config.status should one of the .in files change. # Input @@ -48,7 +48,7 @@ missing-config-files: @echo "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD" exit 100 -configure: aclocal.m4 configure.in buildlib/config.guess buildlib/config.sub +configure: aclocal.m4 configure.ac buildlib/config.guess buildlib/config.sub autoconf aclocal.m4: $(wildcard buildlib/*.m4) diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak index 5b970876a..599b9ed85 100644 --- a/buildlib/defaults.mak +++ b/buildlib/defaults.mak @@ -172,12 +172,11 @@ ifeq ($(NUM_PROCS),1) PARALLEL_RUN=no endif -# mvo: commented out, lead to build failures in the arch-build target -#ifndef PARALLEL_RUN -# PARALLEL_RUN=yes -# .EXPORT: PARALLEL_RUN -# # handle recursion -# ifneq ($(NUM_PROCS),) -# MAKEFLAGS += -j $(NUM_PROCS) -# endif -#endif +ifndef PARALLEL_RUN + PARALLEL_RUN=yes + export PARALLEL_RUN + # handle recursion + ifneq ($(NUM_PROCS),) + MAKEFLAGS += -j $(NUM_PROCS) + endif +endif diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index fb4467c2c..e847de875 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -1127,6 +1127,24 @@ bool Dotty(CommandLine &CmdL) // --------------------------------------------------------------------- /* This displays the package record from the proper package index file. It is not used by DumpAvail for performance reasons. */ + +static unsigned char const* skipDescriptionFields(unsigned char const * DescP) +{ + char const * const TagName = "\nDescription"; + size_t const TagLen = strlen(TagName); + while ((DescP = (unsigned char*)strchr((char*)DescP, '\n')) != NULL) + { + if (DescP[1] == ' ') + DescP += 2; + else if (strncmp((char*)DescP, TagName, TagLen) == 0) + DescP += TagLen; + else + break; + } + if (DescP != NULL) + ++DescP; + return DescP; +} bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V) { pkgCache *Cache = CacheFile.GetPkgCache(); @@ -1150,11 +1168,12 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V) if (PkgF.Open(I.FileName(), FileFd::ReadOnly, FileFd::Extension) == false) return false; - // Read the record - unsigned char *Buffer = new unsigned char[Cache->HeaderP->MaxVerFileSize+1]; - Buffer[V.FileList()->Size] = '\n'; - if (PkgF.Seek(V.FileList()->Offset) == false || - PkgF.Read(Buffer,V.FileList()->Size) == false) + // Read the record (and ensure that it ends with a newline and NUL) + unsigned char *Buffer = new unsigned char[Cache->HeaderP->MaxVerFileSize+2]; + Buffer[Vf->Size] = '\n'; + Buffer[Vf->Size+1] = '\0'; + if (PkgF.Seek(Vf->Offset) == false || + PkgF.Read(Buffer,Vf->Size) == false) { delete [] Buffer; return false; @@ -1165,10 +1184,11 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V) if (DescP != NULL) ++DescP; else - DescP = Buffer + V.FileList()->Size; + DescP = Buffer + Vf->Size; // Write all but Description - if (fwrite(Buffer,1,DescP - Buffer,stdout) < (size_t)(DescP - Buffer)) + size_t const length = DescP - Buffer; + if (length != 0 && FileFd::Write(STDOUT_FILENO, Buffer, length) == false) { delete [] Buffer; return false; @@ -1184,35 +1204,37 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V) cout << std::endl << "Description-md5: " << Desc.md5() << std::endl; // Find the first field after the description (if there is any) - while ((DescP = (unsigned char*)strchr((char*)DescP, '\n')) != NULL) - { - if (DescP[1] == ' ') - DescP += 2; - else if (strncmp((char*)DescP, "\nDescription", strlen("\nDescription")) == 0) - DescP += strlen("\nDescription"); - else - break; - } - if (DescP != NULL) - ++DescP; + DescP = skipDescriptionFields(DescP); } - // if we have no translation, we found a lonely Description-md5, so don't skip it + // else we have no translation, so we found a lonely Description-md5 -> don't skip it - if (DescP != NULL) + // write the rest of the buffer, but skip mixed in Descriptions* fields + while (DescP != NULL) { - // write the rest of the buffer - const unsigned char *end=&Buffer[V.FileList()->Size]; - if (fwrite(DescP,1,end-DescP,stdout) < (size_t)(end-DescP)) + const unsigned char * const Start = DescP; + const unsigned char *End = (unsigned char*)strstr((char*)DescP, "\nDescription"); + if (End == NULL) + { + End = &Buffer[Vf->Size]; + DescP = NULL; + } + else + { + ++End; // get the newline into the output + DescP = skipDescriptionFields(End + strlen("Description")); + } + size_t const length = End - Start; + if (length != 0 && FileFd::Write(STDOUT_FILENO, Start, length) == false) { delete [] Buffer; return false; } } - // write a final newline (after the description) + // write a final newline after the last field cout<<endl; - delete [] Buffer; + delete [] Buffer; return true; } /*}}}*/ @@ -1300,7 +1322,11 @@ bool Search(CommandLine &CmdL) pkgCache::VerIterator V = Plcy->GetCandidateVer(P); if (V.end() == false) { - DFList[G->ID].Df = V.TranslatedDescription().FileList(); + pkgCache::DescIterator const D = V.TranslatedDescription(); + //FIXME: packages without a description can't be found + if (D.end() == true) + continue; + DFList[G->ID].Df = D.FileList(); DFList[G->ID].ID = G->ID; } @@ -1315,7 +1341,11 @@ bool Search(CommandLine &CmdL) continue; unsigned long id = Prv.OwnerPkg().Group()->ID; - DFList[id].Df = V.TranslatedDescription().FileList(); + pkgCache::DescIterator const D = V.TranslatedDescription(); + //FIXME: packages without a description can't be found + if (D.end() == true) + continue; + DFList[id].Df = D.FileList(); DFList[id].ID = id; size_t const PrvPatternOffset = id * NumPatterns; diff --git a/configure.in b/configure.ac index 4c25ba5d4..28d77bb36 100644 --- a/configure.in +++ b/configure.ac @@ -10,10 +10,10 @@ dnl need a C++ compiler that is semi-standard conformant, exceptions are dnl not used but STL is. dnl 'make -f Makefile startup' will generate the configure file from -dnl configure.in correctly and can be run at any time +dnl configure.ac correctly and can be run at any time AC_PREREQ(2.50) -AC_INIT(configure.in) +AC_INIT(configure.ac) AC_CONFIG_AUX_DIR(buildlib) AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) @@ -180,10 +180,6 @@ AC_SUBST(DOTDIR) ah_NUM_PROCS ah_GCC3DEP -dnl It used to be that the user could select translations and that could get -dnl passed to the makefiles, but now that can only work if you use special -dnl gettext approved makefiles, so this feature is unsupported by this. -ALL_LINGUAS="bg bs ca cs cy da de dz el es eu fi fr gl hu it ja ko ku nb nl nn pl pt_BR pt ro ru sk sl sv th tl uk vi zn_CN zh_TW" AM_GNU_GETTEXT(external) if test x"$USE_NLS" = "xyes"; then AC_DEFINE(USE_NLS) diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh index 4ada56556..d105f440a 100644 --- a/debian/apt.auto-removal.sh +++ b/debian/apt.auto-removal.sh @@ -42,7 +42,7 @@ version_test_gt () return "$?" } -list=$(${DPKG} -l 'linux-image-[0-9]*'|awk '/^ii/ { print $2 }' | sed -e's/linux-image-//') +list=$(${DPKG} -l 'linux-image-[0-9]*'|awk '/^ii/ && $2 !~ /-dbg$/ { print $2 }' | sed -e's/linux-image-//') latest_version="" previous_version="" diff --git a/debian/apt.postinst b/debian/apt.postinst index bd814e1af..9ff1e031c 100644 --- a/debian/apt.postinst +++ b/debian/apt.postinst @@ -28,6 +28,10 @@ case "$1" in chmod -f 0640 /var/log/apt/term.log* || true fi + # create kernel autoremoval blacklist on update + if dpkg --compare-versions "$2" lt-nl 0.9.9.3; then + /etc/kernel/postinst.d/apt-auto-removal + fi ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/debian/changelog b/debian/changelog index 49dee8800..5159e5b17 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,47 @@ +apt (0.9.9.4) unstable; urgency=low + + [ David Kalnischkies ] + * pick up Translation-* even if only compressed available (Closes: 717665) + * request absolute URIs from proxies again (0.9.9.3 regession) + (Closes: 717891) + + [ Michael vogt ] + * fix missing changelog entry for 0.9.9.3 (git-dch issue) + + -- Michael Vogt <mvo@debian.org> Fri, 26 Jul 2013 09:58:17 +0200 + +apt (0.9.9.3) unstable; urgency=low + + [ Ben Hutchings ] + * debian/apt.auto-removal.sh: + - do not include debug symbol packages for the kernel in the + blacklist (closes: #717616) + + [ Michael Vogt ] + * debian/apt.postinst: + - run /etc/kernel/postinst.d/apt-auto-removal once on upgrade + to ensure that the correct auto-removal list is generated + (closes: #717615) + + [ David Kalnischkies ] + * skip all Description fields in apt-cache, not just first (Closes: 717254) + * fix 'apt-cache search' crash with missing description (Closes: 647590) + + [ Raphael Geissert ] + * Do not send a connection: keep-alive, at all + + -- Michael Vogt <mvo@debian.org> Thu, 25 Jul 2013 17:14:58 +0200 + +apt (0.9.9.2) unstable; urgency=low + + [ Programs translations ] + * Vietnamese updated by Tran Ngoc Quan. Closes: #717016 + + [ David Kalnischkies ] + * fix if-clause to generate hook-info for 'rc' packages (Closes: 717006) + + -- Michael Vogt <mvo@debian.org> Wed, 17 Jul 2013 14:56:34 +0200 + apt (0.9.9.1) unstable; urgency=low [ Michael Vogt ] diff --git a/debian/control b/debian/control index 7730c2491..ca18ff01f 100644 --- a/debian/control +++ b/debian/control @@ -5,7 +5,7 @@ Maintainer: APT Development Team <deity@lists.debian.org> Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>, Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>, Julian Andres Klode <jak@debian.org> -Standards-Version: 3.9.3 +Standards-Version: 3.9.4 Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~), zlib1g-dev, libbz2-dev, xsltproc, docbook-xsl, docbook-xml, @@ -43,7 +43,7 @@ Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Breaks: apt (<< 0.9.4~) Section: libs -Description: package managment runtime library +Description: package management runtime library This library provides the common functionality for searching and managing packages as well as information about packages. Higher-level package managers can depend upon this library. @@ -107,9 +107,9 @@ Package: apt-utils Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: xz-utils -Description: package managment related utility programs +Description: package management related utility programs This package contains some less used commandline utilities related - to package managment with APT. + to package management with APT. . * apt-extracttemplates is used by debconf to prompt for configuration questions before installation. diff --git a/debian/libapt-inst1.5.symbols b/debian/libapt-inst1.5.symbols index 8fcd29a3e..030795382 100644 --- a/debian/libapt-inst1.5.symbols +++ b/debian/libapt-inst1.5.symbols @@ -81,12 +81,8 @@ libapt-inst.so.1.5 libapt-inst1.5 #MINVER# (c++|optional)"vtable for pkgCache::VerIterator@Base" 0.8.0 (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 -### gcc-4.4 specific -# (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 -# (c++|optional=std)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append<unsigned char*>(unsigned char*, unsigned char*)@Base" 0.8.0 -### gcc-4.6 specific +### gcc artefacts (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 - (c++|optional=std)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_dispatch<unsigned char*>(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned char*, unsigned char*, std::__false_type)@Base" 0.8.0 ### try to ignore std:: template instances (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 (c++|regex|optional=std)"^typeinfo name for std::iterator<.*>@Base$" 0.8.0 diff --git a/debian/libapt-pkg4.12.symbols b/debian/libapt-pkg4.12.symbols index bf42e8b10..2b86c9676 100644 --- a/debian/libapt-pkg4.12.symbols +++ b/debian/libapt-pkg4.12.symbols @@ -36,6 +36,7 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"safe_snprintf(char*, char*, char const*, ...)@Base" 0.8.0 (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char const*, char const*)@Base" 0.8.0 (c++)"stringcasecmp(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)@Base" 0.8.0 + (c++)"stringcasecmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 0.8.0 (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@Base" 0.8.0 (c++)"tolower_ascii(int)@Base" 0.8.0 (c++)"ParseQuoteWord(char const*&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 @@ -90,6 +91,7 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"guard variable for pkgCacheGenerator::Dynamic<pkgCache::PkgFileIterator>::toReMap@Base" 0.8.0 (c++)"HashString::SupportedHashes()@Base" 0.8.0 (c++)"HashString::_SupportedHashes@Base" 0.8.0 + (c++)"HashString::HashString(HashString const&)@Base" 0.8.0 (c++)"HashString::HashString(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"HashString::HashString(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"HashString::HashString()@Base" 0.8.0 @@ -517,7 +519,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"pkgCacheGenerator::ListParser::~ListParser()@Base" 0.8.0 (c++)"pkgCacheGenerator::NewFileVer(pkgCache::VerIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 (c++)"pkgCacheGenerator::NewPackage(pkgCache::PkgIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)@Base" 0.8.0 (c++)"pkgCacheGenerator::SelectFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgIndexFile const&, unsigned long)@Base" 0.8.0 (c++)"pkgCacheGenerator::FinishCache(OpProgress*)@Base" 0.8.0 (c++)"pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 @@ -1124,32 +1125,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# debVS@Base 0.8.0 pkgLibVersion@Base 0.8.0 pkgVersion@Base 0.8.0 -### demangle strangeness - buildd report it as MISSING and as new… - (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0 -### gcc-4.4 specific -# (c++|optional=inherent)"APT::PackageSet::PackageSet(APT::PackageSet const&)@Base" 0.8.0 -# (c++|optional=inline)"stringcasecmp(char const*, char const*, char const*)@Base" 0.8.0 -# (arch=armel|c++|optional=inline)"stringcasecmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 0.8.0 -# (c++|optional=inherent)"APT::VersionSet::insert(pkgCache::VerIterator const&)@Base" 0.8.0 -# (c++|optional=inline)"APT::VersionSet::insert(APT::VersionSet const&)@Base" 0.8.0 -# (c++|optional=private)"debTranslationsIndex::IndexFile(char const*) const@Base" 0.8.0 -# (c++|optional=inline)"pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>::end() const@Base" 0.8.0 -# (c++|optional=inherent)"HashString::operator=(HashString const&)@Base" 0.8.0 -# (c++|regex|optional=std)"^std::less<[^ ]+>::operator\(\)\(.+\) const@Base$" 0.8.0 -# (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 -# (c++|regex|optional=std)"^pkgCache::(Dep|Pkg|Ver|Grp|Prv|Desc|PkgFile)Iterator\*\* std::_.+@Base$" 0.8.0 -### gcc-4.5 specific -# (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 -# (c++|optional=inline)"FileFd::FileFd(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 -# (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 -# (c++|optional=template)"SPtrArray<unsigned char>::~SPtrArray()@Base" 0.8.0 -### gcc-4.6 specific -# (c++|optional=template)"SPtrArray<pkgCache::Version*>::~SPtrArray()@Base" 0.8.0 -# (c++|optional=inline)"IndexTarget::~IndexTarget()@Base" 0.8.11 - (c++|regex|optional=std)"^std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char( const|)\*>\(.+\)@Base$" 0.8.0 - (c++|regex|optional=std)"^std::vector<DiffInfo, .+@Base$" 0.8.0 - (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 - (c++|optional=template)"HashSumValue<160>::operator std::basic_string<char, std::char_traits<char>, std::allocator<char> >() const@Base" 0.8.16~exp14 ### architecture specific: va_list (arch=armel armhf|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@Base" 0.8.15~exp1 (arch=i386 hurd-i386 kfreebsd-i386|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@Base" 0.8.15~exp1 @@ -1177,16 +1152,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# ### architecture specific: size_t (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"_strtabexpand(char*, unsigned long)@Base" 0.8.0 -### try to ignore std:: template instances - (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@Base$" 0.8.0 - (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@Base$" 0.8.0 - (c++|regex|optional=std)"^(void |DiffInfo\* |)std::_.*@Base$" 0.8.0 - (c++|regex|optional=std)"^(bool|void) std::(operator|sort_heap|make_heap)[^ ]+<.+ >\(.+\)@Base$" 0.8.0 - (c++|regex|optional=std)"^std::reverse_iterator<.+ > std::__.+@Base$" 0.8.0 - (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 - (c++|regex|optional=std)"^__gnu_cxx::__[^ ]+<.*@Base$" 0.8.0 - (c++|regex|optional=std)"^typeinfo name for std::iterator<.*>@Base$" 0.8.0 - (c++|regex|optional=std)"^typeinfo for std::iterator<.*>@Base$" 0.8.0 ### (c++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.1 (c++)"CreateAPTDirectoryIfNeeded(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.2 @@ -1368,7 +1333,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"FileFd::Skip(unsigned long long)@Base" 0.8.16~exp6 (c++)"FileFd::Write(void const*, unsigned long long)@Base" 0.8.16~exp6 (c++)"FileFd::Truncate(unsigned long long)@Base" 0.8.16~exp6 - (c++)"pkgCache::PkgIterator::PkgIterator(pkgCache&, pkgCache::Package*)@Base" 0.8.16~exp6 (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@Base" 0.8.16~exp6 (c++)"OptionalIndexTarget::IsOptional() const@Base" 0.8.16~exp6 (c++)"typeinfo for pkgTagFile@Base" 0.8.16~exp6 @@ -1404,16 +1368,11 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++|optional=internal|regex)"^SHA384_.*@Base$" 0.8.16~exp2 (c++|optional=internal|regex)"^SHA512_.*@Base$" 0.8.16~exp2 ### orderlist rework: the touched methods are protected -# (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator)@Base" 0.8.0 -# (c++)"pkgPackageManager::DepAdd(pkgOrderList&, pkgCache::PkgIterator, int)@Base" 0.8.0 -# (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool)@Base" 0.8.15~exp1 (c++)"SigINT(int)@Base" 0.8.16~exp14 (c++)"pkgPackageManager::SigINTStop@Base" 0.8.16~exp14 (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@Base" 0.8.16~exp14 (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@Base" 0.8.16~exp14 ### FileFd rework: supporting different on-the-fly (de)compressing needs more parameter (abi), but the api is stable -# (c++)"FileFd::OpenDescriptor(int, FileFd::OpenMode, bool)@Base" 0.8.0 -# (c++)"FileFd::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 (c++)"FileFd::OpenDescriptor(int, unsigned int, FileFd::CompressMode, bool)@Base" 0.8.16~exp9 (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@Base" 0.8.16~exp9 (c++)"FileFd::ModificationTime()@Base" 0.8.16~exp9 @@ -1425,31 +1384,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++|optional=deprecated,previous-inline)"FileFd::gzFd()@Base" 0.8.0 (c++|optional=private)"FileFd::OpenInternDescriptor(unsigned int, APT::Configuration::Compressor const&)@Base" 0.8.16~exp9 ### CacheSet rework: making them real containers breaks bigtime the API (for the CacheSetHelper) -# (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, _IO_FILE*, APT::PackageSet const&, OpProgress*)@Base" 0.8.16~exp2 -# (c++)"EDSP::WriteScenarioLimitedDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::PackageSet const&)@Base" 0.8.16~exp2 -# (c++)"APT::PackageSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::PackageSet::FromCommandLine(pkgCacheFile&, char const**, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::PackageSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::PackageSet::Modifier, std::allocator<APT::PackageSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::PackageSet::FromName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::PackageSet::FromTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::PackageSet::FromRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::PackageSet::~PackageSet()@Base" 0.8.0 -# (c++)"APT::VersionSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionSet::Version const&, APT::CacheSetHelper&, bool const&)@Base" 0.8.0 -# (c++)"APT::VersionSet::FromPackage(pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::VersionSet::FromCommandLine(pkgCacheFile&, char const**, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::VersionSet::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::VersionSet::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::VersionSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::VersionSet::Modifier, std::allocator<APT::VersionSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 -# (c++)"APT::VersionSet::~VersionSet()@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::showTaskSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::showRegExSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::canNotFindTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::canNotFindRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::canNotFindAllVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::canNotFindPackage(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::canNotFindCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 -# (c++)"APT::CacheSetHelper::canNotFindInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator::getPkg() const@Base" 0.8.16~exp9 (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::getConstructor() const@Base" 0.8.16~exp9 (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::empty() const@Base" 0.8.16~exp9 @@ -1489,7 +1423,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::list<APT::VersionContainerInterface::Modifier, std::allocator<APT::VersionContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, _IO_FILE*, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&, OpProgress*)@Base" 0.8.16~exp9 (c++)"EDSP::WriteScenarioLimitedDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&)@Base" 0.8.16~exp9 - (c++)"APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator std::max_element<APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator, CompareProviders>(APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator, APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator, CompareProviders)@Base" 0.8.16~exp9 (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 (c++)"typeinfo for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 @@ -1530,3 +1463,53 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++|optional=private)"pkgCacheGenerator::MergeListVersion(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgCache::VerIterator*&)@Base" 0.8.16~exp7 (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator&, pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp7 (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7 + (c++)"pkgTagSection::Exists(char const*)@Base" 0.9.7.9~exp1 + (c++)"_strrstrip(char*)@Base" 0.9.7.9~exp2 + (c++)"SplitClearSignedFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, FileFd*)@Base" 0.9.7.9~exp2 + (c++)"OpenMaybeClearSignedFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd&)@Base" 0.9.7.9~exp2 + (c++)"ExecGPGV(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&, int*)@Base" 0.9.7.9~exp2 + (c++)"SigVerify::RunGPGV(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@Base" 0.9.7.9~exp2 + (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&, char const*, char const*, bool)@Base" 0.9.3 + (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@Base" 0.9.3 + (c++|optional=private)"pkgAcqMethod::Dequeue()@Base" 0.9.4 + (c++)"pkgCache::DepIterator::IsMultiArchImplicit() const@Base" 0.9.6 + (c++)"pkgCache::PrvIterator::IsMultiArchImplicit() const@Base" 0.9.6 + (c++)"APT::PackageContainerInterface::FromGroup(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification()@Base" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::PkgIterator const&)@Base" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::VerIterator const&)@Base" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(char const* const&)@Base" 0.9.7 + (c++)"APT::Configuration::checkLanguage(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@Base" 0.9.7.5 + (c++)"pkgCdrom::DropTranslation(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)@Base" 0.9.7.5 + (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@Base" 0.9.8 + (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@Base" 0.9.8 + (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, unsigned int, unsigned int const&, unsigned int const&, unsigned int*&)@Base" 0.9.8 + (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned long, unsigned long)@Base" 0.9.8 + (c++)"FileFd::FileFdErrno(char const*, char const*, ...)@Base" 0.9.9 + (c++)"FileFd::FileFdError(char const*, ...)@Base" 0.9.9 + (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, GlobalError::Item)@Base" 0.9.9 + (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.9.9.1 + (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.9.9.1 + (c++)"pkgDPkgPM::SendPkgsInfo(_IO_FILE*, unsigned int const&)@Base" 0.9.9.1 + (c++)"pkgCache::VerIterator::MultiArchType() const@Base" 0.9.9.1 +### demangle strangeness - buildd report it as MISSING and as new… + (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0 +### gcc artefacts + (c++|regex|optional=std)"^std::vector<DiffInfo, .+@Base$" 0.8.0 + (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 + (c++|optional=std)"std::ctype<char>::widen(char) const@Base" 0.8.0 + (c++|optional=std)"char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_construct<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<char> const&, std::forward_iterator_tag)@Base" 0.8.0 + (c++|optional=std)"char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_construct<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<char> const&, std::forward_iterator_tag)@Base" 0.8.0 + (c++|optional=std)"char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag)@Base" 0.8.0 + (c++|optional=std)"char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_construct<char*>(char*, char*, std::allocator<char> const&, std::forward_iterator_tag)@Base" 0.8.0 +### try to ignore std:: template instances + (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@Base$" 0.8.0 + (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@Base$" 0.8.0 + (c++|regex|optional=std)"^(void |DiffInfo\* |)std::_.*@Base$" 0.8.0 + (c++|regex|optional=std)"^(bool|void) std::(operator|sort_heap|make_heap)[^ ]+<.+ >\(.+\)@Base$" 0.8.0 + (c++|regex|optional=std)"^std::reverse_iterator<.+ > std::__.+@Base$" 0.8.0 + (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 + (c++|regex|optional=std)"^__gnu_cxx::__[^ ]+<.*@Base$" 0.8.0 + (c++|regex|optional=std)"^typeinfo name for std::iterator<.*>@Base$" 0.8.0 + (c++|regex|optional=std)"^typeinfo for std::iterator<.*>@Base$" 0.8.0 diff --git a/debian/rules b/debian/rules index 3979bd810..fc44d5a68 100755 --- a/debian/rules +++ b/debian/rules @@ -66,7 +66,7 @@ LIBAPT_INST=libapt-inst$(LIBAPTINST_MAJOR) # do not fail as we are just experimenting with symbol files for now export DPKG_GENSYMBOLS_CHECK_LEVEL=0 -build: build/build-stamp +build-binary: build/build-binary-stamp build-debiandoc: build/build-debiandoc-stamp build-manpages: build/build-manpages-stamp @@ -76,15 +76,15 @@ build-manpages: build/build-manpages-stamp build/environment.mak: build/configure-stamp @true -configure: configure.in -build/configure-stamp: configure +configure: configure.ac +build/configure-stamp: configure buildlib/config.sub buildlib/config.guess dh_testdir -mkdir build cp COPYING debian/copyright cd build && CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" ../configure $(confflags) touch $@ -build/build-stamp: build/configure-stamp +build/build-binary-stamp: build/configure-stamp # Add here commands to compile the package. $(MAKE) binary # compat symlink for the locale split @@ -116,11 +116,12 @@ clean: rm -rf build rm -f debian/$(LIBAPT_PKG).install debian/$(LIBAPT_INST).install \ debian/libapt-pkg-dev.install + test ! -L buildlib/config.guess || rm -f buildlib/config.guess + test ! -L buildlib/config.sub || rm -f buildlib/config.sub debian/%.install: debian/%.install.in sed 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' $< > $@ -binary-indep: apt-doc libapt-pkg-doc # Build architecture-independent files here. libapt-pkg-doc: build-debiandoc dh_testdir -p$@ @@ -172,9 +173,8 @@ apt-doc: build-debiandoc # Build architecture-dependent files here. -binary-arch: $(LIBAPT_PKG) $(LIBAPT_INST) apt libapt-pkg-dev apt-utils apt-transport-https apt_MANPAGES = apt apt-cache apt-cdrom apt-config apt-get apt-key apt-mark apt-secure apt apt.conf apt_preferences sources.list -apt: build build-manpages +apt: build-binary build-manpages dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -220,7 +220,7 @@ apt: build build-manpages dh_md5sums -p$@ dh_builddeb -p$@ -libapt-pkg-dev: build debian/libapt-pkg-dev.install +libapt-pkg-dev: build-binary debian/libapt-pkg-dev.install dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -240,7 +240,7 @@ libapt-pkg-dev: build debian/libapt-pkg-dev.install dh_builddeb -p$@ apt-utils_MANPAGES = apt-sortpkgs apt-ftparchive apt-extracttemplates -apt-utils: build build-manpages +apt-utils: build-binary build-manpages dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -269,7 +269,7 @@ apt-utils: build build-manpages dh_md5sums -p$@ dh_builddeb -p$@ -$(LIBAPT_PKG): build debian/$(LIBAPT_PKG).install +$(LIBAPT_PKG): build-binary debian/$(LIBAPT_PKG).install dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -288,7 +288,7 @@ $(LIBAPT_PKG): build debian/$(LIBAPT_PKG).install dh_md5sums -p$@ dh_builddeb -p$@ -$(LIBAPT_INST): build debian/$(LIBAPT_INST).install +$(LIBAPT_INST): build-binary debian/$(LIBAPT_INST).install dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -307,7 +307,7 @@ $(LIBAPT_INST): build debian/$(LIBAPT_INST).install dh_md5sums -p$@ dh_builddeb -p$@ -apt-transport-https: build libapt-pkg-dev +apt-transport-https: build-binary libapt-pkg-dev dh_testdir -p$@ dh_testroot -p$@ dh_prep -p$@ @@ -330,13 +330,18 @@ apt-transport-https: build libapt-pkg-dev dh_md5sums -p$@ dh_builddeb -p$@ +buildlib/config.guess buildlib/config.sub: + $(MAKE) "$@" + configure: $(MAKE) configure -really-clean: clean - -find . -name Makefile.in -print0 | xargs --null --no-run-if-empty -- rm -f - find -name ChangeLog | xargs rm -f - rm -f l33ch-stamp - +# translate targets to targets required by debian-policy +binary-arch: $(LIBAPT_PKG) $(LIBAPT_INST) apt libapt-pkg-dev apt-utils apt-transport-https +binary-indep: apt-doc libapt-pkg-doc binary: binary-indep binary-arch +build-arch: build-binary +build-indep: build-manpages build-debiandoc +build: build-indep build-arch + .PHONY: build clean binary-indep binary-arch binary diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index cf79aff85..a0087cd2c 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -1,14 +1,16 @@ -# Doxyfile 1.6.1 +# Doxyfile 1.8.4 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project +# doxygen (www.doxygen.org) for a project. # -# All text after a hash (#) is considered a comment and will be ignored +# All text after a double hash (##) is considered a comment and is placed +# in front of the TAG it is preceding . +# All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") +# Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options @@ -22,8 +24,9 @@ DOXYFILE_ENCODING = UTF-8 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. PROJECT_NAME = @PACKAGE@ @@ -33,6 +36,19 @@ PROJECT_NAME = @PACKAGE@ PROJECT_NUMBER = @PACKAGE_VERSION@ +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location @@ -56,9 +72,9 @@ CREATE_SUBDIRS = NO # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. +# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, +# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, +# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English @@ -112,7 +128,9 @@ FULL_PATH_NAMES = YES # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the -# path to strip. +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. STRIP_FROM_PATH = @@ -126,7 +144,7 @@ STRIP_FROM_PATH = STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems +# (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO @@ -181,6 +199,13 @@ TAB_SIZE = 8 ALIASES = +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list @@ -207,22 +232,40 @@ OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO -# Doxygen selects the parser to use depending on the extension of the files it parses. -# With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this tag. -# The format is ext=language, where ext is a file extension, and language is one of -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. EXTENSION_MAPPING = +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration +# func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = YES @@ -238,10 +281,10 @@ CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. @@ -262,6 +305,22 @@ DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields or simple typedef fields will be shown +# inline in the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO (the default), structs, classes, and unions are shown on a separate +# page (for HTML and Man pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct @@ -272,21 +331,16 @@ SUBGROUPING = YES TYPEDEF_HIDES_STRUCT = NO -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can +# be an expensive process and often the same symbol appear multiple times in +# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too +# small doxygen will become slower. If the cache is too large, memory is wasted. +# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid +# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 +# symbols. + +LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options @@ -295,7 +349,7 @@ SYMBOL_CACHE_SIZE = 0 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO @@ -304,6 +358,11 @@ EXTRACT_ALL = NO EXTRACT_PRIVATE = NO +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. @@ -326,7 +385,7 @@ EXTRACT_LOCAL_METHODS = NO # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. +# anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO @@ -386,6 +445,12 @@ HIDE_SCOPE_NAMES = YES SHOW_INCLUDE_FILES = YES +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. @@ -405,7 +470,13 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO @@ -425,6 +496,15 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. @@ -450,15 +530,16 @@ GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in +# the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the +# The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. @@ -470,12 +551,6 @@ MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = YES - # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. @@ -499,15 +574,26 @@ SHOW_NAMESPACES = YES FILE_VERSION_FILTER = -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by -# doxygen. The layout file controls the global structure of the generated output files -# in an output format independent way. The create the layout file that represents -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a -# file name after the option, if omitted DoxygenLayout.xml will be used as the name -# of the layout file. +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- @@ -536,7 +622,7 @@ WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES -# This WARN_NO_PARAMDOC option can be abled to get warnings for +# The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of @@ -582,8 +668,9 @@ INPUT_ENCODING = UTF-8 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = *.cc \ *.h @@ -594,14 +681,16 @@ FILE_PATTERNS = *.cc \ RECURSIVE = YES -# The EXCLUDE tag can be used to specify files and/or directories that should +# The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. EXCLUDE = -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO @@ -654,8 +743,10 @@ IMAGE_PATH = # is the value of the INPUT_FILTER tag, and <input-file> is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. +# If FILTER_PATTERNS is specified, this tag will be ignored. +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. INPUT_FILTER = @@ -665,8 +756,8 @@ INPUT_FILTER = # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = @@ -676,6 +767,21 @@ FILTER_PATTERNS = FILTER_SOURCE_FILES = NO +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- @@ -694,7 +800,7 @@ INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. +# fragments. Normal C, C++ and Fortran comments will always remain visible. STRIP_CODE_COMMENTS = YES @@ -778,7 +884,14 @@ HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a -# standard header. +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = @@ -790,27 +903,80 @@ HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. HTML_STYLESHEET = -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefor more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 -HTML_ALIGN_MEMBERS = YES +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). +# page has loaded. HTML_DYNAMIC_SECTIONS = NO +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). @@ -819,7 +985,8 @@ HTML_DYNAMIC_SECTIONS = NO # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. GENERATE_DOCSET = NO @@ -837,6 +1004,16 @@ DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_BUNDLE_ID = org.doxygen.Project +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) @@ -881,10 +1058,10 @@ BINARY_TOC = NO TOC_EXPAND = NO -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER -# are set, an additional index file will be generated that can be used as input for -# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated -# HTML documentation. +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO @@ -906,20 +1083,24 @@ QHP_NAMESPACE = QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. -# For more information please see +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see -# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>. +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> +# Qt Help Project / Custom Filters</a>. QHP_CUST_FILTER_ATTRS = -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's # filter section matches. -# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>. +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> +# Qt Help Project / Filter Attributes</a>. QHP_SECT_FILTER_ATTRS = @@ -930,16 +1111,30 @@ QHP_SECT_FILTER_ATTRS = QHG_LOCATION = -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. -DISABLE_INDEX = NO +GENERATE_ECLIPSEHELP = NO -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. -ENUM_VALUES_PER_LINE = 4 +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. @@ -948,13 +1143,17 @@ ENUM_VALUES_PER_LINE = 4 # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. -USE_INLINE_TREES = NO +ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree @@ -962,6 +1161,11 @@ USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need @@ -970,13 +1174,112 @@ TREEVIEW_WIDTH = 250 FORMULA_FONTSIZE = 10 -# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP) -# there is already a search function so this one should typically -# be disabled. +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript +# pieces of code that will be used on startup of the MathJax code. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = NO +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search +# engine library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- @@ -994,6 +1297,9 @@ LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. LATEX_CMD_NAME = latex @@ -1010,8 +1316,8 @@ MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4 will be used. PAPER_TYPE = a4wide @@ -1027,6 +1333,20 @@ EXTRA_PACKAGES = LATEX_HEADER = +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images +# or other source files which should be copied to the LaTeX output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. + +LATEX_EXTRA_FILES = + # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references @@ -1053,10 +1373,19 @@ LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO -# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -1088,7 +1417,7 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's +# Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. @@ -1163,6 +1492,21 @@ XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- +# configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files +# that can be used to generate PDF. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. If left blank docbook will be used as the default path. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- @@ -1233,7 +1577,7 @@ MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. +# pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES @@ -1263,15 +1607,15 @@ PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES @@ -1279,22 +1623,18 @@ SKIP_FUNCTION_MACROS = YES # Configuration::additions related to external references #--------------------------------------------------------------------------- -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. TAGFILES = @@ -1315,6 +1655,12 @@ ALLEXTERNALS = NO EXTERNAL_GROUPS = YES +# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed +# in the related pages index. If set to NO, only the current project's +# pages will be listed. + +EXTERNAL_PAGES = YES + # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). @@ -1327,9 +1673,8 @@ PERL_PATH = /usr/bin/perl # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES @@ -1355,14 +1700,20 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = @HAVE_DOT@ -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. DOT_FONTNAME = FreeSans @@ -1371,17 +1722,16 @@ DOT_FONTNAME = FreeSans DOT_FONTSIZE = 10 -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. +# CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES @@ -1403,6 +1753,15 @@ GROUP_GRAPHS = YES UML_LOOK = NO +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# manageable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. @@ -1439,11 +1798,11 @@ CALL_GRAPH = NO CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. +# will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. @@ -1451,11 +1810,22 @@ GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. @@ -1467,6 +1837,12 @@ DOT_PATH = @DOTDIR@ DOTFILE_DIRS = +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is diff --git a/methods/http.cc b/methods/http.cc index ec5b1ff52..278ddb290 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -682,28 +682,27 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) // Just in case. if (Itm->Uri.length() >= sizeof(Buf)) abort(); - - /* Build the request. We include a keep-alive header only for non-proxy - requests. This is to tweak old http/1.0 servers that do support keep-alive - but not HTTP/1.1 automatic keep-alive. Doing this with a proxy server - will glitch HTTP/1.0 proxies because they do not filter it out and - pass it on, HTTP/1.1 says the connection should default to keep alive - and we expect the proxy to do this */ + + /* RFC 2616 §5.1.2 requires absolute URIs for requests to proxies, + but while its a must for all servers to accept absolute URIs, + it is assumed clients will sent an absolute path for non-proxies */ + std::string requesturi; if (Proxy.empty() == true || Proxy.Host.empty()) - { - // see LP bugs #1003633 and #1086997. The "+" is encoded as a workaround - // for a amazon S3 bug - sprintf(Buf,"GET %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive\r\n", - QuoteString(Uri.Path,"+~ ").c_str(),ProperHost.c_str()); - } + requesturi = Uri.Path; else - { - /* Generate a cache control header if necessary. We place a max - cache age on index files, optionally set a no-cache directive - and a no-store directive for archives. */ - sprintf(Buf,"GET %s HTTP/1.1\r\nHost: %s\r\n", - Itm->Uri.c_str(),ProperHost.c_str()); - } + requesturi = Itm->Uri; + + // The "+" is encoded as a workaround for a amazon S3 bug + // see LP bugs #1003633 and #1086997. + requesturi = QuoteString(requesturi, "+~ "); + + /* Build the request. No keep-alive is included as it is the default + in 1.1, can cause problems with proxies, and we are an HTTP/1.1 + client anyway. + C.f. https://tools.ietf.org/wg/httpbis/trac/ticket/158 */ + sprintf(Buf,"GET %s HTTP/1.1\r\nHost: %s\r\n", + requesturi.c_str(),ProperHost.c_str()); + // generate a cache control header (if needed) if (_config->FindB("Acquire::http::No-Cache",false) == true) { diff --git a/po/LINGUAS b/po/LINGUAS index c5d8999bf..6d77cf856 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1 +1,7 @@ -ar ast bg bs ca cs cy da de dz el es eu fi fr gl hu it ja km ko ku lt mr nb ne nl nn pl pt pt_BR ro ru sk sl sv th tl uk vi zh_CN zh_TW +## If a language isn't listed here but a po file is available the build will fail. +## If a language is disabled deliberately, list it in a line starting with a single '#' + +ar ast bg bs ca cs cy da de dz el es eu fi fr gl hu it ja km ko ku lt mr nb ne nl nn pl pt pt_BR ro ru sk sl sv th tl tr uk vi zh_CN zh_TW + +## disabled by translator request #313283: +# he diff --git a/po/makefile b/po/makefile index 5a3c7fb67..b239da5cc 100644 --- a/po/makefile +++ b/po/makefile @@ -14,7 +14,7 @@ SUBDIR=po # Bring in the default rules include ../buildlib/defaults.mak -CATALOGS := $(addsuffix .gmo,$(shell cat LINGUAS)) +CATALOGS := $(addsuffix .gmo, $(shell sed -e '/^\#/ d' -e '/^$$/ d' LINGUAS | tr '\n' ' ')) DOMAINS := $(notdir $(wildcard $(PO_DOMAINS)/*)) POTFILES := $(addsuffix .pot,$(addprefix $(PO)/,$(DOMAINS))) @@ -66,10 +66,10 @@ $(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po mkdir -p $(LOCALE)/$(notdir $*)/LC_MESSAGES/ cp $@ $(LOCALE)/$(notdir $*)/LC_MESSAGES/$(call GETDOMAIN,$*).mo -stats: +stats: all-linguas-enabled for i in *.pot *.po; do echo -n "$$i: "; msgfmt --output-file=/dev/null --statistics $$i; done -binary: $(POTFILES) $(MOFILES) +binary: $(POTFILES) $(MOFILES) all-linguas-enabled $(PACKAGE)-all.pot: $(POTFILES) # we create our partial pot files without a header to avoid changing dates in *.mo files, @@ -80,8 +80,8 @@ $(PACKAGE)-all.pot: $(POTFILES) $(MSGCOMM) --more-than=0 $(PO)/$(PACKAGE)-dummy.pot $(POTFILES) --output=$(PACKAGE)-all.pot rm -f $(PO)/$(PACKAGE)-dummy.pot -.PHONY: update-po -update-po: $(PACKAGE)-all.pot +.PHONY: update-po all-linguas-enabled +update-po: $(PACKAGE)-all.pot all-linguas-enabled for lang in ${LINGUAS}; do \ echo "Updating $$lang.po"; \ $(MSGMERGE) $$lang.po $(PACKAGE)-all.pot -o $$lang.new.po; \ @@ -89,6 +89,16 @@ update-po: $(PACKAGE)-all.pot rm -f $$lang.new.po; \ done +all-linguas-enabled: LINGUAS +ifdef NOISY + echo "Available Translations: $(shell ls *.po | cut -d'.' -f 1 | sort | tr '\n' ' ')" + echo "Mentioned Translations: $(shell sed -e '/^\#\#/ d' -e '/^$$/ d' -e 's/# //' LINGUAS | tr ' ' '\n' | sort | tr '\n' ' ')" + echo "Build Translations: $(shell echo "$(LINGUAS)" | tr ' ' '\n' | sort | tr '\n' ' ')" +endif + test "$(shell ls *.po | cut -d'.' -f 1 | sort | tr '\n' ' ')" = \ + "$(shell sed -e '/^\#\#/ d' -e '/^$$/ d' -e 's/# //' LINGUAS | tr ' ' '\n' | sort | tr '\n' ' ')" || \ + ( echo "ERROR: Not all available translations are mentioned in po/LINGUAS!"; exit 100) + clean: clean/local clean/local: rm -f $(MOFILES) $(LANG_POFILES) $(PO)/*.d @@ -1,14 +1,14 @@ # Vietnamese Translation for Apt. # This file is put in the public domain. # Clytie Siddall <clytie@riverland.net.au>, 2005, 2006, 2007, 2008, 2009, 2010. -# Trần Ngọc Quân <vnwildman@gmail.com>, 2012. +# Trần Ngọc Quân <vnwildman@gmail.com>, 2012-2013. # msgid "" msgstr "" -"Project-Id-Version: apt 0.9.7.5\n" +"Project-Id-Version: apt-0.9.9.1\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "POT-Creation-Date: 2013-06-26 07:37+0200\n" -"PO-Revision-Date: 2012-11-20 14:12+0700\n" +"PO-Revision-Date: 2013-07-16 08:10+0700\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language: vi\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Team-Website: <http://translationproject.org/team/vi.html>\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: LocFactoryEditor 1.8\n" +"X-Generator: Poedit 1.5.5\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-Basepath: ../\n" @@ -72,11 +72,11 @@ msgstr "Tổng liên quan phiên bản và tập tin: " #: cmdline/apt-cache.cc:343 msgid "Total Desc/File relations: " -msgstr "Tổng liên quan mô tả/tập tin: " +msgstr "Tổng quan hệ mô-tả/tập-tin: " #: cmdline/apt-cache.cc:345 msgid "Total Provides mappings: " -msgstr "Tổng ánh xạ Miễn là: " +msgstr "Tổng ánh xạ Cung cấp: " #: cmdline/apt-cache.cc:357 msgid "Total globbed strings: " @@ -92,7 +92,7 @@ msgstr "Tổng chỗ nghỉ: " #: cmdline/apt-cache.cc:384 msgid "Total space accounted for: " -msgstr "Tổng chỗ đã tính: " +msgstr "Tổng chỗ đã tính dành cho: " #: cmdline/apt-cache.cc:515 cmdline/apt-cache.cc:1147 #, c-format @@ -107,7 +107,7 @@ msgstr "Không tìm thấy gói" #: cmdline/apt-cache.cc:1243 msgid "You must give at least one search pattern" -msgstr "Bạn phải đưa ra ít nhất 1 chuỗi tìm kiếm" +msgstr "Bạn phải đưa ra ít nhất một chuỗi tìm kiếm" #: cmdline/apt-cache.cc:1401 msgid "This command is deprecated. Please use 'apt-mark showauto' instead." @@ -164,7 +164,7 @@ msgstr " Bảng phiên bản:" #: cmdline/apt-internal-solver.cc:33 cmdline/apt-sortpkgs.cc:147 #, c-format msgid "%s %s for %s compiled on %s %s\n" -msgstr "%s %s dành cho %s được biên dịch %s %s\n" +msgstr "%s %s dành cho %s được biên dịch trên %s %s\n" #: cmdline/apt-cache.cc:1730 msgid "" @@ -247,14 +247,18 @@ msgid "" "You may try the --cdrom option to set the CD-ROM mount point. See 'man apt-" "cdrom' for more information about the CD-ROM auto-detection and mount point." msgstr "" +"Không tìm thấy CD-ROM bằng cách dò tìm hay sử dụng điểm gắn mặc định.\n" +"Bạn có lẽ nên dùng tùy chọn --cdrom để đặt điểm gắn CD-ROM.\n" +"Xem 'man apt-cdrom' để có thêm thông tin về tự động dò tìm và điểm gắn CD-" +"ROM." #: cmdline/apt-cdrom.cc:85 msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'" -msgstr "Hãy cung cấp tên cho Đĩa này, như “Debian 5.0.3 Đĩa 1”" +msgstr "Hãy cung cấp tên cho Đĩa này, ví dụ như là: “Debian 5.0.3 Đĩa 1”" #: cmdline/apt-cdrom.cc:100 msgid "Please insert a Disc in the drive and press enter" -msgstr "Hãy nạp đĩa vào ổ và bấm nút Enter" +msgstr "Hãy đưa đĩa vào ổ và bấm nút Enter" #: cmdline/apt-cdrom.cc:135 #, c-format @@ -267,7 +271,7 @@ msgstr "Hãy lặp lại tiến trình này cho các Đĩa còn lại trong bộ #: cmdline/apt-config.cc:46 msgid "Arguments not in pairs" -msgstr "Không có các đối số dạng cặp" +msgstr "Các đối số không thành cặp" #: cmdline/apt-config.cc:87 msgid "" @@ -314,7 +318,7 @@ msgstr "Lỗi biên dịch biểu thức chính quy - %s" #: cmdline/apt-get.cc:260 msgid "The following packages have unmet dependencies:" -msgstr "Những gói theo đây phụ thuộc vào phần mềm chưa có:" +msgstr "Những gói theo đây có phần phụ thuộc chưa có:" #: cmdline/apt-get.cc:350 #, c-format @@ -380,8 +384,8 @@ msgid "" "WARNING: The following essential packages will be removed.\n" "This should NOT be done unless you know exactly what you are doing!" msgstr "" -"CẢNH BÁO: theo đây có những gói chủ yếu sẽ bị gỡ bỏ.\n" -"ĐỪNG làm như thế trừ khi bạn biết làm gì ở đây nó một cách chính xác." +"CẢNH BÁO: Có những gói chủ yếu sau đây sẽ bị gỡ bỏ.\n" +"ĐỪNG làm như thế trừ khi bạn biết chính xác mình đang làm gì!" #: cmdline/apt-get.cc:602 #, c-format @@ -433,7 +437,7 @@ msgstr " [Không phải phiên bản ứng cử]" #: cmdline/apt-get.cc:679 msgid "You should explicitly select one to install." -msgstr "Bạn nên chọn một cách dứt khoát gói cần cài." +msgstr "Bạn nên chọn một rõ ràng gói cần cài." #: cmdline/apt-get.cc:682 #, c-format @@ -443,8 +447,8 @@ msgid "" "is only available from another source\n" msgstr "" "Gói %s không phải sẵn sàng, nhưng mà một gói khác\n" -"đã tham chiếu đến nó. Có lẽ có nghĩa là gói còn thiếu,\n" -"đã trở thành cũ, hay chỉ sẵn sàng từ nguồn khác.\n" +"đã tham chiếu đến nó. Có lẽ có gói còn thiếu,\n" +"không còn dùng nữa, hay chỉ sẵn sàng từ một nguồn khác.\n" #: cmdline/apt-get.cc:700 msgid "However the following packages replace it:" @@ -464,12 +468,12 @@ msgstr "Không thể gỡ bỏ được gói ảo như “%s”\n" #: cmdline/apt-get.cc:737 cmdline/apt-get.cc:940 #, c-format msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n" -msgstr "Chưa cài đặt gói %s nên không thể gỡ bỏ nó. Có phải bạn muốn '%s'?\n" +msgstr "Chưa cài đặt gói %s nên không thể gỡ bỏ nó. Có phải ý bạn là '%s'?\n" #: cmdline/apt-get.cc:743 cmdline/apt-get.cc:946 #, c-format msgid "Package '%s' is not installed, so not removed\n" -msgstr "Chưa cài đặt gói %s nên không thể gỡ bỏ nó\n" +msgstr "Gói %s chưa được cài đặt, thế nên không thể gỡ bỏ nó\n" #: cmdline/apt-get.cc:788 #, c-format @@ -485,7 +489,7 @@ msgstr "Đang bỏ qua %s vì nó đã được cài đặt và chưa lập tùy #, c-format msgid "Skipping %s, it is not installed and only upgrades are requested.\n" msgstr "" -"Đang bỏ qua %s vì nó không phải được cài đặt và chỉ yêu cầu Nâng cấp.\n" +"Đang bỏ qua %s vì nó chưa được cài đặt và chỉ Nâng cấp là được yêu cầu.\n" #: cmdline/apt-get.cc:834 #, c-format @@ -495,7 +499,7 @@ msgstr "Không thể cài đặt lại %s vì không thể tải về nó.\n" #: cmdline/apt-get.cc:839 #, c-format msgid "%s is already the newest version.\n" -msgstr "%s là phiên bản mơi nhất.\n" +msgstr "%s là phiên bản mới nhất.\n" #: cmdline/apt-get.cc:858 cmdline/apt-get.cc:2158 cmdline/apt-mark.cc:68 #, c-format @@ -522,19 +526,19 @@ msgstr " gặp lỗi." #: cmdline/apt-get.cc:1031 msgid "Unable to correct dependencies" -msgstr "Không thể sửa cách phụ thuộc" +msgstr "Không thể sửa phần phụ thuộc" #: cmdline/apt-get.cc:1034 msgid "Unable to minimize the upgrade set" -msgstr "Không thể cực tiểu hóa tập hợp nâng cấp" +msgstr "Không thể tối thiểu hóa tập hợp nâng cấp" #: cmdline/apt-get.cc:1036 msgid " Done" -msgstr " Hoàn tất" +msgstr " Xong" #: cmdline/apt-get.cc:1040 msgid "You might want to run 'apt-get -f install' to correct these." -msgstr "Có lẽ bạn hãy chay lệnh “apt-get -f install” để sửa hết." +msgstr "Bạn có thể chạy lệnh “apt-get -f install” để sửa những lỗi trên." #: cmdline/apt-get.cc:1043 msgid "Unmet dependencies. Try using -f." @@ -544,7 +548,7 @@ msgstr "" #: cmdline/apt-get.cc:1068 msgid "WARNING: The following packages cannot be authenticated!" -msgstr "CẢNH BÁO: không thể xác thực những gói theo đây." +msgstr "CẢNH BÁO: Không thể xác thực những gói theo đây!" #: cmdline/apt-get.cc:1072 msgid "Authentication warning overridden.\n" @@ -552,7 +556,7 @@ msgstr "Cảnh báo xác thực bị đè.\n" #: cmdline/apt-get.cc:1079 msgid "Install these packages without verification [y/N]? " -msgstr "Cài đặt những gói này mà không kiểm chứng không? [y/N] [c/K] " +msgstr "Cài đặt những gói này mà không cần thẩm tra không? [y/N] [c/K] " #: cmdline/apt-get.cc:1081 msgid "Some packages could not be authenticated" @@ -564,7 +568,7 @@ msgstr "Gập lỗi và đã dùng tùy chọn “-y” mà không có “--for #: cmdline/apt-get.cc:1131 msgid "Internal error, InstallPackages was called with broken packages!" -msgstr "Lỗi nội bộ: InstallPackages (cài đặt gói) được gọi với gói bị hỏng." +msgstr "Lỗi nội bộ: InstallPackages (cài đặt gói) được gọi với gói bị hỏng!" #: cmdline/apt-get.cc:1140 msgid "Packages need to be removed but remove is disabled." @@ -572,12 +576,12 @@ msgstr "Cần phải gỡ bỏ một số gói, nhưng mà khả năng Gỡ bỏ #: cmdline/apt-get.cc:1151 msgid "Internal error, Ordering didn't finish" -msgstr "Gặp lỗi nội bộ: tiến trình Sắp xếp chưa xong" +msgstr "Gặp lỗi nội bộ: Tiến trình Sắp xếp chưa xong" #: cmdline/apt-get.cc:1189 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" -"Lạ nhỉ... kích cỡ không khớp nhau. Hãy gửi thư cho <apt@packages.debian.org>" +"Lạ nhỉ... Kích cỡ không khớp nhau. Hãy gửi thư cho <apt@packages.debian.org>" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB @@ -621,7 +625,8 @@ msgstr "Bạn không có đủ dung lượng đĩa còn trống trong %s." #: cmdline/apt-get.cc:1257 cmdline/apt-get.cc:1279 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -"Đã đưa ra “Chỉ không đáng kể” (Trivial Only) nhưng mà thao tác này đáng kể." +"Đã đưa ra “Chỉ không đáng kể” (Trivial Only) nhưng mà thao tác này là đáng " +"kể." #. TRANSLATOR: This string needs to be typed by the user as a confirmation, so be #. careful with hard to type or special characters (like non-breaking spaces) @@ -636,8 +641,8 @@ msgid "" "To continue type in the phrase '%s'\n" " ?] " msgstr "" -"Bạn sắp làm gì có thể làm hại.\n" -"Để tiếp tục thì gõ cụm từ “%s”\n" +"Bạn sắp làm việc mà nó có thể gây hư hại cho hệ thống.\n" +"Nếu vẫn muốn tiếp tục thì hãy gõ cụm từ “%s”\n" "?]" #: cmdline/apt-get.cc:1269 cmdline/apt-get.cc:1288 @@ -651,7 +656,7 @@ msgstr "Bạn có muốn tiếp tục không? [C/k] " #: cmdline/apt-get.cc:1356 cmdline/apt-get.cc:2655 apt-pkg/algorithms.cc:1562 #, c-format msgid "Failed to fetch %s %s\n" -msgstr "Việc lấy %s bị lỗi %s\n" +msgstr "Gặp lỗi khi lấy %s %s\n" #: cmdline/apt-get.cc:1374 msgid "Some files failed to download" @@ -667,13 +672,13 @@ msgid "" "missing?" msgstr "" "Không thể lấy một số kho, có lẽ hãy chạy lệnh “apt-get update” (apt lấy cập " -"nhật) hay cố với “--fix-missing” (sửa thiếu sót) không?" +"nhật)\n" +"hay dùng tùy chọn “--fix-missing” (sửa thiếu sót) không?" #: cmdline/apt-get.cc:1385 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -"Chưa hô trợ tùy chọn “--fix-missing” (sửa khi thiếu điều) và trao đổi phương " -"tiện." +"Chưa hỗ trợ tùy chọn “--fix-missing” (sửa khi thiếu) và trao đổi phương tiện." #: cmdline/apt-get.cc:1390 msgid "Unable to correct missing packages." @@ -696,7 +701,7 @@ msgstr[0] "" #: cmdline/apt-get.cc:1423 msgid "Note: This is done automatically and on purpose by dpkg." -msgstr "Ghi chú: thay đổi này được tự động thực hiệnbởi dpkg." +msgstr "Ghi chú: Thay đổi này được tự động thực hiện bởi dpkg." #: cmdline/apt-get.cc:1561 #, c-format @@ -706,7 +711,7 @@ msgstr "Bỏ qua bản phát hành đích không sẵn sàng “%s” của gói #: cmdline/apt-get.cc:1593 #, c-format msgid "Picking '%s' as source package instead of '%s'\n" -msgstr "Đang chọn “%s” làm gói nguồn, thay cho “%s”\n" +msgstr "Đang chọn “%s” làm gói nguồn, thay thế cho “%s”\n" #. if (VerTag.empty() == false && Last == 0) #: cmdline/apt-get.cc:1631 @@ -742,11 +747,11 @@ msgstr "" #. #: cmdline/apt-get.cc:1820 cmdline/apt-get.cc:1988 msgid "The following information may help to resolve the situation:" -msgstr "Có lẽ thông tin theo đây sẽ giúp đỡ quyết định trường hợp:" +msgstr "Có lẽ thông tin theo đây sẽ giúp đỡ bạn giải quyết tình trạng này:" #: cmdline/apt-get.cc:1824 msgid "Internal Error, AutoRemover broke stuff" -msgstr "Lỗi nội bộ: Bộ Gỡ bỏ Tự động đã làm hư gì." +msgstr "Lỗi nội bộ: Bộ Gỡ bỏ Tự động đã làm hỏng một thứ gì đó" #: cmdline/apt-get.cc:1831 msgid "" @@ -755,7 +760,7 @@ msgid_plural "" "The following packages were automatically installed and are no longer " "required:" msgstr[0] "" -"Gói nào theo đây đã được tự động cài đặt nên không còn cần thiết lại:" +"(Các) gói sau đây đã được tự động cài đặt nên không còn cần thiết lại:" #: cmdline/apt-get.cc:1835 #, c-format @@ -771,11 +776,11 @@ msgstr[0] "Hãy dùng lệnh `apt-get autoremove' để gỡ bỏ chúng." #: cmdline/apt-get.cc:1856 msgid "Internal error, AllUpgrade broke stuff" -msgstr "Lỗi nội bộ: AllUpgrade (toàn bộ nâng cấp) đã ngắt gì" +msgstr "Lỗi nội bộ: AllUpgrade (toàn bộ nâng cấp) đã làm hỏng thứ gì đó" #: cmdline/apt-get.cc:1955 msgid "You might want to run 'apt-get -f install' to correct these:" -msgstr "Có lẽ bạn hãy chạy lênh “apt-get -f install” để sửa hết:" +msgstr "Có lẽ bạn cần chạy lệnh “apt-get -f install” để sửa những cái đó:" #: cmdline/apt-get.cc:1959 msgid "" @@ -783,7 +788,7 @@ msgid "" "solution)." msgstr "" "Gói còn phụ thuộc vào phần mềm chưa có. Hãy cố chạy lệnh “apt-get -f " -"install” mà không có gói nào (hoặc ghi rõ cách quyết định)." +"install” mà không có gói nào (hoặc chỉ định cách thức giải quyết)." #: cmdline/apt-get.cc:1973 msgid "" @@ -792,10 +797,10 @@ msgid "" "distribution that some required packages have not yet been created\n" "or been moved out of Incoming." msgstr "" -"Không thể cài đặt một số gói. Có lẽ có nghĩa là bạn đa yêu cầu\n" +"Không thể cài đặt một số gói. Điều đó có nghĩa là bạn đã yêu cầu\n" "một trường hợp không thể, hoặc nếu bạn sử dụng bản phân phối\n" -"bất định, có lẽ chưa tạo một số gói cần thiết,\n" -"hoặc chưa di chuyển chúng ra phần Incoming (Đến)." +"chưa ổn định cái mà yêu cầu các gói mà nó chưa được tạo\n" +"hoặc di chuyển chúng ra khỏi phần Incoming (Đến)." #: cmdline/apt-get.cc:1994 msgid "Broken packages" @@ -841,7 +846,7 @@ msgstr "Gặp lỗi" #: cmdline/apt-get.cc:2192 msgid "Done" -msgstr "Hoàn tất" +msgstr "Xong" #: cmdline/apt-get.cc:2259 cmdline/apt-get.cc:2267 msgid "Internal error, problem resolver broke stuff" @@ -863,7 +868,7 @@ msgstr "Đang tải về %s %s" #: cmdline/apt-get.cc:2452 msgid "Must specify at least one package to fetch source for" -msgstr "Phải ghi rõ ít nhất một gói cho đó cần lấy mã nguồn" +msgstr "Phải chỉ định ít nhất một gói để mà lấy mã nguồn về cho nó" #: cmdline/apt-get.cc:2492 cmdline/apt-get.cc:2804 #, c-format @@ -876,7 +881,7 @@ msgid "" "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" "%s\n" msgstr "" -"GHI CHÚ: sự đóng gói “%s” được bảo tồn trong hệ thống điều khiển phiên bản " +"GHI CHÚ: sự đóng gói “%s” được bảo trì trong hệ thống điều khiển phiên bản " "“%s” tại:\n" "%s\n" @@ -899,7 +904,7 @@ msgstr "Đang bỏ qua tập tin đã được tải về “%s”\n" #: cmdline/apt-get.cc:2604 #, c-format msgid "You don't have enough free space in %s" -msgstr "Không đủ sức chứa còn rảnh trong %s" +msgstr "Không đủ chỗ trống trên %s" #. TRANSLATOR: The required space between number and unit is already included #. in the replacement strings, so %sB will be correctly translate in e.g. 1,5 MB @@ -918,11 +923,11 @@ msgstr "Cần phải lấy %sB từ kho nguồn.\n" #: cmdline/apt-get.cc:2624 #, c-format msgid "Fetch source %s\n" -msgstr "Lấy nguồn %s\n" +msgstr "Lấy mã nguồn %s\n" #: cmdline/apt-get.cc:2662 msgid "Failed to fetch some archives." -msgstr "Việc lấy một số kho bị lỗi." +msgstr "Gặp lỗi lkhi lấy một số kho." #: cmdline/apt-get.cc:2693 #, c-format @@ -937,12 +942,12 @@ msgstr "Lệnh giải nén “%s” bị lỗi.\n" #: cmdline/apt-get.cc:2706 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" -msgstr "Hãy kiểm tra xem gói “dpkg-dev” có được cài đặt chưa.\n" +msgstr "Hãy kiểm tra xem gói “dpkg-dev” đã được cài đặt chưa.\n" #: cmdline/apt-get.cc:2728 #, c-format msgid "Build command '%s' failed.\n" -msgstr "Lệnh xây dụng “%s” bị lỗi.\n" +msgstr "Lệnh xây dựng “%s” bị lỗi.\n" #: cmdline/apt-get.cc:2748 msgid "Child process failed" @@ -991,7 +996,7 @@ msgstr "cách phụ thuộc %s cho %s không thể được thỏa vì không t #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -"Việc cố thỏa cách phụ thuộc %s cho %s bị lỗi vì gói đã cài đặt %s quá mới" +"Việc cố thỏa cách phụ thuộc %s cho %s bị lỗi vì gói đã cài đặt %s là quá mới" #: cmdline/apt-get.cc:3089 #, c-format @@ -1098,7 +1103,7 @@ msgstr "" " install - Cài đặt gói mới (gói có dạng libc6 không phải libc6.deb)\n" " remove - Gỡ bỏ gói phần mềm\n" " autoremove - Tự động gỡ bỏ tất cả các gói không dùng\n" -" purge - Gỡ bỏ và tẩy gói\n" +" purge - Gỡ bỏ và tẩy xóa gói\n" " source - Tải về kho nguồn\n" " build-dep - Định cấu hình quan hệ phụ thuộc khi xây dụng, cho gói nguồn\n" " dist-upgrade - Nâng cấp bản phân phối hãy xem apt-get(8)\n" @@ -1125,7 +1130,7 @@ msgstr "" " -o=? Đặt tùy chọn cấu hình tùy ý, v.d. -o dir::cache=/tmp\n" "Để có thêm thông tin và tùy chọn thì hãy xem trang hướng dẫn\n" " apt-get(8), sources.list(5) và apt.conf(5).\n" -" Trình APT này có năng lực của siêu bò.\n" +" Trình APT này có năng lực của siêu bò.\n" #: cmdline/apt-get.cc:3572 msgid "" @@ -1134,10 +1139,10 @@ msgid "" " Keep also in mind that locking is deactivated,\n" " so don't depend on the relevance to the real current situation!" msgstr "" -"GHI CHÚ: đây chỉ là một sự mô phỏng !\n" -" apt-get yêu cầu quyền người chủ để thực hiện thật.\n" -" Cũng ghi nhớ rằng chức năng khoá bị tắt,\n" -" thì không nên thấy đây là trường hợp hiện thời thật." +"GHI CHÚ: đây chỉ là một sự mô phỏng!\n" +" apt-get yêu cầu quyền root để thực hiện thật.\n" +" Cũng cần nhớ rằng chức năng khoá bị tắt,\n" +" thì không nên thấy đây là trường hợp hiện thời thật!" #: cmdline/acqprogress.cc:60 msgid "Hit " @@ -1158,7 +1163,7 @@ msgstr "Lỗi " #: cmdline/acqprogress.cc:140 #, c-format msgid "Fetched %sB in %s (%sB/s)\n" -msgstr "Đã lấy %sB trong %s (%sB/g).\n" +msgstr "Đã lấy %sB trong tổng số %s (%sB/g).\n" #: cmdline/acqprogress.cc:230 #, c-format @@ -1172,7 +1177,7 @@ msgid "" " '%s'\n" "in the drive '%s' and press enter\n" msgstr "" -"Chuyển đổi vật chứa: hãy nạp đĩa có nhãn\n" +"Chuyển đổi thiết bị lưu trữ: hãy nạp đĩa có nhãn\n" " “%s”\n" "vào ổ “%s” và bấm nút Enter\n" @@ -1194,24 +1199,24 @@ msgstr "%s đã sẵn được đặt thành cài đặt tự động rồi.\n" #: cmdline/apt-mark.cc:228 #, c-format msgid "%s was already set on hold.\n" -msgstr "%s đã sẵn được đặt là nắm giữ.\n" +msgstr "%s đã sẵn được đặt là giữ lại.\n" #: cmdline/apt-mark.cc:230 #, c-format msgid "%s was already not hold.\n" -msgstr "%s đã sẵn được đặt là chưa nắm giữ.\n" +msgstr "%s đã sẵn được đặt là không giữ lại.\n" #: cmdline/apt-mark.cc:245 cmdline/apt-mark.cc:326 #: apt-pkg/contrib/fileutl.cc:829 apt-pkg/contrib/gpgv.cc:223 #: apt-pkg/deb/dpkgpm.cc:1002 #, c-format msgid "Waited for %s but it wasn't there" -msgstr "Đã đợi %s nhưng mà chưa gặp nó" +msgstr "Cần %s nhưng mà không thấy nó ở đây" #: cmdline/apt-mark.cc:260 cmdline/apt-mark.cc:309 #, c-format msgid "%s set on hold.\n" -msgstr "%s được đặt là nắm giữ.\n" +msgstr "%s được đặt là giữ lại.\n" #: cmdline/apt-mark.cc:262 cmdline/apt-mark.cc:314 #, c-format @@ -1220,7 +1225,8 @@ msgstr "Hủy bỏ nắm giữ %s.\n" #: cmdline/apt-mark.cc:332 msgid "Executing dpkg failed. Are you root?" -msgstr "Thực thi dpkg gặp lỗi. Bạn có quyền siêu người dùng không vậy?" +msgstr "" +"Thực thi lệnh dpkg gặp lỗi. Bạn có quyền siêu người dùng (root) không vậy?" #: cmdline/apt-mark.cc:379 msgid "" @@ -1250,7 +1256,7 @@ msgstr "" "dấu.\n" "\n" "Lệnh:\n" -" auto - Đánh dấu các gói đưa ra là đã được cài rồi\n" +" auto - Đánh dấu các gói đưa ra là được cài đặt tự động\n" " manual - Đánh dấu các gói đưa ra là được cài đặt bằng tay\n" "\n" "Tùy chọn:\n" @@ -1279,16 +1285,16 @@ msgstr "" #: methods/cdrom.cc:222 msgid "Wrong CD-ROM" -msgstr "CD-ROM không đúng" +msgstr "CD-ROM sai" #: methods/cdrom.cc:249 #, c-format msgid "Unable to unmount the CD-ROM in %s, it may still be in use." -msgstr "Không thể tháo gắn kết đĩa CD-ROM trong %s. Có lẽ nó còn dùng." +msgstr "Không thể bỏ gắn đĩa CD-ROM trong %s. Có lẽ nó vẫn đang được dùng." #: methods/cdrom.cc:254 msgid "Disk not found." -msgstr "Không tìm thấy đĩa" +msgstr "Không tìm thấy đĩa." #: methods/cdrom.cc:262 methods/file.cc:82 methods/rsh.cc:273 msgid "File not found" @@ -1297,15 +1303,15 @@ msgstr "Không tìm thấy tập tin" #: methods/copy.cc:46 methods/gzip.cc:105 methods/gzip.cc:114 #: methods/rred.cc:512 methods/rred.cc:521 msgid "Failed to stat" -msgstr "Việc lấy các thông tin bị lỗi" +msgstr "Gặp lỗi khi lấy thống kê" #: methods/copy.cc:83 methods/gzip.cc:111 methods/rred.cc:518 msgid "Failed to set modification time" -msgstr "Việc lập giờ sửa đổi bị lỗi" +msgstr "Gặp lỗi khi đặt giờ sửa đổi" #: methods/file.cc:47 msgid "Invalid URI, local URIS must not start with //" -msgstr "Địa chỉ URI không hợp lệ: URI không thể bắt đầu với “//”" +msgstr "Địa chỉ URI không hợp lệ, URI nội bộ không thể bắt đầu với “//”" #. Login must be before getpeername otherwise dante won't work. #: methods/ftp.cc:173 @@ -1328,12 +1334,12 @@ msgstr "Máy phục vụ đã từ chối kết nối, và đã nói: %s" #: methods/ftp.cc:221 #, c-format msgid "USER failed, server said: %s" -msgstr "Lệnh USER (người dùng) đã thất bại: máy phục vụ nói: %s" +msgstr "Lệnh USER (người dùng) đã thất bại: máy chủ nói: %s" #: methods/ftp.cc:228 #, c-format msgid "PASS failed, server said: %s" -msgstr "Lệnh PASS (mật khẩu) đã thất bại: máy phục vụ nói: %s" +msgstr "Lệnh PASS (mật khẩu) đã thất bại: máy chủ nói: %s" #: methods/ftp.cc:248 msgid "" @@ -1346,12 +1352,12 @@ msgstr "" #: methods/ftp.cc:276 #, c-format msgid "Login script command '%s' failed, server said: %s" -msgstr "Lệnh tập lệnh đăng nhập “%s” đã thất bại: máy phục vụ nói: %s" +msgstr "Văn lệnh đăng nhập “%s” đã thất bại: máy chủ nói: %s" #: methods/ftp.cc:302 #, c-format msgid "TYPE failed, server said: %s" -msgstr "Lệnh TYPE (kiểu) đã thất bại: máy phục vụ nói: %s" +msgstr "Lệnh TYPE (kiểu) đã thất bại: máy chủ nói: %s" #: methods/ftp.cc:340 methods/ftp.cc:451 methods/rsh.cc:192 methods/rsh.cc:235 msgid "Connection timeout" @@ -1415,12 +1421,12 @@ msgstr "Không thể gửi lệnh PORT (cổng)" #: methods/ftp.cc:797 #, c-format msgid "Unknown address family %u (AF_*)" -msgstr "Không biết nhóm địa chỉ %u (AF_*)" +msgstr "Không biết họ địa chỉ %u (AF_*)" #: methods/ftp.cc:806 #, c-format msgid "EPRT failed, server said: %s" -msgstr "Lệnh EPRT (thông báo lỗi) đã thất bại: máy phục vụ nói: %s" +msgstr "Lệnh EPRT (thông báo lỗi) đã thất bại: máy chủ nói: %s" #: methods/ftp.cc:826 msgid "Data socket connect timed out" @@ -1432,7 +1438,7 @@ msgstr "Không thể chấp nhận kết nối" #: methods/ftp.cc:872 methods/http.cc:1039 methods/rsh.cc:311 msgid "Problem hashing file" -msgstr "Gặp khó khăn khi tạo chuỗi duy nhất cho tập tin" +msgstr "Gặp vấn đề băm tập tin" #: methods/ftp.cc:885 #, c-format @@ -1460,7 +1466,7 @@ msgstr "Không thể gọi " #: methods/connect.cc:76 #, c-format msgid "Connecting to %s (%s)" -msgstr "Đang kết nối đến %s (%s)..." +msgstr "Đang kết nối đến %s (%s)" #: methods/connect.cc:87 #, c-format @@ -1475,7 +1481,7 @@ msgstr "Không thể tạo ổ cắm cho %s (f=%u t=%u p=%u)" #: methods/connect.cc:100 #, c-format msgid "Cannot initiate the connection to %s:%s (%s)." -msgstr "Không thể sở khởi kết nối đến %s:%s (%s)." +msgstr "Không thể khởi tạo kết nối đến %s:%s (%s)." #: methods/connect.cc:108 #, c-format @@ -1492,27 +1498,27 @@ msgstr "Không thể kết nối đến %s:%s (%s)." #: methods/connect.cc:154 methods/rsh.cc:433 #, c-format msgid "Connecting to %s" -msgstr "Đang kết nối đến %s..." +msgstr "Đang kết nối đến %s" #: methods/connect.cc:180 methods/connect.cc:199 #, c-format msgid "Could not resolve '%s'" -msgstr "Không thể tháo gỡ “%s”" +msgstr "Không thể phân giải “%s”" #: methods/connect.cc:205 #, c-format msgid "Temporary failure resolving '%s'" -msgstr "Việc tháo gỡ “%s” bị lỗi tạm thời" +msgstr "Việc phân giải “%s” bị lỗi tạm thời" #: methods/connect.cc:209 -#, fuzzy, c-format +#, c-format msgid "System error resolving '%s:%s'" -msgstr "Gặp lỗi nghiệm trọng khi tháo gỡ “%s:%s” (%i - %s)" +msgstr "Lỗi hệ thống khi phân giải '%s:%s'" #: methods/connect.cc:211 #, c-format msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "Gặp lỗi nghiệm trọng khi tháo gỡ “%s:%s” (%i - %s)" +msgstr "Một số hư hỏng đã xảy ra khi phân giải “%s:%s” (%i - %s)" #: methods/connect.cc:258 #, c-format @@ -1522,8 +1528,7 @@ msgstr "Không thể kết nối đến %s: %s:" #: methods/gpgv.cc:166 msgid "" "Internal error: Good signature, but could not determine key fingerprint?!" -msgstr "" -"Lỗi nội bộ: chữ ký đúng, nhưng không thể quyết định vân tay của khóa ?!" +msgstr "Lỗi nội bộ: Chữ ký đúng, nhưng không thể xác định vân tay của khóa?!" #: methods/gpgv.cc:170 msgid "At least one invalid signature was encountered." @@ -1541,6 +1546,8 @@ msgid "" "Clearsigned file isn't valid, got '%s' (does the network require " "authentication?)" msgstr "" +"Tập tin Clearsigned không hợp lệ, nhận được '%s' (mạng yêu cầu xác nhận " +"phải không?)" #: methods/gpgv.cc:182 msgid "Unknown error executing gpgv" @@ -1548,14 +1555,14 @@ msgstr "Gặp lỗi không rõ khi thực hiện gpgv" #: methods/gpgv.cc:215 methods/gpgv.cc:222 msgid "The following signatures were invalid:\n" -msgstr "Những chữ ký theo đây vẫn không hợp lệ:\n" +msgstr "Những chữ ký theo đây không hợp lệ:\n" #: methods/gpgv.cc:229 msgid "" "The following signatures couldn't be verified because the public key is not " "available:\n" msgstr "" -"Không thể kiểm chứng những chữ ký theo đây, vì khóa công không sẵn sàng:\n" +"Không thể kiểm chứng những chữ ký theo đây, vì khóa công không sẵn có:\n" #: methods/gzip.cc:65 msgid "Empty files can't be valid archives" @@ -1582,16 +1589,16 @@ msgstr "" #: methods/http.cc:621 msgid "The HTTP server sent an invalid Content-Range header" msgstr "" -"Máy phục vụ HTTP đã gửi một dòng đầu Content-Range (phạm vị nội dụng) không " +"Máy phục vụ HTTP đã gửi một dòng đầu Content-Range (phạm vi nội dung) không " "hợp lệ" #: methods/http.cc:623 msgid "This HTTP server has broken range support" -msgstr "Máy phục vụ HTTP đã ngắt cách hỗ trợ phạm vị" +msgstr "Máy phục vụ HTTP đã ngắt cách hỗ trợ phạm vi" #: methods/http.cc:647 msgid "Unknown date format" -msgstr "Không rõ dạng ngày" +msgstr "Không rõ định dạng ngày" #: methods/http.cc:827 msgid "Select failed" @@ -1611,7 +1618,7 @@ msgstr "Gặp lỗi khi ghi vào tập tin" #: methods/http.cc:914 msgid "Error writing to the file" -msgstr "Gặp lỗi khi ghi vào tập tin đó" +msgstr "Gặp lỗi khi ghi vào tập tin" #: methods/http.cc:928 msgid "Error reading from server. Remote end closed connection" @@ -1667,14 +1674,14 @@ msgid "Can not read mirror file '%s'" msgstr "Không thể đọc tập tin mirror '%s'" #: methods/mirror.cc:315 -#, fuzzy, c-format +#, c-format msgid "No entry found in mirror file '%s'" -msgstr "Không thể đọc tập tin mirror '%s'" +msgstr "Không tìm thấy điểm vào trong tập tin mirror '%s'" #: methods/mirror.cc:445 #, c-format msgid "[Mirror: %s]" -msgstr "[Nhân bản: %s]" +msgstr "[Bản sao: %s]" #: methods/rred.cc:491 #, c-format @@ -1682,8 +1689,7 @@ msgid "" "Could not patch %s with mmap and with file operation usage - the patch seems " "to be corrupt." msgstr "" -"Không thể vá lỗi %s dùng mmap và cách sử dụng tập tin: có vẻ là đắp vá bị " -"hỏng." +"Không thể vá %s dùng mmap và cách sử dụng tập tin: có vẻ là miếng vá bị hỏng." #: methods/rred.cc:496 #, c-format @@ -1691,8 +1697,8 @@ msgid "" "Could not patch %s with mmap (but no mmap specific fail) - the patch seems " "to be corrupt." msgstr "" -"Không thể vá lỗi %s dùng mmap (mà không có lỗi đặc trưng cho mmap): có vẻ là " -"đắp vá bị hỏng." +"Không thể vá %s dùng mmap (mà không có lỗi đặc trưng cho mmap): có vẻ là " +"miếng vá bị hỏng." #: methods/rsh.cc:99 ftparchive/multicompress.cc:168 msgid "Failed to create IPC pipe to subprocess" @@ -1704,20 +1710,20 @@ msgstr "Kết nối bị đóng quá sớm." #: dselect/install:32 msgid "Bad default setting!" -msgstr "Thiết lập mặc định sai." +msgstr "Cài đặt mặc định sai!" #: dselect/install:51 dselect/install:83 dselect/install:87 dselect/install:94 #: dselect/install:105 dselect/update:45 msgid "Press enter to continue." -msgstr "Bấm phím Enter để tiếp tục lại." +msgstr "Bấm phím Enter để tiếp tục." #: dselect/install:91 msgid "Do you want to erase any previously downloaded .deb files?" -msgstr "Bạn có muốn xoá bất kỳ tập tin .deb đã tải về trước không?" +msgstr "Bạn có muốn xoá mọi tập tin .deb đã được tải về trước đây không?" #: dselect/install:101 msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "Gập một số lỗi trong khi giải nén. Những gói đã được cài đặt" +msgstr "Gặp một số lỗi trong khi giải nén. Những gói đã được cài đặt" #: dselect/install:102 msgid "will be configured. This may result in duplicate errors" @@ -1736,7 +1742,7 @@ msgstr "" #: dselect/update:30 msgid "Merging available information" -msgstr "Đang hợp nhất các thông tin sẵn sàng..." +msgstr "Đang hòa trộn các thông tin sẵn sàng..." #: cmdline/apt-extracttemplates.cc:102 #, c-format @@ -1852,7 +1858,7 @@ msgstr "" "Lệnh: \tpackages binarypath [tập_tin_đè [tiền_tố_đường_dẫn]]\n" " \tsources srcpath [tập_tin_đè[tiền_tố_đường_dẫn]]\n" " \tcontents path\n" -" \trelease path\n" +" \trelease path\n" " \tgenerate config [groups]\n" " \tclean config\n" "\n" @@ -1893,16 +1899,16 @@ msgstr "" " -h \t\t_Trợ giúp_ này\n" " --md5 \t\tĐiều khiển cách tạo ra MD5\n" " -s=? \t\tTập tin đè nguồn\n" -" -q \t\t_Im_ (không xuất chi tiết)\n" +" -q \t\t_Im lặng_ (không xuất chi tiết)\n" " -d=? \t\tChọn _cơ sở dữ liệu_ nhớ tạm tùy chọn\n" " --no-delink \tMở chế độ gỡ lỗi _bỏ liên kết_\n" " --contents \tĐiều khiển cách tạo ra tập tin _nội dung_\n" " -c=? \t\tĐọc tập tin cấu hình này\n" -" -o=? \t\tLập một tùy chọn cấu hình nhiệm ý, v.d. “-o dir::cache=/tmp”" +" -o=? \t\tĐặt một tùy chọn cấu hình nhiệm ý, v.d. “-o dir::cache=/tmp”" #: ftparchive/apt-ftparchive.cc:803 msgid "No selections matched" -msgstr "Không có điều đã chọn khớp được" +msgstr "Không có cái được chọn khớp được" #: ftparchive/apt-ftparchive.cc:881 #, c-format @@ -1924,8 +1930,8 @@ msgid "" "DB format is invalid. If you upgraded from an older version of apt, please " "remove and re-create the database." msgstr "" -"Định dạng co sở dữ liệu không hợp lệ. Nếu bạn đã nâng cấp từ một phiên bản " -"apt cũ, hãy gỡ bỏ nó và sau đó tạo lại co sở dữ liệu." +"Định dạng cơ sở dữ liệu không hợp lệ. Nếu bạn đã nâng cấp từ một phiên bản " +"apt cũ, hãy gỡ bỏ nó và sau đó tạo lại cơ sở dữ liệu." #: ftparchive/cachedb.cc:81 #, c-format @@ -1936,7 +1942,7 @@ msgstr "Không thể mở tập tin cơ sở dữ liệu %s: %s." #: apt-inst/extract.cc:209 #, c-format msgid "Failed to stat %s" -msgstr "Việc lấy thông tin toàn bộ cho %s bị lỗi" +msgstr "Việc lấy thông tin thống kê cho %s bị lỗi" #: ftparchive/cachedb.cc:249 msgid "Archive has no control record" @@ -1944,7 +1950,7 @@ msgstr "Kho không có mục ghi điều khiển" #: ftparchive/cachedb.cc:490 msgid "Unable to get a cursor" -msgstr "Không thể lấy con chạy" +msgstr "Không thể lấy con trỏ" #: ftparchive/writer.cc:82 #, c-format @@ -1954,7 +1960,7 @@ msgstr "CB: Không thể đọc thư mục %s\n" #: ftparchive/writer.cc:87 #, c-format msgid "W: Unable to stat %s\n" -msgstr "CB: Không thể lấy thông tin toàn bộ cho %s\n" +msgstr "CB: Không thể lấy thông tin thống kê %s\n" #: ftparchive/writer.cc:143 msgid "E: " @@ -1971,7 +1977,7 @@ msgstr "LỖI: có lỗi áp dụng vào tập tin " #: ftparchive/writer.cc:170 ftparchive/writer.cc:202 #, c-format msgid "Failed to resolve %s" -msgstr "Việc quyết định %s bị lỗi" +msgstr "Gặp lỗi khi phân giải %s" #: ftparchive/writer.cc:183 msgid "Tree walking failed" @@ -2014,7 +2020,7 @@ msgstr "Kho không có trường gói" #: ftparchive/writer.cc:411 ftparchive/writer.cc:701 #, c-format msgid " %s has no override entry\n" -msgstr " %s không có mục ghi đè\n" +msgstr " %s không có mục ghi đè (override)\n" #: ftparchive/writer.cc:479 ftparchive/writer.cc:845 #, c-format @@ -2024,12 +2030,12 @@ msgstr " người bảo trì %s là %s không phải %s\n" #: ftparchive/writer.cc:711 #, c-format msgid " %s has no source override entry\n" -msgstr " %s không có mục ghi đè nguồn\n" +msgstr " %s không có mục ghi đè (override) nguồn\n" #: ftparchive/writer.cc:715 #, c-format msgid " %s has no binary override entry either\n" -msgstr " %s cũng không có mục ghi đè nhị phân\n" +msgstr " %s cũng không có mục ghi đè (override) nhị phân\n" #: ftparchive/contents.cc:341 ftparchive/contents.cc:372 msgid "realloc - Failed to allocate memory" @@ -2076,7 +2082,7 @@ msgstr "Việc tạo TẬP_TIN* bị lỗi" #: ftparchive/multicompress.cc:192 msgid "Failed to fork" -msgstr "Việc tạo tiến trình con bị lỗi" +msgstr "Gặp lỗi khi rẽ nhánh tiến trình" #: ftparchive/multicompress.cc:206 msgid "Compress child" @@ -2085,15 +2091,15 @@ msgstr "Nén con" #: ftparchive/multicompress.cc:229 #, c-format msgid "Internal error, failed to create %s" -msgstr "Lỗi nội bộ, việc tạo %s bị lỗi" +msgstr "Lỗi nội bộ, gặp lỗi khi tạo %s" #: ftparchive/multicompress.cc:304 msgid "IO to subprocess/file failed" -msgstr "việc nhập/xuất vào tiến trình con/tập tin bị lỗi" +msgstr "Gặp lỗi khi nhập/xuất vào tiến-trình-con/tập-tin" #: ftparchive/multicompress.cc:342 msgid "Failed to read while computing MD5" -msgstr "Việc đọc khi tính MD5 bị lỗi" +msgstr "Gặp lỗi khi đọc trong khi tính MD5" #: ftparchive/multicompress.cc:358 #, c-format @@ -2162,7 +2168,7 @@ msgstr "" #: apt-inst/contrib/extracttar.cc:116 msgid "Failed to create pipes" -msgstr "Việc tạo những ống bị lỗi" +msgstr "Gặp lỗi khi tạo các đường ống dẫn lệnh" #: apt-inst/contrib/extracttar.cc:143 msgid "Failed to exec gzip " @@ -2269,12 +2275,12 @@ msgstr "Gói này đang cố ghi vào đích trệch đi %s/%s" #: apt-inst/extract.cc:155 apt-inst/extract.cc:299 msgid "The diversion path is too long" -msgstr "Đường dẫn trệch đi quá dài." +msgstr "Đường dẫn trệch đi quá dài" #: apt-inst/extract.cc:242 #, c-format msgid "The directory %s is being replaced by a non-directory" -msgstr "Thư mục %s đang được thay thế do điều không phải là thư mục" +msgstr "Thư mục %s đang được thay thế do một cái không phải là thư mục" #: apt-inst/extract.cc:282 msgid "Failed to locate node in its hash bucket" @@ -2292,17 +2298,17 @@ msgstr "Ghi đè lên gói đã khớp mà không có phiên bản cho %s" #: apt-inst/extract.cc:431 #, c-format msgid "File %s/%s overwrites the one in the package %s" -msgstr "Tập tin %s/%s ghi đè lên điều trong gói %s" +msgstr "Tập tin %s/%s ghi đè lên một tập tin trong gói %s" #: apt-inst/extract.cc:491 #, c-format msgid "Unable to stat %s" -msgstr "Không thể lấy các thông tin về %s" +msgstr "Không thể lấy thông tin thống kê %s" #: apt-inst/deb/debfile.cc:41 apt-inst/deb/debfile.cc:46 #, c-format msgid "This is not a valid DEB archive, missing '%s' member" -msgstr "Đây không phải là một kho DEB hợp lệ vì còn thiếu bộ phận “%s”" +msgstr "Đây không phải là một kho DEB hợp lệ vì còn thiếu thành viên “%s”" #. FIXME: add data.tar.xz here - adding it now would require a Translation round for a very small gain #: apt-inst/deb/debfile.cc:55 @@ -2315,7 +2321,7 @@ msgstr "" #: apt-inst/deb/debfile.cc:120 #, c-format msgid "Internal error, could not locate member %s" -msgstr "Gặp lỗi nội bộ, không thể định vị bộ phận %s" +msgstr "Gặp lỗi nội bộ, không thể định vị thành viên %s" #: apt-inst/deb/debfile.cc:214 msgid "Unparsable control file" @@ -2374,31 +2380,31 @@ msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." msgstr "" "Không thể tăng kích cỡ của ánh xạ bộ nhớ, vì chức năng tự động tăng bị người " -"dùng tắt." +"dùng tắt đi." #. d means days, h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc:378 #, c-format msgid "%lid %lih %limin %lis" -msgstr "%lingày %ligiờ %liphút %ligiây" +msgstr "%li ngày %li giờ %li phút %li giây" #. h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc:385 #, c-format msgid "%lih %limin %lis" -msgstr "%ligiờ %liphút %ligiây" +msgstr "%li giờ %li phút %li giây" #. min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc:392 #, c-format msgid "%limin %lis" -msgstr "%liphút %ligiây" +msgstr "%li phút %li giây" #. s means seconds #: apt-pkg/contrib/strutl.cc:397 #, c-format msgid "%lis" -msgstr "%ligiây" +msgstr "%li giây" #: apt-pkg/contrib/strutl.cc:1173 #, c-format @@ -2408,7 +2414,7 @@ msgstr "Không tìm thấy vùng chọn %s" #: apt-pkg/contrib/configuration.cc:491 #, c-format msgid "Unrecognized type abbreviation: '%c'" -msgstr "Không nhận biết viết tắt kiểu: “%c”" +msgstr "Không nhận biết kiểu viết tắt: “%c”" #: apt-pkg/contrib/configuration.cc:605 #, c-format @@ -2418,48 +2424,49 @@ msgstr "Đang mở tập tin cấu hình %s..." #: apt-pkg/contrib/configuration.cc:773 #, c-format msgid "Syntax error %s:%u: Block starts with no name." -msgstr "Gặp lỗi cú pháp %s:%u: khối bắt đầu không có tên." +msgstr "Gặp lỗi cú pháp %s:%u: Khối bắt đầu không có tên." #: apt-pkg/contrib/configuration.cc:792 #, c-format msgid "Syntax error %s:%u: Malformed tag" -msgstr "Gặp lỗi cú pháp %s:%u: thẻ dạng sai" +msgstr "Gặp lỗi cú pháp %s:%u: Sai dạng thẻ" #: apt-pkg/contrib/configuration.cc:809 #, c-format msgid "Syntax error %s:%u: Extra junk after value" -msgstr "Gặp lỗi cú pháp %s:%u: có rác thêm sau giá trị" +msgstr "Gặp lỗi cú pháp %s:%u: Có rác sau giá trị" #: apt-pkg/contrib/configuration.cc:849 #, c-format msgid "Syntax error %s:%u: Directives can only be done at the top level" -msgstr "Gặp lỗi cú pháp %s:%u: có thể thực hiện chỉ thị chỉ tại mức đầu" +msgstr "Gặp lỗi cú pháp %s:%u: Chỉ có thể thực hiện chỉ thị mức đầu" #: apt-pkg/contrib/configuration.cc:856 #, c-format msgid "Syntax error %s:%u: Too many nested includes" -msgstr "Gặp lỗi cú pháp %s:%u: quá nhiều điều bao gồm lồng nhau" +msgstr "Gặp lỗi cú pháp %s:%u: Quá nhiều chỉ thị bao gồm lồng nhau" #: apt-pkg/contrib/configuration.cc:860 apt-pkg/contrib/configuration.cc:865 #, c-format msgid "Syntax error %s:%u: Included from here" -msgstr "Gặp lỗi cú pháp %s:%u: đã bao gồm từ đây" +msgstr "Gặp lỗi cú pháp %s:%u: Đã được bao gồm từ đây" #: apt-pkg/contrib/configuration.cc:869 #, c-format msgid "Syntax error %s:%u: Unsupported directive '%s'" -msgstr "Gặp lỗi cú pháp %s:%u: chưa hỗ trợ chỉ thị “%s”" +msgstr "Gặp lỗi cú pháp %s:%u: Chưa hỗ trợ chỉ thị “%s”" #: apt-pkg/contrib/configuration.cc:872 #, c-format msgid "Syntax error %s:%u: clear directive requires an option tree as argument" msgstr "" -"Gặp lỗi cú pháp %s:%u: chỉ thị rõ thì yêu cầu một cây tuỳ chọn làm đối số" +"Gặp lỗi cú pháp %s:%u: chỉ thị `clear' thì yêu cầu một cây tuỳ chọn làm đối " +"số" #: apt-pkg/contrib/configuration.cc:922 #, c-format msgid "Syntax error %s:%u: Extra junk at end of file" -msgstr "Gặp lỗi cú pháp %s:%u: gặp rác thêm tại kết thúc tập tin" +msgstr "Gặp lỗi cú pháp %s:%u: Gặp rác tại kết thúc tập tin" #: apt-pkg/contrib/progress.cc:146 #, c-format @@ -2469,17 +2476,17 @@ msgstr "%c%s... Lỗi!" #: apt-pkg/contrib/progress.cc:148 #, c-format msgid "%c%s... Done" -msgstr "%c%s... Hoàn tất" +msgstr "%c%s... Xong" #: apt-pkg/contrib/progress.cc:179 msgid "..." -msgstr "" +msgstr "..." #. Print the spinner #: apt-pkg/contrib/progress.cc:195 -#, fuzzy, c-format +#, c-format msgid "%c%s... %u%%" -msgstr "%c%s... Hoàn tất" +msgstr "%c%s... %u%%" #: apt-pkg/contrib/cmndline.cc:80 #, c-format @@ -2495,7 +2502,7 @@ msgstr "Không hiểu tùy chọn dòng lệnh %s" #: apt-pkg/contrib/cmndline.cc:127 #, c-format msgid "Command line option %s is not boolean" -msgstr "Tùy chọn dòng lệnh %s không phải bun (đúng/không đúng)" +msgstr "Tùy chọn dòng lệnh %s không phải dạng lôgíc (đúng/sai)" #: apt-pkg/contrib/cmndline.cc:168 apt-pkg/contrib/cmndline.cc:189 #, c-format @@ -2505,7 +2512,7 @@ msgstr "Tùy chọn %s yêu cầu một đối số." #: apt-pkg/contrib/cmndline.cc:202 apt-pkg/contrib/cmndline.cc:208 #, c-format msgid "Option %s: Configuration item specification must have an =<val>." -msgstr "Tùy chọn %s: đặc tả mục cấu hình phải có một “=<giá_trị>”." +msgstr "Tùy chọn %s: Đặc tả mục cấu hình phải có một “=<giá_trị>”." #: apt-pkg/contrib/cmndline.cc:237 #, c-format @@ -2520,7 +2527,7 @@ msgstr "Tùy chọn “%s” quá dài" #: apt-pkg/contrib/cmndline.cc:300 #, c-format msgid "Sense %s is not understood, try true or false." -msgstr "Không hiểu %s: hãy cố dùng true (đúng) hay false (không đúng)." +msgstr "Không hiểu %s: hãy cố dùng true (đúng) hay false (sai)." #: apt-pkg/contrib/cmndline.cc:350 #, c-format @@ -2534,7 +2541,7 @@ msgstr "Không thể lấy các thông tin cho điểm gắn kết %s" #: apt-pkg/contrib/cdromutl.cc:224 msgid "Failed to stat the cdrom" -msgstr "Việc lấy cac thông tin cho đĩa CD-ROM bị lỗi" +msgstr "Việc lấy các thông tin thống kê đĩa CD-ROM bị lỗi" #: apt-pkg/contrib/fileutl.cc:93 #, c-format @@ -2594,17 +2601,17 @@ msgstr "Tiến trình phụ %s đã nhận một lỗi chia ra từng đoạn." #: apt-pkg/contrib/fileutl.cc:843 #, c-format msgid "Sub-process %s received signal %u." -msgstr "Tiến trình phụ %s đã nhận tín hiệu %u." +msgstr "Tiến trình con %s đã nhận tín hiệu %u." #: apt-pkg/contrib/fileutl.cc:847 apt-pkg/contrib/gpgv.cc:243 #, c-format msgid "Sub-process %s returned an error code (%u)" -msgstr "Tiến trình phụ %s đã trả lời mã lỗi (%u)" +msgstr "Tiến trình con %s đã trả về một mã lỗi (%u)" #: apt-pkg/contrib/fileutl.cc:849 apt-pkg/contrib/gpgv.cc:236 #, c-format msgid "Sub-process %s exited unexpectedly" -msgstr "Tiến trình phụ %s đã thoát bất thường" +msgstr "Tiến trình con %s đã thoát bất thường" #: apt-pkg/contrib/fileutl.cc:985 #, c-format @@ -2622,7 +2629,7 @@ msgstr "Việc tạo tiến trình con IPC bị lỗi" #: apt-pkg/contrib/fileutl.cc:1202 msgid "Failed to exec compressor " -msgstr "Việc thực hiện bô nén bị lỗi " +msgstr "Gặp lỗi khi thực hiện nén" #: apt-pkg/contrib/fileutl.cc:1297 #, c-format @@ -2642,7 +2649,7 @@ msgstr "Gặp vấn đề khi đóng tập tin %s" #: apt-pkg/contrib/fileutl.cc:1693 #, c-format msgid "Problem renaming the file %s to %s" -msgstr "Gặp vấn đề khi thay tên tập tin %s bằng %s" +msgstr "Gặp vấn đề khi đổi tên tập tin %s thành %s" #: apt-pkg/contrib/fileutl.cc:1704 #, c-format @@ -2682,7 +2689,7 @@ msgstr "Trình APT này không hỗ trợ hệ thống điều khiển phiên b #: apt-pkg/pkgcache.cc:172 msgid "The package cache was built for a different architecture" -msgstr "Bộ nhớ tạm gói được xây dựng cho một kiến trức khác" +msgstr "Bộ nhớ tạm gói được xây dựng cho một kiến trúc khác" #: apt-pkg/pkgcache.cc:314 msgid "Depends" @@ -2714,7 +2721,7 @@ msgstr "Làm cũ" #: apt-pkg/pkgcache.cc:316 msgid "Breaks" -msgstr "Làm hư" +msgstr "Làm hỏng" #: apt-pkg/pkgcache.cc:316 msgid "Enhances" @@ -2780,8 +2787,8 @@ msgstr "Không thể phân tích tập tin gói %s (2)" #, c-format msgid "Malformed line %lu in source list %s ([option] unparseable)" msgstr "" -"Gặp dòng dạng sai %lu trong danh sách nguồn %s ([tùy chọn] không phân tích " -"được)" +"Gặp dòng dạng sai %lu trong danh sách nguồn %s ([tùy chọn] không thể phân " +"tích được)" #: apt-pkg/sourcelist.cc:99 #, c-format @@ -2792,7 +2799,7 @@ msgstr "Gặp dòng dạng sai %lu trong danh sách nguồn %s ([tùy chọn] qu #, c-format msgid "Malformed line %lu in source list %s ([%s] is not an assignment)" msgstr "" -"Gặp dòng dạng sai %lu trong danh sách nguồn %s ([%s] không phải là một sự " +"Gặp dòng dạng sai %lu trong danh sách nguồn %s ([%s] không phải là một phép " "gán)" #: apt-pkg/sourcelist.cc:116 @@ -2932,12 +2939,12 @@ msgstr "Không thể khoá thư mục %s" #: apt-pkg/acquire.cc:893 #, c-format msgid "Retrieving file %li of %li (%s remaining)" -msgstr "Đang lấy tập tin %li trên %li (%s còn lại)" +msgstr "Đang tải tập tin thứ %li trong tổng số %li (còn lại %s)" #: apt-pkg/acquire.cc:895 #, c-format msgid "Retrieving file %li of %li" -msgstr "Đang lấy tập tin %li trên %li" +msgstr "Đang tải tập tin %li trong tổng số %li" #: apt-pkg/acquire-worker.cc:112 #, c-format @@ -2952,7 +2959,7 @@ msgstr "Phương pháp %s đã không bắt đầu cho đúng." #: apt-pkg/acquire-worker.cc:447 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." -msgstr "Hãy nạp đĩa có nhãn “%s” vào ổ “%s” và bấm nút Enter." +msgstr "Hãy cho đĩa có nhãn “%s” vào ổ “%s” rồi bấm nút Enter." #: apt-pkg/init.cc:151 #, c-format @@ -3012,7 +3019,7 @@ msgstr "Chưa ghi rõ ưu tiên (hay số không) cho ghim" #: apt-pkg/pkgcachegen.cc:87 msgid "Cache has an incompatible versioning system" -msgstr "Bộ nhớ tạm có hệ thống điêu khiển phiên bản không tương thích" +msgstr "Bộ nhớ tạm có hệ thống điều khiển phiên bản không tương thích" #. TRANSLATOR: The first placeholder is a package name, #. the other two should be copied verbatim as they include debug info @@ -3071,16 +3078,16 @@ msgstr "Lỗi nhập/xuất khi lưu bộ nhớ tạm nguồn" #: apt-pkg/acquire-item.cc:139 #, c-format msgid "rename failed, %s (%s -> %s)." -msgstr "việc thay đổi tên bị lỗi, %s (%s → %s)." +msgstr "gặp lỗi khi đổi tên, %s (%s → %s)." #: apt-pkg/acquire-item.cc:599 msgid "MD5Sum mismatch" -msgstr "Sai khớp MD5Sum (tổng kiểm)" +msgstr "Mã băm tổng kiểm MD5Sum không khớp" #: apt-pkg/acquire-item.cc:870 apt-pkg/acquire-item.cc:1876 #: apt-pkg/acquire-item.cc:2019 msgid "Hash Sum mismatch" -msgstr "Sai khớp tổng chuỗi duy nhất (hash sum)" +msgstr "Mã băm tổng kiểm tra (hash sum) không khớp" #: apt-pkg/acquire-item.cc:1377 #, c-format @@ -3112,7 +3119,7 @@ msgstr "" #: apt-pkg/acquire-item.cc:1495 #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" -msgstr "Bản phát hành xung đột: %s (mong đợi %s còn nhận %s)" +msgstr "Bản phát hành xung đột: %s (cần %s nhưng lại nhận được %s)" #: apt-pkg/acquire-item.cc:1525 #, c-format @@ -3158,7 +3165,7 @@ msgstr "" #: apt-pkg/acquire-item.cc:1868 msgid "Size mismatch" -msgstr "Sai khớp kích cỡ" +msgstr "Kích cỡ không khớp nhau" #: apt-pkg/indexrecords.cc:68 #, c-format @@ -3199,8 +3206,8 @@ msgid "" "Using CD-ROM mount point %s\n" "Mounting CD-ROM\n" msgstr "" -"Đang dùng điểm lắp đĩa CD-ROM %s\n" -"Đang lắp đĩa CD-ROM...\n" +"Đang dùng thư mục gắn đĩa CD-ROM %s\n" +"Đang gắn đĩa CD-ROM...\n" #: apt-pkg/cdrom.cc:585 apt-pkg/cdrom.cc:682 msgid "Identifying.. " @@ -3213,16 +3220,16 @@ msgstr "Nhãn đã lưu: %s\n" #: apt-pkg/cdrom.cc:622 apt-pkg/cdrom.cc:915 msgid "Unmounting CD-ROM...\n" -msgstr "Đang tháo lắp đĩa CD-ROM...\n" +msgstr "Đang bỏ gắn CD-ROM...\n" #: apt-pkg/cdrom.cc:642 #, c-format msgid "Using CD-ROM mount point %s\n" -msgstr "Đang dùng điểm lắp đĩa CD-ROM %s\n" +msgstr "Đang dùng điểm gắn đĩa CD-ROM %s\n" #: apt-pkg/cdrom.cc:660 msgid "Unmounting CD-ROM\n" -msgstr "Đang tháo lắp đĩa CD-ROM...\n" +msgstr "Đang bỏ gắn CD-ROM...\n" #: apt-pkg/cdrom.cc:665 msgid "Waiting for disc...\n" @@ -3250,7 +3257,7 @@ msgid "" "wrong architecture?" msgstr "" "Không tìm thấy tập tin gói nào, có thể vì đây không phải là một Đĩa Debian, " -"hoặc có kiến trúc không đúng ?" +"hoặc có kiến trúc không đúng?" #: apt-pkg/cdrom.cc:782 #, c-format @@ -3285,29 +3292,29 @@ msgstr "Các mục nhập danh sách nguồn cho đĩa này:\n" #: apt-pkg/indexcopy.cc:236 apt-pkg/indexcopy.cc:774 #, c-format msgid "Wrote %i records.\n" -msgstr "Mới ghi %i mục ghi.\n" +msgstr "Đã ghi %i bản ghi.\n" #: apt-pkg/indexcopy.cc:238 apt-pkg/indexcopy.cc:776 #, c-format msgid "Wrote %i records with %i missing files.\n" -msgstr "Mới ghi %i mục ghi với %i tập tin còn thiếu.\n" +msgstr "Đã ghi %i bản ghi với %i tập tin còn thiếu.\n" #: apt-pkg/indexcopy.cc:241 apt-pkg/indexcopy.cc:779 #, c-format msgid "Wrote %i records with %i mismatched files\n" -msgstr "Mới ghi %i mục ghi với %i tập tin không khớp với nhau\n" +msgstr "Đã ghi %i bản ghi với %i tập tin không khớp với nhau\n" #: apt-pkg/indexcopy.cc:244 apt-pkg/indexcopy.cc:782 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" -"Mới ghi %i mục ghi với %i tập tin còn thiếu và %i tập tin không khớp với " +"Đã ghi %i bản ghi với %i tập tin còn thiếu và %i tập tin không khớp với " "nhau\n" #: apt-pkg/indexcopy.cc:515 #, c-format msgid "Can't find authentication record for: %s" -msgstr "Không tìm thấy mục ghi xác thực cho: %s" +msgstr "Không tìm thấy bản ghi xác thực cho: %s" #: apt-pkg/indexcopy.cc:521 #, c-format @@ -3413,7 +3420,7 @@ msgstr "Đang ghi lưu sự biến mất của %s" #: apt-pkg/deb/dpkgpm.cc:78 #, c-format msgid "Running post-installation trigger %s" -msgstr "Đang chạy bộ gây nên tiến trình cuối cùng cài đặt %s" +msgstr "Đang chạy bẫy sau-cài-đặt %s" #. FIXME: use a better string after freeze #: apt-pkg/deb/dpkgpm.cc:705 @@ -3464,11 +3471,11 @@ msgstr "Đang chuẩn bị gỡ bỏ hoàn toàn %s" #: apt-pkg/deb/dpkgpm.cc:966 #, c-format msgid "Completely removed %s" -msgstr "Mới gỡ bỏ hoàn toàn %s" +msgstr "Gỡ bỏ hoàn toàn %s" #: apt-pkg/deb/dpkgpm.cc:1213 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" -msgstr "Không thể ghi lưu, openpty() bị lỗi (“/dev/pts” chưa lắp ?)\n" +msgstr "Không thể ghi nhật ký, openpty() bị lỗi (“/dev/pts” chưa gắn?)\n" #: apt-pkg/deb/dpkgpm.cc:1243 msgid "Running dpkg" @@ -3486,33 +3493,36 @@ msgstr "" #. check if its not a follow up error #: apt-pkg/deb/dpkgpm.cc:1482 msgid "dependency problems - leaving unconfigured" -msgstr "gặp vấn đề về quan hệ phụ thuộc nên để lại không có cấu hình" +msgstr "gặp vấn đề về quan hệ phụ thuộc nên để lại không cấu hình" #: apt-pkg/deb/dpkgpm.cc:1484 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." msgstr "" -"Không ghi báo cáo apport, vì thông điệp lỗi ngụ ý rằng nó là một lỗi kế tiếp " -"do một sự thất bại trước." +"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi kế tiếp " +"do một sự thất bại trước đó." #: apt-pkg/deb/dpkgpm.cc:1490 msgid "" "No apport report written because the error message indicates a disk full " "error" -msgstr "Không ghi báo cáo apport, vì thông điệp lỗi ngụ ý một lỗi “đĩa đầy”" +msgstr "" +"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi “đĩa đầy”" #: apt-pkg/deb/dpkgpm.cc:1496 msgid "" "No apport report written because the error message indicates a out of memory " "error" msgstr "" -"Không ghi báo cáo apport, vì thông điệp lỗi ngụ ý một lỗi “không đủ bộ nhớ”" +"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi “không đủ " +"bộ nhớ”" #: apt-pkg/deb/dpkgpm.cc:1503 msgid "" "No apport report written because the error message indicates a dpkg I/O error" -msgstr "Không ghi báo cáo apport, vì thông điệp lỗi ngụ ý một lỗi “V/R dpkg”" +msgstr "" +"Không ghi báo cáo apport, vì thông điệp lỗi chỉ thị đây là một lỗi “V/R dpkg”" #: apt-pkg/deb/debsystem.cc:84 #, c-format @@ -3520,13 +3530,13 @@ msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" msgstr "" -"Không thể khoá thư mục quản lý (%s): có một tiến trình khác đang sử dụng nó " -"không?" +"Không thể khoá thư mục quản trị (%s), có một tiến trình khác đang sử dụng nó " +"phải không?" #: apt-pkg/deb/debsystem.cc:87 #, c-format msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "Không thể khoá thư mục quản lý (%s): bạn có quyền người chủ không?" +msgstr "Không thể khoá thư mục quản trị (%s), bạn có quyền root không?" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -3534,12 +3544,22 @@ msgstr "Không thể khoá thư mục quản lý (%s): bạn có quyền ngườ #, c-format msgid "" "dpkg was interrupted, you must manually run '%s' to correct the problem. " -msgstr "dpkg bị gián đoạn, bạn cần phải tự động chạy “%s” để giải vấn đề này." +msgstr "" +"dpkg bị ngắt giữa chừng, bạn cần phải chạy “%s” một cách thủ công để giải " +"vấn đề này." #: apt-pkg/deb/debsystem.cc:121 msgid "Not locked" msgstr "Chưa được khoá" +#~ msgid "" +#~ "A error occurred during the signature verification. The repository is not " +#~ "updated and the previous index files will be used. GPG error: %s: %s\n" +#~ msgstr "" +#~ "Gặp lỗi trong khi thẩm tra chữ ký.\n" +#~ "Kho lưu chưa được cập nhật nên dùng những tập tin chỉ mục trước.\n" +#~ "Lỗi GPG: %s: %s\n" + #~ msgid "File %s doesn't start with a clearsigned message" #~ msgstr "Tập tin %s không bắt đầu bằng một đoạn chữ ký (gpg)" diff --git a/prepare-release b/prepare-release index 73c0be602..2d8502d7f 100755 --- a/prepare-release +++ b/prepare-release @@ -39,7 +39,7 @@ if [ "$1" = 'pre-export' ]; then make update-po fi - sed -i -e "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"${VERSION}\"/" configure.in + sed -i -e "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"${VERSION}\"/" configure.ac sed -i -e "s/^<!ENTITY apt-product-version \".*\">$/<!ENTITY apt-product-version \"${VERSION}\">/" doc/apt-verbatim.ent elif [ "$1" = 'post-build' ]; then if [ "$DISTRIBUTION" != "UNRELEASED" ]; then diff --git a/test/integration/test-bug-624218-Translation-file-handling b/test/integration/test-bug-624218-Translation-file-handling index d146b943c..d3c5b08ac 100755 --- a/test/integration/test-bug-624218-Translation-file-handling +++ b/test/integration/test-bug-624218-Translation-file-handling @@ -14,34 +14,47 @@ changetowebserver rm -rf rootdir/var/lib/apt/lists -msgtest 'No download of non-existent locals' 'with Index' -LC_ALL="" aptget update -o Acquire::Languages=en | grep -q -e 'Translation-[^e][^n] ' && msgfail || msgpass -rm -rf rootdir/var/lib/apt/lists +translationslisted() { + msgtest 'No download of non-existent locals' "$1" + LC_ALL="" aptget update -o Acquire::Languages=en | grep -q -e 'Translation-[^e][^n] ' && msgfail || msgpass + rm -rf rootdir/var/lib/apt/lists -msgtest 'Download of existent locals' 'with Index' -LC_ALL="" aptget update | grep -q -e 'Translation-en ' && msgpass || msgfail -rm -rf rootdir/var/lib/apt/lists + msgtest 'Download of existent locals' "$1" + LC_ALL="" aptget update | grep -q -e 'Translation-en ' && msgpass || msgfail + rm -rf rootdir/var/lib/apt/lists -msgtest 'Download of en in LC_ALL=C' 'with Index' -LC_ALL=C aptget update | grep -q -e 'Translation-en ' && msgpass || msgfail -rm -rf rootdir/var/lib/apt/lists + msgtest 'Download of en in LC_ALL=C' "$1" + LC_ALL=C aptget update | grep -q -e 'Translation-en ' && msgpass || msgfail + rm -rf rootdir/var/lib/apt/lists -msgtest 'Download of en as forced language' 'with Index' -aptget update -o Acquire::Languages=en | grep -q -e 'Translation-en ' && msgpass || msgfail -rm -rf rootdir/var/lib/apt/lists + msgtest 'Download of en as forced language' "$1" + aptget update -o Acquire::Languages=en | grep -q -e 'Translation-en ' && msgpass || msgfail + rm -rf rootdir/var/lib/apt/lists -msgtest 'Download of nothing else in forced language' 'with Index' -aptget update -o Acquire::Languages=en | grep -q -e 'Translation-[^e][^n] ' && msgfail || msgpass -rm -rf rootdir/var/lib/apt/lists + msgtest 'Download of nothing else in forced language' "$1" + aptget update -o Acquire::Languages=en | grep -q -e 'Translation-[^e][^n] ' && msgfail || msgpass + rm -rf rootdir/var/lib/apt/lists -msgtest 'Download no Translation- if forced language is non-existent' 'with Index' -aptget update -o Acquire::Languages=ast_DE | grep -q -e 'Translation-' && msgfail || msgpass -rm -rf rootdir/var/lib/apt/lists + msgtest 'Download no Translation- if forced language is non-existent' "$1" + aptget update -o Acquire::Languages=ast_DE | grep -q -e 'Translation-' && msgfail || msgpass + rm -rf rootdir/var/lib/apt/lists + + msgtest 'Download of nothing if none is forced' "$1" + aptget update -o Acquire::Languages=none | grep -q -e 'Translation' && msgfail || msgpass + rm -rf rootdir/var/lib/apt/lists +} + +translationslisted 'with full Index' + + +# only compressed files available (as it happens on CD-ROM) +sed -i '/i18n\/Translation-[^.]*$/ d' $(find aptarchive -name 'Release') +signreleasefiles + +translationslisted 'with partial Index' -msgtest 'Download of nothing if none is forced' 'with Index' -aptget update -o Acquire::Languages=none | grep -q -e 'Translation' && msgfail || msgpass -rm -rf rootdir/var/lib/apt/lists +# no records at all about Translation files (fallback to guessing) sed -i '/i18n\/Translation-.*$/ d' $(find aptarchive -name 'Release') signreleasefiles diff --git a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch index aee44f76b..a89cb7191 100755 --- a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch +++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch @@ -13,6 +13,13 @@ buildsimplenativepackage 'libsame' 'i386,amd64' '2' 'unstable' 'Multi-Arch: same buildsimplenativepackage 'stuff' 'i386,amd64' '1' 'stable' 'Depends: libsame (= 1), toolkit (= 1)' buildsimplenativepackage 'stuff' 'i386,amd64' '2' 'unstable' 'Depends: libsame (= 2), toolkit (= 2)' +setupsimplenativepackage 'confpkg' 'amd64' '1' 'unstable' +BUILDDIR='incoming/confpkg-1' +echo 'foo "bar";' > ${BUILDDIR}/pkg.conf +echo 'pkg.conf /etc/pkg.conf' >> ${BUILDDIR}/debian/install +buildpackage "$BUILDDIR" 'unstable' 'main' 'amd64' +rm -rf "$BUILDDIR" + setupaptarchive hook='pre-install-pkgs' @@ -93,3 +100,21 @@ testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE** stuff 2 i386 none > - - none **REMOVE** libsame 2 i386 same > - - none **REMOVE** toolkit 2 amd64 foreign > - - none **REMOVE**' + +observehook install confpkg +testfileequal "${hook}-v2.list" 'confpkg - < 1 **CONFIGURE**' +testfileequal "${hook}-v3.list" 'confpkg - - none < 1 amd64 none **CONFIGURE**' + +observehook remove confpkg +testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**' +testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**' + +msgtest 'Conffiles of package remained after remove' 'confpkg' +dpkg -l confpkg | grep -q '^rc' && msgpass || msgfail + +observehook purge confpkg +testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**' +testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**' + +msgtest 'Conffiles are gone after purge' 'confpkg' +dpkg -l confpkg 2>/dev/null | grep -q '^rc' && msgfail || msgpass diff --git a/test/integration/test-bug-712435-missing-descriptions b/test/integration/test-bug-712435-missing-descriptions index 9b3c2ee50..53ecbbeb3 100755 --- a/test/integration/test-bug-712435-missing-descriptions +++ b/test/integration/test-bug-712435-missing-descriptions @@ -52,7 +52,32 @@ $PACKAGESTANZA Description-md5: dddddddddddddddddddddddddddddddd Package: apt-none -$PACKAGESTANZA" > aptarchive/Packages +$PACKAGESTANZA + +Package: apt-intermixed +$PACKAGESTANZA +$DESCRIPTION +X-Some-Flag: yes +Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +Package: apt-intermixed2 +$PACKAGESTANZA +$DESCRIPTION +X-Some-Flag: yes +$TRANSDESCRIPTION +X-Foo-Flag: Something with a Description +Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +X-Bar-Flag: no + +Package: apt-intermixed3 +$PACKAGESTANZA +$DESCRIPTION +X-Some-Flag: yes +$TRANSDESCRIPTION +X-Foo-Flag: Something with a Description +X-Bar-Flag: no +Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" > aptarchive/Packages + setupaptarchive @@ -87,3 +112,54 @@ Description-md5: dddddddddddddddddddddddddddddddd testequal "Package: apt-none $PACKAGESTANZA " aptcache show apt-none + +testequal "Package: apt-intermixed +$PACKAGESTANZA +$DESCRIPTION +Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +X-Some-Flag: yes +" aptcache show apt-intermixed + +testequal "Package: apt-intermixed2 +$PACKAGESTANZA +$DESCRIPTION +Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +X-Some-Flag: yes +X-Foo-Flag: Something with a Description +X-Bar-Flag: no +" aptcache show apt-intermixed2 + +testequal "Package: apt-intermixed3 +$PACKAGESTANZA +$DESCRIPTION +Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +X-Some-Flag: yes +X-Foo-Flag: Something with a Description +X-Bar-Flag: no +" aptcache show apt-intermixed3 + +msgtest 'Test that no description does not destroy' 'showpkg' +aptcache showpkg apt-none | sed 's#/tmp/.*_aptarchive_#/tmp/aptarchive_#' >showpkg.explosion && msgpass || msgfail +testfileequal showpkg.explosion 'Package: apt-none +Versions: +0.9.7.8 (/tmp/aptarchive_Packages) + + +Reverse Depends: +Dependencies: +0.9.7.8 - +Provides: +0.9.7.8 - +Reverse Provides: ' + +testempty aptcache search nonexistentstring + +# packages without a description can't be found +testequal 'apt-normal - commandline package manager +apt-both-below - commandline package manager +apt-both-middle - commandline package manager +apt-both-top - commandline package manager +apt-trans - commandline package manager +apt-intermixed - commandline package manager +apt-intermixed2 - commandline package manager +apt-intermixed3 - commandline package manager' aptcache search apt diff --git a/test/integration/test-bug-717891-abolute-uris-for-proxies b/test/integration/test-bug-717891-abolute-uris-for-proxies new file mode 100755 index 000000000..e9c38492e --- /dev/null +++ b/test/integration/test-bug-717891-abolute-uris-for-proxies @@ -0,0 +1,28 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' + +buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable' + +setupaptarchive +changetowebserver --request-absolute='uri' + +msgtest 'Check that absolute paths are' 'not accepted' +aptget update >/dev/null 2>&1 && msgfail || msgpass + +echo 'Acquire::http::Proxy "http://localhost:8080";' > rootdir/etc/apt/apt.conf.d/99proxy + +msgtest 'Check that requests to proxies are' 'absolute uris' +aptget update >/dev/null 2>&1 && msgpass || msgfail + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + unrelated +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst unrelated (0.5~squeeze1 unstable [all]) +Conf unrelated (0.5~squeeze1 unstable [all])' aptget install unrelated -s diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc index a8d191d0e..fde95fec9 100644 --- a/test/interactive-helper/aptwebserver.cc +++ b/test/interactive-helper/aptwebserver.cc @@ -319,6 +319,33 @@ bool parseFirstLine(int const client, std::string const &request, /*{{{*/ sendError(client, 500, request, sendContent, "Filename contains an unencoded space"); return false; } + + std::string host = LookupTag(request, "Host", ""); + if (host.empty() == true) + { + // RFC 2616 §14.23 requires Host + sendError(client, 400, request, sendContent, "Host header is required"); + return false; + } + host = "http://" + host; + + // Proxies require absolute uris, so this is a simple proxy-fake option + std::string const absolute = _config->Find("aptwebserver::request::absolute", "uri,path"); + if (strncmp(host.c_str(), filename.c_str(), host.length()) == 0) + { + if (absolute.find("uri") == std::string::npos) + { + sendError(client, 400, request, sendContent, "Request is absoluteURI, but configured to not accept that"); + return false; + } + // strip the host from the request to make it an absolute path + filename.erase(0, host.length()); + } + else if (absolute.find("path") == std::string::npos) + { + sendError(client, 400, request, sendContent, "Request is absolutePath, but configured to not accept that"); + return false; + } filename = DeQuoteString(filename); // this is not a secure server, but at least prevent the obvious … @@ -342,6 +369,7 @@ int main(int const argc, const char * argv[]) { CommandLine::Args Args[] = { {0, "port", "aptwebserver::port", CommandLine::HasArg}, + {0, "request-absolute", "aptwebserver::request::absolute", CommandLine::HasArg}, {'c',"config-file",0,CommandLine::ConfigFile}, {'o',"option",0,CommandLine::ArbItem}, {0,0,0,0} @@ -447,14 +475,6 @@ int main(int const argc, const char * argv[]) if (parseFirstLine(client, *m, filename, sendContent, closeConnection) == false) continue; - std::string host = LookupTag(*m, "Host", ""); - if (host.empty() == true) - { - // RFC 2616 §14.23 requires Host - sendError(client, 400, *m, sendContent, "Host header is required"); - continue; - } - // string replacements in the requested filename ::Configuration::Item const *Replaces = _config->Tree("aptwebserver::redirect::replace"); if (Replaces != NULL) |