summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/acquire-item.cc15
-rw-r--r--apt-pkg/contrib/error.cc10
-rw-r--r--apt-pkg/contrib/fileutl.cc23
-rw-r--r--apt-pkg/deb/dpkgpm.cc2
-rw-r--r--buildlib/configure.mak4
-rw-r--r--buildlib/defaults.mak17
-rw-r--r--cmdline/apt-cache.cc84
-rw-r--r--configure.ac (renamed from configure.in)8
-rw-r--r--debian/apt.auto-removal.sh2
-rw-r--r--debian/apt.postinst4
-rw-r--r--debian/changelog44
-rw-r--r--debian/control8
-rw-r--r--debian/libapt-inst1.5.symbols6
-rw-r--r--debian/libapt-pkg4.12.symbols121
-rwxr-xr-xdebian/rules39
-rw-r--r--doc/Doxyfile.in668
-rw-r--r--methods/http.cc39
-rw-r--r--po/LINGUAS8
-rw-r--r--po/makefile20
-rw-r--r--po/vi.po426
-rwxr-xr-xprepare-release2
-rwxr-xr-xtest/integration/test-bug-624218-Translation-file-handling55
-rwxr-xr-xtest/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch25
-rwxr-xr-xtest/integration/test-bug-712435-missing-descriptions78
-rwxr-xr-xtest/integration/test-bug-717891-abolute-uris-for-proxies28
-rw-r--r--test/interactive-helper/aptwebserver.cc36
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
diff --git a/po/vi.po b/po/vi.po
index 54807e201..6b11b6d53 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -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)