pkgTagFile: if we have seen the end, do not try to see more

Asking for more via Step() will notice that we are done with the file
already and will result in a fail, which means we can't find the last
sections anymore (which is especially painful if we haven't moved at
all as in the testcase we haven't even looked at one of the sources
leading to a strange behaviour)

Reported-By: Niall Walsh <niallwalsh@users.berlios.de>
restart debSrcRecordParsers only if needed

The offset variable in DebSrcRecordParser was not initialized which we
now do and based on it do not trigger a restart if the parser was not
used yet avoiding a needless rescan of the section.

Detected while working on the previous commit e62aa1dd. Both commits act
as a "fix" for the bug shown in the testcase of the commit – this one
here would only hide it through.
fix various style/performance warnings in rred

Reported-By: cppcheck
Git-Dch: Ignore
Merge remote-tracking branch 'donkult/debian/sid' into debian/sid
Fix multiarch package upgrade issue

When checking for negative dependencies in MarkInstall() ensure that
only dependencies that are relevant (i.e. getting installed) are
checked.
discard impossible candidates in MarkInstall

If a (Pre-)Depends can't be satisfied there is no point in keeping the
candidate as is as it is impossible to find a solution for it, so we can
just as well reset the candidate to the currently installed version.
We avoid trying to install this impossible candidate later on this way.

Closes: #735967
Merge remote-tracking branch 'mvo/bugfix/multiarch-upgrade' into debian/sid
multicompress with externals sets wrong file modes

Copy from the bug description:
After we upgraded the Ubuntu master archive from lucid to precise, we
noticed that Translation-en.bz2 was being written with mode 0600 rather
than 0644, which broke our mirroring.  This is no longer reproducible as
such in unstable because apt now links against libbz2, but it's still
reproducible with xz; it happens because multicompress fchmods one end
of the compression pipe in this case rather than the target file.

[Original testcase slightly modified to comply with house-style]

Closes: 737130
releasing package apt version 0.9.15.1
fix remaining testcase-bugs from my armel box

Git-Dch: Ignore
simplify code to make compilers happy

Does the same as before, but is a bit simpler on the logic for humans as
well as compilers. scan-build complained about it at least with:
"Result of operation is garbage or undefined"

Reported-By: scan-build
update libapt-pkg.symbols file
bump Standards-Version to 3.9.5 (no changes needed)
disable doxygen undocumented method warning

Very few methods we have are documented, so this is A LOT of noise
hidden the "interesting" warnings about methods which are documented,
but incorrectly and such stuff.

Git-Dch: Ignore
do not use an empty APT_CONFIG environment variable
always cleanup patchfiles at the end of rred call

With APT::Get::List-Cleanup disabled the ed-style patch files are
lingering in the lists/ directory otherwise. That was kinda okay in the
old none-client-merge as the filename was always the same so it was
constantly overridden, but now with different names for client-merge
quiet a few could pill up on the system and are used by the next call
as it picks them up based on the filename.
use VersionSet in download to handle repeats

Closes: 738103
use utimes instead of utimensat/futimens

cppcheck complains about the obsolete utime as it was removed in
POSIX1.2008 and recommends usage of utimensat/futimens instead
as those are in POSIX and so commit 9ce3cfc9 switched to them.
It is just that they aren't as portable as the standard suggests:
At least our kFreeBSD and Hurd ports stumble over it at runtime.
So to make both, the ports and cppcheck happy, we use utimes instead.

Closes: 738567
apt-cdrom should succeed if any drive succeeds

If there are multiple CD-ROM drives, `apt-cdrom add` will abort with an
error if any of the drives do not contain a Debian CD which is against
the documentation we have saying "a CD-ROM" and also scripts do not
expect it this way.

This patch modifies apt-cdrom to return success if any of the drives
succeeded. If failures occur, apt-cdrom will still continue trying all
the drives and report the last failure (if none of them succeeded).

The 'ident' command was also changed to match the new 'add' behavior.

Closes: 728153
remove duplication in pkgCdrom::Add and ::Ident

Git-Dch: Ignore